以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図1は、この発明に係る楽音合成装置を適用した電子楽器のハードウエア構成例を示すブロック図である。ここに示す電子楽器は、演奏者による演奏操作子5の操作に伴い演奏進行に応じて供給される演奏情報(ノートオンイベントやノートオフイベントなどの演奏イベントデータ、ダイナミクス情報やピッチベンド情報あるいはビブラートスピード情報・ビブラートデプス情報などの各種コントロールデータを含む)に基づいて電子的に楽音を発生させたり、あるいは演奏進行順に順次に供給される予め作成済みの演奏情報に基づいて自動的に楽音を発生する楽音合成機能を有する。また、前記楽音合成機能の実行時においては、1音のうち音が連続する部分である持続音部(ボディ部とも呼ぶ)について、演奏情報に含まれるダイナミクスに基づき新たに使用すべき波形サンプルデータ(以下、単に波形データとも呼ぶ)の選択を行い、該選択された波形データに従って楽音を合成することにより、前記持続音部の楽音として特にビブラート奏法などの楽音を高品質に再現することのできるようにしている。こうした持続音部に対する楽音合成処理の詳細な説明については、後述する。
なお、この実施例に示す電子楽器はここに示す以外のハードウェアを有する場合もあるが、ここでは必要最小限の資源を用いた場合について説明する。また、音源としては、例えば様々な楽器毎の特有な奏法に対応する波形データとして、アタック部、リリース部、持続音部あるいはジョイント部などの1音についての一部区間において所定の奏法に対応した波形全体を記憶しておき(これを奏法モジュールと呼ぶ)、これらを時系列的に複数組み合わせることで1音又は連続する複数音の楽音を形成することにより、自然楽器固有の各種奏法若しくはアーティキュレーションによる音色変化を忠実に表現した奏法などのリアルな再現とその制御を目的としたAEM(Articulation Element Modeling)と称する楽音波形制御技術を用いた音源(所謂AEM音源)を用いた場合を例にして説明する。
図1に示した電子楽器はコンピュータを用いて構成されており、そこにおいて、上記したような楽音合成機能を実現する各種の楽音合成処理(後述の図4に示す「ビブラートボディ合成処理」など)は、コンピュータが各々の処理を実現する所定のプログラム(ソフトウエア)を実行することにより実施される。勿論、これらの各処理はコンピュータソフトウエアの形態に限らず、DSP(ディジタル・シグナル・プロセッサ)によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。
本実施例に示す電子楽器は、マイクロプロセッサユニット(CPU)1、リードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3からなるマイクロコンピュータの制御の下に各種の処理が実行されるようになっている。CPU1は、この電子楽器全体の動作を制御するものである。このCPU1に対して、通信バス1D(例えば、データ及びアドレスバスなど)を介してROM2、RAM3、外部記憶装置4、演奏操作子5、パネル操作子6、表示器7、音源8、インタフェース9がそれぞれ接続されている。更に、CPU1には、タイマ割込み処理(インタラプト処理)における割込み時間や各種時間を計時するタイマ1Aが接続されている。すなわち、タイマ1Aは時間間隔を計数したり、所定の演奏情報に従って楽曲を演奏する際の演奏テンポを設定したりするためのテンポクロックパルスを発生する。このテンポクロックパルスの周波数は、パネル操作子6の中の例えばテンポ設定スイッチ等によって調整される。このようなタイマ1AからのテンポクロックパルスはCPU1に対して処理タイミング命令として与えられたり、あるいはCPU1に対してインタラプト命令として与えられる。CPU1は、これらの命令に従って各種処理を実行する。
ROM2は、CPU1により実行される各種プログラム、あるいは波形メモリとして様々な楽器毎の特有な奏法(本実施例では、特に周期的なピッチ及び音色の時間変化を伴うビブラート奏法など)に対応する波形データ等の各種データを格納するものである。RAM3は、CPU1が所定のプログラムを実行する際に発生する各種データを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを記憶するメモリ等として使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。外部記憶装置4は、自動演奏の元となる演奏情報や奏法に対応する波形データなどの各種データや、CPU1により実行あるいは参照される「ビブラートボディ合成処理」(図4参照)などの各種制御プログラム等を記憶する。前記ROM2に制御プログラムが記憶されていない場合、この外部記憶装置4(例えばハードディスク)に制御プログラムを記憶させておき、それを前記RAM3に読み込むことにより、ROM2に制御プログラムを記憶している場合と同様の動作をCPU1にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、外部記憶装置4はハードディスク(HD)に限られず、フレキシブルディスク(FD)、コンパクトディスク(CD)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の着脱自在な様々な形態の外部記録媒体を利用する記憶装置であってもよい。あるいは、半導体メモリなどであってもよい。
演奏操作子5は楽音の音高を選択するための複数の鍵を備えた、例えば鍵盤等のようなものであり、各鍵に対応してキースイッチを有しており、この演奏操作子5は演奏者自身の手弾きによる楽音のマニュアル演奏のために使用できるのは勿論のこと、自動演奏対象とする予め用意されている演奏情報を選択するなどの入力手段として使用することもできる。勿論、演奏操作子5は鍵盤等の形態に限らず、楽音の音高を選択するための弦を備えたネック等のような形態のものなど、どのようなものであってもよいことは言うまでもない。パネル操作子(スイッチ等)6は、例えば自動演奏対象とする演奏情報を選択するための演奏情報選択スイッチ、演奏の際に使用する音色・効果などの各種演奏パラメータを設定する設定スイッチ等、各種の操作子を含んで構成される。勿論、音高、音色、効果等を選択・設定・制御するために数値データ入力用のテンキーや文字データ入力用のキーボード、あるいは表示器7に表示された各種画面の位置を指定するポインタを操作するマウスなどの各種操作子を含んでいてもよい。表示器7は例えば液晶表示パネル(LCD)やCRT等から構成されるディスプレイであって、上記スイッチ操作に応じた各種画面を表示するのは勿論のこと、演奏情報や波形データなどの各種情報あるいはCPU1の制御状態などを表示することもできる。演奏者は該表示器7に表示されるこれらの各種情報を参照することで、演奏の際に使用する各種演奏パラメータの設定や自動演奏曲の選択などを容易に行うことができる。
音源8は例として複数のチャンネルで楽音信号の同時発生が可能であり、通信バス1Dを経由して与えられた演奏情報を入力し、この演奏情報に基づいて楽音を合成して楽音信号を発生する。ここに示す電子楽器においては、演奏情報内のダイナミクス情報に対応する波形データがROM2や外部記憶装置4などから読み出されると、該読み出された波形データはバスラインを介して音源8に与えられて適宜バッファ記憶される。そして、音源8ではバッファ記憶された波形データを所定の出力サンプリング周波数に従い出力する。この音源8から発生された楽音信号は、図示しない効果回路(例えばDSP(Digital Signal Processor))などにより所定のディジタル信号処理が施され、該信号処理された楽音信号はサウンドシステム8Aに与えられて発音される。
インタフェース9は該電子楽器と外部の演奏情報生成機器(図示せず)などとの間で各種情報を送受するための、例えばMIDIインタフェースや通信インタフェースなどである。MIDIインタフェースは、外部の演奏情報生成機器(この場合には、他のMIDI機器等)からMIDI規格の演奏情報を当該電子楽器へ供給したり、あるいは当該電子楽器からMIDI規格の演奏情報を他のMIDI機器等へ出力するためのインタフェースである。他のMIDI機器はユーザによる操作に応じてMIDI形式のデータを発生する機器であればよく、鍵盤型、ギター型、管楽器型、打楽器型、身振り型等どのようなタイプの操作子を具えた(若しくは、操作形態からなる)機器であってもよい。通信インタフェースは、例えばLANやインターネット、電話回線等の有線あるいは無線の通信ネットワーク(図示せず)に接続されており、概通信ネットワークを介して、外部の演奏情報生成機器(この場合には、サーバコンピュータ等)と接続され、当該サーバコンピュータから制御プログラムや演奏情報などの各種情報を該電子楽器に取り込むためのインタフェースである。すなわち、ROM2や外部記憶装置4等に制御プログラムや演奏情報などの各種情報が記憶されていない場合に、サーバコンピュータから各種情報をダウンロードするために用いられる。クライアントとなる電子楽器は、通信インターフェース及び通信ネットワークを介してサーバコンピュータへと制御プログラムや演奏情報などの各種情報のダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求された各種情報を通信ネットワークを介して本電子楽器へと配信し、本電子楽器が通信インタフェースを介して各種情報を受信して外部記憶装置4等に蓄積することにより、ダウンロードが完了する。
なお、上記インタフェース9をMIDIインタフェースで構成した場合、該MIDIインタフェースは専用のMIDIインタフェースを用いるものに限らず、RS232-C、USB(ユニバーサル・シリアル・バス)、IEEE1394(アイトリプルイー1394)等の汎用のインタフェースを用いてMIDIインタフェースを構成するようにしてもよい。この場合、MIDIイベントデータ以外のデータをも同時に送受信するようにしてもよい。MIDIインタフェースとして上記したような汎用のインタフェースを用いる場合には、他のMIDI機器はMIDIイベントデータ以外のデータも送受信できるようにしてよい。勿論、演奏情報に関するデータフォーマットはMIDI形式のデータに限らず、他の形式であってもよく、その場合はMIDIインタフェースと他のMIDI機器はそれにあった構成とする。
図1に示した電子楽器においては、演奏者による演奏操作子の操作に伴い発生される演奏情報、あるいは予め用意されたSMF(Standard MIDI File)形式等の演奏情報に基づいて楽音を連続的に発生させることのできる楽音合成機能を有すると共に、該楽音合成機能の実行時において、演奏者による演奏操作子5の操作に伴う演奏進行に応じて供給される演奏情報(あるいは、シーケンサーなどから演奏進行順に順次に供給される演奏情報)に含まれるダイナミクス情報に基づいて、持続音部について新たに使用すべき波形データの選択を行い、該選択された波形データに従って楽音を合成するようにしている。そこで、こうした楽音合成機能の概要について、図2を用いて説明する。図2は、当該電子楽器が有する楽音合成機能を説明するための機能ブロック図である。図2において、図中の矢印はデータの流れを表すものである。
楽音合成機能の開始に伴い、まず奏法合成部J3に対して入力部J2から演奏情報が演奏進行順に順次に供給される。入力部J2としては、演奏者による演奏操作に応じて適宜に演奏情報を発生する演奏操作子5や、予めROM2等に記憶した演奏情報を演奏進行順に供給するシーケンサー(図示せず)などの入力装置がある。こうした入力部J2から供給される演奏情報は、ノートオンイベントやノートオフイベント(これらを総称してノート情報と呼ぶ)などの演奏イベントデータと、ダイナミクスやピッチベンドあるいはビブラートスピード・ビブラートデプスなどのコントロールデータとを少なくとも含む。すなわち、入力部J2を介して入力されるダイナミクス情報には、演奏操作子5の演奏操作に基づきリアルタイムに発生されるもの(例えば、鍵押圧時のアフタータッチセンサ出力データなど)もあれば、予め記憶又はプログラムされた自動演奏情報に基づくものもある。
奏法合成部J3では演奏イベントデータやコントロールデータなどを受け取ると、例えばノート情報に対応する1音をアタック部、持続音部(ボディ部)、リリース部などの一部区間毎に区分したり、持続音部はどの時間から始まるかを特定したり、あるいはコントロールデータとして受け取った情報を用いてゲインやピッチの情報を生成したりするなどして、楽音を合成するために必要とされる各種情報を含む「奏法情報」を生成する。また、その際に、奏法合成部J3はデータベースJ1(波形メモリ)にあるデータテーブルなどを参照して、例えば入力されたダイナミクス情報やピッチ情報に対応して持続音部に適用するのに最適なデータとしてビブラートユニット(後述する図3参照)を選択し、該選択したビブラートユニットを入力されたビブラートスピード・ビブラートデプスの各情報に基づいてさらに波形の加工を行うよう、こうした波形の加工に関する情報を該当する「奏法情報」に付加する。このようなビブラートボディに係る楽音合成処理については、後述する。楽音合成部J4では奏法合成部J3が生成した前記「奏法情報」に基づき、データベースJ1から使用する波形データなどを適宜に読み出して、楽音合成を行うことで楽音が出力される。すなわち、楽音合成部J4では、「奏法情報」に従って波形データの切り替えを行いながら楽音合成を行う。
ここで、上述したデータベースJ1(波形メモリ)に記憶されるデータのうち、持続音部に適用する波形データのデータ構造について、図3を用いて説明する。図3(a)はデータベースにおける持続音部に適用する波形データのデータ構造を示す概念図であり、図3(b)はユニット単位に記憶される波形データの一実施例を示す概念図である。なお、図中において各波形データ下部には便宜的に波形番号(ユニットAについてA1〜A8、ユニットBについてB1〜B8、ユニットCについてC1〜C8)を付してある。
データベースJ1においては、持続音部に適用する波形データとそれに関連するデータ群とを「ユニット」として記憶している。1つの「ユニット」は、楽音合成時において1つのかたまりとして処理できる波形単位である。図3(a)に示すように、各「ユニット」はダイナミクス値にそれぞれ対応付けられており、こうしたダイナミクス値に対応付けられた複数のユニットを1組として、各音高(図では便宜上C3、D3、E3のみ示している)毎に少なくとも1組ずつ記憶している。例えば、1つの名目的な音色(ピアノ等の楽器音色、つまり音色情報で選択可能な1つの音色)について、35種の音高(音階音)のそれぞれに対応して、20種のダイナミクス値に対応付けられたユニットを記憶するものとすると、データベース全体では当該音色について700個(35×20)のユニットを記憶することになる。この「ユニット」として記憶される波形データは、同じ音高であっても各ダイナミクス値に対応する各ユニットのそれぞれが異なる音色上の特徴を持つ楽音波形(つまり波形形状が異なる楽音波形)からなるものとすることができる。なお、個別の音高(音階音)毎にこのようなユニットをそれぞれ記憶することなく、2又はそれ以上の音高(例えばC3とC#3など)のグループに対応してこのようなユニットを記憶するようにしてもよい。
図3(b)に示すように、データベースJ1ではビブラート1周期(図示において一点鎖線で区切られた区間A〜Cのそれぞれ)にわたる複数周期からなる波形データ(ビブラート付与された波形データ)のうち、多様に音色変化する複数の一部波形を1「ユニット」(これをビブラートユニットと呼ぶ)として使用する(記憶する)。ここでは、ビブラート奏法の楽音を合成する場合において、ダイナミクス違いの各ユニットは1音の演奏として互いに接続して合成される可能性もあることを考慮して、ダイナミクスが異なること以上の音質の違いがないことが望ましい。よって、データベースの元とする波形データの録音時には、音量が増加あるいは減少するような演奏をもとにして波形データを生成するようにするとよい。ここではその一例として、音量を減少させながらビブラート奏法されている演奏を元に波形データを生成したものを示している。
この実施例に示すビブラートユニットの波形データは、(オリジナルのビブラート波形同様に)ビブラート1周期の間で音色が微妙に又は複雑に周期的に時間変化している代表的な波形データのうち(勿論その各周期毎の波形ピッチも図示のように変化(ビブラート)している)、例えばビブラート1周期の中でピッチが最大となってからピッチが最小となるまでの区間を音色が変化している代表的な領域として採用し、前記区間内にある代表的な音色の波形データ(区間AについてA3〜A7、区間BについてB3〜B7、区間CについてC3〜C7)を1つのビブラートユニットの波形データとして記憶する。すなわち、名目的な音色に対応付けられた所定の基準ピッチからのピッチずれが0セント(つまりピッチずれなし)から始まるビブラート1周期の波形データのうち、中央付近(ビブラート半周期辺り)のピッチずれの最も小さい波形データ(基準波形)を基準として、該基準波形の音色と音色差の小さいものから順に波形データを取り出し、該取り出した複数の波形データと基準波形とを1つのビブラートユニットに記憶する。このようにすると、ピッチが同じであってかつ音色が同じものについては、代表的な波形が1つのみビブラートユニットに記憶されることになる。
図3(b)に示す例では、ビブラートユニットAとして波形番号A1とA5、波形番号A2とA4、波形番号A6とA8の波形についてはピッチ及び音色が似ていることから、波形番号A1,A2,A8の波形については記憶しないでよい。したがって、この例ではビブラートユニットAにおいて波形番号A5の波形データを中心に5つの多様に変化する音色の波形データが存在するのみであり、従来と比べてデータ量が少なくて済むという利点がある。このようなビブラートユニットが、上述のように、同一の名目的な音色(例えばバイオリンのビブラート奏法のような奏法音色)につき、各種音高毎に複数のダイナミクス値に対応してそれぞれ記憶されている。なお、この明細書では1ビブラートユニットの波形データとして記憶された複数の波形のうち、ピッチずれが0セント(ピッチずれなし)又は0セントに最も近い波形データを「基準波形」と呼んで他の波形データと区別する。この実施例では、波形番号「A5」が付された波形データが基準波形に該当する。
上記データベースJ1において、各「ユニット」毎に波形データと共に付加的に記憶されるデータ群としては、例えばその記憶しているオリジナルの波形データのダイナミクス値やピッチ情報(正規の音高ピッチ及びそれに対するピッチずれを示す情報)などの情報がある。さらに、「ビブラートユニット」においては、ビブラート1周期の情報としてユニットの長さや平均パワー値などの情報が記録される。こうしたデータ群は、「データテーブル」として一括管理できるようにしている。
なお、ビブラートユニット内の各波形データは1周期波形に限らず、複数周期にわたる波形を記憶するようにしてもよい。また、音量が減少する又は増加するなど変化する一連のビブラート波形からではなく、音量一定の一連のビブラート波形から適宜の波形データを取得して記憶するようにしてもよい。あるいは、複数の波形を集めた波形セットから適宜の波形データを取得して記憶するようにしてあってもよい。このような場合、波形セットの波形はビブラート波形に限らない。また、基準波形は0セントでなくてもよい。
次に、「ビブラートボディ合成処理」について、図4を用いて説明する。図4は、「ビブラートボディ合成処理」の一実施例を示したフローチャートであり、当該処理は、演奏開始と共に該電子楽器におけるCPU1により割り込み処理として例えば1ms(ミリ秒)毎に実行される。この「ビブラートボディ合成処理」は、演奏者の操作に応じてあるいは演奏情報などに応じて、楽音の持続音部を「ビブラートボディ」つまり1つの楽音の発音中にそのピッチ及び音色が周期的に微妙に又は複雑に変化する特性で楽音を合成するよう指示されたモードにおいて実行される処理である。なお、楽音のアタック部の波形は、図示しないアタック部波形合成処理によって別途行われるようになっており、このアタック部の波形合成処理に引き続いて、ここに示す「ビブラートボディ合成処理」が行われる。「ビブラートボディ合成処理」においては、ノート情報によって発生すべき楽音の音高(ノート)が指定され、該音高と入力ダイナミクス値に応じて選択された「ビブラートユニット」の波形データを自動的に再生することでビブラートの付与された楽音波形の生成を行う。従って、自動演奏データに基づきビブラート音を発生するような場合に有利である。
なお、この「ビブラートボディ合成処理」においては、追って詳しく説明するように、「ビブラートユニット」に基づき再生されるビブラート音のビブラートスピード及びビブラートデプスはそれぞれの制御情報によって可変制御することができる。勿論、ピッチベンド情報に応じて当該ビブラート音全体をピッチシフトすることができることは言うまでもない。また、この「ビブラートボディ合成処理」では、入力ダイナミクス値によるユニット選択は、所定時間間隔を計測することによって行われるのではなく、「ビブラートユニット」の1サイクル分(例えばビブラート1周期分)の再生が終わるごとに行われる。すなわち、「ビブラートユニット」の1サイクル分の再生中は、入力ダイナミクス値の変化はユニット選択に効力を及ぼさない。
図4において、ステップS1では、現在合成中の波形(アタック部波形)がアタック部の終端が到来したか否か、又はアタック部の終端が到来した後の持続音部の波形合成が既に開始されており、現在合成中の持続音部波形として使用されているビブラートユニットの終端に到達したか否かを判定する。アタック部の終端に到達していない又は現在使用中のビブラートユニットの終端に到達していないと判定した場合には(ステップS1のNO)、当該処理を終了し、次の割り込みまでこの図4に示した処理が行われない。つまり、アタック部の終端のタイミングまでの間においてはアタック部の波形データに基づきアタック部の楽音合成が行われ、この「ビブラートボディ合成処理」は実質的には行われない。また、アタック部以降においては、ビブラートユニットの1サイクル分の波形データの再生途中においては、該再生中のビブラートユニットを変更する処理を行うことなく、次の割り込み時刻(1ms後)まで待つ。したがって、その間については入力ダイナミクス値に応じたビブラートユニットの切り替えが行われない。
他方、アタック部の終端が到来した又は現在使用中のビブラートユニットの終端が到来した場合には(ステップS1のYES)、現在の最新の入力ダイナミクス値を取得する(ステップS2)。ステップS3は、予め取得済みのノート情報と前記取得した入力ダイナミクス値に応じてデータベースを参照し、データベースから該当するビブラートユニットを特定する(詳しくは後述する図6参照)。ステップS4は、特定されたビブラートユニットの波形データの時間的な配置位置やデータ読み出し順などを決定すると共に(詳しくは後述する図5及び図7参照)、ビブラートユニットを入力されたピッチベンド情報、ビブラートスピード及びビブラート深さなどの情報に基づき加工して、奏法情報を生成する。ここで、加工とは、例えば入力されたピッチベンド情報に応じて当該選択されたビブラートユニットの波形ピッチをまるごとピッチシフトしたり、入力されたビブラートスピード情報に応じてビブラート周期を増/減する設定を行ったり、あるいは入力されたビブラートデプス情報に応じてビブラート深さを設定したりするなどである。こうしたビブラート周期の増/減及びビブラート深さの設定については、後述する(図9及び図10参照)。ステップS5は、生成された奏法情報に従って楽音を合成する。
なお、図4に示した例では、ステップS4及びS5の処理は、ステップS1がYESに分岐したときに1回だけ実行されるようになっており、入力ピッチベンド情報、ビブラートスピード及びビブラートデプスなどの情報の取り込みは入力ダイナミクス値の取り込みと同じタイミングで行われる。しかし、これに限らず、1ms又はその他適宜の割込み周期で、入力されたピッチベンド情報、ビブラートスピード及びビブラートデプスなどの情報の変化を随時チェックし、該情報の変化に応じてビブラートの設定変更を随時行うようにしてもよい。その場合は、例えば、図4において、アタック部の終端に達した後でかつビブラートユニットの再生中に、入力ピッチベンド情報、ビブラートスピード及びビブラートデプスなどの情報が変化したか否かをチェックするようにステップS1の処理を変更し、入力ピッチベンド情報、ビブラートスピード及びビブラートデプスなどの情報が変化したならばステップS4を実行するように、処理の流れを一部変更すればよい。
次に、上述した「ビブラートボディ合成処理」(図4参照)において実行する「ユニット内波形選択処理」について説明する。図5は、「ユニット内波形選択処理」の一実施例を示すフローチャートである。
ステップS11は、入力されたビブラート速度指定(ビブラートスピード値:vibSpeed)に従って、ビブラートユニットの全長つまり当該ビブラートユニットを適用してのビブラート音の合成時間長(ユニット合成長:UnitL)を決定する。このユニット合成長の決定は、予め用意されたビブラートスピード毎にユニット合成長が対応付けられた所定のテーブル(unitL〔vibSpeed〕)等による。ステップS12は、ビブラート深さ指定(ビブラートデプス値:vibDepth)に従って、楽音合成に使用する波形の範囲数(nUseHT)を決定すると共に、またユニット合成長を実現するために必要とされる配置する波形数(nPosHT)を決定する。ここで、「nNumHT」は当該ビブラートユニットが持つ波形数である。すなわち、ビブラートデプス情報に従って、ユニット内の波形データのうち楽音合成に使用すべき波形データの数は変化する。ステップS13は、初期設定を行う。初期設定としては、使用する波形範囲のうち最初の波形とするスタート波形(startHT)、使用する波形範囲のうち最後の波形とするエンド波形(endHT)をそれぞれ設定すると共に、使用する波形データの波形番号(HTuse)を基準波形の波形番号に、変数nを「0」に、変数addを「-1」にそれぞれ初期セットする。
ステップS14は、変数nが前記決定した配置する波形数(nPosHT)よりも小さいか否かを判定する。変数nが大きい場合には(ステップS14のNO)、当該処理を終了する。他方、変数nが小さい場合には(ステップS14のYES)、n個目に配置する波形のビブラートユニット先頭からの位置(pos〔n〕)をユニット合成長(UnitL)及び配置する波形数(nPosHT)に基づき決定する(ステップS15)。ここでは、時間的に等間隔に各波形を配置するように、ビブラートユニット先頭からの位置が順次に決定されるようにしている。ステップS16は、n個目に配置する波形として、ビブラートユニット内の波形のうち使用する波形として選択された中から1つの波形番号(tim〔n〕)を決定する。そして、ステップS17は、変数HTuseがスタート波形(startHT)であるならば変数addに「+1」をセットし、変数HTuseがエンド波形(endHT)であるならば変数addに「-1」をセットする。ステップS18は、変数nに「1」を加算し、また使用する波形データの波形番号(HTuse)に変数addを加算する。上記ステップS15〜ステップS18の処理を終了すると、上記ステップS14の処理に戻る。
ここで、上記「ビブラートボディ合成処理」(図4参照)による持続音部(ボディ部)におけるビブラート奏法の楽音合成手順について、図6〜図8を用いて順に説明する。図6は、「ビブラートボディ合成処理」による楽音合成手順のうち、ユニット選択処理(図4のステップS3参照)について模式的に説明するための概要図である。ここで、図6(a)は入力ダイナミクス値の時間変化を、図6(b)は入力ダイナミクス値に対応してデータベース内に記憶されているビブラートユニットの存在を、図6(c)は入力ダイナミクス値に応じて選択される各ビブラートユニットの時系列的組み合わせを、それぞれ例示したものである。なお、この例では、音高「C3」に対応する楽音を生成するものとし、波形生成前に当該発生すべき音高「C3」に対応する楽音に関してのノート情報を取得済みであることは言うまでもない。
図6に示すように、例えば時刻aがアタック部の終端である場合、そのときの入力ダイナミクス値を取得し、既に取得済みの音高「C3」に関するノート情報と前記新たに取得した入力ダイナミクス値とに基づき、データベースに記憶された該当音高「C3」に対応付けられた複数のビブラートユニット(ここではユニットA〜ユニットFの6個のユニット)の中から、前記取得した入力ダイナミクス値に対応するビブラートユニットBを選択して奏法情報を生成する。該選択した奏法情報に基づいてビブラートユニットB内の複数の波形データを適宜に繰り返し読み出して(詳しくは後述する)、ビブラート奏法での持続音部の楽音波形を生成する。なお、この際にビブラートユニットB内の複数の波形をクロスフェード合成するだけでなく、先行するアタック部の終端の波形と後続する該ビブラートユニットBの最初の波形とを適宜クロスフェード合成するとよい。波形をクロスフェード合成すると、滑らかに波形を切り替えることができる。
その後、時刻bで新たな入力ダイナミクス値を取得すると、該当する音高「C3」についての該新たに取得した入力ダイナミクス値に対応するビブラートユニットEをデータベースから選択して奏法情報を生成する。該選択した奏法情報に基づいてビブラートユニットE内の波形データを適宜に繰り返し読み出して、ビブラートユニットBにより実現される持続音部に後続する楽音波形を生成する。さらに時間が経過して時刻cにおいて新たな入力ダイナミクス値を取得すると、該当する音高「C3」のデータベースから該入力ダイナミクス値に対応するビブラートユニットDを選択して奏法情報を生成する。該選択した奏法情報に基づいてビブラートユニットD内の波形データを適宜に繰り返し読み出し、ビブラートユニットEにより実現される持続音部に後続する楽音波形を生成する。このようにして、「ビブラートボディ合成処理」では、入力されたダイナミクス情報に応じて使用するビブラートユニットを切り替え、ビブラートユニット内の波形データに従ってビブラート奏法された持続音部の楽音を合成するようにしている。なお、各ビブラートユニット内の複数の波形をクロスフェード合成するだけでなく、先行するビブラートユニットの最後の波形と後続する該ビブラートユニットの最初の波形についても適宜クロスフェード合成することは言うまでもない。また、クロスフェード合成を行う期間(所謂クロスフェード長)は例えば25ms(ミリ秒)など適宜の時間であってよく、またこれに限らずもっと短くてもよいし、長くてもよい。
図7は、「ビブラートボディ合成処理」による楽音合成手順のうち、ユニット内波形選択処理(図5参照)について模式的に説明するための概要図である。ただし、この図7では、入力されるビブラートスピード及びビブラートデプスの各情報がとり得る値を「0〜127」までの整数とし、またユニット内の波形数が「5」であり、基準波形が波形番号「A5」の波形である図3(b)に示したような区間Aに対応するビブラートユニットを用いた場合を例に説明する。図8は、「ビブラートボディ合成処理」により合成されるビブラート奏法の楽音波形の一実施例を示す概念図である。なお、比較のため、図7及び図8では便宜的に従来例も図示している。
上述した図5に示すユニット内波形選択処理に従うと、ビブラートデプス情報が最大値「127(最も深い場合に相当)」で入力されている場合には、ユニット内の波形データのうち使用する波形数(nUseHT)が「5」に、配置する波形数(nPosHT)が「8」にそれぞれ決定される(ステップS12参照)。また、スタート波形(startHT)は「3」、エンド波形(endHT)は「7」となる(ステップS13参照)。そして、まず最初に使用すべき波形データ(n=0個目に配置する波形)として基準波形である波形番号「A5」の波形が選択されて、これを適宜の時間位置に配置する(ステップS15及びS16参照)。その後、降順に波形番号「A4」、「A3」の波形データを使用すべき波形データに選択し、これを適宜の時間位置に配置する。スタート波形である波形データ「A3」まで選択済みである場合には、今度は逆に昇順に波形番号「A4」、「A5」、「A6」、「A7」の各波形データを使用すべき波形データとして順次に選択し、それぞれを適宜の時間位置に配置する。エンド波形である波形データ「A7」まで選択済みである場合には、再度降順に波形番号の波形データを順次に選択し、適宜の時間位置に配置する。ここでは、配置する波形数は8個に決定されていることから、波形番号「A6」の波形データを使用する波形データの最後として適宜の時間位置に配置する。このようにして、波形番号「A5」、「A4」、「A3」、「A4」、「A5」、「A6」、「A7」、「A6」の計8個の波形データが順に読み出されるようにして配置されることになる(図8(a)参照)。すなわち、楽音合成時においては波形が実際に存在しない「A1」「A2」「A8」の位置に対して、それぞれ「A5」「A4」「A6」を代わりに使用する。
図7において矢印で図示するように、こうして配置された波形データは、ユニット内において基準波形を読み出し開始データとして、該基準波形に近い順から隣接する波形データを所定の順に降順又は昇順に交互に繰り返しながらあたかも往復(オルタネート)するようにして繰り返し読み出し制御されるようになっている。こうしたデータの読み出し制御は、ユニット内の各波形データを所定の読み出し順に従って最初から最後まで読み出し終えると、再度前記読み出し順に従って最初の波形データに戻って読み出しを開始する所謂「ループ読み出し」制御とは異なるデータの読み出し制御方法であり、この明細書では上記した読み出し制御方法を「オルタネート(往復)読み出し」制御と呼ぶ。なお、前記ユニットから読み出された波形データ同士をクロスフェード合成する場合など、同じ波形データを繰り返し使用するような場合には、従来知られているように、該波形データの先頭(例えば先頭アドレス)に常に戻るようにして、波形を繰り返し読み出しながら波形合成を行うことは言うまでもない(所謂1波ループクロスフェード方式)。
本発明に係る楽音合成装置によると、音量を変化させながら楽音を合成する場合における別のユニット内の波形データへと遷移したときの音色の不連続性を、音量を増加する場合と音量を減少する場合とで均一に分散することができる。すなわち、図8(a)に示すように、データベースとして記憶した際に利用した元波形(オリジナルのビブラート波形)と同じような減衰するダイナミクスの楽音を合成する場合には、ユニットの境目である波形番号A6からB5、B6からC5への波形遷移といったように、元波形上での約ビブラート1周期分離れた位置の波形が合成時に隣接する。一方、図8(b)に示すように、データベースとして記憶した際に利用した元波形(オリジナルのビブラート波形)と逆に増加するダイナミクスの楽音を合成する場合には、ユニットの境目である波形番号C6からB5、B6からA5への波形遷移といったように、元波形上での約ビブラート1周期分離れた位置の波形が合成時に隣接する。これに対して、従来の場合においては、データベースと同じ減衰するダイナミクスの楽音を合成した場合には、ユニットの境目で波形番号A8からB1への波形遷移といったように元波形上で隣接していた音色の波形が合成時に隣接するので音色変化に変わりないが(図8(a)参照)、反対にデータベースとは逆の増加するダイナミクスの楽音を合成した場合には、ユニットの境目で波形番号B8からA1といったように元波形上において約ビブラート2周期分も離れた位置にある波形が合成時に隣接することになって大きな音色差が生ずる(図8(b)参照)。
このように、本発明における楽音合成装置によっては、データベースと同じようなダイナミクスの動き(ダイナミクス減少又は増加)の楽音を合成する場合と、データベースとは逆のダイナミクスの動きの楽音を合成する場合とで、同じ程度に(元波形上での)離れた位置にある音色を隣接させて楽音合成することになるので、ユニットが変わるときに生ずる音色の不連続性を、同じユニットを用いても音量を増加する場合と音量を減少する場合とで均一に分散することができるようになる。そのため、徐々に音量が増加あるいは減少する複数周期分のビブラート波形を実際に楽器を使用して1回演奏して録音するだけで、稠密で互いに相性のよいダイナミクス違いのユニットを生成することができ、従来のようにダイナミクス違いの数に相当するだけダイナミクス一定での演奏を何回も繰り返し行ってダイナミクス違いのユニットを複数生成しなければならないといった手間を省くことができる。さらには、ユニットの段階が粗くなる又は不均一になりやすい、ユニット相互の音色連続性が損なわれ易いなどといった従来見られた不都合がなく有利である。
一方、一定のダイナミクスの楽音を合成する場合には、1つのユニットを繰り返し用いることから、ユニットの境目では例えばB6からB5への波形遷移といったように元波形上で隣接する位置にある波形が楽音合成時においても隣接することになる。この場合、従来では例えばユニットBを用いる場合に波形番号B8からB1への波形遷移といったように元波形上で約ビブラート1周期離れた位置の波形が楽音合成時に隣接することになる。したがって、ダイナミクス一定の場合であっても、楽音の持続音部において音色の不連続感を発生させることのない、音色の周期的な時間変化特性をもつ高品質な楽音を合成することができるようになる。
次に、「ビブラートボディ合成処理」(図4参照)による楽音合成手順のうち波形加工処理について、波形加工処理例としてビブラートスピードを加工する場合について図9を用いて、ビブラートの深さを加工する場合について図10を用いてそれぞれ具体的に説明する。
図9は、ビブラートスピードを加工する場合のビブラートユニットに対する加工手法を模式的に説明するための図である。図9(a)は予め取得済みのノート情報と取得した入力ダイナミクス値に応じて選択された元のビブラートユニットを示し、この元のビブラートユニットをそのまま再生した場合が基本のビブラートスピードであるとする。図9(b)はビブラートスピードをそれよりも遅くする場合の波形合成例を示し、図9(c)はビブラートスピードをそれよりも速くする場合の波形合成例を示す。図9(a)においては、理解しやすくするために、元のビブラートユニットにおける波形データが持つオリジナルの振幅エンベロープ及びピッチ変動状態も図示している。そして、図9(b)、(c)には、参考のために、ビブラートスピードの増/減調整に伴って時間軸方向に伸縮される振幅エンベロープ及びピッチ変動状態も示されている。
図9(a)に示す例では、元のビブラートユニットが波形番号A3〜A7の5個の波形データ(基準波形をA5とする)からなる例を示しており、各区間の波形データ(A3〜A7)が所定の時間間隔で順次に切り替えられ、かつ、複数周期づつ繰り返して読み出され、かつ、隣り合う区間の波形データ同士がクロスフェード合成される。なお、この場合、前述のように、1区間の波形データは、典型的には1周期波形からなるが、それに限らず、複数周期波形又は1周期未満の波形でもよい。ビブラートスピードを遅くする(ビブラート周期を長くする)場合は、図9(b)に示すように、ビブラートユニットを構成する各区間の波形データ(A3〜A7)の順次切り替えの時間間隔を広くしてクロスフェード合成する。反対に、ビブラートスピードを速くする(ビブラート周期を短くする)場合は、図9(c)に示すように、ビブラートユニットを構成する各区間の波形データ(A3〜A7)の順次切り替えの時間間隔を狭くしてクロスフェード合成する。なお、ビブラートユニット中のすべての区間の波形データ(A3〜A7)を使用したのでは、望みの短いビブラート周期が得られない場合は、適当な区間の波形データを間引きすればよい。
なお、合成される波形のピッチと振幅エンベロープは、元のビブラートユニットが持つものをそのまま使用してもよい。あるいは、図9(b)、(c)に示したような時間軸伸縮制御された振幅エンベロープ及びピッチ変動エンベロープを別途生成し、この生成した振幅エンベロープ及びピッチ変動エンベロープに従って、上記クロスフェード合成する波形データのピッチと振幅を更に制御するようにしてもよい。このようなピッチ及び振幅の時間軸伸縮制御は、本出願人が提案済の公知技術を使用することで実現できるので、詳細説明は省略する。
図10は、ビブラートデプスを加工する場合のビブラートユニットに対する加工手法を模式的に説明するための図である。図10(a)に予め取得済みのノート情報と取得した入力ダイナミクス値に応じて選択された元のビブラートユニットを示し、この元のビブラートユニットをそのまま再生した場合が基本のビブラート深さであるとする。図10(b)はビブラートデプスをそれよりも浅くした場合を示し、図10(c)はビブラートデプスをそれよりも深くした場合を示す。なお、この図10においても、元のビブラートユニットが波形番号A3〜A7の5個の波形データからなる例を示しており、また振幅エンベロープ及びピッチ変動状態をあわせて図示している。
ビブラートユニットの持つビブラートの深さよりビブラートの深さを浅くする場合には、浅いピッチずれに相当する区間の波形データのみをビブラートユニットから選択するようにしてオルタネート読み出し制御し、該選択した波形データに基づき浅い深さのビブラート楽音波形を合成する。例えば、−50セント〜0セント〜+50セントの範囲で変化するビブラートユニットを使用してその深さを2分の1の深さにする場合に、−25セント〜0セント〜+25セントの範囲のピッチずれの波形データのみを使用するようにオルタネート読み出し制御を行い、それよりもピッチずれの大きい波形データは使用しない。図10(b)では、ビブラートユニット内の各区間の波形データのうち、ピッチが−25セント〜0セント〜+25セントの範囲にある波形番号A4〜A6の波形データを使用し、それよりもピッチずれの大きい波形番号A3、A7の波形データは使用していないことが示されている。つまりは、50セントのピッチ変動がある元波形の1/2の深さでピッチ変動するように指定された場合には、ユニット内の約半分の数の波形データを使用して楽音を合成する。さらにビブラートの深さをより浅くしたような場合には、図中において波形番号A5の波形データ(0セント付近の波形)のみが選択される。
このように、ビブラートの深さを浅くする場合には、オリジナルのビブラート波形のピッチずれが0セントに近いピッチずれがあまりない波形データ(基準波形)から順に、使用すべき波形データが選択されるようにオルタネート読み出し制御し、該選択された波形データに基づき楽音合成する。これによると、元波形において音色変化の小さな隣接する波形が用いられるので、音色変化に唐突感を生むことなく楽音を生成することができるようになる。
反対に、ビブラートユニットの持つビブラートの深さより深くする場合には、図10(c)に示すように、ビブラートユニット内の全ての波形データ(A3〜A7)を使用するようにオルタネート読み出し制御し、かつ、ピッチずれが深くなるように加工したピッチ変動エンベロープに従って各区間の波形データのピッチをより高く又はより低くするようにしながら楽音合成すればよい。以上のようにして、ビブラートの深さを制御する場合には、ビブラートユニット内における複数の波形データをオルタネート読み出し制御する際に、繰り返し読み出しする対象の波形データを増減させて音色変化幅を変えるようにするとよい。
なお、これに限らず、当該ビブラートユニット内において浅いビブラートと深いビブラートの波形データなど各種の深さの波形データをそれぞれ予め記憶しておき、ビブラートデプス情報に応じていずれかの波形データを選択して(又は組み合わせてつまり補間して)用いるようにしてもよい。なお、図示のように、ビブラート深さを浅くした場合には振幅エンベロープの大小レベル変動幅が小さくなるように振幅エンベロープ制御し、他方、ビブラート深さを深くした場合には振幅エンベロープの大小レベル変動幅が大きくなるように振幅エンベロープ制御するとよい。
なお、入力ダイナミクスが変化しない場合には毎回同じビブラートユニットが選択され、さらに入力ピッチやビブラート・スピード/ビブラート・デプスが変化しない場合には同じスピード・深さでビブラートが合成されることになるが、別途うねりやゆらぎを追加すればより自然な楽音を合成することができる。このような制御は、本出願人が提案済の公知技術を使用することで実現できるので、詳細説明は省略する。また、使用する音色の選択範囲や使用する波形の数をビブラート周期に応じて変えるようにすると、より生成される楽音の単調さが軽減することができるのでよい。
なお、本発明において使用する波形データは、上述したような各種奏法に対応して「奏法モジュール」化されたものに限らず、その他のタイプのものであってもよい。また、各ユニットの波形データは、メモリに記憶したPCM、DPCM、ADPCMのような適宜の符号化形式からなる波形サンプルデータを単純に読み出すことで生成されるようなものであってもよいし、あるいは、高調波合成演算やFM演算、AM演算、フィルタ演算、フォルマント合成演算、物理モデル音源など、各種の公知の楽音波形合成方式を適宜採用したものであってもよいことは言うまでもない。すなわち、音源8における楽音信号発生方式は、いかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出す波形メモリ読み出し方式、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるFM方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるAM方式等の公知の方式を適宜採用してよい。このように、音源回路8の方式は波形メモリ方式、FM方式、物理モデル方式、高調波合成方式、フォルマント合成方式、VCO+VCF+VCAのアナログシンセサイザ方式、アナログシミュレーション方式等、どのような方式であってもよい。また、専用のハードウェアを用いて音源8を構成するものに限らず、DSPとマイクロプログラム、あるいはCPUとソフトウェアを用いて音源回路8を構成するようにしてもよい。さらに、共通の回路を時分割で使用することによって複数の発音チャンネルを形成するようなものでもよいし、各発音チャンネルがそれぞれ専用回路で構成されるようなものであってもよい。
なお、上述した各楽音合成処理における楽音合成の方式としては、既存の演奏情報を本来の演奏時間到来前に先行取得しておき、これを解析して楽音を合成する所謂プレイバック方式であってもよいし、リアルタイムに供給された演奏情報に基づき楽音を合成するリアルタイム方式のどちらであってもよい。
なお、時系列的に順次選択され生成された複数のビブラートユニットの波形同士を接続する手法は、クロスフェード合成に限らず、例えば生成されたビブラートユニットの各波形同士をフェーダーによりミックスする手法などであってもよい。
なお、この楽音合成装置を電子楽器に適用する場合、電子楽器は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、演奏操作子、表示器、音源等を1つの電子楽器本体に内蔵したものに限らず、それぞれが別々に構成され、MIDIインタフェースや各種ネットワーク等の通信手段を用いて各機器を接続するように構成されたものにも同様に適用できることはいうまでもない。また、パソコンとアプリケーションソフトウェアという構成であってもよく、この場合処理プログラムを磁気ディスク、光ディスクあるいは半導体メモリ等の記憶メディアから供給したり、ネットワークを介して供給するものであってもよい。さらに、カラオケ装置や自動演奏ピアノのような自動演奏装置、ゲーム装置、携帯電話等の携帯型通信端末などに適用してもよい。携帯型通信端末に適用した場合、端末のみで所定の機能が完結している場合に限らず、機能の一部をサーバコンピュータ側に持たせ、端末とサーバコンピュータとからなるシステム全体として所定の機能を実現するようにしてもよい。すなわち、本発明に従う所定のソフトウエア又はハードウエアを用いることによって、入力ダイナミクス値、ピッチ等に基づいて、データベースに記憶されたビブラートユニットの中から適宜に用いるユニットを切り替えながら楽音を合成することのできるようにしたものであればどのようなものであってもよい。
なお、ビブラートユニットから波形データを読み出す際に、必ずしも互いに隣り合う波形データを順に読み出すことに限らず、いくつかの波形データを飛ばしながらオルタネート読み出しするようにしてもよい。また、こうした場合には、昇順と降順とで読み出す対象の波形データを異ならせるようにしてあってもよい。ただし、昇順と降順とでは近接する音色変化に大きな違いのない波形データを読み出す。例えば、ビブラートユニットを便宜的に1〜11の番号をピッチの大きさ順に割り振った11個の波形データで構成し(6を基準波形とする)、そのうちの2と3、4と5、7と8、9と10とが互いに音色変化に大きな違いのない波形データであるとする。この場合には、「6,4,2,1(ピッチ最大),3,5,6,7,9,11(ピッチ最小),10,8,6,4,・・・」といったようにして波形データを切り換えて読み出すようにしてもよい。
1…CPU、1A…タイマ、2…ROM、3…RAM、4…外部記憶装置、5…演奏操作子(鍵盤等)、6…パネル操作子、7…表示器、8…音源、8A…サウンドシステム、9…インタフェース、1D…通信バス、J1…データベース、J2…入力部、J3…奏法合成部、J4…楽音合成部