(57)【要約】【課題】      構成の簡単化。【解決手段】  再生手段として機能するＤＭＡ（１０）の内部には、複数サンプルの記憶位置を有し、書込みポインタ及び読出しポインタによって書込み位置及び読出し位置がそれぞれ指定され、書込みが読出しに先行する1つの出力バッファ（図１１）が設けられている。楽音生成手段として機能するＣＰＵ（１）は、入力した演奏情報に基づいて、所定時間間隔で複数サンプルの楽音信号をまとめて生成処理し、生成した複数サンプルの楽音信号をＤＭＡ（１０）内の出力バッファに書き込む。ＤＭＡ（１０）は、出力バッファに書き込まれた複数サンプルの楽音信号を、1サンプリング周期毎に進行する読出しポインタによって１サンプルづつ順次読み出して再生する。【選択図】          図１
2005234597.tif 000002
【特許請求の範囲】
【請求項１】
複数サンプルの記憶位置を有し、書込みポインタ及び読出しポインタによって書込み位置及び読出し位置がそれぞれ指定され、書込みが読出しに先行する1つの出力バッファと、
入力した演奏情報に基づいて、所定時間間隔で複数サンプルの楽音信号をまとめて生成処理し、生成した複数サンプルの楽音信号を前記出力バッファに書き込む楽音生成手段と、
前記出力バッファに書き込まれた複数サンプルの楽音信号を、1サンプリング周期毎に進行する前記読出しポインタによって１サンプルづつ順次読み出して再生する再生手段と
を具えた音源装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、楽音信号を生成する技術分野に属する。
【背景技術】
【０００２】
今日の電子楽器には、楽音信号を生成する処理（例えばＰＣＭ（パルス符号変調）方式による処理やＦＭ（周波数変調）方式による処理等）を実行する専用のＬＳＩ回路である音源ＬＳＩが、広く採用されている。
こうした音源ＬＳＩには、消費電力を制御する手段は備えられておらず、したがって、消費電力は常に一定であった。
【０００３】
電子楽器には、例えばポータブルキーボード等のように、携帯を可能にするために電源として乾電池を使用するものも少なくない。こうした電子楽器では、消費電力を極力節減することが、長時間の演奏を可能にするために重要な課題である。
しかし、従来の音源ＬＳＩでは、消費電力が一定であるため、非発音時に音源ＬＳＩ自体をオフにするくらいしか、節電のための手段が存在しなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は上述の点に鑑みてなされたもので、簡単化された構成からなる音源装置を提供しようとするものである。
【課題を解決するための手段】
【０００５】
この発明に係る音源装置は、複数サンプルの記憶位置を有し、書込みポインタ及び読出しポインタによって書込み位置及び読出し位置がそれぞれ指定され、書込みが読出しに先行する1つの出力バッファと、入力した演奏情報に基づいて、所定時間間隔で複数サンプルの楽音信号をまとめて生成処理し、生成した複数サンプルの楽音信号を前記出力バッファに書き込む楽音生成手段と、前記出力バッファに書き込まれた複数サンプルの楽音信号を、1サンプリング周期毎に進行する前記読出しポインタによって１サンプルづつ順次読み出して再生する再生手段とを具えたことを特徴としている。
【０００６】
このように、複数サンプルの記憶位置を有し、書込みポインタ及び読出しポインタによって書込み位置及び読出し位置がそれぞれ指定され、書込みが読出しに先行する1つの出力バッファと、入力した演奏情報に基づいて、所定時間間隔で複数サンプルの楽音信号をまとめて生成処理し、生成した複数サンプルの楽音信号を前記出力バッファに書き込む楽音生成手段と、前記出力バッファに書き込まれた複数サンプルの楽音信号を、1サンプリング周期毎に進行する前記読出しポインタによって１サンプルづつ順次読み出して再生する再生手段と具えることにより、簡単化された構成の音源装置を提供することができる。
【発明を実施するための最良の形態】
【０００７】
以下、添付図面を参照してこの発明の実施の形態を詳細に説明する。
【０００８】
以下の説明では、ハードウェアとしての音源ＬＳＩに替えて、楽音信号の生成処理を記述したコンピュータプログラムをＣＰＵ（セントラルプロセッシングユニット）に実行させることによって楽音信号を生成するようにしたものにこの発明を適用している。このような音源装置や楽音生成方法のことを、ここではＣＰＵ音源あるいはソフト音源と呼ぶことにする。
【０００９】
図１は、この発明を適用したソフト音源を搭載した電子楽器の全体構成ブロック図である。この電子楽器は、演奏者の演奏に応じたＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）楽器からの演奏情報に基づき、同時に生成すべき楽音数に応じた発音チャンネル数での楽音信号生成処理（及び生成した楽音信号に効果を付与するエフェクト処理）をパーソナルコンピュータのＣＰＵに実行させるコンピュータミュージックシステムである。
【００１０】
ＣＰＵ１には、ＭＩＤＩ楽器の接続されるＭＩＤＩのインターフェース２，ＲＯＭ（リードオンリーメモリ）３，ＲＡＭ（ランダムアクセスメモリ）４，タイマ５，クロックコントロールレジスタ６，キーボード７，ディスプレイ８，ハードディスク装置９，及びＤＭＡ（ダイレクトメモリアクセス）回路１０が、データ及びアドレスバス１１を介して接続されている。また、このパーソナルコンピュータはポータブル式であり、電源である乾電池１２から各ブロックに電力が供給されている。
【００１１】
ハードディスク装置９には、演奏情報に応じて加工すべき音色データ（例えば、ＰＣＭ方式で記録した波形データ等）が記録されている。
【００１２】
ＲＡＭ４には、生成されて効果を付与された楽音信号を一時的に記憶させるための記憶領域等が設けられている。
【００１３】
ＤＭＡ回路１０は、ＲＡＭ４に一時記憶された楽音信号を、Ｄ／Ａ（ディジタル／アナログ）変換器１３の再生サンプリング周波数に合わせてダイレクトメモリアクセス方式で１サンプルずつ順次ＲＡＭ４から読み出してＤ／Ａ変換器１３に送る再生処理を実行するものである。Ｄ／Ａ変換器１３の再生サンプリング周波数は、上記基本クロックとは別の、周波数を固定したクロック信号に同期している（以下では、この再生サンプリング周波数を４８ｋＨｚであるとする）。ＤＭＡ回路１０は、一例として、１２８サンプルの楽音信号を単位としてこの再生処理を実行する。ＤＭＡ回路１０は、各単位の楽音信号に対する再生処理を開始する毎に、所定のフラグを立てるようになっている。
Ｄ／Ａ変換器１３でアナログ信号に変換された楽音信号は、サウンドシステム１４に供給されて音響的に発音される。
【００１４】
クロックコントロールレジスタ６には、ＣＰＵ１が幾通りかの値のデータを書き込むことができる。図示しない水晶発振器から発生した一定周波数の信号を分周する分周器（図示せず）は、このレジスタ６に書き込まれたデータの値に応じて、６０ＭＨｚ，３０ＭＨｚまたは１５ＭＨｚのうちのいずれかの周波数のクロック信号を基本クロックとして各ブロックに供給するか、あるいはクロック信号を各ブロックに供給しない状態（スリープモードと呼ぶ）になる。すなわち、ＣＰＵ１をはじめとする各ブロックの基本クロックは、６０ＭＨｚ，３０ＭＨｚ，１５ＭＨｚまたはスリープモードの４通りに制御可能であり、ＣＰＵ１によってそのいずれかの周波数に制御される。尚、スリープモード中に演奏者が新たにＭＩＤＩ楽器２のパネルスイッチ等を操作した場合にも、スリープモードが解除されてクロック信号の周波数が１５ＭＨｚに設定されるようになっている。
【００１５】
図２は、基本クロックの周波数と、ＣＰＵ１の消費電力との関係の一例を示したものである。この例では、周波数が低くなると、それにほぼ比例して消費電力も小さくなっている。また、スリープモードでは、消費電力が著しく小さくなっている。
【００１６】
図３は、ソフト音源の基本原理を示した図である。ＣＰＵ１は、所定の時間長の区間を単位として、各区間内に入力したＭＩＤＩ２からの演奏情報に基づき、それぞれ当該区間の次の区間に、楽音信号生成処理（及びエフェクト処理）を実行する。ＤＭＡ回路１０は、こうして各区間毎に生成された楽音信号を単位として、それぞれ当該区間の次の区間に再生処理を実行する。（例えば、時刻Ｔ１からＴ２までの区間に入力した演奏情報に基づき、時刻Ｔ２からＴ３までの区間に楽音信号生成処理を実行し、時刻Ｔ３からＴ４までの区間に再生処理を実行する。）したがって、１区間の長さは、ＤＭＡ回路１０が再生処理の１単位とするサンプル数と再生サンプリング周期との積であり、前述の例では１２８÷４８０００≒０．００２７秒となる。
【００１７】
そして、再生処理は、楽音を切れ目なく発音させるために各区間毎に途切れることなく連続して実行する必要があるので、ＣＰＵ１は、ＤＭＡ回路１０が各区間で再生処理を実行する楽音信号（前述の例では１２８サンプルの楽音信号）については、必ずその直前の区間内に生成を完了している必要がある。しかし、入力する演奏情報の内容や演奏情報の入力頻度は、演奏の進行に伴って時間的に変化していくので、１区間内に同時に生成すべき楽音数や、１区間内に実行すべき生成処理の演算量は、一定ではなく、むしろ区間毎に大きく変動するという特徴を有している。
【００１８】
以上がソフト音源の基本原理であるが、周波数を制御可能な基本クロックで動作するＣＰＵでは、同時に生成すべき楽音数が少ない区間や実行すべき生成処理の演算量が少ない区間では、それらが多い区間よりも基本クロックの周波数を低くすることによって処理速度を遅くしても、当該区間内に生成処理を完了させることが可能である。そして、基本クロックの周波数を低くした区間では、基本クロックの周波数が高い区間よりも消費電力が少なくなる（図２参照）。この電子楽器は、こうした基本クロックの制御による消費電力の節減を図りつつ、楽音信号生成処理を実行するものである。
次に、この楽音信号生成処理の一例を、図４以下を参照して説明することにする。
【００１９】
図４は、ＣＰＵ１の実行するメインルーチンを示すフローチャートである。メインルーチンでは、所定の初期設定（ステップＳ１）の後、ＲＡＭ４内の入力バッファに受信データが記憶されているか否かを判断し（ステップＳ２）、記憶されていれば、受信データ処理を実行する（ステップＳ３）。受信データ処理には、例えば、ＭＩＤＩ２からのノートオン信号に基づくノートオンイベント処理や、ＭＩＤＩ２からのノートオフ信号に基づくノートオフイベント処理等が含まれる。
【００２０】
続いて、キーボード７の操作に基づくパネルスイッチの操作イベントの有無を判断し（ステップＳ４）、操作イベントがあれば、パネルスイッチイベント処理を実行する（ステップＳ５）。パネルスイッチイベント処理には、例えば、音色選択スイッチの操作に基づく音色選択処理や、エフェクトスイッチの操作に基づく効果選択処理等が含まれる。
続いて、楽音信号を生成する「音源処理」（ステップＳ６）と、その他の処理（ステップＳ７）とを実行し、以下、ステップＳ２乃至ステップＳ７の処理を繰り返す。
【００２１】
ステップＳ３の受信データ処理は、ＭＩＤＩ２からの受信データが入力バッファに書き込まれたことを条件としてステップＳ２でイエスと判断されて開始されるが、この書込みは、ＭＩＤＩ２からの受信データが発生する都度に、図５に示す「最優先の割込み処理」を実行することによって行なわれる。この割込み処理では、受信データが発生すると、最初のステップＳ１１で、ＣＰＵ１の基本クロックがスリープモードか否かを判断する。スリープモードであれば、ステップＳ１２に進み、クロックコントロールレジスタ６に所定の値のデータを書き込むことによって基本クロックの周波数を１５ＭＨｚに設定した後、ステップＳ１３に進む。他方、スリープモードでなければ、ステップＳ１１からそのままステップＳ１３に進む。
【００２２】
ステップＳ１３では、当該受信データを取り込む。続くステップＳ１４では、取り込んだ受信データを、現在の時刻を示す時刻データとともにＲＡＭ４内の入力バッファに書き込む。時刻データを書き込む理由は、受信データの入力バッファへの書込みは、受信データが発生する都度直ちに行なうが、入力バッファに書き込んだ受信データに対するメインルーチンでの処理は、直ちに実行するわけではないので、いつ発生した受信データかを識別できるようにしておくことにある。図６は、入力バッファの記憶領域の一例を示す。この例では、受信データを１件毎に時刻データとともに書き込む領域である「データ１」，「データ２」，「データ３」…と、受信データの件数を書き込む領域である「イベント数」とが設けられている。
続くステップＳ１５乃至ステップＳ１７では、基本クロックの周波数の見直しのための処理を実行するが、この処理の説明は、「音源処理」の説明の後に行なうことにする。
【００２３】
次に、受信データ処理のうちのノートオンイベント処理の一例を、図７に示す。この処理では、最初のステップＳ２１で、入力バッファから、ノートナンバ，ベロシティ及び音色パートを示すデータと時刻データとを読み出してそれぞれ所定のレジスタに格納する。続くステップＳ２２では、上記ノートナンバに対応する楽音信号を発生すべき発音チャンネルの割当てを行なう。続くステップＳ２３では、パネルスイッチイベント処理（図４のステップＳ５）のうちの音色選択処理によって上記音色パートについて選択された音色データをＲＡＭ４から読み出し、その音色データを上記ノートナンバ及びベロシティに応じて加工する。図８は、ハードディスク装置９から読み出されてＲＡＭ４の音色データ領域に記憶された音色データの内容の一例を示す。この例では、音色データには、所定音域毎の複数周期分の波形データ，エンベロープを制御するデータ，タッチを制御するデータ及びその他のデータが含まれている。
【００２４】
続くステップＳ２４では、加工した音色データ（楽音生成アルゴリズムを示すデータ及びピッチを制御するデータを含む）を、時刻データとともにＲＡＭ４内の当該発音チャンネル用の音源レジスタに書き込み、最後にステップＳ２５で、ノートオンを示すデータを当該音源レジスタに書き込む。そしてリターンする。図９は、音源レジスタの記憶領域の一例を示す。この例では、３２チャンネル分の音源レジスタが用意されており、各音源レジスタに、ノートナンバ，波形データ，エンベロープ制御データ、ノートオン，時刻データ及びその他のデータを書き込む領域と、ワーキングエリアとが設けられている。その他のデータには、パネルスイッチイベント処理で選択されたエフェクトのアルゴリズムを示すデータ等が含まれる。
【００２５】
次に、「音源処理」（図４のステップＳ６）の一例を、図１０に示す。この処理では、最初のステップＳ３１で、各発音チャンネル用の音源レジスタ（図９参照）の記憶内容をチェックし、続くステップＳ３２で、いずれかの発音チャンネル用の音源レジスタに新規の書込みがあったか否かを判断する。ノートオンイベント処理（図７）等が実行されたことによって新規の書込みが行なわれた音源レジスタがあれば、ステップＳ３３に進み、その音源レジスタ内のデータを、現在の区間の次の区間での楽音信号生成処理及びエフェクト処理の対象として予約する。そしてステップＳ３４に進む。他方、新規の書込みがなければ、ステップＳ３２からそのままステップＳ３４に進む。
【００２６】
ステップＳ３４では、ＤＭＡ回路１０が１２８サンプル分の楽音信号に対する再生処理を開始する毎（すなわち、各区間からその次の区間に移行した毎）に立てる前述のフラグをチェックする。続いてステップＳ３５では、フラグが立っているか否か（すなわち、新たな区間に移行したか否か）を判断する。
【００２７】
フラグが立っていなければ、そのままリターンし、フラグが立つまで、メインルーチンのステップＳ７，Ｓ２乃至Ｓ５の処理（図４）と「音源処理」のステップＳ３１乃至Ｓ３５の処理とを繰り返す。フラグが立つと、ステップＳ３５からステップＳ３６に進み、ステップＳ３３で当該区間での楽音信号生成処理の対象として予約した各発音チャンネルのデータから、当該区間において実行すべき楽音信号生成処理及びエフェクト処理等の内容（発音チャンネル数や、各処理の順序や、各処理の演算内容等）を確定するとともに、入力バッファに書き込まれている受信データ（すなわち、当該の区間の次の区間で楽音信号生成処理及びエフェクト処理等を実行するためのデータ）から、当該区間において実行すべきイベント処理等の内容を確定する。
【００２８】
続くステップＳ３７では、ステップＳ３６で確定した処理内容から、当該区間における楽音信号生成処理，エフェクト処理及びイベント処理等に要する全演算量を算出する。この全演算量は、一例として、確定した内容の処理を周波数６０ＭＨｚの基本クロックで完了するのに要する時間で表現するものとする。そして、この全演算量と、１区間の長さ（前述のように約０．００２７秒）とから、確定した内容の処理を１区間内に完了するのに必要な基本クロックの最低周波数を前述の１５，３０，６０ＭＨｚの中から選択し、その周波数に対応する値のデータをクロックコントロールレジスタ６に書き込む。（すなわち、全演算量が１区間の長さの半分を越えていれば６０ＭＨｚを選択し、全演算量が１区間の長さの半分以下であれば３０ＭＨｚを選択し、全演算量が１区間の長さの４分の１以下であれば１５ＭＨｚを選択する。）これにより、ＣＰＵ１をはじめとする各ブロックの基本クロックが、当該最低周波数に設定される。尚、楽音信号生成処理，エフェクト処理及びイベント処理等を実行すべきデータが全く存在しない区間では、スリープモードに対応する値のデータをレジスタ６に書き込むことにより、スリープモードに設定するものとする。
【００２９】
ここで、楽音信号生成処理，エフェクト処理及びイベント処理に要するそれぞれの演算量を算出するにあたって考慮すべき要素をいくつか列挙すると、次のとおりである。
楽音信号生成処理においては、発音チャンネル数が多いほど演算量も多くなることはもちろんであるが、各発音チャンネルにおける楽音信号生成アルゴリズムの相違や演算精度の相違によっても、演算量が異なってくる。また、この電子楽器では再生サンプリング周波数は各発音チャンネルともに４８ｋＨｚに固定されているが、再生サンプリング周波数が可変にした場合には、再生サンプリング周波数の高さに応じて演算量が異なってくる。
【００３０】
エフェクト処理においては、エフェクトのアルゴリズムの相違や、演算グレードの相違によって演算量が異なってくる。
イベント処理においては、イベント数が多いほど演算量も多くなることはもちろんであるが、イベントの種類の相違によっても演算量が異なっており、最も演算量が多いのはノートオンイベント処理である。
【００３１】
ステップＳ３７に続くステップＳ３８では、ステップＳ３３で演算の対象として予約したデータに対して楽音信号生成処理を実行することにより、当該区間分の１２８サンプルの楽音信号を生成する。楽音信号生成処理は、一例として、各発音チャンネルで、原波形を生成する処理と、生成した原波形に対してフィルタ演算を行なう音色処理と、音色処理を施した波形に対する音量制御処理とを時分割に実行し、これによって得られた各発音チャンネルの波形を、所望の比率で累算するものである。この楽音信号生成処理が、ステップＳ３７で設定された周波数の基本クロックで実行されるので、全演算量が少ない区間では周波数が低く設定されることによって消費電力が節減される。
【００３２】
続くステップＳ３９では、ステップＳ３８で生成した楽音信号に対し、エフェクト処理を実行することによって効果を付与する。このエフェクト処理も、ステップＳ３７で設定された周波数の基本クロックで実行されるので、全演算量が少ない区間では周波数が低く設定されることによって消費電力が節減される。
【００３３】
最後のステップＳ４０では、ステップＳ３９でエフェクト処理を施した楽音信号を、ＲＡＭ４内の出力バッファに書き込んで、当該区間の次の区間で再生処理を実行する対象としてＤＭＡ回路１０に予約する。そしてリターンする。この楽音信号に対して、当該区間の次の区間に、ＤＭＡ回路１０によって前述のような再生処理が実行されることになる。図１１は、出力バッファの記憶領域を示す。１２８サンプルのそれぞれの楽音信号を記憶する領域が設けられている。尚、出力バッファは２系統設けられており、ＣＰＵ１は、各区間毎に互い違いに１系統ずつに楽音信号を書き込み、ＤＭＡ回路１０は、各区間毎に、ＣＰＵ１が書込みを行なっていないほうの出力バッファ（すなわちＣＰＵ１が当該区間の直前の区間に楽音信号を書き込んだ出力バッファ）から楽音信号を読み出して再生処理を実行するようになっている。
【００３４】
「音源処理」を終了すると、メインルーチンのステップＳ７，Ｓ２乃至Ｓ５の処理（図４）と「音源処理」のステップＳ３１乃至Ｓ３５の処理とを繰り返す。その際、その他の処理（図４のステップＳ７），受信データ処理（同図のステップＳ３）及びパネルスイッチイベント処理（同図のステップＳ５）が、「音源処理」のステップＳ３７で設定された周波数の基本クロックで実行されるので、全演算量が少ない区間では周波数が低く設定されることによって消費電力が節減される。
【００３５】
そして、再び新たな区間に移行すると、「音源処理」のステップＳ３５から再びステップＳ３６以下に進み、新たな区間での基本クロックの周波数を設定し、その周波数の基本クロックで該区間における楽音信号生成処理，エフェクト処理及びイベント処理等を実行する。以下、こうした処理を繰り返すことにより、各区間毎に基本クロックを制御しながら楽音信号を生成していく。
【００３６】
尚、「音源処理」のステップＳ３７で基本クロックの周波数を設定した後でも、当該区間内に新たにＭＩＤＩ２からの受信データが発生した場合には、実行中の処理を中断して、前述の「最優先の割込み処理」（図５）を実行することになる。ところが、この割込み処理によって入力バッファに受信データが書き込まれることにより、当該区間内に新たに受信データ処理（図４のステップＳ３）等を実行しなければならなくなるので、当該区間において実行すべきイベント処理等の内容が、「音源処理」のステップＳ３６で確定した内容よりも多くなってしまう。こうした場合に基本クロックの周波数をステップＳ３７で設定したままにしておくと、当該区間において実行すべき処理を、当該区間内に完了できなくなることがある。
【００３７】
そこで、「最優先の割込み処理」（図５）では、ステップＳ１５で、この新たな受信データに対して当該区間において実行すべきイベント処理等の演算量を算出する。そして、「音源処理」のステップ３７で算出した全演算量のうちまだ処理していない演算量にこの新たな演算量を加えた合計と、当該区間の残り時間とから、当該区間において実行すべき処理を残り時間内に完了するのに必要な基本クロックの最低周波数を、１５，３０，６０ＭＨｚの中から求める。続くステップＳ１６では、ステップＳ１５で求めた周波数が、現在の周波数（すなわち、当該区間に「音源処理」のステップ３７で設定した周波数）よりも高いか否かを判断する。
【００３８】
高ければ、ステップＳ１７に進み、ステップＳ１５で求めた周波数に対応する値のデータをクロックコントロールレジスタ６に書き込むことにより、基本クロックをこの新たな周波数に設定し直す。そしてリターンする。他方、現在の周波数よりも高くなければ、ステップＳ１６からそのままリターンする。こうした基本クロックの周波数の見直しを行なうことにより、基本クロックの周波数の設定があった後に新たな受信データが発生した場合にも、当該区間において実行すべき処理を、当該区間内に完了できるようになる。
【００３９】
「音源処理」のステップＳ３７で基本クロックの周波数を設定した後に、当該区間内に新たな受信データが発生しない場合でも、ＣＰＵ１は、各区間毎に、区間の開始後所定の時間が経過したときに、図１２に示すような割込み処理を実行する。（受信データの発生があった場合には、受信データを直ちに入力する必要があるので、この割込み処理よりも「最優先の割込み処理」のほうを優先して実行する。）すなわち、最初にステップ４１で、「音源処理」のステップ３７で算出した全演算量のうちまだ処理していない演算量と、当該区間の残り時間とから、当該区間において実行すべき処理を残り時間内に完了するのに必要な基本クロックの最低周波数を、１５，３０，６０ＭＨｚの中から求める。続くステップＳ４２では、ステップＳ４１で求めた周波数が、現在の周波数（すなわち、当該区間に「音源処理」のステップ３７で設定した周波数）よりも高いか否かを判断する。
【００４０】
高ければ、ステップＳ４３に進み、ステップＳ４１で求めた周波数に対応する値のデータをクロックコントロールレジスタ６に書き込むことにより、基本クロックをこの新たな周波数に設定し直す。そしてリターンする。他方、現在の周波数よりも高くなければ、ステップＳ４２からそのままリターンする。
【００４１】
この割込み処理によって周波数の見直しを行なう理由は、新たな受信データの発生がない場合でも、何らかの事情（例えば、ＣＰＵ１が図４のメインルーチンと並行して別の処理を実行しており、その別の処理に予想外に時間を要したこと等）によって、最初に設定した周波数の基本クロックでは間に合わなくなることがないとはいえないので、区間の途中で必ず周波数の見直しをするのが望ましいと考えたことにある。
【００４２】
このように、この電子楽器では、実行すべき処理に要する演算量に応じて基本クロックを制御することにより、消費電力が節減されるので、電源である乾電池を交換することなく演奏を行なえる時間が従来よりも延長されるようになる。また、このように基本クロックを制御することにより、演算量が少ない区間では基本クロックの低下により電磁波の輻射が減少するようになるので、電磁波の不要な輻射の抑制を図ることもできるようになる。
【００４３】
尚、この発明は、上述のように乾電池等のバッテリーを内蔵した電子楽器に適用した場合に特に有効であるが、これに限らず、過程用コンセントから電力を供給するようにした電子楽器にこの発明を適用してもよい。そうした場合にも、やはり消費電力の節減や電磁波の不要な輻射の抑制を図ることができる。
【００４４】
また、この実施の形態では、メインルーチンの処理を、図３を用いて説明したようなタイミングに従って実行している。しかし、これに限らず、必要に応じて、適宜のタイミングでこの処理を実行するようにしてよい。すなわち、例えば「音源処理」の楽音信号生成処理を、新たな区間への移行のタイミングで開始するかわりに、各区間において生成した１２８サンプルの楽音信号のうちＤＭＡ回路１０に渡された残りのサンプル数が所定数以下になったことを検出し、その検出のタイミングで楽音信号生成処理を開始するようにしてもよい。あるいは、一定時間毎に出力バッファの空き状態をチェックすることにより、出力バッファの所定以上の領域が空いたことを検出し、その検出のタイミングで楽音信号生成処理を開始するようにしてもよい。また例えば、受信データ処理の実行により音源レジスタにデータが書き込まれることによって「音源処理」のステップＳ３２でイエスと判断される毎に、直ちにそのデータについて楽音信号生成処理を実行するようにしてもよい。
【００４５】
また、この実施の形態では、２系統の出力バッファを設け、一方の出力バッファにＣＰＵが楽音信号を書き込む区間では、ＤＭＡ回路がもう一方の出力バッファから楽音信号を読み出すようにしている。しかし、これに限らず、出力バッファを１系統だけ設けるようにしてもよい。その場合には、ＣＰＵが、生成した楽音信号の書込みポインタ位置への書込みを先行して行ない、ＤＭＡ回路が、１サンプリング周期毎に進行する読出しポインタを発生することにより、書き込まれた楽音信号を読み出すようにすればよい。また逆に、３系統以上の出力バッファを設けるようにしてもよい。そうした場合には、ＣＰＵは、ＤＭＡ回路が楽音信号に対する再生処理を実行する区間よりも２区間以上先行して、当該楽音信号を生成して出力バッファに書き込んでおくことができるようになる。
【００４６】
そして、いずれの場合においても、基本クロックの制御は、楽音信号生成処理の開始時点に行なうようにするとよい。また、いずれの場合においても、基本クロックの見直しを、受信データの入力バッファへの書込みの際に行なったり、楽音信号生成処理の途中に行なったり、楽音信号生成処理とは関係なく所定の時間に行なったりするとよい。
【００４７】
また、この実施の形態では、基本クロックを６０ＭＨｚ，３０ＭＨｚ，１５ＭＨｚまたはスリープモードの４通りに制御可能なソフト音源にこの発明を適用している。しかし、これに限らず、基本クロックを他の適宜の周波数に制御可能なソフト音源にこの発明を適用してよいことはもちろんである。
【００４８】
また、この実施の形態では、ＭＩＤＩからの受信データに基づき、実行すべき処理に要する演算量を算出し、この演算量に応じて基本クロックの制御を行なっている。しかし、これに限らず、例えば、ＭＩＤＩからの受信データに基づき、同時に生成すべき楽音数を求め、この楽音数に応じて基本クロックを制御するようにしてもよい。更に一般的にいえば、基本クロックの周波数を固定するのではなく、ＭＩＤＩからの受信データに応じて、基本クロックの周波数の制御を行なうようになっていればよい。
【００４９】
また、この発明は、電子楽器としての専用機器の制御ＣＰＵにより実行される、ＲＯＭに記憶されたファクトリーセットのプログラムで実施してもよいし、あるいは、ウィンドウズ等のオペレーティングシステムが動作する汎用のパーソナルコンピュータにより実行される、フロッピーディスクやＣＤ−ＲＯＭ等に記憶されたソフトウェアに適用してもよい。
【００５０】
また、この実施の形態では、ソフト音源にこの発明を適用しているが、これに限らず、他の音源装置にもこの発明を適用してよいことはもちろんである。
【図面の簡単な説明】
【００５１】
【図１】この発明を採用した電子楽器の全体構成ブロック図。
【図２】基本クロックの周波数と、ＣＰＵの消費電力との関係の一例を示す図。
【図３】ソフト音源の基本原理を示す図。
【図４】ＣＰＵの実行するメインルーチンを示すフローチャート。
【図５】ＣＰＵの実行する割込み処理を示すフローチャート。
【図６】入力バッファの記憶領域の一例を示す図。
【図７】ＣＰＵの実行するノートオンイベント処理を示すフローチャート。
【図８】音色データの内容の一例を示す図。
【図９】音源レジスタの記憶領域の一例を示す図。
【図１０】ＣＰＵの実行する音源処理を示すフローチャート。
【図１１】出力バッファの記憶領域の一例を示す図。
【図１２】ＣＰＵの実行する割込み処理を示すフローチャート。
【符号の説明】
【００５２】
１  ＣＰＵ
２  ＭＩＤＩ
３  ＲＯＭ
４  ＲＡＭ
５  タイマ
６  クロックコントロールレジスタ
７  キーボード
８  ディスプレイ
９  ハードディスク装置
１０  ＤＭＡ回路
１１  データ及びアドレスバス
１２  乾電池
１３  Ｄ／Ａ変換器
１４  サウンドシステム
【図１】
2005234597.tif 000003
【図２】
2005234597.tif 000004
【図３】
2005234597.tif 000005
【図４】
2005234597.tif 000006
【図５】
2005234597.tif 000007
【図６】
2005234597.tif 000008
【図７】
2005234597.tif 000009
【図８】
2005234597.tif 000010
【図９】
2005234597.tif 000011
【図１０】
2005234597.tif 000012
【図１１】
2005234597.tif 000013
【図１２】
2005234597.tif 000014