(57)【要約】   【課題】  ジェネレータにおける最大発音数を最大限活用して、楽器のアンサンブルにおける発音の態様にしたがった楽音を発生する。  【解決手段】  音源部２１は、割り当てられた演奏操作子に応じた音高の楽音波形データを生成する複数のジェネレータを有する。ＣＰＵ１１は、検出された鍵盤１６の鍵の操作に応じて、操作された鍵に応じた音高の楽音を発生するために、ジェネレータに音高を割り当てるとともに、発音を指示する。特に、ＣＰＵ１１は、オン状態の鍵のそれぞれに対して、ジェネレータ数が最大になるように、各ジェネレータに、オン状態の鍵に応じた音高を割り当てる。【選択図】  図１
2010256661.tif 000002
【特許請求の範囲】
【請求項１】
割り当てられた演奏操作子に応じた音高の楽音波形データを生成する複数のジェネレータを有する楽音波形データ生成手段と、
演奏操作子の操作状態を検出する操作状態検出手段と、
前記操作状態検出手段により検出された前記演奏操作子の操作に応じて、前記操作された演奏操作子に応じた音高の楽音を発生するために、前記ジェネレータに音高を割り当てるとともに、発音を指示する割り当て制御手段と、を備えた楽音発生装置において、
前記割り当て制御手段が、前記オン状態の演奏操作子のそれぞれに対して、割当てられるべきジェネレータ数が最大になるように、前記ジェネレータに、前記オン状態の演奏操作子に応じた音高を割り当てるように構成されたことを特徴とする楽音発生装置。
【請求項２】
前記割り当て制御手段が、
前記オン状態の演奏操作子の何れかが新たにオフ状態となり、オン状態の演奏操作子が減少した場合に、前記オフ状態となった演奏操作子に割り当てられていたジェネレータ群について、発音中の楽音の消音を指示するとともに、オン状態を継続している残りの演奏操作子のそれぞれに対して、前記ジェネレータ群から均等にジェネレータを割り当て、前記消音の後に、前記演奏操作子に応じた音高の楽音を発生させるように構成されたことを特徴とする請求項１に記載の楽音発生装置。
【請求項３】
前記割り当て制御手段が、
オン状態の演奏操作子のそれぞれに対して割り当てられているジェネレータ数ＯｌｄＧｅｎＮｕｍと、新たにオフ状態となった演奏操作子を除いた、前記残りの演奏操作子のそれぞれに対して割り当てるべき新たなジェネレータ数ＧｅｎＮｕｍとを算出し、
前記残りの演奏操作子のそれぞれに対して、前記新たにオフ状態となった演奏操作子に割り当てられていたジェネレータ群から、（ＧｅｎＮｕｍ−ＯｌｄＧｅｎＮｕｍ）個のジェネレータを割り当てるように構成されたことを特徴とする請求項２に記載の楽音発生装置。
【請求項４】
前記割り当て制御手段が、
オフ状態であった演奏操作子の何れかが新たにオン状態となり、オン状態の演奏操作子が増大した場合に、前記新たにオン状態となった演奏操作子を含まない、既にオン状態の演奏操作子にそれぞれ割り当てられていたジェネレータ群において、新たにオン状態となった演奏操作子を含むオン状態の演奏操作子ごとにジェネレータの割り当て数が均等となるように、新たにオン状態となった演奏操作子に対して、前記ジェネレータ群中の所定のジェネレータを割り当て、前記発音中の楽音の消音の後に、前記新たにオン状態となった演奏操作子に応じた音高の楽音を発生させるように構成されたことを特徴とする請求項１ないし３の何れか一項に記載の楽音発生装置。
【請求項５】
前記割り当て制御手段が、
前記既にオン状態の演奏操作子のそれぞれに対して割り当てられているジェネレータ数ＯｌｄＧｅｎＮｕｍと、新たにオン状態となった演奏操作子を含む、オン状態の演奏操作子のそれぞれに対して割り当てるべき新たなジェネレータ数ＧｅｎＮｕｍとを算出し、
前記既にオン状態の演奏操作子のそれぞれに対して、当該演奏操作子のそれぞれに割り当てられていたジェネレータ群から、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータを、新たにオン状態になった演奏操作子に対して割り当てるように構成されたことを特徴とする請求項４に記載の楽音発生装置。
【請求項６】
前記ジェネレータごとに、発音すべき音高、発音状態を格納したジェネレータ配列が記憶装置に格納され、
前記割り当て制御手段が、前記ジェネレータ配列中の音高および発音状態を参照し、前記発音状態が、無音状態であるもの、消音中であるものの順に、前記演奏操作子のそれぞれに割り当てられていたジェネレータ群から、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータを選択するように構成されたことを特徴とする請求項５に記載の楽音発生装置。
【請求項７】
前記楽音波形生成手段が、同一の音高の楽音波形データを生成するジェネレータ数に応じて、前記ジェネレータにより生成される楽音波形データの音量レベルを調整するように構成されたことを特徴とする請求項１ないし６の何れか一項に記載の楽音発生装置。
【請求項８】
割り当てられた演奏操作子に応じた音高の楽音波形データを生成する複数のジェネレータを有する楽音波形データ生成手段を有するコンピュータに、
演奏操作子の操作状態を検出する操作状態検出ステップと、
前記操作状態検出ステップにおいて検出された前記演奏操作子の操作に応じて、前記操作された演奏操作子に応じた音高の楽音を発生するために、前記ジェネレータに音高を割り当てるとともに、発音を指示する割り当て制御ステップとを実行させ、
前記割り当て制御ステップが、前記オン状態の演奏操作子のそれぞれに対して、割当てられるべきジェネレータ数が最大になるように、前記ジェネレータに、前記オン状態の演奏操作子に応じた音高を割り当てるステップを有することを特徴とする楽音発生プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音を発生する楽音発生装置および楽音発生プログラムに関する。
【背景技術】
【０００２】
従来、楽音発生装置においては、鍵盤を構成する鍵など演奏操作子の１つのオン（押鍵）に対する発音のために１または複数のジェネレータを割り当てている。たとえば、１つの押鍵に対して単一のジェネレータを割り当てた場合には、押鍵ごとに１つずつ楽音波形データを生成するジェネレータ数が増大していく。
【０００３】
また、１つの押鍵に対して２つ以上のジェネレータを割り当てる場合もある。複数のジェネレータを割り当てることは、弦楽器や管楽器の音色であれば、複数の楽器が鳴っているような重厚感を増大させる効果がある。この場合にも、押鍵ごとに、所定数（たとえば２つずつ）だけジェネレータ数が増大していく。
【０００４】
たとえば、特許文献１には、音色ごとに、１つの押鍵に対して使用するジェネレータ（特許文献１ではＤＣＯ：Ｄｉｇｉｔａｌ  Ｃｏｎｔｒｏｌｌｅｄ  Ｏｓｃｉｌｌａｔｏｒ）の数を定めておき、押鍵ごとに定められた数のジェネレータへの割り当てを行なう楽音発生装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１６０２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に示すような楽音発生装置においては、押鍵ごとに決められた数だけ楽音波形データを生成するジェネレータが増大する。たとえば、１鍵に２つのジェネレータを割り当てることを設定した場合には、２鍵の押鍵では４つのジェネレータ、３鍵の押鍵では６つのジェネレータが動作して、それぞれが楽音波形データを生成する。すなわち、押鍵数が増大するのにしたがって、音量が大きくなり、また、重厚感も増大する。
【０００７】
ピアノのような鍵盤楽器では、そもそも押鍵数が増大するのに応じて、音量および重厚感は増大する。しかしながら、弦楽器や管楽器のように所定の人数の楽団員がアンサンブルを行なっているような状態を想定すると、各楽団員は基本的には常に演奏をしており、たとえば、ユニゾンによる演奏では、各楽団員が同じ音高の楽音を発するため最も音量および重厚感が大きい。その一方、複数パートに分かれた演奏をする場合、同一パートに属する楽団員のみが同じ音高の楽音を発生するため、パート数が増大するのにしたがって、楽音の音量および重厚感が小さくなる。楽音発生装置でも、弦楽器や管楽器のアンサンブルにおける発音の態様にしたがった楽音の発生が望ましい場合もある。
【０００８】
本発明は、ジェネレータにおける最大発音数を最大限活用して、楽器のアンサンブルにおける発音の態様にしたがった楽音を発生可能な楽音発生装置および楽音発生プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的は、割り当てられた演奏操作子に応じた音高の楽音波形データを生成する複数のジェネレータを有する楽音波形データ生成手段と、
演奏操作子の操作状態を検出する操作状態検出手段と、
前記操作状態検出手段により検出された前記演奏操作子の操作に応じて、前記操作された演奏操作子に応じた音高の楽音を発生するために、前記ジェネレータに音高を割り当てるとともに、発音を指示する割り当て制御手段と、を備えた楽音発生装置において、
前記割り当て制御手段が、オン状態の演奏操作子のそれぞれに対して、割当てられるべき前記ジェネレータ数が最大になるように、前記ジェネレータに、前記演奏操作子に応じた音高を割り当てるように構成されたことを特徴とする楽音発生装置により達成される。
【００１０】
好ましい実施態様においては、前記割り当て制御手段が、
前記オン状態の演奏操作子の何れかが新たにオフ状態となり、オン状態の演奏操作子が減少した場合に、前記オフ状態となった演奏操作子に割り当てられていたジェネレータ群について、発音中の楽音の消音を指示するとともに、オン状態を継続している残りの演奏操作子のそれぞれに対して、前記ジェネレータ群から均等にジェネレータを割り当て、前記消音の後に、前記演奏操作子に応じた音高の楽音を発生させるように構成されている。
【００１１】
より好ましい実施態様においては、前記割り当て制御手段が、
オン状態の演奏操作子のそれぞれに対して割り当てられているジェネレータ数ＯｌｄＧｅｎＮｕｍと、新たにオフ状態となった演奏操作子を除いた、前記残りの演奏操作子のそれぞれに対して割り当てるべき新たなジェネレータ数ＧｅｎＮｕｍとを算出し、
前記残りの演奏操作子のそれぞれに対して、前記新たにオフ状態となった演奏操作子に割り当てられていたジェネレータ群から、（ＧｅｎＮｕｍ−ＯｌｄＧｅｎＮｕｍ）個のジェネレータを割り当てるように構成されている。
【００１２】
また、好ましい実施態様においては、前記割り当て制御手段が、
オフ状態であった演奏操作子の何れかが新たにオン状態となり、オン状態の演奏操作子が増大した場合に、前記新たにオン状態となった演奏操作子を含まない、既にオン状態の演奏操作子にそれぞれ割り当てられていたジェネレータ群において、新たにオン状態となった演奏操作子を含むオン状態の演奏操作子ごとにジェネレータの割り当て数が均等となるように、新たにオン状態となった演奏操作子に対して、前記ジェネレータ群中の所定のジェネレータを割り当て、前記発音中の楽音の消音の後に、前記新たにオン状態となった演奏操作子に応じた音高の楽音を発生させるように構成されている。
【００１３】
より好ましい実施態様においては、前記割り当て制御手段が、
前記既にオン状態の演奏操作子のそれぞれに対して割り当てられているジェネレータ数ＯｌｄＧｅｎＮｕｍと、新たにオン状態となった演奏操作子を含む、オン状態の演奏操作子のそれぞれに対して割り当てるべき新たなジェネレータ数ＧｅｎＮｕｍとを算出し、
前記既にオン状態の演奏操作子のそれぞれに対して、当該演奏操作子のそれぞれに割り当てられていたジェネレータ群から、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータを、新たにオン状態になった演奏操作子に対して割り当てるように構成されている。
【００１４】
さらに好ましい実施態様においては、前記ジェネレータごとに、発音すべき音高、発音状態を格納したジェネレータ配列が記憶装置に格納され、
前記割り当て制御手段が、前記ジェネレータ配列中の音高および発音状態を参照し、前記発音状態が、無音状態であるもの、消音中であるものの順に、前記演奏操作子のそれぞれに割り当てられていたジェネレータ群から、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータを選択するように構成されている。
【００１５】
また、別の好ましい実施態様においては、前記楽音波形生成手段が、同一の音高の楽音波形データを生成するジェネレータ数に応じて、前記ジェネレータにより生成される楽音波形データの音量レベルを調整するように構成されている。
【００１６】
また、本発明の目的は、割り当てられた演奏操作子に応じた音高の楽音波形データを生成する複数のジェネレータを有する楽音波形データ生成手段を有するコンピュータに、
演奏操作子の操作状態を検出する操作状態検出ステップと、
前記操作状態検出ステップにおいて検出された前記演奏操作子の操作に応じて、前記操作された演奏操作子に応じた音高の楽音を発生するために、前記ジェネレータに音高を割り当てるとともに、発音を指示する割り当て制御ステップとを実行させ、
前記割り当て制御ステップが、前記演奏操作子においてオン状態の演奏操作子のそれぞれに対して、前記ジェネレータ数が最大になるように、前記ジェネレータに、前記演奏操作子に応じた音高を割り当てるステップを有することを特徴とする楽音発生プログラムにより達成される。
【発明の効果】
【００１７】
本発明によれば、ジェネレータにおける最大発音数を最大限活用して、楽器のアンサンブルにおける発音の態様にしたがった楽音を発生可能な楽音発生装置および楽音発生プログラムを提供することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。
【図２】図２は、本実施の形態にかかる電子楽器にて実行される処理を示すフローチャートである。
【図３】図３は、本実施の形態にかかる鍵盤処理を示すフローチャートである。
【図４】図４は、本実施の形態にかかる鍵盤処理を示すフローチャートである。
【図５】図５（ａ）は、本実施の形態に鍵状態配列Ｋｅｙ［］のデータ構造の例を説明する図、図５（ｂ）は、本実施の形態にかかるジェネレータ配列Ｇｅｎｉ［］のデータ構造の例を説明する図である。
【図６】図６は、本実施の形態にかかる新規押鍵フラグセット処理の例を示すフローチャートである。
【図７】図７は、本実施の形態にかかる鍵盤処理を示すフローチャートである。
【図８】図８は、本実施の形態にかかる音源処理の例を示すフローチャートである。
【図９】図９は、本実施の形態におけるジェネレータ選択の例を示すフローチャートである。
【図１０】図１０（ａ）は、４つの鍵が押鍵されているときのジェネレータへの割り当ての例を示す図、図１０（ｂ）は、１つの鍵が離鍵されたときのジェネレータへの割り当ての例を示す図である。
【図１１】図１１（ａ）は、２つの鍵が押鍵されているときのジェネレータへの割り当ての例を示す図、図１１（ｂ）は、さらに１つの鍵が押鍵されて、３つの鍵が押鍵されたときのジェネレータへの割り当ての例を示す図である。
【図１２】図１２（ａ）は、第２の実施の形態にかかる押鍵数割り当てテーブルの例を示す図、図１２（ｂ）は、ジェネレータ数配列の例を示す図である。
【図１３】図１３は、第２の実施の形態において、図８のステップ８０８の処理をより詳細に示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。図１に示すように、本実施の形態にかかる電子楽器１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、サウンドシステム１４、表示部１５、鍵盤１６および操作部１８を備える。
【００２０】
ＣＰＵ１１は、電子楽器１０全体の制御、操作部１８を構成するスイッチ（図示せず）の操作の検出、鍵盤１６の鍵のオン・オフ（押鍵・離鍵）の検出および押鍵・離鍵に応じた発音・消音のための配列へのデータ設定など種々の処理を実行する。
【００２１】
ＲＯＭ１２は、電子楽器１０全体の制御、操作部１８を構成するスイッチ（図示せず）の操作の検出、鍵盤１６の鍵のオン・オフ（押鍵・離鍵）の検出押鍵・離鍵に応じた発音・消音のための配列へのデータ設定など種々の処理を実行するためのプログラムを格納する。また、ＲＯＭ１２は、ピアノ、ギター、ドラムなどの楽音波形データを生成するための元となる波形データを格納する波形データエリアを有している。ＲＡＭ１３は、ＲＯＭ１２から読み出されたプログラムや、処理の過程で生じたデータを記憶する。
【００２２】
サウンドシステム１４は、音源部２１、オーディオ回路２２およびスピーカ２３を備える。音源部２１は、たとえば、ＣＰＵ１１からの発音指示を受信すると、ＲＯＭ１２の波形データエリアから所定の波形データを読み出して、所定の音高の楽音波形データを生成して出力する。また、音源部２１は、スネアドラム、バスドラム、シンバルなど打楽器の音色の波形データを、そのまま楽音波形データとして出力することもできる。オーディオ回路２２は、楽音波形データをＤ／Ａ変換して増幅する。これによりスピーカ２３から音響信号が出力される。
【００２３】
本実施の形態において、音源部２１は、複数個（たとえば１２８個）のジェネレータを有し、それぞれが楽音波形データを生成して出力することができる。したがって、１つの押鍵について１つのジェネレータにより楽音波形データを生成するのであれば、最大で１２８鍵の押鍵に対応することができる。また、後述するように、１つの押鍵に対して最大限の数のジェネレータを割り当てることができ、この場合には、１つの押鍵に対して、複数のジェネレータが同時に楽音波形データを生成する。
【００２４】
図２は、本実施の形態にかかる電子楽器にて実行される処理を示すフローチャートである。電子楽器１０のＣＰＵ１１は、たとえば、ＲＡＭ１３に一時的に記憶されたデータなどのクリアを含むイニシャライズ処理を実行する（ステップ２０１）。イニシャライズ処理が終了すると、ＣＰＵ１１は、操作部１８のスイッチの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行する（ステップ２０２）。
【００２５】
スイッチ処理においては、ＣＰＵ１１は、たとえば、音色指定スイッチの操作にしたがって、ＲＯＭ１２の波形データエリアに格納された波形データの種別（音色）を指定する情報をＲＡＭ１３に格納する。また、本実施の形態において、電子楽器１０は、１つの押鍵について予め定められた数（たとえば、１或いは２）のジェネレータによって楽音波形データを生成する通常モードと、１つの押鍵に対して最大数のジェネレータを割り当てて、割り当てられたジェネレータにより楽音波形データを生成する最大発音モードと、の何れかの演奏モードの下で動作する。したがって、スイッチ処理においては、演奏モード指定スイッチの操作も検出され、ＣＰＵ１１は、演奏モード指定スイッチの操作にしたがって、動作モードを切り替え、現在の電子楽器の動作モードを示す情報をＲＡＭ１３に格納する。
【００２６】
スイッチ処理（ステップ２０２）の後、ＣＰＵ１１は、表示処理を実行する（ステップ２０３）。表示処理においては、スイッチ処理において設定された音色名、動作モードなどを、表示部１５の画面上に表示する。また、操作されたスイッチがオンであることを示すＬＥＤ（図示せず）の点灯もスイッチ処理において実行される。表示処理（ステップ２０３）の後、ＣＰＵ１１は、鍵盤処理を実行する（ステップ２０４）。図３、図４および図７は、本実施の形態にかかる鍵盤処理を示すフローチャートである。
【００２７】
図３に示すように、ＣＰＵ１１は、ＲＡＭ１３に格納された動作モードを示す情報を参照する（ステップ３０１）。ステップ３０１において、最大発音モードと判断された場合には、ＣＰＵ１１は、鍵状態配列Ｋｅｙ［］を、旧鍵状態配列ＯｌｄＫｅｙ［］にコピーする。これら配列Ｋｅｙ［］、ＯｌｄＫｅｙ［］は、ＲＡＭ１３に格納される。図５（ａ）は、鍵状態配列Ｋｅｙ［］のデータ構造の例を説明する図である。なお、旧鍵状態配列ＯｌｄＫｅｙ［］も、鍵状態配列Ｋｅｙ［］と同一のデータ構造を有する。図５（ａ）に示すように、鍵状態配列Ｋｅｙ［］（符号５０１参照）は、鍵盤１６の鍵の番号（ノート番号）ごとに、当該鍵がオン状態かオフ状態かを示すフラグを備えている。たとえば、鍵数が６１鍵の場合には、６１個のフラグを備える。
【００２８】
ステップ３０２では、鍵の状態を走査するのに先立って、現在の鍵状態を、前回の鍵状態として保持する。次いで、ＣＰＵ１１は、鍵盤１６の鍵を走査して、鍵のオン状態、オフ状態に基づいて、鍵状態配列Ｋｅｙ［］を生成する（ステップ３０３）。
【００２９】
また、ＣＰＵ１１は、１鍵あたりに幾つのジェネレータが割り当てられているかを示すパラメータＧｅｎＮｕｍを、旧ジェネレータ数ＯｌｄＧｅｎＮｕｍにコピーする（ステップ３０４）。ジェネレータ数ＧｅｎＮｕｍおよび旧ジェネレータ数ＯｌｄＧｅｎＮｕｍも、ＲＡＭ１３に格納される。次いで、ＣＰＵ１１は、鍵状態配列Ｋｅｙ［］を参照して、オン状態の鍵数（押鍵数）をカウントし、最大ジェネレータ数／押鍵数を算出して、これをジェネレータ数ＧｅｎＮｕｍとしてＲＡＭ１３に格納する（ステップ３０５）。最大ジェネレータ数は、本実施の形態においては、音源部２１に備えられたジェネレータの総数（たとえば１２８個）としている。ステップ３０５で算出されたジェネレータ数ＧｅｎＮｕｍは、現在押鍵されている鍵１つあたりに割り当てるべきジェネレータ数を示す。
【００３０】
次いで、ＣＰＵ１１は、新規の離鍵があったかを判断する（ステップ３０６）。ステップ３０６においては、ＣＰＵ１１は、旧鍵状態配列ＯｌｄＫｅｙ［］と、鍵状態配列Ｋｅｙ［］を比較して、ＯｌｄＫｅｙ［］において「１」で、Ｋｅｙ［］で「０」となるようなノート番号が存在するかを判断すれば良い。ステップ３０６でＹｅｓと判断された場合には、ＣＰＵ１１は、離鍵された鍵のノート番号を含むジェネレータ配列Ｇｅｎ［］の消音待ちフラグをセットする（ステップ３０７）。
【００３１】
以下、ジェネレータ配列Ｇｅｎｉ［］（ｉ＝０〜１２７）について説明する。図５（ｂ）に示すように、第ｉ番のジェネレータに関するジェネレータ配列Ｇｅｎｉ［］（符号５０２参照）は、発音している楽音のノート番号、および、各種フラグを含む。したがって、ジェネレータ配列Ｇｅｎｉ［］は、第ｉ番のジェネレータが、どのノート番号の楽音について、どの状態となっているかを示している。フラグには、消音待ちフラグ、ファストダンプ待ちフラグ、発音待ちフラグ、および、発音中フラグが含まれる。これらフラグは、鍵盤処理においてセット或いはリセットされ、また、後述する音源処理において、音源部２１により参照され、また、セット或いはリセットされる。
【００３２】
消音待ちフラグが「１」であることは、現在発音中であるノート番号に示す音高の楽音について、通常の消音（つまり、いわゆるリリースエンベロープを用いた消音）をすべきことを示している。ファストダンプ待ちフラグが「１」であることは、現在発音中であるノート番号に示す音高の楽音について、高速に消音すべきことを示している。発音待ちフラグが「１」であることは、ノート番号に示す音高の楽音を、発音すべきであることを示している。また、発音中フラグが「１」であることは、ノート番号に示す楽音が現在発音中であることを示している。
【００３３】
次いで、ＣＰＵ１１は、ジェネレータ数ＧｅｎＮｕｍと旧ジェネレータ数ＯｌｄＧｅｎＮｕｍとを比較して、ＧｅｎＮｕｍ＜ＯｌｄＧｅｎＮｕｍであるかを判断する（ステップ４０１）。ステップ４０１でＹｅｓと判断されることは、１鍵あたりのジェネレータ数が減ったこと、すなわち、前回より押鍵数が増えたことを意味している。ステップ４０１でＹｅｓと判断された場合には、ＣＰＵ１１は、現在発音中のジェネレータについてのジェネレータ配列Ｇｅｎ［］を特定する（ステップ４０２）。より具体的には、旧鍵状態配列ＯｌｄＫｅｙ［］において「１」で、かつ、鍵状態配列Ｋｅｙ［］において「１」であるようなノート番号を特定し、そのようなノート番号を格納したジェネレータ配列Ｇｅｎ［］を特定すれば良い。
【００３４】
ＣＰＵ１１は、同一のノート番号を格納したジェネレータ配列Ｇｅｎ［］のうち、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータ配列について、ファストダンプ待ちフラグを「１」にセットする（ステップ４０３）。ファストダンプ待ちフラグのセットは、ノート番号ごとに行なわれる。なお、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータ配列Ｇｅｎ［］を選択する際には、以下のようなロジックを採用することができる。図９は、ジェネレータの選択処理の例を示すフローチャートである。
【００３５】
図９に示すように、まず、ＣＰＵ１１は、同一のノート番号を格納したジェネレータ配列Ｇｅｎ［］のうち、消音待ちフラグが「１」であるジェネレータ配列を特定する（ステップ９０１）。ＣＰＵ１１は、特定されたジェネレータ配列の数が、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）以上であるかを判断する（ステップ９０２）。すなわち、離鍵により消音すべきジェネレータの数が、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）以上あるかを判断する。ステップ９０２でＹｅｓと判断された場合には、ＣＰＵ１１は、ステップ９０１で特定された配列中、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個の配列の消音待ちフラグを「０」にリセットし、かつ、そのファストダンプ待ちフラグを「１」にセットする（ステップ９０３）。
【００３６】
ステップ９０２でＮｏと判断された場合には、ＣＰＵ１１は、まず、ステップ９０１において特定された配列の消音待ちフラグを「０」にリセットし、かつ、そのファストダンプ待ちフラグを「１」にセットする（ステップ９０４）。また、ＣＰＵ１１は、残りの配列、つまり、消音待ちフラグが「１」でないような配列中、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）−ステップ９０１で特定された配列数）個の配列において、ファストダンプ待ち配列を「１」にセットする（ステップ９０５）。このように、本実施の形態においては、既に消音すべきジェネレータについて優先的に高速消音して、次の押鍵による発音を可能としている。
【００３７】
次に、ＣＰＵ１１は、ジェネレータ数ＧｅｎＮｕｍと旧ジェネレータ数ＯｌｄＧｅｎＮｕｍとを比較して、ＧｅｎＮｕｍ＞ＯｌｄＧｅｎＮｕｍであるかを判断する（ステップ４０４）。ステップ４０４でＹｅｓと判断されることは、１鍵あたりのジェネレータ数が増えたこと、すなわち、前回より押鍵数が減ったことを意味している。ステップ４０４でＹｅｓと判断された場合には、ＣＰＵ１１は、離鍵された鍵についてのジェネレータ配列Ｇｅｎ［］を特定して、ファストダンプ待ちフラグを「１」にセットする（ステップ４０５）。より具体的には、ＣＰＵ１１は、旧鍵状態配列ＯｌｄＫｅｙ［］において「１」で、かつ、鍵状態配列Ｋｅｙ［］において「０」であるようなノート番号を特定し、そのようなノート番号を格納したジェネレータ配列Ｇｅｎ［］を特定すれば良い。
【００３８】
ＣＰＵ１１は、ステップ４０５においてファストダンプ待ちフラグをセットされたジェネレータ配列Ｇｅｎの数から、現在押鍵されている鍵のそれぞれに割り当てるべきジェネレータ数（ＧｅｎＮｕｍ−ＯｌｄＧｅｎＮｕｍ）を算出して（ステップ４０６）、（ＧｅｎＮｕｍ−ＯｌｄＧｅｎＮｕｍ）個のジェネレータ配列Ｇｅｎ［］に、現在押鍵されている鍵のノート番号をセットするとともに、発音待ちフラグに「１」をセットする（ステップ４０７）。これにより、ファストダンプ待ちフラグがセットされたジェネレータ配列Ｇｅｎ［］中、（ＧｅｎＮｕｍ−ＯｌｄＧｅｎＮｕｍ）個ずつに、現在押鍵されている鍵のノート番号が割り当てられ、高速消音の後、新たにノート番号が示す音高の楽音を発音することができる。
【００３９】
次に、ＣＰＵ１１は、新規の押鍵があったかを判断する（ステップ４０８）。ステップ４０８においては、ＣＰＵ１１は、旧鍵状態配列ＯｌｄＫｅｙ［］と、鍵状態配列Ｋｅｙ［］を比較して、ＯｌｄＫｅｙ［］において「０」で、Ｋｅｙ［］で「１」となるようなノート番号が存在するかを判断すれば良い。ステップ４０８でＹｅｓと判断された場合には、ＣＰＵ１１は、新規押鍵フラグセット処理を実行する（ステップ４０９）。図６は、本実施の形態にかかる新規押鍵フラグセット処理の例を示すフローチャートである。
【００４０】
新規押鍵フラグセット処理において、ＣＰＵ１１は、発音中フラグが「０」のジェネレータ配列Ｇｅｎ［］を特定し（ステップ６０１）、ステップ６０１において特定されたジェネレータ配列Ｇｅｎ［］中、（ＧｅｎＮｕｍ）個のジェネレータ配列Ｇｅｎ［］に、ステップ４０８で特定されたノート番号をセットするとともに、発音待ちフラグを「１」にセットする（ステップ６０２）。ＣＰＵ１１は、ステップ６０２において（ＧｅｎＮｕｍ）個のジェネレータ配列Ｇｅｎ［］への割り当てができたかを判断する（ステップ６０３）。ステップ６０３でＮｏと判断された場合には、ＣＰＵ１１は、ステップ６０１で特定されたジェネレータ配列以外の他のジェネレータ配列Ｇｅｎ［］を参照して、ファストダンプ待ちフラグが「１」のジェネレータ配列Ｇｅｎ［］を特定する（ステップ６０４）。
【００４１】
ＣＰＵ１１は、ステップ６０４において特定されたジェネレータ配列Ｇｅｎ［］中、（ＧｅｎＮｕｍ−発音中フラグが「０」であったジェネレータ配列の配列数）個のジェネレータ配列Ｇｅｎ［］に、ステップ４０８で特定されたノート番号をセットするとともに、発音待ちフラグを「１」にセットする（ステップ６０５）。次いで、ＣＰＵ１１は、ステップ６０５により、（ＧｅｎＮｕｍ）個のジェネレータ配列Ｇｅｎ［］への割り当てができたかを判断する（ステップ６０６）。
【００４２】
ステップ６０６でＮｏと判断された場合には、さらに、ＣＰＵ１１は、他のジェネレータ配列Ｇｅｎ［］を参照して、消音待ちフラグが「１」のジェネレータ配列を特定する（ステップ６０７）。ＣＰＵ１１は、ステップ６０７で特定されたジェネレータ配列Ｇｅｎ［］中、（ＧｅｎＮｕｍ−発音中フラグが「０」であったジェネレータ配列の配列数−ファストダンプ待ちフラグが「１」であったジェネレータ配列の配列数）個のジェネレータ配列Ｇｅｎ［］に、ステップ４０８で特定されたノート番号をセットするとともに、発音待ちフラグを「１」にセットする（ステップ６０８）。
【００４３】
このように、本実施の形態にかかる新規押鍵フラグセット処理においては、停止しているジェネレータ（つまり、ジェネレータ配列の発音中フラグが「０」であるようなジェネレータ、高速消音待ちのジェネレータ、消音待ちのジェネレータの順に、優先して、押鍵されたノート番号を割り当てるようにしている。
【００４４】
次に、ステップ３０１で、動作モードが通常モードであると判断された場合について説明する。この場合には、図７に示すように、ＣＰＵ１１は、新規離鍵があったかを判断する（ステップ７０１）。ステップ７０１においては、旧鍵状態配列ＯｌｄＫｅｙ［］と、鍵状態配列Ｋｅｙ［］を比較して、ＯｌｄＫｅｙ［］において「１」で、Ｋｅｙ［］で「０」となるようなノート番号が存在するかを判断すれば良い。ステップ７０１でＹｅｓと判断された場合には、ＣＰＵ１１は、離鍵された鍵のノート番号を含むジェネレータ配列Ｇｅｎ［］の消音待ちフラグを「１」にセットする（ステップ７０２）。
【００４５】
また、ＣＰＵ１１は、新規押鍵があったかを判断する（ステップ７０３）。ステップ７０３においては、旧鍵状態配列ＯｌｄＫｅｙ［］と、鍵状態配列Ｋｅｙ［］を比較して、ＯｌｄＫｅｙ［］において「０」で、Ｋｅｙ［］で「１」となるようなノート番号が存在するかを判断すれば良い。ステップ７０３でＹｅｓと判断された場合には、ＣＰＵ１１は、発音中フラグが「０」のジェネレータ配列Ｇｅｎ［］を特定し（ステップ７０４）、特定されたジェネレータ配列中、１つの鍵の押鍵に対して発音すべきジェネレータ数に応じた個数のジェネレータ配列に、ノート番号をセットするとともに、発音待ちフラグを「１」にセットする（ステップ７０５）。このジェネレータ数は、予め定められ、ＲＡＭ１３に格納された「１」以上の数である。このように、通常モードにおいては、離鍵された鍵について楽音を生成しているジェネレータを消音させるべく、そのジェネレータ配列に消音待ちフラグをセットし、押鍵された鍵について、所定のジェネレータ数のジェネレータを用いて楽音を生成すべく、発音中フラグが「０」である所定数のジェネレータ配列の発音待ちフラグを「１」にセットする。
【００４６】
鍵盤処理（図２のステップ２０４）が終了すると、音源部２１およびＣＰＵ１１は、音源処理を実行する（ステップ２０５）。図８は、本実施の形態にかかる音源処理の例を示すフローチャートである。ＣＰＵ１１は、鍵盤処理においてフラグがセット或いはリセットされたジェネレータ配列を走査して（ステップ８０１）、以下のようにジェネレータ配列の内容にしたがった所定の処理を音源部２１に指示する。
【００４７】
消音待ちフラグが「１」にセットされたジェネレータ配列Ｇｅｎ［］が存在する場合には（ステップ８０２でＹｅｓ）、ＣＰＵ１１は、消音待ちフラグが「１」であるジェネレータ配列Ｇｅｎ［］により特定されるジェネレータに対する消音処理を、音源部２１に指示する（ステップ８０３）。また、ステップ８０３において、ＣＰＵ１１は、上記消音待ちフラグが「１」であったジェネレータ配列Ｇｅｎ［］について、当該消音待ちフラグを「０」にリセットする。
【００４８】
音源部２１は、消音処理の指示に応答して、当該ジェネレータについて、ＲＯＭ１２の波形データエリアからノート番号にしたがった音高に基づき読み出された波形データに、リリースエンベロープを乗じて楽音波形データを生成して出力する。このようにして、消音待ちフラグが「１」であったジェネレータ配列Ｇｅｎ［］に対応するジェネレータにおいては、通常のリリースエンベロープを用いて楽音が消音される。なお、音源部２１による消音が完了すると、音源部２１は、ジェネレータ配列Ｇｅｎ［］の発音フラグを「０」にリセットする。
【００４９】
また、ファストダンプ待ちフラグが「１」にセットされたジェネレータ配列Ｇｅｎ［］が存在する場合には（ステップ８０４でＹｅｓ）、ＣＰＵ１１は、ファストダンプ待ちフラグが「１」であるジェネレータ配列Ｇｅｎ［］により特定されるジェネレータについての高速消音処理を、音源部２１に指示する（ステップ８０５）。ステップ８０５において、ＣＰＵ１１は、上記ファストダンプ待ちフラグが「１」であったジェネレータ配列Ｇｅｎ［］について、当該ファストダンプ待ちフラグを「０」にリセットする。
【００５０】
音源部２１は、高速消音処理の指示に応答して、当該ジェネレータについて、ＲＯＭ１２の波形データエリアからノート番号にしたがった音高に基づき読み出された波形データに、高速リリースエンベロープを乗じて楽音波形データを生成して出力する。このようにして、ファストダンプ待ちフラグが「１」であったジェネレータ配列Ｇｅｎ［］に対応するジェネレータにおいては、高速消音のためのリリースエンベロープを用いて楽音が消音される。なお、音源部２１による高速消音が完了すると、音源部２１は、ジェネレータ配列Ｇｅｎ［］の発音フラグを「０」にリセットする。
【００５１】
発音待ちフラグが「１」にセットされたジェネレータ配列Ｇｅｎ［］が存在する場合には（ステップ８０６でＹｅｓ）、ＣＰＵ１１は、当該ジェネレータ配列Ｇｅｎ［］において、発音中フラグが「０」であるかを判断する（ステップ８０７）。ステップ８０７は、既に発音中のジェネレータを除外するために実行される。ステップ８０７でＹｅｓと判断された場合には、ＣＰＵ１１は、当該ジェネレータ配列Ｇｅｎ［］のノート番号に示す音高の楽音波形データの生成を、音源部２１に指示する（ステップ８０８）。また、ステップ８０８において、ＣＰＵ１１は、当該ジェネレータ配列Ｇｅｎ［］の発音待ちフラグを「０」にリセットする。
【００５２】
音源部２１は、楽音波形データ生成の指示、つまり、発音の指示に応答して、ＲＯＭ１２の波形データエリアからノート番号にしたがった音高に基づき波形データを読み出し、読み出された波形データに、所定のエンベロープ（アタックのエンベロープなど）を乗算して楽音波形データを生成する。また、音源部２１は、楽音波形データが生成されると発音中フラグを「１」にセットする。
【００５３】
以下、最大発音モードの下でのジェネレータへの割り当ての具体例を説明する。まず、押鍵数が減少した場合について説明する。図１０（ａ）は、４つの鍵（ノート番号：Ｎ１〜Ｎ４）が押鍵されているときの、ジェネレータへの割り当ての例を示す図である。符号１０００に示すように、本実施の形態においては、Ｇｅｎ０〜Ｇｅｎ１２７の１２８個のジェネレータが存在すると考える。４つの鍵が押鍵されているときのジェネレータ数ＧｅｎＮｕｍ＝１２８／４＝３２である。また、図１０（ａ）に示すように、ジェネレータＧｅｎ０〜Ｇｅｎ３１にノート番号Ｎ１、ジェネレータＧｅｎ３２〜Ｇｅｎ６３にノート番号Ｎ２、ジェネレータＧｅｎ６４〜９５にノート番号Ｎ３、ジェネレータＧｅｎ９６〜１２７にノート番号Ｎ４が割り当てられ、それぞれが発音中であると考える。
【００５４】
ノート番号Ｎ４の鍵が離鍵されると、ＧｅｎＮｕｍ＝１２８／３＝４２となる。本実施の形態においては、剰余の２は割り当てから除外する。したがって、ＧｅｎＮｕｍ＞ＯｌｄＧｅｎＮｕｍ（＝３２）であり、また、（ＧｅｎＮｕｍ−ＯｌｄＧｅｎＮｕｍ）＝１０となる。したがって、ノート番号Ｎ４の楽音を発音していたジェネレータ中、１０個ずつのジェネレータが、それぞれ、ノート番号Ｎ１〜Ｎ３に新たに割り当てられる。
【００５５】
図１０（ｂ）に示すように、符号１０１０に示す例では、もともとノート番号Ｎ４に割り当てられていたジェネレータＧｅｎ９６〜Ｇｅｎ１２７のうち、ジェネレータＧｅｎ９６〜Ｇｅｎ１０５にノート番号Ｎ１、ジェネレータＧｅｎ１０６〜１１５にノート番号Ｎ２、ジェネレータＧｅｎ１１６〜１２５にノート番号Ｎ３が割り当てられ、残りのジェネレータ１２６〜１２７にはノート番号が割り当てられない。鍵盤処理においては、ジェネレータＧｅｎ９６〜Ｇｅｎ１２７のジェネレータ配列Ｇｅｎ９６［］〜Ｇｅｎ１２７［］のファストダンプ待ちフラグがセットされ（図４のステップ４０５）、ジェネレータ配列Ｇｅｎ９６［］〜Ｇｅｎ１２５［］に対応するノート番号および発音待ちフラグ「１」がセットされる（図４のステップ４０７）。
【００５６】
次に、押鍵数が増大した場合について説明する。図１１（ａ）は、２つの鍵（ノート番号：Ｎ１〜Ｎ２）が押鍵されているときの、ジェネレータへの割り当ての例を示す図である。２つの鍵が押鍵されているときのジェネレータ数ＧｅｎＮｕｍ＝１２８／２＝６４であり図１１（ａ）の符号１１００に示すように、ジェネレータＧｅｎ０〜Ｇｅｎ６３にノート番号Ｎ１、ジェネレータＧｅｎ６４〜Ｇｅｎ１２７にノート番号Ｎ２が割り当てられ、それぞれが発音中であると考える。ノート番号Ｎ３の鍵が離鍵されると、ＧｅｎＮｕｍ＝１２８／３＝４２となる。本実施の形態においては、剰余の２は割り当てから除外する。したがって、ＯｌｄＧｅｎＮｕｍ（＝６４）＞ＧｅｎＮｕｍであり、また、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）＝２２となる。したがって、ノート番号Ｎ１およびノート番号Ｎ２の楽音を発音していたジェネレータ中、２２個ずつのジェネレータが、それぞれ、ノート番号Ｎ３に新たに割り当てられる。
【００５７】
図１１（ｂ）に示すように、符号１１１０に示す例では、もともとノート番号Ｎ１に割り当てられていたジェネレータＧｅｎ０〜Ｇｅｎ６３のうち、２２個のジェネレータＧｅｎ０〜Ｇｅｎ２１がノート番号Ｎ３に割り当てられ、また、もともと、ノート番号Ｎ２に割り当てられていたジェネレータＧｅｎ６４〜Ｇｅｎ１２７のうち、２２個のジェネレータＧｅｎ６４〜Ｇｅｎ８５が、ノート番号Ｎ３に割り当てられる。鍵盤処理においては、ジェネレータＧｅｎ０〜Ｇｅｎ２１、Ｇｅｎ６４〜８５のジェネレータ配列Ｇｅｎ０［］〜Ｇｅｎ２１［］、Ｇｅｎ６４［］〜Ｇｅｎ８５［］のファストダンプ待ちフラグがセットされ（図４のステップ４０３）、ジェネレータ配列Ｇｅｎ０［］〜Ｇｅｎ２１［］、Ｇｅｎ６４［］〜Ｇｅｎ８５［］に、対応するノート番号および発音待ちフラグ「１」がセットされる（図４のステップ４０９、図６）。
【００５８】
本実施の形態によれば、ＣＰＵ１１は、オン状態の鍵のそれぞれに対して、音源部２１のジェネレータ数が最大になるように、各ジェネレータに、オン状態の鍵に応じた音高を割り当てる。したがって、たとえば、押鍵数が減少するのにしたがって、各鍵に割り当てられるジェネレータ数は増大する。これにより、一定の人数の楽団員が、アンサンブルを行なっているような音量および重厚感の楽音を発することが可能となる。
【００５９】
本実施の形態においては、ＣＰＵ１１は、オン状態の鍵の何れかが新たにオフ状態となり、オン状態の鍵の数が減少した場合に、オフ状態となった鍵に割り当てられていたジェネレータ群について、発音中の楽音の消音を指示するとともに、オン状態を継続している残りの鍵のそれぞれに対して、ジェネレータ群から均等に、つまり、同数のジェネレータを割り当て、消音の後に、割り当てられた鍵に応じた音高の楽音を発生させる。
【００６０】
これにより、実際の演奏中に、ある鍵が離鍵されると、それに応じて、離鍵された鍵に割り当てられていたジェネレータが、均等に押鍵中の残りの鍵に割り当てられる。したがって、アンサンブルで、あるパートを演奏していた楽団員が、そのパートの終了とともに、残りのパートに均等に分散して、演奏を続行するような演奏形態を再現することができる。
【００６１】
また、本実施の形態においては、ＣＰＵ１１は、オン状態の鍵に対して割り当てられているジェネレータ数ＯｌｄＧｅｎＮｕｍと、新たにオフ状態となった鍵を除いた、残りの鍵のそれぞれに対して割り当てるべき新たなジェネレータ数ＧｅｎＮｕｍに基づき、残りの鍵のそれぞれに対して、新たにオフ状態となった鍵に割り当てられていたジェネレータ群から、（ＧｅｎＮｕｍ−ＯｌｄＧｅｎＮｕｍ）個のジェネレータを割り当てている。このようにして、複雑な演算を経ることなく、ジェネレータの均等な割り当てが実現される。
【００６２】
さらに、本実施の形態においては、ＣＰＵ１１は、オフ状態であった鍵の何れかが新たにオン状態となり、オン状態の鍵が増大した場合に、新たにオン状態となった鍵を含まない、既にオン状態の鍵にそれぞれ割り当てられていたジェネレータ群において、新たにオン状態となった鍵を含むオン状態の鍵ごとにジェネレータの割り当て数が均等となるように、新たにオン状態となった鍵に対して、ジェネレータ群中の所定のジェネレータを割り当て、発音中の楽音の消音の後に、新たにオン状態となった鍵に応じた音高の楽音を発生させる。
【００６３】
これにより、実際の演奏中に、ある鍵が追加して押鍵されると、それに応じて、既に押鍵されていた鍵に割り当てられていたジェネレータ中、所定数のジェネレータが、新たに押鍵された鍵に割り当てられる。したがって、アンサンブルで、パートが追加された場合に、追加されたパートを含めて楽団員が均等に分散するように、所定数の楽団員が追加されたパートを演奏するような演奏形態を再現することができる。
【００６４】
また、本実施の形態においては、ＣＰＵ１１は、既にオン状態の鍵のそれぞれに対して割り当てられているジェネレータ数ＯｌｄＧｅｎＮｕｍと、新たにオン状態となった鍵を含む、オン状態の鍵のそれぞれに対して割り当てるべき新たなジェネレータ数ＧｅｎＮｕｍとに基づいて、既にオン状態の鍵のそれぞれに対して、当該鍵のそれぞれに割り当てられていたジェネレータ群から、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータを、新たにオン状態になった鍵に対して割り当てる。これにより、複雑な演算を経ることなく、ジェネレータの均等な割り当てが実現される。
【００６５】
さらに、本実施の形態においては、ジェネレータ配列ＧＥＮの内容を参照し、発音状態が、無音状態であるもの、消音中であるものの順に、前記演奏操作子のそれぞれに割り当てられていたジェネレータ群から、（ＯｌｄＧｅｎＮｕｍ−ＧｅｎＮｕｍ）個のジェネレータを選択する。これにより、新たな鍵の割り当ての際に、不自然な消音をできるだけ排除することができる。
【００６６】
次に、本発明の第２の実施の形態について説明する。第１の実施の形態において、ジェネレータの総数が、鍵数で割り切れず、したがって、鍵ごとに発音しているジェネレータ数が異なる場合がある。たとえば、図１０に示す例では、押鍵数が４から３になったきに、押鍵中であるノートＮ１〜Ｎ３のジェネレータ数は、それぞれ４２個で互いに等しい。その一方、図１１に示す例では、ノートＮ１、Ｎ２のジェネレータ数は、それぞれ４２個で等しいが、ノートＮ３のジェネレータ数は４４個となる。
【００６７】
そこで、第２の実施の形態においては、ノートごとに割り当てられたジェネレータ数を計数してＲＡＭ１３に格納し、音源処理で当該ジェネレータ数を参照することで、ジェネレータの出力レベルを調整している。第２の実施の形態において、押鍵数と標準的なジェネレータ数ＧｅｎＮｕｍＲｅｆとを対応付けた押鍵数割り当てテーブルをＲＡＭ１３に保持する。また、鍵盤処理の最後、たとえば、ステップ４０８のＮｏ、および、ステップ４０９の後に、ＣＰＵ１１は、ジェネレータ配列Ｇｅｎ０［］〜Ｇｅｎ１２７［］を走査して、発音中フラグが「１」或いは発音待ちフラグが「１」であるジェネレータ配列を参照し、ノート番号ごとのジェネレータ数をカウントして、ノート番号とジェネレータ数との組み合わせをもつジェネレータ数配列を生成してＲＡＭ１３に格納する。
【００６８】
図１２（ａ）は、第２の実施の形態にかかる押鍵数割り当てテーブルの例を示す図、図１２（ｂ）は、ジェネレータ数配列の例を示す図である。図１２（ａ）に示すように、第２の実施の形態において、テーブル１２００において、割り当てられるべき標準ジェネレータ数ＧｅｎＮｕｍＲｅｆは、押鍵数で割り切れない場合の剰余を無視している（たとえば、符号１２０１、１３０２参照）。また、ジェネレータ数配列１２１０は、５つの鍵（ノート番号：Ｎ１〜Ｎ５）の楽音が発音中或いは発音待ちであるが、ノート番号Ｎ１〜Ｎ４については、それぞれ２５個のジェネレータが割り当てられているが、ノート番号Ｎ５については、２８個のジェネレータが割り当てられていることを意味している。
【００６９】
図１３は、第２の実施の形態において、図８のステップ８０８の処理をより詳細に示すフローチャートである。まず、図１３に示すように、ＣＰＵ１１はジェネレータ配列Ｇｅｎ［］中のノート番号から、ジェネレータ数配列を参照して、ノート番号に対応付けられたジェネレータ数を特定する（ステップ１３０１）。そして、ジェネレータ配列に格納されたノート番号の数（押鍵数）に基づいて、押鍵数割り当てテーブルを参照して、標準ジェネレータ数ＧｅｎＮｕｍＲｅｆを取得する（ステップ１３０２）。
【００７０】
ここで、ジェネレータ数と標準ジェネレータ数ＧｅｎＮｕｍＲｅｆとが同一である場合には（ステップ１３０３でＹｅｓ）、ＣＰＵ１１は、当該ジェネレータ配列Ｇｅｎ［］のノート番号に示す音高の楽音を生成して出力するように音源部２１に指示する（ステップ１３０４）。この場合には、音量レベルは通常どおりであり、音源部２１において波形データに通常のエンベロープが乗じられて楽音波形データが生成される。また、その後、ＣＰＵ１１は、当該ジェネレータ配列Ｇｅｎ［］の発音待ちフラグを「０」にリセットする（ステップ１３０６）。
【００７１】
その一方、ステップ１３０３でＮｏと判断された場合には、ＣＰＵ１１は、音源部２１に対して当該ジェネレータ配列Ｇｅｎ［］のノート番号に示す音高の楽音で、かつ、音量レベルを調整した楽音波形データの生成を指示する（ステップ１３０５）。音源部２１においては、本来の音量レベルに（ＧｅｎＮｕｍＲｅｆ／ジェネレータ数）を乗じた補正された音量レベルを用いて、波形データに、補正された音量レベルにしたがったエンベロープが乗じられる。
【００７２】
第２の実施の形態によれば、同一の音高の楽音波形データを生成するジェネレータ数に応じて、ジェネレータにより生成される楽音波形データの音量レベルが調整される。したがって、ジェネレータ数が押鍵数で割り切れず、発音しているジェネレータ数が異なる場合が生じても、音高ごとの音量レベルを均一化することができる。
【００７３】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【００７４】
たとえば、前記実施の形態において、たとえば、１２８個の全てのジェネレータについて、本発明にかかる割り当てを適用しているが、これに限定されるものではなく、そのうちの所定数（たとえば、９６個）のみについて、本発明にかかる割り当てを行なっても良い。
【００７５】
また、本実施の形態においては、ジェネレータ数を押鍵数で除したときの剰余は、割り当てから除外しているが、これに限定されず、剰余となったジェネレータを、たとえば、ノート番号の順に、鍵に割り当てても良い。
【符号の説明】
【００７６】
１０        電子楽器
１１        ＣＰＵ
１２        ＲＯＭ
１３        ＲＡＭ
１４        サウンドシステム
１５        表示部
１６        鍵盤
１８        操作部
２１        音源部
２２        オーディオ回路
２３        スピーカ
【図１】
2010256661.tif 000003
【図２】
2010256661.tif 000004
【図３】
2010256661.tif 000005
【図４】
2010256661.tif 000006
【図５】
2010256661.tif 000007
【図６】
2010256661.tif 000008
【図７】
2010256661.tif 000009
【図８】
2010256661.tif 000010
【図９】
2010256661.tif 000011
【図１０】
2010256661.tif 000012
【図１１】
2010256661.tif 000013
【図１２】
2010256661.tif 000014
【図１３】
2010256661.tif 000015