(57)【要約】【課題】楽音生成に伴う処理動作を効率的に実行しつつ、楽音を適切に生成することができる楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器を提供する。【解決手段】ＣＰＵ３０２、波形発生器３０４、ＤＳＰ３０８の複数の機能部によって、単一のＲＡＭ２０６を共有するメモリアクセス管理手法を適用した楽音生成装置において、波形発生器３０４による楽音発生時や、ＤＳＰ３０８によるエフェクトの選択時に共有するＲＡＭ２０６へのバスアクセス占有率を、ＤＳＰ３０８における処理終了タイミングで発行される「DSP END」コマンドに基づいて算出する。バスアクセス占有率が所定の値（９０％）を超えている場合には、予め用意された音色の属性である波形のサンプリングレート、波形の圧縮・非圧縮処理、波形に付与するエフェクトの種類、エフェクトのオン・オフなどのグレードを下げて、楽音生成処理を実行する。【選択図】図７
2019168645.tif 000002
【特許請求の範囲】
【請求項１】
信号処理周期ごとに、少なくとも第１のウェーブジェネレータ及び第２のウェーブジェネレータを含む複数のウェーブジェネレータに対してメモリへの時分割アクセスを命令するウェーブジェネレータ命令処理と、前記第１のウェーブジェネレータが前記メモリへのアクセスを完了してから前記第２のウェーブジェネレータが前記メモリへのアクセスを開始する前に、デジタルシグナルプロセッサに対して前記メモリへのアクセスを命令するデジタルシグナルプロセッサ命令処理と、当該周期内に前記デジタルシグナルプロセッサに対する前記メモリへのアクセスの命令が必要か否かを判断する判断処理と、前記判断処理により前記メモリへのアクセスの命令が必要で無いと判断されたタイミングが当該周期内のどのタイミングかを判断するタイミング判断処理と、当該周期の前記タイミング判断処理により判断された第１タイミングが或るタイミングに達している場合、当該周期の次の周期の前記タイミング判断処理により判断される第２タイミングが前記或るタイミングに達しないように制御する制御処理と、を実行する楽音生成装置。
【請求項２】
前記メモリは、或る音色における第１グレードに対応する第１サンプリングレートの第１波形データと、前記第１グレードより下がる第２グレードに対応する前記第１サンプリングレートより低い第２サンプリングレートの第２波形データと、を記憶し、
前記制御処理は、
前記第１波形データに応じた読み出しスピードで前記第１波形データに基づいて発振していたウェーブジェネレータに、前記第２波形データに応じた読み出しスピードで前記第２波形データに基づいて発振させることにより、前記第２タイミングが前記或るタイミングに達しないように制御する請求項１に記載の楽音生成装置。
【請求項３】
前記メモリは、或る音色における第１グレードに対応する第１エフェクトを示すデータと、前記第１グレードより下がる第２グレードに対応する第２エフェクトを示すデータと、を記憶し、
前記制御処理は、
前記第１エフェクトを付与している前記デジタルシグナルプロセッサに対して、前記第１エフェクトの代わりに前記第２エフェクトを付与させることにより、前記第２タイミングが前記或るタイミングに達しないように制御する請求項１または２に記載の楽音生成装置。
【請求項４】
前記制御処理は、
前記複数のウェーブジェネレータのうちの発振している或るウェーブジェネレータに対して消音処理させることにより、前記第２タイミングが前記或るタイミングに達しないように制御する請求項１乃至３のいずれかに記載の楽音生成装置。
【請求項５】
楽音生成装置のコンピュータに、
信号処理周期ごとに、少なくとも第１のウェーブジェネレータ及び第２のウェーブジェネレータを含む複数のウェーブジェネレータに対してメモリへの時分割アクセスを命令するウェーブジェネレータ命令処理と、前記第１のウェーブジェネレータが前記メモリへのアクセスを完了してから前記第２のウェーブジェネレータが前記メモリへのアクセスを開始する前に、デジタルシグナルプロセッサに対して前記メモリへのアクセスを命令するデジタルシグナルプロセッサ命令処理と、当該周期内に前記デジタルシグナルプロセッサに対する前記メモリへのアクセスの命令が必要か否かを判断する判断処理と、前記判断処理により前記メモリへのアクセスの命令が必要で無いと判断されたタイミングが当該周期内のどのタイミングかを判断するタイミング判断処理と、当該周期の前記タイミング判断処理により判断された第１タイミングが或るタイミングに達している場合、当該周期の次の周期の前記タイミング判断処理により判断される第２タイミングが前記或るタイミングに達しないように制御する制御処理と、を実行させる方法。
【請求項６】
楽音生成装置のコンピュータに、
信号処理周期ごとに、少なくとも第１のウェーブジェネレータ及び第２のウェーブジェネレータを含む複数のウェーブジェネレータに対してメモリへの時分割アクセスを命令するウェーブジェネレータ命令処理と、前記第１のウェーブジェネレータが前記メモリへのアクセスを完了してから前記第２のウェーブジェネレータが前記メモリへのアクセスを開始する前に、デジタルシグナルプロセッサに対して前記メモリへのアクセスを命令するデジタルシグナルプロセッサ命令処理と、当該周期内に前記デジタルシグナルプロセッサに対する前記メモリへのアクセスの命令が必要か否かを判断する判断処理と、前記判断処理により前記メモリへのアクセスの命令が必要で無いと判断されたタイミングが当該周期内のどのタイミングかを判断するタイミング判断処理と、当該周期の前記タイミング判断処理により判断された第１タイミングが或るタイミングに達している場合、当該周期の次の周期の前記タイミング判断処理により判断される第２タイミングが前記或るタイミングに達しないように制御する制御処理と、を実行させるプログラム。
【請求項７】
請求項１乃至４のいずれかに記載の楽音生成装置と、
音高を指定するための演奏操作子と、
を備える電子楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音生成装置、楽音生成方法、楽音生成プログラム、及び、当該楽音生成装置を適用した電子楽器に関する。
【背景技術】
【０００２】
電子楽器においては、管楽器や弦楽器等の原音の特徴により近い楽音を再現するために、多種多様な音源データ（波形データ）を記憶装置に記憶しておき、発音に使用する波形データを読み出して所望の楽音を生成する楽音生成方法が採用されている。このような電子楽器において、楽器全体を制御するＣＰＵに加えて、波形発生部や波形処理部等の複数の機能部を備え、これらの機能部（ＣＰＵを含む）により単一の記憶装置を共有して、楽音の生成に伴う各種の処理動作を実行する制御方法を採用したものが知られている。このような制御方法を採用した楽音発生装置や電子楽器については、例えば特許文献１等に記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−０９０８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のような制御方法においては、ＣＰＵや波形発生部、波形処理部等による記憶装置へのアクセスが集中すると、アクセス権の優先順位が低い機能部の処理動作が遅延してしまい、予定されていた信号処理が時間内に完了せずに楽音が正しく生成されずにノイズになってしまったり、レスポンスが悪化して演奏に支障を来したりする場合があった。
【０００５】
そこで、本発明は、楽音生成に伴う処理動作を効率的に実行しつつ、楽音を適切に生成することができる楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様の楽音生成装置は、
信号処理周期ごとに、少なくとも第１のウェーブジェネレータ及び第２のウェーブジェネレータを含む複数のウェーブジェネレータに対してメモリへの時分割アクセスを命令するウェーブジェネレータ命令処理と、前記第１のウェーブジェネレータが前記メモリへのアクセスを完了してから前記第２のウェーブジェネレータが前記メモリへのアクセスを開始する前に、デジタルシグナルプロセッサに対して前記メモリへのアクセスを命令するデジタルシグナルプロセッサ命令処理と、当該周期内に前記デジタルシグナルプロセッサに対する前記メモリへのアクセスの命令が必要か否かを判断する判断処理と、前記判断処理により前記メモリへのアクセスの命令が必要で無いと判断されたタイミングが当該周期内のどのタイミングかを判断するタイミング判断処理と、当該周期の前記タイミング判断処理により判断された第１タイミングが或るタイミングに達している場合、当該周期の次の周期の前記タイミング判断処理により判断される第２タイミングが前記或るタイミングに達しないように制御する制御処理と、を実行する。
【発明の効果】
【０００７】
本発明によれば、楽音生成に伴う処理動作を効率的に実行しつつ、楽音を適切に生成することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明に係る楽音生成装置を適用した電子楽器の一実施形態を示す外観図である。
【図２】一実施形態に係る電子楽器に適用されるハードウェアの構成例を示すブロック図である。
【図３】一実施形態に係る電子楽器に適用される音源／ＣＰＵ ＬＳＩの内部構造の例を示すブロック図である。
【図４】一実施形態に係る電子楽器に適用される音源の構造を示すブロック図である。
【図５】一実施形態に適用される楽音のエフェクトの種類とＲＡＭのバスアクセス占有率との関係を示す図である。
【図６】一実施形態に適用されるＲＡＭのアクセス優先順位を示す概念図である。
【図７】一実施形態に適用されるＲＡＭの時分割アクセス制御の一例を示す概略図である。
【図８】一実施形態に適用される音色のグレードの設定例を示す図である。
【図９】一実施形態に適用される音色グレードに設定される波形のサンプリングレートを説明するための図である。
【図１０】一実施形態に適用される音色グレードに設定される差分圧縮処理を説明するための図である。
【図１１】一実施形態に係る電子楽器の制御方法のメインルーチンを示すフローチャートである。
【図１２】一実施形態に係る電子楽器の制御方法に適用されるイベント処理の一例を示すフローチャートである。
【図１３】一実施形態に係る電子楽器の制御方法に適用されるバスアクセス占有率取得処理の一例を示すフローチャートである。
【図１４】一実施形態に係る電子楽器の作用効果を説明するための比較例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明に係る楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器を実施するための形態について、図面を参照しながら詳しく説明する。
＜電子楽器＞
図１は、本発明に係る楽音生成装置を適用した電子楽器の一実施形態を示す外観図である。ここでは、本発明に係る電子楽器の一実施形態として、電子鍵盤楽器（電子キーボード）を示して説明する。また、図２は、本実施形態に係る電子楽器に適用されるハードウェアの構成例を示すブロック図であり、図３は、本実施形態に係る電子楽器に適用される音源／ＣＰＵ ＬＳＩの内部構造の例を示すブロック図である。
【００１０】
本発明に係る電子楽器１００の外観は、例えば図１に示すように、楽器本体の一面側に、演奏操作子としての複数の鍵を有し、音高を指定するための鍵盤１０２と、音色選択ボタン１０４及び機能選択ボタン１０６からなるスイッチ・パネルと、ピッチベンドやトレモロ、ビブラート等の各種モジュレーション（演奏効果）を付加するためのベンダ／モジュレーション・ホイール１０８と、音色やその他の各種設定情報を表示する表示部１１０と、を備えている。また、図示を省略したが、電子楽器１００は、演奏により生成された楽音を出力するスピーカや楽器外部への出力端子を備えている。
【００１１】
電子楽器１００の内部機能は、例えば図２に示すように、ＣＰＵの機能を含む音源ＬＳＩである音源／ＣＰＵ ＬＳＩ２０２と、ＤＭＡ（Direct Memory Access）コントローラ２０４と、ＲＡＭ２０６と、フラッシュメモリ２０８とが、それぞれシステムバス２２０に接続されている。また、電子楽器１００は、図１に示した鍵盤１０２と、音色選択ボタン１０４及び機能選択ボタン１０６を有するスイッチ・パネルとがキー・スキャナ２１４及びＩ／Ｏコントローラ２１０を介してシステムバス２２０に接続されている。また、電子楽器１００は、ベンダ／モジュレーション・ホイール１０８がＡ／Ｄコンバータ２１６及びＩ／Ｏコントローラ２１０を介してシステムバス２２０に接続され、ＬＣＤ等の表示部１１０がＬＣＤコントローラ２１２及びＩ／Ｏ（入出力）コントローラ２１０を介してシステムバス２２０に接続されている。また、システムバス２２０はバスコントローラ２１８に接続され、バスコントローラ２１８により上記の各構成間で送受信される信号やデータが制御される。また、音源／ＣＰＵ ＬＳＩ２０２には、Ｄ／Ａコンバータ２２２及びアンプ２２４が接続され、音源／ＣＰＵ ＬＳＩ２０２から出力されるデジタル楽音波形データがＤ／Ａコンバータ２２２によりアナログ楽音波形信号に変換され、さらにアンプ２２４で増幅された後に、出力端子又は図示を省略したスピーカから出力される。
【００１２】
上記のような構成において、音源／ＣＰＵ ＬＳＩ２０２は、機器全体の処理を制御する制御部としての機能と、演奏者（ユーザ）による鍵盤演奏やボタン操作に基づく楽音を生成する音源部としての機能とを備えた集積回路である。音源／ＣＰＵ ＬＳＩ２０２は、例えば図３に示すように、ＣＰＵ３０２と、２５６基の波形発生装置３０６として機能する波形発生器（ウェーブジェネレータ；ＷＧ）３０４と、ＤＳＰ（デジタル信号処理回路）３０８と、タイマ・カウンタ３１０と、バスインターフェース３１２と、を備えている。ＣＰＵ３０２、波形発生器３０４及びＤＳＰ３０８は、バスインターフェース３１２を介してシステムバス２２０に接続され、音源／ＣＰＵ ＬＳＩ２０２によるＲＡＭ２０６へのアクセスや、電子楽器１００内の他の構成との通信が行われる。ここで、ＣＰＵ３０２は上記の制御部に対応し、波形発生器３０４、ＤＳＰ３０８及びタイマ・カウンタ３１０は上記の音源部に対応する。
【００１３】
ＣＰＵ３０２は、ＲＡＭ２０６をワーク領域として使用しながら所定の制御プログラムを実行することにより、電子楽器１００全体の制御を行うメインプロセッサである。特に、本実施形態において、ＣＰＵ３０２は、ＲＡＭ２０６及び音源／ＣＰＵ ＬＳＩ２０２内の波形発生器３０４やＤＳＰ３０８を制御して、後述する楽音生成方法を含む一連の制御動作を実行する。
【００１４】
波形発生器３０４の各波形発生装置３０６は、ＲＡＭ２０６から波形データを読み出して音色の波形を再生する発振器である。ここで、波形発生器３０４は、ハードウェア的には単一の構成からなり、時分割制御によりソフトウェア的に２５６基の波形発生装置として機能させている。
【００１５】
ＤＳＰ３０８は、楽音に音響効果をもたらす信号処理回路を有し、演奏に応じて波形発生器３０４の各波形発生装置３０６によりＲＡＭ２０６から読み出された波形データに対して、ＣＰＵ３０２から供給される楽音パラメータに応じて音量や音色の属性を設定したのち合成して、出力楽音波形データとしてＤＳＰ３０８の外部に出力する。ＤＳＰ３０８の出力信号は、図２に示したように、Ｄ／Ａコンバータ２２２及びアンプ２２４を介して所定の信号レベルのアナログ信号に変換されて、スピーカやヘッドホン等に出力される。
【００１６】
また、タイマ・カウンタ３１０は、ＣＰＵ３０２や波形発生器３０４、ＤＳＰ３０８における処理動作の実行タイミングを参照するために、波形データの１サンプリング周期ごとにリセットされる計時手段である。ここで、１サンプリング周期は、音源／ＣＰＵ ＬＳＩ２０２における信号処理周期であって、波形発生器３０４が１サンプルの波形データを処理する周期である。例えばＣＤ音質の楽音を生成する場合には１サンプリング周期は２２μsecに設定される。
【００１７】
ＲＡＭ（記憶手段）２０６は、アクセス速度が高速で記憶容量が小さい高価なメモリデバイスであり、後述するフラッシュメモリ２０８から転送された波形データや制御プログラム、各種の固定データ等を配置する。特に、ＲＡＭ２０６は、音源／ＣＰＵ ＬＳＩ２０２において実行される楽音の生成処理に使用される波形データを展開する波形メモリ（音源メモリ）としての機能を有し、発音される楽音の波形データは必ず、ＲＡＭ２０６上に配置される。また、ＲＡＭ２０６は、音源／ＣＰＵ ＬＳＩ２０２において所定の制御プログラムを実行する際のワーク領域としても使用される。
【００１８】
フラッシュメモリ２０８は、上述したＲＡＭ２０６に比較して、アクセス速度が低速で記憶容量が大きい安価なメモリデバイスである。フラッシュメモリ２０８は、音源／ＣＰＵ ＬＳＩ２０２において実行される楽音の生成処理に使用される（又は、使用される可能性のある）全ての音色の波形データやパラメータデータ、音源／ＣＰＵ ＬＳＩ２０２内のＣＰＵ３０２やＤＳＰ３０８において実行される制御プログラムのプログラムデータ、音楽データや演奏者の設定データ等の各種の固定データを記憶している。ここで、フラッシュメモリ２０８は、ＣＰＵ３０２からはランダムアクセスが不可能であり、ＤＳＰ３０８からもアクセスが不可能であるため、フラッシュメモリ２０８に記憶されたデータ等は、再生前にＣＰＵ３０２がシーケンシャルに順次アクセスすることにより読み出されて、ランダムアクセスが可能なＲＡＭ２０６に一旦転送される。
【００１９】
なお、本実施形態においては、低速大容量で安価なメモリデバイスとして、フラッシュメモリ（例えば、ＮＡＮＤ型のフラッシュメモリを集積して構成されたＳＳＤ；Solid State Drive）を適用する場合を示すが、本発明はこれに限定されるものではなく、ハードディスクを適用するものであってもよい。ここで、フラッシュメモリやハードディスクは、電子楽器１００に対して着脱可能（すなわち、差し替え可能）な構成を有しているものであってもよい。また、データの高速転送が可能である場合には、大容量のメモリデバイスとして、特定のネットワーク上やインターネット上（すなわち、クラウド上）のハードディスクを適用するものであってもよい。
【００２０】
ＬＣＤコントローラ２１２は、表示部１１０のＬＣＤの表示状態を制御するＩＣである。キー・スキャナ２１４は、鍵盤１０２や音色選択ボタン１０４及び機能選択ボタン１０６等のスイッチ・パネルの状態を走査して、ＣＰＵ３０２に通知するＩＣである。Ａ／Ｄコンバータ２１６は、ベンダ／モジュレーション・ホイール１０８の操作位置を検出するＩＣである。これらのＬＣＤコントローラ２１２やキー・スキャナ２１４、Ａ／Ｄコンバータ２１６は、インターフェースであるＩ／Ｏコントローラ２１０を介してシステムバス２２０との間でデータや信号の入出力を行う。
【００２１】
このような電子楽器１００は、機器全体がバスコントローラ２１８によって制御されるシステムバス２２０を中心に構成されている。具体的には、バスコントローラ２１８は、システムバス２２０に接続された上記の各構成における信号やデータの送受信時の優先順位を制御する。例えばＲＡＭ２０６は、音源／ＣＰＵ ＬＳＩ２０２内のＣＰＵ３０２と波形発生器３０４とＤＳＰ３０８とによって共有されている（図３参照）が、発音に伴う処理を行う音源部である波形発生器３０４及びＤＳＰ３０８は、データの欠落が許されないため、バスコントローラ２１８により波形発生器３０４やＤＳＰ３０８と、ＲＡＭ２０６と間の送受信動作が他の送受信動作に対して最も高い優先順位に設定されている。そのため、必要に応じてＣＰＵ３０２によるＲＡＭ２０６へのアクセスも制限されることになる。
【００２２】
次に、本実施形態に係る電子楽器に適用される動作仕様の概要について説明する。ここでは、本実施形態に係る電子楽器に適用される音源構造、ＲＡＭ２０６のバスアクセス占有率及びアクセス優先順位、アクセス時の処理負荷、音色グレードの設定及び選択、バスインターフェースによるアクセス管理について説明する。
【００２３】
（音源ブロックダイアグラム）
図４は、本実施形態に係る電子楽器に適用される音源の構造を示すブロック図であり、図５は、本実施形態に適用される楽音のエフェクトの種類とＲＡＭのバスアクセス占有率との関係を示す図である。
【００２４】
本実施形態に係る電子楽器１００においては、例えば図４に示すように、音源／ＣＰＵ ＬＳＩ２０２に設けられるＤＳＰ３０８内に４つの音色パートPart1〜Part4が用意され、波形発生器３０４の各波形発生装置３０６により順次読み出された波形データが、分配器を介して各音色パートPart1〜Part4に順次入力される。ここで、各音色パートPart1〜Part4には異なるエフェクトEffect1〜Effect4を割り当てることが可能であり、各音色パートPart1〜Part4に入力された波形データに、演奏者がボタン操作等により指定したエフェクトEffect1〜Effect4が付与されるように信号処理が行われる。エフェクトが付与された波形データは、ミキサ３２０により合成されて出力楽音波形データとして出力される。
【００２５】
図４に示した各音色パートPart1〜Part4に割り当て可能なエフェクトは、例えば図５に示すように、エフェクト番号「１」の「EQ」（イコライザー）〜「１３」の「Hall Reverb」（ホール残響）の１３種類が用意されている。また、波形データにエフェクトを付与しない場合にはエフェクト番号「０」の「Bypass」（バイパス）が選択される。ここで、それぞれのエフェクトにおけるＲＡＭ２０６のバスアクセス占有率は、図５のように示され、エフェクトの種類によっては、同種のものであってもバスアクセス占有率が低くＤＳＰ３０８における処理負荷の軽いものと、バスアクセス占有率が高く処理負荷が重いものがある。例えば、エフェクト番号「６」の「Chorus」（コーラス）においてはバスアクセス占有率が「12.5％」であるのに対して、エフェクト番号「７」の「Stereo Chorus」（ステレオコーラス）においてはバスアクセス占有率が「20.0％」に達する。なお、これらのエフェクトのバスアクセス占有率に対して、波形発生器３０４の１基分の波形発生装置３０６におけるバスアクセス占有率は「0.25%」と極めて低く、２５６基全てを使用した場合で占有率は「64％」になる。なお、エフェクトと処理負荷の関係については、後述する音色グレードにおいても説明する。
【００２６】
（ＲＡＭアクセス優先順位）
図６は、本実施形態に適用されるＲＡＭのアクセス優先順位を示す概念図であり、図７は、本実施形態に適用されるＲＡＭの時分割アクセス制御の一例を示す概略図である。
【００２７】
本実施形態に係る電子楽器１００においては、上述したように、音源／ＣＰＵ ＬＳＩ２０２に設けられたＣＰＵ３０２と波形発生器３０４とＤＳＰ３０８とによりＲＡＭ２０６が共有されている。また、これらの機能部のＲＡＭ２０６へのアクセス権の優先順位は、楽音生成処理に支障を来さないように、音源部である波形発生器（ＷＧ）３０４及びＤＳＰ３０８が制御部であるＣＰＵ３０２よりも優先され、さらに、音源部内では、波形発生器３０４がＤＳＰ３０８よりも優先されるように設定されている。すなわち、図６に示すように、波形発生器（ＷＧ）３０４を最優先として、ＤＳＰ３０８、ＣＰＵ３０２の順に優先順位が低くなるように予め設定されている。そのため、波形発生器（ＷＧ）３０４がＲＡＭ２０６へのアクセスを行っている間は、ＤＳＰ３０８やＣＰＵ３０２によるアクセスは許されず、ＤＳＰ３０８がＲＡＭ２０６へのアクセスを行っている間はＣＰＵ３０２によるアクセスは許されない。
【００２８】
このような処理上の制約を考慮して、本実施形態におけるＲＡＭ２０６へのアクセス制御の一例を図７に示す。本実施形態においては、波形データを処理する際の基本単位となる１サンプリング周期（信号処理周期）において、アクセス制御に時分割処理を採用することにより、波形発生器（ＷＧ）３０４のＲＡＭ２０６へのアクセスは、２５６基の波形発生装置３０６に設定されている番号（ＷＧ０〜ＷＧ２５５）に基づいて、実行タイミング（ＲＡＭ２０６へのアクセスを許可するタイミング）が固定的に割り振られる。
【００２９】
すなわち、図７に示すように、まず、各波形発生装置（ＷＧ０〜ＷＧ２５５）３０６によるアクセスの実行期間が優先的に設定され、次いで、当該波形発生装置３０６のアクセスの実行期間を除く、隙間や余剰の期間を使用してＤＳＰ３０８及びＣＰＵ３０２によるアクセスが実行される。このようなＲＡＭ２０６へのアクセスに関わるタイミング制御は、音源／ＣＰＵ ＬＳＩ２０２に設けられたバスインターフェース３１２によりハードウェア的に実行される。
【００３０】
なお、上記のようなアクセス制御（時分割アクセス）において、優先度の低いＣＰＵ３０２により１つのインストラクション（動作命令）の実行が始まると、その実行期間中は波形発生器（ＷＧ）３０４やＤＳＰ３０８であってもＲＡＭ２０６へのアクセスを割り込んで実行することはできず、次のインストラクションの実行タイミングから優先度の高い順にＲＡＭ２０６へのアクセスが割り当てられることになる。
【００３１】
また、図７に示した時分割アクセス制御の例においては、説明の都合上、波形発生器３０４の２５６基の波形発生装置３０６の全部が１サンプリング周期内に順次ＲＡＭ２０６にアクセスする場合を示したが、実際には、楽音の生成の際に同時発音のために使用される波形発生装置３０６のみがＲＡＭ２０６にアクセスするものであって、常に２５６基の波形発生装置３０６によるＲＡＭ２０６へのアクセスが実行されるものではない。
【００３２】
（ＲＡＭアクセス時の処理負荷の判定）
次いで、上述したＲＡＭ２０６へのアクセス制御において、音源／ＣＰＵ ＬＳＩ２０２の機能部全体の処理負荷について説明する。
【００３３】
上述したＲＡＭ２０６へのアクセス制御において、楽音を適切に生成するためには、音源部である波形発生器（ＷＧ）３０４及びＤＳＰ３０８の処理を必ず１サンプリング周期の期間内に完了する必要がある。ここで、音源部のうち、優先順位が最も高い波形発生器（ＷＧ）３０４は、アクセスの実行タイミングが固定的に割り振られているので、その処理は１サンプリング周期から外れることはなく、その期間内に適切に実行される。これに対して、ＤＳＰ３０８及びＣＰＵ３０２は優先順位が低いため、実行タイミングの設定によっては音源／ＣＰＵ ＬＳＩ２０２における処理負荷（特に、音源部の処理負荷）が影響を受けることになる。
【００３４】
そこで、本実施形態においては、ＣＰＵ３０２は、図７に示すように、音源部のうち、優先順位が（最も）低いＤＳＰ３０８における１サンプリング周期内の処理の最後のインストラクションとして、最後の処理を終えたタイミング「DSP END」をタイマ・カウンタ３１０から読み取って（計測して）、そのカウント値をバスインターフェース３１２のレジスタに格納する。そして、取得されたＤＳＰ３０８の処理終了タイミング「DSP END」を、音源／ＣＰＵ ＬＳＩ２０２における処理負荷を判断する要素として用いる。すなわち、１サンプリング周期の期間を１００％と設定した場合に、１サンプリング周期に対する処理終了タイミング「DSP END」の時間比率をバスアクセス占有率として算出し、この値が１００％に近くなるほど、音源／ＣＰＵ ＬＳＩ２０２における処理負荷が高くなると判断する。
【００３５】
なお、処理終了タイミング「DSP END」の時間比率が１００％に達している場合や１サンプリング周期内に処理終了タイミング「DSP END」が取得されなかった場合には、ＤＳＰ３０８の処理が間に合わず終了しなかったと判断することができる。この場合には、生成される楽音にノイズが混入したり、演奏に支障を来したりする可能性が非常に高くなる。このようなＤＳＰ３０８の処理終了タイミング「DSP END」に基づくＲＡＭアクセス時の処理負荷やその軽減方法については、後述するバスインターフェースによるアクセス管理方法、及び、電子楽器の制御方法においてさらに詳しく説明する。
【００３６】
（音色グレード）
次いで、本実施形態に適用される音色のグレード設定について説明する。
図８は、本実施形態に適用される音色のグレードの設定例を示す図である。図９は、本実施形態に適用される音色グレードに設定される波形のサンプリングレートを説明するための図であり、図１０は、本実施形態に適用される音色グレードに設定される差分圧縮処理を説明するための図である。
【００３７】
本実施形態においては、例えば図８に示すように、１つの音色あたり２種類のグレードが用意されている。グレード「１」は高音質の楽音であって、ＲＡＭ２０６へのアクセス時の処理負荷が標準的なものであり、グレード「２」は低音質の楽音であって、グレード「１」に比較して処理負荷が低いものである。ここで、ＲＡＭアクセス時の処理負荷に関わる音色グレードの属性としては、例えば図８に示すように、（１）波形のサンプリングレート、（２）波形の圧縮・非圧縮、（３）波形に付与するエフェクトの有無及び種類の３つを挙げることができ、これらの属性を適宜選択することにより２種類の音色グレード「１」、「２」が設定される。
【００３８】
波形のサンプリングレートは、「標準」と「1/2」との２種類が用意されている。具体的には、例えば図９（ａ）に示すように、鍵盤１０２の特定の音高、例えば「C3」の音高で録音された波形データ１を「標準」のサンプリングレートとして設定する。また、図９（ｂ）に示すように、録音された波形データ１を１／２のデータ量に間引き処理し、グレードを下げたものを、「1/2」のサンプリングレートの波形データ２として設定する。そのため、「標準」のサンプリングレートで取得される波形データ１が高音質の楽音であるのに対して、「1/2」のサンプリングレートで取得される波形データ２は低音質の楽音になる。ここで、波形データ２はそのまま再生すると「C3」に対して１オクターブ高い「C4」の音高で再生されてしまうため、再生スピードを半分に設定して波形読み出しを行う。この結果、単位時間あたりに転送されるデータ量を半分（１／２）にすることができる。
【００３９】
なお、本実施形態においては、図８及び図９に示したように、「標準」のサンプリングレートで取得した波形データ１と、波形データ１を１／２のデータ量に間引き処理した波形データ２との２種類の波形データを用いた形態を示したが、本発明はこれに限定されるものではない。例えばサンプリングレートを「標準」の１種類として、波形データのサンプリング時に「1/2」のサンプリングレートを設定して低音質の楽音の波形データを取得するものであってもよい。
【００４０】
また、波形データは、圧縮状態と非圧縮状態との２種類が用意されている。非圧縮の状態では高音質の楽音であって、例えば図１０に示すように、時間Ｌ１、Ｌ２、Ｌ３・・・における波高値が１６bitのリニアデータで表現される。これに対して、差分圧縮処理を施した状態では低音質の楽音であって、図１０に示すように、各時間Ｌ１、Ｌ２、Ｌ３・・・における波高値間の差分データＤ１、Ｄ２・・・で表現されるが、この差分データＤ１、Ｄ２・・・は、非圧縮リニアデータに比較して振幅が小さくなるため、８bitという少ないビット数で表現することができる。なお、差分データが８bitの範囲を超えてしまい表現できない場合には、波形自体を修正して表現できる範囲に収める手法を採用することができる。
【００４１】
また、波形に付与されるエフェクトは、図５、図８に示したように、種類ごとに高音質でバスアクセス占有率が高いエフェクトと、低音質でバスアクセス占有率が低いエフェクトとの２つのグレードが用意されている。
【００４２】
このように、上記の（１）波形のサンプリングレート、（２）波形の圧縮・非圧縮、（３）波形に付与するエフェクトの各属性について、それぞれの設定、及び、組合せを適宜選択することにより、各音色の特性に合わせて極力グレード「１」とグレード「２」の間の聴感上の差異が少なくなる範囲で、かつ、アクセス時の処理負荷が減るように、音色ごとに２種類の音色グレード「１」、「２」が設定される。
【００４３】
なお、本実施形態においては、図８に示したように、１つの音色あたり、高音質のグレード「１」と、低音質のグレード「２」との２種類のグレードを用いた形態を示したが、本発明はこれに限定されるものではなく、例えば中間音質のグレードを設けて、バスアクセス占有率に応じて生成される楽音の音質を細かく設定するものであってもよい。
【００４４】
（音色グレードの選択方法）
次いで、図８のように設定された音色グレードの選択制御の概要について説明する。
図７に示したように、１サンプリング周期において、ＣＰＵ３０２が処理動作を実行可能な時間は、ＤＳＰ３０８の処理終了タイミング「DSP END」以前ではＤＳＰ３０８がＲＡＭアクセスを行っていないタイミングスロットと、処理終了タイミング「DSP END」以降の全ての期間である。ここで、ＣＰＵ３０２の実行タイミングは、信号処理のサンプリング周期とは無関係であるが、上述した手法により取得された処理終了タイミング「DSP END」に基づく処理負荷が１サンプリング周期に対して１００％未満であっても、割り当てられた実行時間が極端に少ない場合には演奏や操作に支障を来すことになる。
【００４５】
そこで、本実施形態においては１サンプリング周期に対する比率が、例えば９０％となる時間位置を、ＤＳＰ３０８の処理終了タイミング「DSP END」の最大値と規定し、「DSP END」がこの最大値を超えていない場合、すなわち、１サンプリング周期に対する処理終了タイミング「DSP END」の時間比率であるバスアクセス占有率が９０％を超えていない場合には、次回の発音の音色グレードを「１」に設定して発音させる。一方、最大値（９０％）を超えている場合には、次回の発音の音色グレードを「１」から「２」にグレードを変更して発音させて、ＲＡＭアクセス時の処理負荷を軽減する。
【００４６】
また、本実施形態においては、上述した音色グレードの選択方法によるＲＡＭアクセス時の処理負荷の軽減方法に加え、バスアクセス占有率に基づいて、ＤＳＰ３０８や波形発生器３０４における使用状況に応じて処理を停止することにより、ＲＡＭアクセス時の処理負荷を軽減する。
【００４７】
例えば、ＤＳＰ３０８において波形に付与されるエフェクトについて、同じ音色パートで既に使用しているものがある場合には、新規の発音で使用しているエフェクトに切り替えを行う。一方、新規の発音でエフェクトを使用しない設定に変更されている場合には、その音色パートにおけるＤＳＰ３０８の使用を解除（すなわち、ＤＳＰ３０８における処理を停止）して、ＲＡＭアクセス時の処理負荷を軽減する。また、波形発生器３０４において音楽的に優先度の低い波形発生装置３０６に対して、波形データの割り当てを解除して波形発生器３０４における同時発音数を減らすことにより、ＲＡＭアクセス時の処理負荷を軽減する。
【００４８】
このような音色グレードの選択方法、及び、ＲＡＭアクセス時の処理負荷の軽減方法については、後述する電子楽器の制御方法において詳しく説明する。なお、本実施形態においては、ＤＳＰ３０８の処理終了タイミング「DSP END」に基づいて算出されるバスアクセス占有率について、最大値を９０％と規定し、この最大値を閾値としてバスアクセス占有率の大小を判定して、ＤＳＰ３０８における発音の音色グレードを選択したり、ＤＳＰ３０８や波形発生器３０４における処理を停止したりする制御方法を示すが、本発明はこれに限定されるものではなく、８０％や８５％等の適切な数値を規定するものであってもよい。
【００４９】
（バスインターフェースによるアクセス管理方法）
次いで、本実施形態に適用されるバスインターフェース３１２によるＲＡＭ２０６のアクセス管理の詳細な動作について説明する。
【００５０】
音源／ＣＰＵ ＬＳＩ２０２に設けられるバスインターフェース３１２は、プライオリティを有するバスアービタ（バスに対する使用要求の競合を、優先順位に従って調停する回路）により構成されている。ここで、本実施形態においては、上述したように、ＲＡＭ２０６へのアクセス権の優先順位は、波形発生器（ＷＧ）３０４を最優先とし、ＤＳＰ３０８、ＣＰＵ３０２の順に低くなるように設定されているため、ＤＳＰ３０８と波形発生器３０４との間でシステムバス２２０へのアクセス競合が生じた場合には、ＤＳＰ３０８は、処理待ち状態となる。そのため、ＤＳＰ３０８の処理の進行状況（ＤＳＰ３０８の処理が終了したか否か）やＲＡＭ２０６へのアクセス負荷の程度を判断するためには、図７に示したＤＳＰ３０８の処理が終了したタイミング「DSP END」を取得する必要がある。
【００５１】
ＤＳＰ３０８の処理終了タイミング「DSP END」を取得する手法としては、次のような手法を用いる。まず、音源／ＣＰＵ ＬＳＩ２０２に設けられるタイマ・カウンタ３１０は、リセット動作によりカウント値が「０」に設定される。ここで、タイマ・カウンタ３１０は、ＣＰＵ３０２からのカウントイネーブル信号を受けて、所定の動作クロックでカウントアップを行い、サンプリング期間中に、サンプリング周波数に対する動作クロックのカウント値の比率｛(動作クロック)／(サンプリング周波数)｝を算出する処理を実行する。
【００５２】
ＤＳＰ３０８は、遅延メモリを用いた処理（すなわち、波形発生器３０４の各波形発生装置３０６により読み出された波形データに対して、設定された音色グレードに応じた信号処理）を実行する場合、ＲＡＭ２０６に対してアクセスを行い、ＲＡＭ２０６へのアクセス処理の最後（処理終了タイミング）に、図７に示したように、「DSP END」コマンドを発行する。この「DSP END」コマンドは、既定のアドレスに対するリードもしくはライト命令の形式に設定されている。
【００５３】
これにより、バスインターフェース３１２は、ＤＳＰ３０８から「DSP END」コマンドを受け付けた場合には、タイマ・カウンタ３１０のカウント機能をイネーブル（enable）状態からディセーブル（disable）状態に設定して、タイマ・カウンタ３１０のカウント動作を停止させる。このとき、バスインターフェース３１２は、システムバス２２０上には、このコマンドアドレスに向けたリードもしくはライト命令を発行しない。
【００５４】
なお、バスインターフェース３１２において、１サンプリング周期中に「DSP END」コマンドが受け付けられなかった場合には、ＤＳＰ３０８の処理が溢れた（終了していない）ことを意味し、この場合には、ＣＰＵ３０２に対してエラー割り込みを発生する。
【００５５】
１サンプリング周期中に「DSP END」コマンドが受け付けられたことによりタイマ・カウンタ３１０から取得したカウント値は、ＣＰＵ３０２から読み出し可能な、バスインターフェース３１２のレジスタに格納される。取得されたカウント値は、ＤＳＰ３０８における遅延メモリへのアクセス処理が完了するまでに必要な時間とみなされ、ＤＳＰ３０８は、この時間に基づいて発音時の形態やそれに伴う処理等を設定する。
【００５６】
ここで、発音形態を最適な状態に設定するために、カウント値のレジスタへの格納時には、ＣＰＵ３０２からカウント値の最大値保持、最小値保持、サンプリング周期ごとの更新値を選択して設定できるものとする。このような設定手法は、今回のサンプリング周期で取得したカウント値と前回取得したカウント値との大小関係を判定し、所定の条件を満たす場合に、レジスタに格納されるカウント値を更新することにより実現することができる。
【００５７】
そして、次のサンプリング周期で、ＤＳＰ３０８からＲＡＭ２０６へのアクセスが行われると、バスインターフェース３１２は再度タイマ・カウンタ３１０のカウント機能をイネーブル状態に設定して、タイマ・カウンタ３１０のカウント動作を開始する。本実施形態においては、上述したような一連の処理が１サンプリング周期ごとに繰り返し実行される。なお、上述したＲＡＭ２０６のアクセス管理方法における、ＤＳＰ３０８の処理終了タイミングの取得方法（或いは、ＲＡＭ２０６へのアクセス負荷の測定方法）は、一例であって、本発明はこの手法に限定されるものではない。
【００５８】
＜電子楽器の制御方法＞
次に、本実施形態に係る電子楽器の制御方法（楽音生成方法）について詳しく説明する。ここでは、上述した動作仕様の各概要に示した手法を適用した楽音生成方法を有する、電子楽器の制御方法について説明する。また、以下に示す一連の制御処理は、上述した電子楽器１００の音源／ＣＰＵ ＬＳＩ２０２に設けられたＣＰＵ３０２及びＤＳＰ３０８において、ＲＡＭ２０６に記憶された所定の制御プログラムを実行することにより実現されるものである。
【００５９】
（メインルーチン）
図１１は、本実施形態に係る電子楽器の制御方法のメインルーチンを示すフローチャートである。
【００６０】
本実施形態に係る電子楽器１００の制御方法においては、演奏者により電子楽器１００の装置電源がパワーオンされると、ＣＰＵ３０２は図１１に示すメインルーチンを起動し、装置各部を初期化する初期化処理（ステップＳ１１０２）を実行する。その後、ＣＰＵ３０２は、演奏者が鍵盤１０２を弾いた際の押鍵や離鍵に対する鍵盤処理や、音色選択や機能選択等のボタン類の操作に対するボタン操作処理を行うイベント処理（ステップＳ１１０４）、演奏に伴う発音の状態等を定期的に更新する周期処理（ステップＳ１１０６）の一連の処理動作を繰り返し実行する。
【００６１】
なお、図１１に示したフローチャートにおいて、ＣＰＵ３０２は上述した各処理動作（ステップＳ１１０２〜Ｓ１１０６）の実行中に、演奏モードが終了や中断したり、装置電源をパワーオフしたりする状態の変化を検出した場合には、メインルーチンを強制的に終了する。
【００６２】
以下、本実施形態に適用される特徴的な処理動作について、具体的に説明する。
（イベント処理）
図１２は、本実施形態に係る電子楽器の制御方法に適用されるイベント処理の一例を示すフローチャートである。
【００６３】
演奏者が電子楽器１００に備えられた鍵盤１０２を操作した際や、ボタンやスイッチ類を操作した際に実行される発音イベント処理においては、ＣＰＵ３０２は、図１２に示すフローチャートのように、まず、キーアサイン処理により、音源／ＣＰＵ ＬＳＩ２０２に設けられた波形発生器３０４の２５６基の波形発生装置３０６のうちの一つを、発音に使用する波形発生装置３０６として割り当てる（ステップＳ１２０２）。
【００６４】
次いで、ＣＰＵ３０２は、発声した発音イベントが図４に示したＤＳＰ３０８に用意された４つの音色パートPart1〜Part4のうちの、どの音色パートに対するイベントであるかを示す情報として、パート番号を取得する（ステップＳ１２０４）、次いで、ＣＰＵ３０２は、後述するバスアクセス占有率取得処理により現在のバスアクセス占有率を取得した後（ステップＳ１２０６）、ＲＡＭ２０６のバスアクセス占有率を確認（判定）する処理を行う（ステップＳ１２０８）。
【００６５】
ステップＳ１２０８において、バスアクセス占有率が９０％以下である場合には、ＣＰＵ３０２は、先に取得した音色パートに設定されている、ＲＡＭアクセス時の処理負荷が標準的なグレード「１」の情報を取得する（ステップＳ１２１０）。一方、ステップＳ１２０８において、バスアクセス占有率が９０％よりも大きい場合には、ＣＰＵ３０２は、先に取得した音色パートに設定されている、ＲＡＭアクセス時の処理負荷がグレード「１」よりも低いグレード「２」の情報を取得する（ステップＳ１２１２）。
【００６６】
ステップＳ１２１０、Ｓ１２１２における音色グレードの情報の取得後、ＣＰＵ３０２は、音色のグレード情報と発音イベントのキー番号、ベロシティに基づいて読み出し波形を決定した後（ステップＳ１２１４）、当該波形データのサンプリングレートを確認（判定）する処理を行う（ステップＳ１２１６）。
【００６７】
ステップＳ１２１６において、波形のサンプリングレートが「標準」に設定されている場合には、ＣＰＵ３０２は、ステップＳ１２２０の処理を行う。一方、波形のサンプリングレートが「1/2」に設定されている場合には、ＣＰＵ３０２は、割り当てられた波形発生装置３０６に対して、波形の読み出しスピードを半分にして単位時間あたりに転送されるデータ量を半分（１／２）にするように設定した後（ステップＳ１２１８）、ステップＳ１２２０の処理を行う。
【００６８】
次いで、ＣＰＵ３０２は、波形に施される圧縮方式を確認（判定）する処理を行う（ステップＳ１２２０）。波形に施される圧縮方式が差分の場合には、ＣＰＵ３０２は、割り当てられた波形発生装置３０６に対して、読み出し波形が例えば８bitの差分データであるとして再生するように設定する（ステップＳ１２２２）。一方、波形に施される圧縮方式がリニアの場合には、ＣＰＵ３０２は、割り当られた波形発生装置３０６に対して、読み出し波形が例えば１６bitのリニアデータであるとして再生するように設定する（ステップＳ１２２４）。
【００６９】
ステップＳ１２２２、Ｓ１２２４における波形の圧縮方式の確認後、ＣＰＵ３０２は、波形に付与するエフェクトを確認（判定）する処理を行う（ステップＳ１２２６）。波形に対してエフェクトを使用していない設定の場合には、ＣＰＵ３０２は、その音色パートにおけるＤＳＰ３０８の使用を解除する手段として、音色パートのエフェクトを「Bypass」に設定する（ステップＳ１２２８）。一方、波形に対してエフェクトを使用している設定の場合には、ＣＰＵ３０２は、既に音色パートに設定されているエフェクトと同じか否かを比較する処理を行う（ステップＳ１２３０）。今回の発音イベントで波形に付与されるエフェクトと、既に音色パートに設定されているエフェクトとが同じ場合は、ＣＰＵ３０２は、ステップＳ１２３４の処理を行う。一方、今回の発音イベントで波形に付与されるエフェクトと、既に音色パートに設定されているエフェクトとが異なる場合は、ＣＰＵ３０２は、今回の発音イベントで取得したエフェクトに切り替える処理を行った後（ステップＳ１２３２）、ステップＳ１２３４の処理を行う。
【００７０】
次いで、ＣＰＵ３０２は、先に割り当てられた波形発生装置３０６で読み出した波形の再生を開始した後（ステップＳ１２３４）、発音イベント処理を終了して、メインルーチンに戻る。
【００７１】
（バスアクセス占有率取得処理）
図１３は、本実施形態に係る電子楽器の制御方法に適用されるバスアクセス占有率取得処理の一例を示すフローチャートである。
【００７２】
上述した発音イベント処理において実行されるバスアクセス占有率取得処理（ステップＳ１２０６）においては、１サンプリング周期の期間内での波形発生器３０４、ＤＳＰ３０８、ＣＰＵ３０２の各インストラクション処理とバスアクセス占有率の算出処理、及び、バスアクセス占有率に基づく波形発生器３０４のFast Dump処理を有している。
【００７３】
バスアクセス占有率取得処理においては、図１３に示すフローチャートのように、ＣＰＵ３０２は、まず、バスアクセス占有率を算出するためのタイマ・カウンタ３１０をリセットしてカウント値を「０」に設定する（ステップＳ１３０２）。
【００７４】
次いで、ＣＰＵ３０２は、波形発生器（ＷＧ）３０４の波形発生装置３０６の数分のＷＧインストラクション処理を繰り返し実行する（ステップＳ１３０４、Ｓ１３０６、Ｓ１３２０）。ここで、ＷＧインストラクション処理の実行タイミングは、固定的に割り振られている。
【００７５】
この繰り返し実行されるＷＧインストラクション処理において、ＣＰＵ３０２は、一つのＷＧインストラクション処理が終了すると（ステップＳ１３０６）、次のＷＧインストラクション処理が実行されるまでの間に、ＤＳＰインストラクション処理が設定されているか否かを判定し（ステップＳ１３０８）、設定されている場合には、ＤＳＰインストラクション処理を行う（ステップＳ１３１０）。ＣＰＵ３０２は、ＤＳＰインストラクション処理の終了後、当該処理が同一のサンプリング周期内で最後のＤＳＰインストラクション処理か否かの判断を行う（ステップＳ１３１２）。
【００７６】
終了したＤＳＰインストラクション処理が最後のＤＳＰインストラクション処理である場合には、上述した処理終了タイミング「DSP END」（図７参照）であるので、ＣＰＵ３０２は、タイマ・カウンタ３１０のカウント値をバスインターフェース３１２のレジスタに格納する（ステップＳ１３１４）。そして、ＣＰＵ３０２は、取得したカウント値に基づいて、現在のバスアクセス占有率を計算する（ステップＳ１３１６）。
【００７７】
次いで、ＤＳＰインストラクション処理の終了後、次のＷＧインストラクション処理が実行されるまでに時間がある場合には、ＣＰＵ３０２は、図７に示したように、ＣＰＵインストラクション処理を行う（ステップＳ１３１８）。また、ステップＳ１３０８において、ＤＳＰインストラクション処理が設定されていない場合、及び、ステップＳ１３１２において、処理が終了したＤＳＰインストラクション処理が同一のサンプリング周期内での最後のＤＳＰインストラクション処理ではない場合にも、次のＷＧインストラクション処理が実行されるまでに時間がある場合には、ＣＰＵ３０２は、ＣＰＵインストラクション処理を行う（ステップＳ１３１８）。
【００７８】
次いで、波形発生装置３０６の数分のＷＧインストラクション処理（ステップＳ１３０４〜Ｓ１３２０）が終了すると、ＣＰＵ３０２は、１サンプリング周期の時間が経過したか否かの判断を行う（ステップＳ１３２２）。１サンプリング周期の時間がまだ経過していない場合には、ＣＰＵ３０２は、上述したステップＳ１３０８〜Ｓ１３１８と同等の処理を実行する。
【００７９】
すなわち、ＣＰＵ３０２は、ＤＳＰインストラクション処理が設定されているか否かを判定し（ステップＳ１３２４）、設定されている場合には、ＤＳＰインストラクション処理を行う（ステップＳ１３２６）。ＤＳＰインストラクション処理の終了後、ＣＰＵ３０２は、当該処理が同一のサンプリング周期内で最後のＤＳＰインストラクション処理か否かを判断し（ステップＳ１３２８）、最後のＤＳＰインストラクション処理である場合には、処理終了タイミング「DSP END」であるので、タイマ・カウンタ３１０のカウント値をバスインターフェース３１２のレジスタに格納する（ステップＳ１３３０）。そして、ＣＰＵ３０２は、取得したカウント値に基づいて、現在のバスアクセス占有率を計算する（ステップＳ１３３２）。次いで、ＤＳＰインストラクション処理の終了後、ＣＰＵ３０２は、ＣＰＵインストラクション処理を行う（ステップＳ１３３４）。また、ステップＳ１３２４において、ＤＳＰインストラクション処理が設定されていない場合、及び、ステップＳ１３２８において、処理が終了したＤＳＰインストラクション処理が同一のサンプリング周期内での最後のＤＳＰインストラクション処理ではない場合にも、ＣＰＵ３０２は、ＣＰＵインストラクション処理を行う（ステップＳ１３３４）。その後、ＣＰＵ３０２は、ステップＳ１３２２に戻って、１サンプリング周期の時間が経過したか否かの判断を行う。
【００８０】
ステップＳ１３２２において、１サンプリング周期の時間が経過した場合には、ＣＰＵ３０２は、現在までにＤＳＰインストラクション処理の終了タイミング「DSP END」を示すコマンドが発行されたか否かの判定を行う（ステップＳ１３３６）。現在までに「DSP END」コマンドが発行されていなかった場合には、ＣＰＵ３０２は、現在のバスアクセス占有率を１００％に設定し（ステップＳ１３３８）、バスアクセス占有率を確認（判定）する処理を行う（ステップＳ１３４０）。一方、現在までに「DSP END」コマンドが発行されていた場合には、ＣＰＵ３０２は、ステップＳ１３１６又はステップＳ１３３２において算出された、現在のバスアクセス占有率を確認（判定）する処理を行う（ステップＳ１３４０）。
【００８１】
ステップＳ１３４０において、ＣＰＵ３０２は、現在のバスアクセス占有率が９０％以下か、９０％よりも大きいかの判定を行う。現在のバスアクセス占有率が９０％以下の場合には、ＣＰＵ３０２は、バスアクセス占有率取得処理を終了して、メインルーチンに戻る。一方、現在のバスアクセス占有率が９０％よりも大きい場合には、ＣＰＵ３０２は、波形発生器３０４のFast Dump Flagを確認（判定）する処理を行う（ステップＳ１３４２）。Fast Dump Flagが「ＯＦＦ」の場合には、ＣＰＵ３０２は、音楽的に優先度の最も低い波形発生装置３０６に対して、Fast Dump処理を行い（ステップＳ１３４４）、割り当てを解除して同時発音数を減らすことにより、アクセス時の処理負荷を軽減して、バスアクセス占有率を低くする。併せて、ＣＰＵ３０２は、波形発生器３０４のFast Dump Flagを「ＯＮ」に設定する（ステップＳ１３４６）。
【００８２】
なお、音楽的に優先度の最も低い波形発生装置３０６、すなわち、音楽的な優先度の低い波形データを発振している波形発生装置３０６の特定方法については様々な方法が考えられる。例えば、波形発生装置３０６の発振が小さいもの（発音されている音量が小さいもの）から順番に優先度が低いと判断してもよい。この場合、発振が最も小さい波形発生装置３０６が、最も優先度が低い波形発生装置３０６になる。
【００８３】
或いは、所有するポイントが最も低い波形発生装置３０６を優先度が最も低いと判断してもよい。例えば、演奏者による押鍵に応じた発音のために使用している波形発生装置３０６は１０ポイントが付与され、記憶手段に記憶されている自動伴奏データの発音のために使用している波形発生装置３０６は８ポイントが付与されるとする。また発音状態が発音中の波形発生装置３０６は５０ポイントが付与され、消音処理中の波形発生装置３０６にはポイントが付与されないとする。或いは、ベロシティが或る閾値より大きい値のノートオン情報に基づいて波形データを発振している場合は、１０ポイントが付与され、ベロシティが或る閾値より小さい値のノートオン情報に基づいて波形データを発振している場合は、７ポイントが付与されるとする。この場合、合計ポイントが最も小さい波形発生装置３０６が、最も優先度が低い波形発生装置３０６になる。
【００８４】
一方、ステップＳ１３４２において、Fast Dump Flagが「ＯＮ」の場合には、現在、音楽的に優先度の最も低い波形発生装置３０６に対して、Fast Dump処理が実行されているので、ＣＰＵ３０２は、バスアクセス占有率取得処理を終了して、メインルーチンに戻る。
【００８５】
なお、波形発生器３０４のFast Dump Flagは、実行中のFast Dump処理が終了した時点で、「ＯＦＦ」に切替え設定される。このようなFast Dump Flagの切替え設定は、Fast Dump処理がバスアクセス占有率取得処理に比較して、処理に多くの時間を必要とするため、処理負荷を軽減するための手法として採用している。
【００８６】
このように、本実施形態は、電子楽器１００の全体処理を実行するＣＰＵ３０２、楽音の生成を含む音声処理を実行するＤＳＰ３０８、ＲＡＭ２０６からの波形読み出しによって楽音波形を発生する波形発生器３０４等の複数の機能部によって、単一又は複数のＲＡＭ２０６を共有（シェア）するメモリアクセス管理システムを搭載した電子楽器に関する。このようなシステムにおいて、波形発生器３０４による楽音発生時や、ＤＳＰ３０８によるエフェクトの選択時に共有するＲＡＭ２０６に対するアクセス負荷に対応するバスアクセス占有率を、ＤＳＰ３０８における処理終了タイミングで発行される「DSP END」コマンドに基づいて算出する。そして、その値が所定の閾値を超えている場合には、予め用意された音色の属性である波形のサンプリングレート、波形の圧縮・非圧縮処理、波形に付与するエフェクトの種類、エフェクトのオン・オフなどのグレードを下げて、トラフィック（バスアクセス占有率）と生成される楽音の音質とのバランスを調整（ダイナミッククォリティーコントロール）することにより、音楽的な影響を最小限に留めるものである。
【００８７】
（本実施形態の効果の比較検証）
ここで、上述したような本実施形態における作用効果について、比較例を示して具体的に説明する。
図１４は、本実施形態に係る電子楽器の作用効果を説明するための比較例を示す図である。
【００８８】
上述した実施形態と同様に、電子楽器の音源に設けられる波形発生器（ＷＧ）やＣＰＵ、ＤＳＰ等の複数の機能部が、ＲＡＭ等の単一の高速メモリデバイスをデータメモリやプログラムメモリ、ワークメモリとして共有して使用するようなシステムにおいては、特定の期間や特定のタイミングで複数の機能部（波形発生器、ＣＰＵ、ＤＳＰ）によるアクセスが集中することがある。このとき、アクセス量の合計がＲＡＭのアクセス速度の限界値を超えた場合、いずれかの機能部によるＲＡＭへのアクセスが待たされることになる。
【００８９】
ここで、仮に波形発生器やＤＳＰにおいてＲＡＭへのアクセスが待たされて所定の動作時間（１サンプリング周期）内にアクセスが間に合わなくなった場合には、音源により生成される楽音にノイズが発生する原因になり、電子楽器の本来の機能を大きく損なうことになる。そのため、一般に、波形発生器やＤＳＰは、ＣＰＵよりもアクセス権の優先順位が高くなるように設定されている。図１４の各図においては、図面左方の端部を基準（波形データに対する処理開始タイミング）にして、１サンプリング周期の期間内に波形発生器（ＷＧ）、ＤＳＰ、ＣＰＵの順に、ＲＡＭへのアクセスが行われている状態を示している。
【００９０】
図１４は、ある時点における単位時間あたりのＲＡＭのバスアクセス占有率を示したものであるが、図１４（ａ）に示すように、波形データの１サンプリング周期を１００％とした場合に、３つの機能部によるアクセス時間の合計占有率が１００％以下に収まっている場合には、それぞれの機能部の処理動作は適切に行われる。
【００９１】
ところが、図１４（ｂ）に示すように、波形発生器やＤＳＰにおける処理負荷が増大して、３つの機能部によるアクセス時間の合計占有率が１００％を超過すると、ＣＰＵによるＲＡＭへのアクセスが待たされて、ＣＰＵの処理動作に遅延が生じることになる。ＣＰＵによるＲＡＭへのアクセスが待たされる状態が一時的、又は、短期的なものである場合には、楽音生成処理や電子楽器の動作に問題は生じないが、このような状態が長期的に続いた場合には、演奏や操作に支障を来すことになるという問題を有している。
【００９２】
さらに、図１４（ｃ）に示すように、波形発生器とＤＳＰとによるアクセス時間の合計占有率が１００％を超過すると、例えば波形発生器におけるアクセス権の優先順位がＤＳＰよりも高く設定されている場合には、ＤＳＰによるＲＡＭへのアクセスが動作時間内に終了しないことになり、音源により生成される楽音にノイズが発生する可能性が高くなるという問題を有している。
【００９３】
上記のような問題を解決して、波形発生器やＤＳＰが待ち状態にならないようにするためには、例えば図１４（ｄ）に示すように、波形発生器に３０％、ＤＳＰに４０％、ＣＰＵに３０％のように固定的に占有率を割り当てる方法も考えられる。この手法においては、ＤＳＰのワークメモリの使用量や同時発音数に固定枠を設けることになるが、仮にＤＳＰの使用率が低い状態であっても、波形発生器は３０％以上を使用することができないため、バスの使用効率が低下し、ハードウェアの能力を最大限に活かしきれていないという問題を有している。
【００９４】
これに対して、本実施形態においては、複数の機能部により単一又は少ない数の高速メモリデバイスを共有して使用するメモリアクセス管理システムを備えた楽音生成装置及び電子楽器において、図７に示したようなＤＳＰの処理終了タイミング「DSP END」に基づいて取得されるバスアクセス占有率を加味した時分割アクセス制御を実行することにより、楽音生成に伴う処理動作を効率的に実行しつつ、楽音を適切に生成することができる。
【００９５】
すなわち、本実施形態においては、バスアクセス占有率に基づいて、波形発生器及びＤＳＰによるメモリデバイスへのアクセス負荷の程度を判断し、バスアクセス占有率が所定値を超える場合には、各波形発生装置に割り当てる波形データのグレードを下げて、楽音生成処理を実行することができる。これにより、少ない数のメモリデバイスを共有することができるので製品コストを抑制することができ、かつ、メモリデバイスの速度性能を最大限に活用できるように楽音の質を最適化することができるので、経済性と性能を両立できる電子楽器を実現することができる。
【００９６】
なお、上述した実施形態においては、単一の音源／ＣＰＵ ＬＳＩ２０２に、楽音を生成する音源となる波形発生器３０４及びＤＳＰ３０８と、音源を含む電子楽器１００全体の処理を制御するＣＰＵ３０２とを備えた構成を示したが、本発明はこれに限定されるものではなく、ＣＰＵが音源ＬＳＩとは別個に設けられ、システムバスに直接接続されているものであってもよい。
【００９７】
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲とを含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【００９８】
（付記）
［１］
信号処理周期ごとに、少なくとも第１のウェーブジェネレータ及び第２のウェーブジェネレータを含む複数のウェーブジェネレータに対してメモリへの時分割アクセスを命令するウェーブジェネレータ命令処理と、前記第１のウェーブジェネレータが前記メモリへのアクセスを完了してから前記第２のウェーブジェネレータが前記メモリへのアクセスを開始する前に、デジタルシグナルプロセッサに対して前記メモリへのアクセスを命令するデジタルシグナルプロセッサ命令処理と、当該周期内に前記デジタルシグナルプロセッサに対する前記メモリへのアクセスの命令が必要か否かを判断する判断処理と、前記判断処理により前記メモリへのアクセスの命令が必要で無いと判断されたタイミングが当該周期内のどのタイミングかを判断するタイミング判断処理と、当該周期の前記タイミング判断処理により判断された第１タイミングが或るタイミングに達している場合、当該周期の次の周期の前記タイミング判断処理により判断される第２タイミングが前記或るタイミングに達しないように制御する制御処理と、を実行する楽音生成装置。
【００９９】
［２］
前記メモリは、或る音色における第１グレードに対応する第１サンプリングレートの第１波形データと、前記第１グレードより下がる第２グレードに対応する前記第１サンプリングレートより低い第２サンプリングレートの第２波形データと、を記憶し、
前記制御処理は、
前記第１波形データに応じた読み出しスピードで前記第１波形データに基づいて発振していたウェーブジェネレータに、前記第２波形データに応じた読み出しスピードで前記第２波形データに基づいて発振させることにより、前記第２タイミングが前記或るタイミングに達しないように制御する［１］に記載の楽音生成装置。
【０１００】
［３］
前記メモリは、或る音色における第１グレードに対応する第１エフェクトを示すデータと、前記第１グレードより下がる第２グレードに対応する第２エフェクトを示すデータと、を記憶し、
前記制御処理は、
前記第１エフェクトを付与している前記デジタルシグナルプロセッサに対して、前記第１エフェクトの代わりに前記第２エフェクトを付与させることにより、前記第２タイミングが前記或るタイミングに達しないように制御する［１］または［２］に記載の楽音生成装置。
【０１０１】
［４］
前記制御処理は、
前記複数のウェーブジェネレータのうちの発振している或るウェーブジェネレータに対して消音処理させることにより、前記第２タイミングが前記或るタイミングに達しないように制御する［１］乃至［３］のいずれかに記載の楽音生成装置。
【０１０２】
［５］
楽音生成装置のコンピュータに、
信号処理周期ごとに、少なくとも第１のウェーブジェネレータ及び第２のウェーブジェネレータを含む複数のウェーブジェネレータに対してメモリへの時分割アクセスを命令するウェーブジェネレータ命令処理と、前記第１のウェーブジェネレータが前記メモリへのアクセスを完了してから前記第２のウェーブジェネレータが前記メモリへのアクセスを開始する前に、デジタルシグナルプロセッサに対して前記メモリへのアクセスを命令するデジタルシグナルプロセッサ命令処理と、当該周期内に前記デジタルシグナルプロセッサに対する前記メモリへのアクセスの命令が必要か否かを判断する判断処理と、前記判断処理により前記メモリへのアクセスの命令が必要で無いと判断されたタイミングが当該周期内のどのタイミングかを判断するタイミング判断処理と、当該周期の前記タイミング判断処理により判断された第１タイミングが或るタイミングに達している場合、当該周期の次の周期の前記タイミング判断処理により判断される第２タイミングが前記或るタイミングに達しないように制御する制御処理と、を実行させる方法。
【０１０３】
［６］
楽音生成装置のコンピュータに、
信号処理周期ごとに、少なくとも第１のウェーブジェネレータ及び第２のウェーブジェネレータを含む複数のウェーブジェネレータに対してメモリへの時分割アクセスを命令するウェーブジェネレータ命令処理と、前記第１のウェーブジェネレータが前記メモリへのアクセスを完了してから前記第２のウェーブジェネレータが前記メモリへのアクセスを開始する前に、デジタルシグナルプロセッサに対して前記メモリへのアクセスを命令するデジタルシグナルプロセッサ命令処理と、当該周期内に前記デジタルシグナルプロセッサに対する前記メモリへのアクセスの命令が必要か否かを判断する判断処理と、前記判断処理により前記メモリへのアクセスの命令が必要で無いと判断されたタイミングが当該周期内のどのタイミングかを判断するタイミング判断処理と、当該周期の前記タイミング判断処理により判断された第１タイミングが或るタイミングに達している場合、当該周期の次の周期の前記タイミング判断処理により判断される第２タイミングが前記或るタイミングに達しないように制御する制御処理と、を実行させるプログラム。
【０１０４】
［７］
［１］乃至［４］のいずれかに記載の楽音生成装置と、
音高を指定するための演奏操作子と、
を備える電子楽器。
【符号の説明】
【０１０５】
１００    電子楽器
１０２    鍵盤
１０４    音色選択ボタン
１０６    機能選択ボタン
２０２    音源／ＣＰＵ ＬＳＩ
２０６    ＲＡＭ（メモリ）
２０８    フラッシュメモリ
２１８    バスコントローラ
２２０    システムバス
３０２    ＣＰＵ
３０４    波形発生器
３０６    波形発生装置（ウェーブジェネレータ）
３０８    ＤＳＰ（デジタルシグナルプロセッサ）
３１０    タイマ・カウンタ
３１２    バスインターフェース
【図１】
2019168645.tif 000003
【図２】
2019168645.tif 000004
【図３】
2019168645.tif 000005
【図４】
2019168645.tif 000006
【図５】
2019168645.tif 000007
【図６】
2019168645.tif 000008
【図７】
2019168645.tif 000009
【図８】
2019168645.tif 000010
【図９】
2019168645.tif 000011
【図１０】
2019168645.tif 000012
【図１１】
2019168645.tif 000013
【図１２】
2019168645.tif 000014
【図１３】
2019168645.tif 000015
【図１４】
2019168645.tif 000016