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