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