以下、本発明に係る電子楽器、電子楽器の制御方法及び制御プログラムを実施するための形態について、図面を参照しながら詳しく説明する。
<電子楽器>
図1は、本発明に係る電子楽器の一実施形態を示す外観図である。ここでは、本発明に係る電子楽器の一実施形態として、電子鍵盤楽器(電子キーボード)を示して説明する。また、図2は、本実施形態に係る電子楽器に適用される音源の仕様の一例を説明するための図である。
本発明に係る電子楽器100の一実施形態は、例えば図1(a)に示すように、楽器本体の一面側に、複数の鍵からなる鍵盤102と、音色選択ボタン104及びリズム選択ボタン106からなるスイッチ・パネルと、ピッチベンドやトレモロ、ビブラート等の各種モジュレーション(演奏効果)を付加するためのベンダ/モジュレーション・ホイール108と、音色やリズム、その他の各種設定情報を表示する表示部110と、を備えている。また、電子楽器100は、図示を省略したが、演奏により生成された楽音を出力するスピーカを、例えば楽器本体の裏面部、側面部、又は背面部等に備えている。
このような電子楽器100において、音色選択ボタン104は、例えば図1(b)に示すように、ピアノ(図中「Piano」)やエレクトリックピアノ(図中「E.Piano」)、オルガン(図中「Organ」)、・・・等の各種の音色のカテゴリを選択するための波形選択操作子としてのボタンである。ここで、図1(b)においては16種類の音色のカテゴリを示した。また、リズム選択ボタン106は、例えば図1(c)に示すように、ロック風(図中「ROCK1」)やポップ風(図中「POP1」)、ジャズ風(図中「JAZZ1」)、・・・等の各種のリズムのカテゴリを選択するための波形選択操作子としてのボタンである。ここで、図1(c)においては16種類のリズムのカテゴリを示した。電子楽器100の演奏者(ユーザ)は、任意の音色選択ボタン104及びリズム選択ボタン106を押下することにより、16×16種類のリズム音色の中から任意のリズム音色のカテゴリを選択して演奏することができる。
ここで、本実施形態に係る電子楽器100に適用される音源の仕様について説明する。本実施形態に適用される音源は、周知のPCM(パルス符号変調)波形再生方式を有しており、最大256音を同時に発音することができる。また、例えば図2に示すように、「0」〜「15」の16の音源パートを有し、16種類の音色を同時に再生することができる。具体的には、音源パートの「0」は鍵盤に割り当てられ、音源パートの「1」〜「15」は自動リズム機能に割り当てられている。特に、音源パート「1」はリズム音色を割り当てる専用のパートに定義されており、「1」以外の音源パートではメロディー音色が割り当てられる。
また、本実施形態に係る電子楽器100に適用される音源は、16のメロディー音色と4つのリズム音色を搭載している。メロディー音色の音色番号は「0」〜「15」が割り当てられ、リズム音色の音色番号は「16」〜「19」が割り当てられている(後述する図5、図6参照)。
すなわち、本実施形態において鍵盤で演奏できるのは、16種類のメロディー音色のみであり、これらのメロディー音色は図1(b)に示した音色選択ボタン104を押下することにより選択される。なお、後述する自動リズム機能においては、搭載されているいずれの音色を使用することもできる。但し、図2に示したように、リズム音色は16の音源パートのうち1パートのみで使用される。
また、本実施形態においては、図1(c)に示したリズム選択ボタン106の上段に配置されたボタンを押下することにより8種類のリズムパターンが選択される。リズム選択ボタン106の下段には自動リズムの制御ボタンが配置されている。それぞれのリズムパターンは4種類のリズム音色のうちの1つを使用している。
図3は、本実施形態に係る電子楽器に適用されるハードウェアの構成例を示すブロック図である。図4は、本実施形態に係る電子楽器に適用される音源LSIの内部構造の例を示すブロック図である。
電子楽器100は、例えば図3に示すように、CPU202と、音源LSI204と、DMA(Direct Memory Access)コントローラ214と、I/O(入出力)コントローラ216とが、それぞれシステムバス226に直接接続されている。また、電子楽器100は、RAM208がメモリコントローラ206を介して、また、フラッシュメモリ212がフラッシュメモリコントローラ210を介して、それぞれシステムバス226に接続されている。また、電子楽器100は、図1に示したLCD等の表示部110がLCDコントローラ218及びI/Oコントローラ216を介してシステムバス226に接続され、また、鍵盤102と、音色選択ボタン104及びリズム選択ボタン106を有するスイッチ・パネルとがキー・スキャナ220及びI/Oコントローラ216を介してシステムバス226に接続され、また、ベンダ/モジュレーション・ホイール108がA/Dコンバータ222及びI/Oコントローラ216を介してシステムバス226に接続されている。また、システムバス226はバスコントローラ224に接続され、バスコントローラ224により上記の各構成間で送受信される信号やデータが制御される。また、音源LSI204には、D/Aコンバータ228及びアンプ230が接続され、音源LSI204から出力されるデジタル楽音波形データがD/Aコンバータ228によりアナログ楽音波形信号に変換され、さらにアンプ230で増幅された後に、出力端子又は図示を省略したスピーカから出力される。
このように、電子楽器100は、機器全体がバスコントローラ224によって制御されるシステムバス226を中心に構成されている。具体的には、バスコントローラ224はシステムバス226に接続された上記の各構成における信号やデータの送受信時の優先順位を制御する。例えば、電子楽器100において、RAM208は、CPU202と音源LSI204によって共有されているが、発音を行う音源LSI204は、データの欠落が許されないため、バスコントローラ224により、音源LSI204とRAM208との送受信時が最も高い優先順位に設定されており、必要に応じてCPU202によるRAM208へのアクセスが制限される。
上記のような構成において、CPU202は、機器全体の処理を行うメインプロセッサであって、RAM208をワーク領域として使用しながら所定の制御プログラムを実行することにより、電子楽器100の制御動作を実行する。特に、本実施形態においては、CPU202は、後述する楽音生成方法を含む一連の制御動作を実行する。
RAM(第2の記憶手段)208は、後述するフラッシュメモリ212に比較して、アクセス速度が高速(第2の読み出し速度)で記憶容量が小さい(第2の記憶容量;理解を助けるための一例として記載すると、例えば16MB以下)高価なメモリデバイスであり、インターフェースであるメモリコントローラ206を介してシステムバス226に接続される。RAM208は、フラッシュメモリ212から転送された波形データや制御プログラム、各種の固定データ等を配置する。特に、RAM208は、後述する音源LSI204において実行される楽音の生成処理に使用される波形データを展開する音源メモリ(上述した波形メモリに対応する)としての機能を有し、発音される楽音の波形データは必ず、RAM208上に配置される。また、RAM208は、CPU202や音源LSI204に内蔵されるDSP(デジタル信号処理回路)306のワーク領域としても使用される。ここで、RAM208の記憶容量は、フラッシュメモリ212に比較して小さいため、RAM208の記憶内容が逐次入れ替えられるが、特定の波形データについては、演奏者により音色が選択されて決定された時点で、フラッシュメモリ212からRAM208の専用の記憶領域に優先的に転送されるように制御される。本実施形態は、後述するように、RAM208の記憶内容のうち、波形データの入れ替えに関する管理方法に特徴を有している。
フラッシュメモリ(第1の記憶手段)212は、アクセス速度が低速(第1の読み出し速度)で記憶容量が大きい(第1の記憶容量;理解を助けるための一例として記載すると、例えば256MB以上)安価なメモリデバイスであり、インターフェースであるフラッシュメモリコントローラ210を介してシステムバス226に接続される。フラッシュメモリ212は、音源LSI204において実行される楽音の生成処理に使用される(又は、使用される可能性のある)全ての音色の波形データや、全ての音色のパラメータデータ、CPU202や音源LSI204のDSP306において実行される制御プログラムのプログラムデータ、音楽データや演奏者の設定データ等の各種の固定データを記憶している。ここで、フラッシュメモリ212に記憶された全ての波形データは、圧縮されており、例えば1語長が8ビットに設定されている。フラッシュメモリ212に記憶された波形データ等は、CPU202がシーケンシャルに順次アクセスすることにより読み出されてRAM208に転送される。
なお、本実施形態においては、低速大容量で安価なメモリデバイスとして、フラッシュメモリ(例えば、NAND型のフラッシュメモリを集積して構成されたSSD;Solid State Drive)を適用する場合を示すが、本発明はこれに限定されるものではなく、ハードディスクを適用するものであってもよい。ここで、フラッシュメモリやハードディスクは、電子楽器100に対して着脱可能(すなわち、差し替え可能)な構成を有しているものであってもよい。また、データの高速転送が可能である場合には、大容量のメモリデバイスとして、特定のネットワーク上やインターネット上(すなわち、クラウド上)のハードディスクを適用するものであってもよい。
LCDコントローラ218は、表示部110の表示状態を制御するICである。キー・スキャナ220は、鍵盤102や音色選択ボタン104及びリズム選択ボタン106等のスイッチ・パネルの状態を走査して、CPU202に通知するICである。A/Dコンバータ222は、ベンダ/モジュレーション・ホイール108の操作位置を検出するICである。これらのLCDコントローラ218やキー・スキャナ220、A/Dコンバータ222は、インターフェースであるI/Oコントローラ216を介してシステムバス226との間でデータや信号の入出力を行う。
音源LSI(発音部)204は、後述する楽音生成処理を実行する専用のICである。ここで、上記のフラッシュメモリ212は、CPU202からはランダムアクセスが不可能であり、音源LSI204からもアクセスが不可能であるため、フラッシュメモリ212に記憶されたデータ等は、再生前にランダムアクセスが可能なRAM208に一旦転送される。音源LSI204は、CPU202からの命令に基づいて、RAM208に転送された波形データについて、対象となる音色の記憶領域から、演奏で指定された鍵の音高に対応する速度で波形データを読み出し、その読み出した波形データに対して演奏で指定されたベロシティの振幅エンベロープを付加し、その結果として得られる波形データを出力楽音波形データとして出力する。
音源LSI204は、例えば図4に示すように、256個の波形データを同時に発振できる波形発生装置304を有する波形発生器302と、DSP306と、ミキサ308と、バスインターフェース310と、を備え、波形発生器302、DSP306及びミキサ308は、バスインターフェース310を介してシステムバス226に接続されて、RAM208へのアクセスや、CPU202との通信が行われる。
波形発生器302の各波形発生装置304は、RAM208から波形データを読み出して音色の波形を再生する発振器であり、DSP306は、音声信号に音響効果をもたらす信号処理回路である。ミキサ308は、波形発生器302からの信号を混合したり、DSP306との間で信号を送受信したりすることにより全体の音声信号の流れを制御して、外部に出力する。すなわち、ミキサ308は、演奏に応じて波形発生器302の各波形発生装置304によりRAM208から読み出された波形データに対して、DSP306によりCPU202から供給される楽音パラメータに応じたエンベロープを付加して、出力楽音波形データとして出力する。ミキサ308の出力信号は、図3に示したように、D/Aコンバータ228及びアンプ230を介して所定の信号レベルのアナログ信号として、図示を省略したスピーカやヘッドホン等に出力される。
(RAMの管理方法)
上述した電子楽器100において、音源メモリとして使用されるRAM208の管理方法(波形データの転送動作の仕様)は、次のような概要を有している。
本実施形態に示した電子楽器100においては、図2に示したように、音源が16パートから構成され、最大16種類の音色を同時に発生することができる。そして、これらの音色のうち、演奏者による鍵盤演奏のメロディー音色(伴奏で使用する波形を含む)と、自動リズム機能で使用されるリズム音色(ロック風やポップ風、ジャズ風等の打楽器音)とを、演奏時のレスポンス(応答特性)において優先度(又は、使用頻度)の高い音色と位置づけて、これらの2音色の波形データについては、音色が決定(選択)された時点でRAM208上の専用の記憶領域への転送を開始する。演奏者による鍵盤演奏のメロディー音色は、図1(b)に示した音色選択ボタン104の操作子を押下(演奏で指定)した際に更新され、自動リズム機能で使用されるリズム音色は、図1(c)に示したリズム選択ボタン106の操作子を押下(選択)した際に更新される。上記のいずれの音色の選択時も先頭の波形番号から順番に波形データがRAM208に転送される。ここで、波形データの転送にはある程度の時間を要するため、転送中に未転送の音色波形を用いる演奏が行われた場合には、現在実行されている転送を中断して、演奏で必要とされている音色波形を優先的に転送するようにスケジュールを変更することにより、最小限の遅延で済むように制御を行う。具体的な手法については、後述する制御方法において詳しく説明する。
(波形データの管理手法)
次に、上述したRAM及びフラッシュメモリに格納される波形データについて詳しく説明する。
図5、図6は、本実施形態に適用される波形データの管理手法を説明する図である。図5(a)は、メロディー音色波形スプリットの説明図であり、図5(b)は、メロディー音色波形ディレクトリの説明図であり、図6は、リズム音色波形ディレクトリの説明図である。
本実施形態においては、上述したように、演奏者が音色選択ボタン104やリズム選択ボタン106を押下することにより、16種類のうちの任意の音色が選択されて演奏が行われる。このとき、鍵域やベロシティによって音量や音高のみならず音色が変化するのを再現するために、フラッシュメモリ212からRAM208に、音高又は音量ごとのメロディー音色やリズム音色の波形データが読み込まれる。
ここで、各メロディー音色は、例えば1音色当たり最大32種類の波形、16音色で最大512の波形を有し、その波形データはフラッシュメモリ212に記憶されている。それぞれの波形データのサイズの最大値は、例えば64KBに設定されている。一つのメロディー音色に対して、音高又は音量ごとに波形データを管理する手法としては、図5(a)に示すように、鍵盤102上で演奏者が演奏する鍵域(図中、横軸で示される複数の「Key」)ごとにそれぞれ波形データを割り当て、また、同じ鍵域であっても押鍵時の速さ(演奏の強さ)を示すベロシティ(図中、縦軸の「Velocity」)に応じてそれぞれ波形データを割り当てる音色波形スプリット構造が適用される。すなわち、メロディー音色波形スプリット構造を用いた波形データの管理手法においては、1音色の音域とベロシティ域を2次元的に分割し、それぞれのスプリット(分割)エリアに最大32個の波形データが割り当てられている。この管理手法によれば、押鍵時の速さ(ベロシティ)とキー番号(鍵域)の2つのファクターから読み出すべき波形データが1つだけ決定される。
また、RAM208やフラッシュメモリ212に記憶されるメロディー音色の波形データは、テーブル形式を有するメロディー音色波形ディレクトリ情報に基づいて管理される。メロディー音色波形ディレクトリ情報は、フラッシュメモリ212に記憶され、音色選択ボタン104が押下された際に、CPU202によりフラッシュメモリ212から読み出されてRAM208に転送される。或るメロディー音色で楽音を演奏する際には、CPU202がRAM208からそのメロディー音色に対応するメロディー音色波形ディレクトリ情報のデータを読み出して参照する。
具体的には、メロディー音色波形ディレクトリ情報のテーブルには、例えば図5(b)に示すように、1つの「音色番号」のメロディー音色に含まれる波形データごとに、その波形データの「波形番号」と、その波形データが発音されるべき鍵域及びベロシティの範囲を示す「最小ベロシティ」、「最大ベロシティ」、「最低キー番号」及び「最高キー番号」と、RAM208に転送された当該メロディー音色の記憶領域(波形領域)の先頭からのアドレスを示す「波形領域先頭からのアドレス」と、その波形データのデータサイズを示す「波形サイズ」との各項目値が登録されている。すなわち、メロディー音色波形ディレクトリ情報においては、各メロディー音色の各波形データについて、上記のメロディー音色波形スプリット構造においてどのような条件で分割されているかという鍵域、及び、ベロシティ域情報と、実際にフラッシュメモリ212の中でどのアドレスに配置されていて、波形サイズはどれだけかという情報とが、テーブル形式で規定されている。
また、各リズム音色は、例えば1音色当たり最大50種類の波形、4音色で最大200の波形を有し、その波形データはフラッシュメモリ212に記憶されている。ここで、上述したメロディー音色波形と同様に、それぞれの波形データのサイズの最大値は、例えば64KBに設定され、また、それぞれの波形データは、その波形を再生することができる1つの鍵域に割り当てられている。
RAM208やフラッシュメモリ212に記憶されるリズム音色の波形データは、テーブル形式を有するリズム音色波形ディレクトリ情報に基づいて管理される。リズム音色波形ディレクトリ情報は、フラッシュメモリ212に記憶され、リズム選択ボタン106が押下された際に、CPU202によりフラッシュメモリ212から読み出されてRAM208に転送される。或るリズム音色で楽音を演奏する際には、CPU202がRAM208からそのリズム音色に対応するリズム音色波形ディレクトリ情報のデータを読み出して参照する。
ここで、リズム音色波形ディレクトリ情報のテーブルには、例えば図6に示すように、1つの「音色番号」のリズム音色に含まれる波形データごとに、その波形データの「波形番号」と、その波形データに関連付けられたリズム楽器の種類や割り当てられた鍵域等を示す「楽器名」、「キー番号」及び「グループ」と、RAM208に転送された当該リズム音色の記憶領域(波形領域)の先頭からのアドレスを示す「波形領域先頭からのアドレス」と、その波形データのデータサイズを示す「波形サイズ」との各項目値が登録されている。すなわち、リズム音色波形ディレクトリ情報においては、各リズム音色の各波形データについて、どのような鍵域に割り当てられているかという情報と、実際にフラッシュメモリ212の中でどのアドレスに配置されていて、波形サイズはどれだけかという情報とが、テーブル形式で規定されている。
なお、リズム楽器においては、例えばドラムセットのオープンハイハットとクローズドハイハットのように、1つの楽器で異なる演奏音を収録しているものがある。この場合、同時には1つの演奏音しか発音させない(すなわち、1つの演奏音のみを発音させる)仕組みを実現する必要があり、そのための情報がリズム音色波形ディレクトリ情報の「グループ」という項目である。ここで、「グループ」が同じ波形データは最後(直近)に演奏された1つの演奏音以外は消音されることになる。
(RAM及びフラッシュメモリ上の情報と転送処理)
次に、本実施形態に係る電子楽器に適用されるRAM及びフラッシュメモリ上の情報とその転送処理について詳しく説明する。
図7は、本実施形態に適用されるRAM及びフラッシュメモリ上の情報とその転送処理の概要を説明する図である。図8は、本実施形態に適用されるRAMの波形領域を説明する図である。図8(a)は、メロディー音色波形バッファのディレクトリの内容を示す図であり、図8(b)は、リズム音色波形バッファのディレクトリの内容を示す図であり、図8(c)は、波形発生装置用波形バッファのディレクトリの内容を示す図である。
RAM208上には、図7左方の「RAM上の情報」に示すように、音色波形ディレクトリ、音色パラメータ、CPUプログラム、CPUデータ、CPUワーク、DSPプログラム、DSPデータ、DSPワークの各種データが展開される。また、フラッシュメモリ212上には、図7右方の「フラッシュメモリ上の情報」に示すように、音色波形ディレクトリ、メロディー、リズム音色パラメータ領域、CPUプログラム、CPUデータ、DSPプログラム、DSPデータの各種データが展開される。
ここで、電子楽器100の演奏に伴って、音源LSI204が波形読み出し動作を実行する際には、対象となる波形データがRAM208上に配置されている必要がある。そのため、例えば電子楽器100の起動時に、図5(b)、図6に示した各音色波形ディレクトリ情報、音色パラメータ、CPUプログラム、CPUデータ、DSPプログラム、DSPデータがフラッシュメモリ212からRAM208に転送される。
また、音源LSI204による波形読み出し動作の対象となる波形データもRAM208上に配置されている必要があるが、RAM208は、フラッシュメモリ212に比較して記憶容量が小さいため、フラッシュメモリ212に記憶されている全ての音色の波形データをRAM208上に配置することができない。
そこで、本実施形態においては、基本的には演奏により発音する際にフラッシュメモリ212から必要な波形データの読み出しを行い、発音チャンネルである波形発生装置304ごとにRAM208上に割り当てられた波形バッファに転送して、音源LSI204により読み出し再生を行う。ここで、鍵盤102に割り当てられたメロディー音色、及び、自動リズム機能が使用するリズム音色は、図7に示したようにRAM208上に専用のバッファ領域を有しており、それぞれの音色の選択時にフラッシュメモリ212からRAM208の専用バッファに波形データが転送されて再生される。すなわち、RAM208上の波形発生装置用波形バッファを使用することなく、上記の専用バッファに転送された波形データが再生される。
また、本実施形態においては、演奏時のCPU202の処理負担を軽減し、処理時間を削減するために、フラッシュメモリ212からRAM208への波形データの転送処理に先立って、押鍵時に指定された楽音の波形データが予めRAM208上に存在しているか否かを検索して判別する。該当する波形データが既にRAM208上に存在する場合には、CPU202はフラッシュメモリ212からの波形データの転送を行わず、同じRAM208上の波形バッファ間で波形データの複製を行う。
図8(a)に示す「RAMメロディー音色波形バッファディレクトリ」は、図7に示した「RAM上の情報」において、メロディー音色の波形データが格納されるRAM208のバッファ領域のディレクトリの内容を示すものである。このメロディー音色波形バッファディレクトリは、CPU202のワーク領域(CPUワーク)内に作成され、その内容は音色選択時に更新される。
メロディー音色波形バッファディレクトリの各バッファ領域は、波形ごとに固定長64KBの容量が割り当てられ、32種類のメロディー音色波形と各バッファ領域とが1対1の関係で対応するように、メロディー音色波形とバッファ領域の番号が設定されている。なお、この場合のメロディー音色波形バッファディレクトリにおける全バッファ領域の合計容量として、例えば4MBが割り当てられている。メロディー音色波形バッファディレクトリの内容は、図8(a)に示すように、各メロディー音色波形0、1、2、・・・31が格納されるバッファ領域ごとに、当該波形の属する音色番号、音色内波形番号、当該波形が配置されたメロディー音色波形領域の先頭からのアドレス情報、波形サイズが格納されている。
図8(b)に示す「RAMリズム音色波形バッファディレクトリ」は、図7に示した「RAM上の情報」において、リズム音色の波形データが格納されるRAM208のバッファ領域のディレクトリの内容を示すものである。このリズム音色波形バッファディレクトリは、CPU202のワーク領域(CPUワーク)内に作成され、その内容はリズム選択時に更新される。
リズム音色波形バッファディレクトリの各バッファ領域は、波形ごとに固定長64KBの容量が割り当てられ、50種類のリズム音色波形と各バッファ領域とが1対1の関係で対応するように、リズム音色波形とバッファ領域の番号が設定されている。なお、この場合のリズム音色波形バッファディレクトリにおける全バッファ領域の合計容量として、例えば8MBが割り当てられている。リズム音色波形バッファディレクトリの内容は、図8(b)に示すように、各リズム音色波形0、1、2、・・・49が格納されるバッファ領域ごとに、当該波形の属する音色番号、音色内波形番号、当該波形が配置されたリズム音色波形領域の先頭からのアドレス情報、波形サイズが格納されている。
図8(c)に示す「RAM波形発生装置用波形バッファディレクトリ」は、図7に示した「RAM上の情報」において、発音チャンネルである波形発生装置304が読み出そうとする波形データが格納されるRAM208のバッファ領域のディレクトリの内容を示すものである。この波形発生装置用波形バッファディレクトリは、CPU202のワーク領域(CPUワーク)内に確保され、その内容は、演奏に伴って可変的に記憶され、楽音の発音時や消音時に更新される。
波形発生装置用波形バッファディレクトリの各バッファ領域は、波形発生装置304ごとに固定長64KBの容量が割り当てられ、256個の波形データを同時に発振できる波形発生装置304と波形バッファ0〜255とが1対1の関係で対応するように、波形発生装置304と波形バッファの番号が設定されている。なお、この場合の波形発生装置用波形バッファディレクトリにおける全バッファ領域の合計容量として、例えば16MBが割り当てられている。これにより、本実施形態の電子楽器100においては、256の同時発音が可能な構成を有している。波形発生装置用波形バッファディレクトリの内容は、図8(c)に示すように、各波形発生装置304に対応する波形バッファごとに、当該バッファ番号、波形データが読み込まれているか否かを示し、転送が完了した時点でセットされる転送済みフラグ、バッファに読み込まれている波形に関する情報である音色番号、音色内波形番号、波形サイズが格納されている。
(RAM上の波形データの流用方法)
次に、本実施形態に適用されるRAM上の波形データの流用方法について説明する。
本実施形態に係る電子楽器100において、演奏者による押鍵時には、CPU202は、まず、キーアサイナによって押鍵された鍵に応じた波形データを発振させる音源LSI204内の波形発生装置304を決定する。ここで、キーアサインは発振(発音)が停止している波形発生装置304から優先的に割り当てられる。
次いで、CPU202は、押鍵時のベロシティと鍵域に基づいて、図5(a)に示したメロディー音色波形のスプリット情報、又は、リズム音色のキー割り当て情報から演奏中に指定された音高に応じた波形データの波形番号を特定し、該当する波形データが図7に示したRAM208上に存在しているか否かを調査する。ここで、CPU202は、まず、RAM208上のメロディー音色波形バッファ、もしくは、リズム音色波形バッファに該当する波形データが存在しているか否かを調査し、メロディー音色波形バッファ、もしくは、リズム音色波形バッファに該当する波形データが存在しない場合には、波形発生装置用波形バッファに存在しているか否かをさらに調査する。
該当する波形データがRAM208上のメロディー音色波形バッファ、もしくは、リズム音色波形バッファに存在している場合には、CPU202は、RAM208上の当該波形データを発音のための読み出し動作の対象とする。また、該当する波形データがメロディー音色波形バッファ、もしくは、リズム音色波形バッファに存在せず、波形発生装置用波形バッファに存在している場合には、CPU202は、同一のRAM208内で、発音のために割り当てられた波形発生装置304に対応する波形バッファに当該波形データを複製する。これにより、フラッシュメモリ212からRAM208に波形データを転送する処理に比較して短時間で必要な波形データをRAM208上の割り当てられた波形発生装置304に対応する波形バッファに配置することができる。そして、発音のための波形データがRAM208上に存在し、割り当てられた波形発生装置304に対応する波形バッファの位置(アドレス)が確定した時点で、CPU202は、音源LSI204において発音のための読み出し動作を開始する。
なお、割り当てられた波形発生装置304に対応する波形バッファに既に当該波形データが存在している場合には、フラッシュメモリ212から波形データを転送したり、RAM208内で波形データを複製したりする必要はなく、当該波形データが発音のための読み出し動作に使用される。一方、該当する波形データがメロディー音色波形バッファ、もしくは、リズム音色波形バッファに存在せず、さらに、波形発生装置用波形バッファにも存在していない場合には、CPU202は、フラッシュメモリ212に記憶された該当する波形データをRAM208へ転送する。
<電子楽器の制御方法>
次に、本実施形態に係る電子楽器の制御方法(楽音生成方法)について、図面を参照して詳しく説明する。ここでは、上記の波形データの流用方法を適用した楽音生成方法を有する、電子楽器の制御方法全体について説明する。また、以下に示す一連の制御処理は、上述した電子楽器100のCPU202及び音源LSI204において、RAM208に記憶された所定の制御プログラムを実行することにより実現されるものである。
(メインルーチン)
図9は、本実施形態に係る電子楽器の制御方法のメインルーチンを示すフローチャートである。
本実施形態に係る電子楽器100の制御方法においては、まず、演奏者により電子楽器100の装置電源がパワーオンされると、CPU202は図9に示すメインルーチンを起動し、装置各部を初期化する初期化処理を実行する(ステップS902)。
次いで、初期化処理が完了すると、CPU202は演奏者が音色選択やリズム選択、自動演奏の再生、停止等のボタン操作を行った際のスイッチ処理(ステップS904)、鍵盤102を弾いた際の押鍵や離鍵に対する鍵盤処理(ステップS906)、自動演奏の進行(発音イベントや消音イベントの発生)を行う自動演奏処理(ステップS908)の一連の処理動作を繰り返し実行する。
なお、図9に示したフローチャートにおいては図示を省略したが、CPU202は上述した各処理動作(ステップS902〜S908)の実行中に、演奏モードが終了や中断したり、装置電源をパワーオフしたりする状態の変化を検出した場合には、メインルーチンを強制的に終了する。
以下、上述した各処理動作について、具体的に説明する。
(初期化処理)
図10は、本実施形態に係る電子楽器の制御方法に適用される初期化処理を示すフローチャートである。
本実施形態に係る電子楽器の制御方法に適用される初期化処理においては、図10に示すフローチャートのように、まず、CPU202は、フラッシュメモリ212からメロディー音色波形ディレクトリ及びリズム音色波形ディレクトリをRAM208上に転送する(ステップS1002)。
次いで、CPU202は、フラッシュメモリ212からピッチやフィルター、音量の設定など発音に必要なメロディー、リズム音色パラメータをRAM208上に転送する(ステップS1004)。次いで、CPU202は、フラッシュメモリ212からCPUプログラム、CPUデータ、さらに、DSPプログラム、DSPデータをRAM208上に順次転送する(ステップS1006、S1008)。そして、フラッシュメモリ212からRAM208への一連の転送動作が終了した場合には、CPU202は、初期化処理を終了して、メインルーチンに戻る。
(スイッチ処理;第1波形データ転送処理)
図11は、本実施形態に係る電子楽器の制御方法のスイッチ処理に適用される音色、リズム選択処理を示すフローチャートである。
演奏者が電子楽器100に備えられたボタンやスイッチ類を操作した際に実行されるスイッチ処理(ステップS904)においては、CPU202は、音色選択処理、又は、リズム選択処理を実行する。具体的には、CPU202は、図11に示すフローチャートのように、演奏者による音色選択ボタン104の押下操作により音色選択イベントが発生したか否かを判断し(ステップS1102)、音色選択イベントが発生したと判断した場合(ステップS1102のYes)には、音色選択ボタン104により決定された音色番号とメロディー音色波形ディレクトリとにより決まる最大32種類の波形データを、フラッシュメモリ212からRAM208上のメロディー音色波形バッファに転送する動作を開始する(ステップS1106)。
一方、音色選択イベントが発生していないと判断した場合には、CPU202は、演奏者によるリズム選択ボタン106の上段に配置された8種類のボタンの押下操作によりリズム選択イベントが発生したか否かを判断する(ステップS1104)。リズム選択イベントが発生したと判断した場合(ステップS1104のYes)には、CPU202は、リズム選択ボタン106により選択されたリズムが使用しているリズム音色番号とリズム音色波形ディレクトリで決まる最大50種類の波形データを、フラッシュメモリ212からRAM208上のリズム音色波形バッファに転送する動作を開始する(ステップS1108)。
なお、CPU202は、音色選択イベント及びリズム選択イベントのいずれも発生していないと判断した場合(ステップS1102、S1104のNo)には、スイッチ処理を終了して、メインルーチンに戻る。
(鍵盤処理;第2波形データ転送処理、発音処理、判断処理、転送制御処理)
図12は、本実施形態に係る電子楽器の制御方法の鍵盤処理に適用される押鍵処理を示すフローチャートである。
演奏者が電子楽器100に備えられた鍵盤102を操作した際に実行される鍵盤処理(ステップS906)においては、CPU202は、当該鍵盤操作により押鍵イベントや離鍵イベントが発生したか否かをそれぞれ判断する。押鍵イベントが発生したと判断した場合には、CPU202は、図12に示すフローチャートのように、まず、キーアサイン処理により、音源LSI204内の256個の波形データを同時に発振できる波形発生装置304のうちの一つの波形発生装置304を割り当てる(ステップS1202)。
次いで、CPU202は、押鍵されたキー番号(鍵盤位置)とベロシティ(押鍵時の速さ)を取得し(ステップS1204)、これらの情報と鍵盤(図2に示した音源パート番号「0」)に設定されている音色番号に基づいて、図5(b)に示したメロディー音色波形ディレクトリから対応する波形番号を取得する(ステップS1206)。
次いで、CPU202は、RAM208上のメロディー音色波形バッファに該当する波形番号の波形データが存在するか否かを確認する(ステップS1208)。メロディー音色波形バッファに該当する波形番号の波形データが存在する場合(ステップS1208のYes)には、CPU202は、先に割り当てられた波形発生装置304に対して、メロディー音色波形バッファの波形データを使用して発音を開始する(ステップS1210)。
ステップS1208において、メロディー音色波形バッファに該当する波形番号の波形データが存在しない場合(ステップS1208のNo)には、CPU202は、RAM208上の波形発生装置用波形バッファに、該当する波形番号の波形データが既に存在するか否かを確認する(ステップS1212)。波形発生装置用波形バッファのいずれかに該当する波形番号の波形データが既に存在する場合(ステップS1212のYes)には、CPU202は、当該波形データが存在する波形装置用波形バッファの波形データを、先に割り当てられた波形発生装置304に対応付けられた波形バッファに複製する(ステップS1214)。
ステップS1212において、いずれの波形発生装置用波形バッファにも該当する波形番号の波形データが存在しない場合(ステップS1212のNo)には、CPU202は、上述したスイッチ処理(音色選択イベント発生)において開始、実行されていた、メロディー音色波形に対するフラッシュメモリ212からRAM208上のメロディー音色波形バッファへの波形データの転送を一旦中断する(ステップS1216)。このとき、CPU202は、波形データの転送を再開できるように、RAM208上のメロディー音色波形バッファに対してどこまで波形データの転送が終了したかを示す情報をCPUワークに保存しておく。
次いで、CPU202は、該当する波形番号の波形データをフラッシュメモリ212から先に割り当てられた波形発生装置用波形バッファに転送する(ステップS1218)。波形データの転送終了後、CPU202は、CPUワークに保存しておいた情報に基づいて、メロディー音色波形に対するフラッシュメモリ212からRAM208上のメロディー音色波形バッファへの波形データの転送を再開する(ステップS1220)。
次いで、CPU202は、先に割り当てられた波形発生装置304に対して、ステップS1214、又は、ステップS1218において波形発生装置用波形バッファに複製、又は、転送された波形データを使用して発音を開始する(ステップS1222)。そして、演奏者による鍵盤操作に基づく発音動作が行われたのち、CPU202は、鍵盤処理を終了して、メインルーチンに戻る。
(自動演奏処理)
図13は、本実施形態に係る電子楽器の制御方法の自動演奏処理に適用される発音イベント処理を示すフローチャートである。
電子楽器100に備えられた自動演奏機能により実行される自動演奏処理(ステップS908)においては、CPU202は、自動演奏の進行により発音イベントや消音イベントが発生したか否かをそれぞれ判断する。発音イベントが発生したと判断した場合には、CPU202は、図13に示すフローチャートのように、まず、キーアサイン処理により、音源LSI204の256個の波形データを同時に発振できる波形発生装置304のうちの一つの波形発生装置304を割り当てる(ステップS1302)。
次いで、CPU202は、発音イベントから音源パート番号、音色番号、キー番号とベロシティを取得し(ステップS1304)、取得した音源パート番号が「1」であるか「1」以外であるかの判別を行う(ステップS1306)。音源パート番号が「1」であると判別された場合には、CPU202は、取得した音色番号、キー番号、ベロシティに基づいて、図6に示したリズム音色波形ディレクトリから対応する波形番号を取得する(ステップS1308)。
次いで、CPU202は、RAM208上のリズム音色波形バッファに該当する波形番号の波形データが存在するか否かを確認する(ステップS1310)。リズム音色波形バッファに該当する波形番号の波形データが存在する場合(ステップS1310のYes)には、CPU202は、先に割り当てられた波形発生装置304に対して、リズム音色波形バッファの波形データを使用して発音を開始する(ステップS1312)。
ステップS1310において、リズム音色波形バッファに該当する波形番号の波形データが存在しない場合(ステップS1310のNo)には、CPU202は、RAM208上の波形発生装置用波形バッファに、該当する波形番号の波形データが既に存在するか否かを確認する(ステップS1314)。波形発生装置用波形バッファのいずれかに該当する波形番号の波形データが既に存在する場合(ステップS1314のYes)には、CPU202は、当該波形データが存在する波形装置用波形バッファの波形データを、先に割り当てられた波形発生装置304に対応付けられた波形バッファに複製する(ステップS1316)。
ステップS1314において、いずれの波形発生装置用波形バッファにも該当する波形番号の波形データが存在しない場合(ステップS1314のNo)には、CPU202は、上述したスイッチ処理(リズム選択イベント発生)において開始、実行されていた、リズム音色波形に対するフラッシュメモリ212からRAM208上のリズム音色波形バッファへの波形データの転送を一旦中断する(ステップS1318)。このとき、CPU202は、波形データの転送を再開できるように、RAM208上のリズム音色波形バッファに対してどこまで波形データの転送が終了したかを示す情報をCPUワークに保存しておく。
次いで、CPU202は、該当する波形番号の波形データをフラッシュメモリ212から先に割り当てられた波形発生装置用波形バッファに転送する(ステップS1320)。波形データの転送終了後、CPU202は、CPUワークに保存しておいた情報に基づいて、リズム音色波形に対するフラッシュメモリ212からRAM208上のリズム音色波形バッファへの波形データの転送を再開する(ステップS1322)。
一方、ステップS1306において、音源パート番号が「1」以外であると判別された場合には、CPU202は、取得した音色番号、キー番号、ベロシティに基づいて、図5(b)に示したメロディー音色波形ディレクトリから対応する波形番号を取得する(ステップS1324)。次いで、CPU202は、該当する波形番号の波形データをフラッシュメモリ212から先に割り当てられた波形発生装置用波形バッファに転送する(ステップS1326)。
次いで、CPU202は、先に割り当てられた波形発生装置304に対して、ステップS1316、S1320、又は、S1326において波形発生装置用波形バッファに複製、又は、転送された波形データを使用して発音を開始する(ステップS1328)。そして、自動演奏処理における発音動作が行われたのち、CPU202は、自動演奏処理を終了して、メインルーチンに戻る。
このように、本実施形態は、複数の音源パートを有し、同時に複数の音色を再生できるマルチパート構造を備え、押鍵時に取得される情報に基づいて低速大容量の記憶装置(フラッシュメモリ)に格納された波形データを、音源の高速小容量の記憶装置(RAM)に転送してから再生を行う音源システム(楽音生成装置)を有している。このような音源システムにおいて、演奏者がリアルタイムに演奏するための鍵盤パートや、自動伴奏や自動演奏で使用するリズム楽器のように演奏時のレスポンスの重要性が高いパート等、優先度(又は、使用頻度)の高い音色波形のみを、予め音色選択時あるいはリズム選択時に、フラッシュメモリからCPUが高速にアクセスできるRAM、あるいは、音源LSIが直接再生を行うための波形バッファに転送を開始しておくことにより、波形データの転送の高速化を図る。
これにより、本実施形態によれば、楽音の生成処理に要する時間を短縮して、演奏時のレスポンスに優れた演奏を行うことができる。すなわち、本実施形態によれば、発音のための操作を行った後にフラッシュメモリのような低速大容量の記憶装置から高速小容量の音源メモリに、発音に必要な波形データを転送して読み出す方式に比較して、演奏時にレスポンスが重視されるリズム音色や演奏者の鍵盤音色の発音に使用される波形データの転送時間を大幅に短縮することができる、もしくは、当該波形データの転送動作自体を不要とすることができる。したがって、記憶装置やCPU、システムバス等のハードウェアの持つ限られた転送能力や記憶容量を効率的に活用することができ、音楽的にレスポンス(応答特性)の優れた電子楽器を実現することができる。
なお、上述した実施形態においては、RAM208上の波形データの流用方法として、フラッシュメモリ212からRAM208に波形データを転送する処理に先立って、発音の対象となる波形データが、RAM208上の他の波形バッファに既に存在するか否かを調査し、存在する場合には、その波形バッファの波形データを、発音のため割り当てられた波形発生装置304に対応する波形バッファに複製した後、読み出して発音に使用する場合について説明した。本発明はこのような波形データを、実質的に間接的に読み出して流用する形態に限定されるものではなく、発音の対象となる波形データが、RAM208上の他の波形バッファに既に存在する場合には、その波形バッファの波形データを、割り当てられた波形発生装置304により直接的に読み出して発音に使用するものであってもよい。
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲とを含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
(付記)
[1]
少なくとも第1音色と、再生される演奏データにて指定される第2音色と、を含む複数の音色のなかから前記第1音色を選択する音色選択処理と、
前記音色選択処理により選択された前記第1音色に応じた複数の第1波形データを、前記選択に応じて、第1記憶手段から第2記憶手段内における音色波形バッファへ転送する第1波形データ転送処理と、
前記演奏データにて指定される前記第2音色に応じた第2波形データを、前記再生に合わせて、前記第1記憶手段から前記第2記憶手段内における発振が割り当てられた波形発生装置に応じた波形バッファに転送する第2波形データ転送処理と、
前記第1音色に応じた楽音は前記音色波形バッファ内に記憶される前記複数の第1波形データに基づいて発音部に発音させるとともに、前記第2音色に応じた楽音は前記波形発生装置に応じた波形バッファ内に記憶される前記第2波形データに基づいて前記発音部に発音させる発音処理と、
を実行する電子楽器。
[2]
前記第1波形データ転送処理による前記複数の第1波形データの転送中に、前記発音処理により発音させる前記複数の第1波形データ及び前記第2波形データのいずれかの波形データが前記第2記憶手段内に記憶されているか否かを判断する判断処理と、
前記判断処理により前記第2記憶手段内に記憶されていないと判断された場合に、前記第1波形データ転送処理による前記複数の第1波形データの転送を中断して、前記発音処理により発音させる波形データを優先して前記第1記憶手段から前記第2記憶手段に転送させる転送制御処理と、
を実行する[1]に記載の電子楽器。
[3]
前記転送制御処理は、前記発音処理により発音させる前記波形データを前記第1記憶手段から前記第2記憶手段に転送させてから、前記複数の第1波形データの転送を再開させる[2]に記載の電子楽器。
[4]
前記発音処理は、前記発音させる前記複数の第1波形データ及び前記第2波形データのいずれかの波形データが前記第2記憶手段内における或る波形発生装置に応じた波形バッファに記憶されている場合に、前記発振が割り当てられた波形発生装置に応じた波形バッファに前記波形データを複製して、前記複製された波形データに基づいて前記発音部に発音させる[1]乃至[3]のいずれかに記載の電子楽器。
[5]
電子楽器のコンピュータに、
少なくとも第1音色と、再生される演奏データにて指定される第2音色と、を含む複数の音色のなかから前記第1音色を選択する音色選択処理と、
前記音色選択処理により選択された前記第1音色に応じた複数の第1波形データを、前記選択に応じて、第1記憶手段から第2記憶手段内における音色波形バッファへ転送する第1波形データ転送処理と、
前記演奏データにて指定される前記第2音色に応じた第2波形データを、前記再生に合わせて、前記第1記憶手段から前記第2記憶手段内における発振が割り当てられた波形発生装置に応じた波形バッファに転送する第2波形データ転送処理と、
前記第1音色に応じた楽音は前記音色波形バッファ内に記憶される前記複数の第1波形データに基づいて発音部に発音させるとともに、前記第2音色に応じた楽音は前記波形発生装置に応じた波形バッファ内に記憶される前記第2波形データに基づいて前記発音部に発音させる発音処理と、
を実行させる方法。
[6]
電子楽器のコンピュータに、
少なくとも第1音色と、再生される演奏データにて指定される第2音色と、を含む複数の音色のなかから前記第1音色を選択する音色選択処理と、
前記音色選択処理により選択された前記第1音色に応じた複数の第1波形データを、前記選択に応じて、第1記憶手段から第2記憶手段内における音色波形バッファへ転送する第1波形データ転送処理と、
前記演奏データにて指定される前記第2音色に応じた第2波形データを、前記再生に合わせて、前記第1記憶手段から前記第2記憶手段内における発振が割り当てられた波形発生装置に応じた波形バッファに転送する第2波形データ転送処理と、
前記第1音色に応じた楽音は前記音色波形バッファ内に記憶される前記複数の第1波形データに基づいて発音部に発音させるとともに、前記第2音色に応じた楽音は前記波形発生装置に応じた波形バッファ内に記憶される前記第2波形データに基づいて前記発音部に発音させる発音処理と、
を実行させるプログラム。