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