(57)【特許請求の範囲】
【請求項１】
楽音の音色毎に設けられ、少なくとも音域及びベロシティ域の一方が異なる複数のグループそれぞれに対応した音色波形データを記憶している二次記憶装置から、前記複数のグループそれぞれに対応する音色波形データを順次読み出し、前記読み出した音色波形データを一次記憶装置に順次書き込む書き込み処理と、
演奏情報が入力された際に前記演奏情報が示す音高及びベロシティが属するグループに対応する音色波形データの前記一次記憶装置への書き込みが完了していない場合は、前記一次記憶装置への書き込みが完了している他のグループに対応する音色波形データを読み出す読み出し処理と、を実行する処理部、
を備えた波形書き込み装置。
【請求項２】
前記処理部は、音色選択情報の入力に応答して、前記二次記憶装置から、前記入力した音色選択情報が示す音色に対応する複数の音色波形データを順次読み出し、前記読み出した音色波形データを一次記憶装置に順次書き込む書き込み処理を実行する、請求項１に記載の波形書き込み装置。
【請求項３】
前記処理部は、前記演奏情報の入力に応答して、前記演奏情報が示す音高及びベロシティが属するグループに対応する音色波形データが前記一次記憶装置に書き込みが完了されているか否か判別し、前記書き込みが完了していると判別された場合は、前記演奏情報が示す音高及びベロシティが属するグループに対応する音色波形データを前記一次記憶装置から読み出すとともに、前記書き込みが完了していないと判別された場合は、前記一次記憶装置への読込みが完了している他のグループに対応する音色波形データを読み出す処理を実行する、請求項１又は２に記載の波形書き込み装置。
【請求項４】
前記処理部が実行する前記読み出し処理において、前記他のグループに対応する音色波形データは、前記入力された演奏情報が示す音高より高い音高が属するグループに対応する音色波形データ及び前記入力された演奏情報が示すベロシティより大きいベロシティが属するグループに対応する音色波形データのいずれか一方である、請求項１乃至３のいずれかに記載の波形書き込み装置。
【請求項５】
前記一次記憶装置は、ランダムアクセスメモリを備え、前記二次記憶装置は、前記一次記憶装置より容量の大きいフラッシュメモリを備えた、請求項１乃至４のいずれかに記載の波形書き込み装置。
【請求項６】
処理部を有する波形書き込み装置に用いられる波形書き込み方法であって、前記処理部が、
楽音の音色毎に設けられ、少なくとも音域及びベロシティ域の一方が異なる複数のグループそれぞれに対応した音色波形データを記憶している二次記憶装置から、前記複数のグループそれぞれに対応する音色波形データを順次読み出し、前記読み出した音色波形データを一次記憶装置に順次書き込み、
前記演奏情報が入力された際に前記演奏情報が示す音高及びベロシティが属するグループに対応する音色波形データの前記一次記憶装置への書き込みが完了していない場合は、前記一次記憶装置への書き込みが完了している他のグループに対応する音色波形データを読み出す、
波形読み込み方法。
【請求項７】
波形書き込み装置として用いられるコンピュータに、
楽音の音色毎に設けられ、少なくとも音域及びベロシティ域の一方が異なる複数のグループそれぞれに対応した音色波形データを記憶している二次記憶装置から、前記複数のグループそれぞれに対応する音色波形データを順次読み出し、前記読み出した音色波形データを一次記憶装置に順次書き込む書き込みステップと、
前記演奏情報が入力された際に前記演奏情報が示す音高及びベロシティが属するグループに対応する音色波形データの前記一次記憶装置への書き込みが完了していない場合は、前記一次記憶装置への書き込みが完了している他のグループに対応する音色波形データを読み出す読み出しステップと、
を実行させるプログラム。
【請求項８】
請求項１乃至５のいずれかに記載の波形書き込み装置と、
演奏情報を入力する演奏操作子と、
複数種の音色波形データが記憶された前記二次記憶装置と、
前記一次記憶装置と、
前記演奏操作子からの演奏情報により前記一次記憶装置から読み出された音色波形データに基づいた音色の楽音を生成する音源と、
を有する電子楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、波形書き込み装置、方法、プログラム、及びその装置を用いた電子楽器に関する。
【背景技術】
【０００２】
波形読込み方式により楽音波形を発生する音源装置では、より多数の、より長時間の波形データを利用できるようにするために、使用しない波形データはフラッシュメモリやハードディスク等の大容量の補助記憶装置(２次記憶装置)に保存しておき、使用する波形データのみを音源装置が直接アクセスできる波形メモリ(１次記憶装置)に転送して発音させるというシステムを採用するものがある。
つまり、高価な波形メモリ(１次記憶装置)が有する記憶容量以上の記憶容量の波形データを安価な補助記憶装置(２次記憶装置)に保持しておき、必要な場合のみ移動して発音に使用するというコスト的には効率的な方法であると言える。
【０００３】
一従来技術として、次のような技術が知られている（例えば特許文献１に記載の技術）。この技術において、ＲＯＭには、音色毎に１つ以上の波形データが格納されている。音源ＬＳＩ（大規模集積回路）は、指定された曲の曲データを参照して、それらの波形データのなかで楽音の発音に必要なものを特定し、必要と特定した波形データはそのなかで必要な部分を更に特定する。それにより、楽音の発音に必要な波形データはその必要な部分のみをＲＯＭから読み出してＲＡＭに転送し格納させる。これにより、発音させるべき楽音の波高値生成用に波形データをワークメモリに格納する場合に、そのデータ量をより抑えることが可能な楽音発生装置を提供するものである。
【０００４】
他の従来技術として、次のような技術が知られている（例えば特許文献２に記載の技術）。この技術は、第１の記憶手段に記憶された各種データのなかで楽音発生装置の起動時に転送すべきデータ群を第２の記憶手段に転送する場合に、そのデータ群を構成する波形データのなかで予め定めた音色の波形データを優先して転送し、その転送状況に応じて、楽音発生装置の動作を制限する。例えば、同時発音可能な楽音数をより少なくする動作制御をかける。その動作制限により、そのときの転送状況で可能な動作に限定して楽音発生装置を使用させることができるようにし、転送の完了を待つ場合よりも転送開始（起動）からより短時間で演奏可能とさせるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２７１８２７号公報
【特許文献２】特許第４４７５３２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では依然として、補助記憶装置から波形メモリ等への波形データの移動に時間がかかるため、演奏に支障を来す場合がある。具体的には、演奏者が多数の音色の中から好みの音色を選ぶような際には、音色の切り替えの度に一定時間待たされて発音されない時間が存在するため、演奏者はストレスを感じるといった課題があった。
【０００７】
そこで、本発明は、複数波形の転送を伴う音色切り替えの際に、波形メモリに所望の波形が存在しないために発音できないという無音時間を大幅に短縮することを目的とする。
【課題を解決するための手段】
【０００８】
態様の一例では、楽音の音色毎に設けられ、少なくとも音域及びベロシティ域の一方が異なる複数のグループそれぞれに対応した音色波形データを記憶している二次記憶装置から、前記複数のグループそれぞれに対応する音色波形データを順次読み出し、前記読み出した音色波形データを一次記憶装置に順次書き込む書き込み処理と、演奏情報が入力された際に前記演奏情報が示す音高及びベロシティが属するグループに対応する音色波形データの前記一次記憶装置への書き込みが完了していない場合は、前記一次記憶装置への書き込みが完了している他のグループに対応する音色波形データを読み出す読み出し処理と、を実行する処理部、を備える。
【発明の効果】
【０００９】
本発明によれば、複数波形の転送を伴う音色切り替えの際に、波形メモリに所望の波形が存在しないために発音できないという無音時間を大幅に短縮することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明による電子鍵盤楽器の実施形態の外観図である。
【図２】電子鍵盤楽器の実施形態のハードウェア構成例を示す図である。
【図３】音色波形スプリットの説明図である。
【図４】フラッシュメモリ音色情報テーブルのデータ構成例、及び大容量フラッシュメモリから波形メモリへの波形データの読込み動作を示す図である。
【図５】波形データの代用によりカバー範囲を拡張する動作概念の説明図である。
【図６】主要変数／定数の一覧を示す図である。
【図７】制御処理の全体処理の例を示すメインルーチンのフローチャートである。
【図８】初期化処理の詳細例を示すフローチャートである。
【図９】音色波形情報転送サブルーチンの詳細処理例を示すフローチャートである。
【図１０】音源発音処理の詳細例を示すフローチャートである。
【図１１】スプリット波形検索サブルーチンの詳細処理例を示すフローチャートである。
【図１２】音色切替え処理の詳細例を示すフローチャートである。
【図１３】波形読込み処理の詳細例を示すフローチャート（その１）である。
【図１４】波形読込み処理の詳細例を示すフローチャート（その２）である。
【図１５】最優先読込み波形検索サブルーチンの詳細処理例を示すフローチャートである。
【図１６】実効スプリット情報設定サブルーチンの詳細処理例を示すフローチャートである。
【図１７】カバー範囲のベロシティ域上限設定ルーチンの詳細処理例を示すフローチャートである。
【図１８】カバー範囲のベロシティ域下限設定ルーチンの詳細処理例を示すフローチャートである。
【図１９】カバー範囲の鍵域上限設定ルーチンの詳細処理例を示すフローチャートである。
【図２０】カバー範囲の鍵域下限設定ルーチンの詳細処理例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態（以下「本実施形態」と記載する）について図面を参照しながら詳細に説明する。本実施形態は、例えば電子鍵盤楽器に適用される、音高（鍵域）や音量（ベロシティ：打鍵の速さ）などの演奏情報によって音色が変化するのを再現するために、大容量の２次記憶装置（例えばフラッシュメモリ）から１次記憶装置（例えばＲＡＭによる波形メモリ）に、音高又は音量毎の波形データ（以下これを「スプリット波形」と呼ぶ）を読み込む楽音発生装置を対象とする。本実施形態は、このような楽音発生装置において、音域や強さによってスプリットされた複数波形に依って構成される音色選択が発生した際に、その音色において、鍵域や演奏の強さ(ベロシティ)などの使用頻度や、各鍵域、強さの波形の汎用性を考慮し、予め波形メモリに波形データをロードする順序を音色毎に決定しておいたり、あるいは実際の演奏を解析して各波形の使用頻度を求めたりして、その順序に従って波形メモリへの波形データの読込みを行い、読込みが完了した波形を代用して、読込み中もしくはこれから読込みを行う波形の鍵域、強さ(ベロシティ域)を読込みが完了するまで一時的にカバーして発音させることで、音色切替えに伴う波形入替えによる無音状態の時間を最初の波形の読込み時間のみに短縮することを可能とする電子鍵盤楽器を実現するものである。
【００１２】
図１は、本発明による電子鍵盤楽器の実施形態の外観図である。本実施形態は、電子鍵盤楽器１００として実施される。電子鍵盤楽器１００は、演奏操作子としての複数の鍵からなる鍵盤１０１と、音色選択操作子としての音色選択を行うための音色選択ボタン１０２及び音色以外の各種機能選択を行う機能選択ボタン１０３からなるスイッチ・パネルと、ピッチベンドやトレモロ、ビブラート等の各種モジュレーション（演奏効果）を付加するベンダ／モジュレーション・ホイール１０４、音色や音色以外の各種設定情報を表示するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）１０５等を備える。また、電子鍵盤楽器１００は、特には図示しないが、演奏により生成された楽音を放音するスピーカを裏面部、側面部、又は背面部等に備える。
【００１３】
音色選択ボタン１０２は、図１に示されるように、ピアノ（図中「Ｐｉａｎｏ」）、エレクトリックピアノ（図中「Ｅ．ｐｉａｎｏ」）、オルガン（図中「Ｏｒｇａｎ」）、ギター（図中「Ｇｕｉｔａｒ）等の各種音色のカテゴリを選択するためのボタン群である。演奏者は、この音色選択ボタン１０２を押下することにより、例えば１６音色のうちの何れかを選択することができる。
【００１４】
図２は、図１の電子鍵盤楽器１００の実施形態のハードウェア構成例を示す図である。図２において、電子鍵盤楽器１００は、ＣＰＵ（中央演算処理装置）２０１、ＲＯＭ（リードオンリーメモリ）２０２、ＲＡＭ（ランダムアクセスメモリ）２０３、大容量フラッシュ（Ｆｌａｓｈ）メモリ２０４、波形メモリ２０６が接続される音源ＬＳＩ（大規模集積回路）２０５、図１の鍵盤１０５と図１の音色選択ボタン１０２及び機能選択ボタン１０３からなるスイッチ・パネルとが接続されるキー・スキャナ２０７、図１のベンダ／モジュレーション・ホイール１０４が接続されるＡ／Ｄコンバータ２０８、図１のＬＣＤ１０５が接続されるＬＣＤコントローラ２０９、及びＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）入力を受け付けるＭＩＤＩ  Ｉ／Ｆ（インタフェース）２１３が、それぞれシステムバス２１４に接続される構成を備える。また、音源ＬＳＩ２０５から出力されるデジタル楽音波形データは、Ｄ／Ａコンバータ２０８によりアナログ楽音波形信号に変換され、アンプ２１１で増幅された後に、特には図示しないスピーカ又は出力端子から出力される。
【００１５】
ＣＰＵ２０１は、ＲＡＭ２０３をワークメモリとして使用しながらＲＯＭ２０２に記憶された制御プログラムを実行することにより、図１の電子鍵盤楽器１００の制御動作を実行する。また、ＲＯＭ２０２は、上記制御プログラム及び各種固定データを記憶する。
【００１６】
大容量フラッシュメモリ２０４は、波形データ等の大容量データの格納領域であり、シーケンシャルアクセスにより順次アクセスされる。一方、音源ＬＳＩ２０５には、波形データを展開するＲＡＭで構成される波形メモリ２０６が接続され、発音される楽音の波形データは必ず、この波形メモリ２０６上に配置されている必要がある。ＣＰＵ２０１は、大容量フラッシュメモリ２０４から波形データをシーケンシャルに読みだし、それを音源ＬＳＩ２０５経由で波形メモリ２０６に転送することで、音色データを入れ替えることができる。
【００１７】
ＬＣＤコントローラ２０９は、ＬＣＤ１０５を制御するＩＣ（集積回路）である。キー・スキャナ２０７は、鍵盤１０５や音色選択ボタン１０２又は機能選択ボタン１０３等のスイッチ・パネルの状態を走査して、ＣＰＵ２０１に通知するＩＣである。Ａ／Ｄコンバータ２０８は、ベンダ／モジュレーション・ホイール１０４の操作位置を検出するＩＣである。１６ｂｉｔフリーランニング・タイマカウンタ２１２は、イベントの時刻検出のための計時を行う。
【００１８】
本実施形態においては、鍵域やベロシティによって音量や音高のみならず音色が変化するのを再現するために、大容量フラッシュメモリ２０４から波形メモリ２０６に、音高又は音量毎の音色の波形データが読み込まれる。このように、一つの音色に対して、音高又は音量毎に波形データを管理する手法を「音色波形スプリット」と呼び、そのように管理される波形データを「スプリット波形」と呼ぶ。図３は、音色波形スプリットの説明図である。音色波形スプリットにおいては、図３（ａ）に例示されるように、図１の鍵盤１０５上で演奏者が演奏する鍵域（図３（ａ）の横軸の「Ｋｅｙ」）毎にそれぞれ波形データが割り当てられ、また同じ鍵域であっても演奏の強さすなわちベロシティ（図３（ａ）の縦軸の「Ｖｅｌｏｃｉｔｙ」）毎でもそれぞれ波形データが割り当てられている。
【００１９】
波形メモリ２０６に記憶される波形データは、図３（ｂ）に例示される音色波形スプリット情報テーブルに基づいて管理される。大容量フラッシュメモリ２０４から波形メモリ２０６に或る音色の波形データが演奏されるときに、ＣＰＵ２０１が例えば図２のＲＯＭ２０２からその音色に対応する音色波形スプリット情報テーブルのデータを読み出して音源ＬＳＩ２０５経由で波形メモリ２０６内の波形データが記憶される領域とは別の管理領域に転送される。音色波形スプリット情報テーブルには、１つの音色に含まれる各波形データ毎に、その波形データの「波形番号」と、その波形データが発音されるべき鍵域及びベロシティの範囲を示す、「最低ベロシティ」、「最大ベロシティ」、「最低キーナンバ（最低キー番号）」、及び「最高キーナンバ（最高キー番号）」と、波形メモリ２０６に転送された１つの音色の記憶領域の先頭からのアドレスを示す「音色先頭からのアドレス」（「Ｈ」は１６進数値を示す）と、その波形データのデータサイズを示す「波形サイズ」（「Ｈ」は１６進数値を示す）の各項目値からなるエントリが登録される。音源ＬＳＩ２０５は、鍵盤１０５上で演奏された鍵のキーナンバとベロシティを、波形メモリ２０６内の音色波形スプリット情報テーブルの各エントリの「最低ベロシティ」、「最大ベロシティ」、「最低キー（音高）番号」、及び「最高キー（音高）番号」の各項目の値と比較することにより、上記演奏された鍵のキーナンバとベロシティに合致するエントリを探しだす。そして、音源ＬＳＩ２０５は、波形メモリ２０６に転送された対象となる音色の記憶領域の先頭から、上記探し出したエントリの「音色先頭からのアドレス」項目の値だけ進んだアドレスから、そのエントリの「波形サイズ」項目の値が示すサイズ分の波形データを演奏で指定された鍵の音高に対応する速度で読み出し、その読み出した波形データに対して演奏で指定されたベロシティの振幅エンベロープを付加し、その結果得られる波形データを出力楽音波形データとして出力する。
【００２０】
１つの音色に含まれる各波形データは、大容量フラッシュメモリ２０４上では、図３（ｃ）に示されるように、１本の連続したデータの塊として記録されている。その配置状態は、その音色に対応してＲＯＭ２０２に記憶されている図３（ｂ）に例示される音色波形スプリット情報テーブルで定義される。すなわち、１つの音色に含まれる各波形データの配置状態は、大容量フラッシュメモリ２０４及び波形メモリ２０６ともに同じであり、１つの音色波形スプリット情報テーブルで管理される。
【００２１】
音色毎の波形データの数は定められていない（可変である）が、最大数と合計の最大サイズは定められている。本実施例では、図３（ｃ）の音色波形サイズ、図３（ｂ）の音色波形スプリット情報テーブルに例示されるように、１つの音色を構成する波形の最大数は例えば３２、合計の最大サイズは例えば１ＭＢ（メガバイト）である。図３（ｃ）の例では、１つの音色が１１個の波形データから構成されていることが示されている。
【００２２】
図４（ａ）は、フラッシュメモリ音色情報テーブルのデータ構成例を示す図である。このフラッシュメモリ音色情報テーブルは、図２のＲＯＭ２０２に記憶されている。図４（ａ）に例示されるように、フラッシュメモリ音色情報テーブルの各音色毎のエントリには、音色番号を示す「音色番号」項目値と、「音色名」項目値と、大容量フラッシュメモリ２０４の波形記憶領域の先頭からの記憶アドレスのオフセット（１６進数）を示す「波形アドレス」項目値と、その音色に含まれる波形データ群の全体の波形サイズ（１６進数）を示す「波形サイズ」項目値が記憶されている。
【００２３】
発音を行うためには、ＣＰＵ２０１が波形データを直接アクセスできる音源ＬＳＩ２０５の波形メモリ２０６に読み込んでおく必要があるが、この波形メモリ２０６上の各波形エリアは、１６音色のうちの何れか１音色の全波形データ（最大で３２波形データ）を読み込むことができる容量、すなわち１メガバイトを有する。各波形データが波形メモリに読み込まれる順序は後述するように状況に応じて最適化されるが、最終的にすべての波形データが読み込まれた状態での各波形データの並び方は大容量フラッシュメモリ２０４上の並びと同じである。図４（ｂ）は、大容量フラッシュメモリ２０４（図中では「Ｆｌａｓｈメモリ」と表示）から波形メモリ２０６への波形データの読込み動作を示す図である。押鍵時にはスプリットを判断してどれか１つの波形データの読出しによる発音を行うが、その波形データが波形メモリ２０６への読込み転送の最中である可能性もあり、必ずしも所望の波形データが波形メモリ２０６に読み込まれているとは限らない。本来、もし演奏の鍵域や強さに対応する波形が音源の波形メモリに存在しない場合は発音を行うことが出来ない。
【００２４】
本実施形態では、波形メモリ２０６上に既に読込みが完了した波形データだけで一時的にスプリットのカバー範囲が拡張され、全域の演奏に対応でき、必要な波形データが徐々に波形メモリ２０６上に揃うに従って、そのカバー範囲が狭められてゆき、最終的に本来想定されているカバー範囲に設定されるという制御が行われる。スプリット波形は、波形読込みの途中段階では、以下のようなルールに基づいて想定範囲以上をカバーする。
【００２５】
・横軸が鍵域（Ｋｅｙ）、縦軸が強さ（Ｖｅｌｏｃｉｔｙ）という２次元の平面を考えた時、ある鍵域は常に縦割りの長方形で表すことができ、その中に複数の強さの領域を持つことができる。逆に強さの分割領域は１つの鍵域の中でしか横割りにはできない。
【００２６】
・波形メモリに鍵域の高い波形と低い波形が読み込まれている場合は、より高い波形が低い波形の範囲をカバーする（高音優先）。
【００２７】
・波形メモリに同じ鍵域で弱い波形と強い波形が読み込まれている場合は、より強い波形が弱い波形の範囲をカバーする（強音優先)。
【００２８】
図５は、上述の３つのルールに基く波形データの代用によりカバー範囲を拡張する動作概念の説明図である。まず本来、図３（ａ）で示されるようなスプリット配置を想定して設計された音色波形があるとすると、４Ｃ、２Ｂ、３Ｂ、４Ａ、５Ａのスプリット波形の順に波形メモリへの読込みを行った場合、下記の様なカバー範囲が実現される。
【００２９】
（Ａ）４Ｃが読み込まれた状態
・４Ｃのスプリット波形だけで全領域をカバー。
【００３０】
（Ｂ）４Ｃ、２Ｂが読み込まれた状態
・２Ｂによって、２Ｂより下の鍵域を全てカバー。
・４Ｃによって、４Ｃより上の鍵域と、２Ｂと４Ｃとの間の鍵域を全てカバー。
【００３１】
（Ｃ）４Ｃ、２Ｂ、３Ｂが読み込まれた状態
・２Ｂによって、２Ｂより下の鍵域を全てカバー。
・３Ｂによって、３Ｂの鍵域を全てカバー。
・４Ｃによって、４Ｃより上の鍵域を全てカバー。
【００３２】
（ｄ）４Ｃ、２Ｂ、３Ｂ、４Ａが読み込まれた状態
・２Ｂによって、２Ｂより下の鍵域を全てカバー。
・３Ｂによって、３Ｂの鍵域を全てカバー。
・４Ｃによって、４Ａより上の強さで、４Ｃより上の鍵域を全てカバー。
・４Ａによって、４Ａの鍵域のみをカバー。
【００３３】
（Ｅ）４Ｃ、２Ｂ、３Ｂ、４Ａ、５Ａが読み込まれた状態
・２Ｂによって、２Ｂより下の鍵域を全てカバー。
・３Ｂによって、３Ｂの鍵域を全てカバー。
・４Ｃによって、４Ａより上の強さで、４Ｃの鍵域を全てカバー。
・４Ａによって、４Ａの鍵域のみをカバー。
・５Ａによって、５Ａの鍵域を全てカバー。
【００３４】
本実施形態における波形データの読出し順序は、例えば波形データの代用に依る音色の劣化が最小限と成るようなスプリット配置を考慮して、音色毎に最適値を固定的に持たせ、これに従うこととする。
【００３５】
また、本実施形態では、演奏やユーザインターフェースの処理が滞らないように波形読込み処理がバックグラウンドで実行されている。前述の「読込み優先度」情報は、この波形読み込み処理によって渡されて、この順序に従って大容量フラッシュメモリ２０４上の波形データが音源ＬＳＩ２０５の波形メモリ２０６に転送される。
【００３６】
図６は、図２のＣＰＵ２０１が実行する制御処理において使用する主要な変数／定数の一覧を示す図であり、図６（ａ）はＲＡＭ２０３上の主要な変数の一覧、図６（ｂ）はＲＯＭ２０２上の主要な定数の一覧である。各変数／定数については、後述する制御処理の詳細説明において詳述する。
【００３７】
以下に、上述の動作を実現するためにＣＰＵ２０１が実行する制御処理の詳細例について説明する。
【００３８】
図７は、ＣＰＵ２０１が実行する制御処理の全体処理の例を示すメインルーチンのフローチャートである。この処理例は、ＣＰＵ２０１がＲＯＭ２０２に記憶された制御プログラムを実行する処理例である。
【００３９】
ＣＰＵ２０１は、まずＲＡＭ２０３の内容を初期化した後（ステップＳ７０１）、ステップＳ７０２からＳ７１１の一連の処理で示される定常ループ処理に入る。
【００４０】
定常ループ処理では、ＣＰＵ２０１はまず、ユーザインタフェース処理（図中「ユーザＩ／Ｆ」と表示）を実行する（ステップＳ７０２）。ここでは、ＣＰＵ２０１は、図２のキー・スキャナ２０７を介して図１の音色選択ボタン１０２の状態を取得する。
【００４１】
次に、ＣＰＵ２０１は、ステップＳ７０２の処理の結果、演奏者が音色選択ボタン１０２を操作することにより音色選択イベントが発生したか否かを判定する（ステップＳ７０３）。
【００４２】
そして、ＣＰＵ２０１は、音色切り替えが発生した場合（ステップＳ７０３の判定がＹｅｓの場合）は、音色切替え処理を実行する（ステップＳ７０４）。ステップＳ７０３の判定がＮｏならば、ＣＰＵ２０１は、ステップＳ７０４の処理はスキップする。
【００４３】
次に、ＣＰＵ２０１は、鍵盤処理を実行する（ステップＳ７０５）。ここでは、ＣＰＵ２０１は、図２のキー・スキャナ２０７を介して図１の鍵盤１０５の押鍵状態を取得する。
【００４４】
次に、ＣＰＵ２０１は、ステップＳ７０５の処理の結果、演奏者が鍵盤１０５上の何れかの鍵を押鍵することにより押鍵イベントが発生したか否かを判定する（ステップＳ７０６）。
【００４５】
そして、ＣＰＵ２０１は、押鍵イベントが発生した場合（ステップＳ７０６の判定がＹｅｓの場合）は、音源発音処理を実行する（ステップＳ７０７）。ステップＳ７０６の判定がＮｏならば、ＣＰＵ２０１は、ステップＳ７０７の処理はスキップする。
【００４６】
続いて、ＣＰＵ２０１は、ステップＳ７０５の処理の結果、演奏者が鍵盤１０５上の何れかの押鍵中の鍵を離鍵することにより離鍵イベントが発生したか否かを判定する（ステップＳ７０８）。
【００４７】
そして、ＣＰＵ２０１は、離鍵イベントが発生した場合（ステップＳ７０８の判定がＹｅｓの場合）は、音源リリース処理を実行する（ステップＳ７０９）。ステップＳ７０８の判定がＮｏならば、ＣＰＵ２０１は、ステップＳ７０９の処理はスキップする。
【００４８】
その後、ＣＰＵ２０１は、音源定常サービス処理を実行する（ステップＳ７１０）。ここでは、例えば図１の機能選択ボタン１０３が押された場合に対応する処理や、図１のベンダ／モジュレーション・ホイール１０４が操作された場合に対応する処理等の、電子鍵盤楽器１００に対する一般的な処理が実行される。
【００４９】
最後に、ＣＰＵ２０１は、波形読込み処理を実行する（ステップＳ７１１）。
【００５０】
その後、ＣＰＵ２０１は、ステップＳ７０２の定常ループ処理の先頭に戻る。
【００５１】
図８は、図７のステップＳ７０１の初期化処理の詳細例を示すフローチャートである。
【００５２】
まず、ＣＰＵ２０１は、ＲＡＭ２０３上の図６に示されるメモリバックアップされない「変数」（「メモリバックアップ」項目に「×」が記載されている変数）の値を、全て「０」にする（以上、ステップＳ８０１）。
【００５３】
次に、ＣＰＵ２０１は、音色波形情報転送サブルーチンの処理を実行する（ステップＳ８０２）。図９は、図８のステップＳ８０２の音色波形情報転送サブルーチンの詳細処理例を示すフローチャートである。この処理では、ＲＯＭ２０２に予め記憶されている図３（ｂ）に例示される音色波形スプリット情報テーブルの各項目値（図６（ｂ）のＲＯＭ＿ＷＭ＿ＳＴ構造体参照）が、変数Ｗが示す現在の波形番号値に対応するＲＡＭ２０３上の上記各項目値を格納する構造体要素に転送される。
【００５４】
ＣＰＵ２０１はまず、読込み音色の波形の大容量フラッシュメモリ２０４上での格納先頭アドレス値を保持するＲＡＭ２０３上の変数ＦＬＡＳＨ＿ＯＦＦＳＥＴ（図６（ａ）参照）に、メモリバックアップされているＲＡＭ２０３上の変数Ｃ＿ＴＯＮＥが示す現在の音色番号に対応し、ＲＯＭ２０２に記憶されている読込み音色の波形の大容量フラッシュメモリ２０４上での格納先頭アドレス値ＲＯＭ＿ＷＡＶＥ＿ＯＦＦＳＥＴ［Ｃ＿ＴＯＮＥ］（図６（ｂ）の「ＲＯＭ＿ＷＡＶＥ＿ＯＦＦＳＥＴ」参照）を格納する（ステップＳ９０１）。
【００５５】
次に、ＣＰＵ２０１は、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｗの値について、ステップＳ９０２で「０」にリセットした後、ステップＳ９０４で＋１ずつインクリメントしながら、ステップＳ９０５で３２に達したと判定するまで、変数Ｗが示す現在の波形番号値に対応する図３（ｂ）に例示される音色波形スプリット情報テーブルの各項目値を格納する各構造体要素に、ＲＯＭ２０２に予め記憶されている各項目値を格納する処理（ステップＳ９０３）を、繰り返し実行する。即ち、変数Ｗが示す波形番号値の波形データが本来発音する範囲の最小ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＲＧ＿ＶＥＬ＿ＬＯに、メモリバックアップされているＲＡＭ２０３上の変数Ｃ＿ＴＯＮＥが示す現在の音色番号と変数Ｗが示す現在の波形番号値に対応し、ＲＯＭ２０２に記憶されている「最低ベロシティ」値ＲＯＭ＿ＷＭ＿ＳＴ［Ｃ＿ＴＯＮＥ］［Ｗ］．ＶＥＬ＿ＬＯの値が格納される。また、変数Ｗが示す波形番号値の波形データが本来発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＲＧ＿ＶＥＬ＿ＨＩに、変数Ｃ＿ＴＯＮＥが示す現在の音色番号と変数Ｗが示す現在の波形番号値に対応し、ＲＯＭ２０２に記憶されている「最高ベロシティ」値ＲＯＭ＿ＷＭ＿ＳＴ［Ｃ＿ＴＯＮＥ］［Ｗ］．ＶＥＬ＿ＨＩの値が格納される。また、変数Ｗが示す波形番号値の波形データが本来発音する範囲の最低キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＬＯに、変数Ｃ＿ＴＯＮＥが示す現在の音色番号と変数Ｗが示す現在の波形番号値に対応し、ＲＯＭ２０２に記憶されている「最低キーナンバ」値ＲＯＭ＿ＷＭ＿ＳＴ［Ｃ＿ＴＯＮＥ］［Ｗ］．ＫＥＹ＿ＬＯの値が格納される。また、変数Ｗが示す波形番号値の波形データが本来発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＲＧ＿ＫＥＹ＿ＨＩに、変数Ｃ＿ＴＯＮＥが示す現在の音色番号と変数Ｗが示す現在の波形番号値に対応し、ＲＯＭ２０２に記憶されている「最高キーナンバ」値ＲＯＭ＿ＷＭ＿ＳＴ［Ｃ＿ＴＯＮＥ］［Ｗ］．ＫＥＹ＿ＨＩの値が格納される。更に、構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＦＦＳＥＴ＿ＡＤＲＳに、変数Ｃ＿ＴＯＮＥが示す現在の音色番号と変数Ｗが示す現在の波形番号値に対応し、ＲＯＭ２０２に記憶されている波形メモリ２０６に転送された１つの音色の記憶領域の先頭からのアドレスを示す「音色先頭からのアドレス」値ＲＯＭ＿ＷＭ＿ＳＴ［Ｃ＿ＴＯＮＥ］［Ｗ］．ＯＦＦＳＥＴの値が格納される。加えて、構造体要素ＷＭ＿ＳＴ［Ｗ］．ＷＡＶＥ＿ＳＩＺＥに、変数Ｃ＿ＴＯＮＥが示す現在の音色番号と変数Ｗが示す現在の波形番号値に対応し、ＲＯＭ２０２に記憶されている波形メモリ２０６に転送された波形データのデータサイズを示す「波形サイズ」値ＲＯＭ＿ＷＭ＿ＳＴ［Ｃ＿ＴＯＮＥ］［Ｗ］．ＷＡＶＥ＿ＳＩＺＥの値が格納される。また、図３（ｂ）には記載していないが、構造体要素ＷＭ＿ＳＴ［Ｗ］．ＰＲＩに、変数Ｃ＿ＴＯＮＥが示す現在の音色番号と変数Ｗが示す現在の波形番号値に対応し、ＲＯＭ２０２に記憶されている波形メモリ２０６に転送される波形データの読込み優先度値ＲＯＭ＿ＷＭ＿ＳＴ［Ｃ＿ＴＯＮＥ］［Ｗ］．ＰＲＩの値が格納される。
【００５６】
以上のステップＳ９０２からＳ９０５までの一連の繰返し動作が、３２の波形データについて繰り返し実効された後、ＣＰＵ２０１は、図９のフローチャートで示される図８のステップＳ８０２の音色波形情報転送サブルーチンの処理を終了する。
【００５７】
ステップＳ８０２の後、ＣＰＵ２０１は、現在読込み中の波形の番号を示す変数ＲＥＡＤＩＮＧ＿ＷＡＶＥ（図６（ａ）参照）に、無効値「−１」を格納する（ステップＳ８０３）。その後、ＣＰＵ２０１は、図８のフローチャートで例示される図７のステップＳ７０１の初期化処理を終了する。
【００５８】
図１０は、図７のステップＳ７０７の音源発音処理の詳細例を示すフローチャートである。
【００５９】
ＣＰＵ２０１はまず押鍵時に、スプリット波形検索サブルーチンにより、押鍵に対応する鍵域及びベロシティに基づいて、現在選択されている音色中でその押鍵により発音されるべき波形データの波形番号を割り出し、その波形番号をＲＡＭ２０３上の変数Ｗに格納する（ステップＳ１００１）。
【００６０】
次に、ＣＰＵ２０１は、変数Ｗが示す現在の波形番号値に対応する波形メモリ２０６上での波形の有無を示す要素ＷＭ＿ＳＴ［Ｗ］．ＷＡＶＥ（図６（ａ）参照）の値が「１」であるか否か、すなわち、変数Ｗが示す波形番号に対応する波形データが波形メモリ２０６の波形エリアに存在するかどうかを判定する（ステップＳ１００２）。
【００６１】
ＣＰＵ２０１は、ステップＳ１００２の判定がＹｅｓならば、その波形データに対する発音処理を、音源ＬＳＩ２０５に対して指示する発音処理を実行する（ステップＳ１００３）。ＣＰＵ２０１は、ステップＳ１００２の判定がＮｏならば、ステップＳ１００３の発音処理はスキップする。
【００６２】
図１１は、図１０のステップＳ１００１のスプリット波形検索サブルーチンの詳細処理例を示すフローチャートである。
【００６３】
ＣＰＵ２０１はまず、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｗについて、ステップＳ１１０１で波形番号カウンタＷに値「０」を格納した後、ステップＳ１１０６で＋１ずつインクリメントしながら、ステップＳ１１０７で３２に達したと判定するまで、ステップＳ１１０２からＳ１１０５までの一連の処理を、繰り返し実行する。
【００６４】
これらの一連の処理において、ＣＰＵ２０１はまず、変数Ｋに格納された現在押鍵中のキーナンバの値が、変数Ｗが示す現在の波形番号値に対応する最低キーナンバ要素値ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＬＯ（図６（ａ）参照）の値以上であるか否かを判定する（ステップＳ１１０２）。ここで、最低キーナンバ要素値ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＬＯとしては、変数Ｃ＿ＴＯＮＥが示す現在選択されている音色に対応するＲＯＭ２０２内の音色波形スプリット情報テーブル（図３（ｂ）参照）の「最低キーナンバ」項目値が予めコピーされている（前述した図８のステップＳ８０２内の図９のステップＳ９０３参照）。ステップＳ１１０２の判定がＮｏならば、変数Ｗが示す波形番号の波形データは現在押鍵中の鍵域及びベロシティに対応するスプリット波形ではないため、ステップＳ１１０６に移行する。
【００６５】
ステップＳ１１０２の判定がＹｅｓならば、ＣＰＵ２０１は、変数Ｋに格納された現在押鍵中のキーナンバの値が、変数Ｗが示す現在の波形番号値に対応する最高キーナンバ要素値ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＨＩ（図６（ａ）参照）の値以下であるか否かを判定する（ステップＳ１１０３）。ここで、最高キーナンバ要素値ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＨＩとしては、変数Ｃ＿ＴＯＮＥが示す現在選択されている音色に対応するＲＯＭ２０２内の音色波形スプリット情報テーブル（図３（ｂ）参照）の「最高キーナンバ」項目値が予めコピーされている（前述した図８のステップＳ８０２内の図９のステップＳ９０３参照）。ステップＳ１１０３の判定がＮｏならば、変数Ｗが示す波形番号の波形データは現在押鍵中の鍵域及びベロシティに対応するスプリット波形ではないため、ステップＳ１１０６に移行する。
【００６６】
ステップＳ１１０３の判定がＹｅｓならば、ＣＰＵ２０１は、変数Ｖに格納された現在押鍵中のベロシティの値が、変数Ｗが示す現在の波形番号値に対応する最低ベロシティ要素値ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＬＯ（図６（ａ）参照）の値以上であるか否かを判定する（ステップＳ１１０４）。ここで、最低ベロシティ要素値ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＬＯとしては、変数Ｃ＿ＴＯＮＥが示す現在選択されている音色に対応するＲＯＭ２０２内の音色波形スプリット情報テーブル（図３（ｂ）参照）の「最低ベロシティ」項目値が予めコピーされている（前述した図８のステップＳ８０２内の図９のステップＳ９０３参照）。ステップＳ１１０４の判定がＮｏならば、変数Ｗが示す波形番号の波形データは現在押鍵中の鍵域及びベロシティに対応するスプリット波形ではないため、ステップＳ１１０６に移行する。
【００６７】
ステップＳ１１０４の判定がＹｅｓならば、ＣＰＵ２０１は、変数Ｖに格納された現在押鍵中のベロシティの値が、変数Ｗが示す現在の波形番号値に対応する最高ベロシティ要素値ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＨＩ（図６（ａ）参照）の値以下であるか否かを判定する（ステップＳ１１０５）。ここで、最高ベロシティ要素値ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＨＩとしては、変数Ｃ＿ＴＯＮＥが示す現在選択されている音色に対応するＲＯＭ２０２内の音色波形スプリット情報テーブル（図３（ｂ）参照）の「最高ベロシティ」項目値が予めコピーされている（前述した図８のステップＳ８０２内の図９のステップＳ９０３参照）。ステップＳ１１０５の判定がＮｏならば、変数Ｗが示す波形番号の波形データは現在押鍵中の鍵域及びベロシティに対応するスプリット波形ではないため、ステップＳ１１０６に移行する。
【００６８】
ステップＳ１１０５の判定がＹｅｓならば、現在押鍵中の鍵域が変数Ｗが示す波形番号の波形データに設定されている最低キーナンバ以上最高キーナンバ以下の範囲にあり、かつ現在押鍵中のベロシティが上記波形データに設定されている最低ベロシティ以上最高ベロシティ以下の範囲にあり、現在の押鍵に対して発音処理されるべき波形データである。このため、ＣＰＵ２０１は、変数Ｗが示す波形番号を戻り値として、図１１のフローチャートで示される図１０のステップＳ１００１のスプリット波形検索サブルーチンを終了する。なお、このサブルーチンの戻り値は波形番号Ｗであるが、理論的にはスプリットの設定によっては発音しない鍵域を残すことも可能であり、その場合は波形番号として例えば３２を返す。
【００６９】
図１２は、図７のステップＳ７０４の音色切替え処理の詳細例を示すフローチャートである。ここで、ＲＡＭ２０３上の変数Ｔに演奏者によって選択された音色番号が設定されているとする。
【００７０】
ＣＰＵ２０１はまず、変数Ｔに得られた音色番号が、変数Ｃ＿ＴＯＮＥに得られている現在の音色番号に一致するか否かを判定する（ステップＳ１２０１）。ステップＳ１２０１の判定がＹｅｓならば、音色を切り替える必要はないため、そのまま図１２のフローチャートで示される図７のステップＳ７０４の音色切替え処理を終了する。
【００７１】
ステップＳ１２０１の判定がＮｏならば、ＣＰＵ２０１はまず、図２の音源ＬＳＩ２０５に対して現在の発音を停止させる（ステップＳ１２０２）。
【００７２】
次に、ＣＰＵ２０１は、変数Ｃ＿ＴＯＮＥに、変数Ｔに新たに得られた音色番号の値を格納する（ステップＳ１２０３）。
【００７３】
次に、ＣＰＵ２０１は、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｗの値について、ステップＳ１２０４で「０」にリセットした後、ステップＳ１２０６で＋１ずつインクリメントしながら、ステップＳ１２０７で３２に達したと判定するまで、変数Ｗが示す現在の波形番号値に対応する波形メモリ２０６上での波形の有無を示す要素ＷＭ＿ＳＴ［Ｗ］．ＷＡＶＥ（図６（ａ）参照）に無効値「０」を格納して初期化する処理（ステップＳ１２０５）を、繰り返し実行する。
【００７４】
その後、ＣＰＵ２０１は、図７のステップＳ７０１の初期化処理における図８のステップＳ８０２及びＳ８０３と同様の、音色波形情報転送サブルーチンの処理（ステップＳ１２０８）を実行する。ステップＳ１２０８の処理により、新たな音色に対して、ＲＯＭ２０２上の音色波形スプリット情報テーブルの各項目値がＲＡＭ２０３に転送される。また、ＣＰＵ２０１は、図７のステップＳ７０１の初期化処理における図８のステップＳ８０３と同様の、変数ＲＥＡＤＩＮＧ＿ＷＡＶＥに無効値「−１」を格納する処理（ステップＳ１２０９）を実行する。
【００７５】
その後、ＣＰＵ２０１は、図１２のフローチャートで示される図７のステップＳ７０４の音色切替え処理を終了する。
【００７６】
図１３及び図１４は、図７のステップＳ７１１の波形読込み処理の詳細例を示すフローチャートである。演奏による発音処理を止めないようにするために、図７に例示したメインループにおいて、ステップＳ７１１で波形読込み処理だけに処理を集中させず、他の処理も並行に処理するために、ステップＳ７１１で波形読込み処理の１回の実行においては、一定の容量のメモリ転送が完了した時点で処理を中断し、他のメインループの処理を行って再び波形転送プログラムが起動された時に処理が再開される。
【００７７】
ＣＰＵ２０１はまず、ＲＡＭ２０３上の変数である現在読込み中の波形の番号ＲＥＡＤＩＮＧ＿ＷＡＶＥの値が無効値「−１」であるか否か、すなわち、現在波形データの読込みが行われていないか否かを判定する（図１３のステップＳ１３０１）。
【００７８】
現在波形データの読込みが行われていない（ステップＳ１３０１の判定がＹｅｓである）場合には、ＣＰＵ２０１は、最優先読込み波形検索サブルーチンを実行する（図１３のステップＳ１３０２）。この処理では、ＲＡＭ２０３の読込み優先度を格納する構造体要素ＷＰ＿ＳＴ［Ｗ］．ＰＲＩ（０≦Ｗ≦３１）（図５（ｂ）及び図６（ａ）参照）の値が順次調べられ、波形転送が必要かつ、完了していないもの中で最も優先順位の高い波形データが選定される。図１５は、図１３のステップＳ１３０２の最優先読込み波形検索サブルーチンの詳細処理例を示すフローチャートである。
【００７９】
図１５のフローチャートにおいて、ＣＰＵ２０１はまず、読込み優先度の値が格納される変数Ｐの値を、ステップＳ１２０５で最低優先度より一つ低い値「３２」に初期化する。また、ＣＰＵ２０１は、波形番号カウンタとして動作するＲＡＭ２０３上の変数Ｘの値を「０」に初期化する。更に、ＣＰＵ２０１は、最高優先度の波形番号を格納する変数をＷとする（ステップＳ１５０１）。
【００８０】
その後、ＣＰＵ２０１は、変数Ｘの値について、上述のようにステップＳ１５０１で「０」にリセットした後、ステップＳ１５０５で＋１ずつインクリメントしながら、ステップＳ１５０６で３２に達したと判定するまで、ステップＳ１５０２からＳ１５０４までの一連の処理を、繰り返し実行する。
【００８１】
これらの一連の処理において、ＣＰＵ２０１はまず、変数Ｘが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｘ］．ＷＡＶＥ（図６（ａ）参照）の値が０であるか否か、即ち、変数Ｘが示す波形番号の波形データが波形メモリ２０６上に存在しないか否かを判定する（ステップＳ１５０２）。
【００８２】
当該波形データが波形メモリ２０６上に存在しない場合（ステップＳ１５０２の判定がＹｅｓの場合）、ＣＰＵ２０１は、変数Ｘが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｘ］．ＰＲＩの値が変数Ｐの値よりも小さいか否か、即ち、変数Ｘが示す波形番号の波形データの読込み優先度が、変数Ｐに設定されている現時点で最も高い優先度よりも高いか否かを判定する（ステップＳ１５０３）。
【００８３】
ステップＳ１５０３の判定がＹｅｓならば、ＣＰＵ２０１は、変数Ｐの値を変数Ｘが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｘ］．ＰＲＩの値で置き換え、最高優先度の波形番号を格納する変数Ｗに変数Ｘが示す波形番号を格納する（ステップＳ１５０４）。これにより、現在の変数Ｘが示す波形番号が最高優先度の波形番号として設定される。
【００８４】
当該波形データが波形メモリ２０６上に既に存在して新たに読み込む必要がない場合（ステップＳ１５０２の判定がＮｏの場合）、又は変数Ｘが示す波形番号の波形データの読込み優先度が変数Ｐに設定されている優先度よりも高くはない場合（ステップＳ１５０３の判定がＮｏの場合）には、ステップＳ１５０４の処理はスキップされる。
【００８５】
以上のステップＳ１５０２からＳ１５０４の処理が１≦Ｘ≦３１の範囲で繰り返し実行された結果、ステップＳ１５０６の判定がＹｅｓになると、ＣＰＵ２０１は、図１５のフローチャートで示される図１３のステップＳ１３０２の最優先読込み波形検索サブルーチンの処理を終了する。この結果、最終的に変数Ｗに、波形転送が必要かつ完了していないもの中で最も優先順位の高い波形データの波形番号が得られる。
【００８６】
ステップＳ１３０２の後、ＣＰＵ２０１は、現在読込み中の波形の番号を保持する変数ＲＥＡＤＩＮＧ＿ＷＡＶＥ（図６（ａ）参照）に変数Ｗに格納されている波形番号を格納する。また、ＣＰＵ２０１は、変数Ｗが示す波形番号に対応する大容量フラッシュメモリ２０４から波形メモリ２０６へ前回までに転送済みの波形データのサイズを示す構造体要素ＷＭ＿ＳＴ［Ｗ］．ＲＥＡＤ＿ＳＩＺＥに、未転送を示す値「０」を格納する（以上、図１３のステップＳ１３０３）。
【００８７】
一方、現在波形データの読込みが継続している（ステップＳ１３０１の判定がＮｏである）場合には、ＣＰＵ２０１は、変数Ｗに変数ＲＥＡＤＩＮＧ＿ＷＡＶＥが保持する波形番号をセットする（図１３のステップＳ１３０４）。その後、ＣＰＵ２０１は、図１３のステップＳ１３０５から図１４のステップＳ１３０６以降の処理に移行し、変数Ｗに再度セットされた波形番号の残りの波形データを大容量フラッシュメモリ２０４から波形メモリ２０６へ転送する処理を実行する。
【００８８】
上記図１３のステップＳ１３０３又はＳ１３０４の処理の後、ＣＰＵ２０１は、ＲＡＭ２０３上の変数である今回読込みサイズカウンタ変数ｃに初期値「０」をセットする。また、ＣＰＵ２０１は、大容量フラッシュメモリ２０４上の読込みアドレスを示すＲＡＭ２０３上の変数ｒｐに、図９のステップＳ８０２内の図９のステップＳ９０１で変数ＦＬＡＳＨ＿ＯＦＦＳＥＴに格納された読込み音色の波形の大容量フラッシュメモリ２０４上での格納先頭アドレス値をセットする。更に、ＣＰＵ２０１は、波形メモリ２０６上の書込みアドレスを示すＲＡＭ２０３上の変数ｗｐに、図９のステップＳ８０２内の図９のステップＳ９０３で変数Ｗの波形番号に対応する構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＦＦＳＥＴ＿ＡＤＲＳに格納された波形メモリ２０６上の音色先頭からのアドレス値をセットする。加えて、ＣＰＵ２０１は、大容量フラッシュメモリ２０４から波形メモリ２０６へ今回までに転送済みの波形データのサイズを示すＲＡＭ２０３上の変数ｒｓに、変数Ｗが示す波形番号に対応する前回までに転送済みの波形データのサイズを示す構造体要素ＷＭ＿ＳＴ［Ｗ］．ＲＥＡＤ＿ＳＩＺＥ（後述する図１４のステップＳ１３１３参照）の値を格納する（以上、図１３のステップＳ１３０５）。
【００８９】
その後、ＣＰＵ２０１は、図１４のステップＳ１３０６以降の処理に移行し、変数Ｗに得られた波形番号の波形データを大容量フラッシュメモリ２０４から波形メモリ２０６へ転送する処理を開始する。
【００９０】
ＣＰＵ２０１はまず、大容量フラッシュメモリ２０４からの読込み処理を実行する（図１４のステップＳ１３０６）。即ち、ＣＰＵ２０１は、図１３のステップＳ１３０５で変数ｒｐにセットされた大容量フラッシュメモリ２０４上での波形格納先頭アドレス値に、同じくステップＳ１３０５で今回までに転送済みの波形データのサイズを示す変数ｒｓにセットされた変数Ｗが示す波形番号に対応する前回までに転送済みの波形データのサイズを加算して得られるアドレスから、１ワード分の波形データを読み込み、ＲＡＭ２０３上の変数ｄに格納する。
【００９１】
次に、ＣＰＵ２０１は、波形メモリ２０６への書込み処理を実行する（図１４のステップＳ１３０７）。即ち、ＣＰＵ２０１は、図１３のステップＳ１３０５で波形メモリ２０６上の書込みアドレスを示す変数ｗｐにセットされた音色先頭からのアドレス値に、同じくステップＳ１３０５で今回までに転送済みの波形データのサイズを示す変数ｒｓにセットされた変数Ｗが示す波形番号に対応する前回までに転送済みの波形データのサイズを加算して得られるアドレスに、変数ｄに格納されている１ワード分の波形データを、音源ＬＳＩ２０５経由で書き込む。
【００９２】
その後、ＣＰＵ２０１は、今回までに転送済みの波形データのサイズを示す変数ｒｓの値を＋１インクリメントし、今回読込みサイズカウンタ変数ｃの値を＋１インクリメントする（図１４のステップＳ１３０８）。
【００９３】
そして、ＣＰＵ２０１は、今回までに転送済みの波形データのサイズを示す変数ｒｓの値が、カウンタ変数Ｗが示す波形番号に対応する波形データのサイズ要素ＷＭ＿ＳＴ［Ｗ］．ＷＡＶＥ＿ＳＩＺＥの値に等しくなったか否かを判定する（図１４のステップＳ１３０９）。
【００９４】
ステップＳ１３０９の判定がＮｏならば、ＣＰＵ２０１は、今回読込みサイズカウンタ変数ｃの値が１０００００バイトに等しくなったか否か、すなわち、今回転送されたサイズが１００ＫＢ（キロバイト）に達したか否かを判定する（図１４のステップＳ１３１０）。
【００９５】
ステップＳ１３１０の判定がＮｏならば、ＣＰＵ２０１は、ステップＳ１３０６の処理に戻って転送を続行する。
【００９６】
ステップＳ１３０９の判定がＹｅｓになると、ＣＰＵ２０１は、変数Ｗが示す現在の波形番号値に対応する波形メモリ２０６上での波形の有無を示す要素ＷＭ＿ＳＴ［Ｗ］．ＷＡＶＥ（図６（ａ）参照）に、波形有りを示す値「１」をセットする。また、ＣＰＵ２０１は、現在読込み中の波形の番号を示す変数ＲＥＡＤＩＮＧ＿ＷＡＶＥ（図６（ａ）参照）に、無効値「−１」を格納する（以上、図１４のステップＳ１３１１）。
【００９７】
続いて、ＣＰＵ２０１は、実効スプリット情報設定サブルーチンの処理を実行する（図１４のステップＳ１３１２）。ＣＰＵ２０１は、この処理において、現在、音源ＬＳＩ２０５の波形メモリ２０６に読み込まれている波形データを調査し、その波形データのスプリットカバー範囲を設定する。ＣＰＵ２０１は、全ての波形データが揃っていない状態であっても、１つ以上の波形データが存在する場合に、全鍵域、全ベロシティ域をカバーするよう読み込まれている波形データの一時的な実効スプリットポイントを設定する。この処理の詳細については、後述する。
【００９８】
ステップＳ１３１２の処理の後、又はステップＳ１３１０の判定がＹｅｓとなったら、ＣＰＵ２０１は、変数Ｗが示す波形番号に対応する大容量フラッシュメモリ２０４から波形メモリ２０６へ前回までに転送済みの波形データのサイズを示す構造体要素ＷＭ＿ＳＴ［Ｗ］．ＲＥＡＤ＿ＳＩＺＥに、今回までに転送済みの波形データのサイズを示す変数ｒｓの値を格納する（図１４のステップＳ１３１３）。
【００９９】
その後、ＣＰＵ２０１は、図１３及び図１４のフローチャートで示される図７のステップＳ７１１の波形読込み処理を終了する。
【０１００】
このように、本実施形態では、一定の容量（例えば１００ＫＢ）のメモリ転送が完了した時点で処理が中断され、他のメインループの処理を行って再び波形転送プログラムが起動された時に図１３のステップＳ１３０２からＳ１３０３を介して、処理が再開される。このとき、変数Ｗの波形番号に対応する前回までに転送済みのデータサイズを示す要素値ＷＭ＿ＳＴ［Ｗ］．ＲＥＡＤ＿ＳＩＺＥには、図１４のステップＳ１３１３の処理によって前回までに転送が完了したサイズが格納されているため、図１３のステップＳ１３０５、図１４のステップＳ１３０６及びＳ１３０７のアドレス演算処理によって、前回転送が完了したアドレスの次のアドレスから転送を再開することができる。
【０１０１】
図１６は、図１４のステップＳ１３１２の実効スプリット情報設定サブルーチンの詳細処理例を示すフローチャートである。ＣＰＵ２０１は、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｗの値について、ステップＳ１６０１で「０」にリセットした後、ステップＳ１６０８で＋１ずつインクリメントしながら、ステップＳ１６０９で３２に達したと判定するまで、ステップＳ１６０２からＳ１６０７の一連の処理を、繰り返し実行する。
【０１０２】
これら一連の処理において、ＣＰＵ２０１はまず、変数Ｗが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｗ］．ＷＡＶＥ（図６（ａ）参照）の値が０であるか否か、即ち、変数Ｗが示す波形番号の波形データが波形メモリ２０６上に存在しないか否かを判定する（ステップＳ１６０２）。
【０１０３】
変数Ｗが示す波形番号の波形データが波形メモリ２０６上に存在しない（ステップＳ１６０２の判定がＹｅｓ）ならば、ＣＰＵ２０１は、変数Ｗが示す現在の波形番号値に対応する最高キーナンバ要素値ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＨＩ、最低キーナンバ要素値ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＬＯ、最高ベロシティ要素値ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＨＩ、最低ベロシティ要素値ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＬＯ（図６（ａ）参照）に、値「０」を格納する（ステップＳ１６０７）。この結果、前述した図７のステップＳ７０７の音源発音処理内の図１０のステップＳ１００１内の図１１のスプリット波形検索サブルーチンにおいて、変数Ｗが示す波形番号に対応する波形エリアは選択されることはない。
【０１０４】
変数Ｗが示す波形番号の波形データが波形メモリ２０６上に存在する（ステップＳ１６０２の判定がＮｏ）ならば、ＣＰＵ２０１は、カバー範囲のベロシティ域上限設定ルーチン（ステップＳ１６０３）、カバー範囲のベロシティ域下限設定ルーチン（ステップＳ１６０４）、カバー範囲の鍵域上限設定ルーチン（ステップＳ１６０５）、及びカバー範囲の鍵域下限設定ルーチン（ステップＳ１６０６）を順次実行する。その後、ＣＰＵ２０１は、ステップＳ１６０８に移行する。
【０１０５】
図１７は、図１６のステップＳ１６０３のカバー範囲のベロシティ域上限設定ルーチンの詳細処理例を示すフローチャートである。
【０１０６】
図１７のフローチャートにおいて、ＣＰＵ２０１はまず、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｃの値について、ステップＳ１７０１で「０」にリセットした後、ステップＳ１７０４で＋１ずつインクリメントしながら、ステップ１７０５で３２に達したと判定するまで、Ｓ１７０２及びＳ１７０３の処理を、繰り返し実行することにより、波形メモリ２０６に読込み済みの調査対象波形よりも上のベロシティ域に配置される波形データを検索する。以下に示すように、波形データが存在すれば、変数Ｃの波形番号が示す比較対象の波形データが上のベロシティレンジをカバーするので拡張はしない。波形データが存在しなければ、変数Ｗの波形番号が示す調査対象の波形データがベロシティレンジ１２７までカバーする。
【０１０７】
まずステップＳ１７０２において、ＣＰＵ２０１は、変数Ｃが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｃ］．ＷＡＶＥ（図６（ａ）参照）の値が０であるか否か、即ち、変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しないか否かを判定する（ステップＳ１７０２）。
【０１０８】
変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在する（ステップＳ１７０２の判定がＮｏである）場合には、ステップＳ１７０３において、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが本来発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＲＧ＿ＶＥＬ＿ＨＩの値よりも、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最小ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＶＥＬ＿ＬＯの値のほうが大きいか否かを判定する。ステップＳ１７０３の判定がＮｏならば、ＣＰＵ２０１は、ステップＳ１７０４に移行して、次の比較対象について調査する。変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しない（ステップＳ１７０２の判定がＹｅｓである）場合には、ＣＰＵ２０１は、ステップＳ１７０３の判定処理はスキップする。なお特には図示しないが、ＣＰＵ２０１は、Ｃ＝Ｗの場合も、ステップＳ１７０３の判定処理はスキップする。
【０１０９】
１つでもステップＳ１７０３の判定がＹｅｓになると、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが現在発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＨＩに、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＶＥＬ＿ＨＩの値を格納する（ステップＳ１７０７）。その後、ＣＰＵ２０１は、図１７のフローチャートで示される図１６のステップＳ１６０３のカバー範囲のベロシティ域上限設定ルーチンを終了する。
【０１１０】
ステップＳ１７０３の判定がＮｏのまま、全ての３２の比較対象について調査が終了しステップＳ１７０５の判定がＹｅｓになると、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが現在発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＨＩに、ベロシティ最大値「１２７」を格納する。その後、ＣＰＵ２０１は、図１７のフローチャートで示される図１６のステップＳ１６０３のカバー範囲のベロシティ域上限設定ルーチンを終了する。
【０１１１】
図１８は、図１６のステップＳ１６０４のカバー範囲のベロシティ域下限設定ルーチンの詳細処理例を示すフローチャートである。
【０１１２】
図１８のフローチャートにおいて、ＣＰＵ２０１はまず、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｃの値について、ステップＳ１８０１で「０」にリセットした後、ステップＳ１８０６で＋１ずつインクリメントしながら、ステップ１８０７で３２に達したと判定するまで、Ｓ１８０２からＳ１８０５の一連の処理を、繰り返し実行することにより、調査対象波形よりも下のベロシティ域に配置される波形データを検索する。以下に示すように、波形データが存在すれば、変数Ｃの波形番号が示す比較対象の波形データの中で最も近くに配置されるベロシティ域の上限の１つ上までを変数Ｗの波形番号が示す調査対象の波形データがカバーする。波形データが１つも存在しなければ、変数Ｗの波形番号が示す調査対象の波形データがベロシティ域０までカバーする。また、ＣＰＵ２０１は、ステップＳ１８０１において、ＲＡＭ２０３上の変数ＶＥＬＯ＿ＬＯに初期値「０」を格納する。
【０１１３】
これら一連の処理において、ＣＰＵ２０１はまず、変数Ｃが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｃ］．ＷＡＶＥ（図６（ａ）参照）の値が０であるか否か、即ち、変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しないか否かを判定する（ステップＳ１８０２）。
【０１１４】
変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在する（ステップＳ１８０２の判定がＮｏである）場合には、ＣＰＵ２０１は、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＶＥＬ＿ＨＩの値よりも、変数Ｗが示す調査対象となる波形番号の波形データが本来発音する範囲の最小ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＲＧ＿ＶＥＬ＿ＬＯの値のほうが大きいか否かを判定する（ステップＳ１８０３）。
【０１１５】
ステップＳ１８０３の判定がＹｅｓならば、ＣＰＵ２０１は更に、変数ＶＥＬＯ＿ＬＯの値よりも変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＶＥＬ＿ＨＩの値のほうが大きいか否かを判定する（ステップＳ１８０４）。
【０１１６】
ステップＳ１８０４の判定もＹｅｓならば、ＣＰＵ２０１は、変数ＶＥＬＥ＿ＬＯに、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最大ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＶＥＬ＿ＨＩの値を格納する（ステップＳ１８０５）。
【０１１７】
変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しない（ステップＳ１８０２の判定がＹｅｓである）場合、ステップＳ１８０３の判定がＮｏである場合、又はステップＳ１８０４の判定がＮｏである場合には、ＣＰＵ２０１は、ステップＳ１８０５の処理はスキップする。なお特には図示しないが、ＣＰＵ２０１は、Ｃ＝Ｗの場合も、ステップＳ１８０５の判定処理はスキップする。
【０１１８】
以上の調査が３２の比較対象全てについて終了し、ステップＳ１８０７の判定がＹｅｓとなると、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが現在発音する範囲の最小ベロシティが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＶＥＬ＿ＬＯに、変数ＶＥＬＯ＿ＬＯの値が格納される（ステップＳ１８０８）。その後、ＣＰＵ２０１は、図１８のフローチャートで示される図１６のステップＳ１６０４のカバー範囲のベロシティ域下限設定ルーチンを終了する。
【０１１９】
図１９は、図１６のステップＳ１６０５のカバー範囲の鍵域上限設定ルーチンの詳細処理例を示すフローチャートである。
【０１２０】
図１９のフローチャートにおいて、ＣＰＵ２０１はまず、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｃの値について、ステップＳ１９０１で「０」にリセットした後、ステップＳ１９０４で＋１ずつインクリメントしながら、ステップ１７０５で３２に達したと判定するまで、Ｓ１９０２及びＳ１９０３の処理を、繰り返し実行することにより、調査対象波形よりも上の鍵域に配置される波形データを検索する。以下に示すように、波形データが存在すれば、変数Ｃの波形番号が示す比較対象の波形データが上のキーレンジをカバーするので拡張はしない。波形データが存在しなければ、変数Ｗの波形番号が示す調査対象の波形データがキーレンジ１２７までカバーする。
【０１２１】
まずステップＳ１９０２において、ＣＰＵ２０１は、変数Ｃが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｃ］．ＷＡＶＥ（図６（ａ）参照）の値が０であるか否か、即ち、変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しないか否かを判定する（ステップＳ１９０２）。
【０１２２】
変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在する（ステップＳ１９０２の判定がＮｏである）場合には、ステップＳ１９０３において、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが本来発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＲＧ＿ＫＥＹ＿ＨＩの値よりも、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最低キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＫＥＹ＿ＬＯの値のほうが大きいか否かを判定する。ステップＳ１９０３の判定がＮｏならば、ＣＰＵ２０１は、ステップＳ１９０４に移行して、次の比較対象について調査する。変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しない（ステップＳ１９０２の判定がＹｅｓである）場合には、ＣＰＵ２０１は、ステップＳ１９０３の判定処理はスキップする。なお特には図示しないが、ＣＰＵ２０１は、Ｃ＝Ｗの場合も、ステップＳ１９０３の判定処理はスキップする。
【０１２３】
１つでもステップＳ１９０３の判定がＹｅｓになると、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが現在発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＨＩに、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＫＥＹ＿ＨＩの値を格納する（ステップＳ１９０７）。その後、ＣＰＵ２０１は、図１９のフローチャートで示される図１６のステップＳ１６０５のカバー範囲の鍵域上限設定ルーチンを終了する。
【０１２４】
ステップＳ１９０３の判定がＮｏのまま、全ての３２の比較対象について調査が終了しステップＳ１９０５の判定がＹｅｓになると、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが現在発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＨＩに、キーナンバ最大値「１２７」を格納する。その後、ＣＰＵ２０１は、図１９のフローチャートで示される図１６のステップＳ１６０５のカバー範囲の鍵域上限設定ルーチンを終了する。
【０１２５】
図２０は、図１６のステップＳ１６０６のカバー範囲の鍵域下限設定ルーチンの詳細処理例を示すフローチャートである。
【０１２６】
図２０のフローチャートにおいて、ＣＰＵ２０１はまず、波形メモリ２０６上の波形エリア毎の波形番号カウント用のＲＡＭ２０３上の変数Ｃの値について、ステップＳ２００１で「０」にリセットした後、ステップＳ２００６で＋１ずつインクリメントしながら、ステップ１８０７で３２に達したと判定するまで、Ｓ２００２からＳ２００５の一連の処理を、繰り返し実行することにより、調査対象波形よりも下の鍵域に配置される波形データを検索する。以下に示すように、波形データが存在すれば、変数Ｃの波形番号が示す比較対象の波形データの中で最も近くに配置される鍵域の上限の１つ上までを変数Ｗの波形番号が示す調査対象の波形データがカバーする。波形データが１つも存在しなければ、変数Ｗの波形番号が示す調査対象の波形データが鍵域０までカバーする。また、ＣＰＵ２０１は、ステップＳ２００１において、ＲＡＭ２０３上の変数ＫＥＹ＿ＬＯに初期値「０」を格納する。
【０１２７】
これら一連の処理において、ＣＰＵ２０１はまず、変数Ｃが示す波形番号に対応する構造体ＷＭ＿ＳＴ［Ｃ］．ＷＡＶＥ（図６（ａ）参照）の値が０であるか否か、即ち、変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しないか否かを判定する（ステップＳ２００２）。
【０１２８】
変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在する（ステップＳ２００２の判定がＮｏである）場合には、ＣＰＵ２０１は、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＫＥＹ＿ＨＩの値よりも、変数Ｗが示す調査対象となる波形番号の波形データが本来発音する範囲の最低キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＯＲＧ＿ＫＥＹ＿ＬＯの値のほうが大きいか否かを判定する（ステップＳ２００３）。
【０１２９】
ステップＳ２００３の判定がＹｅｓならば、ＣＰＵ２０１は更に、変数ＫＥＹ＿ＬＯの値よりも変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＫＥＹ＿ＨＩの値のほうが大きいか否かを判定する（ステップＳ２００４）。
【０１３０】
ステップＳ２００４の判定もＹｅｓならば、ＣＰＵ２０１は、変数ＫＥＹ＿ＬＯに、変数Ｃが示す比較対象となる波形番号の波形データが本来発音する範囲の最高キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｃ］．ＯＲＧ＿ＫＥＹ＿ＨＩの値を格納する（ステップＳ２００５）。
【０１３１】
変数Ｃが示す波形番号の波形データが波形メモリ２０６上に存在しない（ステップＳ２００２の判定がＹｅｓである）場合、ステップＳ２００３の判定がＮｏである場合、又はステップＳ２００４の判定がＮｏである場合には、ＣＰＵ２０１は、ステップＳ２００５の処理はスキップする。なお特には図示しないが、ＣＰＵ２０１は、Ｃ＝Ｗの場合も、ステップＳ２００５の判定処理はスキップする。
【０１３２】
以上の調査が３２の比較対象全てについて終了し、ステップＳ２００７の判定がＹｅｓとなると、ＣＰＵ２０１は、変数Ｗが示す調査対象となる波形番号の波形データが現在発音する範囲の最低キーナンバが格納される構造体要素ＷＭ＿ＳＴ［Ｗ］．ＫＥＹ＿ＬＯに、変数ＫＥＹ＿ＬＯの値が格納される（ステップＳ２００８）。その後、ＣＰＵ２０１は、図２０のフローチャートで示される図１６のステップＳ１６０６のカバー範囲の鍵域下限設定ルーチンを終了する。
【０１３３】
以上説明したように、本実施形態では、複数波形に依って構成される音色選択が発生した際に、その音色において、鍵域や演奏の強さ(ベロシティ)などの使用頻度や、各鍵域、強さの波形の汎用性を考慮し、予め波形メモリ２０６に波形データをロードする順序を音色毎に決定しておいたり、あるいは実際の演奏を解析して各波形の使用頻度を求めたりして、その順序に従って波形メモリ２０６への波形データの読み込みを行い、読込みが完了した波形を代用して、読込み中もしくはこれから読込みを行う波形の鍵域、強さ(ベロシティ域)を読込みが完了するまで一時的にカバーして発音させることが可能となる。この結果として、音色切替えに伴う波形入替えによる無音状態の時間を最初の波形の読込み時間のみに短縮することがでる。例えば最初に読み込まれる波形データが全体の波形の1０％の容量であれば、最後に読み込まれる波形データに対応した演奏を行った場合の発音可能になるまでの待ち時間は１０分の１と大幅に短縮できることになる。これにより、演奏者のストレスを軽減、或いは全く感じさせないレベルに抑制することができる。
【０１３４】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
楽音の音色毎でかつ、複数種の演奏情報夫々に対応した複数種の音色波形データを記憶する二次記憶装置から、前記複数種の音色波形データを順次読み出し、前記読み出した音色波形データを二次記憶装置に順次書き込む波形書き込み処理と、
前記演奏情報が入力した際に前記演奏情報に対応する音色波形データの書き込みが完了していない場合は、前記一次記憶装置への読込みが完了している他の音色波形データを読み出す読み出し処理と、を実行する処理部と、
を備えた波形書き込み装置。
（付記２）
前記処理部は、前記書き込み処理として、音色選択情報の入力に応答して、楽音の音色毎でかつ、複数種の演奏情報夫々に対応した複数種の音色波形データを記憶する二次記憶装置から、前記入力した音色選択情報に対応する複数種の音色波形データを順次読み出し、前記読み出した音色波形データを二次記憶装置に順次書き込む処理を実行する、付記１に記載の波形書き込み装置。
（付記３）
前記処理部は、前記読み出し処理として、前記演奏情報の入力に応答して、前記演奏情報に対応する音色波形データが前記二次記憶装置に書き込みが完了されているか否か判別し、前記書き込みが完了していると判別された場合は、前記演奏情報に対応する音色波形データを前記二次記憶装置から読み出すとともに、前記書き込みが完了していないと判別された場合は、前記一次記憶装置への読込みが完了している他の音色波形データを読み出す処理を実行する、付記１又は２に記載の波形書き込み装置。
（付記４）
前記演奏情報は、発生すべき楽音の音高情報とベロシティ情報とを少なくとも含み、
前記複数種の音色波形データ夫々は、前記音高情報及びベロシティ情報の少なくとも一方が異なる演奏情報夫々に対応する、付記１乃至３のいずれかに記載の波形書き込み装置。
（付記５）
前記処理部は、前記読み出し処理において、前記他の波形データは、前記入力された演奏情報の音高情報より低い音高情報を有する演奏情報に対応する音色波形データ及び前記入力された演奏情報のベロシティ情報より小さいベロシティ情報を有する演奏情報に対応する音色波形データのいずれか一方である、付記４に記載の波形書き込み装置。
（付記６）
前記二次記憶装置は、ランダムアクセスメモリを備え、前記一次記憶装置は、前記二次記憶装置より容量の大きいフラッシュメモリを備えた、付記１乃至４のいずれかに記載の波形書き込み装置。
（付記７）
処理部を有する波形書き込み装置に用いられる波形書き込み方法であって、前記処理部が、
楽音の音色毎でかつ、複数種の演奏情報夫々に対応した複数種の音色波形データを記憶する二次記憶装置から、前記複数種の音色波形データを順次読み出し、前記読み出した音色波形データを二次記憶装置に順次書き込み、
前記演奏情報が入力した際に前記演奏情報に対応する音色波形データの書き込みが完了していない場合は、前記一次記憶装置への読込みが完了している他の音色波形データを読み出す、波形読み込み方法。
（付記８）
波形書き込み装置として用いられるコンピュータに、
楽音の音色毎でかつ、複数種の演奏情報夫々に対応した複数種の音色波形データを記憶する二次記憶装置から、前記複数種の音色波形データを順次読み出し、前記読み出した音色波形データを二次記憶装置に順次書き込む波形書き込みステップと、
前記演奏情報が入力した際に前記演奏情報に対応する音色波形データの書き込みが完了していない場合は、前記一次記憶装置への読込みが完了している他の音色波形データを読み出す読み出しステップと、
を実行させるプログラム。
（付記９）
付記１乃至６のいずれかに記載の波形書き込み装置と、
演奏情報を入力する演奏操作子と、
複数種の音色波形データが記憶された一次記憶装置と、
二次記憶装置と、
前記演奏操作子からの演奏情報により前記二次記憶装置から読み出された音色波形データに基づいた音色の楽音を生成する音源と、
を有する電子楽器。
【符号の説明】
【０１３５】
１００  電子鍵盤楽器
１０１  鍵盤
１０２  音色選択ボタン
１０３  機能選択ボタン
１０４  ベンダ／モジュレーション・ホイール
１０５  ＬＣＤ
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  大容量フラッシュメモリ
２０５  音源ＬＳＩ
２０６  波形メモリ
２０７  キー・スキャナ
２０８  Ａ／Ｄコンバータ
２０９  ＬＣＤコントローラ
２１０  Ｄ／Ａコンバータ
２１１  アンプ
２１３  ＭＩＤＩ  Ｉ／Ｆ
２１４  システムバス
【図１】
0006724316.tif 000002
【図２】
0006724316.tif 000003
【図３】
0006724316.tif 000004
【図４】
0006724316.tif 000005
【図５】
0006724316.tif 000006
【図６】
0006724316.tif 000007
【図７】
0006724316.tif 000008
【図８】
0006724316.tif 000009
【図９】
0006724316.tif 000010
【図１０】
0006724316.tif 000011
【図１１】
0006724316.tif 000012
【図１２】
0006724316.tif 000013
【図１３】
0006724316.tif 000014
【図１４】
0006724316.tif 000015
【図１５】
0006724316.tif 000016
【図１６】
0006724316.tif 000017
【図１７】
0006724316.tif 000018
【図１８】
0006724316.tif 000019
【図１９】
0006724316.tif 000020
【図２０】
0006724316.tif 000021