(57)【要約】      （修正有）【課題】不当に消音される発音チャネルを減らし、かつ発音チャネルの消音時の音楽的ダメージを軽減できる電子楽器、楽音発生方法、及びプログラムを提供する。【解決手段】第１記憶手段から第２記憶手段内の波形バッファに波形データを転送する転送処理を実行する第１プロセッサと、第２記憶手段内の波形バッファから波形データを読み出す読出し処理とを実行する第２プロセッサと、を備え、少なくとも何れかのプロセッサは、いずれかのプロセッサが、複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、第１プロセッサが転送処理により複数の波形データを転送する複数の波形バッファ内の各転送位置と、第２プロセッサが読出し処理により複数の波形データを読み出す複数の波形バッファ内の各読出し位置と、から得られる各差分値が、閾値以下になった波形バッファを特定する特定処理と、特定処理により特定された閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理と、を実行する。【選択図】図１５
2019061161.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を実行する第１プロセッサと、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に実行させる第２プロセッサと、
を備え、
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、
前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、
前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理と、
を実行することを特徴とする電子楽器。
【請求項２】
前記閾値設定処理は、
前記第２プロセッサが前記波形バッファ内の波形データを読み出す読出スピードが速い波形バッファに対応する閾値が、遅い波形バッファに対応する閾値よりも大きな値になるように、前記複数の波形バッファそれぞれに対応させて前記複数の閾値を設定することを特徴とする請求項１に記載の電子楽器。
【請求項３】
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第１プロセッサの前記転送処理における単位時間当たりの前記複数の波形データの転送量が転送許容閾値に達しているか否かを判断する転送量判断処理、
を実行し、
前記発音停止処理は、前記転送量判断処理により前記複数の波形データの転送量が前記転送許容閾値に達していると判断された場合に、前記第２プロセッサの前記読出し処理により読み出されている前記複数の波形データのうちのいずれかの波形データの読出しを停止させる停止処理、を実行することにより、前記いずれかの波形データに基づく音の発音を停止させることを特徴とする請求項１又は２に記載の楽音発生装置。
【請求項４】
前記いずれかの波形データは、少なくとも前記複数の波形バッファにおける各読出し処理の開始順番及び前記各読出し処理により読み出される各波形データの出力レベルの何れかに基づいて決定される優先度の低い音に対応するデータであることを特徴とする請求項３に記載の楽音発生装置。
【請求項５】
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第２プロセッサにより読み出される前記波形データの再生速度に応じて、前記第１プロセッサが転送する前記複数の波形データのうち優先して転送させる波形データを決定する優先転送波形データ決定処理、を実行することを特徴とする請求項１乃至４のいずれかに記載の楽音発生装置。
【請求項６】
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ことを特徴とする楽音発生方法。
【請求項７】
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器、楽音発生方法、及びプログラムに関する。
【背景技術】
【０００２】
波形読込み方式により楽音波形を発生する楽音発生装置では、より多数の、より長時間の波形データを利用できるようにするために、使用しない波形データは例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、又はハードディスク記憶装置等の二次記憶装置（第１記憶手段）の音色波形領域に保存しておき、その中で使用する波形データを音源ＬＳＩ（大規模集積回路）が直接アクセスできる高速な波形バッファとして機能する例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の一次記憶装置（第２記憶手段）に転送して発音させるというシステムを採用するものがある。つまり、高価なＲＡＭが有する記憶容量以上の記憶容量の波形データを安価なＲＯＭに保持しておき、必要な場合のみそれを波形バッファに移動して発音に使用するというコスト的には効率的な方法であると言える。
【０００３】
ところで楽音波形データのサイズは様々であり、理想的には全ての発音チャネル分の夫々の波形データをそのまま格納できるだけの領域が第２記憶手段の波形バッファ上に用意されていることが好ましいが、現実には、コストを抑えるために、第２記憶手段の波形バッファ上に十分な領域が用意されていない。そのため、波形バッファを楽音波形データのサイズを気にする必要のないいわゆる「リングバッファ」として機能させ、発音部が発音中に音源ＬＳＩが対象発音チャネルの波形バッファ（リングバッファ領域）の所定区間を繰り返し読み出すのと並行して、ＣＰＵが波形バッファに波形データを逐次補充している。従来技術としては、例えば特許文献１に記載の技術が知られている。
【０００４】
ここで、音源ＬＳＩが波形を再生するために第２記憶手段上の波形バッファを読み出すアドレス（読出しポインタ）の進捗速度よりも、ＣＰＵが第１記憶手段から波形データを転送する際の書込みアドレス（書込みポインタ））の進捗速度の方が大幅に速いという条件がある。しかし、構造的に音源ＬＳＩでの再生ピッチが高くなると読出し速度が上がり、また、同時発音数が増加すると１ボイスあたりの波形転送の平均速度は低下する。これらの悪条件が重なれば、波形バッファにおける書込みポインタが読出しポインタを追い越さないようにするどころか、書込みポインタが読出しポインタに追いつかれる可能性もありうる。もしそのようなことが起これば、音源ＬＳＩが読み出す波形は、突然不連続に過去のデータに戻ってしまい、ノイズが発生することになる。これは音楽的に許容できるものではない。このため従来は、発音チャネルに対応する波形バッファ毎に、書込みポインタから読出しポインタを差し引くことにより算出されるマージン（以下これを「波形読出しマージン」と呼ぶ）を監視し、波形読出しマージンが小さくなった発音チャネルについては、速やかに消音処理を実行することにより、音楽的に許容できない楽音の発音を防止することが求められる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１２２６６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、複数の発音チャネル毎に、第１記憶手段内の波形データをそれぞれの発音チャネルに割り当てられた第２記憶手段内の波形バッファに転送する場合に、従来は、どの発音チャネルの波形バッファの波形読出しマージンも同じ閾値で判断していた。このため、読出し速度が速い波形バッファほど、波形読出しマージンの値が閾値より小さくなった後に、消音に向かっている間に転送が間に合わなくなって読出しポインタが書込みポインタに追いついてしまって、音楽的に許容できない楽音が発音されてしまう確率が高い。
【０００７】
また従来、発音チャネル毎の波形バッファへの波形転送は、各発音チャネルの状況とは無関係に各波形バッファへ順番に一定量の波形データを転送するか、あるいは１つ１つの波形バッファに順番に書込みポインタが読出しポインタを追い越す直前まで波形データを転送するなどしていた。このため、波形バッファ毎の波形データの蓄積量に偏りが生じ、転送負荷が大きくなった際に、発音チャネルの消音が望まれない形で発生していた。
【０００８】
更に従来、楽音発生装置の最大波形転送能力を音源ＬＳＩによる波形データの要求量が上回っているケースでも、そのまま転送を続けていた。このため、発音の重要性などを考慮せずに単純に波形読出しマージンの少ないものから消音されており、重要な発音が重要でない発音よりも先に停止させられてしまうようなケースもあった。
【０００９】
そこで、本発明は、音楽的に許容できない楽音の発音を防止できることを利点とする。
【課題を解決するための手段】
【００１０】
態様の一例では、第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を実行する第１プロセッサと、第２記憶手段内の複数の波形バッファから複数の波形データを読み出す読出し処理を実行し、読出し処理により読み出した複数の波形データそれぞれに基づく発音を同時に実行させる第２プロセッサと、を備えた電子楽器であって、第１プロセッサ及び第２プロセッサのいずれかが、複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、第１プロセッサが転送処理により複数の波形データを転送する複数の波形バッファ内の各転送位置と、第２プロセッサが読出し処理により複数の波形データを読み出す複数の波形バッファ内の各読出し位置と、から得られる各差分値が、閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、特定処理により特定された閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理と、を実行する。
【発明の効果】
【００１１】
本発明によれば、音楽的に許容できない楽音の発音を防止できる。
【図面の簡単な説明】
【００１２】
【図１】本発明による電子鍵盤楽器の一実施形態の外観図である。
【図２】電子鍵盤楽器の一実施形態のハードウェア例を示す図である。
【図３】音源ＬＳＩのブロックである。
【図４】「フラッシュメモリ音色波形ディレクトリ」のデータ例を示す図である。
【図５】「ＲＡＭ波形バッファディレクトリ」のデータ例を示す図である。
【図６】大容量フラッシュメモリ上の音色波形領域からＲＡＭ上の波形バッファへの音色波形転送動作及びリングバッファの動作の説明図である。
【図７】ループ波形転送動作の説明図である。
【図８】波形読出しマージンの説明図である。
【図９】メインルーチンの処理例を示すフローチャートである。
【図１０】初期化処理、音色選択処理、及び離鍵処理の詳細例を示すフローチャートである。
【図１１】押鍵処理の詳細例を示すフローチャートである。
【図１２】波形転送管理処理の例を示すフローチャート（その１）である。
【図１３】波形転送管理処理の例を示すフローチャート（その２）である。
【図１４】波形読出し、波形バッファ転送処理及び音源イベント処理の例を示すフローチャートである。
【図１５】音源定期処理及びｒｐ更新処理の詳細例を示すフローチャートである。
【図１６】マージン確認処理の詳細例を示すフローチャートである。
【図１７】転送速度確認処理、波形転送優先順位確認処理、及び発音時のボイス優先度確認処理の例を示すフローチャートである。
【図１８】最も優先度が低いボイスのミュート処理の詳細例を示すフローチャート（その１）である。
【図１９】最も優先度が低いボイスのミュート処理の詳細例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。本実施形態は、例えば電子鍵盤楽器に適用される、音高（鍵域）や音量（ベロシティ：打鍵の速さ）などの演奏情報によって音色が変化するのを再現するために、例えば大容量フラッシュメモリ２０８である第１記憶手段の音色波形領域から例えばＲＡＭ２０４である第２記憶手段の波形バッファに、音高又は音量ごとの波形データ（以下これを「スプリット波形」と呼ぶ）を転送する楽音発生装置を対象とする。
【００１４】
図１は、本発明による電子鍵盤楽器の一実施形態の外観図である。本実施形態は、電子鍵盤楽器１００として実施される。電子鍵盤楽器１００は、演奏操作子としての複数の鍵からなる鍵盤１０１と、音色選択操作子としての音色選択を行うための音色選択ボタン１０２及び音色以外の各種機能選択を行う機能選択ボタン１０３からなるスイッチ・パネルと、ピッチベンドやトレモロ、ビブラート等の各種モジュレーション（演奏効果）を付加するベンダ／モジュレーション・ホイール１０４、音色や音色以外の各種設定情報を表示するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）１０５等を備える。また、電子鍵盤楽器１００は、特には図示しないが、演奏により生成された楽音を放音するスピーカを裏面部、側面部、又は背面部等に備える。
【００１５】
音色選択ボタン１０２は、図１に示されるように、ピアノ（図中「Ｐｉａｎｏ」）、エレクトリックピアノ（図中「Ｅ．ｐｉａｎｏ」）、オルガン（図中「Ｏｒｇａｎ」）、ギター（図中「Ｇｕｉｔａｒ）等の各種音色のカテゴリを選択するためのボタン群である。ユーザは、この音色選択ボタン１０２を押下することにより、例えば１６音色のうちのいずれかを選択することができる。
【００１６】
図２は、図１の電子鍵盤楽器１００の実施形態のハードウェア例を示す図である。図２の電子鍵盤楽器１００において、システム全体はバスコントローラ２０１によって制御されるバス２０２を中心に構成される。バスコントローラ２０１はバス２０２上のデータの流れを司るものであるが、その役割は、バス２０２に接続されたデバイスの優先順位のコントロールである。例えば、メモリコントローラ２０３を介してバス２０２に接続されるＲＡＭ２０４（第２記憶手段）は、ＣＰＵ２０５と音源ＬＳＩ２０６によって共有されているが、発音を行う音源ＬＳＩ２０６はデータの欠落が許されないために優先度が最も高く設定されており、必要に応じてＣＰＵ２０５のアクセスを制限する。
【００１７】
バス２０２には、ＣＰＵ２０５、音源ＬＳＩ２０６、フラッシュメモリコントローラ２０７、メモリコントローラ２０３、ＤＭＡ（ダイレクトメモリアクセス）コントローラ２０９、Ｉ／Ｏ（入出力）コントローラ２１０、Ｉ／Ｏコントローラ２１０を介して接続されるキー・スキャナ２１１とＬＣＤコントローラ２１２とＡ／Ｄ（アナログ／デジタル）コンバータ２１３が接続される。
【００１８】
ＣＰＵ２０５は、電子鍵盤楽器１００の全体の制御処理を実行する第１プロセッサである。音源ＬＳＩ２０６は、楽音発音専用の大規模集積回路である第２プロセッサである。
【００１９】
フラッシュメモリコントローラ２０７は、大容量フラッシュメモリ２０８（第１記憶手段）とバス２０２を接続するインタフェース回路である。大容量フラッシュメモリ２０８は、波形データ、制御プログラム、固定データ等格納する。
【００２０】
メモリコントローラ２０３は、ＲＡＭ２０４とバス２０２を接続するインタフェース回路である。ＲＡＭ２０４は、波形データ、制御プログラム、データを必要に応じて配置する。ＲＡＭ２０４はまた、ＣＰＵ２０５や音源ＬＳＩ２０６に内蔵されるＤＳＰ（デジタルシグナルプロセッサ）のワーク領域としても使用される。
【００２１】
Ｉ／Ｏコントローラ２１０は、バス２０２と、図１の鍵盤１０１、音色選択ボタン１０２、機能選択ボタン１０３、ベンダ／モジュレーション・ホイール１０４、又はＬＣＤ１０５等の周辺デバイスとを接続するインタフェース回路である。Ｉ／Ｏコントローラ２１０に接続されるキー・スキャナ２１１は、図１の鍵盤１０１や音色選択ボタン１０２又は機能選択ボタン１０３等のスイッチ・パネルの状態を走査して、その走査結果をＩ／Ｏコントローラ２１０及びバス２０２を介してＣＰＵ２０５に通知する。Ｉ／Ｏコントローラ２１０に接続されるＬＣＤコントローラ２１２は、図１のＬＣＤ１０５のデバイスをコントロールする。Ａ／Ｄコンバータ２１３は、図１のベンダ／モジュレーション・ホイール１０４の走査位置を検出する。
【００２２】
ＤＭＡコントローラ２０９は、大容量フラッシュメモリ２０８とＲＡＭ２０４間のＤＭＡ転送を制御する。
【００２３】
図３は、音源ＬＳＩ２０６のブロック図である。音源ＬＳＩ２０６は、波形発生器３０１、バスインタフェース３０２、ＤＳＰ３０３、及びミキサ３０４を含む。波形発生器３０１は、図２のＲＡＭ２０４から波形データ読み出して楽音波形として発生する＃０から＃２５５までの２５６組の発振器である波形読出し装置３０５を具備する。バスインタフェース３０２は、バス２０２と、波形発生器３０１、ＤＳＰ３０３、及びミキサ３０４との接続を行うバスインタフェース回路であり、これら各部と図２のＣＰＵ２０５又はＲＡＭ２０４との通信を司る。ＤＳＰ３０３は、楽音信号に音響効果をもたらすデジタル信号処理回路である。ミキサ３０４は、波形発生器３０１が出力する楽音信号を混合したり、ＤＳＰ３０３に送ったり、ＤＳＰ３０３からの音響信号を受け取ったりすることで全体の楽音信号の流れを制御し、外部に出力する。ミキサ３０４からのデジタル楽音信号は、図２のＤ／Ａコンバータ２１４でアナログ楽音信号に変換される。このアナログ楽音信号は、アンプ２１５で増幅された後に、アナログ楽音出力信号として出力される。
【００２４】
次に、図２の大容量フラッシュメモリ２０８は、ＮＡＮＤ型フラッシュメモリなどの、大容量で安価なメモリデバイスである。なお、この大容量フラッシュメモリ２０８の代わりに、ハードディスク記憶装置や、ネットワーク上又はクラウド上のディスク装置が使用されてもよい。大容量フラッシュメモリ２０８には、主に以下のようなデータが格納されている。
・全ての音色の波形データ
・全ての音色のパラメータデータ
・ＣＰＵ２０５やＤＳＰ３０３が実行するプログラム、プログラムの使用データ
・音楽データ
・ユーザの設定データ
波形データは例えば、１ワード長が１６ビットのリニアＰＣＭフォーマットデータである。
【００２５】
前述した大容量フラッシュメモリ２０８の内容は、ＣＰＵ２０５からは任意のアドレスへのアクセスが可能であるが、音源ＬＳＩ２０６からはアクセスすることができないので、大容量フラッシュメモリ２０８中の波形データをＲＡＭ２０４に転送する必要がある。しかしながら、ＲＡＭ２０４の記憶容量は大容量フラッシュメモリ２０８よりも小さいために、全てのデータをＲＡＭ２０４中の発音チャネル毎のバッファ領域に転送することはできない。従って、ＲＡＭ２０４の記憶内容は必要に応じて逐次入れ替える必要がある。入替えが必要なデータの中で特に本実施形態が対象とするものは波形データであるが、波形データの制御の詳細については後述する。
【００２６】
図１から図３に示す本実施形態の動作の概要について、以下に説明する。まず本実施例では、演奏者が図１の音色選択ボタン１０２を押下することで図１に示される１６音色のうちのいずれかを選択することができる。各音色は、それぞれ１音色当たり最大３２種類の波形が用いられ、波形データは大容量フラッシュメモリ２０８に格納されている。１音色の音域（キー番号）とベロシティ域が２次元的に分割され、それぞれのスプリット(分割)エリアに、上述の最大３２個の波形が割り当てられている。即ち、押鍵時の速さ(ベロシティ)とキー番号（鍵盤１０１の番号）の２つのファクタから、読み出されるべき波形が１つ決定される、という制御が実施される。
【００２７】
図４は、「フラッシュメモリ音色波形ディレクトリ」のデータ例を示す図である。フラッシュメモリ音色波形ディレクトリは、大容量フラッシュメモリ２０８上に格納されている全ての波形データの情報をまとめたテーブルである。具体的には、このテーブルは、「音色番号」及び「音色内波形番号」で決まる各音色の各波形それぞれが用いられる鍵域を示す「最低キー番号」と「最高キー番号」（図４の横軸）、前記各波形それぞれが用いられるベロシティ域情報である「最低ベロシティ」と「最高ベロシティ」（図４の縦軸）、実際に大容量フラッシュメモリ２０８のどのアドレスに配置されているかを示す「波形領域先頭からのアドレス」、波形の長さを示す「波形サイズ」、読出しに使用される「スタートアドレス」、「ループアドレス」、及び「エンドアドレス」の情報をまとめたテーブルである。このテーブルは、電源投入時に、ＲＡＭ２０４上に展開される。
【００２８】
図５は、「ＲＡＭ波形バッファディレクトリ」のデータ例を示す図である。ＲＡＭ波形バッファディレクトリは、ＲＡＭ２０４上のボイス(発振器)チャネル毎の波形バッファのための情報を保持するテーブルである。具体的には、このテーブルには、ボイスの現在の状況を表す「ボイスステータス」、読み出されるべき波形の３つのアドレス情報である「波形バッファスタートアドレス」と「波形バッファループアドレス」と「波形バッファエンドアドレス」、ＣＰＵ２０５による大容量フラッシュメモリ２０８上の現在の転送波形の読出しアドレスである「転送データポインタ」、ＣＰＵ２０５によるＲＡＭ２０４への転送書込みアドレスである「書込みポインタ」、音源ＬＳＩ２０６によるＲＡＭ２０４上の現在の読出しアドレスである「読出しポインタ」、そして、書込みポインタと読出しポインタ最新値との差分である「波形読出しマージン」が保持される。
【００２９】
図６（ａ）は、大容量フラッシュメモリ２０８上の音色波形領域からＲＡＭ２０４上の波形バッファへの音色波形転送動作の説明図である。大容量フラッシュメモリ２０８上には全ての音色の波形データが格納されており、そのサイズは波形毎に異なる。ＲＡＭ２０４上には波形バッファが発音ボイスチャネル分確保されている。これらのサイズは一定であり、実施例では１６ＫＢ（キロバイト）である。
【００３０】
ここに読み出すべき波形のサイズはいずれも１６ＫＢを超えるものであり、全てを波形バッファに転送することは出来ない。そのため、図６（ｂ）に示されるように、波形バッファｖはリングバッファの形式を取り、音源ＬＳＩ２０６は、発音開始から発音終了まで単純に、波形バッファｖの区間を繰り返し読み続ける。そのため、ＣＰＵ２０５は、自身が更新する書込みポインタｗｐ［ｖ］（図５参照）が、音源ＬＳＩ２０６が更新する読出しポインタｒｐ［ｖ］（図５参照）を追い越さないように制御しながら、大容量フラッシュメモリ２０８の音色波形領域である波形メモリｗからＲＡＭ２０４上の波形バッファｖの書込みポインタｗｐ［ｖ］が示すアドレスに、音源ＬＳＩ２０６が読むままに波形データを転送し続ける。
【００３１】
図７は、ループ波形転送動作の説明図である。波形読出し式の電子楽器では有限の波形データの読出しを無限に継続させるため、波形データの一区間を繰り返し読み出すループという手法を用いるのが一般的である。具体的には、図７に示されるように、大容量フラッシュメモリ２０８上の波形メモリｗにおいて、波形転送時の読出しアドレスを示す転送データポインタＴＰ［ｖ］ポインタ（図５参照）は、スタートアドレスから開始し、エンドアドレスに達すると、それより手前に設定されたループアドレスに不連続に戻り、エンドアドレスに達すると再度ループアドレスに戻る、という動作を無限に繰り返す。本実施例では、図７に示されるように、ＣＰＵ２０５が、大容量フラッシュメモリ２０８からの波形データの上記ループ読出しを実行しながら、読み出された波形データをそのまま順次、リングバッファである波形バッファｖに書き込んでゆく。このときの、ＣＰＵ２０５による上記波形データ転送における波形メモリｗ上の読出しアドレスは転送データポインタｔｐ［ｖ］であり、ＣＰＵ２０５による波形バッファｖへの書込みアドレスは書込みポインタｗｐ［ｖ］であり、音源ＬＳＩ２０６による波形バッファｖからの読出しアドレスは読出しポインタｒｐ［ｖ］である。
【００３２】
図８は、波形読出しマージンの説明図である。本実施形態では、音源ＬＳＩ２０６が再生のために波形バッファｖから波形データを読み出すアドレスを示す読出しポインタｒｐ［ｖ］の進捗速度よりも、ＣＰＵ２０５が大容量フラッシュメモリ２０８上の波形メモリエリアから再生すべき波形データアクセスを転送して波形バッファｖに書き込むアドレスを示す書込みポインタｗｐ［ｖ］の進捗速度の方が大幅に速いという条件が必要である。しかし、構造的に、音源ＬＳＩ２０６の再生ピッチが高くなると読み出し速度が増加し、同時発音数が増加すると１ボイスあたりの波形転送の平均速度は低下する。これらの悪条件が重なれば、波形バッファｖにおける書込みポインタｗｐ［ｖ］が読出しポインタｒｐ［ｖ］を追い越さないようにするどころか、書込みポインタｗｐ［ｖ］が一周を回ってきた読出しポインタｒｐ［ｖ］に追いつかれる可能性もありうる。もしそのようなことが起これば、音源ＬＳＩ２０６が読み出す波形は、突然不連続に過去のデータに戻ってしまい、ノイズが発生することになる。これは音楽的に許容できるものではない。
【００３３】
そこで、本実施例では、図８に示されるように、波形バッファｖにおける読出しポインタｒｐ［ｖ］が、波形データを充当しない状態でどれだけ読めるかというデータのワード数(アドレス)、即ち、書込みポインタｗｐ［ｖ］の値と読出しポインタｒｐ［ｖ］の値の差分が、波形読出しマージンとして管理される。本実施形態では、この波形読出しマージンが所定の値以下に達した場合、その楽音を発生しているボイスの発音チャネルに対してミュート処理が実行され、その処理の後に発音が停止した時点でそのボイスチャネルの波形バッファｖからの読出しが中止されることにより、ノイズの発生を防止することができる。ここで、「ミュート処理」とは、発音中の楽音に対して、短い時間内で穏やかに消音させる処理のことをいう。
【００３４】
本実施例では、その波形読出しマージンの値は、固定値ではなく再生ピッチが考慮されて、原音ピッチによる再生時には１Ｋワード未満、１オクターブ上のピッチでの再生時には２Ｋワード未満、１オクターブ下のピッチでの再生時には５１２ワード未満になったら、ダンプ処理の実行が決定される。
【００３５】
ダンプ処理の速度は、このまま波形が補充されずに読み進んだとしても、すでに波形バッファｖに転送された読込みマージン分の波形データが読み切られる前にミュートできるだけの速度であればよい。その速度は現在の再生ピッチに依存する。
【００３６】
また、本実施形態の音源ＬＳＩ２０６は、各ボイスの発音チャネルの現在の波形読出しアドレスは、ＣＰＵ２０５が逐次ポーリングに依って読み続けるのではなく、読出しポインタｒｐ［ｖ］が前述の条件を満たすアドレスまで進んだことを割込みによって知るように設定することができるので、その機能を使用する。
【００３７】
以上、本実施形態の基本的な動作について説明したが、次に、本実施形態の図２のＣＰＵ２０５の特徴的な動作について、以下に説明する。
【００３８】
まず、本実施形態におけるＣＰＵ２０５の第１の特徴的動作について説明する。図８で説明した波形読出しマージンに関し、ＣＰＵ２０５はまず、ＲＡＭ２０４上の波形バッファｖ毎に、その波形バッファｖの書込みポインタｗｐ［ｖ］と読出しポインタｒｐ［ｖ］を用いて、下記（１）式で示される演算により、波形読出しマージンｒｍ［ｖ］（図５参照）を算出する。
【００３９】
ｒｍ［ｖ］＝ｗｐ［ｖ］−ｒｐ［ｖ］  ・・・（１）
【００４０】
次に、ＣＰＵ２０５は、図３の＃０から＃２５５の波形読出し装置３０５に対応する発音チャネルｎ（０≦ｎ≦２５５）毎に、発音チャネルｎに対応するＲＡＭ２０４内の波形バッファｖについて（１）式で示される演算で算出した波形読出しマージンｒｍ［ｖ］の値を、下記（２）式で示される演算で算出されるマージン閾値ｍ［ｎ］と比較する。
【００４１】
ｍ［ｎ］＝Ｆ×Ｔ×Ｗ×ｓ［ｎ］  ・・・（２）
【００４２】
ここで、Ｆは、波形データのサンプリング周波数であり、例えば４４．１ＫＨｚ（キロヘルツ）である。ここで、１サンプルは、例えば１バイトである。また、Ｔは、発音チャネルｎ（０≦ｎ≦２５５）全体の転送マージン閾値であり、大容量フラッシュメモリ２０８内の波形メモリｗからＲＡＭ２０４内の波形バッファｖへの転送が停止しても再生が可能な必要最低時間を示し、例えば０．００２５秒（２．５ミリ秒）である。また、Ｗは、１サンプルを、波形バッファｖに対する書込み又は読出しの単位であるワードで表した数であり、例えば０．５ワード／サンプル（バイト）である。更に、ｓ［ｎ］（０≦ｎ≦２５５）は、発音チャネルｎ（０≦ｎ≦２５５）の相対的な再生速度であり、例えば下記のように設定される。
【００４３】
波形データの原音（録音時）と同じ音高で再生する場合：ｓ［ｎ］＝１．０
原音に対して１オクターブ高い音高で再生する場合：ｓ［ｎ］＝２．０
原音に対して１オクターブ低い音高で再生する場合：ｓ［ｎ］＝０．５
発音停止状態：ｓ［ｎ］＝０
【００４４】
なお、原音に対する音高の比は、上述の±１オクターブに限られるものではなく、実数値を取り得る。その場合には、再生速度ｓ［ｎ］も、その実数値に応じた比の値となる。
【００４５】
以上より、（２）式において、まずＦ×Ｔは、大容量フラッシュメモリ２０８内の波形メモリｗからＲＡＭ２０４内の波形バッファｖへの転送が停止しても再生が可能な必要最低の時間を波形データのサンプル数に換算した値となる。更に、Ｆ×Ｔ／Ｗは、その必要最低のサンプル数を、波形データの読み書きの単位である必要最低のワード数に換算した値となる。そして、（２）式右辺のＦ×Ｔ／Ｗ×ｓ［ｎ］は、上記必要最低のワード数を、発音チャネルｎの波形バッファｖにおける波形データの相対的な再生速度の比に応じて可変させた値となる。
【００４６】
続いて、ＣＰＵ２０５は、或る発音チャネルｎについて、波形読出しマージンｒｍ［ｖ］の値が（２）式の演算で算出されるマージン閾値ｍ［ｎ］を下回ったと判定すると、音源ＬＳＩ２０６内の発音チャネルｎに対応する波形読出し装置３０５（図３参照）に対して、その発音チャネルｎのミュートを指示する。
【００４７】
ＣＰＵ２０５が実行する以上の本実施形態の第１の特徴的な動作において、波形データの再生速度が速ければ、すなわち再生される楽音の音高が原音に比較して高ければ、（２）式で算出されるマージン閾値ｍ［ｎ］は、標準的なマージン閾値よりも大きな値になる。この場合には、波形読出しマージンｒｍ［ｖ］に対する許容範囲がある程度大きくても、読出しポインタｒｐ［ｖ］が書込みポインタｗｐ［ｖ］に追いつく速度が速くなるため、マージン閾値ｍ［ｎ］が標準よりも大きい値でミュート判断がなされる。これにより、ＣＰＵ２０５が実行する本実施形態の第１の特徴的な動作では、波形データの再生速度が速い場合、すなわち再生される楽音の音高が原音に比較して高い場合であっても、ミュートを行う間のマージンを十分に確保することができ、音楽的に許容できない楽音の発音を防止することが可能となる。
【００４８】
一方、ＣＰＵ２０５が実行する以上の本実施形態の第１の特徴的な動作において、波形データの再生速度が遅ければ、すなわち再生される楽音の音高が原音に比較して低ければ、（２）式で算出されるマージン閾値ｍ［ｎ］は、標準的なマージン閾値よりも小さな値になる。この場合には、波形読出しマージンｒｍ［ｖ］に対する許容範囲が標準よりも小さくても、読出しポインタｒｐ［ｖ］が書込みポインタｗｐ［ｖ］に追いつく速度が遅くなるため、マージン閾値ｍ［ｎ］が標準よりも小さな値でミュート判断がなされる。これにより、ＣＰＵ２０５が実行する本実施形態の第１の特徴的な動作では、波形データの再生速度が遅い場合、すなわち再生される楽音の音高が原音に比較して低い場合には、読出し速度が遅い分だけミュートを行う間のマージンを小さくすることができ、波形データの転送効率を向上させることができると共に、音楽的に許容できない楽音の発音を防止することが可能となる。
【００４９】
本実施形態におけるＣＰＵ２０５の第２の特徴的動作について説明する。本実施形態では、ＣＰＵ２０５は、発音チャネルｎ（０≦ｎ≦２５５）の波形バッファｖのうち、現在バッファリングされている波形データの残り再生時間が最も短いものを探索し、探索した波形バッファｖに対して優先的に、大容量フラッシュメモリ２０８上の波形メモリｗから波形データを転送していく。
【００５０】
具体的には、ＣＰＵ２０５は、発音チャネルｎ（０≦ｎ≦２５５）毎に、その発音チャネルｎの波形バッファｖについて、書込みポインタｗｐ［ｖ］と、読出しポインタｒｐ［ｖ］、及び前述した（２）式で示される演算により算出したマージン閾値ｍ［ｎ］とから、その発音チャネルｎの再生残り時間を算出する。
【００５１】
次に、ＣＰＵ２０５は、算出した再生残り時間の短い順に、発音チャネルｎ（０≦ｎ≦２５５）をソートする。そして、ＣＰＵ２０５は、波形転送処理において、ソートした発音チャネルｎから順に、大容量フラッシュメモリ２０８上の波形メモリｗからＲＡＭ２０４上の波形バッファｖへの転送処理を実行する。なお、オーバーヘッド軽減のために、ＣＰＵ２０５は、１回の転送処理で、連続して所定の最小単位、例えば１キロバイトの波形データは必ず、転送を実行する。
【００５２】
以上のようにして、ＣＰＵ２０５が実行する本実施形態の第２の特徴的な動作では、波形バッファｖにおける蓄積量を時間換算して、最も切迫した波形バッファｖから優先的に、波形転送が行われる。このようにして、最小単位の転送が繰り返されていくうちに、発音チャンネルｎ間の再生時間の偏差がなくなってゆく。これにより、転送が間に合わなくなるリスクが発音チャネルｎ（０≦ｎ≦２５５）間で平均化され、不要な消音が発生することがほとんどなくなる。また、離鍵により途中で波形読出し（発音）が不要になった発音チャネルｎに対する転送は無駄になるが、その転送ロスの期待値も平均化されることで、大きな転送ロスが防げて、安定した波形転送を実現することが可能となる。
【００５３】
本実施形態におけるＣＰＵ２０５の第３の特徴的動作について説明する。本実施形態では、ＣＰＵ２０５は、下記（３）式で示される演算により、図３の＃０から＃２５５の全ての波形読出し装置３０５に対応する全ての発音チャネルｎ（０≦ｎ≦２５５）で必要とされる転送速度（以下「必要転送速度」と呼ぶ）を算出する。なお、Ｆ、Ｗ、及びｓ［ｎ］＝ｓ［０］〜ｓ［２５５］の意味は、前述した通りである。
【００５４】
Ｆ×Ｗ×（ｓ［０］＋ｓ［１］＋・・・＋ｓ［２５５］）  ・・・（３）
【００５５】
ＣＰＵ２０５は、（３）式の演算で算出した必要転送速度の値が、予め設定されているシステムの転送能力Ａを超えているか否かを判定し、超えたと判定した場合には、ＣＰＵ２０５は、音源ＬＳＩ２０６内の選択したボイスに対応する発音チャネルの波形読出し装置３０５（図３）に対して、ミュート処理を指示する。具体的には、ＣＰＵ２０５は、発音開始順番や発音レベルなどから得られる各発音チャネルｎ（０≦ｎ≦２５５）に対する優先度中で最も優先度の低いボイスの発音チャネルに対応する音源ＬＳＩ２０６内の波形読出し装置３０５に対してミュート処理を指示する。
【００５６】
ＣＰＵ２０５は、（３）式の演算を再度実行して、必要転送速度を再度取得し、波形転送能力Ａとの比較を行い、必要転送速度が波形転送能力Ａ以内になるまで同様の処理を繰り返し実行する。ＣＰＵ２０５は、必要転送速度が波形転送能Ａ以内になったと判定した場合には、上述のミュート処理を終了する。
【００５７】
以上のようにして、ＣＰＵ２０５が実行する本実施形態の第３の特徴的な動作では、システムの最大波形転送能力と音源ＬＳＩ２０６による波形データの要求量（＝必要転送速度）とが常に比較され、現在の状態が続くと転送が間に合わないと判断された時は、音楽的に影響が少ないものから発音が停止される。これにより、同じ発音チャネル数の発音を停止するにしても、音楽的ダメージをより少ないものにすることが可能になる。
【００５８】
上述の動作を実現する本実施形態の具体的な処理例について、以下に説明する。図９は、図２のＣＰＵ２０５が実行する制御処理のメインルーチンの処理例を示すフローチャートである。図１の電子鍵盤楽器１００において、機能選択ボタン１０３により装置電源がパワーオンされると、ＣＰＵ２０５は、図９のフローチャートで例示されるメインルーチンを起動し、まず装置各部を初期化する初期化処理を実行する（ステップＳ９０１）。ステップＳ９０１の初期化処理が完了すると、ユーザが図１の音色選択ボタン１０２又は機能選択ボタン１０３の操作状態を取り込むスイッチ処理（ステップＳ９０２）、ステップＳ９０２の処理の結果に基づく音色選択ボタン１０２が操作された際の音色選択イベントの検出及び音色選択処理（ステップＳ９０３→Ｓ９０４）、ユーザが図１の鍵盤１０１を弾いた際の押鍵イベントや離鍵イベントを取り込む鍵盤処理（ステップＳ９０５）、ステップＳ９０５の処理の結果に基づく押鍵イベントの検出及び押鍵処理（ステップＳ９０６→Ｓ９０７）、ステップＳ９０５の処理の結果に基づく離鍵イベントの検出及び離鍵処理（ステップＳ９０８→Ｓ９０９）、音源ＬＳＩ２０６からのイベントの処理を行う音源イベント処理（ステップＳ９１０）、音源ＬＳＩ２０６に対して一定時間毎の処理を行う音源定期処理（ステップＳ９１１）が、繰り返し実行される。
【００５９】
図１０（ａ）は、図９のステップＳ９０１の初期化処理の詳細例を示すフローチャートである。まず、ＣＰＵ２０５は、大容量フラッシュメモリ２０８からフラッシュメモリ音色波形ディレクトリ（図４参照）のテーブルデータを、ＲＡＭ２０４上の指定されたアドレスに転送する（ステップＳ１００１）。
【００６０】
次に、ステップＳ１００２とステップＳ１００４の繰返し制御処理によって、ボイス数（発音チャネルｎ、０≦ｎ≦２５５）分のループ処理が実行される。このループ処理中のステップＳ１００３において、ボイスステータスｖｓ［ｖ］、ボイス番号ｖに対応する波形バッファｖの波形バッファスタートアドレスｓａ［ｖ］、波形バッファループアドレスｌａ［ｖ］、波形バッファエンドアドレスｅａ［ｖ］が初期化される。
【００６１】
次に音色波形領域ｗから波形バッファｖへの波形の転送を管理するための転送要求カウンタ、転送状態フラグ、転送要求バッファ（リンク構造）が初期化される（ステップＳ１００５）。転送要求カウンタは、転送中のボイスが現在いくつあるか管理するものであり、転送状態フラグは、音色波形領域から波形バッファへの転送中か否かを判断するフラグであり、転送要求バッファは次にどのボイスに対して音色波形領域から波形バッファへの波形転送を行うかを管理するためのバッファである。
【００６２】
図１０（ｂ）は、図９のステップＳ９０４の音色選択処理の詳細例を示すフローチャートである。ＣＰＵ２０５は、押鍵処理などで使用するために、図１の音色選択ボタン１０２の操作により指定された音色番号がＲＡＭ２０４内のワーク領域に保存しておく（ステップＳ１０１０）。
【００６３】
図１１は、図９のステップＳ９０７の押鍵処理の詳細例を示すフローチャートである。ＣＰＵ２０５は、鍵盤が弾かれた際の押鍵による演奏情報（鍵盤位置、押された強さ）を、キー番号、ベロシティに変換し、これらに基づく制御処理を実行する。
【００６４】
ＣＰＵ２０５は、最初に、この押鍵での発音にどのボイスを使用するかを決定するボイスアサインを実行する（ステップＳ１１０１）。ＣＰＵ２０５は、ＲＡＭ２０４に記憶されている図５に例示されるＲＡＭ波形バッファディレクトリにおいて、ボイスステータスが不使用(ｖｓ［ｖ］＝０)のボイス番号のボイスから優先的にアサインする。ＣＰＵ２０５は、ボイスステータスが発音中（ｖｓ「ｖ」＝１）又は減衰中（ｖｓ「ｖ」＝２）のボイスをアサインしなくてはならないとき（ステップＳ１１０２の判定がＹＥＳの場合）は、ミュート処理を実行する（ステップＳ１１０３）。
【００６５】
次に、ＣＰＵ２０５は、キー番号、ベロシティ、現在の音色番号から、音色波形領域から波形バッファへ転送を行うべき波形番号ｗを取得する（ステップＳ１１０４）。
【００６６】
次に、ＣＰＵ２０５は、キー番号、波形番号ｗから得られる波形情報から、再生ピッチを計算する（ステップＳ１１０５）。続いて、ＣＰＵ２０５は、算出した再生ピッチから、前述した（２）式で示される演算により、マージン閾値ｍ［ｎ］を算出する（ステップＳ１１０６）。
【００６７】
次に、ＣＰＵ２０５は、読出しポインタｒｐ［ｖ］の更新処理に必要な、読出しポインタｒｐ［ｖ］に周期的に加算するオフセット値を計算する（ステップＳ１１０７）。
【００６８】
次に、ＣＰＵ２０５は、読出しポインタｒｐ［ｖ］及び書込みポインタｗｐ［ｖ］を０に設定する（ステップＳ１１０８）。
【００６９】
その後、ＣＰＵ２０５は、音色波形領域から波形バッファへの波形転送を行うために、波形転送管理処理に対して新規転送要求を発行し、波形転送管理処理での処理の終了を待つ（ステップＳ１１０９）。
【００７０】
ＣＰＵ２０５は、前述した（１）式で示される演算を実行することにより、現在の波形読出しマージンｒｍ［ｖ］を計算し（ステップＳ１１１０）、ステップＳ１１０９の波形転送管理処理で波形バッファに波形データの転送が開始されて、上記現在の波形読出しマージンｒｍ［ｖ］が所定値を上回ったか否かを判定する（ステップＳ１１１０→Ｓ１１１１の判定がＮＯ→Ｓ１１１０の繰返し）。これは、（１）式の関係より、書込みポインタｗｐ［ｖ］（＞０）が読出しポインタｒｐ［ｖ］（＝０）から十分に離れるまで、タイミングを取る処理である。
【００７１】
ＣＰＵ２０５は、現在の波形読出しマージンｒｍ［ｖ］が所定値を上回った時点（ステップＳ１１１１の判定がＹＥＳとなった時点）で、波形読出しの開始、即ち発音の開始を行い、ボイスステータス（図５参照）を発音中（ｖｓ「ｖ」＝１）にする（ステップＳ１１１１→Ｓ１１１２）。その後、ＣＰＵ２０５は、図１１のフローチャートで例示される図９のステップＳ９０７の押鍵処理を終了する。
【００７２】
図１０（ｃ）は、図９のステップＳ９０９の離鍵処理の詳細例を示すフローチャートである。ＣＰＵ２０５は、鍵盤を弾いた際の離鍵による演奏情報を（鍵盤位置）をキー番号に変換し、ピッチ、フィルタ、アンプのエンベロープ設定等に基づくリリース状態への移行処理を実行する（ステップＳ１０２０）。ステップＳ１０２０の処理の後、ＣＰＵ２０５は、図１０（ｃ）のフローチャートで例示される図９のステップＳ９０９の離鍵処理を終了する。
【００７３】
図１２及び図１３は、波形転送管理処理を示すフローチャートである。ＣＰＵ２０５は、図１２のステップＳ１２０１、Ｓ１２０２、及びＳ１２０３でそれぞれ、波形転送管理処理に対して発行されたイベントが、新規転送要求、転送要求、転送終了、又は転送停止の何れであるかを判定し、それぞれのイベントに対応した処理を実行する。
【００７４】
新規転送要求イベントが発行された場合（図１１のステップＳ１１０９参照）、図１２のステップＳ１２０１新規転送要求イベントが判定されて、図１３のステップＳ１２１３の処理が実行される。ステップＳ１２１３で、ＣＰＵ２０５は、転送状態フラグを確認する。
【００７５】
ステップＳ１２１３で転送状態フラグが転送終了待ちであると判定された場合は、別のボイスに対して音色波形領域から波形バッファへの波形転送を行っている最中であるので、ＣＰＵ２０５は、別のボイスの転送終了イベントからの転送要求イベントで処理されるように、転送要求バッファの先頭に該当ボイスを設定する（図１３のステップＳ１２１９）。その後、ＣＰＵ２０５は、図１２及び図１３のフローチャートで例示される波形転送管理処理を終了する。
【００７６】
ステップＳ１２１３で転送状態フラグが待機状態であると判定された場合は、ＣＰＵ２０５はまず、該当ボイス番号に対して、転送１回あたりの読出しサイズ（ここでは２ページ）を指定し、後述する波形読出し、波形バッファ転送処理（図１４（ａ））に、転送要求を発行する（図１３のステップＳ１２１４）。
【００７７】
次に、ＣＰＵ２０５は、転送状態フラグを転送終了待ちに設定し（図１３のステップＳ１２１５）、該当ボイスを転送要求バッファの最後尾に設定する（図１３のステップＳ１２１６）。
【００７８】
次に、ＣＰＵ２０５は、転送データポインタｔｐ［ｖ］を更新し（図１３のステップＳ１２１７）、転送要求バッファカウンタをインクリメントする（図１３のステップＳ１２１８）。その後、ＣＰＵ２０５は、図１２及び図１３のフローチャートで例示される波形転送管理処理を終了する。
【００７９】
後述する波形読出し、波形バッファ転送処理で指定サイズ分の波形データの転送が終了し波形転送管理処理に対して転送終了の要求イベントが発行された場合（図１４（ａ）のステップＳ１４０７）、図１２のステップＳ１２０３で転送終了の要求イベントが判定されて、図１２のステップＳ１２０６の処理が実行される。ステップＳ１２０６で、ＣＰＵ２０５は、転送要求バッファに転送待ちのボイスがあるか否か、即ち、転送要求バッファカウンタが０でないか０であるかを判定する。
【００８０】
ステップＳ１２０６の判定がＮＯならば、音色波形領域から波形バッファへの全ての転送が終了した状態（無音）なので、ＣＰＵ２０５はそのまま何もせずに、図１２及び図１３のフローチャートで例示される現在の波形転送管理処理を終了する。
【００８１】
ステップＳ１２０６の判定がＹＥＳならば、ＣＰＵ２０５は、次のボイスが処理されるよう波形転送管理処理に対して、転送要求イベントを発行し（ステップＳ１２０７）、図１２及び図１３のフローチャートで例示される現在の波形転送管理処理を終了する。
【００８２】
上述した図１２のステップＳ１２０７の処理により、波形転送管理処理に対して転送要求イベントが発行されると、図１２のステップＳ１２０２で上記転送要求イベントが判定されて、図１２のステップＳ１２０８の処理が実行される。ステップＳ１２０８で、ＣＰＵ２０５は、転送要求バッファの先頭のボイスについて転送処理を実行する。書込みポインタｗｐ［ｖ］と読出しポインタｒｐ［ｖ］を確認し、波形バッファｖへの転送を行うことによって、書込みポインタｗｐ［ｖ］が読出しポインタｒｐ［ｖ］を追い越してしまう場合は、そのボイスｖについては、転送要求バッファの最後尾に設定し、先頭から2番目のボイスに対して処理を行う。
【００８３】
次に、ＣＰＵ２０５は、該当ボイス番号に対して、転送１回あたりの読出しサイズ（こでは２ページ）を指定し、後述する波形読出し、波形バッファ転送処理（図１４（ａ））に、転送要求を発行する（図１２のステップＳ１２０９）。
【００８４】
次に、ＣＰＵ２０５は、転送状態フラグを転送終了待ちに設定し（図１２のステップＳ１２１０）、該当ボイスを転送要求バッファの最後尾に設定する（図１２のステップＳ１２１１）。
【００８５】
次に、ＣＰＵ２０５は、転送データポインタｔｐ［ｖ］を更新する（図１２のステップＳ１２１２）。その後、ＣＰＵ２０５は、図１２及び図１３のフローチャートで例示される波形転送管理処理を終了する。
【００８６】
後述する音源イベント処理（図１４（ｂ）のステップＳ１４１３）において波形転送管理処理に対して転送停止イベントが発行された場合、図１２のステップＳ１２０１、Ｓ１２０２、及びＳ１２０３の何れでも判定が行われず、ステップＳ１２０４が実行される。この場合、発音停止状態となり波形読出しは停止しているので、ＣＰＵ２０５は、転送要求バッファから該当ボイスを削除し、転送要求バッファカウンタをデクリメントする（ステップＳ１２０４）。その後、ＣＰＵ２０５は、図１２及び図１３のフローチャートで例示される波形転送管理処理を終了する。
【００８７】
図１４（ａ）は、波形読出し、波形バッファ転送処理を示すフローチャートである。このフローチャートの処理は、図１３のステップＳ１２１４又は図１２のステップＳ１２０９からの転送要求イベントにより起動される。
【００８８】
ＣＰＵ２０５は、ステップＳ１４０１とＳ１４０５のループ制御処理により、以下のステップＳ１４０２からＳ１４０４の一連の処理を、波形転送管理処理（図１３のステップＳ１２１４又は図１２のステップＳ１２０９）で指定された指定サイズ分繰り返し実行する。
【００８９】
まず、ステップＳ１４０２で、ＣＰＵ２０５は、転送データポインタｔｐ［ｖ］に基づいて、大容量フラッシュメモリ２０８の音色波形領域ｗからページ単位で波形データを読み込む。
【００９０】
次に、ステップＳ１４０３で、ＣＰＵ２０５は、波形バッファループアドレス及び波形バッファエンドアドレスを考慮し、ループ読出しの場合は、不要な部分は読み捨てる。
【００９１】
そして、ステップＳ１４０４で、ＣＰＵ２０５は、波形バッファｖの書込みポインタｗｐ［ｖ］に応じたアドレスに、ステップＳ１４０２及びＳ１４０３で音色波形領域ｗから読み出した波形データの書込みを行う。ＣＰＵ２０５は、書き込んだサイズ分、書込みポインタｗｐ［ｖ］を更新する。
【００９２】
次に、ＣＰＵ２０５は、転送状態フラグに待機状態を設定し（ステップＳ１４０６）、前述した波形転送管理処理に対して、転送終了イベントを発行する（ステップＳ１４０７）。その後、ＣＰＵ２０５は、図１４（ａ）のフローチャートで例示される波形読出し、波形バッファ転送処理を終了する。
【００９３】
図１４（ｂ）は、図９のステップＳ９１０の音源イベント処理の詳細例を示すフローチャートである。ＣＰＵ２０５は、図９のステップＳ９０９又は図１０（ｃ）の離鍵処理によってリリース状態に移行したボイスが、リリースレベルに到達した場合（ステップＳ１４１０の判定がＹＥＳの場合）、もしくは、ミュート処理によってボイスがミュートレベルに到達した場合（ステップＳ１４１１の判定がＹＥＳの場合）は、当該ボイスに対して、波形読出しの停止（発音終了）を行った後（ステップＳ１４１２）、前述した波形転送管理処理に対して転送停止イベントを発行する（ステップＳ１４１３）。その後、ＣＰＵ２０５は、図１４（ｂ）のフローチャートで例示される図９のステップＳ９１０の音源イベント処理を終了する。
【００９４】
図１５（ａ）は、図９のステップＳ９１１の音源定期処理の詳細例を示すフローチャトである。ＣＰＵ２０５は、図２のＡ／Ｄコンバータ２１３を介して、図１のベンダ／モジュレーション・ホイール１０４の操作によるピッチ変更を検出した場合（ステップＳ１５０１の判定がＹＥＳ）、ステップＳ１５０２とＳ１５０６の繰返し制御処理によりボイス数（発音チャネルｎ、０≦ｎ≦２５５）分、以下のステップＳ１５０３からＳ１５０５の一連の処理を繰り返し実行する。
【００９５】
まず、ＣＰＵ２０５は、ボイスステータスが不使用以外のボイスについて、ピッチ変更後の現在のボイスの再生ピッチから、前述した（２）式で示される演算により、マージン閾値ｍ［ｎ］を算出する（ステップＳ１５０３→Ｓ１５０４）。
【００９６】
続いて、ＣＰＵ２０５は、読出しポインタｒｐ［ｖ］の更新処理に必要な読出しポインタｒｐ［ｖ］に周期的に加算するオフセット値を再計算する（ステップＳ１５０５）。
【００９７】
ＣＰＵ２０５は、ボイスステータスが不使用のボイスについては、上記ステップＳ１５０４とＳ１５０５の処理はスキップする（ステップＳ１５０３→Ｓ１５０６）。
【００９８】
ＣＰＵ２０５は、ボイス数分の処理が終了後、夫々後述する、読出しポインタｒｐの更新処理（ステップＳ１５０７）、波形読出しマージン確認処理（ステップＳ１５０８）、転送速度確認処理（ステップＳ１５０９）、及び波形転送優先順位管理処理（ステップＳ１５１０）を実行し、図１５（ａ）のフローチャートで例示される図９のステップＳ９１１の音源定期処理を終了する。
【００９９】
図１５（ｂ）は、図１５（ａ）のステップＳ１５０７の読出しポインタｒｐ［ｖ］の更新処理（ｒｐ更新処理）の詳細例を示すフローチャートである。ＣＰＵ２０５は、ステップＳ１５１０とＳ１５１３の繰返し制御処理によってボイス数（発音チャネルｎ、０≦ｎ≦２５５）分、以下のステップＳ１５１１からＳ１５１４の一連の処理を繰り返し実行する。
【０１００】
まず、ＣＰＵ２０５は、ボイスステータスが不使用以外のボイスについて、読出しポインタｒｐ［ｖ］にオフセット値ｏｆｆｓｅｔを加算する（ステップＳ１５１１→Ｓ１５１２）。ＣＰＵ２０５は、ボイスステータスが不使用以外のボイスについては、ステップＳ１５１２の処理はスキップする。
【０１０１】
ＣＰＵ２０５は、ボイス数分の処理の終了後、図１５（ｂ）のフローチャートで例示される図１５（ａ）のステップＳ１５０７の読出しポインタｒｐ［ｖ］の更新処理（ｒｐ更新処理）を終了する。
【０１０２】
図１６は、図１５（ａ）のステップＳ１５０８のマージン確認処理の詳細例を示すフローチャートである。ここでは、前述した本実施形態の第１の特徴的動作が実現される。
【０１０３】
ＣＰＵ２０５は、ステップＳ１６０１とＳ１６０６の繰返し制御処理によってボイス数（発音チャネルｎ、０≦ｎ≦２５５）分、以下のステップＳ１６０２からＳ１６０５の一連の処理を繰り返し実行する。
【０１０４】
まず、ＣＰＵ２０５は、ボイスステータスが発音中のボイスについて、前述した（１）式で示される演算により、書込みポインタｗｐ［ｖ］と読出しポインタｒｐ［ｖ］の差分から、波形読出しマージンｒｍ［ｖ］を算出する（ステップＳ１６０２→Ｓ１６０３）。
【０１０５】
次に、ＣＰＵ２０５は、ステップＳ１６０３において算出した波形読出しマージンｒｍ［ｖ］を、図１１のステップＳ１１０６又は図１５のステップS１５０４で算出されたマージン閾値ｍ［ｎ］と比較する（ステップＳ１６０４）。
【０１０６】
ＣＰＵ２０５は、波形読出しマージンｒｍ［ｖ］のほうがマージン閾値ｍ［ｎ］よりも小さければ、音源ＬＳＩ２０６が発音処理中の該当するボイスの発音チャネルｎに対し、予め指定されたレイトを用いて、ミュート処理を指示する（ステップＳ１６０５）。ＣＰＵ２０５は、波形読出しマージンｒｍ［ｖ］処理の値がマージン閾値ｍ［ｎ］以上であれば、ステップＳ１６０５の処理はスキップする。
【０１０７】
ＣＰＵ２０５は、ボイス数分の処理が終了後、図１６のフローチャートで例示される図１５（ａ）のステップＳ１５０８のマージン確認処理を終了する（ステップＳ１６０６→終了）。
【０１０８】
図１７（ａ）は、図１５（ａ）のステップＳ１５０９の転送速度確認処理の詳細例を示すフローチャートである。ここでは、前述した本実施形態の第３の特徴的動作が実現される。
【０１０９】
ＣＰＵ２０５は、前述した（３）式で示される演算により、図３の＃０から＃２５５の全ての波形読出し装置３０５に対応する全ての発音チャネルｎ（０≦ｎ≦２５５）で必要とされる必要転送速度を算出する（ステップＳ１７０１）。
【０１１０】
ＣＰＵ２０５は、ステップＳ１７０１で算出した必要転送速度の値が、予め設定されているシステムの転送能力Ａを超えているか否かを判定する（ステップＳ１７０２）。
【０１１１】
ＣＰＵ２０５は、ステップ１７０２で、必要転送速度が転送能力Ａを上回ったと判定した場合は、最も優先度が低いボイスの発音チャネルに対応する音源ＬＳＩ２０６内の波形読出し装置３０５（図３参照）に対して、ミュート処理を指示する。このときＣＰＵ２０５は例えば、発音開始順番や発音レベルなどに基づいて上記優先度を決定する（以上、ステップＳ１７０２→Ｓ１７０３）。
【０１１２】
その後、ＣＰＵ２０５は、ステップＳ１７０１の処理に戻って再度必要転送速度を算出し、その必要転送速度を転送能力Ａと比較し（ステップＳ１７０２）、必要転送速度が転送能力Ａ以内になってステップＳ１７０２が転送能力Ａ以内を判定するまで、上記処理を繰り返し実行する（ステップＳ１７０２→Ｓ１７０３→ステップＳ１７０１→ステップＳ１７０２の繰返し）。
【０１１３】
ＣＰＵ２０５は、ステップＳ１７０２で、必要転送速度が転送能力Ａ以内になったと判定した場合は、図１７（ａ）のフローチャートで例示される図１５（ａ）のステップＳ１５０９の転送速度確認処理を終了する（ステップＳ１７０２→終了）。
【０１１４】
図１７（ｂ）は、図１５（ａ）のステップＳ１５１０の波形転送優先順位管理処理の詳細例を示すフローチャートである。ここでは、前述した本実施形態の第２の特徴的動作が実現される。
【０１１５】
ＣＰＵ２０５は、ステップＳ１７１１とＳ１７１３の繰返し制御処理によってボイス数（発音チャネルｎ、０≦ｎ≦２５５）分、以下のステップＳ１７１２の処理を繰り返し実行する。
【０１１６】
ＣＰＵ２０５は、ステップＳ１７１２において、現在のボイスに対応する発音チャネルｎの波形バッファｖについて、書込みポインタｗｐ［ｖ］と、読出しポインタｒｐ［ｖ］、及び前述した（２）式で示される演算により算出したマージン閾値ｍ［ｎ］とから、そのボイスの再生残り時間を算出する。
【０１１７】
ＣＰＵ２０５は、ボイス数分の処理の終了後、ステップＳ１７１２の繰返しにより算出した再生残り時間の短い順に、前述した転送要求バッファ（図１３のステップＳ１２１４又は図１２のステップＳ１２０８参照）に登録されているボイスの番号（０≦ｎ≦２５５）をソートする（ステップＳ１７１３→Ｓ１７１４）。その後、ＣＰＵ２０５は、図１７（ｂ）のフローチャートで例示される図１５（ａ）のステップＳ１５１０の波形転送優先順位管理処理を終了する。
【０１１８】
前述の波形転送管理処理のステップＳ１２１４（図１３）又はステップＳ１２０８（図１２）では、上述のようにボイスがソートされた転送要求バッファの先頭ボイス、すなわち再生残り時間が最も短いボイスから順に、大容量フラッシュメモリ２０８の波形メモリｗからＲＡＭ２０４の波形バッファｖへの転送処理が実行されることになる。
【０１１９】
図１７（ｃ）は、ボイス発音時における、オシレータの優先度管理のフローである。ＣＰＵ２０５は、押鍵処理により新たなボイスの発音を指示した場合（図１１のステップＳ１１０９→図１２のステップＳ１２０１→図１３のステップＳ１２１３→Ｓ１２１４）、図１７（ｃ）のフローチャートの処理を実行する。ＣＰＵ２０５は、この処理において、ボイスの発音順を管理するリンク情報に対して、現在のボイスを最新（最も新しく発音されたボイス）として、上記リンク情報を更新する（ステップＳ１７２１）。
【０１２０】
図１８及び図１９は、図１７のステップＳ１７０３の最も優先度が低いボイスのミュート処理の詳細例を示すフローチャートである。ボイス優先度に基づくミュート処理のフローである。まず、ＣＰＵ２０５は、ミュート処理の候補となるボイス情報を初期化する。ＣＰＵ２０５は、初期状態として、不定となるようにボイス番号及び発音レベルにそれぞれ、値「−１」を設定する（図１８のステップＳ１８０１）。
【０１２１】
次に、ＣＰＵ２０５は、ボイスの発音順を管理するリンク情報から、最も古く発音されたボイスを取得する（図１８のステップＳ１８０２）。
【０１２２】
次に、ＣＰＵ２０５は、ステップＳ１８０２で取得したボイスの状態が発音中か否かを確認する（図１８のステップＳ１８０３）。
【０１２３】
取得したボイスの状態が発音中でない場合（ステップＳ１８０３の判定がＮＯの場合）は、ＣＰＵ２０５は、後述する図１９のステップＳ１８０８の処理に移行する。
【０１２４】
取得したボイスの状態が発音中である場合（ステップＳ１８０３の判定がＹＥＳの場合）は、ＣＰＵ２０５は、現在のボイスの発音レベル（音量等）を取得する（ステップＳ１８０４）。
【０１２５】
次に、ＣＰＵ２０５は、ミュート候補のボイス情報のボイス番号が不定（値が「−１」）であるか否かを判定する（ステップＳ１８０５）。
【０１２６】
ＣＰＵ２０５は、ボイス番号が不定である（ステップＳ１８０５の判定がＹＥＳである）場合は、ミュート候補のボイス情報に、現在のボイス番号と発音レベルを設定する（ステップＳ１８０５→Ｓ１８０６）。その後、ＣＰＵ２０５は、図１９のステップＳ１８０８の処理に移行する。
【０１２７】
ＣＰＵ２０５は、ボイス番号が不定ではなくミュート候補のボイス情報に既にボイス番号が登録されている（ステップＳ１８０５の判定がＮＯである）場合は、後述する図１９のステップＳ１８０８で取得した現在のボイスの発音レベルとミュート候補のボイス情報に登録されている発音レベルとを比較する（ステップＳ１８０７）。
【０１２８】
ＣＰＵ２０５は、ステップＳ１８０７の比較の結果、現在のボイスの発音レベルのほうがミュート候補のボイス情報に登録されている発音レベルより小さい場合は、ミュート候補のボイス情報に、現在のボイス番号と発音レベルを設定する（ステップＳ１８０７→Ｓ１８０６）。その後、ＣＰＵ２０５は、図１９のステップＳ１８０８の処理に移行する。
【０１２９】
ＣＰＵ２０５は、ステップＳ１８０７の比較の結果、現在のボイスの発音レベルのほうがミュート候補のボイス情報に登録されている発音レベル以上である場合は、図１９のステップＳ１８０８の処理に移行する。
【０１３０】
ＣＰＵ２０５は、図１９のステップＳ１８０８において、ボイス発音順を管理するリンク情報から現在のボイスよりもひとつ新しい発音のボイスのボイス番号を取得する（図１９のステップＳ１８０８）。
【０１３１】
次に、ＣＰＵ２０５は、ステップＳ１８０８で取得したひとつ新しい発音のボイス番号が、最新（最も新たしく発音されたボイス）のボイス番号と一致するか否かを判定する（図１９のステップＳ１８０９）。
【０１３２】
ＣＰＵ２０５は、ステップＳ１８０９の判定がＮＯであれば、ステップＳ１８０８で取得したひとつ新しい発音のボイス番号が最新のボイス番号と一致するまで、図１８のステップＳ１８０３から図１９のステップＳ１８０８までの一連の処理を繰り返す。
【０１３３】
ＣＰＵ２０５は、ステップＳ１８０８で取得したひとつ新しい発音のボイス番号が最新のボイス番号と一致した場合（ステップＳ１８０９の判定がＹＥＳとなった場合）、ミュート候補のボイス情報のボイス番号が不定（値が「−１」）であるか否かを判定する（ステップＳ１８１０）。
【０１３４】
ＣＰＵ２０５は、ボイス番号が不定ではなくミュート候補のボイス情報に既にボイス番号が登録されている（ステップＳ１８１０の判定がＮＯである）場合は、そのボイス番号のボイスの発音チャネルに対応する音源ＬＳＩ２０６内の波形読出し装置３０５（図３参照）に対して、ミュート処理を指示する。その後、ＣＰＵ２０５は、図１８及び図１９のフローチャートで例示される図１７のステップＳ１７０３の最も優先度が低いボイスのミュート処理を終了する。
【０１３５】
ＣＰＵ２０５は、ボイス番号が不定である（ステップＳ１８１０の判定がＹＥＳである）場合は、発音中のボイスがなかったので、ミュート処理は実行せずに、図１８及び図１９のフローチャートで例示される図１７のステップＳ１７０３の最も優先度が低いボイスのミュート処理を終了する。
【０１３６】
以上説明したようにして、本実施形態の第１の特徴的な動作として、波形データの再生速度が速ければ、すなわち再生される楽音の音高が原音に比較して高ければ、マージン閾値ｍ［ｎ］が標準的なマージン閾値よりも大きな値になり、波形読出しマージンｒｍ［ｖ］に対する許容範囲がある程度大きくても、読出しポインタｒｐ［ｖ］が書込みポインタｗｐ［ｖ］に追いつく速度が速くなるため、マージン閾値ｍ［ｎ］が標準よりも大きい値でミュート判断がなされ、ミュートを行う間のマージンを十分に確保することができる。逆に、波形データの再生速度が遅い場合、すなわち再生される楽音の音高が原音に比較して低い場合には、読出し速度が遅い分だけミュートを行う間のマージンを小さくすることができる。この制御動作により、波形データの転送効率を向上させることができると共に、音楽的に許容できない楽音の発音を防止することが可能となる。
【０１３７】
次に、本実施形態の第２の特徴的な動作として、波形バッファｖにおける蓄積量を時間換算して最も切迫した波形バッファｖから優先的に波形転送が行われることにより、発音チャンネル間の再生時間の偏差がなくなってゆき、転送が間に合わなくなるリスクが発音チャネル間で平均化されて、不要な消音が発生する事態をほとんどなくすことが可能となる。また、離鍵により途中で波形読出し（発音）が不要になった発音チャネルに対する転送は無駄になるが、その転送ロスの期待値も平均化されることで、大きな転送ロスが防げて、安定した波形転送を実現することが可能となる。
【０１３８】
更に、本実施形態の第３の特徴的な動作として、システムの最大波形転送能力と音源ＬＳＩによる波形データの要求量（＝必要転送速度）とが常に比較され、現在の状態が続くと転送が間に合わないと判断された時は、音楽的に影響が少ないものから発音が停止される。これにより、同じ発音チャネル数の発音を停止するにしても、音楽的ダメージをより少ないものにすることが可能になる。
【０１３９】
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
【０１４０】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を実行する第１プロセッサと、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に実行させる第２プロセッサと、
を備え、
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、
前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、
前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理と、
を実行することを特徴とする電子楽器。
（付記２）
前記閾値設定処理は、
前記第２プロセッサが前記波形バッファ内の波形データを読み出す読出スピードが速い波形バッファに対応する閾値が、遅い波形バッファに対応する閾値よりも大きな値になるように、前記複数の波形バッファそれぞれに対応させて前記複数の閾値を設定することを特徴とする請求項１に記載の電子楽器。
（付記３）
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第１プロセッサの前記転送処理における単位時間当たりの前記複数の波形データの転送量が転送許容閾値に達しているか否かを判断する転送量判断処理、
を実行し、
前記発音停止処理は、前記転送量判断処理により前記複数の波形データの転送量が前記転送許容閾値に達していると判断された場合に、前記第２プロセッサの前記読出し処理により読み出されている前記複数の波形データのうちのいずれかの波形データの読出しを停止させる停止処理、を実行することにより、前記いずれかの波形データに基づく音の発音を停止させることを特徴とする請求項１又は２に記載の楽音発生装置。
（付記４）
前記いずれかの波形データは、少なくとも前記複数の波形バッファにおける各読出し処理の開始順番及び前記各読出し処理により読み出される各波形データの出力レベルの何れかに基づいて決定される優先度の低い音に対応するデータであることを特徴とする請求項３に記載の楽音発生装置。
（付記５）
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第２プロセッサにより読み出される前記波形データの再生速度に応じて、前記第１プロセッサが転送する前記複数の波形データのうち優先して転送させる波形データを決定する優先転送波形データ決定処理、を実行することを特徴とする請求項１乃至４のいずれかに記載の楽音発生装置。
（付記６）
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ことを特徴とする楽音発生方法。
（付記７）
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ためのプログラム。
【符号の説明】
【０１４１】
１００  電子鍵盤楽器
１０１  鍵盤
１０２  音色選択ボタン
１０３  機能選択ボタン
１０４  ベンダ／モジュレーション・ホイール
１０５  ＬＣＤ
２０１  バスコントローラ
２０２  バス
２０３  メモリコントローラ
２０４  ＲＡＭ
２０５  ＣＰＵ
２０６  音源ＬＳＩ
２０７  フラッシュメモリコントローラ
２０８  大容量フラッシュメモリ
２０９  ＤＭＡコントローラ
２１０  Ｉ／Ｏコントローラ
２１１  キー・スキャナ
２１２  ＬＣＤコントローラ
２１３  Ａ／Ｄコンバータ
２１４  Ｄ／Ａコンバータ
２１５  アンプ
３０１  波形発生器
３０２  バスインタフェース
３０３  ＤＳＰ
３０４  ミキサ
３０５  波形読出し装置
【図１】
2019061161.tif 000003
【図２】
2019061161.tif 000004
【図３】
2019061161.tif 000005
【図４】
2019061161.tif 000006
【図５】
2019061161.tif 000007
【図６】
2019061161.tif 000008
【図７】
2019061161.tif 000009
【図８】
2019061161.tif 000010
【図９】
2019061161.tif 000011
【図１０】
2019061161.tif 000012
【図１１】
2019061161.tif 000013
【図１２】
2019061161.tif 000014
【図１３】
2019061161.tif 000015
【図１４】
2019061161.tif 000016
【図１５】
2019061161.tif 000017
【図１６】
2019061161.tif 000018
【図１７】
2019061161.tif 000019
【図１８】
2019061161.tif 000020
【図１９】
2019061161.tif 000021
【手続補正書】
【提出日】平成29年9月29日(2017.9.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を実行する第１プロセッサと、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に実行させる第２プロセッサと、
を備え、
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、
前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、
前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理と、
を実行することを特徴とする電子楽器。
【請求項２】
前記閾値設定処理は、
前記第２プロセッサが前記波形バッファ内の波形データを読み出す読出スピードが速い波形バッファに対応する閾値が、遅い波形バッファに対応する閾値よりも大きな値になるように、前記複数の波形バッファそれぞれに対応させて前記複数の閾値を設定することを特徴とする請求項１に記載の電子楽器。
【請求項３】
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第１プロセッサの前記転送処理における単位時間当たりの前記複数の波形データの転送量が転送許容閾値に達しているか否かを判断する転送量判断処理、
を実行し、
前記発音停止処理は、前記転送量判断処理により前記複数の波形データの転送量が前記転送許容閾値に達していると判断された場合に、前記第２プロセッサの前記読出し処理により読み出されている前記複数の波形データのうちのいずれかの波形データの読出しを停止させる停止処理、を実行することにより、前記いずれかの波形データに基づく音の発音を停止させることを特徴とする請求項１又は２に記載の電子楽器。
【請求項４】
前記いずれかの波形データは、少なくとも前記複数の波形バッファにおける各読出し処理の開始順番及び前記各読出し処理により読み出される各波形データの出力レベルの何れかに基づいて決定される優先度の低い音に対応するデータであることを特徴とする請求項３に記載の電子楽器。
【請求項５】
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第２プロセッサにより読み出される前記波形データの再生速度に応じて、前記第１プロセッサが転送する前記複数の波形データのうち優先して転送させる波形データを決定する優先転送波形データ決定処理、を実行することを特徴とする請求項１乃至４のいずれかに記載の電子楽器。
【請求項６】
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ことを特徴とする楽音発生方法。
【請求項７】
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１４０
【補正方法】変更
【補正の内容】
【０１４０】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を実行する第１プロセッサと、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に実行させる第２プロセッサと、
を備え、
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、
前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、
前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理と、
を実行することを特徴とする電子楽器。
（付記２）
前記閾値設定処理は、
前記第２プロセッサが前記波形バッファ内の波形データを読み出す読出スピードが速い波形バッファに対応する閾値が、遅い波形バッファに対応する閾値よりも大きな値になるように、前記複数の波形バッファそれぞれに対応させて前記複数の閾値を設定することを特徴とする付記１に記載の電子楽器。
（付記３）
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第１プロセッサの前記転送処理における単位時間当たりの前記複数の波形データの転送量が転送許容閾値に達しているか否かを判断する転送量判断処理、
を実行し、
前記発音停止処理は、前記転送量判断処理により前記複数の波形データの転送量が前記転送許容閾値に達していると判断された場合に、前記第２プロセッサの前記読出し処理により読み出されている前記複数の波形データのうちのいずれかの波形データの読出しを停止させる停止処理、を実行することにより、前記いずれかの波形データに基づく音の発音を停止させることを特徴とする付記１又は２に記載の電子楽器。
（付記４）
前記いずれかの波形データは、少なくとも前記複数の波形バッファにおける各読出し処理の開始順番及び前記各読出し処理により読み出される各波形データの出力レベルの何れかに基づいて決定される優先度の低い音に対応するデータであることを特徴とする付記３に記載の電子楽器。
（付記５）
前記第１プロセッサ及び前記第２プロセッサのいずれかが、
前記第２プロセッサにより読み出される前記波形データの再生速度に応じて、前記第１プロセッサが転送する前記複数の波形データのうち優先して転送させる波形データを決定する優先転送波形データ決定処理、を実行することを特徴とする付記１乃至４のいずれかに記載の電子楽器。
（付記６）
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ことを特徴とする楽音発生方法。
（付記７）
第１記憶手段内の複数の波形データを、それぞれリングバッファとして機能させる第２記憶手段内の複数の波形バッファに、対応付けて転送する転送処理を第１プロセッサに実行させ、
前記第２記憶手段内の前記複数の波形バッファから前記複数の波形データを読み出す読出し処理を実行し、前記読出し処理により読み出した前記複数の波形データそれぞれに基づく発音を同時に第２プロセッサに実行させ、
前記複数の波形バッファそれぞれに対応させて複数の閾値を設定する閾値設定処理と、前記第１プロセッサが前記転送処理により前記複数の波形データを転送する前記複数の波形バッファ内の各転送位置と、前記第２プロセッサが前記読出し処理により前記複数の波形データを読み出す前記複数の波形バッファ内の各読出し位置と、から得られる各差分値が、前記閾値設定処理により設定された閾値以下になった波形バッファを特定する特定処理と、前記特定処理により特定された前記閾値以下になった波形バッファから読み出している波形データに基づく発音を停止させる発音停止処理を、前記第１プロセッサ及び前記第２プロセッサのいずれかに実行させる、
ためのプログラム。