(57)【特許請求の範囲】
【請求項１】
新たに発音を開始する楽音の発音開始指示データを保持するバッファと、該バッファに保持された発音開始指示データによる発音の開始を待機状態に設定する待機状態設定部と、外部に待機状態の解除指示を送信する待機解除指示部と、所定周期のタイミングで動作して前記バッファの待機状態が解除されているとき該バッファに保持された発音開始指示データによる楽音の生成を開始する楽音生成部とを、それぞれ有する第１及び第２の音源回路を備えた音源装置であって、
前記第１及び第２の音源回路で同時に発音を行うべき発音開始指示データがある場合、先に処理する一方の音源回路において該音源回路の前記バッファに発音開始指示データを保持するとともに、該保持された発音開始指示データによる発音の開始を待機状態に設定し、後に処理する他方の音源回路において該音源回路の前記バッファに発音開始指示データを保持するとともに、前記先に処理する一方の音源回路に前記解除指示を送信して該一方の音源回路の待機状態設定部を待機解除とし、前記所定周期のタイミングにより第１及び第２の音源回路の前記バッファに保持された発音開始指示データによる楽音の生成を開始することを特徴とする音源装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子楽器などでにおいて多数の楽音を同時に発音開始するのに適した音源装置に関する。
【０００２】
【従来の技術】
従来、電子楽器の音源回路（音源チップ）は複数の発音チャンネルで同時に複数の楽音を発音できるようになっているが、このような音源回路を２つ搭載した電子楽器がある。この電子楽器は、２つの音源回路を使うことで同時に発音可能な音数をさらに多くしたものである。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来の電子楽器では、複数の音を同時に発音開始させるときには必ず１つの音源回路だけを使うようになっており、同時に発音開始させる複数の音について、複数の音源回路で分散して処理することができなかった。また、複数の音源回路間で発音開始のタイミングを合わせる（同期させる）ための配慮がなされていなかった。このため、２つの音源回路により同時に発音できる（発音開始のタイミングは異なる）音の数は多くできても、同時に発音開始できる音の数は１つの音源回路で扱える数すなわち発音チャンネル数に限られてしまうという問題があった。
【０００４】
本発明は、複数の音源回路間での発音開始のタイミングを正確にあわせることができ、正確なタイミングで同時に発音開始できる音の数を飛躍的に増やすことを課題とする。
【０００５】
【課題を解決するための手段】
本発明の請求項１の音源装置は、新たに発音を開始する楽音の発音開始指示データを保持するバッファと、該バッファに保持された発音開始指示データによる発音の開始を待機状態に設定する待機状態設定部と、外部に待機状態の解除指示を送信する待機解除指示部と、所定周期のタイミングで動作して前記バッファの待機状態が解除されているとき該バッファに保持された発音開始指示データによる楽音の生成を開始する楽音生成部とを、それぞれ有する第１及び第２の音源回路を備えた音源装置であって、前記第１及び第２の音源回路で同時に発音を行うべき発音開始指示データがある場合、先に処理する一方の音源回路において該音源回路の前記バッファに発音開始指示データを保持するとともに、該保持された発音開始指示データによる発音の開始を待機状態に設定し、後に処理する他方の音源回路において該音源回路の前記バッファに発音開始指示データを保持するとともに、前記先に処理する一方の音源回路に前記解除指示を送信して該一方の音源回路の待機状態設定部を待機解除とし、前記所定周期のタイミングにより第１及び第２の音源回路の前記バッファに保持された発音開始指示データによる楽音の生成を開始することを特徴とする。
【０００７】
請求項１の音源装置において、第１及び第２の音源回路で同時に発音開始する場合、例えば第１の音源回路において、バッファに発音開始指示データを保持するとともに、待機状態設定部により該バッファに保持された発音開始指示データによる発音の開始を待機状態に設定する。一方、第２の音源回路においてバッファに発音開始指示データ楽音を保持するとともに、待機解除指示部により解除指示を第１の音源回路に送信する。そして、第１の音源回路の待機状態設定部で解除指示を受信すると、この受信後の最初の所定周期のタイミングにより、第２の音源回路に同期して楽音の生成を開始する。これにより、第２の音源回路と発音開始のタイミングを正確にあわせることができ、正確なタイミングで同時に発音開始できる音の数を飛躍的に増やすことができる。
【０００９】
なお、同じ複数の音源回路により、１種類複数の音源回路という簡単な構成で、正確なタイミングで同時に発音開始できる音の数を飛躍的に増やすことができる。
【００１０】
【発明の実施の形態】
以下、図面を参照して本発明の一実施の形態について説明する。図１は本発明の実施形態の音源装置を適用した電子楽器のブロック図であり、この実施形態は２つの音源回路１，２を搭載した例である。ＣＰＵ３はＲＯＭ４に格納されている制御プログラムに基づいてＲＡＭ５のワーキングエリアを使用して電子楽器全体の制御を行う。例えば、通常の電子楽器の基本的な機能として、ＣＰＵ３は鍵盤やパネルスイッチ等の操作子６の操作イベントを検出してマニュアル演奏やその他設定処理の制御を行い、また、表示部７の表示の制御を行う。
【００１１】
また、ＣＰＵ３は後述のメイン処理により、発生するキーオンをＲＡＭ５に設定されているキーオンレジスタに逐次記録する。このキーオンとしては、操作子６の鍵盤操作により入力されるキーオン、自動演奏によりＲＡＭ５等から読み出されて発生するキーオン、あるいは外部から入力されるキーオンなどがある。
【００１２】
タイマ８は、後述の発音開始処理のための割込み信号をＣＰＵ３に出力するとともに、同割込み信号を第１音源回路１及び第２音源回路２の動作タイミングを規定するクロックとして第１音源回路１及び第２音源回路２に出力する。ここで、発音開始処理の割込みはこの電子楽器の電源オンと共にＣＰＵ３により開始され、その割込み処理により前記キーオンレジスタに記録されているキーオンに対する発音処理を行う。
【００１３】
第１音源回路１と第２音源回路２は同一構造の音源ＬＳＩチップであり、それぞれ、新たに発音を開始する楽音に対応するキーオンを書き込むキーオンバッファ１ａ，２ａと、図示しない波形データメモリから波形データを読み出して楽音信号を生成する楽音生成部１ｂ，２ｂ、待機状態設定部１ｃ，２ｃ、待機解除指示部１ｄ，２ｄを備えている。そして、第１音源回路１の楽音生成部１ｂ及び第２音源回路２の楽音生成部２ｂで生成された楽音信号はサウンドシステム９に出力され、サウンドシステム９はＤ／Ａ変換や増幅等を行ってスピーカーで発音する。
【００１４】
なお、外部記憶装置１０はハードディスク装置（ＨＤＤ）、フロッピィディスク装置（ＦＤＤ）、ＣＤ−ＲＯＭ装置、光磁気ディスク（ＭＯ）装置、デジタル多目的ディスク（ＤＶＤ）装置等であり、例えばこの外部記憶装置１０から自動演奏の演奏データを供給することもできる。さらに、通信インターフェース（Ｉ／Ｆ）１１を介して通信ネットワークに接続し、サーバコンピュータ等から演奏データの配信を受けるようにすることもできる。
【００１５】
（音源回路の基本構成及び基本動作）
第１音源回路１及び第２音源回路２は、それぞれが例えば１６チャンネル等の時分割多重処理で楽音を発生する複数の音源チャンネルを有しており、一つの音色に対して複数の音源チャンネルで生成する楽音波形を合成して各種の音色の楽音信号を発生することができる。この場合、一つの音色でも複数の音源チャンネルを使用するため、同時に発音開始を必要とする音源チャンネルが一方の音源回路だけでは足りなくなることも発生するが、他方の音源回路の音源チャンネルも使って、多数の楽音を同時に発音開始することができる。このような場合に、第１音源回路１と第２音源回路２とで発音開始を同期させることが本発明の要点ともなっている。
【００１６】
第１音源回路１及び第２音源回路２は、ノートナンバ、タッチデータ、音色データ等の音源パラメータが発音チャンネルごとに設定される音源バッファ（図示せず）を備えており、楽音生成部１ｂ，２ｂは、この音源バッファの音源パラメータに応じて、各チャンネルごとに楽音信号を生成する。また、この楽音信号を生成するチャンネル（発音するチャンネル）は、ＣＰＵ３によってデータが書き込まれるキーオンバッファ１ａ，２ａの各チャンネルに対応するビットの状態によって設定される。具体的には、キーオンバッファ１ａ，２ａは１６ビットのビット列であって、それぞれのビットが１つずつのチャンネルに対応しており、ビットが“１”になっているチャンネルが、次回に新たな発音を開始させるチャンネルとなる。
【００１７】
さらに、発音するチャンネルとして設定されていても、待機状態設定部１ｃ，２ｃの各チャンネルに対応するビットの状態が「待機状態」として設定されている場合は発音を待機し、このビットの状態が「待機解除」と設定されている場合に発音可能となる。待機解除指示部１ｄ，２ｄは各チャンネルに対応するビットからなるフラグレジスタであり、この待機解除指示部１ｄ，２ｄはそれぞれ待機状態設定部２ｃ，１ｃに接続されている。そして、第１音源回路１の待機状態設定部１ｃの「待機解除」は第２音源回路２の待機解除指示部２ｄの所定ビットに解除フラグが書き込まれることにより設定される。同様に、第２音源回路２の待機状態設定部２ｃの「待機解除」は第１音源回路１の待機解除指示部１ｄの所定ビットに解除フラグが書き込まれることにより設定される。
【００１８】
なお、第１音源回路１と第２音源回路２はＣＰＵ３に対して同等な回路であるが、第１音源回路１と第２音源回路２で同時に発音開始する場合には、発音チャンネルの状態に応じて、この音源回路の処理の順番が決められる。そして、先に処理する音源回路（例えば第１音源回路１）においてキーオンバッファにデータを書き込むとともに待機状態設定部で「待機状態」とし、次に処理する音源回路（第２音源回路２）においてキーオンバッファにデータを書き込むとともに待機解除指示部に解除フラグを書き込み、これにより先に処理した音源回路のチャンネルを「待機解除」に設定する。そして、次の発音開始のタイミングで、両音源回路で発音を開始する。
【００１９】
図３はＣＰＵ３が実行するメイン処理の要部フローチャート、図４は発音開始処理のフローチャート、図５は設定処理（サブルーチン）のフローチャートであり、これらのフローチャートで示したプログラムはＲＯＭ４に格納されている。図３のメイン処理では、ステップＳ１で、鍵盤の操作や自動演奏や外部からの楽音信号の受信などによって新たに楽音の発音開始の指示が発生するごとにその楽音のデータ（ノートナンバ、タッチデータ、キーオン、音色データ等）をＲＡＭ３のキーオンレジスタに記録し、ステップＳ２で終了が指示されたか否かを判定する。終了が指示されていなければステップＳ１に戻り、終了が指示されれば処理を終了する。
【００２０】
図４の発音開始処理は、前記のようにタイマ８から出力される割込み信号により起動される。なお、この割込み信号の周期は波形データのサンプリング周期であり、ＣＰＵ３の動作クロックはこの割込み信号の周期よりさらに細かい周期である。この割込み処理が開始されると、ステップＳ１１で今回のサンプリング周期タイミングで処理すべき波形データを処理して楽音を再生し、ステップＳ１２で、キーオンレジスタに記録されているそれぞれのキーオンについて、そのキーオンが利用する音源チャンネルを決定して音源回路ごとの発音開始情報を作成する。
【００２１】
ここで、「発音開始情報」は音源チャンネルごとの発音開始状態を記録したものである。すなわち、キーオンレジスタに記録されているそれぞれの音高（キーオン）で利用する音源チャンネルをそれぞれのキーオンの入力条件に従って決定する。例えば、どこから入力されたキーオンか、あるいは自動演奏中で設定されているパートごとの音色等に従い、音高ごとの音色を決定し、この音色のデータが発音開始情報に記録されている。また、音色ごとに何個の波形データ（何個の音源チャンネル）を使って発音するかが発音開始情報に記録されている。そして、この情報を使って音高ごとの発音チャンネル数を決め、さらに、現在の音源チャンネルの使用状態を参照して利用する（利用できる）音源チャンネルにそれぞれの音高を割り当て、これらの音高と音源チャンネルの対応が発音開始情報に記録されている。なお、ステップＳ１２では、キーオンレジスタが空ならば処理を行わず、発音開始情報を作成すると、その処理後のキーオンレジスタの対応する内容は消去する。
【００２２】
すなわち、発音指示が発生するごとにメイン処理によりキーオンレジスタに記録されるが、一方で、割込み処理により、サンプリング周期のタイミングでキーオンレジスタの内容から発音開始情報を作成して、キーオンレジスタを更新しながら発音開始情報に対応する処理を行う。そして、この処理がサンプリング周期のタイミングで繰り返されて、楽音が発生される。
【００２３】
ステップＳ１２で上記発音開始情報を作成すると、ステップＳ１３で、第１音源回路１と第２音源回路２とで、同時に処理する発音開始情報があれば、その発音開始情報に対してその旨を表す情報（待機フラグや解除フラグ）を付加し、ステップＳ１４に進む。解除フラグは、最後にキーオンバッファが設定される音源回路に対応する発音開始情報に付加され、それ以外の音源回路に対応する発音開始情報には待機フラグが付加される。ステップＳ１４では後述の図５の設定処理を行い、元のルーチンに復帰する。
【００２４】
上記ステップＳ１４で実行される図５の設定処理では、ステップＳ２１で、今回処理すべき発音開始情報を参照して音源回路を設定する。この「音源回路を設定する」とは次のような処理である。作成された発音開始情報に従って、対応する音源回路１（または２）のキーオンバッファを書き換えるとともに、音源生成部１ｂ（または２ｂ）の音源バッファに対しても必要な情報（楽音の波形を合成するためのデータ）を送信する。ここで、発音開始情報は第１音源回路１と第２音源回路２とに対応して複数存在する場合がある。この場合、第１音源回路１と第２音源回路２とでどちらを先に処理するかは発音開始情報に含まれている処理順を表す情報に従う。もしくは、音源回路の処理順が予め決まっていればその順に従う。例えば、最初の割込み処理のステップＳ２１により第１音源回路１に対して上記音源回路の設定処理をすると、次の割込み処理のステップＳ２１により第２音源回路２に対して上記音源回路の設定処理をする。
【００２５】
ステップＳ２２では、今回処理する発音開始情報に待機フラグが付加されているか否かを判定し、待機フラグが付加されていれば、ステップＳ２３で今回の処理の対象とする音源回路に待機状態を設定させ、元のルーチンに復帰する。一方、待機フラグが付加されていなければ、ステップＳ２４で今回処理した音源回路の音源チャンネルの発音開始を設定する。この「発音開始を設定する」とは、次のサンプリング周期のタイミングでその音源チャンネルに割り当てられている波形データの読出しを開始させる状態を設定したことを表している。
【００２６】
すなわち、発音開始情報に待機フラグが付加されているということはその発音開始情報が最初の音源回路に対するものであり、ステップＳ２３でその待機状態設定部に待機フラグを書き込む。一方、発音開始情報に待機フラグが付加されていないということは、その発音開始情報が、１つの音源回路だけで発音開始する場合のその音源回路に対するもの、あるいは２つの音源回路で同時に発音開始する場合の２番目の（最後の）音源回路に対するものである。そこで、対応する音源回路の音源チャンネルで次のサンプリング周期のタイミングでそのまま発音を開始できるようにする。
【００２７】
次に、ステップＳ２５で、今回処理する発音開始情報に解除フラグが付加されているか否かを判定し、解除フラグが付加されていなければ、１つの音源回路のみで発音開始する場合のその音源回路の発音開始情報についての処理であり、そのまま元のルーチンに復帰する。一方、解除フラグが付加されていれば、２つの音源回路で同時に発音開始する場合の２番目の（最後の）音源回路の発音開始情報についての処理であり、ステップＳ２６で、今回処理した音源回路の待機解除指示部に解除フラグを書き込み、他の音源回路の待機状態設定部に対して解除指示を出力する。これにより、他の音源回路では待機状態の解除指示が受信され、解除フラグに対応するチャンネルの待機状態が解除される。そして、ステップＳ２７で、その待機状態が解除された音源チャンネルの発音開始を設定し（他の音源回路での動作）、元のルーチンに復帰する。この「発音開始を設定し」の意味もステップＳ２４と同様である。
【００２８】
すなわち、第１音源回路１を先に第２音源回路２を後に処理する場合には、先ず、最初のタイミングで、図５のステップＳ２２→Ｓ２３のループ▲１▼により、第１音源回路１に待機フラグがセットされる。次のタイミングで、ステップＳ２２→Ｓ２４→Ｓ２５→Ｓ２６のループ▲２▼により、第２音源回路２に発音開始を設定するとともに、第１音源回路１の待機状態を解除する。そして、次のタイミングで図４のＳ１１において第１音源回路１と第２音源回路２が同時に発音開始される。なお、１つの音源回路の処理の場合は、図５のステップＳ２２→Ｓ２４→Ｓ２５→リターンのループ▲３▼によりその音源回路に発音開始が設定され、次のタイミングで図４のＳ１１において発音される。
【００２９】
図２は、実施形態における動作例を示すタイミングチャートである。Ｔ１，Ｔ２，Ｔ３はサンプリング周期ごとの動作タイミングを示し、（Ｓ１２，Ｓ１３）等は前記フローチャートのステップに対応することを示している。この例は、第１音源回路１を先に処理し、第２音源回路２を後に処理する場合である。ある時点で、複数の楽音を同時に発音開始することが指示（あるいは検出）されたとすると、その後の動作タイミングＴ１で、第１音源回路１の発音開始情報を作成する（Ｓ１２，Ｓ１３）。続いてキーオンバッファにキーオンを設定し（Ｓ２１）、さらに、待機状態設定部１ｃに発音開始の待機状態を設定する（Ｓ２３）。
【００３０】
次の動作タイミングＴ２で、第２音源回路２の発音開始情報を作成し（Ｓ１２，Ｓ１３）、続いてキーオンバッファにキーオンを設定し（Ｓ２１）、待機解除指示部２ｄに解除フラグを設定して第１音源回路１の待機常置Ａを解除する（Ｓ２６）。これにより、第１音源回路１の待機状態が解除され、次の動作タイミングを待つ（発音開始を設定した状態）。そして、次の動作タイミングＴ３により第１音源回路１と第２音源回路２とで同時にすなわち同期して発音が開始される（Ｓ１１）。
【００３１】
以上の実施形態では、第１音源回路と第２音源回路の何れを先に処理するかは音源チャンネルの状態等により任意に設定されるもととして説明したが、例えば第１音源回路を先に処理し、第２音源回路を後に処理するように、予め順番が決められていてもよい。
【００３２】
以上の実施形態では２つの音源回路について説明したが、３つ以上の複数の音源回路の場合にも適用できる。すなわち、最後の音源回路の処理を行うまでは、それ以前の音源回路において待機状態としておき、最後の音源回路のキーオンバッファにキーオンを書き込んだ時点で、それまでにキーオンを書き込んだ他の音源回路のキーオンについての待機状態を解除すればよい、これにより、その後の最初のクロックによって全音源回路から楽音信号が生成される。
【００３３】
なお、実施形態では最後に処理する音源回路の発音開始情報に解除フラグを付加するようにしているが、この解除フラグは設定しなくてもよい。すなわち、最後に処理する音源回路の発音開始情報に待機フラグが設定されていないことによって、そのキーオンバッファの書き換えを行った後に、必ず全ての音源回路に対して解除指示を出力するようにすればよい。
【００３４】
また、以上の実施形態は音源回路を電子楽器に搭載した例について説明したが、パーソナルコンピュータ等のサウンドボード等に複数の音源回路を搭載する場合にも本発明の音源回路を適用できることはいうまでもない。
【００３５】
【発明の効果】
以上説明したように本発明によれば、複数の音源回路間での発音開始のタイミングを正確にあわせることができ、正確なタイミングで同時に発音開始できる音の数を飛躍的に増やすことができる。
【図面の簡単な説明】
【図１】本発明の実施形態の音源回路を適用した電子楽器のブロック図である。
【図２】本発明の実施形態における動作例を示すタイミングチャートである。
【図３】本発明の実施形態におけるメイン処理の要部フローチャートである。
【図４】本発明の実施形態における発音開始処理のフローチャートである。
【図５】本発明の実施形態における設定処理（サブルーチン）のフローチャートである。
【符号の説明】
１…第１音源回路、２…第２音源回路、３…ＣＰＵ、４…ＲＯＭ、５…ＲＡＭ、８…タイマ
【図１】
0003741047.tif 000002
【図２】
0003741047.tif 000003
【図３】
0003741047.tif 000004
【図４】
0003741047.tif 000005
【図５】
0003741047.tif 000006