JP3716701B2 - 発音チャンネル割り当て方法及び装置 - Google Patents

発音チャンネル割り当て方法及び装置 Download PDF

Info

Publication number
JP3716701B2
JP3716701B2 JP2000075691A JP2000075691A JP3716701B2 JP 3716701 B2 JP3716701 B2 JP 3716701B2 JP 2000075691 A JP2000075691 A JP 2000075691A JP 2000075691 A JP2000075691 A JP 2000075691A JP 3716701 B2 JP3716701 B2 JP 3716701B2
Authority
JP
Japan
Prior art keywords
sound
envelope
channel
volume
waveform data
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
JP2000075691A
Other languages
English (en)
Other versions
JP2001265341A (ja
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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2000075691A priority Critical patent/JP3716701B2/ja
Publication of JP2001265341A publication Critical patent/JP2001265341A/ja
Application granted granted Critical
Publication of JP3716701B2 publication Critical patent/JP3716701B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、押鍵に基づく発音指示に従って生成された音を複数発音チャンネルの中のいずれかの発音チャンネルに割り当てる発音チャンネル割り当て方法及び装置に関し、特に、波形メモリから読み出した複数周期波形自体が音量の時間変化(音量エンベロープ)を有する場合に、最も聴感に与える影響の少ない音を発音中の発音チャンネルを解放して新たな音を割り当てることのできるものに関する。
【0002】
【従来の技術】
発音開始から終了までの1音の全波形の波形データ、あるいはアタック部などの波形の一部において全波形の波形データを波形メモリに記憶し、この波形データを基に楽音を生成し発音する波形メモリ音源が従来から知られている。波形メモリ音源は複数の発音チャンネルを有しており、当該音源では押鍵に基づく発音指示が発生した場合に発音チャンネルの割り当てを行って、該発音指示された楽音を該割り当てた発音チャンネルにて発音するようになっている。該発音割り当ての処理では、複数の発音チャンネルの中から、まず、現在発音に使用されていない空きチャンネルを捜し、それが見つかればその発音チャンネルに新たに発音する楽音の割り当てを行なう。一方、空きチャンネルが見つからない場合には現在発音に使用されている発音チャンネルの中から何れかの発音チャンネルを選択し、選択した発音チャンネルで発音中の楽音の音量を急速に減衰することによって当該発音チャンネルを強制的に解放し、当該発音チャンネルに新たに発音する楽音を割り当てる。
【0003】
一般的に、この「何れかの発音チャンネルを選択して、当該発音チャンネルで発音中の楽音の音量を急速減衰させる」処理を「トランケート処理」と呼び、この「トランケート処理」で急速減衰させられる発音チャンネルを「トランケートチャンネル」と呼んでいる。この「トランケート処理」は既に公知であり、また、様々なタイプの「トランケート処理」が知られている。「トランケートチャンネル」の選択方法として従来から知られている方法としては、
(1)発音中の複数発音チャンネルの中から、最初に(つまり最も古く)ノートオフされた発音チャンネルを選択し、ノートオフされた発音チャンネルが無い場合は最初に(つまり最も古く)ノートオンされた発音チャンネルを選択する方法
(2)発音中の各発音チャンネル毎に音量の時間変化を疑似的に演算して疑似音量エンべロープを生成し、該疑似音量エンベロープの値が最も小さい発音チャンネルを選択する方法
(3)音源の各発音チャンネルから現在の音量エンベロープ値を読み出して、該音量エンベロープ値が最も小さい発音チャンネルを選択する方法
(4)さらに、上述したような各方法に「パート毎の優先度」あるいは「音高に応じた優先度」等を加味して選択する方法
等のいろいろな方法がある。
【0004】
【発明が解決しようとする課題】
ところで、上述した波形メモリ音源においては、波形メモリから「ループ読み出し用ではない複数周期波形」(例えば、アタック部+ループ部構成の波形データにおけるアタック部)が読み出され、その複数周期波形自体が音量の時間変化(音量エンベロープ)を有している場合がある。このような場合に、波形メモリ音源の発音チャンネルにおいて、当該波形メモリ音源のエンベロープ発生器で発生した音量エンベロープあるいは疑似的に生成される疑似音量エンベロープを用いて、該複数周期波形に対して更にエンベロープ制御を行なうと、その発音チャンネルで実際に発音される楽音の音量エンベロープは該エンベロープ発生器の発生する音量エンベロープあるいは疑似的に生成される疑似音量エンベロープとは異なる形状の音量エンベロープとなる。そうすると、上記「トランケート処理すべき発音チャンネルを選択する」場合に、波形メモリ音源の発音チャンネルから読み出した音量エンベロープや疑似的に生成される疑似音量エンベロープに基づいて発音チャンネルの選択を行なうことは適切でない。なぜなら、上記「トランケート処理すべき発音チャンネルを選択する」際に、波形メモリから読み出された波形自体が元々有していた音量エンベロープが考慮されていないからである。しかしながら、従来の波形メモリ音源では、実際に発音される楽音の所定の時間における音量エンベロープ現在値(実施例では、音量レベル現在値と呼んでいる)を求めることが困難であったために、実際に発音される楽音の音量エンベロープ現在値に基づく「トランケートチャンネル」の選択を行うことが困難であった。そのため、発音チャンネルの割り当てが適切に行われずに、消えるべきでない楽音が消音されてしまったり、先に消えても良い楽音が残ったりする、という問題点があった。
【0005】
本発明は上述の点に鑑みてなされたもので、波形メモリから読み出された複数周期波形が音量の時間変化(音量エンベロープ)を有したものである場合であっても、適切にトランケート処理を行い発音チャンネルを割り当てることのできる発音チャンネル割り当て方法及び装置を提供しようとするものである。
【0006】
【課題を解決するための手段】
本発明に係る発音チャンネル割り当て方法は、波形データを記憶した波形メモリから各発音チャンネル毎に波形データを読み出し、読み出した波形データに基づき生成される楽音信号に対して各発音チャンネル毎に更に音量エンベロープ付与制御を行う音源において、新たな楽音の発音が指示されたときに、該新たな楽音を割り当てる発音チャンネルを選定する発音割り当て方法であって、前記波形メモリに記憶された波形データは当該波形データ自体が音量変化するものであり、前記波形メモリに記憶された波形データの音量変化を示すエンベロープ情報を記憶した記憶手段を各発音チャンネル毎の前記波形データの発音開始からの経過時間により参照し、該エンベロープ情報に基づいて各発音チャンネルにおいて前記波形メモリから読み出されている波形データの現在の音量を示す模擬エンベロープ値情報を取得するステップと、各発音チャンネルで生成する楽音信号に対して付与される前記音量エンベロープの現在値を示す音量エンベロープ値情報を取得するステップと、各発音チャンネル毎に前記模擬エンベロープ値情報と前記音量エンベロープ値情報とを合成し、各発音チャンネル毎の音量現在値を算出するステップと、算出した各発音チャンネル毎の音量現在値に基づいて、前記新たな楽音を割り当てるべき発音チャンネルを選定するステップとを具備する。
【0007】
この発明によれば、各発音チャンネルの音量現在値を算出し、この音量現在値に基づいて、新たな楽音を発音割り当てるべき発音チャンネルを選定することができるようになっている。波形データを記憶した波形メモリから各発音チャンネル毎に波形データを読み出し、読み出した波形データに基づき生成される楽音信号に対して各発音チャンネル毎に更に音量エンベロープ付与制御を行う音源において、新たな楽音の発音が指示されたときには該新たな楽音を発音チャンネルに割り当てる。波形メモリに記憶された波形データは当該波形データ自体が音量変化するものであり、いわば、音量変化に応じた振幅エンベロープが付与されているエンベロープ付の波形データを波形メモリに記憶している。発音チャンネル割り当ての際に、前記波形メモリに記憶された波形データの音量変化を示すエンベロープ情報を記憶した記憶手段を各発音チャンネル毎の前記波形データの発音開始からの経過時間により参照し、該エンベロープ情報に基づいて各発音チャンネルにおいて前記波形メモリから読み出されている波形データの現在の音量を示す模擬エンベロープ値情報を取得する。また、各発音チャンネルで生成する楽音信号に対して付与される前記音量エンベロープの現在値を示す音量エンベロープ値情報を取得する。こうして取得された各発音チャンネル毎の模擬エンベロープ値情報と音量エンベロープ値情報とを合成すると、音量現在値が得られる。この音量現在値は、各発音チャンネルから実際に発音される楽音の所定時間における音量値を示すものである。そこで、この各発音チャンネルの音量現在値に基づき、新たな楽音を発音割り当てすべき発音チャンネルを決定する。こうすると、実際に発音される音量で割り当て対象となる発音チャンネルを選定することができるので、不自然な発音がなされるような発音チャンネルの割り当てが行われることがない。
【0008】
本発明は、方法の発明として構成し実施することができるのみならず、装置の発明として構成し実施することができる。また、本発明は、コンピュータまたはDSP等のプロセッサのプログラムの形態で実施することができるし、そのようなプログラムを記憶した記憶媒体の形態で実施することもできる。
【0009】
【発明の実施の形態】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
【0010】
図1は、この発明に係る発音チャンネル割り当て方法を適用した電子楽器のハードウエア構成の一実施例を示すブロック図である。ここに示された電子楽器のハードウエア構成例はコンピュータを用いて構成されており、そこにおいて、発音チャンネル割り当て処理は、コンピュータがこの発明に係る発音チャンネル割り当て方法を実現する所定のプログラム(ソフトウエア)を実行することにより実施される。勿論、この発音チャンネル割り当て処理はコンピュータソフトウエアの形態に限らず、DSP(ディジタル・シグナル・プロセッサ)によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。また、本発明に係る発音チャンネル割り当て方法を適用する装置は電子楽器に限らず、カラオケ装置又は電子ゲーム装置、あるいはその他のマルチメディア機器又はパーソナルコンピュータ等、任意の製品応用形態をとっているものであってよい。
【0011】
図1に示された電子楽器のハードウエア構成例においては、コンピュータのメイン制御部としてのCPU1に対して、バスライン1D(データあるいはアドレスバス等)を介してリードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3、表示器4、表示器スイッチ5、ハードディスク6、波形メモリ音源8、MIDIインタフェース10、演奏操作子11、タイマ12がそれぞれ接続されている。CPU1は、後述する「ノートオンイベント処理」や「トランケートチャンネル決定処理」等の処理を所定のプログラムに基づいて実行する。これらのプログラムは、通信インタフェース(図示せず)を介したネットワーク等から供給されてハードディスク6に記憶される。そして、実行時にハードディスク6からRAM3にロードされる。あるいは、ROM2に予めプログラムが記録されていてもよい。CPU1には、タイマ割込み処理(インタラプト処理)における割込み時間や各種時間を計時するタイマ12が接続されている。すなわち、タイマ12は時間間隔を計数したり、自動伴奏演奏等のテンポを設定したりするためのテンポクロックパルスを発生するものである。このテンポクロックパルスの周波数は、表示器スイッチ5の中のテンポ設定スイッチ等によって調整される。このようなタイマ12からのテンポクロックパルスはCPU1に対して処理タイミング命令として与えられたり、あるいはCPU1に対してインタラプト命令として与えられる。CPU1はこれらの命令に従って、各種処理を実行する。
【0012】
ROM2は、CPU1により実行あるいは参照される各種プログラムや各種データ等を格納するものである。RAM3は、発音される楽音に関する各種情報やCPU1がプログラムを実行する際に発生する各種データを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを記憶するメモリとして使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。表示器4は、後述の表示器スイッチ5から入力された楽音特性の設定及び制御に関するデータやその他のデータの設定内容等を表示する、例えば液晶表示パネル(LCD)やCRT等のディスプレイである。表示器(パネル)スイッチ5は演奏時の楽音音量の設定指示や、あるいは演奏に関する各種の音楽条件を入力するための各種の操作子を含んで構成される。例えば、数値データ入力用のテンキーや文字データ入力用のキーボード、あるいはデータ設定用操作子等である。勿論、この他にも音高、音色、効果等を選択・設定・制御するための各種操作子を含んでいてよい。
【0013】
演奏操作子11は、発生すべき楽音を指定するために用いられる各種操作子、すなわち、演奏する楽音の音高、音色、効果等を選択・設定・制御するための各種操作子(例えば、鍵盤等)である。例えば、鍵盤は楽音の音高を選択するための複数の鍵を備えるもので、各鍵に対応してキースイッチを有しており、この鍵盤は楽音演奏のために使用できるのは勿論のこと、演奏する楽音の音高、音色、効果等を選択・設定・制御するための操作子として使用することもできる。この演奏操作子11は機種に依存するものであり、当該電子楽器の機種がピアノやオルガンといったものであれば当該演奏操作子11は上記鍵盤で構成される。ハードディスク6は、波形メモリ7に記憶される波形データに対応する音量エンベロープデータ(後述する波形のエンベロープテーブル等の各種データ)や、各種音色パラメータ等からなる音色データなどのような演奏に関する複数種類のデータを記憶したり、前記CPU1が実行する各種プログラム等のような制御に関するデータを記憶したりするものである。前記ROM2に制御プログラムが記憶されていない場合、このハードディスク6に制御プログラムを記憶させておき、それを前記RAM3に読み込むことにより、ROM2に制御プログラムを記憶している場合と同様の動作をCPU1にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、ハードディスク6(HD)のような外部記憶装置に限られず、フロッピィーディスク(FD)、コンパクトディスク(CD−ROM・CD−RAM)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Diskの略)等の着脱自在な様々な形態の記憶媒体を利用する外部記憶装置であってもよい。
【0014】
CPU1は、MIDIインタフェース10、演奏操作子11等から与えられる、あるいは、CPU1の実行する自動演奏処理等で発生する演奏情報(MIDIイベント等)に従って波形メモリ音源部8に楽音発生の指示を出す。具体的には、CPU1は、楽音発生の開始を指示するノートオンイベントが与えられた、ないし、発生したのに応じて、後述する「ノートオンイベント処理」を行う。すなわち、演奏操作子11等から入力した演奏情報及び設定情報に応じて、発音チャンネル割り当てや楽音制御パラメータ等の作成を行い、割り当てた発音チャンネルに対応して各種の楽音制御パラメータを音源レジスタ8Aに対して設定する。波形メモリ音源8では、楽音データを生成するための楽音生成処理が行われる。すなわち、各発音チャンネルに対応して音源レジスタ8Aに設定された各種楽音制御パラメータに基づいて、波形メモリ7から時分割で複数チャンネル分の波形データを読み出して補間し(読出処理部8B)、補間された波形データに各発音チャンネル別に楽音制御(すなわち、EG処理部8Cで生成された各発音チャンネルのエンベロープに基づく音量制御)を施し(EG処理部8C)、音量制御された複数チャンネル分の波形データ(楽音波形)を累算する(チャンネル累算部8D)。なお、波形メモリ7には複数の波形データが記憶されており、音源レジスタ8Aには各発音チャンネル毎に、前記読出処理部8Bが波形メモリ7からどの波形データを読み出すかを指定するための波形データ指定情報が含まれている。ここで、読出処理部8Bから発生した楽音波形に音量エンベロープが付与されている場合は、EG処理部8Cで生成されるエンベロープによって更に音量エンベロープが制御されることになる。そして、累算結果に対して楽音制御パラメータに従って各種効果を付与して(EF処理部8E)、楽音データを生成する。こうして生成された楽音データは、DAC9に出力される。DAC9はディジタルアナログ変換器であって、DAC9では波形メモリ音源8で生成され出力されたディジタル楽音データをアナログ楽音データに変換する。サウンドシステム9Aでは、該アナログ楽音データに基づいて実際の楽音を放音する。
【0015】
波形メモリ7には1つの音に関して1乃至複数周期の波形データが記憶されており、波形データは複数の音色及び音楽特性(音高又は音域に応じた特性や、ビブラート、スラー等の変調特性)に対応している。すなわち、波形メモリ音源8における楽音信号発生方式は、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した波形データ(楽音波形サンプル値データ)を順次読み出す波形メモリ読み出し方式である。勿論、波形メモリ音源8(読出処理部8B、EG処理部8C、チャンネル累算部8D、EF処理部8E)は専用のハードウェアを用いて音源回路を構成するものに限らず、DSPとマイクロプログラム、あるいはCPUとソフトウェアを用いて音源回路を構成するようにしてもよい。さらに、1つの回路を時分割で使用することによって複数の発音チャンネルを形成するようなものであってもよいし、1つの発音チャンネルが1つの回路で形成されるようなものであってもよい。
【0016】
MIDIインタフェース(I/F)10は、他のMIDI機器等からMIDI規格の演奏情報(MIDIデータ)を当該電子楽器へ入力したり、あるいは当該電子楽器からMIDI規格の演奏情報(MIDIデータ)を他のMIDI機器等へ出力するためのインタフェースである。なお、MIDIインタフェース10は専用のMIDIインタフェースを用いるものに限らず、RS232−C、USB(ユニバーサル・シリアル・バス)、IEEE1394(アイトリプルイー1394)等の汎用のインタフェースを用いてMIDIインタフェースを構成するようにしてもよい。この場合、MIDIメッセージ以外のデータをも同時に送受信するようにしてもよい。
上述のような汎用のインタフェースを用いた場合、当該インタフェースを例えばLANやインターネットあるいは電話回線等の通信ネットワークに接続し、該通信ネットワークを介してサーバコンピュータと接続することによって、当該サーバコンピュータから制御プログラムや各種データを電子楽器側に取り込むようにしてもよい。すなわち、ROM2やハードディスク6に制御プログラムや各種データが記憶されていない場合に、サーバコンピュータから制御プログラムや各種データをダウンロードする。クライアントとなる電子楽器は、通信ネットワークを介してサーバコンピュータへと制御プログラムや各種データのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求された制御プログラムやデータを、通信ネットワークを介して本電子楽器へと配信し、電子楽器がこれらの制御プログラムや各種データを受信してハードディスク6に蓄積することにより、ダウンロードが完了する。
【0017】
上述したように、図1に示した電子楽器において、発音チャンネルの割り当て方法はコンピュータがこの発明に係る発音チャンネル割り当て方法を実現する所定のプログラム(ソフトウエア)を実行することにより実施される。そこで、この発音チャンネルの割り当て方法を実現する所定のプログラム(ソフトウエア)について説明する。図2は、上述した電子楽器において実行される「ノートオンイベント処理」の一実施例を示すフローチャートである。当該処理は、所定の演奏操作子11の操作や、MIDIインタフェース10からのノートオンの入力等に応じてノートオンイベントが発生した場合に実行される処理であり、これにより操作された演奏操作子11に応じた楽音の発音が開始される。
ステップS1では、そのノートオンイベントに係る音(すなわち、発音指示された音)の音高を示す情報(例えば、ノート番号)、そのノートオンイベントに係る音のイニシャルタッチ強度を示す情報(例えば、ベロシティ)、ノートオンを入力したMIDIチャンネルを受信するパートの情報(例えば、パート番号)を各々に対応する所定のレジスタNN(ノート番号を格納するレジスタ)、レジスタVL(ベロシティを格納するレジスタ)、レジスタPT(パート番号を格納するレジスタ)に格納する。そして、楽音を発音するために現在空いている(すなわち、割り当てられていない)発音チャンネル(これを空きチャンネルと呼ぶ)があるかないかを検出する(ステップS2)。この空きチャンネルには、ノートオフされた後に音量が減衰して音量レベルが「0」となって解放された発音チャンネルが含まれる。空きチャンネルがある場合には(ステップS3のYES)、当該空きチャンネルに付されているチャンネル番号をレジスタASに格納する(ステップS4)。
【0018】
一方、全ての発音チャンネルが既に割り当てられており、空きチャンネルが全くない場合には(ステップS3のNO)、後述する「トランケートチャンネル決定処理」(図3参照)を行うことによってトランケートチャンネル(すなわち、後述する急速減衰処理を行って発音中の楽音を強制的に消音して、空きチャンネルとする「トランケート処理」を行う対象の発音チャンネル)を決定し、トランケートチャンネルに選ばれた発音チャンネルに付されているチャンネル番号をレジスタASに格納する(ステップS7)。そして、レジスタASに格納されたチャンネル番号に基づいて、該当する発音チャンネルにおいて発音中の楽音に対して急速減衰処理を行う。この急速減衰処理では、トランケートチャンネルに選ばれた発音チャンネルで発音中の楽音が減衰されて消音される。
ステップS5では、上記レジスタPT、レジスタNN、レジスタVLに応じた楽音制御パラメータをレジスタASに保持されたチャンネル番号に該当する発音チャンネルに設定する。そして、当該発音チャンネル(つまり、レジスタASに保持されたチャンネル番号に該当する発音チャンネル)に対して発音開始を指示する(ステップS6)。
【0019】
図3は、上述した「ノートオンイベント処理」で実行される「トランケートチャンネル決定処理」(図2のステップS7参照)の一実施例を示すフローチャートである。当該処理は、「トランケート処理」を行う発音チャンネル(トランケートチャンネル)を選択し決定する処理である。
ステップS11では、サーチ対象のパートを決定する。すなわち、「トランケート処理」を行う対象となる発音チャンネルを特定の演奏パートの楽音を発音している発音チャンネルのいずれかから選択するために、全演奏パートの中から特定の演奏パートをサーチ対象の演奏パートとして絞り込みする。この演奏パートの絞り込みを行うことによって、「トランケート処理」が高速化されて発音チャンネルの割り当てが素早く実行されることから、当該ノートオンイベントに対して遅延することなく波形メモリ音源8に対して発音制御を行うことができる(すなわち、発音遅れが防止できる)。演奏パートの絞り込みの方法としては、例えば、「1以上の発音チャンネルで発音中の演奏パートであって、かつ、優先度の低い演奏パート」をサーチ対象のパートとする、あるいは「所定のリザーブ数(各パート毎に設定された最低限残しておくべきチャンネル数)以上の発音チャンネルを使用している演奏パート」をサーチ対象の演奏パートとする等の方法がある。演奏パートの絞り込み終了後、全ての発音チャンネルの中から、サーチ対象として絞り込まれた演奏パートに属する楽音が現在割り当てられている(楽音を生成中の)発音チャンネルを検出する(ステップS12)。すなわち、絞り込みした演奏パートに属する楽音が割り当てられている発音チャンネルのリストを作成する。このリストの発音チャンネルの中から、後述の処理によって「トランケート処理」を行う対象となる発音チャンネルが決定される。そこで、まず、作成されたリストの1番目の発音チャンネル(すなわち、1番初めに検出された発音チャンネル)を後述のステップS14〜ステップS17で行う処理対象として指定する(ステップS13)。
【0020】
ステップS14では、上記ステップS13で指定された発音チャンネルにおける楽音の発音開始から現在までの経過時間を検出する。すなわち、各発音チャンネル毎に「ノートオンイベント処理」時に「当該発音チャンネルがノートオンされた時刻」を保持しておき、ここでは、現在時刻と前記「当該発音チャンネルがノートオンされた時刻」との差をとることにより「当該発音チャンネルの発音開始からの時間」(経過時間)を検出する。ステップS15では、当該チャンネルで読出処理部8Bが波形メモリ7から読み出している波形データに対応した「波形のエンベロープテーブル」(詳細は後述する)を上記「経過時間」によって参照することにより、当該波形データの「エンベロープ現在値」を取得する。ステップS16では、波形メモリ音源8の発音チャンネルから、「EG処理部8Cにおける当該チャンネルのエンベロープ生成処理により生成されたエンベロープ現在値」を読み出す。ステップS17では、ステップS15で取得した「波形データのエンベロープ現在値」と、ステップS16で取得した「EG処理部8Cのエンベロープ現在値」とを加算する。上記各「エンベロープ現在値」をそれぞれ対数値(例えば、デシベル値)で表現した場合には、加算がリニア値での乗算に相当する。したがって、上記各「エンベロープ現在値」をそれぞれ対数値で表現した場合には、演算器として加算器を用いればよく、一方、これらをリニア値で表現した場合には、演算器として乗算器を用いればよい。
こうして加算(あるいは乗算)して得られた値が、当該発音チャンネルの「音量レベル現在値」である。この発音チャンネルの「音量レベル現在値」の算出については(ステップS15〜ステップS17参照)、後ほど具体的な例を用いて詳しく説明する。
【0021】
「音量レベル現在値」の算出後、次の発音チャンネルがあるかないかを判定する(ステップS18)。すなわち、ステップS12で検出したサーチ対象として絞り込まれたパートに関して発音指示された楽音を生成中の発音チャンネルが複数あるかないかを判定する。複数ある場合、すなわち、次の発音チャンネルがある場合には(ステップS18のYES)、次の発音チャンネルを指定して(ステップS20)、ステップS14の処理へ戻り上記各処理を繰り返し行って、当該発音チャンネル毎の「音量レベル現在値」を算出する。一方、次の発音チャンネルがない場合には(ステップS18のNO)、音量レベルが最少である発音チャンネルを検出し、当該発音チャンネルに付されているチャンネル番号をレジスタASに格納する。すなわち、「音量レベル現在値」が算出された発音チャンネルの中から、最も該音量レベルが小さい発音チャンネルをサーチし、そのチャンネル番号をレジスタASに格納する。そして、当該「トランケートチャンネル決定処理」を終了して、「ノートオンイベント処理」へ処理を返す。そして、「ノートオンイベント処理」ではレジスタASに格納したチャンネル番号を付された発音チャンネルに対して「トランケート処理」を行う(図2のステップS8参照)。
このようにして、「ノートオンイベント処理」及び「トランケートチャンネル決定処理」を行うことによって、演奏操作子11の操作に応じたノートオンイベントの発生に従い、空きチャンネルをサーチし、サーチされた空きチャンネルにノートオンイベントに係る楽音を割り当てて楽音を発音する。あるいは、サーチした結果として空きチャンネルがなかった場合には、「トランケート処理」を行って急速減衰処理した楽音が割り当てられていた発音チャンネルを空きチャンネルとして、当該発音チャンネルにノートオンイベントに係る新たな楽音を割り当てて楽音を発音することができるようにしている。
【0022】
なお、ステップS11に記載の「トランケート処理」対象とする発音チャンネルを選択する範囲の絞り込み方法は、パート単位で行わなくてもよい。すなわち、パート単位で行う方法以外に、例えば音域単位、音色グループ単位等で絞り込みを行ってもよい。あるいは、全く絞り込みを行わず、全パートをサーチ対象のパートとしてもよい。また、ステップS16において、波形メモリ音源8の各発音チャンネルからエンベロープ現在値を読み出す代わりに、計算で音量の時間変化をシミュレートして「疑似エンベロープ」を生成し、この生成された「疑似エンベロープ」の現在値を使用するようにしてもよい。この「疑似エンベロープ」は、波形メモリ7から各発音チャンネル毎に読み出された波形データに基づいて生成される楽音信号に付与するための、疑似的に生成される音量エンベロープを表わす。
【0023】
ここで、波形メモリ7に記憶する波形データ毎の音量エンベロープについて簡単に説明する。上述したように、この電子楽器では、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリ7に記憶した波形データを順次読み出す波形メモリ読み出し方式を採用している。波形メモリ7には、複数周期波形からなる様々な自然楽器の様々な演奏態様による波形データが記憶されている。この波形データは演奏全体の波形データであってもよいし、あるフレーズ、あるいは1音、あるいはアタック部やリリース部といった特徴のある演奏の一部の波形データだけであってもよい。この波形データの中には、波形データ自体が音量の時間変化(音量エンベロープ)を有しているものがある。この音量エンベロープは、各波形データ毎に波形のエンベロープテーブルとして波形メモリ7に波形データと共に記憶される。図4は、波形のエンベロープテーブルとして記憶する音量エンベロープ値の一例を示した概念図である。この実施例では、アタック部+ループ部構成の波形データにおける波形のエンベロープテーブルを例に示した。なお、この図では縦軸に音量エンベロープ値を、横軸に時間を示している。
波形のエンベロープテーブルには、各波形データ毎に所定の時間分(この実施例では、波形データのスタート位置から約10秒分の長さ)の疑似音量エンベロープ値を記憶する。該疑似音量エンベロープ値は、波形データから抽出された音量エンベロープを所定の時間間隔毎に(例えば、10ミリ秒毎間隔に)サンプリングしたサンプル値である。本実施例に示した疑似音量エンベロープは、波形データのアタック部では該疑似音量エンベロープ値が時間の経過と共に低下するよう変化し、波形データのループ部に入ったところからは時間の経過に関わらず一定値のまま推移する形状である。
【0024】
なお、本実施例では波形データのアタック部の長さに関わりなく所定の時間長さ分(約10秒分の長さ)にわたって疑似音量エンベロープ値を波形のエンベロープテーブルとして記憶するようにしたが、波形メモリ7に記憶した各波形データのアタック部の時間長さに相当するだけの時間長さ分にわたって疑似音量エンベロープ値を波形のエンベロープテーブルとして記憶するようにしてもよい。例えば、波形データのアタック部の時間長さが5秒分(あるいは15秒分)であれば、波形のエンベロープテーブルの時間長さも5秒分(あるいは15秒分)記憶すればよい。ただし、上記したように各波形データのアタック部の長さに関わりなく所定の時間長さ分に波形のエンベロープテーブルを統一して構成すると、波形データがそれ以下の時間長さである場合には波形データのエンド位置を検出する必要がなくなるので、その分プログラム(ソフトウエア)を簡単に構成することができる、という利点がある。例えば、波形データのアタック部が5秒分の時間長さである場合には、波形のエンベロープテーブルは前半の5秒分にアタック部の疑似音量エンベロープ値を記憶し、後半の5秒分はループ部の疑似音量エンベロープ値を記憶する。このループ部の疑似音量エンベロープ値は時間経過に関わらず一定値であることから、特に波形データのエンド位置を検出して当該波形のエンベロープテーブルと整合をとる必要はない。
【0025】
なお、複数の波形データに共通する疑似音量エンベロープ値の時間変化を波形のエンベロープテーブルとして記憶するようにしてもよい。また、波形のエンベロープテーブルは波形データから抽出された音量エンベロープを所定の時間間隔毎にサンプリングしたサンプル値そのものからなる疑似音量エンベロープでなく、一部のサンプル値を加工した疑似音量エンベロープであってもよい。例えば、実際のサンプル値からなる疑似音量エンベロープの先頭部分が下がっている場合に、当該先頭部分が下がらないように前記疑似音量エンベロープを加工した形状の波形のエンベロープテーブルを作成するとよい(点線図参照)。こうすると、先頭部分(すなわち、発音開始直後)に発音割り当てがなされた場合の不都合を回避することができる。すなわち、サンプル値のままである場合には、先頭部分で「トランケート処理」がなされて、当該波形データを基にして発音される楽音が発音開始後すぐに消音されることとなり非常に都合が悪い。そこで、先頭部分のサンプル値を加工してそのようなことが起こらないようにしている。勿論、絶対に加工しなければならないということではなく、加工した方がよい。すなわち、加工しなくてもよい。
なお、この波形のエンベロープテーブルは波形メモリ7に波形データと共に記憶するようにしてもよいし、あるいは波形メモリ7とは別のハードディスク6等の記憶装置やFD等の外部記憶媒体に記憶するようにしてもよい。
また、本実施例では「アタック部+ループ部構成の波形データ」に関する波形のエンベロープテーブルを示したが、波形データは「ループ読み出し用でない複数周期波形」構成であればどのような構成のものであってもよい。
【0026】
次に、発音チャンネルの「音量レベル現在値」の算出(図3のステップS15〜ステップS17参照)について、具体例を参照しながら詳細に説明する。
図5は、発音チャンネルの「音量レベル現在値」の算出について説明するための図である。図5(A)は、時間T0で発生したノートオンに応じて、1つの発音チャンネルでアタック部とループ部から構成される波形データを読み出している様子を示す概念図である。図5(B)は、図5(A)の波形データが予め有している音量エンベロープ(すなわち、波形のエンベロープテーブルを基にして生成される音量エンベロープ)を示す図である。図5(C)は、エンベロープ発生器(EG処理部8C)で当該発音チャンネルの波形データの音量を制御するために生成されているエンベロープを示す図である。図5(D)は、所定の発音チャンネルにおける実際に発音される楽音の音量エンベロープ(これを「音量レベル」と呼んで、図5(C)に示すエンベロープ発生器(EG処理部8C)で生成された当該発音チャンネルの音量エンベロープと区別する)を示す図である。図5(B)から図5(D)までの各図では、縦軸に音量エンベロープ値を、横軸に時間を示している。
【0027】
まず、ノートオンイベントを受信すると、波形メモリ7から該ノートオンイベントに対応した波形データを選択的に読み出す。この実施例では、時間の経過に従い、特徴のある複数周期波形からなるアタック部全体の波形データと、それに続く1周期波形からなるループ波形を複数回繰り返して読み出す。そして、読み出された波形データに対応するエンベロープテーブルを発音開始(ノートオン)からの経過時間で参照することにより、波形メモリ7中の当該波形データが有しているエンベロープに対応する波形の音量エンベロープ現在値を取得する(図3のステップS15参照)。例えば、当該波形データに対応したエンベロープテーブルが図4に示したような形状である場合には、図5(B)に示すような音量エンベロープが生成される。この音量エンベロープのアタック部の形状は、波形のエンベロープテーブルと先頭部分の一部を除いて同様の形状となる。また、当該波形の音量エンベロープのループ部の形状は、波形データのループ部が繰り返し読出しされる限りにおいて、ループ部が読み出された以降(時間T1以降)で一定値を維持した形状となる。こうして生成される音量エンベロープの所定の時間における音量エンベロープ値が波形のエンベロープ現在値として取得される。
次に、図3のステップS16で波形メモリ音源8から読み出される音量エンベロープ現在値、すなわち、EG処理部8Cが当該発音チャンネルの波形データの音量を制御するために生成しているエンベロープについて説明する。なお、EG処理部8Cでは、複数ステートの折れ線近似されたエンベロープを生成する。音源レジスタ8Aには、該エンベロープを制御するための各ステート毎のエンベロープ目標値とエンベロープ変化速度が記憶されている。図5(C)では、アタック部(時間T0〜T1)では音量エンベロープ値は一定値を保ち、ループ部に入ると(時間T1以降)次第に音量エンベロープ値が減少する形状の音量エンベロープを示した。ただし、時間T1〜T2までと時間T2以降(ノートオフイベント受信後)とでは音量エンベロープ値の減衰速度が異なる。こうして生成される音量エンベロープの所定の時間における音量エンベロープ値がエンベロープ発生器(EG処理部8C)で読み出される所定の発音チャンネルのエンベロープ現在値として取得される。
さらに、取得した波形の音量エンベロープ(図5(B)参照)と波形メモリ音源8から読み出される音量エンベロープ(図5(C)参照)とを加算すると、図5(D)に示すような音量エンベロープ(音量レベル)が得られる。この音量レベルの所定の時間における音量エンベロープ値が発音チャンネルの「音量レベル現在値」として取得される(ステップS17参照)。
【0028】
こうして各発音チャンネル毎に「音量レベル現在値」を取得し、各チャンネル毎の「音量レベル」を相互に比較して「トランケートチャンネル」を決定する(図3のステップS19参照)。従来では、この「音量レベル現在値」ではなく、例えばエンベロープ発生器(EG処理部8C)で読み出される発音チャンネルのエンベロープ現在値等を比較して「トランケートチャンネル」を決定していたために、適切に発音チャンネルの割り当てを行うことができなかった。すなわち、図5(C)と図5(D)とを比較すると明らかなように、エンベロープ発生器(EG処理部8C)で読み出される所定の発音チャンネルの音量エンベロープ(図5(C))は実際に発音される楽音の音量エンベロープ(音量レベル)とは大きく異なる形状である。したがって、発音開始から所定の時間経過時の音量エンベロープ現在値を、エンベロープ発生器(EG処理部8C)で読み出される所定の発音チャンネルの音量エンベロープ(図5(C))から求めると、実際に発音される楽音の音量エンベロープ(音量レベル)が充分に反映されず、大きく異なる音量エンベロープ値が取得される。しかし、本発明では実際に発音される楽音の音量エンベロープ(音量レベル)を生成し、これに従う「音量レベル現在値」で「トランケートチャンネル」を選択するようにしたので、適切に発音チャンネルの割り当てを行うことができるようになっている。
【0029】
なお、上述したような発音チャンネル割り当て方法を電子楽器に適用した場合、電子楽器は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、その場合に、波形メモリ音源8等を1つの電子楽器本体内に内蔵したものに限らず、それぞれが別々に構成され、MIDIインタフェースや各種ネットワーク等の通信手段を用いて各構成部を接続するように構成されたものにも同様に適用できることはいうまでもない。また、パソコンとアプリケーションソフトウェアという構成であってもよく、この場合処理プログラムを磁気ディスク、光ディスクあるいは半導体メモリ等の記憶メディアから供給したり、ネットワークを介して供給するものであってもよい。
【0030】
【発明の効果】
本発明によれば、波形データの有する音量エンベロ−プ値と発音チャンネルから読み出した音量エンベロープ値とを合成して、発音チャンネルの「音量レベル現在値」を算出し、この「音量レベル現在値」に基づいて「トランケートチャンネル」を決定するようにしたので、発音チャンネル割り当ての際に楽音に不自然さを与える「トランケート処理」を行うことがなく、かつ、適切な発音チャンネルの割り当てを行うことができるようになる、という優れた効果を奏する。
【図面の簡単な説明】
【図1】 この発明に係る発音チャンネル割り当て方法を適用した電子楽器のハードウエア構成の一実施例を示すブロック図である。
【図2】 図1に示す電子楽器において実行される「ノートオンイベント処理」の一実施例を示すフローチャートである。
【図3】 図2に示す「ノートオンイベント処理」で実行される「トランケートチャンネル決定処理」の一実施例を示すフローチャートである。
【図4】 波形のエンベロープテーブルで記憶する音量エンベロープの一例を示した概念図である。
【図5】 発音チャンネルの「音量レベル現在値」の算出について説明するための図である。
【符号の説明】
1…CPU、2…リードオンリメモリ(ROM)、3…ランダムアクセスメモリ(RAM)、4…表示器、5…表示器スイッチ、6…ハードディスク、7…波形メモリ、8…波形メモリ音源、9…DAC、9A…サウンドシステム、10…MIDIインタフェース、11…演奏操作子、12…タイマ、1D…バスライン

Claims (2)

  1. 波形データを記憶した波形メモリから各発音チャンネル毎に波形データを読み出し、読み出した波形データに基づき生成される楽音信号に対して各発音チャンネル毎に更に音量エンベロープ付与制御を行う音源において、新たな楽音の発音が指示されたときに、該新たな楽音を割り当てる発音チャンネルを選定する発音割り当て方法であって、前記波形メモリに記憶された波形データは当該波形データ自体が音量変化するものであり、
    前記波形メモリに記憶された波形データの音量変化を示すエンベロープ情報を記憶した記憶手段を各発音チャンネル毎の前記波形データの発音開始からの経過時間により参照し、該エンベロープ情報に基づいて各発音チャンネルにおいて前記波形メモリから読み出されている波形データの現在の音量を示す模擬エンベロープ値情報を取得するステップと、
    各発音チャンネルで生成する楽音信号に対して付与される前記音量エンベロープの現在値を示す音量エンベロープ値情報を取得するステップと、
    各発音チャンネル毎に前記模擬エンベロープ値情報と前記音量エンベロープ値情報とを合成し、各発音チャンネル毎の音量現在値を算出するステップと、
    算出した各発音チャンネル毎の音量現在値に基づいて、前記新たな楽音を割り当てるべき発音チャンネルを選定するステップと
    を具備する発音チャンネル割り当て方法。
  2. 波形データを記憶する記憶手段であって、該記憶手段に記憶された波形データは当該波形データ自体が音量変化するものであるものと、
    前記記憶手段から各発音チャンネル毎に波形データを読み出し、読み出した波形データに基づき生成される楽音信号に対して各発音チャンネル毎に更に音量エンベロープ付与制御を行う音源と、
    前記記憶手段に記憶された波形データの音量変化を示すエンベロープ情報を記憶した記憶部を各発音チャンネル毎の前記波形データの発音開始からの経過時間により参照し、該エンベロープ情報に基づいて各発音チャンネルにおいて前記記憶手段から読み出されている波形データの現在の音量を示す模擬エンベロープ値情報を取得する第1のエンベロープ取得手段と、
    各発音チャンネルで生成する楽音信号に対して付与される前記音量エンベロープの現在値を示す音量エンベロープ値情報を取得する第2のエンベロープ取得手段と、
    各発音チャンネル毎に前記模擬エンベロープ値情報と前記音量エンベロープ値情報とを合成し、各発音チャンネル毎の音量現在値を算出する算出手段と、
    算出した各発音チャンネル毎の音量現在値に基づいて、前記新たな楽音を割り当てるべき発音チャンネルを選定する選定手段と
    を具備する発音チャンネル割り当て装置。
JP2000075691A 2000-03-17 2000-03-17 発音チャンネル割り当て方法及び装置 Expired - Fee Related JP3716701B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000075691A JP3716701B2 (ja) 2000-03-17 2000-03-17 発音チャンネル割り当て方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000075691A JP3716701B2 (ja) 2000-03-17 2000-03-17 発音チャンネル割り当て方法及び装置

Publications (2)

Publication Number Publication Date
JP2001265341A JP2001265341A (ja) 2001-09-28
JP3716701B2 true JP3716701B2 (ja) 2005-11-16

Family

ID=18593547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000075691A Expired - Fee Related JP3716701B2 (ja) 2000-03-17 2000-03-17 発音チャンネル割り当て方法及び装置

Country Status (1)

Country Link
JP (1) JP3716701B2 (ja)

Also Published As

Publication number Publication date
JP2001265341A (ja) 2001-09-28

Similar Documents

Publication Publication Date Title
JP3812328B2 (ja) 自動伴奏パターン発生装置及び方法
US7470855B2 (en) Tone control apparatus and method
EP3882906A1 (en) Electronic keyboard musical instrument and method of generating musical sound
US6576826B2 (en) Tone generation apparatus and method for simulating tone effect imparted by damper pedal
US8106287B2 (en) Tone control apparatus and method using virtual damper position
US7420113B2 (en) Rendition style determination apparatus and method
JPH11126070A (ja) 楽音生成方法
US7271330B2 (en) Rendition style determination apparatus and computer program therefor
US6066793A (en) Device and method for executing control to shift tone-generation start timing at predetermined beat
JP3716701B2 (ja) 発音チャンネル割り当て方法及び装置
US6169243B1 (en) Automatic performance apparatus with quick start by accelerated loading of setting data
US6040516A (en) Tone generation system using computer software and storage medium storing the computer software
JP3624780B2 (ja) 楽音制御装置
JP3409642B2 (ja) 自動演奏装置、自動演奏データ処理方法及び電子的情報記憶媒体
JP3758159B2 (ja) 音源制御プログラム
JP2002297139A (ja) 演奏データ変更処理装置
JP7332002B2 (ja) 電子楽器、方法及びプログラム
JP7124370B2 (ja) 電子楽器、方法及びプログラム
JP4186855B2 (ja) 楽音制御装置及びプログラム
JP3632744B2 (ja) 音生成方法
JP4106798B2 (ja) 音源装置
JP2005049497A (ja) 音源回路の制御プログラムおよび音源回路の制御装置
JPH0944160A (ja) 楽音生成方法
JP4218566B2 (ja) 楽音制御装置及びプログラム
JP3627590B2 (ja) 音生成方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041026

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050322

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050523

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: 20050809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050822

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3716701

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313532

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20090909

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100909

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100909

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110909

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120909

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130909

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees