以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図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)は、データベースのデータ構造を示す概念図である。ここで、図中における縦軸はピッチずれなし(0セント(cent))を基準とする正規の音高ピッチとのピッチずれ量(つまりピッチベンド値)を示し、横軸は楽音音量レベル(つまりダイナミクス値)を示している。なお、図中において例示した5種類の各ユニットの下部には、個々のユニットに対して付される固有のユニット番号(U1〜U5)を便宜的に記載してある。
データベースJ1においては、持続音部に適用する波形データ(波形ベクタデータ)などのベクタデータと、関連するデータ群とを「ユニット」として記憶している。1つの「ユニット」は、楽音合成時において1つのかたまりとして処理できる波形単位である。図3(a)に示すように、各ユニットU1〜U5はダイナミクス値にそれぞれ対応付けられており、こうしたダイナミクス値に対応付けられた複数のユニットU1〜U5を、各音高(図では便宜上C3、D3、E3のみ示している)毎に少なくとも1つ以上記憶している。例えば、1つの名目的な音色(バイオリンやピアノ等の楽器音色、つまり音色情報で選択可能な1つの音色)について、35種の音高(音階音)のそれぞれに対応して、20種のダイナミクス値に対応付けられたユニットを記憶するものとすると、データベース全体では当該音色について700個(35×20)のユニットを記憶することになる。
上記「ユニット」の波形データは、同じ音高であっても各ダイナミクス値に対応する各ユニットのそれぞれが異なる音色上の特徴を持つ楽音波形(つまり、波形形状が異なる楽音波形)からなる。図3(b)は、ユニット単位に記憶される波形データの一実施例を示す概念図である。この実施例では上段にビブラート1周期毎のピッチずれ量(ピッチベンド値)の時間的変化を示し、下段に時間的な音色変動及びピッチ変動を伴うビブラート演奏による一連の元波形を示す。ただし、図では時間的な音色変動に伴う音色が変化する様子を、グラデーション表示により表現している。すなわち、色の濃淡が異なる音色波形であることを表すようにしている。
図3(b)に示すように、データベースJ1では、ビブラート1周期(図示において一点鎖線で区切られた区間)にわたる複数周期からなる元波形データ(ビブラート付与された波形データ)のうち、多様に音色変化する複数の一部波形を1「ユニット」として使用する(記憶する)。ここでは、データベースの元とする各ユニットの波形データの録音時には、それぞれ音量一定で演奏された一連のビブラート波形から、一部範囲内の時間的に音色変化を伴う連続波形を波形データとして抽出する。具体的には、(オリジナルのビブラート波形同様に)ビブラート1周期の間で音色が微妙に又は複雑に周期的に時間変化している元波形データのうち(勿論、その各周期毎の波形ピッチも図示のように変化(ビブラート)している)、例えばビブラート1周期の中でピッチが最大となってからピッチが最小となるまでの区間(図中において、点線で区切られた波形データ抽出範囲)を、音色が変化している代表的な領域として採用し、前記区間内の連続波形をそのまま1つのユニットの波形データとして記憶する。
従来知られているように、1つの波形データはそのままデータベースに記憶されているのではなく、複数の波形構成要素の集合からなるものとしてデータベースに記憶されている。この波形構成要素を、以下、「ベクタデータ(又はベクトルデータ)」という。図3(c)は、上記したユニット単位に記憶されるピッチベクタデータ及び波形ベクタデータの一例を示す概念図である。ただし、ここでは、波形構成要素のうち時間的な音量変化を表す振幅エンベロープ特性を抽出した振幅(アンプ)ベクタデータに関しては、音量正規化がなされていないために、波形ベクタデータに音量変化を含むものとして、その図示を省略した。更に、別の種類のベクタ(例えば、波形の時間軸の進行を示す時間ベクタなど)が含まれていてもよいが、ここではその説明を省略する。
図3(c)に示すように、上記データベースJ1において、各「ユニット」U1〜U5を構成するベクタの種類としては、一例として波形ベクタやピッチベクタなどがある。波形ベクタは波形構成要素のうち、ピッチと振幅をノーマライズした波形形状のみの特徴を抽出したものであり、上述のようにして取り出した元波形におけるビブラート半周期分の音色変化が記録される。ここでは、データベース(外部記憶装置など)上の記憶位置を示すアドレスとして、元波形におけるピッチが最大値となるピッチずれ量(Pmax)に対応する波形位置をアドレスw1、元波形におけるオリジナル音高に該当する「ピッチずれなし(0セント)」に対応する波形位置をアドレスw2、元波形におけるピッチ最小値(Pmin)に対応する波形位置をアドレスw3としてそれぞれ図示した(ただし、ここではアドレス値の小さい順にw1<w2<w3とした)。
他方、ピッチベクタは波形構成要素のうち、ピッチ特性を抽出したもの(例えば、或る基準ピッチを基準にした時間的ピッチ変動特性を示すもの)であり、この実施例では、元波形のピッチを基準としたビブラート1周期のピッチずれ量の変化を時系列データで示している。ここで、図中に示す時刻0はビブラート1周期の開始時刻であってピッチずれ量が「0セント」である時刻、時刻T1は元波形におけるピッチが最大値となるピッチずれ量(Pmax)の時刻、時刻T2はビブラート1周期の途中であって一旦ピッチずれ量が「0セント」になる時刻、時刻T3は元波形におけるピッチが最小値となるピッチずれ量(Pmin)の時刻、時刻T4はビブラート1周期の終了時刻であってピッチずれ量が「0セント」に戻る時刻である。勿論、元波形におけるピッチが最大値となるピッチずれ量(Pmax)の絶対値と、元波形におけるピッチが最小値となるピッチずれ量(Pmin)の絶対値とが同じ値になるものとは限らず、これらの各値は元波形に依存することは言うまでもない。
なお、上述した図3(a)においては、ダイナミクス方向に均等の間隔に並ばないようにして、各ユニットU1〜U5をダイナミクス値に対応付けて外部記憶装置上にデータマッピングした例を示したがこれに限らず、ダイナミクス方向に均等の間隔に並ぶようにして、各ユニットU1〜U5を等間隔毎のダイナミクス値に対応付けて外部記憶装置上にデータマッピングするようにしてもよい。また、実際に演奏されたビブラート波形(元波形)から抽出した波形データを、そのままデータベース上にデータマッピングした例を示しているため、図3(a)においては各ユニットU1〜U5の上限ピッチベンド値・下限ピッチベンド値がそれぞれ一致していないが、これらが一致するようにそれぞれの元波形から波形データを抽出してデータマッピングするようにしてもよい。
なお、個別の音高(音階音)毎に上記したようなユニットU1〜U5をそれぞれ記憶することなく、2又はそれ以上の音高(例えばC3とC#3など)のグループに対応して上記ユニットU1〜U5を記憶するようにしてもよい。
なお、各波形データは、複数の波形を集めた波形セットから適宜の波形データを取得して記憶するようにしてあってもよい。このような場合、波形セットの波形はビブラート波形に限らない。
なお、波形データと共に付加的に記憶されるデータ群として、各ユニットU1〜U5毎に、ユニットU1〜U5の長さや平均パワー値などの情報をデータテーブルに記憶するようにしてよい。
従来知られているように、楽音合成時において、楽音合成部J4からはデータベースJ1に記憶されている全てのデータ(上述したベクタデータ及びその他のデータ群)を参照することができる。奏法合成部J3からは「データテーブル」に記憶されている代表的な値(例えば、上記ピッチベクタに関してピッチずれ量Pmax、ピッチずれ量Pmin及び上記した各時刻0、T1、T2、T3、T4、上記波形ベクタに関してユニット番号及びアドレスw1〜w3)しか参照することができないようになっている。奏法合成部J3では、「データテーブル」に記憶された上記代表値をもとに、上記各ベクタの実体データをデータベースJ1からどのように読み出し、それに基づき波形データをどう加工して楽音を合成するかを、楽音合成部J4に対して指示するのに必要十分なデータのみ管理できるようになっている。そして、楽音合成部J4では該奏法合成部J3からの指示(具体的には奏法情報)に応じて、該当する各ベクタの実体データをデータベースJ1から読み出し、該読み出した実体データに基づき持続音部の楽音波形を合成する。以下、持続音部の楽音として、音色の微妙な又は複雑な周期的な時間変化を伴うビブラート波形を合成する際の動作について、図を用いて説明する。
図4は、「ビブラートボディ合成処理」の一実施例を示したフローチャートである。当該処理は、演奏開始と共に該電子楽器におけるCPU1により割り込み処理として、例えば10ms(ミリ秒)毎に実行される。この「ビブラートボディ合成処理」は、演奏者の操作に応じてあるいは演奏情報などに応じて、「ビブラートボディ」、つまりビブラート奏法あるいはピッチベンド奏法などによって1つの楽音の発音中にそのピッチ及び音色が周期的に微妙に又は複雑に時間的に変化する特性で、楽音の持続音部を合成するために実行される処理である。なお、楽音のアタック部の波形は、図示しないアタック部波形合成処理によって別途行われるようになっており、このアタック部の波形合成処理に引き続いて、ここに示す「ビブラートボディ合成処理」が行われる。「ビブラートボディ合成処理」においては、ノート情報によって発生すべき楽音の音高(ノート)が指定され、該音高と入力ダイナミクス値に応じて選択された「ユニット」の波形データを自動的に再生することで、ビブラートの付与された持続音部の楽音波形の生成を行う。なお、ノート情報は当該音のノートオン時にRAM3に記憶された情報を用い、ダイナミクス情報、ピッチベンド情報、ビブラートスピード情報、ビブラートデプス情報は、当該操作子から入力がされた際に奏法合成部J3において最新値としてRAM3に記憶された情報を用いる。
なお、この「ビブラートボディ合成処理」においては、追って詳しく説明するように、「ユニット」に基づき再生されるビブラート音のビブラートスピード及びビブラートデプスを、それぞれの制御情報によって可変制御することができる。勿論、ピッチベンド情報に応じて当該ビブラート音全体をピッチシフトすることができることは言うまでもない。また、この「ビブラートボディ合成処理」では、入力ダイナミクス値によるユニット選択は、所定時間間隔を計測することによって行われるのではなく、現在の合成時刻と現在合成中の「ユニット」の1サイクル分(例えばビブラート1周期分)の再生が終わる終了予定時刻とを比較することにより行われる。すなわち、「ユニット」の1サイクル分の再生中は、入力ダイナミクス値の変化はユニット選択に効力を及ぼさない。
図4において、ステップS1は、アタック部の終端付近に現在合成中の波形位置(具体的には波形読み出しアドレス)が到達したか否か、又はアタック部の終端に到達した後に順次に合成開始される持続音部であって、上記したユニットの終端付近に現在合成中の波形位置が到達したか否かを判定する。アタック部の終端付近に現在合成中の波形位置が到達していない、又はユニットの終端付近に現在合成中の波形位置が到達していないと判定した場合には(ステップS1のNO)、当該処理を終了して、次の割り込み時刻(10ms後)までこの図4に示した処理を行わない。つまり、アタック部の終端までは、音の立ち上がりが急であるアタック部を実現する波形データ(例えばアタック系のユニット)に基づいて楽音合成が行われることから、持続音部の楽音を合成する当該「ビブラートボディ合成処理」は実質的に行われない。また、アタック部に後続する持続音部の楽音合成時において、1つのユニットにおける1サイクル分(ビブラート1周期)の再生途中である場合には、該再生中のユニットを変更することがないように、次の割り込み時刻(10ms後)まで処理を待つ。したがって、その間については入力ダイナミクス値に応じたユニットの切り替えが行われない。
他方、アタック部の終端付近に現在合成中の波形位置が到達した、又はユニットの終端付近に現在合成中の波形位置が到達したと判定した場合には(ステップS1のYES)、記憶されている最新の入力ダイナミクス値を取得する(ステップS2)。ステップS3は、予め取得済みのノート情報と前記取得した入力ダイナミクス値に応じてデータベースを参照し、データベースから該当するユニットを特定する(詳しくは後述する図5参照)。ステップS4及びステップS5は、前記特定されたユニットの時間的な配置位置を決定すると共に、記憶されている最新のピッチベンド情報、ビブラートスピード情報及びビブラートデプス情報に基づき、前記特定されたユニットの波形データを加工するための奏法情報を生成する。波形データの加工としては、例えば入力されたピッチベンド情報に応じて特定されたユニットの波形ピッチをまるごとピッチシフトしたり、入力されたビブラートスピード情報に基づき合成周期長を決定したり(ステップS4)、入力されたビブラートデプスに基づき合成ピッチ倍率及び音色読出範囲倍率を決定したりする(ステップS5)などがある。
ここで、上記合成周期長とは、当該ユニットを適用して合成するビブラート1周期分のビブラート音の合成時間長(ユニット合成長とも呼ぶ)を調整するパラメータである。合成ピッチ倍率とは当該ユニットの波形データを読み出す波形読出速度(所謂再生ピッチ)を調整するパラメータであり、音色読出範囲倍率とは当該ユニットの波形データのうち、どの範囲内にある波形データを楽音合成のために使用する波形として使用するか、を指定するパラメータである。例えば、入力されるビブラートスピード及びビブラートデプスの各情報がとり得る値を「0〜127」までの整数値とした場合に、その整数値に応じて合成周期長は「0.5〜2.0」、合成ピッチ倍率は「0.0〜2.0」、音色読出範囲倍率は「0.0〜1.0」(一例として、合成ピッチ倍率が1.0以上の場合には後述するようなオルタネート読み出しする波形ベクタの範囲がユニットに記憶済みの範囲を超えないようにするために音色読出範囲倍率を1.0に固定し、合成ピッチ倍率が1.0未満の場合にはオルタネート読み出しする波形ベクタの範囲がユニットに記憶済みの範囲を超えることがないので、音色読出範囲倍率を合成ピッチ倍率と同率とする)の範囲をとるようにするとよい。
ステップS6は、生成された奏法情報に従って楽音を合成する。すなわち、楽音合成部J4は、奏法合成部J3により生成された奏法情報に応じて波形合成のために使用するユニットを順次に切り替え、該ユニットの波形データに従ってビブラート奏法された持続音部の楽音を合成する。この際には、上記した合成周期長、合成ピッチ倍率、音色読出範囲倍率などのパラメータに応じて、該ユニットにおけるピッチベクタの周期長や変化量の大きさ、波形ベクタの読み出し範囲などを制御することにより、ビブラート周期を増/減したり、ビブラート深さを調整したりしながら楽音を合成する。このような、奏法情報に従って1つのユニット(ピッチベクタや波形ベクタなど)を制御しながら楽音を合成する詳細な手順については後述することから(図6及び図7参照)、ここでの説明を省略する。なお、奏法情報に従ってユニットを切り替える際には、先行するユニットと後続するユニットの各ユニット同士を適宜クロスフェード合成する。この際に用いられるクロスフェード合成を行う期間(所謂クロスフェード長)は、例えば50ms(ミリ秒)など適宜の時間であってよく、またこれに限らずもっと短くてもよいし、長くてもよい。
なお、図4に示した実施例では、ステップS4及びS5の処理は、ステップS1がYESに分岐したときに1回だけ実行されるようになっており、図示していないがビブラートスピード及びビブラートデプスなどの情報の取り込みは入力ダイナミクス値の取り込みと同じタイミングで行われてよい。しかし、これに限らず、10ms又はその他適宜の割込み周期で、ビブラートスピード及びビブラートデプスなどの情報の変化を随時チェックし、該情報の変化に応じてビブラートの設定変更を随時行うようにしてもよい。その場合は、例えば、図4において、アタック部の終端に達した後でかつユニットの再生中に、ビブラートスピード及びビブラートデプスなどの情報が変化したか否かをチェックするようにステップS1の処理を変更し、ビブラートスピード及びビブラートデプスなどの情報が変化したならばステップS4及びステップS5を実行するように、処理の流れを一部変更すればよい。
上記「ビブラートボディ合成処理」(図4参照)による持続音部(ボディ部)におけるビブラート奏法の楽音合成手順について、図5〜図7を用いながら手順を追って説明する。まず、奏法合成部によるユニット選択について、図5を用いて説明する。図5は、「ビブラートボディ合成処理」による楽音合成手順のうち、奏法合成部によるユニット選択処理(図4のステップS3参照)を模式的に説明するための概要図である。図5(a)は入力ダイナミクス値の時間変化を例示した図であり、縦軸は入力ダイナミクス値、横軸は現在時間を示す。ただし、ここでは説明を理解し易くするために、1音合成中においてビブラートスピード及びビブラートデプスが一定である場合を例に説明する。したがって、ここに示す図5(a)においては、入力ダイナミクス値を取得するタイミングとなる時刻a、時刻b、時刻cの間隔がそれぞれ等しいものとなっている。図5(b)は、前記入力ダイナミクス値の時間変化に対応して、データベース内に記憶されているユニットの選択について説明するための図である。なお、この例では、音高「C3」に対応する楽音を生成するものとし、波形生成前に当該発生すべき音高「C3」(基準ピッチ)に対応する楽音に関してのノート情報を取得済みであることは言うまでもない。
図5(a)に示す時刻aが、例えばアタック部の終端付近に現在合成中の波形位置が到達した時間である場合(又は(先行する)ユニットの終端付近に現在合成中の波形位置が到達した時間である場合)には、その時点における入力ダイナミクス値を取得して、既に取得済みの音高「C3」に関するノート情報と前記新たに取得した入力ダイナミクス値とに基づき、データベースに記憶された該当音高「C3」に対応付けられた複数のユニット(ここではユニットU1〜ユニットU5の5個のユニット)の中から、前記取得した入力ダイナミクス値に対応するユニットを1つ選択して奏法情報を生成する。図5(b)に示す例では、取得した入力ダイナミクス値が閾値「d1未満」であるならばユニットU1、入力ダイナミクス値が閾値「d1以上d2未満」であるならばユニットU2、入力ダイナミクス値が閾値「d2以上d3未満」であるならばユニットU3、入力ダイナミクス値が閾値「d3以上d4未満」であるならばユニットU4、入力ダイナミクス値が閾値「d4以上」であるならばユニットU5がそれぞれ選択される。したがって、この例では時刻aの時点で取得した入力ダイナミクス値が「d1以上d2未満」であることから、時刻aの時点ではユニットU2を選択する。後述する楽音合成処理では、該選択したユニットU2に基づいて持続音部の楽音波形を生成する。なお、この際に、先行するアタック部の終端側の一部波形とこれに後続する前記選択したユニットU2の先端側の一部波形とを適宜クロスフェード合成するとよい。波形をクロスフェード合成すると、滑らかに波形を切り替えることができる。
その後、前記時刻aから時間が経過して、ユニットU2の終端付近に現在合成中の波形位置が到達する図5(a)に示す時刻bになると、それまでの間に更新された新たな入力ダイナミクス値が取得され、該取得した入力ダイナミクス値に対応するユニットをデータベースから選択して奏法情報を生成する。ここでは、時刻bの時点で取得した入力ダイナミクス値が「d3以上d4未満」であることから、時刻bの時点ではユニットU4を選択する。該選択したユニットU4に基づいて、前記ユニットU2に引き続き、ビブラート奏法での持続音部の楽音波形が生成される。さらに時間が経過して、ユニットU4の終端付近に現在合成中の波形位置が到達する図5(a)に示す時刻cになって、それまでの間に更新された新たな入力ダイナミクス値が取得されると、該取得した入力ダイナミクス値に対応するユニットをデータベースから選択して奏法情報を生成する。ここでは、時刻cの時点で取得した入力ダイナミクス値が「d2以上d3未満」であることから、時刻cの時点ではユニットU3を選択する。後述する楽音合成処理では、該選択したユニットU3に基づいて、前記ユニットU4に引き続きビブラート奏法での持続音部の楽音波形を生成する。こうしたユニットの切り替え時においても、先行するユニットと後続する前記選択したユニットとを適宜クロスフェード合成するとよい。
本発明では、上記のようにして入力ダイナミクス値に基づき選択したユニットを用いた楽音合成を、本発明人が既に提案済みのピッチ及び振幅の時間軸伸縮制御(所謂TSC制御)に従い実現する。TSC制御を用いると、従来知られているように、波形読出速度(所謂再生ピッチ)と、特定の音色位置毎に対応している波形読出開始位置とを独立に各々連続制御することができ、従って本発明においても1つのユニットの波形データから、任意のピッチ、任意の変調周期を有するビブラート音を生成することが簡単にできるようになり有利である。そこで、次にTSC制御による楽音合成手順について、図6及び図7を用いて説明する。図6は、「ビブラートボディ合成処理」による楽音合成手順のうち、楽音合成部J4による楽音合成処理(図4のステップS6参照)の全体概要を説明するための機能図である。
〈合成周期長設定方法〉
楽音合成部J4は奏法合成部J3が生成した奏法情報に含まれるユニット番号(ID)に基づき、データベースJ1から該当するユニットの波形ベクタやピッチベクタを読み出す。図6においては、ユニット番号に基づき音高C3のユニットU2が選択され、該ユニットU2の波形ベクタ及びピッチベクタが読み出される例を示している。ピッチベクタを読み出す際には、奏法情報に含まれる合成周期長(Ts)に基づき、データベースJ1に記憶済みの元波形のピッチベクタの周期長(T4)が前記合成周期長と等しくなるように、ピッチベンド値P(t)の読み出し速度を調整する。すなわち、このユニットの合成開始時刻を0とすると、1ユニット内のピッチベンド値の時間変化はP(T4/Ts×t)となる。したがって、この合成周期長に従い、合成楽音のビブラート周期が増/減するように制御される。以下、説明を理解しやすくするために「合成周期長(Ts)=元波形のピッチベクタの周期長(T4)」とする。
〈合成ピッチ倍率設定方法及び波形読出速度の求め方〉
時間経過に応じて読み出されたピッチベンド値P(t)に対しては、奏法情報に含まれるピッチ倍率(Pscale)が乗算される。前記ピッチ倍率の取りうる値の範囲(0.0〜2.0)に従い、オリジナルのピッチベクタの変動幅の大きさが変化する(例えば、0.0のときピッチ変動なし、0.5のとき元波形の変動幅の半分、1.0のとき元波形の変動幅と同じ、2.0のとき元波形の変動幅の2倍となる)。このピッチ倍率に従って、ビブラートの深さが浅く/深くなるように制御される。また、ピッチベンド値P(t)に対してピッチ倍率(Pscale)を乗算したものは、時刻tにおける瞬時波形読出速度に反映される。具体的には、ノート情報に基づく基準ピッチと、ピッチベンド値P(t)にピッチ倍率を乗算したもの(Pscale×P(t))とを加算したものが、波形データを読み出す際のアドレス進行の計算のために用いられる瞬時波形読出速度(再生ピッチ)となる。したがって、このピッチ倍率に従い、基準ピッチに対する再生ピッチの変動幅が広く/狭くなるように制御される。
〈音色読出範囲倍率設定方法及び波形読出開始位置の求め方〉
時間変化するピッチベンド値P(t)に対応して、波形ベクタデータからその都度適切な1波波形(音色波形)が読み出される。そのための波形読出開始位置の求め方は、以下の数1に示す通りである。
上記数1に示すw(t)は、このユニットの合成開始時刻を0とした時の時刻tにおける仮想的な波形読み出し位置を示す式であって、所定期間毎の波形読出開始位置(初期読み出し位置)を示すものである。「Pmax」は元波形におけるピッチが最大値となるピッチずれ量、「Wscale」は音色読出範囲倍率、w2及びw1は元波形における所定の波形位置に対応したアドレスである(図3(c)参照)。もし音色読出範囲倍率Wscaleが1の時、上記数1はアドレスw2を中心にしてアドレスw1〜w3の範囲のいずれかの位置を波形読出開始位置として示すことになる。このように波形読出開始位置は、元波形のピッチベンド値P(t)の時間変化に応じて求められる。元波形のピッチベンド値P(t)の時間変化は例えば図2(c)に示すようなものであることから、波形読出開始位置は、所定のアドレス進行方向に進行すること、前記所定のアドレス進行方向とは逆方向に進行することを交互に繰り返しながら求められる。
〈波形読出目標値の求め方〉
TSC処理の準備として、波形読出目標値を求める。これは現在時刻よりも1波波形分未来の時刻(1波波形を1通り読み出した後の時刻)において、ユニット内のどの位置の1波波形(音色波形)を読み出しているのが望ましいかを示すものである。1波波形を読み出すのにかかる時間長さは、現在時刻tにおける波形読出速度(Pscale×P(t)+基準ピッチ)の逆数なので、これをT(t)とするとT(t)=1/(Pscale×P(t)+基準ピッチ)となる。したがって、波形読出目標値はw(t+T(t))となる。
上記したようにすると、楽音合成部J4は、現在値及び上記に基づき算出された波形読出目標値w(t+T(t))に応じて、2波戻る、1波戻る、変化しない、1波進む、2波進むなどのようにして、該1波波形を読み出した後の波形読出開始位置(波形読み出しアドレスの初期読み出し位置)を、1波波形単位で自由に移動させることができる。これにより、任意の再生ピッチを与えて1波単位に分割した各1波波形を合成開始する時点で、次に進みたい波形読出開始位置に最も近い位置に移動する処理を選択し続けるようにすると、再生ピッチと波形読出開始位置とを独立に連続的に指示しながら楽音を合成することができるようになる。そこで、こうしたユニット分割後の1波波形を使って楽音を合成するユニット内波形合成処理について、図7を用いて説明する。
図7は、1ユニット内における複数の1波波形を用いた楽音合成手順(ユニット内波形合成処理)を説明するための概念図である。ただし、この図7では、説明を理解し易くするために、仮想読み出し速度制御の観点からではなく、仮想読み出し位置制御の観点から、ユニット内波形合成処理を説明するための図を示した。すなわち、1波に相当する長さの波形データ(1波波形)を読み出したあとに、波形読出開始位置をどのように変化させながら次の1波波形の読み出しを行っていくかを、波形読出開始位置の時間的変化として図示している。また、ここに示す実施例においては、音色読出範囲倍率(Wscale)を1.0未満として、合成周期長が10波からなるビブラートボディを合成する場合を例に示している。さらに、各時刻において求められる波形読出目標値が、1波波形のいずれかの先頭アドレスに一致する場合であり、1波合成中のピッチベンド値が変わらない場合を示している。
波形読出開始位置の時間的変化を示す図7において、縦に何本か引かれた点線は、ある特定のビブラートに対応した瞬時波形読出速度(再生ピッチ)で、ユニット分割後の1波波形を再生した場合における各再生周期の区切れ目(つまり各1波波形を読み出すのにかかる時間長さ)を示す。すなわち、横軸はサンプル長ではなく、楽音合成の時間経過を示す。各再生周期の区切れ目を示す点線の間隔は、瞬時波形読出速度(再生ピッチ)の高い部分の1波では狭く、瞬時波形読出速度(再生ピッチ)の低い部分の1波では広くなる。瞬時波形読出速度(再生ピッチ)はピッチベンド値に従って時間に応じて様々に変化することから、各再生周期の時間長さを表す点線の間隔も時間に応じて異なるものとなっている。なお、図中において白地の三角形は、各再生周期でフェードインしながら1波波形を読み出す第2系列における処理を表すものである。一方、黒地の三角形は、各再生周期でフェードアウトしながら1波波形を読み出す第1系列における処理を表すものである。これらの三角形において矢印で示された1辺の傾きは、瞬時波形読出速度(再生ピッチ)に比例する。また、図中においては、各再生周期毎に算出される波形読出目標値を黒丸で示している。さらに、第1系列及び第2系列のクロスフェード合成による楽音合成処理を、各再生周期毎にまとめて時間順に並べた図を図7の下方に図示している。
まず、1つのユニットの波形データ(複数周期の波形データ)を、1周期毎の周期波形(1波波形)に各々分割する。ここでは、図7左に示すように、1つのユニットを「−4」〜「3」までの番号を付した8つの1波波形に分割した例を示す。この1波波形への波形分割は例えば自己相関関係に基づき行われ、これにより分割後の1波波形同士を波形接続しても波形連続性が失われないようにしている。すなわち、ユニットの波形データは複数周期波形からなるが、この複数周期波形の波形データは予め分析されて、複数周期波形のなかで位相が互いに同じになるポイント(同位相ポイントと呼ぶ)が、各1波波形毎の波形読出開始位置として決定される。逆にいえば、ユニットの波形データの中からそのような同位相ポイントを幾つか見つけ、その位置で波形を区切って複数の「1波波形」を定義する。要するに、「1波波形」の境界位置は上記した同位相ポイントであり、ユニット内のどの「1波波形」も同ユニット内の別の「1波波形」に滑らかにつなげることができるように、前記「1波波形」を定義すればよい。上記同位相ポイントでは、波形振幅値が一致し、その位置での波形の傾きが一致する。このように、ユニットの波形データはあらかじめ複数の「1波波形」に分割される。前記1波波形に分割するそれぞれの同位相ポイントは特定の音色への変化位置に対応しており、こうした同位相ポイントは各1波波形毎に波形読出開始位置(先頭アドレスとも呼ぶ)として記憶される(図中においてはwA〜wHで示す)。また、本実施例では、各1波波形の長さはピッチベンド値が0セントの1波波形(後述する基準波形)に揃えられている。
図7に示す各再生周期では、ユニットの波形データから、2系列でそれぞれ所定の1波波形を読み出すことができる。この実施例では、絶えず2系列(以下、第1系列及び第2系列と呼ぶ)で1波波形を読み出し、各系列で読み出した1波波形をクロスフェード合成することにより楽音波形を生成する。前記2つの系列では、所定のサンプリング周波数に基づいて、瞬時波形読出速度(Pscale×P(t)+基準ピッチ)に応じたFナンバを累算したアドレスに従い、波形の読み出しを行う。したがって、発生する波形のピッチは指定されたとおりのものとなる。また、各1波波形の波形読出開始位置は互いに位相が同じであるため、1つの1波波形を終わりのアドレスまで読み出し、引き続きそれとは別のアドレスから始まる任意の1波波形の読み出しを行ったとしても、波形が滑らかにつながる。
図7に示すように、初期設定として、時刻0において第1系列で読み出す対象の1波波形として、基準波形を設定する(以下、波形を設定するとは、具体的には1波波形の先頭アドレスのいずれかに波形読み出し位置を移動するように設定することを言う)。ここで、基準波形とは、ユニット分割後における複数の1波波形のうち、名目的な音色に対応付けられた所定の基準ピッチからのピッチずれが0セント(つまりピッチずれなし)から始まる1波波形であり、本実施例においては該基準波形(具体的には、ビブラート半周期辺りのピッチずれの最も小さい波形)を基準として、該基準波形の音色とできるだけ音色差の小さい適宜の1波波形から順に読み出し、楽音を合成する。ここでは、図中において白丸で表示したアドレスwE(=w2)から始まる1波波形「0」が基準波形に該当することから、時刻0において第1系列で読み出す対象の波形として、1波波形「0」を設定する。
一方、時刻0において第2系列で読み出す対象の1波波形を設定するために、上述した数1に従って波形読出目標値を求める。ここでは説明の便宜上、現在時刻0における瞬時波形読出速度(Pscale×P(0)+基準ピッチ)に従って、第1系列において前記設定した1波波形「0」を1通り読み出すのに時間T(0)だけかかるとして、時刻0から時間T(0)後の波形読出目標値がアドレス「wD」となる場合を図示している。そして、時間T(0)後の読み出し位置が、上述した数1に基づき算出された波形読出目標値「wD」となる1波波形(又は、時間T(0)後までに読み出される位置に前記求めた波形読出目標値「wD」が含まれる1波波形)を、第2系列で読み出す対象の1波波形に設定する。ここでは、アドレスwDから始まる1波波形「−1」に対して1つ前のアドレスwCから始まる、基準波形に対して2波前の1波波形「−2」が設定される。このようにして、時刻0においては、瞬時波形読出速度(Pscale×P(0)+基準ピッチ)に従って、第1系列でアドレスwE(=w2)を先頭アドレスとする1波波形「0」をフェードアウトしながら、第2系列でアドレスwCを先頭アドレスとする1波波形「−2」をフェードインしながらクロスフェード合成する。なお、クロスフェード合成する時間長さは、1波波形が読み出される時間と同じ時間長さに制御されることは言うまでもない。
上記のようにして、時刻0では、瞬時波形読出速度(Pscale×P(0)+基準ピッチ)に従うアドレス進行に応じて、第1系列でアドレスwE(=w2)を先頭アドレスとする1波波形「0」をフェードアウトしながら、第2系列でアドレスwCを先頭アドレスとする1波波形「−2」をフェードインしながら、それぞれの1波波形を読み出す。そして、各系列において各1波波形を1通り読み出した時刻t1(=0+T(0))に到達すると、第2系列における読み出し位置は1波波形「−1」の先頭アドレスwDまで進行する。これは、時刻0の時点で求めておいた、現在時刻よりも1波波形分未来の時刻における波形読出目標値に当然一致する(そうなるように波形読出目標値を求めている、P(t)が変動する場合にはほぼ一致する)。次に、時刻t1において第1系列で引き続き読み出す対象の波形として、現時点における第2系列の読み出し位置であるアドレスwDを先頭とする1波波形「−1」を設定する。すなわち、直前の再生周期で第2系列により読み出されフェードインした1波波形にアドレス上後続する1波波形が、次の再生周期で第1系列により読み出し開始される1波波形に設定される。
一方、現在時刻t1において第2系列で引き続き読み出す対象の1波波形を設定するために、上述した数1に従って時刻t2(現在時刻t1から時間T(t1)後)に位置すべき波形読出目標値を求める。ただし、数1に示すように、瞬時波形読出速度(Pscale×P(t)+基準ピッチ)はピッチベンド値P(t)に依存することから、例えばピッチベンド値が図6に示すような時間変化をするような場合には、時刻t1における瞬時波形読出速度は時刻0における瞬時波形読出速度よりも速くなっている。したがって、図から理解できるように、時刻t1から時刻t2までにかかる時間は、時刻0から時刻t1までにかかる時間よりも短いものとなっている(図中において再生周期の時間長さを表す点線の間隔が狭くなっている)。図7では、時刻t1から時間T(t1)後の波形読出目標値がアドレス「wC」となっている。したがって、時刻t1において第2系列で読み出す対象の1波波形に、アドレスwCから始まる1波波形「-2」に対して1つ前の1波波形「−3」を設定する。すなわち、時刻t1においては、第1系列でアドレスwDを先頭とする1波波形「−1」をフェードアウトしながら、第2系列でアドレスwBを先頭とする1波波形「−3」をフェードインしながらクロスフェード合成する。このようにして、時刻0〜時刻t3までにおいては、各系列で1波ずつ前の波形に戻るようにしながら1波波形を順に読み出して楽音合成する。
次に、時刻t3において第1系列で読み出す対象の波形として、時刻t2に第2系列で読み出しを開始した1波波形「−4」の時刻t4時点での読み出し位置となるアドレスwBを先頭アドレスとする、1波波形「−3」を設定する。一方、時刻t3における第2系列で読み出す対象の1波波形を設定するために、上述した数1に従って時刻t4(時刻t3から時間T(t3)後)に位置すべき波形読出目標値を求める。図7では、時刻t3から時間T(t3)後の波形読出目標値がアドレス「wC」となっている。したがって、時刻t3における第2系列で読み出す1波波形として、アドレスwCから始まる1波波形「−2」に対して1つ前の1波波形「−3」を設定する。すなわち、時刻t3においては、第1系列及び第2系列で共にアドレスwBを先頭とする同じ1波波形「−3」を、各系列でフェードアウト又はフェードインしながらクロスフェード合成する。同様にして、時刻t3〜時刻t8までは、各系列において同じ1波波形を1波ずつ波形が進むようにして1波波形を順に読み出して楽音合成する。
引き続き、時刻t8における第1系列で読み出す対象の波形として、時刻t7に第2系列で読み出しを開始した1波波形「1」の時刻t8時点での読み出し位置となるアドレスwGを先頭アドレスとする、1波波形「2」に設定する。一方、時刻t8において第2系列で読み出す対象の1波波形を設定するために、上述した数1に従って時刻t9(時刻t8から時間T(t8)後)に位置すべき波形読出目標値を求める。図7では、時刻t8から時間T(t8)後の波形読出目標値がアドレス「wF」となっている。したがって、時刻t8における第2系列で読み出す1波波形として、アドレスwFから始まる1波波形「1」に対して1つ前の1波波形「0」を設定する。すなわち、時刻t8においては、第1系列でアドレスwGを先頭アドレスとする1波波形「2」をフェードアウトしながら、第2系列でアドレスwEを先頭とする1波波形「0」をフェードインしながらクロスフェード合成する。同様にして、時刻t8〜時刻t10までについては、各系列において1波ずつ前に波形が戻るようにして1波波形を順に読み出して楽音合成する。
このようにすると、ユニットから1波波形を読み出す際において、波形読出目標値の時間変化量に応じて、1波波形を1波毎に順に読み出したり、いくつかの1波波形を飛ばしながらオルタネート読み出しする。また、波形読出目標値の時間変化量によっては、同じ1波波形を繰り返し読出しながらオルタネート読み出しすることもある。
図8は、上述したユニット内波形合成処理に従う波形選択イメージを示す概念図である。上段は第2系列におけるユニット内の波形選択イメージ、中段はユニットの波形データ(ただし、1波波形に分割後)、下段は第1系列におけるユニット内の波形選択イメージである。上述したユニット内波形合成処理に従うと、図8において矢印で図示するような波形選択イメージに従う波形読出しが行われる。すなわち、ユニット内における基準波形(ここでは1波波形「0」)、前記波形読出目標値に基づく1波波形(ここでは1波波形「−2」)を各系列での読み出し開始データとして、該基準波形あるいは設定された1波波形に近い順から隣接する1波波形を所定の順に降順又は昇順に交互に繰り返しながら、あたかも往復(オルタネート)するようにして繰り返し読み出し制御されるようになる。こうした波形データの読み出し制御は、ユニット内の各1波波形を所定の読み出し順に従って最初から最後まで読み出し終えると、再度前記読み出し順に従って最初の1波波形に戻って読み出しを開始する所謂「ループ読み出し」制御とは異なるデータの読み出し制御方法であり、この明細書では上記した読み出し制御方法を「オルタネート(往復)読み出し」制御と呼ぶ。このように、本発明では、上記のようにしてTSC制御により実現される「オルタネート(往復)読み出し」に従って2系列で1波波形を読み出し、該読み出した1波波形をクロスフェード合成することで楽音波形を生成するようにしている。
なお、上述したような1波単位に限らず、例えば2波単位などのように、ユニット分割後の1波波形を複数個まとめて連続的に読み出しながら楽音合成するようにしてもよい。ただし、その場合、近接する音色変化に大きな違いのない1波波形を複数個まとめて読み出すなどのようにするのがよい。すなわち、1波波形は1周期の周期波形に限らず複数周期波形であってもよい。
なお、上記した図7に示すように各時刻において、波形読出目標値が各1波波形の先頭アドレスのいずれかに一致する例を示したがこれに限らず、波形読出目標値が各1波波形の先頭アドレスのいずれかに一致しない場合もある。そうした場合には、波形読出目標値に最も近い1波波形の先頭アドレスのいずれかに波形読出目標値を再設定するとよい。
ここで、ビブラート周期を増/減したり、ビブラート深さを調整したりしながら楽音を合成することについて、前記図8を参照しながら説明する。図8に示す例では、元のユニットが1波波形「−4」〜「3」の8個の波形データ(基準波形を「0」とする)からなる例を示しており、各区間の1波波形が所定の時間間隔で順次に切り替えられ、かつ、1乃至複数周期づつ繰り返して読み出され、かつ、読み出された1波波形同士がクロスフェード合成される。ビブラートスピードを遅くする(ビブラート周期を長くする)場合は、合成周期長に基づきピッチベクタの周期長が長くなるように調整されることに応じて(図6参照)、図8に示すユニットを構成する各区間の1波波形が繰り返し用いられて、実質的な波形切り替えの時間間隔が広くなる。反対に、ビブラートスピードを速くする(ビブラート周期を短くする)場合は、合成周期長に基づきピッチベクタの周期長が短くなるように調整されることに応じて(図6参照)、図8に示すユニットを構成する各区間の1波波形すべてが使用されずに、適当な区間の1波波形が間引きされる。
他方、ユニットの持つビブラートの深さよりビブラートの深さを浅くする場合には、浅いピッチずれに相当する区間の1波波形のみをユニットから選択するようにしてオルタネート読み出し制御し、該選択した1波波形に基づき浅い深さのビブラート楽音波形を合成する。例えば、−50セント〜0セント〜+50セントの範囲で変化するユニットを使用してその深さを2分の1の深さにする場合に、−25セント〜0セント〜+25セントの範囲のピッチずれの1波波形のみを使用するようにオルタネート読み出し制御を行い、それよりもピッチずれの大きい1波波形は使用しない。つまりは、50セントのピッチ変動がある元波形の1/2の深さでピッチ変動するように設定された場合には、ユニット内の約半分の数の波形データを使用して楽音を合成する。さらにビブラートの深さをより浅くしたような場合には、図中において1波波形「0」(0セント付近の波形)のみが選択される。すなわち、ビブラートデプス情報に従って、ユニット内の波形データのうち楽音合成に使用すべき波形データの範囲は変化する。こうしたことは、上述した音色読出範囲倍率(Wscale)により制御される。
このように、ビブラートの深さを浅くする場合には、オリジナルのビブラート波形のピッチずれが0セントに近いピッチずれがあまりない1波波形(基準波形)から順に、使用すべき1波波形が選択されるようにオルタネート読み出し制御し、該選択された1波波形に基づき楽音合成する。これによると、元波形において音色変化の小さな隣接する波形が用いられるので、音色変化に唐突感を生むことなく楽音を生成することができるようになる。また、従来と比べてデータ量が少なくて済むという利点がある。
反対に、ユニットの持つビブラートの深さより深くする場合には、ユニット内の全ての1波波形を使用するようにオルタネート読み出し制御し、かつ、ピッチずれが深くなるように加工したピッチ変動エンベロープに従って各区間の1波波形のピッチをより高く又はより低くするようにしながら楽音合成すればよい。以上のようにして、ビブラートの深さを制御する場合には、ユニット内における複数の1波波形をオルタネート読み出し制御する際に、繰り返し読み出しする対象の1波波形の数を増減させて音色変化幅を変えるようにするとよい。
なお、入力ダイナミクスが変化しない場合には毎回同じユニットが選択され、さらに入力ピッチやビブラート・スピード/ビブラート・デプスが変化しない場合には同じスピード・深さでビブラートが合成されることになるが、別途うねりやゆらぎを追加すればより自然な楽音を合成することができる。このような制御は、本出願人が提案済の公知技術を使用することで実現できるので、詳細説明は省略する。また、使用する音色の選択範囲や使用する波形の数をビブラート周期に応じて変えるようにすると、より生成される楽音の単調さを軽減することができるのでよい。
なお、本発明において使用する波形データは、上述したような各種奏法に対応して「奏法モジュール」化されたものに限らず、その他のタイプのものであってもよい。また、各ユニットの波形データは、メモリに記憶したPCM、DPCM、ADPCMのような適宜の符号化形式からなる波形サンプルデータを単純に読み出すことで生成されるようなものであってもよいし、あるいは、高調波合成演算やFM演算、AM演算、フィルタ演算、フォルマント合成演算、物理モデル音源など、各種の公知の楽音波形合成方式を適宜採用したものであってもよいことは言うまでもない。すなわち、音源8における楽音信号発生方式は、いかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出す波形メモリ読み出し方式、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるFM方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるAM方式等の公知の方式を適宜採用してよい。このように、音源回路8の方式は波形メモリ方式、FM方式、物理モデル方式、高調波合成方式、フォルマント合成方式、VCO+VCF+VCAのアナログシンセサイザ方式、アナログシミュレーション方式等、どのような方式であってもよい。また、専用のハードウェアを用いて音源8を構成するものに限らず、DSPとマイクロプログラム、あるいはCPUとソフトウェアを用いて音源回路8を構成するようにしてもよい。さらに、共通の回路を時分割で使用することによって複数の発音チャンネルを形成するようなものでもよいし、各発音チャンネルがそれぞれ専用回路で構成されるようなものであってもよい。
なお、上述した楽音合成処理における楽音合成の方式としては、既存の演奏情報を本来の演奏時間到来前に先行取得しておき、これを解析して楽音を合成する所謂プレイバック方式であってもよいし、リアルタイムに供給された演奏情報に基づき楽音を合成するリアルタイム方式のどちらであってもよい。
なお、時系列的に順次選択され生成された複数のビブラートユニットの波形同士を接続する手法は、クロスフェード合成に限らず、例えば生成されたビブラートユニットの各波形同士をフェーダーによりミックスする手法などであってもよい。
なお、この楽音合成装置を電子楽器に適用する場合、電子楽器は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、演奏操作子、表示器、音源等を1つの電子楽器本体に内蔵したものに限らず、それぞれが別々に構成され、MIDIインタフェースや各種ネットワーク等の通信手段を用いて各機器を接続するように構成されたものにも同様に適用できることはいうまでもない。また、パソコンとアプリケーションソフトウェアという構成であってもよく、この場合処理プログラムを磁気ディスク、光ディスクあるいは半導体メモリ等の記憶メディアから供給したり、ネットワークを介して供給するものであってもよい。さらに、カラオケ装置や自動演奏ピアノのような自動演奏装置、ゲーム装置、携帯電話等の携帯型通信端末などに適用してもよい。携帯型通信端末に適用した場合、端末のみで所定の機能が完結している場合に限らず、機能の一部をサーバコンピュータ側に持たせ、端末とサーバコンピュータとからなるシステム全体として所定の機能を実現するようにしてもよい。すなわち、本発明に従う所定のソフトウエア又はハードウエアを用いることによって、入力ダイナミクス値、ピッチ等に基づいて、データベースに記憶されたビブラートユニットの中から適宜に用いるユニットを切り替えながら楽音を合成することのできるようにしたものであればどのようなものであってもよい。
1…CPU、1A…タイマ、2…ROM、3…RAM、4…外部記憶装置、5…演奏操作子(鍵盤等)、6…パネル操作子、7…表示器、8…音源、8A…サウンドシステム、9…インタフェース、1D…通信バス、J1…データベース、J2…入力部、J3…奏法合成部、J4…楽音合成部