(57)【特許請求の範囲】
【請求項１】
所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対してタッチセンスデータ及び各発音パートに応じて優先度係数を設定する設定手段と、
前記所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは各発音チャンネルにおいて発音中の発音イベント及び前記新たな発音イベントに対する優先度を前記優先度係数に基づいて算出する演算手段と、
この演算手段によって算出された各発音チャンネルの優先度のうち最も低い優先度が前記新たな発音イベントの優先度より低いか否かを判定する判定手段と、
この判定手段によって前記最も低い優先度が前記新たな発音イベントの優先度より低いと判定された場合に前記最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てる割当手段と、
を備えた楽音発生装置。
【請求項２】
楽音発生装置のコンピュータによって実行される楽音発生処理のプログラムであって、
所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対してタッチセンスデータ及び各発音パートに応じて優先度係数を設定するステップと、
前記所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは各発音チャンネルにおいて発音中の発音イベントに対する優先度を前記優先度係数に基づいて算出するステップと、
この算出するステップによって算出された各発音チャンネルの優先度のうち最も低い優先度が前記新たな発音イベントの優先度より低いか否かを判定するステップと、
この判定するステップによって前記最も低い優先度が前記新たな発音イベントの優先度より低いと判定された場合に前記最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てるステップと、
を有することを特徴とする楽音発生処理のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音発生装置及び楽音発生処理のプログラムに関する。
【０００２】
【従来の技術】
近年の電子楽器等の楽音発生装置においては、複数の発音イベントを同時に発音して豊かな楽音を提供できる構成になっている。そのために、音源等の発音手段は所定数の発音チャンネル（「ボイス」ともいう）を備え、アサイナ等によって、各発音チャンネルに発音イベントを割り当てる処理を行っている。ＭＩＤＩデータの入力や演奏等により発音イベントが発生したときに、所定数の発音チャンネルがすべて発音中である場合には、その中の１つの発音イベントをファーストダンプして強制的に消音させて発音チャンネルを確保するアサイン処理（「トランケート処理」ともいう）、すなわち後着優先のアサイン処理を行うのが一般的である。
このアサイン処理では、何らかの条件で消音する発音チャンネルを選択する必要がある。従来においては、次の３つの選択方法が採られていた。第１の方法は、発音している楽音信号のエンベロープの段階が最も進んでいるものを選択する。第２の方法は、楽音信号のエンベロープのレベルが最も低いものを選択する。第３の方法は、受信したＭＩＤＩデータ又は演奏例えば押鍵が最も古いものを選択する。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来の技術においては、消音する発音チャンネルの選択方法が音楽的な要素を考慮していないために、強制的な消音の結果によっては発生する音に不自然な影響を与えるという課題があった。
例えば、同じ音源手段でメロディパートのような主旋律の発音パート及びリズムパートやコードパート等の伴奏の発音パートが同時に発音している場合に、従来の選択方法で主旋律の発音パートを消音することは音楽的に好ましくない。
あるいは、例えば、鍵盤のアフタータッチを付加することによって、演奏者が意図的に音色を変化させる演奏を行った場合に、その発音イベントを消音することは演奏者の意図を無視することになり音楽的に好ましくない。
本発明の課題は、発音中の発音イベントを強制的に消音させて発音チャンネルを確保するアサイン処理を行っても、音楽的に不自然な影響を与えないようにすることである。
【０００４】
【課題を解決するための手段】
請求項１に記載の楽音発生装置は、所定数の発音チャンネルによって複数の発音パートを分担する発音手段（実施形態においては、図１の音源ＬＳＩ８に対応する）の各発音チャンネルに割り当てられる発音イベントに対してタッチセンスデータ及び各発音パートに応じて優先度係数を設定する設定手段（実施形態においては、図１のＣＰＵ１に対応する）と、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは各発音チャンネルにおいて発音中の発音イベント及び新たな発音イベントに対する優先度を優先度係数に基づいて算出する演算手段（実施形態においては、図１のＣＰＵ１に対応する）と、この演算手段によって算出された各発音チャンネルの優先度のうち最も低い優先度が前記新たな発音イベントの優先度より低いか否かを判定する判定手段（実施形態においては、図１のＣＰＵ１に対応する）と、この判定手段によって最も低い優先度が新たな発音イベントの優先度より低いと判定された場合に最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに新たな発音イベントを割り当てる割当手段（実施形態においては、図１のＣＰＵ１に対応する）とを備えた構成になっている。
【０００５】
請求項２に記載の楽音発生処理のプログラムは、楽音発生装置のコンピュータ（実施形態においては、図１のＣＰＵ１に対応する）によって実行される楽音発生処理のプログラムであって、所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対してタッチセンスデータ及び各発音パートに応じて優先度係数を設定するステップと、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは各発音チャンネルにおいて発音中の発音イベントに対する優先度を優先度係数に基づいて算出するステップと、この算出するステップによって算出された各発音チャンネルの優先度のうち最も低い優先度が新たな発音イベントの優先度より低いか否かを判定するステップと、この判定するステップによって最も低い優先度が新たな発音イベントの優先度より低いと判定された場合に最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てるステップとを有する構成になっている。
【０００６】
請求項１又は請求項２に記載の発明によれば、所定数の発音チャンネルによって複数の発音パートを分担する場合に、各発音チャンネルに割り当てられる発音イベントに対してタッチセンスデータ及び各発音パートに応じて優先度を算出し、発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは、その新たな発音イベントの優先度が発音中の発音イベントのうち最も低い優先度より高い場合に、その発音チャンネルの発音イベントを強制的に消音して新たな発音イベントを割り当てる。
【００１０】
【発明の実施の形態】
以下、本発明による実施形態について、図を参照して説明する。
図１は、本発明による楽音発生装置の実施形態の構成を示すブロック図である。図において、ＣＰＵ１はシステムバス２を介してＲＯＭ３、ＲＡＭ４、鍵盤５、スイッチ部６、ＭＩＤＩ  Ｉ／Ｆ（インターフェース）７に接続されている。ＣＰＵ１はワークエリアとしてのＲＡＭ４上でＲＯＭ３に格納された楽音発生処理のプログラムを実行するコンピュータを構成している。
【００１１】
鍵盤５は、演奏によって発音イベントである楽音データを入力する。スイッチ部６は、音色を設定するスイッチ、鍵盤演奏や自動演奏等の演奏モードを設定するスイッチ、ピッチベンドやビブラート等の音楽的な効果を付加するスイッチ等で構成される。ＭＩＤＩ  Ｉ／Ｆ７は、外部のＭＩＤＩ機器とこの電子楽器との間で発音イベント等からなるＭＩＤＩデータの授受を行う。ＣＰＵ１はまた音源ＬＳＩ８に接続され、鍵盤５及びＭＩＤＩ  Ｉ／Ｆ７からの発音イベントの音高データや制御データを音源ＬＳＩ８に出力する。
【００１２】
音源ＬＳＩ８は、ＣＨ０〜ＣＨ７からなる８個の発音チャンネル（以下、単にチャンネルという）を備え、８個の発音イベントに対応する楽音を同時に発生することができる。また、音源ＬＳＩ８には、８個のチャンネルからの楽音信号を例えば２チャンネルのステレオ楽音信号に合成する合成器を備えている。そして、音源ＬＳＩ８から出力された合成楽音信号はＡ／Ｄ９によってアナログ信号に変換され、出力回路１０においてフィルタ処理や増幅処理がなされて、外部のスピーカから発音される。
【００１３】
図２はＲＡＭ４のエリアの一部を示し、音色パラメータ、機器トータルパラメータ、発音パートパラメータ、チャンネル優先度のエリアがある。また、図には示さないが、ＲＡＭ４には各種のレジスタが設けられており、ＣＰＵ１によって実行される楽音発生処理における各種のデータを一時的に記憶する。
音色パラメータのエリアには、図３に示すように、各音色ごとにファクタ（効果音付加要素）の種別に応じた変数名に対応して優先度の重み、すなわち優先度係数のデータが記憶される。同じファクタであっても音色ごとに優先度の重みは異なっている。
【００１４】
ファクタの種別には、音高を連続的に上下させるピッチベンド、音を震わせるビブラート、現在の音高から次の音高になめらかに移行させるポルタメント、鍵盤のアフタータッチの操作によりＭＩＤＩチャンネルごとの音色及び音量を変化するモノプレッシャ並びに発音チャンネル（ボイス）ごとの音色及び音量を変化するポリプレッシャ、音の強さであるベロシティ、ベロシティの感度を表すタッチセンスがある。
【００１５】
機器トータルパラメータのエリアには、図４に示すように、機器すなわち図１の楽音発生装置の機能におけるファクタの種別に応じた変数名に対応して優先度の重みのデータが記憶される。
発音パートパラメータのエリアには、図５に示すように、ＭＩＤＩチャンネルごとに指定された各発音パートに対してファクタの種別に応じた変数名に対応して優先度の重みのデータが記憶される。なお、各パートごとに音色が指定される。
【００１６】
チャンネル優先度のエリアには、図６に示すように、チャンネル番号にアサインされている音色番号に対応して優先度のデータが記憶される。図に示すように、この場合はパート０及びパート１の２つのパートが８チャンネルに各４チャンネルずつアサインされている。優先度は後述する演算処理によって算出される。
【００１７】
次に図１の楽音発生装置における楽音発生処理について説明する。
図１は、ＣＰＵ１の楽音発生処理の動作を示すメインフローチャートである。まず、所定のイニシャライズ(ステップＡ１)の後、スイッチ処理(ステップＡ２)、鍵盤処理(ステップＡ３)、ＭＩＤＩ処理(ステップＡ４)、アサイン処理(ステップＡ５)、発音処理(ステップＡ６)、その他の処理(ステップＡ７)を繰り返し実行する。
なお、ステップＡ５のアサイン処理とステップＡ６の発音処理は、ＣＰＵ１及び音源ＬＳＩ８による連続した協働作用であるが、説明の便宜上、２つの処理として区別している。
【００１８】
図８は、図７におけるステップＡ２のスイッチ処理のフローである。スイッチ部のモードスイッチを検索して(ステップＢ１)、現在のモードが自動演奏モードであるか否かを判別する（ステップＢ２）。自動演奏モードである場合には、ＭＩＤＩ  Ｉ／Ｆ７を介して入力されるＭＩＤＩデータの入力設定を行う（ステップＢ３）。自動演奏モードでなく、マニュアル演奏モードである場合には、鍵盤５の操作によって入力される演奏データの入力設定を行う（ステップＢ４）。ステップＢ３又はＢ４の設定の後は、他のスイッチ検索処理を行い（ステップＢ５）、図７のメインフローに戻る。
【００１９】
図９は、メインフローにおけるステップＡ４のＭＩＤＩ処理のフローである。ＭＩＤＩイベントを受信したか否かを判別し（ステップＣ１）、受信しない場合にはこのフローを終了するが、受信したときはパート番号にＭＩＤＩチャンネルが合致するか否かを判別する（ステップＣ２）。合致しない場合にはこのフローを終了するが、合致したときはＭＩＤＩデータの合致したパート番号をレジスタｐにセットする（ステップＣ３）。
【００２０】
次に、受信したＭＩＤＩイベント（発音イベント）に効果音を付加する制御データが含まれているか否かを判別して、含まれている場合には、受信した制御データをパート番号［ｐ］に対応するＲＡＭのエリアに格納する。
すなわち、ピッチベンドを受信したか否かを判別し（ステップＣ４）、受信したときはＰ ＰＢ［ｐ］に受信値を格納する（ステップＣ５）。ビブラートを受信したか否かを判別し（ステップＣ６）、受信したときはＰ ＶＢ［ｐ］に受信値を格納する（ステップＣ７）。
モノプレッシャを受信したか否かを判別し（ステップＣ８）、受信したときはＰ ＭＰ［ｐ］に受信値を格納する（ステップＣ９）。ポルタメントを受信したか否かを判別し（ステップＣ１０）、受信したときはＰ ＰＭ［ｐ］に受信値を格納する（ステップＣ１１）。タッチセンスの変更を受信したか否かを判別し（ステップＣ１２）、受信したときはＰ ＴＳ［ｐ］に受信値を格納する（ステップＣ１３）。そして、格納した制御データの値に基づいて優先度の再計算を実行する（ステップＣ１４）。
【００２１】
図１０は、この優先度再計算のフローである。ピッチベンドの優先度の値を下記の数式１により計算し、レジスタＰＢに格納する（ステップＤ１）。ビブラートの優先度の値を数式２により計算し、レジスタＶＢに格納する（ステップＤ２）。ポルタメントの優先度の値を数式３により計算し、レジスタＰＭに格納する（ステップＤ３）。モノプレッシャの優先度の値を数式４により計算し、レジスタＭＰに格納する（ステップＤ４）。受信したモノプレッシャの値に基づいて、ポリプレッシャの優先度の値を数式５により計算し、レジスタＰＰに格納する（ステップＤ５）。ベロシティの優先度の値を数式６により計算し、レジスタＶＬに格納する（ステップＤ６）。タッチセンスの優先度の値を数式７により計算し、レジスタＴＳに格納する（ステップＤ７）。
【００２２】
【数１】
0004258991.tif 000002
【数２】
0004258991.tif 000003
【数３】
0004258991.tif 000004
【数４】
0004258991.tif 000005
【数５】
0004258991.tif 000006
【数６】
0004258991.tif 000007
【数７】
0004258991.tif 000008
【数８】
0004258991.tif 000009
【００２３】
そして、各レジスタの優先度の値に基づいて、下記の数式８により総合的なチャンネル優先度の平均値を計算し、レジスタＳＳに格納する（ステップＤ８）。ＳＳに格納した優先度の値は、図６に示したＲＡＭのエリアにおいて、各チャンネル番号（ボイス番号）に対応する音色番号に対して、ベロシティ及びポリプレッシャの値とともに、優先度の値が記憶される。この場合は、音色数は音色０及び音色１の２種類である。
【数８】
0004258991.tif 000010
【００２４】
図１１はメインフローにおけるステップＡ５のアサイン処理のフローである。まず、アサイン処理変数の初期化を行う。すなわち、現在見つかっている最も低い優先度をセットするレジスタＰＬに２５５（最大値）をセットし、現在調査中のチャンネル番号をセットするレジスタＣＣに０（チャンネル番号０）をセットし、現在までに見つかっている最も低い優先度のチャンネル番号をセットするレジスタＣＬに０をセットする(ステップＥ１)。
【００２５】
次に、現在調査中のチャンネルの優先度をセットするレジスタＰに現在のチャンネルの優先度をセットする(ステップＥ２)。最初は、現在調査中のチャンネル番号ＣＣの値は０である。次に、Ｐの値が０であるか否かを判別する(ステップＥ３)。すなわち、現在調査中のチャンネルの優先度が０で、そのチャンネルが消音状態であるか否かを判別する。この場合には、ＰＬにＰの値すなわち０をセットし、ＣＬにＣＣの値すなわち現在調査中のチャンネル番号をセットする(ステップＥ４)。
【００２６】
ステップＥ３においてＰの値が０でない場合には、Ｐの値がＰＬの値より小さいか否かを判別する(ステップＥ５)。すなわち、現在調査中のチャンネルの優先度が現在見つかっている最も低い優先度よりも低いか否かを判別する。Ｐの値がＰＬの値より小さい場合には、ＰＬにＰの値をセットし、ＣＬにＣＣのチャンネル番号をセットする(ステップＥ６)。すなわち、現在調査中のチャンネルを現在見つかっている最も低い優先度のチャンネル番号として入れ替える。
【００２７】
この入れ替えの後、又はステップＥ５においてＰの値がＰＬの値以上である場合には、ＣＣの値をインクリメントして(ステップＥ７)、次のチャンネル番号を指定する。そして、インクリメントしたＣＣの値が８より小さいか否か、すなわち最大チャンネル番号７以下か否かを判別する(ステップＥ８)。ＣＣの値が８より小さい場合には、次のチャンネル番号が存在するので、ステップＥ２に移行して上記処理を繰り返す。
【００２８】
例えば、図６の例では、ステップＥ２においてＰにチャンネル番号０の音色０、優先度である５０をＰにセットした後、ステップＥ３ではＰの値が０でないのでステップＥ５に進む。ステップＥ５において、Ｐの値５０はＰＬの値２５５よりも小さいのでステップＥ６に進んで、ＰＬに優先度５０をセットし、ＣＬにチャンネル番号０をセットする。次に、ステップＥ７において次のチャンネル番号１がセットされ、ステップＥ２に移行する。
【００２９】
次に、ステップＥ２において、Ｐにチャンネル番号１の音色１、優先度４２がセットされる。そして、ステップＥ３、ステップＥ５に進む。ステップＥ５において、Ｐの値４２はＰＬの値５０より小さいので、見つかっている最も低い優先度のチャンネル番号が入れ替わり、ステップＥ６に進んでＰＬに優先度４２をセットし、ＣＬにチャンネル番号１をセットする。
【００３０】
このように、ステップＥ３においてＰの値が０でない場合には、ステップＥ８においてＣＣの値が８になるまで、すなわちすべてのチャンネルの優先度を検索するまで、ステップＥ２からステップＥ８までのループを繰り返し実行して、すべてのチャンネルの中で最も低い優先度（図６の例では８）のチャンネル（ＣＬのチャンネル番号）を捜す。そして、ＣＬの値を割り当てチャンネル番号として保持する(ステップＥ９)。図６の例ではチャンネル番号５を保持する。ステップＥ３においてＰの値が０で現在調査中のチャンネルが消音状態である場合には、発音イベントを無条件にそのチャンネルに割り当てられるので、ステップＥ４においてそのチャンネル番号をＣＬにセットした後は、ステップＥ９に進んでＣＬの値を割り当てチャンネル番号として保持する。
【００３１】
ステップＥ９において、最も低い優先度の発音イベントのチャンネル番号を保持した後はステップＥ１０に進み、今回発生した発音イベントの優先度を計算してレジスタＳＣに格納する。次に、ＰＬの優先度の値がＳＣの優先度の値よりも小さいか否かを判別する（ステップＥ１１）。ＰＬの優先度がＳＣの優先度よりも小さい場合には、現在指定しているチャンネルに今回発音する発音イベントを割り当てることができる。この場合において、ＰＬが０であるか否か、すなわち優先度が０で消音状態であるか否かを判別する（ステップＥ１２）。
【００３２】
ＰＬが０でない場合には、割り当てチャンネル番号における発音イベントのレベルが０（消音）になっていないので、強制ファーストダンプ処理を行ってその発音イベントを強制的に消音する(ステップＥ１３)。一方、ＰＬが０である場合には、すでにそのチャンネルは消音状態になっているので、強制ファースト処理を行う必要はない。ステップＥ１３の強制ファーストダンプ処理の後、又はステップＥ１２においてＰＬが０（消音状態）である場合には、発音フラグＨＦに１をセットする（ステップＥ１４）。ステップＥ１１において、ＰＬの優先度がＳＣの優先度以上である場合には、今回の発音イベントは発音されない。この場合には、ＨＦに０をセットする（ステップＥ１５）。ＨＦに１又は０をセットした後は、図７のメインフローに戻る。
【００３３】
メインフローにおけるステップＡ６の発音処理においては、入力されたＭＩＤＩデータの発音イベントに対して、ＨＦの値が１である場合にはその発音イベントに対する発音処理を実行し、ＨＦの値が０である場合にはその発音イベントは発音されず無視される。
【００３４】
なお、この実施形態において、チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは、その新たな発音イベントの優先度が発音中の発音イベントのうち最も低い優先度より高い場合に、その発音チャンネルの発音イベントを強制的に消音して新たな発音イベントを割り当てるが、その優先度の演算は数式８に示すように、ピッチベンド、ビブラート、ポルタメント、モノプレッシャ、ポリプレッシャ、ベロシティ、及びタッチセンスの７個のファクタをすべて加味して優先度を算出している。
【００３５】
しかしながら、優先度の算出のためには、主にソロ演奏等に使用している発音パートに対するファクタであるピッチベンド、ビブラート、ポルタメントに基づいて優先度を算出し、ソロ演奏等の発音パートの優先度が高くなるような構成にしてもよい。
また、音色に変化に影響を与えるモノプレッシャ、ポリプレッシャ、ベロシティ、及びタッチセンスのファクタに基づいて優先度を算出し、演奏者が意識的に音楽的効果を付加した発音チャンネル（ボイス）の優先度が高くなるような構成でにしてもよい。
すなわち、上記実施形態の構成は、発音パートに重点をおいて優先度を決定する第１の発明と、音色変化に重点をおいて優先度を決定する第２の発明とを含んでいる。
【００３６】
以上のように、上記実施形態の楽音発生装置は、所定数の発音チャンネルによって複数の発音パートを分担する場合に、各発音チャンネルに割り当てられる発音イベントに対して音楽的効果を付加する制御データの種別及び各発音パートに応じて優先度を算出し、発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは、その新たな発音イベントの優先度が発音中の発音イベントのうち最も低い優先度より高い場合に、その発音チャンネルの発音イベントを強制的に消音して新たな発音イベントを割り当てる。
【００３７】
また、上記実施形態のプログラムは、楽音発生装置のコンピュータによって実行させる楽音発生処理のプログラムであって、
所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音楽的効果を付加する制御データの種別及び各発音パートに応じて優先度係数を設定するステップと、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは各発音チャンネルにおいて発音中の発音イベントに対する優先度を優先度係数に基づいて算出するステップと、この算出するステップによって算出された各発音チャンネルの優先度のうち最も低い優先度が新たな発音イベントの優先度より低いか否かを判定するステップと、この判定するステップによって最も低い優先度が新たな発音イベントの優先度より低いと判定された場合に最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てるステップとを有する構成になっている。
すなわち、このプログラムは、楽音発生装置のコンピュータを楽音発生処理における各処理を実行する複数の手段として機能させる。
【００３８】
したがって、このような構成の楽音発生装置又は楽音発生処理のプログラムによれば、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、発音中の発音イベントを強制的に消音させて発音チャンネルを確保するアサイン処理を行っても音楽的に不自然な影響を与えることがない。
【００３９】
なお、上記実施形態においては、各発音パートに応じて優先度係数を設定するが、その場合において、メロディパート等のように主旋律の発音パートに対して高い優先度を設定する。
また、上記実施形態においては、音楽的効果を付加する制御データの種別、すなわち、ピッチベンド、ビブラート、ポルタメントに応じて優先度係数を設定するが、その場合において、音楽的効果の付加量が大きいほど高い優先度を設定する。
【００４０】
また、上記実施形態の楽音発生装置は、所定数の発音チャンネルを有する発音手段の各発音チャンネルに発音イベントを割り当てる場合に、各発音チャンネルに割り当てられる発音イベントに対して音色変化を与える制御データの種別に応じて優先度を算出し、発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは、その新たな発音イベントの優先度が発音中の発音イベントのうち最も低い優先度より高い場合に、その発音チャンネルの発音イベントを強制的に消音して新たな発音イベントを割り当てる。
【００４１】
また、上記実施形態のプログラムは、楽音発生装置のコンピュータによって実行させる楽音発生処理のプログラムであって、
所定数の発音チャンネルを有する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音色変化を与える制御データの種別に応じて優先度係数を設定するステップと、所定数の発音チャンネルのすべてが発音状態である場合に新たに発音すべき発音イベントが発生したときは各発音チャンネルにおいて発音中の発音イベントに対する優先度を優先度係数に基づいて算出するステップと、この算出するステップによって算出された各発音チャンネルの優先度のうち最も低い優先度が新たな発音イベントの優先度より低いか否かを判定するステップと、この判定するステップによって最も低い優先度が新たな発音イベントの優先度より低いと判定された場合に最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに新たな発音イベントを割り当てるステップとを有する構成になっている。
すなわち、このプログラムも、楽音発生装置のコンピュータを楽音発生処理における各処理を実行する複数の手段として機能させる。
【００４２】
したがって、このような構成の楽音発生装置又は楽音発生処理のプログラムによれば、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、発音中の発音イベントを強制的に消音させて発音チャンネルを確保するアサイン処理を行っても音楽的に不自然な影響を与えることがない。
【００４３】
なお、上記実施形態においては、音色変化を与える制御データの種別に応じて優先度係数を設定するが、この場合において、制御データによって与えられる音色変化量が大きいほど高い優先度を設定する。
【００４４】
さらに、上記実施形態によれば、発音パートに重点をおいて優先度を決定する第１の発明と音色変化に重点をおいて優先度を決定する第２の発明とを合成して、すなわち、数式８に示す演算のように、発音パート及び音色変化に重点をおいて優先度を決定する第３の発明を構成することも明らかである。
この場合には、所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音色変化及び各発音パートに応じて優先度係数を設定する。
【００４５】
なお、上記実施形態においては、ＭＩＤＩデータの入力に対して優先度に基づくアサイン処理を行う場合について説明したが、図８のフローにおいて鍵盤入力が設定された場合にも、鍵盤から入力される演奏データに含まれる制御データ、各発音チャンネルに対して指定された発音パートに応じて、鍵盤入力に対して優先度に基づくアサイン処理を行う構成にしてもよい。
【００４６】
【発明の効果】
本発明によれば、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、発音中の発音イベントを強制的に消音させて発音チャンネルを確保するアサイン処理を行っても音楽的に不自然な影響を与えることがない。
【図面の簡単な説明】
【図１】本発明による楽音発生装置の実施形態の構成を示すブロック図。
【図２】図１におけるＲＡＭのエリアのデータ構成を示す図。
【図３】図２における音色パラメータのデータ構成例を示す図。
【図４】図２における機器トータルパラメータのデータ構成例を示す図。
【図５】図２における発音パートパラメータのデータ構成例を示す図。
【図６】図２におけるチャンネル優先度のデータ構成例を示す図。
【図７】図１のＣＰＵの動作を示すメインフローチャート。
【図８】図４におけるスイッチ処理のフローチャート。
【図９】図４におけるＭＩＤＩ処理のフローチャート。
【図１０】図９における優先度再計算のフローチャート。
【図１１】図４におけるアサイン処理のフローチャート。
【符号の説明】
１  ＣＰＵ
３  ＲＯＭ
４  ＲＡＭ
５  鍵盤
６  スイッチ部
７  ＭＩＤＩインターフェース
８  音源ＬＳＩ
【図１】
0004258991.tif 000011
【図２】
0004258991.tif 000012
【図３】
0004258991.tif 000013
【図４】
0004258991.tif 000014
【図５】
0004258991.tif 000015
【図６】
0004258991.tif 000016
【図７】
0004258991.tif 000017
【図８】
0004258991.tif 000018
【図９】
0004258991.tif 000019
【図１０】
0004258991.tif 000020
【図１１】
0004258991.tif 000021