JP4329276B2 - Musical sound generator and musical sound generation processing program - Google Patents

Musical sound generator and musical sound generation processing program Download PDF

Info

Publication number
JP4329276B2
JP4329276B2 JP2001117757A JP2001117757A JP4329276B2 JP 4329276 B2 JP4329276 B2 JP 4329276B2 JP 2001117757 A JP2001117757 A JP 2001117757A JP 2001117757 A JP2001117757 A JP 2001117757A JP 4329276 B2 JP4329276 B2 JP 4329276B2
Authority
JP
Japan
Prior art keywords
sounding
priority
event
stored
new
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001117757A
Other languages
Japanese (ja)
Other versions
JP2002311955A (en
Inventor
博毅 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2001117757A priority Critical patent/JP4329276B2/en
Publication of JP2002311955A publication Critical patent/JP2002311955A/en
Application granted granted Critical
Publication of JP4329276B2 publication Critical patent/JP4329276B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、楽音発生装置及び楽音発生処理のプログラムに関する。
【0002】
【従来の技術】
近年の電子楽器等の楽音発生装置においては、複数の発音イベントを同時に発音して豊かな楽音を提供できる構成になっている。そのために、音源等の発音手段は所定数の発音チャンネル(「ボイス」ともいう)を備え、アサイナ等によって、各発音チャンネルに発音イベントを割り当てる処理を行っている。MIDIデータの入力や演奏等により発音イベントが発生したときに、所定数の発音チャンネルがすべて発音中である場合には、その中の1つの発音イベントをファーストダンプして強制的に消音させて発音チャンネルを確保するアサイン処理(「トランケート処理」ともいう)、すなわち後着優先のアサイン処理を行うのが一般的である。
このアサイン処理では、何らかの条件で消音する発音チャンネルを選択する必要がある。従来においては、次の3つの選択方法が採られていた。第1の方法は、発音している楽音信号のエンベロープのステップが最も進んでいるものを選択する。第2の方法は、楽音信号のエンベロープのレベルが最も低いものを選択する。第3の方法は、受信したMIDIデータのうちで最も古いもの又は演奏例えば押鍵が最も古いものを選択する。
【0003】
【発明が解決しようとする課題】
しかしながら、上記従来の技術においては、消音する発音チャンネルの選択方法が音楽的な要素を考慮していないために、例えば、同じ音源手段でメロディパートのような主旋律の発音パート及びリズムパートやコードパート等の伴奏の発音パートが同時に発音しているときに、主旋律の発音パートを従来の選択方法でを強制的に消音すると、発生する音に不自然な影響を与えるという課題があった。
本発明の課題は、発音中の発音イベントを強制的に消音させて発音チャンネルを確保するアサイン処理を行っても、音楽的に不自然な影響を与えないようにすることである。
【0004】
【課題を解決するための手段】
請求項1に記載の楽音発生装置は、所定数の発音チャンネルを有する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音高変化を与える制御イベントの種別夫々に応じた第1の優先度係数、及び前記発音イベントのエンベロープの各ステップに対応した第2の優先度係数を記憶する記憶手段と、前記制御イベントが受信された場合、当該受信された制御イベントの受信値を格納する第1の格納手段と、前記エンベロープのステップの変更が検出された場合、当該変更されたステップを格納する第2の格納手段と、新たな発音イベントが発生した場合、前記記憶手段に記憶された第1の優先度係数、前記第1の格納手段に格納された受信値及びエンベロープのアタックステップに対応する第2の優先度係数に基づいて、前記新たな発音イベントに対する優先度を算出する第1の算出手段と、前記第1の格納手段に前記受信値が格納された場合、あるいは前記第2の格納手段に前記変更されたステップが格納された場合、前記記憶手段に記憶された第1の優先度係数、前記第1の格納手段に格納された受信値及び前記第2の格納手段に格納されたエンベロープのステップに対応する第2の優先度係数に基づいて、発音中の発音イベントに対する優先度を算出する第2の算出手段と、前記所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、前記第2の算出手段によって算出された各発音チャンネルの優先度のうち最も低い優先度が前記第1の算出手段によって算出された新たな発音イベントの優先度より低いか否かを判定する判定手段と、この判定手段によって前記最も低い優先度が前記新たな発音イベントの優先度より低いと判定された場合に前記最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てる割当手段と、を備えた構成になっている。
【0005】
請求項2に記載の楽音発生処理のプログラムは、楽音発生装置のコンピュータ(実施形態においては、図1のCPU1に対応する)によって実行される楽音発生処理のプログラムであって、所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音高変化を与える制御イベントの種別夫々に応じた第1の優先度係数、及び前記発音イベントのエンベロープの各ステップに対応した第2の優先度係数を記憶する記憶手段を有する楽音発生装置のコンピュータに、前記制御イベントが受信された場合、当該受信された制御イベントの受信値を格納する第1の格納ステップと、前記エンベロープのステップの変更が検出された場合、当該変更されたステップを格納する第2の格納ステップと、新たな発音イベントが発生した場合、前記記憶手段に記憶された第1の優先度係数、前記第1の格納ステップにて格納された受信値及びエンベロープのアタックステップに対応する第2の優先度係数に基づいて、前記新たな発音イベントに対する優先度を算出する第1の算出ステップと、前記第1の格納ステップにて前記受信値が格納された場合、あるいは前記第2の格納ステップにて前記変更されたステップが格納された場合、前記記憶手段に記憶された第1の優先度係数、前記格納された受信値及び前記第2の格納ステップにより格納されたエンベロープのステップに対応する第2の優先度係数に基づいて、発音中の発音イベントに対する優先度を算出する第2の算出ステップと、前記所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、前記第2の算出ステップによって算出された各発音チャンネルの優先度のうち最も低い優先度が前記第1の算出ステップによって算出された新たな発音イベントの優先度より低いか否かを判定する判定ステップと、この判定ステップによって前記最も低い優先度が前記新たな発音イベントの優先度より低いと判定された場合に前記最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てる割当ステップと、を実行させる。
【0007】
【発明の実施の形態】
以下、本発明による実施形態について、図を参照して説明する。
図1は、本発明による楽音発生装置の実施形態の構成を示すブロック図である。図において、CPU1はシステムバス2を介してROM3、RAM4、鍵盤5、スイッチ部6、MIDI I/F(インターフェース)7に接続されている。CPU1はワークエリアとしてのRAM4上でROM3に格納された楽音発生処理のプログラムを実行するコンピュータを構成している。
【0008】
鍵盤5は、演奏によって発音イベントである楽音データを入力する。スイッチ部6は、鍵盤演奏や自動演奏等の演奏モードを設定するスイッチ、複数の発音パートの各々に対する音色を設定するスイッチ、発音パートごとの優先度であるパートオフセット値の設定及び変更を入力するスイッチ、エンベロープステップの重みの設定及び変更を入力するスイッチ等で構成されている。MIDI I/F7は、外部のMIDI機器とこの楽音発生装置との間で発音イベントや制御データのイベント等からなるMIDIデータの授受を行う。CPU1はまた音源LSI8に接続され、鍵盤5及びMIDI I/F7からの発音イベントの音高データや制御データ等を音源LSI8に出力する。
【0009】
音源LSI8は、CH0〜CH7からなる8個の発音チャンネルを備え、この8個の発音チャンネルによって複数の発音パートを分担し、各発音チャンネルにアサインされた発音イベントの楽音信号を同時に発生することができる。また、音源LSI8には、8個の発音チャンネルの楽音信号を例えば2チャンネルのステレオ楽音信号に合成する合成器を備えている。そして、音源LSI8から出力された合成楽音信号はA/D9によってディジタル信号からアナログ信号に変換され、出力回路10においてフィルタ処理や増幅処理がなされて、外部のスピーカから発音される。
【0010】
図2はRAM4のエリアの一部を示し、エンベロープパラメータ、音色パラメータ、発音パートパラメータ、発音チャンネルパラメータのエリアがある。また、図には示さないが、RAM4には各種のレジスタ(データ用レジスタ、フラグ用レジスタ、ポインタ用レジスタ等)が設けられており、CPU1によって実行される楽音発生処理に伴う各種の情報を一時的に記憶する。
【0011】
エンベロープパラメータには、図3に示すように、ストップ(消音)、アタック、ディケイ、サスティン、リリースすなわちADSR方式におけるエンベロープの各ステップごとに優先度の重み(優先度係数)の設定値が記憶される。ADSR方式以外のエンベロープの場合も各ステップごとに優先度の重みの設定値が記憶される。
音色パラメータのエリアには、図4に示すように、各音色(n)ごとに(この実施形態では音色0及び音色1ごとに)演奏ファクタであるピッチベンド(PB)、ビブラート(VB)、エンベロープステップ(ES)の変数名(T PB[n]、T VB[n]、T ES[n])に対応して優先度の重みの設定値が記憶される。同じファクタであっても音色ごとに優先度の重みは異なる。
【0012】
発音パートパラメータのエリアには、図5に示すように、各発音パート(p)ごとに設定される音色(n)に応じて、図4に設定されたピッチベンド(T PB[n])、ビブラート(T VB[n])、エンベロープステップ(T ES[n])の優先度の重みが、P PB[p]、P VB[p]、P ES[p]に記憶され、設定又は変更されたパートオフセットの値がP PO[p]に記憶される。
発音チャンネルパラメータのエリアには、図6に示すように、各発音チャンネルすなわち各ボイス(v)ごとに分担する音色番号、エンベロープステップ(V ES[v])、及び後述する演算処理によって算出される優先度(V PR[v])が記憶される。
【0013】
次に図1の楽音発生装置における楽音発生処理の動作について説明する。
図7は、CPU1の楽音発生処理の動作を示すメインフローチャートである。まず、所定のイニシャライズ(ステップA1)の後、スイッチ処理(ステップA2)、鍵盤処理(ステップA3)、MIDI処理(ステップA4)、アサイン処理(ステップA5)、発音処理(ステップA6)、その他の処理(ステップA7)を繰り返し実行する。
なお、ステップA5のアサイン処理とステップA6の発音処理は、CPU1及び音源LSI8による連続した協働作用であるが、説明の便宜上、2つの処理として区別している。
【0014】
図8は、図7におけるステップA2のスイッチ処理のフローである。スイッチ部のモードスイッチを検索して(ステップB1)、現在のモードが自動演奏モードであるか否かを判別する(ステップB2)。自動演奏モードである場合には、MIDI I/F7を介して入力されるMIDIデータの入力設定を行う(ステップB3)。自動演奏モードでなく、マニュアル演奏モードである場合には、鍵盤5の操作によって入力される演奏データの入力設定を行う(ステップB4)。ステップB3又はB4の設定の後は、他のスイッチ検索処理を行い(ステップB5)、図7のメインフローに戻る。以下に述べるように、この実施形態においては自動演奏モードにおける楽音発生処理を説明する。
【0015】
図9は、メインフローにおけるステップA4のMIDI処理のフローである。MIDIイベントを受信したか否かを判別し(ステップC1)、受信したときはそのMIDIイベントが新たな発音イベントであるか否かを判別する(ステップC2)。発音イベントである場合には、アサインフラグASFに1をセットし(ステップC3)、音高データ等をレジスタに格納する発音イベント処理を行い(ステップC4)、さらに優先度計算処理を行う(ステップC5)。そして、メインフローに戻る。
【0016】
ステップC2において、MIDIイベントが発音イベントでなく、コントロールチェンジ等の制御データである場合には、そのMIDIイベントのチャンネルがパート番号に合致するか否かを判別する(ステップC6)。合致したときはMIDIデータの合致したパート番号をレジスタpにセットする(ステップC7)。次に、受信したMIDIイベントに音色変化を与える制御データが含まれているか否かを判別して、含まれている場合には、受信した制御データをパート番号[p]に対応するRAMのエリアに格納する。
【0017】
すなわち、ピッチベンドを受信したか否かを判別し(ステップC8)、受信したときは、図5に示したRAMのエリアにおけるパート番号(p)のP PB[p]に受信値を格納する(ステップC9)。また、ビブラートを受信したか否かを判別し(ステップC10)、受信したときは、図5に示したRAMのエリアにおけるパート番号(p)のP VB[p]に受信値を格納する(ステップC11)。
【0018】
次に、エンベロープステップの重みが変更されたか否かを判別し(ステップC12)、変更されたときは図5に示したRAMのエリアにおけるパート番号(p)のP ES[p]に変更値を格納する(ステップC13)。また、パートオフセットが変更されたか否かを判別し(ステップC14)、変更されたときは図5に示したRAMのエリアにおけるパート番号(p)のP PO[p]に変更値を格納する(ステップC15)。
【0019】
なお、ステップC1においてMIDIデータを受信していない場合、又はステップC6においてMIDIチャンネルがパート番号に合致しない場合にも、パート番号(p)において設定されているエンベロープステップの重み及びパートオフセットの値がこの楽音発生装置のスイッチ操作によって変更されたか否かをステップC12及びC14において判別して、変更された場合にはステップC13及びC15においてその変更値を格納する。
次に、格納した制御データの値に基づいて優先度の計算(再計算)を実行する(ステップC16)。そして、メインフローに戻る。
【0020】
図10は、ステップC5及びステップC16における優先度計算のフローであり、図11は優先度計算に用いる重み付け変換テーブルを表す特性曲線である。図10のフローにおいて、ステップC5における優先度計算処理は新たな発音イベントすなわちノートオンイベントに対する優先度計算であり、ステップC16における優先度計算処理は発音チャンネルにおいてすでに発音中の発音イベントの優先度再計算であるが、基本的に同じ動作であるので同じフローで表す。
【0021】
まず、P PB[p]のピッチベンドのMIDI値を図11の変換テーブルで変換してレジスタX PBにストアした後、下記の演算式(1)により計算し、レジスタPBに格納する(ステップD1)。
PB={(X PB)×(T PB[n])}/10 (1)
ここで、分母の値10は正規化すなわちビット調整のためのもの(他の演算式においても同様)である。
【0022】
次に、P VB[p]のピッチベンドのMIDI値を図11の変換テーブルで変換してレジスタX VBにストアした後、ビブラートの優先度の値を下記の演算式(2)により計算し、レジスタVBに格納する(ステップD2)。
VB={(X VB)×(T VB[n])}/10 (2)
【0023】
次に、MIDIイベントが発音イベントである場合には、P ES[p]のエンベロープステップの値を図3におけるアタックの重みで変換してレジスタX ESにストアした後、エンベロープステップの優先度を下記の演算式(3)により計算し、レジスタESに格納する(ステップD3)。
ES={(X ES)×(T ES[n])}/10 (3)
MIDIデータが発音イベントでない場合には、後述するように、エンベロープステップの推移に応じて優先度を演算式(3)により再計算する。
【0024】
次に、P PO[p]のパートオフセットの値を図11の変換テーブルで変換してレジスタPOに格納する(ステップD4)。
そして、各レジスタの優先度の値に基づいて、下記の演算式(4)により総合的なチャンネル優先度の平均値を計算し、レジスタSSに格納する(ステップD8)。
SS=(PB+VB+PO+ES)/4 (4)
【0025】
各発音チャンネルにおいてすでに発音中の発音イベントに対して、SSに格納した優先度の値は、図6に示したRAMのエリアにおいて、各チャンネル番号すなわちボイス番号(v)に対応する優先度VT PR[v]に転送されて記憶される。一方、新たな発音イベントに対して、SSに格納した優先度の値は、次に述べるアサイン処理において利用される。
【0026】
図12はメインフローにおけるステップA5のアサイン処理のフローである。まず、アサインフラグASFが1であるか否かを判別する(ステップE1)。ASFが0の場合、すなわち新たな発音イベントを受信していない場合には、アサインの必要がないのでこのフローを終了する。
ASFが1で新たな発音イベントを受信した場合には、アサイン処理変数の初期化を行う。すなわち、現在見つかっている最も低い優先度をセットするレジスタPLに255(最大値)をセットし、現在調査中のチャンネル番号をセットするレジスタCCに0(チャンネル番号0)をセットし、現在までに見つかっている最も低い優先度のチャンネル番号をセットするレジスタCLに0をセットする(ステップE2)。
【0027】
次に、現在調査中の発音チャンネルの優先度をセットするレジスタPに現在の発音チャンネルの優先度をセットする(ステップE3)。最初は、現在調査中のチャンネル番号CCの値は0である。次に、Pの値が0であるか否かを判別する(ステップE4)。すなわち、現在調査中の発音チャンネルの優先度が0で、その発音チャンネルが消音状態であるか否かを判別する。この場合には、PLにPの値すなわち0をセットし、CLにCCの値すなわち現在調査中のチャンネル番号をセットする(ステップE5)。
【0028】
ステップE4においてPの値が0でない場合には、Pの値がPLの値より小さいか否かを判別する(ステップE6)。すなわち、現在調査中の発音チャンネルの優先度が現在見つかっている最も低い優先度よりも低いか否かを判別する。Pの値がPLの値より小さい場合には、PLにPの値をセットし、CLにCCのチャンネル番号をセットする(ステップE7)。すなわち、現在調査中の発音チャンネルを現在見つかっている最も低い優先度のチャンネル番号として入れ替える。
【0029】
この入れ替えの後、又はステップE6においてPの値がPLの値以上である場合には、CCの値をインクリメントして(ステップE8)、次のチャンネル番号を指定する。そして、インクリメントしたCCの値が8より小さいか否か、すなわち最大チャンネル番号である7以下か否かを判別する(ステップE9)。CCの値が8より小さい場合には、次のチャンネル番号が存在するので、ステップE3に移行して上記処理を繰り返す。
【0030】
例えば、図6の例では、ステップE3において、チャンネル番号0の音色0の優先度である50をPにセットした後、ステップE4ではPの値が0でないのでステップE6に進む。ステップE6において、Pの値50はPLの値255よりも小さいのでステップE7に進んで、PLに優先度50をセットし、CLにチャンネル番号0をセットする。次に、ステップE8において次のチャンネル番号1がセットされ、ステップE3に移行する。
【0031】
ステップE3において、Pにチャンネル番号1の音色1の優先度42がセットされる。そして、ステップE3、ステップE5に進む。ステップE5において、Pの値42はPLの値50より小さいので、見つかっている最も低い優先度のチャンネル番号が入れ替わり、ステップE6に進んでPLに優先度42をセットし、CLにチャンネル番号1をセットする。
【0032】
このように、ステップE4においてPの値が0でない場合には、ステップE9においてCCの値が8になるまで、すなわちすべての発音チャンネルの優先度を検索するまで、ステップE3からステップE9までのループを繰り返し実行して、すべての発音チャンネルの中で最も低い優先度(図6の例では優先度8)の発音チャンネル(CLのチャンネル番号)を捜す。そして、CLの値を割り当てチャンネル番号として保持する(ステップE10)。したがって、図6の例ではチャンネル番号5を保持する。ステップE4においてPの値が0で現在調査中の発音チャンネルが消音状態である場合には、発音イベントを無条件にその発音チャンネルに割り当てられるので、ステップE5においてそのチャンネル番号をCLにセットした後は、ステップE10に進んでCLの値を割り当てチャンネル番号として保持する。
【0033】
ステップE10において、最も低い優先度の発音イベントのチャンネル番号を保持した後は、PLの優先度の値が図10のフローにおけるステップD8でレジスタSSに格納した新たな発音イベントの優先度の値よりも小さいか否かを判別する(ステップE11)。PLの優先度がSSの優先度よりも小さい場合には、現在指定している発音チャンネルに新たな発音イベントを割り当てることができる。この場合において、PLが0であるか否か、すなわち優先度が0で消音状態であるか否かを判別する(ステップE12)。
【0034】
PLが0でない場合には、割り当てチャンネル番号における発音イベントのレベルが0(消音状態)になっていないので、強制ファーストダンプ処理を行ってその発音イベントを強制的に消音する(ステップE13)。一方、PLが0である場合には、すでにその発音チャンネルは消音状態になっているので、強制ファースト処理を行う必要はない。ステップE13の強制ファーストダンプ処理の後、又はステップE12においてPLが0(消音状態)である場合、すなわち新たに受信したMIDIイベントである発音イベントのアサインが終了したときは、アサインフラグASFに0をセットする(ステップE14)。そして、メインフローに戻る。
【0035】
図13は、各発音チャンネルにおいて発音中の発音イベントのエンベロープステップの推移を検索するタイマインタラプトのフローである。一定時間ごとのタイマインタラプトが発生すると、チャンネル番号を指定するポインタvに0をセットし(ステップF)、vをインクリメントしながら以下のループ処理を実行する。すなわち、vで指定した発音チャンネル[v]のエンベロープのステップを記憶するレジスタEnvStep[v]が変化したか否かを判別する(ステップF2)。変化した場合には、図6のV ES[v]の値を更新する(ステップF3)。そして、更新したV ES[v]の値に応じて発音チャンネル[v]の優先度を再計算する(ステップF4)。
【0036】
優先度の再計算の後、又はステップF2においてEnvStep[v]が変化していない場合には、vの値をインクリメントする(ステップF5)。そして、vの値が7より大きいか否かを判別する(ステップF6)。vの値が7以下である場合には、ステップF2に移行して上記ループ処理を繰り返す。vの値が7より大きい場合には、すべての発音チャンネルの変化の検索が終了したので、メインフローに戻る。
【0037】
以上のように、上記実施形態の楽音発生装置の構成によれば、所定数の発音チャンネルによって複数の発音パートを分担する場合に、各発音チャンネルに割り当てられる発音イベントに対して音色変化を与える制御データの種別、発音イベントのエンベロープのステップ、及び各発音パートに応じて優先度を算出し、発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは、その新たな発音イベントの優先度が発音中の発音イベントのうち最も低い優先度より高い場合に、その発音チャンネルの発音イベントを強制的に消音して新たな発音イベントを割り当てる。
【0038】
また、上記実施形態のプログラムは、楽音発生装置のコンピュータによって実行させる楽音発生処理のプログラムであって、
所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音色変化を与える制御データの種別、発音イベントのエンベロープのステップ、及び各発音パートに応じて優先度係数を設定するステップと、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときは各発音チャンネルにおいて発音中の発音イベント及び新たな発音イベントに対する優先度を優先度係数に基づいて算出するステップと、この算出するステップによって算出された各発音チャンネルの優先度のうち最も低い優先度が新たな発音イベントの優先度より低いか否かを判定するステップと、この判定するステップによって最も低い優先度が新たな発音イベントの優先度より低いと判定された場合に最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに新たな発音イベントを割り当てるステップとを有する構成になっている。
すなわち、このプログラムは、楽音発生装置のコンピュータであるCPU1を楽音発生処理における各処理を実行する複数の手段として機能させる。
【0039】
したがって、このような楽音発生装置又は楽音発生処理のプログラムによれば、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、発音中の発音イベントを強制的に消音させて発音チャンネルを確保するアサイン処理を行っても音楽的に不自然な影響を与えることがない。
【0040】
なお、上記実施形態においては、各発音パートに応じて優先度係数を設定するが、その場合において、メロディパート等のように主旋律の発音パートに対して高い優先度を設定する。したがって、重要な発音パートである主旋律の発音パートを強制的に消音することを回避できる。
また、上記実施形態においては、プログラムチェンジ等の制御データによって与えられる音色変化量が大きいほど高い優先度を設定する。したがって、ユーザが意識的に強調した発音イベントを強制的に消音することを回避できる。
【0041】
さらに、上記実施形態においては、発音中の発音イベントのエンベロープステップを一定時間ごとに検索して、各発音チャンネルの優先度を再計算する。したがって、新たな発音イベントの発生に対して迅速なアサイン処理が可能となり、例えば、その発音イベントのアサインが遅れて音切れが発生するのを回避できる。
【0042】
なお、上記実施形態においては、MIDIデータの入力に対して優先度に基づくアサイン処理を行う場合について説明したが、図8のフローにおいて鍵盤入力が設定された場合にも、鍵盤から入力される演奏データに含まれる制御データ、各発音チャンネルに対して指定された発音パートに応じて、鍵盤入力に対して優先度に基づくアサイン処理を行う構成にしてもよい。この場合にも当然に、上記実施形態と同様の効果が得られる。
【0043】
【発明の効果】
本発明によれば、所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、発音中の発音イベントを強制的に消音させて発音チャンネルを確保するアサイン処理を行っても音楽的に不自然な影響を与えることがない。
【図面の簡単な説明】
【図1】本発明による楽音発生装置の実施形態の構成を示すブロック図。
【図2】図1におけるRAMのエリアのデータ構成を示す図。
【図3】図2におけるのエンベロープステップの優先度の重みのデータ構成例を示す図。
【図4】図2における音色パラメータの優先度の重みのデータ構成例を示す図。
【図5】図2における発音パートパラメータのデータ構成例を示す図。
【図6】図2におけるチャンネル優先度のデータ構成例を示す図。
【図7】図1のCPUの動作を示すメインフローチャート。
【図8】図4におけるスイッチ処理のフローチャート。
【図9】図4におけるMIDI処理のフローチャート。
【図10】図9における優先度計算処理のフローチャート。
【図11】優先度計算に用いる重み付け変換テーブルを表す特性曲線の図。
【図12】図4におけるアサイン処理のフローチャート。
【図13】タイマインタラプトのフローチャート。
【符号の説明】
1 CPU
3 ROM
4 RAM
5 鍵盤
6 スイッチ部
7 MIDIインターフェース
8 音源LSI
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a musical sound generating apparatus and a musical sound generating process program.
[0002]
[Prior art]
2. Description of the Related Art Musical sound generators such as electronic musical instruments in recent years are configured to provide rich musical sounds by simultaneously generating a plurality of sounding events. For this purpose, the sound generation means such as a sound source has a predetermined number of sound generation channels (also referred to as “voices”), and performs processing for assigning sound generation events to each sound generation channel by an assigner or the like. When a sounding event occurs due to MIDI data input, performance, etc., if all of the specified number of sounding channels are sounding, one sounding event is dumped first and forcibly muted. In general, assignment processing for securing a channel (also referred to as “truncation processing”), that is, assignment processing giving priority to later arrival is performed.
In this assignment process, it is necessary to select a sound generation channel to be muted under some condition. Conventionally, the following three selection methods have been adopted. In the first method, the sound signal that is sounding has the most advanced envelope step. The second method selects the musical sound signal having the lowest envelope level. The third method selects the oldest received MIDI data or the performance, for example, the oldest key press.
[0003]
[Problems to be solved by the invention]
However, in the above conventional technique, since the method of selecting the sound channel to be muted does not consider musical elements, for example, the main sound source part such as a melody part, the rhythm part, and the chord part with the same sound source means. When the accompaniment sounding parts such as the above are sounding at the same time, forcibly muting the sounding part of the main melody by the conventional selection method has a problem of unnaturally affecting the generated sound.
An object of the present invention is to prevent an unnatural influence on music even if an assigning process for forcibly muting a sounding event during sounding to secure a sounding channel is performed.
[0004]
[Means for Solving the Problems]
The musical sound generating device according to claim 1 has a first priority corresponding to each type of control event that gives a pitch change to a sounding event assigned to each sounding channel of a sounding means having a predetermined number of sounding channels. A storage means for storing a coefficient and a second priority coefficient corresponding to each step of the envelope of the sounding event; and a first value for storing a received value of the received control event when the control event is received. Storage means, a second storage means for storing the changed step when a change in the envelope step is detected, and a first storage stored in the storage means when a new pronunciation event occurs. priority factor, based on the second priority coefficient corresponding to the first storage stored received value and envelope of the attack step means, said A first calculation means for calculating a priority for the Do pronunciation event, the case received value is stored, or the modified step in the second storage means is stored in said first storing means If the first priority coefficient, a second priority corresponding to the first storage means to the stored received value and the second storage means the stored envelope steps stored in said storage means A second calculating means for calculating a priority for a sounding event being sounded based on a coefficient; and when a new sounding event occurs when all of the predetermined number of sounding channels are in a sounding state, It is determined whether or not the lowest priority among the priorities of the respective sound generation channels calculated by the second calculation means is lower than the priority of the new sounding event calculated by the first calculation means. Determining means, and when the determining means determines that the lowest priority is lower than the priority of the new sounding event, the sounding event having the lowest priority is forcibly silenced and assigned to the sounding channel. And an assigning means for assigning the new pronunciation event.
[0005]
A musical sound generation processing program according to claim 2 is a musical sound generation processing program executed by a computer of the musical sound generation device (corresponding to the CPU 1 in FIG. 1 in the embodiment), and a predetermined number of tone generation channels. A first priority coefficient corresponding to each type of control event that gives a pitch change to the sounding event assigned to each sounding channel of the sounding means that shares a plurality of sounding parts, and each envelope of the sounding event A first storage step of storing a received value of the received control event when the control event is received by the computer of the musical sound generating device having storage means for storing the second priority coefficient corresponding to the step If, when a change of the step of the envelope is detected, the second to store the changed step If the storage step, a new sound event has occurred, the second corresponding to the first priority coefficient, said first storage stored received value and envelope of the attack step in step stored in said storage means A first calculation step of calculating a priority for the new sounding event based on the priority coefficient of the first and second received steps when the received value is stored in the first storing step; If the changed step is stored in, corresponding to the first priority coefficient, it said stored received value and the second storage envelope step stored in the step stored in said storage means A second calculating step of calculating a priority for a sounding event being sounded based on a second priority coefficient; and all of the predetermined number of sounding channels. When a new sounding event occurs when is in a sounding state, the lowest priority among the sounding channel priorities calculated in the second calculating step is calculated in the first calculating step. A determination step for determining whether or not the priority of the new pronunciation event is lower, and the lowest priority when the lowest priority is determined to be lower than the priority of the new pronunciation event by the determination step And assigning the new sound event to the sound channel by forcibly muting the sound event.
[0007]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments according to the present invention will be described below with reference to the drawings.
FIG. 1 is a block diagram showing a configuration of an embodiment of a musical sound generator according to the present invention. In the figure, a CPU 1 is connected to a ROM 3, a RAM 4, a keyboard 5, a switch unit 6, and a MIDI I / F (interface) 7 via a system bus 2. The CPU 1 constitutes a computer that executes a musical sound generation processing program stored in the ROM 3 on the RAM 4 as a work area.
[0008]
The keyboard 5 inputs musical sound data, which is a sounding event, according to the performance. The switch unit 6 inputs a switch for setting a performance mode such as keyboard performance or automatic performance, a switch for setting a tone color for each of a plurality of sounding parts, and setting and changing of a part offset value which is a priority for each sounding part. It consists of a switch, a switch for inputting the setting and change of the weight of the envelope step, and the like. The MIDI I / F 7 exchanges MIDI data including sound generation events and control data events between an external MIDI device and the musical tone generator. The CPU 1 is also connected to the tone generator LSI 8, and outputs tone pitch data, control data, and the like of sound generation events from the keyboard 5 and the MIDI I / F 7 to the tone generator LSI 8.
[0009]
The tone generator LSI 8 includes eight sound generation channels consisting of CH0 to CH7, and a plurality of sound generation parts are shared by the eight sound generation channels, and a musical sound signal of a sound generation event assigned to each sound generation channel can be generated simultaneously. it can. In addition, the tone generator LSI 8 includes a synthesizer that synthesizes musical sound signals of eight sound generation channels into, for example, a two-channel stereo musical sound signal. The synthesized musical tone signal output from the sound source LSI 8 is converted from a digital signal to an analog signal by the A / D 9, and subjected to filter processing and amplification processing in the output circuit 10 and is output from an external speaker.
[0010]
FIG. 2 shows a part of the area of the RAM 4, which includes an envelope parameter, a tone color parameter, a sound part parameter, and a sound channel parameter area. Although not shown in the figure, the RAM 4 is provided with various registers (data register, flag register, pointer register, etc.), and temporarily stores various information associated with the tone generation processing executed by the CPU 1. Remember me.
[0011]
In the envelope parameter, as shown in FIG. 3, a set value of priority weight (priority coefficient) is stored for each step of the envelope in the stop (mute), attack, decay, sustain, release, that is, ADSR system. . Also in the case of an envelope other than the ADSR system, a priority weight setting value is stored for each step.
In the timbre parameter area, as shown in FIG. 4, for each timbre (n) (for each timbre 0 and timbre 1 in this embodiment), the pitch bend (PB), vibrato (VB), and envelope step are performance factors. (ES) variable name (T PB [n], T VB [n], T ES [n]) is stored corresponding to the priority weight set value. Even with the same factor, the priority weight differs for each tone color.
[0012]
In the sound part parameter area, as shown in FIG. 5, the pitch bend (T) set in FIG. 4 is set according to the tone (n) set for each sound part (p). PB [n]), vibrato (T VB [n]), envelope step (T ES [n]) priority weight is P PB [p], P VB [p], P The part offset value stored in ES [p] and set or changed is P Stored in PO [p].
In the sound channel parameter area, as shown in FIG. 6, tone numbers assigned to each sound channel, that is, each voice (v), envelope step (V ES [v]), and a priority (V PR [v]) is stored.
[0013]
Next, the operation of the tone generation process in the tone generator of FIG. 1 will be described.
FIG. 7 is a main flowchart showing the operation of the musical tone generation process of the CPU 1. First, after predetermined initialization (step A1), switch processing (step A2), keyboard processing (step A3), MIDI processing (step A4), assignment processing (step A5), sound generation processing (step A6), and other processing (Step A7) is repeatedly executed.
Note that the assignment process in step A5 and the sound generation process in step A6 are continuous cooperative actions by the CPU 1 and the tone generator LSI 8, but are distinguished as two processes for convenience of explanation.
[0014]
FIG. 8 is a flow of the switch process in step A2 in FIG. The mode switch in the switch section is searched (step B1), and it is determined whether or not the current mode is the automatic performance mode (step B2). In the case of the automatic performance mode, input setting of MIDI data input via the MIDI I / F 7 is performed (step B3). If it is not the automatic performance mode but the manual performance mode, the performance data input by operating the keyboard 5 is set (step B4). After the setting of step B3 or B4, another switch search process is performed (step B5), and the process returns to the main flow of FIG. As described below, in this embodiment, the tone generation process in the automatic performance mode will be described.
[0015]
FIG. 9 is a flow of the MIDI processing in step A4 in the main flow. It is determined whether or not a MIDI event has been received (step C1). If it is received, it is determined whether or not the MIDI event is a new sounding event (step C2). If the event is a sounding event, the assign flag ASF is set to 1 (step C3), sounding event processing for storing pitch data and the like in the register is performed (step C4), and priority calculation processing is further performed (step C5). ). Then, the process returns to the main flow.
[0016]
In step C2, if the MIDI event is not a sounding event but control data such as a control change, it is determined whether or not the channel of the MIDI event matches the part number (step C6). If they match, the matched part number of the MIDI data is set in the register p (step C7). Next, it is determined whether or not the received MIDI event includes control data that gives a timbre change. If included, the received control data is stored in the RAM area corresponding to the part number [p]. To store.
[0017]
That is, it is determined whether or not a pitch bend has been received (step C8), and when received, the P of the part number (p) in the RAM area shown in FIG. The received value is stored in PB [p] (step C9). Further, it is determined whether or not a vibrato has been received (step C10), and when received, the P of the part number (p) in the RAM area shown in FIG. The received value is stored in VB [p] (step C11).
[0018]
Next, it is determined whether or not the weight of the envelope step has been changed (step C12). If the weight has been changed, P of the part number (p) in the RAM area shown in FIG. The changed value is stored in ES [p] (step C13). Further, it is determined whether or not the part offset has been changed (step C14). When the part offset has been changed, P of the part number (p) in the RAM area shown in FIG. The changed value is stored in PO [p] (step C15).
[0019]
Even when MIDI data is not received in step C1 or when the MIDI channel does not match the part number in step C6, the envelope step weight and part offset values set in the part number (p) are the same. In Steps C12 and C14, it is determined whether or not the musical tone generator has been changed by a switch operation. If changed, the changed value is stored in Steps C13 and C15.
Next, priority calculation (recalculation) is executed based on the value of the stored control data (step C16). Then, the process returns to the main flow.
[0020]
FIG. 10 is a flow of priority calculation in step C5 and step C16, and FIG. 11 is a characteristic curve representing a weighting conversion table used for priority calculation. In the flow of FIG. 10, the priority calculation process in step C5 is a priority calculation for a new sounding event, that is, a note-on event, and the priority calculation process in step C16 is a priority calculation of a sounding event that is already sounding in the sounding channel. Although it is a calculation, since it is basically the same operation, it is represented by the same flow.
[0021]
First, P The PB [p] pitch bend MIDI value is converted by the conversion table of FIG. After storing in PB, the calculation is performed by the following arithmetic expression (1) and stored in the register PB (step D1).
PB = {(X PB) x (T PB [n])} / 10 (1)
Here, the denominator value 10 is for normalization, that is, bit adjustment (the same applies to other arithmetic expressions).
[0022]
Next, P The MIDI value of the pitch bend of VB [p] is converted by the conversion table of FIG. After storing in VB, the value of the vibrato priority is calculated by the following equation (2) and stored in the register VB (step D2).
VB = {(X VB) x (T VB [n])} / 10 (2)
[0023]
Next, if the MIDI event is a pronunciation event, P The value of the envelope step of ES [p] is converted by the attack weight in FIG. After storing in ES, the priority of the envelope step is calculated by the following arithmetic expression (3) and stored in the register ES (step D3).
ES = {(X ES) x (T ES [n])} / 10 (3)
If the MIDI data is not a sounding event, the priority is recalculated by the arithmetic expression (3) according to the transition of the envelope step, as will be described later.
[0024]
Next, P The part offset value of PO [p] is converted by the conversion table of FIG. 11 and stored in the register PO (step D4).
Based on the priority value of each register, the average value of the overall channel priority is calculated by the following arithmetic expression (4) and stored in the register SS (step D8).
SS = (PB + VB + PO + ES) / 4 (4)
[0025]
The priority value stored in SS for the sounding event that is already sounding in each sounding channel is the priority VT corresponding to each channel number, that is, the voice number (v) in the RAM area shown in FIG. It is transferred to PR [v] and stored. On the other hand, the priority value stored in the SS for a new pronunciation event is used in the assignment process described below.
[0026]
FIG. 12 is a flowchart of the assignment process at step A5 in the main flow. First, it is determined whether or not the assignment flag ASF is 1 (step E1). If the ASF is 0, that is, if a new sounding event has not been received, there is no need for assignment, so this flow ends.
When the ASF is 1 and a new sounding event is received, the assignment process variable is initialized. That is, 255 (maximum value) is set in the register PL that sets the lowest priority currently found, and 0 (channel number 0) is set in the register CC that sets the channel number currently being investigated. 0 is set in the register CL for setting the lowest priority channel number found (step E2).
[0027]
Next, the priority of the current sounding channel is set in the register P for setting the priority of the sounding channel under investigation (step E3). Initially, the value of the channel number CC currently being investigated is zero. Next, it is determined whether or not the value of P is 0 (step E4). That is, it is determined whether or not the priority of the sound channel currently under investigation is 0 and the sound channel is muted. In this case, the value of P, that is, 0 is set in PL, and the value of CC, that is, the channel number currently being investigated is set in CL (step E5).
[0028]
If the value of P is not 0 in step E4, it is determined whether or not the value of P is smaller than the value of PL (step E6). That is, it is determined whether the priority of the sound channel currently under investigation is lower than the lowest priority currently found. If the value of P is smaller than the value of PL, the value of P is set in PL, and the channel number of CC is set in CL (step E7). In other words, the sound channel currently under investigation is replaced with the channel number of the lowest priority currently found.
[0029]
After this replacement, or when the value of P is greater than or equal to the value of PL in step E6, the value of CC is incremented (step E8) and the next channel number is designated. Then, it is determined whether or not the incremented CC value is less than 8, that is, whether or not the maximum channel number is 7 or less (step E9). If the CC value is less than 8, the next channel number exists, so the process proceeds to step E3 and the above process is repeated.
[0030]
For example, in the example of FIG. 6, after setting 50, which is the priority of tone 0 of channel number 0, to P in step E3, since the value of P is not 0 in step E4, the process proceeds to step E6. In step E6, since the value 50 of P is smaller than the value 255 of PL, the process proceeds to step E7, where priority 50 is set in PL and channel number 0 is set in CL. Next, in step E8, the next channel number 1 is set, and the process proceeds to step E3.
[0031]
In step E3, the priority 42 of tone 1 of channel number 1 is set to P. Then, the process proceeds to Step E3 and Step E5. In step E5, since the value 42 of P is smaller than the value 50 of PL, the channel number of the lowest priority that has been found is switched, and the process proceeds to step E6 where priority 42 is set in PL and channel number 1 is set in CL. set.
[0032]
Thus, if the value of P is not 0 in step E4, the loop from step E3 to step E9 until the value of CC becomes 8 in step E9, that is, until the priorities of all sounding channels are searched. Are repeatedly executed to search for the sound channel (CL channel number) having the lowest priority (priority 8 in the example of FIG. 6) among all sound channels. Then, the value of CL is held as an assigned channel number (step E10). Therefore, the channel number 5 is held in the example of FIG. In step E4, if the value of P is 0 and the sound channel currently under investigation is muted, a sound event is unconditionally assigned to that sound channel, so after setting the channel number to CL in step E5. Advances to Step E10 and holds the value of CL as the assigned channel number.
[0033]
In step E10, after the channel number of the sound event with the lowest priority is held, the PL priority value is greater than the priority value of the new sound event stored in the register SS in step D8 in the flow of FIG. Is also smaller (step E11). If the PL priority is lower than the SS priority, a new sounding event can be assigned to the currently designated sounding channel. In this case, it is determined whether or not PL is 0, that is, whether or not the priority is 0 and the sound is muted (step E12).
[0034]
If PL is not 0, the sounding event level in the assigned channel number is not 0 (silenced state), so forced fast dump processing is performed to forcibly mute the sounding event (step E13). On the other hand, when PL is 0, the sound generation channel has already been muted, and there is no need to perform forced first processing. After the forced fast dump process in step E13, or when PL is 0 (silenced state) in step E12, that is, when assignment of a sound event that is a newly received MIDI event is completed, 0 is assigned to the assignment flag ASF. Set (step E14). Then, the process returns to the main flow.
[0035]
FIG. 13 is a timer interrupt flow for searching for the transition of the envelope step of the sounding event being sounded in each sounding channel. When a timer interrupt is generated at regular intervals, 0 is set to a pointer v designating a channel number (step F), and the following loop processing is executed while incrementing v. That is, it is determined whether or not the register EnvStep [v] for storing the envelope step of the tone generation channel [v] designated by v has changed (step F2). If there is a change, V in FIG. The value of ES [v] is updated (step F3). And updated V The priority of the sound generation channel [v] is recalculated according to the value of ES [v] (step F4).
[0036]
After the recalculation of priority, or when EnvStep [v] has not changed in step F2, the value of v is incremented (step F5). Then, it is determined whether or not the value of v is greater than 7 (step F6). If the value of v is 7 or less, the process proceeds to step F2 to repeat the loop process. If the value of v is greater than 7, the search for changes in all the sound channels has been completed, and the process returns to the main flow.
[0037]
As described above, according to the configuration of the musical tone generating device of the above embodiment, when a plurality of sound producing parts are shared by a predetermined number of sound producing channels, the control for giving a timbre change to the sound producing event assigned to each sound producing channel. Priority is calculated according to the type of data, the step of the envelope of the sound event, and each sound part, and when a new sound event occurs when all sound channels are sounded, the new sound event If the priority of is higher than the lowest priority among the sounding events being sounded, the sounding event of the sounding channel is forcibly muted and a new sounding event is assigned.
[0038]
Further, the program of the above embodiment is a program for generating a musical sound to be executed by a computer of the musical sound generating device,
Depending on the type of control data that gives the timbre change to the sound event assigned to each sound channel of the sound means that shares multiple sound parts by a predetermined number of sound channels, the step of the sound event envelope, and each sound part The step of setting the priority coefficient, and when a new sounding event occurs when all of the predetermined number of sounding channels are in a sounding state, the sounding event being sounded in each sounding channel and the priority for the new sounding event are set. A step of calculating based on a priority coefficient, a step of determining whether or not the lowest priority among the priority of each sound channel calculated by the step of calculating is lower than the priority of a new sound event, This determination step determines the priority of the new pronunciation event with the lowest priority. Forcibly mute the lowest priority pronunciation event when it is determined to be lower than the degrees and the operating portions and assigning a new sound event to its sound channel.
In other words, this program causes the CPU 1, which is a computer of the musical sound generating device, to function as a plurality of means for executing each process in the musical sound generating process.
[0039]
Therefore, according to such a musical sound generator or musical sound generation processing program, when a new sounding event occurs when all of the predetermined number of sounding channels are in a sounding state, the sounding event being sounded is forcibly Even if the assignment process for securing the sound channel by muting the sound is performed, there is no musically unnatural influence.
[0040]
In the above embodiment, the priority coefficient is set according to each sound part. In this case, a high priority is set for the main melody sound part such as a melody part. Therefore, it is possible to avoid forcibly muting the main melody pronunciation part, which is an important pronunciation part.
In the above embodiment, a higher priority is set as the timbre change amount given by control data such as program change is larger. Therefore, it is possible to avoid forcibly muting the pronunciation event that the user consciously emphasized.
[0041]
Further, in the above embodiment, the envelope step of the sounding event being sounded is searched at regular intervals, and the priority of each sounding channel is recalculated. Therefore, it is possible to perform a quick assignment process with respect to the occurrence of a new sounding event. For example, it is possible to avoid the occurrence of sound interruption due to the delay of the sounding event assignment.
[0042]
In the above embodiment, the case where assignment processing based on priority is performed on the input of MIDI data has been described. However, even when keyboard input is set in the flow of FIG. 8, performance input from the keyboard is performed. Depending on the control data included in the data and the sounding part designated for each sounding channel, assignment processing based on priority may be performed for keyboard input. In this case, naturally, the same effect as the above embodiment can be obtained.
[0043]
【The invention's effect】
According to the present invention, when a new sounding event occurs when all of the predetermined number of sounding channels are in a sounding state, the assigning process for forcibly muting the sounding event being sounded and securing the sounding channel is performed. There is no musically unnatural influence even if it goes.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of an embodiment of a musical sound generator according to the present invention.
2 is a diagram showing a data configuration of an area of a RAM in FIG.
FIG. 3 is a diagram showing a data configuration example of priority weights of envelope steps in FIG. 2;
4 is a diagram showing a data configuration example of priority weights of timbre parameters in FIG. 2; FIG.
5 is a diagram showing a data configuration example of a sound part parameter in FIG. 2. FIG.
6 is a diagram showing a data configuration example of channel priority in FIG. 2. FIG.
FIG. 7 is a main flowchart showing the operation of the CPU in FIG. 1;
FIG. 8 is a flowchart of switch processing in FIG. 4;
FIG. 9 is a flowchart of the MIDI process in FIG. 4;
10 is a flowchart of priority calculation processing in FIG. 9;
FIG. 11 is a characteristic curve representing a weight conversion table used for priority calculation.
12 is a flowchart of assignment processing in FIG. 4;
FIG. 13 is a flowchart of a timer interrupt.
[Explanation of symbols]
1 CPU
3 ROM
4 RAM
5 Keyboard 6 Switch part 7 MIDI interface 8 Sound generator LSI

Claims (2)

所定数の発音チャンネルを有する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音高変化を与える制御イベントの種別夫々に応じた第1の優先度係数、及び前記発音イベントのエンベロープの各ステップに対応した第2の優先度係数を記憶する記憶手段と、
前記制御イベントが受信された場合、当該受信された制御イベントの受信値を格納する第1の格納手段と、
前記エンベロープのステップの変更が検出された場合、当該変更されたステップを格納する第2の格納手段と、
新たな発音イベントが発生した場合、前記記憶手段に記憶された第1の優先度係数、前記第1の格納手段に格納された受信値及びエンベロープのアタックステップに対応する第2の優先度係数に基づいて、前記新たな発音イベントに対する優先度を算出する第1の算出手段と、
前記第1の格納手段に前記受信値が格納された場合、あるいは前記第2の格納手段に前記変更されたステップが格納された場合、前記記憶手段に記憶された第1の優先度係数、前記第1の格納手段に格納された受信値及び前記第2の格納手段に格納されたエンベロープのステップに対応する第2の優先度係数に基づいて、発音中の発音イベントに対する優先度を算出する第2の算出手段と、
前記所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、前記第2の算出手段によって算出された各発音チャンネルの優先度のうち最も低い優先度が前記第1の算出手段によって算出された新たな発音イベントの優先度より低いか否かを判定する判定手段と、
この判定手段によって前記最も低い優先度が前記新たな発音イベントの優先度より低いと判定された場合に前記最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てる割当手段と、
を備えた楽音発生装置。
Each step of a first priority coefficient corresponding to each type of control event that gives a pitch change to the sounding event assigned to each sounding channel of the sounding means having a predetermined number of sounding channels, and the envelope of the sounding event Storage means for storing a second priority coefficient corresponding to
A first storage means for storing a received value of the received control event when the control event is received;
If a change in the envelope step is detected, second storage means for storing the changed step ;
When a new sounding event occurs, the first priority coefficient stored in the storage means, the received value stored in the first storage means, and the second priority coefficient corresponding to the attack step of the envelope Based on a first calculating means for calculating a priority for the new pronunciation event;
When the received value is stored in the first storage means, or when the changed step is stored in the second storage means , the first priority coefficient stored in the storage means, A priority for calculating a sounding event during sound generation is calculated based on the received value stored in the first storage means and the second priority coefficient corresponding to the envelope step stored in the second storage means. Two calculating means;
When a new sounding event occurs when all of the predetermined number of sounding channels are in a sounding state, the lowest priority among the sounding channel priorities calculated by the second calculating means is the first priority. Determining means for determining whether or not the priority of the new pronunciation event calculated by the one calculating means is lower;
When the determination means determines that the lowest priority is lower than the priority of the new sounding event, the sounding event having the lowest priority is forcibly silenced and the new sounding event is assigned to the sounding channel. Assigning means for assigning
Musical sound generator with
所定数の発音チャンネルによって複数の発音パートを分担する発音手段の各発音チャンネルに割り当てられる発音イベントに対して音高変化を与える制御イベントの種別夫々に応じた第1の優先度係数、及び前記発音イベントのエンベロープの各ステップに対応した第2の優先度係数を記憶する記憶手段を有する楽音発生装置のコンピュータに、
前記制御イベントが受信された場合、当該受信された制御イベントの受信値を格納する第1の格納ステップと、
前記エンベロープのステップの変更が検出された場合、当該変更されたステップを格納する第2の格納ステップと、
新たな発音イベントが発生した場合、前記記憶手段に記憶された第1の優先度係数、前記第1の格納ステップにて格納された受信値及びエンベロープのアタックステップに対応する第2の優先度係数に基づいて、前記新たな発音イベントに対する優先度を算出する第1の算出ステップと、
前記第1の格納ステップにて前記受信値が格納された場合、あるいは前記第2の格納ステップにて前記変更されたステップが格納された場合、前記記憶手段に記憶された第1の優先度係数、前記格納された受信値及び前記第2の格納ステップにより格納されたエンベロープのステップに対応する第2の優先度係数に基づいて、発音中の発音イベントに対する優先度を算出する第2の算出ステップと、
前記所定数の発音チャンネルのすべてが発音状態である場合に新たな発音イベントが発生したときに、前記第2の算出ステップによって算出された各発音チャンネルの優先度のうち最も低い優先度が前記第1の算出ステップによって算出された新たな発音イベントの優先度より低いか否かを判定する判定ステップと、
この判定ステップによって前記最も低い優先度が前記新たな発音イベントの優先度より低いと判定された場合に前記最も低い優先度の発音イベントを強制的に消音させてその発音チャンネルに前記新たな発音イベントを割り当てる割当ステップと、
を実行させることを特徴とする楽音発生処理のプログラム。
A first priority coefficient corresponding to each type of control event that gives a pitch change to a sounding event assigned to each sounding channel of sounding means that shares a plurality of sounding parts by a predetermined number of sounding channels, and the sounding In the computer of the musical tone generator having storage means for storing the second priority coefficient corresponding to each step of the envelope of the event,
A first storing step of storing a received value of the received control event when the control event is received;
If a change in the envelope step is detected, a second storage step for storing the changed step;
When a new sounding event occurs, the first priority coefficient stored in the storage means, the received value stored in the first storage step, and the second priority coefficient corresponding to the attack step of the envelope A first calculation step for calculating a priority for the new pronunciation event based on:
When the received value is stored in the first storage step, or when the changed step is stored in the second storage step, the first priority coefficient stored in the storage means A second calculating step of calculating a priority for a sounding event during sound generation based on the stored received value and a second priority coefficient corresponding to the step of the envelope stored by the second storing step When,
When a new sounding event occurs when all of the predetermined number of sounding channels are in a sounding state, the lowest priority among the sounding channel priorities calculated by the second calculating step is the first priority. A determination step of determining whether or not the priority of the new pronunciation event calculated by the calculation step of 1 is lower;
If it is determined in this determination step that the lowest priority is lower than the priority of the new sounding event, the sounding event having the lowest priority is forcibly silenced and the new sounding event is assigned to the sounding channel. An assignment step to assign
A program for musical tone generation processing, characterized in that is executed.
JP2001117757A 2001-04-17 2001-04-17 Musical sound generator and musical sound generation processing program Expired - Fee Related JP4329276B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001117757A JP4329276B2 (en) 2001-04-17 2001-04-17 Musical sound generator and musical sound generation processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001117757A JP4329276B2 (en) 2001-04-17 2001-04-17 Musical sound generator and musical sound generation processing program

Publications (2)

Publication Number Publication Date
JP2002311955A JP2002311955A (en) 2002-10-25
JP4329276B2 true JP4329276B2 (en) 2009-09-09

Family

ID=18968245

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001117757A Expired - Fee Related JP4329276B2 (en) 2001-04-17 2001-04-17 Musical sound generator and musical sound generation processing program

Country Status (1)

Country Link
JP (1) JP4329276B2 (en)

Also Published As

Publication number Publication date
JP2002311955A (en) 2002-10-25

Similar Documents

Publication Publication Date Title
JP7331746B2 (en) Electronic keyboard instrument, musical tone generating method and program
JP4258991B2 (en) Musical sound generator and musical sound generation processing program
JP2002311957A (en) Device and method for resonance and computer program for resonance processing
US8729377B2 (en) Generating tones with a vibrato effect
JPH03269584A (en) Electronic musical instrument
US6180866B1 (en) Reverberating/resonating apparatus and method
JP3436377B2 (en) Automatic arrangement device and electronic musical instrument
US5252774A (en) Electronic musical instrument having resonance tone generation
JP4329276B2 (en) Musical sound generator and musical sound generation processing program
JPH0968980A (en) Timbre controller for electronic keyboard musical instrument
JP4306138B2 (en) Musical sound generator and musical sound generation processing program
JP3436806B2 (en) Tone signal envelope control device
JPH08137470A (en) Frequency characteristic controller for musical tone signal
JP2623955B2 (en) Electronic musical instrument
JP3079565B2 (en) Electronic musical instrument
JP2009186632A (en) Temperament control method, computer program for controlling temperament, and temperament control device
JPH08137469A (en) Frequency characteristic controller for musical tone signal
JP2000194361A (en) Device and method for adding vibrato of electronic sound device
JP2023011837A (en) Electronic musical instrument, method, and program
JP2636479B2 (en) Electronic musical instrument
JP3087724B2 (en) Music synthesizer
JP3437243B2 (en) Electronic musical instrument characteristic change processing device
JP2636477B2 (en) Electronic musical instrument
JP2504260B2 (en) Musical tone frequency information generator
JP2513003B2 (en) Electronic musical instrument

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060206

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060413

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070314

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090526

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090608

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees