JP3829733B2 - 波形生成装置及び方法 - Google Patents

波形生成装置及び方法 Download PDF

Info

Publication number
JP3829733B2
JP3829733B2 JP2002042472A JP2002042472A JP3829733B2 JP 3829733 B2 JP3829733 B2 JP 3829733B2 JP 2002042472 A JP2002042472 A JP 2002042472A JP 2002042472 A JP2002042472 A JP 2002042472A JP 3829733 B2 JP3829733 B2 JP 3829733B2
Authority
JP
Japan
Prior art keywords
waveform
phase difference
waveforms
connection
time
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
JP2002042472A
Other languages
English (en)
Other versions
JP2003241759A (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 JP2002042472A priority Critical patent/JP3829733B2/ja
Publication of JP2003241759A publication Critical patent/JP2003241759A/ja
Application granted granted Critical
Publication of JP3829733B2 publication Critical patent/JP3829733B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、波形メモリ等から適宜に読み出した波形を接続し合成することにより、楽音あるいは音声若しくはその他任意の音の波形を生成する波形生成装置及び方法に関する。特に、読み出した個々の波形をクロスフェード合成によって接続して合成する際に、接続対象とされた時間的に相前後する各波形間における位相差を求め、該位相差に基づき各波形の位相をあわせながら波形を接続し合成することで、劣化のない高品質な波形を生成することができるようにした波形生成装置及び方法に関する。この発明は、電子楽器は勿論のこと、自動演奏装置、コンピュータ、電子ゲーム装置その他のマルチメディア機器等、楽音あるいは音声若しくはその他任意の音を発生する機能を有するあらゆる分野の機器若しくは装置または方法において広範囲に応用できるものである。なお、この明細書において、楽音波形という場合、音楽的な音の波形に限るものではなく、音声あるいはその他任意の音の波形を含んでいてもよい意味合いで用いるものとする。
【0002】
【従来の技術】
電子楽器等に用いる波形メモリ音源において、PCM(パルス符号変調)あるいはDPCM(差分PCM)又はADPCM(適応差分PCM)等の任意の符号化方式で符号化した波形データを記憶しておき、適宜に選択された波形データを読み出して楽音波形を形成するようにした、いわゆる「波形メモリ読み出し」技術は既に公知であり、また、様々なタイプの「波形メモリ読み出し」技術が知られている。従来知られた「波形メモリ読み出し」技術のほとんどは、発音開始から終了までの1つの音の波形を発生するためのものである。一例として、発音開始から終了までの1音の全波形の波形データをサンプル波形データとして記憶する方式がある。また、別の例として、変化の複雑なアタック部やリリース部あるいはジョイント部などの非定常状態区間についてはその全波形の波形データ(これをモジュールと呼ぶ)をサンプル波形データとして記憶し、変化のあまりないサステイン等で構成されるボディ部などの定常状態区間については所定のループ波形(これをユニットと呼ぶ)をサンプル波形データとして記憶する方式がある。この方式では、外部波形入力から取り込んだ自然楽器固有の様々な演奏態様による演奏音のオリジナル波形から、アタック部やリリース部あるいはジョイント部などの非定常状態区間の波形を表すモジュール、あるいはボディ部などの定常状態区間における代表的なループ波形を表すユニット等を切り出して、これらの切り出したモジュール及びユニットを所定の圧縮手法を用いてデータ圧縮した形で「波形データベース(波形メモリ)」に記憶している。ただし、各モジュールは全体として非定常状態区間の波形を表すものであるが、各モジュールのデータ構成としては非定常状態区間の波形だけでなく、波形接続のために使用するループ波形を含む。すなわち、各モジュールはノンループ波形とループ波形とから構成されるサンプル波形データである。
なお、本明細書において、「ループ波形」とは繰り返し読み出し(つまりループ読み出し)される波形という意味で用いるものとする。
【0003】
上述したような「波形メモリ読み出し」技術を用いて一連の楽音波形を生成する際には、複数のモジュールやユニットを特定のシーケンスに従って順次切り替えながら読み出し、これらの読み出したモジュールやユニットをループ波形を用いて順次にクロスフェード合成する。こうしたループ波形同士のクロスフェード合成を用いて複数のモジュールやユニットを順次に接続し合成する場合においては、モジュールやユニットの繋ぎ目など、波形形状が異なるもの同士あるいは波形形状は同一又は類似しているが位相が異なるもの同士の接続を行う場合がある。すなわち、同一の1音から取得し切り離したアタック部とボディ部などのようなサンプル波形同士が常に接続されるものとは限らないので、同一の1音から取得し切り離したサンプル波形同士を接続する以外では接続対象の波形の波形形状や位相が異なる場合がある。また、同一の1音から取得したサンプル波形同士の接続であるがサンプル波形取得時(例えば録音時)の時間の流れとは異ならせて接続すると(例えば、ユニットの前後を入れ替える、あるいはユニットの一部を省略するなど)、接続対象の波形の波形形状や位相が異なる場合がある。さらに、同一の1音から取得したサンプル波形同士の接続であるが、例えばアタック部とボディ部とに対し別々の周期分析等が行われた結果として、その周期切り出しにおける位相が異なる場合がある。
【0004】
このような接続対象の波形の波形形状や位相が異なる場合において波形を滑らかに接続するには、クロスフェード合成の対象となる時間的に相前後している各波形の位相を合わせながらクロスフェード合成を行うことが必要である。そのために、従来では各モジュールやユニット毎に前後に接続可能な波形との位相差などをデータとして前もって記憶しておき、クロスフェード合成の際に該記憶しているデータに基づき位相合わせを行っていた。そうしたものの一例として、本出願人により既に出願済みである特開2000-47667号がある。これによると、各モジュールやユニットにおける基準とするループ波形に対する初期位相を示す初期位相情報を当該ループ波形に対応付けて波形メモリに記憶しておき、波形の組み合わせにあわせて予め記憶しておいた該初期位相情報を利用して必要な位相調整を行うことにより、組み合わされた波形の接続の際に適切な位相合わせを行うことができるようにしている。なお、接続可能な波形の組み合わせは1つだけに限られるものではなく、接続可能な波形の組み合わせによって最適な位相差は変わることから、本出願人により既に出願済みの上記発明は波形合成時において接続可能な波形の組み合わせ全てについての初期位相情報を記憶するものを含む。
【0005】
【発明が解決しようとする課題】
しかし、上述したように接続可能な波形の組み合わせの全てについて初期位相情報を記憶するとなると、そのためのデータ量が非常に多くなってしまい不都合である。また、波形合成時に接続可能な波形の組み合わせ全てについて予め初期位相情報を記憶しておくことは、非常に困難でありまた非現実的である。さらに、新たな波形が波形メモリに追加されたような場合に、波形メモリに記憶されている波形の中から新たに追加された波形を波形合成時に接続可能である波形のみを取り出して、新たに追加された波形との初期位相情報を記憶することは非常に時間がかかり効率が悪い、といったような様々な問題点があった。こうした問題点を解決するための1つの方法として、予め位相合わせした波形を波形メモリに記憶しておく方法が挙げられる。しかし、全ての波形の位相を合わせて波形メモリに記憶するような場合、各波形の位相はそれぞれ異なっている場合が多く、位相合わせの基準とすべき基準波形が不明確であることから、正しく位相をそろえておくことができない。例えば、基準波形として位相「0」のサイン波形との相関が最大になるように各波形の位相を合わせておくことが考えられるが、倍音のレベルが大きい波形などではサイン波形との相関をとったとしてもピーク値がそれほど大きく出ずにはっきりピーク値であるとわからない場合があり、そうした場合に位相合わせした波形同士を接続すると位相差が最適でないこともある。また、基準波形として位相「0」のサイン波以外のものを用いるようにしてもよいが、その場合にも該基準波形の特徴に左右されてしまうことから適切ではない。さらに、低い音程の波形などにおいては、1周期の波形の長さが長いことから、決まった位相でしか波形を切り出せないとなると、波形データ切り出しの自由度が下がり、適切な波形切り出しができないなどの不都合が新たに生じることとなるので問題である。
【0006】
本発明は上述の点に鑑みてなされたもので、クロスフェード合成による波形接続対象である時間的に相前後する波形の組み合わせが決定した時点において接続する各波形間の位相差を求め、該求めた位相差に基づいて各波形の位相を合わせて波形を接続し合成することによって、各波形間における位相差を予め記憶しておくことなしに、どのような波形を組み合わせた場合であっても音質劣化のない高品質な波形を生成することができるようにした波形生成装置及び方法を提供しようとするものである。
【0007】
【課題を解決するための手段】
本発明に係る波形生成装置は、演奏情報に基づき、複数の波形の中から時間的に相前後するように波形接続する波形の組み合わせを取得するものであって、該取得した波形の組み合わせにおいては時間的に先行する接続元の波形と該接続元の波形に時間的に後続する周期長の異なる接続先の波形とを含む、波形接続対象取得手段と、前記取得した組み合わせにおける前記接続元の波形及び接続先の波形について、少なくとも一方の波形の周期長を他方の波形の周期長に合わせた上で該波形間の位相差を求める波形評価手段と、前記取得した組み合わせにおける時間的に相前後する前記接続元の波形及び接続先の波形を並行して読み出す読み出し手段と、前記取得した組み合わせにおける前記接続元の波形及び接続先の波形並行して読み出す際に、時間的に後続する接続先の波形の読み出し位置を、時間的に先行する接続元の波形の読み出し位置に対し前記波形評価手段により求めた位相差に応じて決められた読み出し位置で読み出すよう、前記読み出し手段を制御する制御手段とを具える。
【0008】
この発明によれば、演奏情報に基づき時間的に相前後するように波形接続する先行する接続元の波形と後続する周期長の異なる接続先の波形とを取得、前記取得した接続元の波形及び接続先の波形の少なくとも一方の波形の周期長を他方の波形の周期長に合わせた上で該波形間の位相差を求める。そして、前記取得した時間的に相前後する接続元の波形及び接続先の波形を並行して読み出す際において、時間的に後続する接続先の波形の読み出し位置を、時間的に先行する接続元の波形の読み出し位置に対し前記求めた位相差に応じて決められた読み出し位置で読み出すよう制御する。すなわち、周期長の異なる波形を時間的に相前後するように組み合わせ、該組み合わされた波形同士をクロスフェード合成して所定区間内における連続的な波形を生成する場合において、各波形間における位相ずれによる波形の劣化が生じないように各波形の組み合わせにおける該波形間の位相差を求め、時間的に後続する接続先の波形の読み出し位置を該位相差に応じて決められた読み出し位置にシフトして読み出す。各波形間の位相差は、演奏情報に基づき取得される波形の組み合わせに応じてその都度求められる。このように、波形接続対象となる波形を取得した際に各波形の周期長が異なっていた場合であっても、取得した各波形の読み出し位置を位相差に応じた読み出し位置にあわせて読み出すようにした。こうすることにより、予め各波形の組み合わせ毎の位相差を記憶しておく場合に比べて、波形の組み合わせの自由度が高い、多くの組み合わせ毎に位相差を記憶しておく必要がないのでデータ記憶容量を少なくできる、組み合わせる波形が追加された場合であっても容易に適応できる、といった利点がある。また、各波形の位相をあわせてクロスフェード合成することから、位相の違いによる波形の相殺などの波形劣化のない高品質な楽音波形を生成することができるようになる。
【0009】
本発明は、装置の発明として構成し実施することができるのみならず、方法の発明として構成し実施することができる。また、本発明は、コンピュータまたはDSP等のプロセッサのプログラムの形態で実施することができるし、そのようなプログラムを記憶した記憶媒体の形態で実施することもできる。
【0010】
【発明の実施の形態】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
【0011】
図1は、この発明に係る波形生成装置のハードウエア構成例を示すブロック図である。ここに示されたハードウエア構成例はコンピュータを用いて構成されており、そこにおいて、波形生成処理は、コンピュータがこの発明に係る波形生成処理を実現する所定のプログラム(ソフトウエア)を実行することにより実施される。勿論、この波形生成処理はコンピュータソフトウエアの形態に限らず、DSP(ディジタル・シグナル・プロセッサ)によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。また、この波形生成装置は、電子楽器あるいはカラオケ装置又は電子ゲーム装置又はその他のマルチメディア機器又はパーソナルコンピュータ等、任意の製品応用形態をとっていてよい。
なお、上記した波形生成装置はこれら以外のハードウェアを有する場合もあるが、ここでは必要最小限の資源を用いた場合について説明する。
【0012】
図1に示されたハードウエア構成例においては、コンピュータのメイン制御部としてのCPU1に対して、バスラインBL(データあるいはアドレスバス等)を介してリードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3、パネルスイッチ4、パネル表示器5、ドライブ6、波形取込部7、波形出力部8、ハードディスク9、通信インタフェース10がそれぞれ接続されている。CPU1は、「波形データベース作成処理」(図示せず)や「波形生成処理」(後述する図2参照)などの各種処理を所定のプログラムに基づいて実行する。これらのプログラムは、通信インタフェース10を介したネットワークあるいはドライブ6に装着されたフレキシブルディスク(FD)、コンパクトディスク(CD−ROM・CD−RAM)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の着脱自在な様々な形態の外部記憶メディア6A等から供給されてハードディスク9に記憶される。そして、実行時にハードディスク9からRAM3にロードされる。あるいは、ROM2にプログラムが記録されていてもよい。
【0013】
ROM2は、CPU1により実行あるいは参照される各種プログラムや各種データ等を格納するものである。RAM3は、ハードディスク9などに構成された「波形データベース(波形メモリ)」から読み出したオリジナルの波形データなどの各種データやCPU1がプログラムを実行する際に発生する各種情報などを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを記憶するメモリとして使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。パネルスイッチ4は、楽音をサンプリングする指示やサンプリングされた波形データ等のエディットや各種情報の入力等を行うための各種の操作子を含んで構成される。例えば、数値データ入力用のテンキーや文字データ入力用のキーボード、あるいはパネルスイッチ等である。この他にも音高、音色、効果等を選択・設定・制御するための各種操作子を含んでいてよい。パネル表示器5は、パネルスイッチ4により入力された各種情報やサンプリングされた波形データ等を表示する、例えば液晶表示パネル(LCD)やCRT等のディスプレイである。
【0014】
波形取込部7はA/D変換器を内蔵し、外部波形入力(例えば、マイクロフォンなどからの入力)されたアナログ楽音信号をデジタルデータに変換(サンプリング)し、該デジタル波形データをオリジナルの波形データ(つまり、生成すべき波形の素材となる波形データ)として「波形データベース」に新たに取り込むものである。CPU1により実行される「波形データベース作成処理」(図示せず)では、上記波形取込部7から取り込んだアナログ楽音信号に対して成分分離や周波数分析を行い、これにより生成されるモジュール波形やユニット波形などのオリジナルの波形データをハードディスク9などに構成された「波形データベース」に記憶する。すなわち、外部波形入力(例えば、マイクロフォン等)から波形取込部7を介して取り込んだ自然楽器固有の様々な演奏態様による演奏音のオリジナル波形を波形形状の変化を代表する区間毎の特徴的な楽音波形(例えば、アタック部やリリース部あるいはジョイント部などの非定常状態区間の波形を表すモジュール、ボディ部などの定常状態区間における代表的な一部波形を表すユニット等)に分離し、これらの波形をFFT(高速フーリエ変換)分析して成分(例えば、調和成分と調和外成分など)、要素(例えば、ピッチと振幅をノーマライズした波形形状を抽出した「波形」(Timbre)要素、基準ピッチに対するピッチ変動特性を抽出した「ピッチ」(Pitch)要素、振幅エンベロープ特性を抽出した「振幅」(Amplitude)要素など)といった階層的な圧縮手法を用いることによってデータ圧縮した形で「波形データベース」に記憶する。
【0015】
上記「波形データベース作成処理」の実行に伴い生成した波形データを「波形データベース」に記憶する際には、分離された各成分(調和成分、調和外成分等)における各要素(波形、ピッチ、振幅等)毎に複数のサンプル値を分散的に又は必要に応じて連続的に抽出し、当該サンプル値列に対して各々異なったベクタID(識別情報)などを付与して、サンプル値の時刻位置のデータとともに記憶する(以下、このようなデータをベクタデータと呼ぶ)。したがって、この実施例では、1つのモジュールあるいはユニット毎にそれぞれ対応するようにして、調和波形(Timbre)ベクタデータ、調和ピッチ(Pitch)ベクタデータ、調和振幅(Amplitude)ベクタデータ、調和外波形(Timbre)ベクタデータ、調和外振幅(Amplitude)ベクタデータを作成する。後述する「波形生成処理」(後述する図2参照)では、上記「波形データベース」から適宜に読み出したベクタデータを利用して、演奏情報に応じた任意の楽音信号の波形データを生成する。勿論、複数の楽音信号の同時発生が可能である。
なお、この実施例において、ジョイント部とは音と音の間(又は音部分と音部分の間)を任意の奏法でつなぐ波形区間のことである。
【0016】
図1に示した波形生成装置の説明に戻って、上記「波形生成処理」の実行に伴い生成された楽音信号の波形データはバスラインBLを介して波形出力部8に与えられ、適宜バッファ記憶される。波形出力部8ではバッファ記憶された波形データを所定の出力サンプリング周波数にしたがって出力し、これをD/A変換してサウンドシステム8Aに送出する。こうして、波形出力部8から出力された楽音信号は、サウンドシステム8Aを介して発音される。ハードディスク9は、波形データや奏法に応じた波形を合成するための各種データ、各種音色パラメータ等からなる音色データなどのような演奏に関する複数種類のデータを記憶したり、前記CPU1が実行する各種プログラム等の制御に関するデータを記憶したりするものである。
【0017】
ドライブ6は、オリジナルの波形データ(ベクタデータ)や奏法に応じた波形を合成するための各種データ、多種多様な音色パラメータ等からなる音色データなどのような演奏に関する複数種類のデータを記憶したり、前記CPU1が実行する各種プログラム等の制御に関するデータを記憶したりするための着脱可能なディスク(外部記憶メディア6A)を駆動するものである。なお、前記ドライブ6により駆動される外部記憶メディア6Aはフレキシブルディスク(FD)の他に、コンパクトディスク(CD−ROM・CD−RW)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の着脱自在な様々な形態の外部記憶媒体を利用するメディアであればどのようなものであってもよい。若しくは、半導体メモリなどであってもよい。制御プログラムを記憶した外部記憶メディア6Aをドライブ6にセットし、その内容(つまり制御プログラム)をハードディスク9に落とさずに、RAM3に直接ロードするようにしてもよい。なお、外部記憶メディア6Aを用いて、あるいはネットワークを介して制御プログラムを提供するやり方は、制御プログラムの追加やバージョンアップ等を容易に行うことができるので好都合である。
【0018】
通信インタフェース10は、例えばLANやインターネット、電話回線等の通信ネットワーク(図示せず)に接続されており、該通信ネットワークを介して、サーバコンピュータ等(図示せず)と接続され、当該サーバコンピュータ等から制御プログラムやオリジナルの波形データ(ベクタデータ)あるいは演奏情報などを波形生成装置側に取り込むためのものである。すなわち、ROM2やハードディスク9等に制御プログラムや波形データなどが記憶されていない場合に、サーバコンピュータから制御プログラムや波形データをダウンロードするために用いられる。クライアントとなる波形生成装置は、通信インターフェース10を介してサーバコンピュータへと制御プログラムや波形データのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求された制御プログラムや波形データなどを通信インタフェース10を介してハードディスク9に蓄積することにより、ダウンロードが完了する。更に、MIDIインタフェースを含み、MIDIの演奏情報を受け取るようにしてもよいのは勿論である。また、音楽演奏用キーボードや演奏操作機器をバスラインBLに接続し、リアルタイム演奏によって演奏情報を供給するようにしてもよいのは言うまでもない。さらに、所望の楽曲の演奏情報を記憶した外部記憶メディア6Aを使用して、演奏情報を供給するようにしてもよい。
【0019】
上述したように、図1に示した波形生成装置において、波形生成はコンピュータが波形生成処理を実現する所定のプログラム(ソフトウエア)を実行することにより実施される。あるいはプログラムの形態に限らず、波形生成処理を専用ハードウエア装置の形態で実施するようにしてもよい。そこで、本発明に係る波形生成装置で実行する波形生成処理について、図2を用いて説明する。図2は、波形生成処理を専用ハードウエア装置の形態で構成した場合の一実施例を示すブロック図である。以下、図2を用いて波形生成処理全体の動作概要について簡単に説明する。
【0020】
曲データ再生部1Aは、奏法記号付き曲データの再生処理を行う。すなわち、まず最初に曲データ再生部1Aは奏法記号付き曲データ(つまり演奏情報)を受信する。通常の楽譜においては、そのままではMIDIデータとすることができないような強弱記号(例えば、クレッシェンドやデクレッシェンド等)、テンポ記号(例えば、アレグロやリタルダンド等)、スラー記号、テヌート記号、アクセント記号等の音楽記号が付されている。そこで、これらの音楽記号を「奏法記号」としてデータ化する。この「奏法記号」を含むMIDI曲データが「奏法記号付き曲データ」であり、曲データ再生部1Aはこのような奏法記号付き曲データを受信する。楽譜解釈部(プレーヤー)1Bでは、楽譜解釈処理を行う。具体的には、受信した奏法記号付き曲データに含まれるMIDIデータと「奏法記号」に基づいて所定の奏法指定情報(奏法パラメータとも呼ぶ)を生成し、時刻情報とともに奏法合成部(アーティキュレーター)1Cに出力する。奏法合成部(アーティキュレーター)1Cは楽譜解釈部(プレーヤー)1Bにより生成された奏法指定に応じたパケットストリーム及び該ストリームに関してのベクタパラメータを生成し、波形合成部1Dに供給する。パケットストリームとして波形合成部1Dに供給されるデータは、ベクタID、時刻情報等である。波形合成部1Dはパケットストリームに応じて波形データベース9からベクタデータを取り出し、該ベクタデータをベクタパラメータに応じて変形し、変形したベクタデータに基づき波形を合成して楽音波形を生成する。この波形合成部1Dでは、パケットストリームに応じた順に時間的に相前後するベクタデータに基づく波形の位相合わせを行いながら波形合成を実行する。これについての詳細は、後述する。波形出力部8では、波形合成部1Dで生成された楽音波形を出力する。
【0021】
次に、上述の図2に示した波形合成部1Dにおいて実行する楽音波形生成動作について、図3を用いて説明する。図3は、波形合成部1Dにおける楽音波形生成動作を説明するための概念図である。
奏法合成部(アーティキュレーター)1Cは、パケットキューバッファ21〜25に対してパケットを入力する。すなわち、奏法合成部(アーティキュレーター)1Cで作成された各成分要素毎のパケットストリームは、波形合成部1Dにおける各成分要素毎に対応して設けられる所定のパケットキューバッファ21〜25に順次にパケット入力(つまり、パケット単位での入力)される。また、奏法合成部(アーティキュレーター)1Cはパケットキューバッファ21〜25に対してパケットを入力する他にも、ストリーム管理(つまり、個々のベクタデータの生成や削除あるいはベクタデータ間の接続に関する管理)や再生コントロール(つまり、所望の波形生成の実行あるいは生成された所望の波形の再生/停止などのコントロール)などの各種の制御を波形合成部1Dに対して実行する。奏法合成部(アーティキュレーター)1Cから入力されたパケットはパケットキューバッファ21〜25に蓄積され、順次所定の順番でベクタローダ20に送られる。ベクタローダ20ではパケット内のベクタIDを参照して、当該ベクタIDに対応するオリジナルのベクタデータを波形データベース9から読み出す。
【0022】
ベクタローダ20により波形データベース9から読出されたベクタデータは各成分要素毎に対応して設けられた所定のベクタデコーダ31〜35へと送られて、各ベクタデコーダ31〜35は各成分要素毎に波形を生成する。各成分要素毎に対応するベクタデコーダ31〜35は、パケット内のベクタID、時刻情報等を読み出して所望の波形の時系列的生成を行う。例えば、調和Ampベクタデコーダ31は調和成分の振幅(Amplitude)要素のエンベロープ波形を、調和Pitchベクタデコーダ32は調和成分のピッチ(Pitch)要素のエンベロープ波形を、調和Timbreベクタデコーダ33は調和成分の波形(Timbre)要素の波形を、調和外Ampベクタデコーダ34は調和外成分の振幅(Amplitude)要素のエンベロープ波形を、調和外Timbreベクタデコーダ35は調和外成分の波形(Timbre)要素のエンベロープ波形をそれぞれ生成する。
【0023】
ベクタローダ20から調和Timbreベクタデコーダ33に読み出したベクタデータを送る際に、位相差計算部39ではパケットストリームに基づく波形の接続順に相前後する各波形の位相差を適宜に計算し、相関が最大となる位相差をパケットに書き込む位相差計算処理を行う。この位相差計算部39及び該位相差計算部39で実行する位相差計算処理についての詳細は後述することから、ここでの説明を省略する。調和Timbreベクタデコーダ33は、調和Ampベクタデコーダ31及び調和Pitchベクタデコーダ32で生成された調和成分の振幅要素のエンベロープ波形と調和成分のピッチ要素のエンベロープ波形を付与した調和波形を生成してミキサ38へ出力する。すなわち、調和成分の振幅要素のエンベロープ波形をゲイン制御(つまり、Gain入力)するためのベクタ制御命令として、調和成分のピッチ要素のエンベロープ波形を入力ノートナンバに従うベクタデータの読み出し位置制御(つまり、Speed入力)を行うためのベクタ制御命令として、各々入力した調和Timbreベクタデコーダ33は、これらのベクタ制御命令に従って波形データベース9から読み出した調和波形ベクタデータを変形して調和波形を生成する。
【0024】
他方、調和波形と異なり調和外波形はピッチに同期して波形を合成しないために、調和外Timbreベクタデコーダ35には入力ノート(例えばノートナンバ)に従うベクタデータの読み出し位置制御(つまり、Speed入力)を行うためのベクタ制御命令を入力しない。また、調和外波形(詳しくは調和外Timbreベクタデータ)はもともとノイズ成分であり、調和波形(詳しくは調和Timbreベクタデータ)のように時間的に相前後する波形同士で互いに位相を合わせて波形接続を行う必要がないことから、位相差計算部39を設けて位相差計算処理を行わなくてよい。すなわち、調和外波形は調和波形と比べて明白な周期性を持たず、こうした調和外波形を接続する際に適切な位相差を算出することは非常に困難であるために、調和外波形側には特に位相差計算部39を設けて位相差計算処理を行わなくてよい。調和外Timbreベクタデコーダ35は、調和外Ampベクタデコーダ34で生成された調和外成分の振幅要素のエンベロープ波形を付与した調和外波形を生成してミキサ38へ出力する。すなわち、調和外Timbreベクタデコーダ35に対しては、調和外成分の振幅要素のエンベロープ波形のみをゲイン制御(つまり、Gain入力)を行うためのベクタ制御命令として入力する。こうして、波形データベース9から読み出した調和外波形ベクタデータを変形して調和外波形を生成する。こうして生成された調和波形及び調和外波形をミキサ38で合成することによって、1音に関しての楽音波形を生成する。すなわち、ミキサ38は、調和Timbreベクタデコーダ33で生成された調和波形と調和外Timbreベクタデコーダ35で生成した調和外波形とを混合して楽音波形を生成する。
【0025】
上述したように、調和波形の生成時において、波形データベース9から読み出した調和Timbreベクタデータをベクタローダ20から調和Timbreベクタデコーダ33に送る際には、位相差計算部39により最適な位相差(つまり、相関が最大となる位相差)をパケットに書き込む処理が行われる。すなわち、位相差計算部39はパケットストリームに基づく波形順に相前後する各波形の相互相関を適宜に計算し、該計算結果のうち相関が最大となる位相差をパケットに書き込む位相差計算処理を実行する。そこで、この位相差計算処理を実行する位相差計算部39についての詳細を、図4を用いて説明する。図4は、位相差計算部39の一実施例を示すブロック図である。
【0026】
ベクタローダ20にはパケットキューバッファ23に蓄積されたパケットストリームを構成する個々のパケットが時刻情報に応じた時間順に順次に入力され、ベクタローダ20は各パケット内のベクタIDに基づいて、波形データベース9から当該ベクタIDに対応する調和Timbreベクタデータを読み出す。そして、読み出した調和Timbreベクタデータをパケットと共に位相差計算部39へと送る。この際に、パケットストリームにおいて時間的に先行するパケットをSourceパケットとして、パケットストリームにおいてSourceパケットに時間的に後続する直後のパケットをDestinationパケットとして、位相差計算部39に送る。位相差計算部39では、入力されたSourceパケットとDestinationパケットとに基づき位相差計算を行う。すなわち、Sourceパケットに応じて読み出された先行する調和TimbreベクタデータとDestinationパケットに応じて読み出された後続する調和Timbreベクタデータとの間で相互相関を計算し、該計算結果に基づき最適な位相差を特定する。
【0027】
上記位相差計算部39では、最適な位相差を特定するために所定の相互相関(Cross Correlation)関数を用いる。すなわち、先行する調和Timbreベクタデータと後続する調和Timbreベクタデータとの相互相関を計算し、前後する波形の間において最も相関の大きい位相差を求める。ここで、こうした相互相関関数R(τ)の一実施例を数1に示す。ただし、ここで示す数1において、先行する調和Timbreベクタデータを波形データF1(x)、後続する調和Timbreベクタデータを波形データF2(x)と表す。また、上記波形データF1(x)の周期長をT1、波形データF2(x)の周期長をT2と表す。
【0028】
【数1】
Figure 0003829733
上記数1において、記号τは位相差を示す値であり、0〜1までの値(小数含む)である。すなわち、記号τが「0」である場合には位相差「0」、つまり位相差がなく、記号τが「1」である場合には位相差「2π」を示す。記号xは各波形データの読み出し位置(例えば波形読み出しアドレス)に関する位相を示す値であり、0〜1までの値(小数含む)である。すなわち、記号xが0である場合には位相0つまり波形データの先頭位置を示し、記号xが1である場合には位相2πつまり波形データの最終位置を示す。波形データF1(x)と波形データF2(x)は各々周期長がT1、T2であるので、記号xにT1もしくはT2を乗算することで上記波形位置が得られる。すなわち、波形データF1(x)の周期長と波形データF2(x)の周期長をそろえた上で相互相関を計算する。なお、上記数1におけるp(x+τ)は、x+τの小数点以下のみを取得する関数である。
【0029】
上記位相計算部39による位相差計算の結果たる最適な位相差は、Destinationパケットにデータとして書き込まれる。そして、位相差計算部39は、SourceパケットとDestinationパケットとを調和Timbreベクタデコーダ33へ送る。調和Timbreベクタデコーダ33ではSourceパケットとDestinationパケットとを受け取ると、Destinationパケットに書き込まれた最適な位相差に基づき、先行する調和Timbreベクタデータと後続する調和Timbreベクタデータとの間で位相合わせを行いながらクロスフェード合成を行うことにより、滑らかに両波形を接続して合成する。このように、ベクタローダ20から調和Timbreベクタデコーダ33に調和Timbreベクタデータを送る際に、位相差計算部39ではパケットストリームに基づく波形の接続順に相前後する各波形の最適な位相差をそれぞれ適宜に求め、該求めた最適な位相差に基づいて接続する波形間における位相調整を行いながら波形を接続していく。以上の動作が連続的になされる。つまり、Destinationパケットを調和Timbreベクタデコーダ33に送った次の瞬間にSourceパケットとなり、次々と後続のパケットとの間で位相合わせが行われる。
【0030】
ここで、具体的な波形接続処理について、図5及び図6を用いて説明する。ここでは先行するLoop1波形(ベクタデータ)に、後続するLoop2波形(ベクタデータ)を接続する場合を例として説明する。図5は、位相差計算部39による位相差計算処理について説明するための概念図である。図5(a)は、波形接続対象の波形を示す概念図である。図5(b)は図5(a)に示した波形を用いての位相差計算について説明するための概念図であり、上記数1に示した所定の相互相関関数R(τ)に従ってLoop1波形とLoop2波形との相互相関を計算した結果得られる相互相関グラフを示すものである。ただし、ここでは先行するLoop1波形と後続するLoop2波形とが共に1波ループである場合を例にして、位相差計算部39による位相差計算処理について説明する。
【0031】
図5(a)から理解できるように、先行するLoop1波形及び後続するLoop2波形は共に1周期分のループ波形(すなわち、1波ループ)であるが、Loop1波形とLoop2波形とでは波形形状と位相、さらに周期長が異なって波形データベース9に記憶されている波形である。こうした波形をそのままクロスフェード合成すると波形同士の相殺が生じて合成波形に劣化が起こるので、接続した波形はノイズや音質劣化が著しく現れたものとなってしまう。そこで、上述したように、位相差計算部39では、先行する接続元のLoop1波形に対する後続する接続先のLoop2波形が決定した時点からLoop2波形が実際に波形合成に使用されるまでの間において、接続元のLoop1波形に対する接続先のLoop2波形の最適な位相差を上記数1に示した所定の相互相関関数R(τ)に従って求める。すなわち、Loop1波形とLoop2波形の相互相関を計算し、その相関が最大(ピーク)となる位相差を最適な位相差とする。Loop1波形とLoop2波形のそれぞれの周期長をそろえるために正規化しながら、上記数1に従いLoop1波形とLoop2波形1周期分の相互相関を計算する。ここでいう正規化とは、位相を基準に相互相関を計算することを言う。つまり、個々の周期長T1、T2を用いず、位相x及び位相差τを用いて計算する。図5(b)から理解できるように、上記数1では、Loop1波形に対してLoop2波形の位相をずらしながら、1周期分の相互相関を計算する。その結果、図5(b)最下段に示すような相互相関波形が得られる。この相互相関波形の最大ピーク値(最大値)は位相差「α」の位置に現れている。そこで、この位相差「α」をLoop1波形とLoop2波形との間における最適な位相差とする。
【0032】
上述のようにして求められた最適な位相差は、Loop1波形とLoop2波形とをクロスフェード合成により波形接続する際に用いられるデータであることは既に述べた。そこで、波形を接続するために行われるクロスフェード合成について、図6を用いて説明する。図6は、ループ波形同士を接続する際のクロスフェード合成について説明するための概念図である。この図6では、先行する接続元としてのLoop1波形と、後続する接続先としてのLoop2波形とを接続する際のクロスフェード合成について説明する。なお、 Loop 1波形と Loop 2波形との関係では、 Loop 1波形は先行する接続元であるが、図6の例では、 Loop 1波形に先行する図示しないループ波形が存在しており、この図示しないループ波形に後続する波形として用いられたLoop1波形は、次の波形切り替えに際してはLoop2波形に先行する波形として用いられる。すなわち、時刻t0は上記図示しないループ波形の切り替わりタイミング、時刻t1Loop1波形の切り替わりタイミング、時刻t2Loop2波形の切り替わりタイミングであり、各時刻t0、t1、t2で各ループ波形が順次切り替わって順に波形接続されるものを例に示した。なお、図6の例では、或るループ波形(例えば Loop 1)の切り替わりタイミング(t1)の到来前(それに先行するループ波形の切り替わりタイミングt0の時)にフェードインが始まり、切り替わりタイミング(t1)でフェードインが完了し、それから直ちにフェードアウトするような特性のクロスフェードについて図示してある。
【0033】
図6(a)は、波形データベースから読み出したLoop1波形とLoop2波形との開始点を時刻情報に従って所定の時間軸上に配置した場合の模式図である。図6(b)はLoop1波形の振幅制御特性を表すエンベロープを示す概念図、図6(c)はLoop1波形を所定のピッチにあわせて読み出す際の波形読み出し位置の時間的位置変化(位相、つまりアドレス進行をLoop1波形の周期長で割ったもの)を示す概念図、図6(d)はLoop2波形の振幅制御特性を表すエンベロープを示す概念図、図6(e)はLoop2波形を所定のピッチ(Loop1波形を読み出すピッチと同じピッチ)にあわせて読み出す際の波形読み出し位置の時間的位置変化(位相、つまりアドレス進行をLoop2波形の周期長で割ったもの)を示す概念図である。図6(c)及び図6(e)に示す位相の角度は、読み出しピッチに相当する。なお、図6の各図に示すt0〜t2までの記号は所定の時刻を表す記号であり、説明を理解しやすくするために、Loop1波形やLoop2波形の読み出し開始タイミングなどに便宜的に付したものである。例えば、図6(b)に示した Loop 1波形の振幅制御特性つまりクロスフェード特性によれば、 Loop 1波形の生成開始タイミング(フェードイン開始時刻)が時刻t0、フェードイン終了時刻すなわち波形切り替わりタイミングが時刻t1、そして、ただちにフェードアウト開始し、生成終了タイミング(フェードアウト終了時刻)が時刻t2である。同様に、図6(d)に示した Loop 2波形の振幅制御特性つまりクロスフェード特性によれば、 Loop 2波形の生成開始タイミング(フェードイン開始時刻)が時刻t1、フェードイン終了時刻すなわち波形切り替わりタイミングが時刻t2である。
【0034】
図6(a)から理解できるように、Loop1波形及びLoop2波形はそれぞれパケット内に含まれる時刻情報に基づき所定の時間軸上に配置される。この実施例においては、Loop1波形の切り替わりタイミングが時刻t1の位置に、Loop2波形の切り替わりタイミングが時刻t2の位置にそれぞれ配置されている。上述したように、先行するLoop1波形と後続するLoop2波形との繋ぎ目(すなわち、時刻t1から時刻t2までの区間)においてはそれぞれのループ波形をクロスフェード合成することによってこれらの波形を接続する。この際に、適切な位相調整を行うことによって、先行するLoop1波形と後続するLoop2波形両者の位相が合うように制御する。Loop1波形は図示しないループ波形に後続する波形として用いられたLoop1波形を、そのままLoop2波形に先行する波形として切り替えて用いたものである。そのため、Loop1波形は図示しない先行するループ波形とのクロスフェード読み出しのために時刻t0から繰り返し読出しされている読み出しをそのまま時刻t1においても続ける(図6(c)参照)。すなわち、時刻t1〜時刻t2までのクロスフェード区間において、先行するLoop波形1のループ読み出しを時刻t0〜時刻t1までのクロスフェード区間におけるループ読み出しに引き続いて行う。時刻t1〜時刻t2までのクロスフェード区間においては、Loop1波形のループ読み出しと同時に、後続するLoop波形2のループ読み出しを実行する。そして、先行するLoop1波形のループ再生波形をフェードアウト(立下り)特性のエンベロープで振幅制御(図6(b)参照)し、後続するLoop2波形のループ再生波形をフェードイン(立ち上がり)特性のエンベロープで振幅制御(図6(d)参照)し、両者を加算合成して、1つのループ再生波形を合成する。
【0035】
このクロスフェード合成されたループ再生波形がLoop1波形からLoop2波形へと滑らかに変化するためには、Loop1波形とLoop2波形とを加算合成するクロスフェード区間において、それぞれの位相が合っていることが必要である。この位相合わせを行うために、Loop2波形の読み出しを開始する際には、上述した位相差計算処理により求めた位相差を利用する。すなわち、時刻t1時点におけるLoop1波形の位相に対して位相計算部39により求められた最適な位相差を加算し、該加算した位相からLoop2波形の読み出しを開始する。図6(e)から理解できるように、この実施例においては、時刻t1に到達した時点で、Loop1波形とLoop2波形とのクロスフェード読み出しが開始されるため、Loop2波形の読み出しが時刻t1から開始される。この時、時刻t1におけるLoop1波形の位相と同じ位相でLoop2波形の読み出しを行う必要がある。図6(c)では、時刻t1におけるLoop1波形の位相が「β」になった場合を示している。これに応じて、Loop2波形は時刻t1で位相「β−α(α:求めた位相差)」から読み出しスタートさせる。すなわち、接続先波形であるLoop2波形の読み出しを開始する時刻t1において、接続元波形であるLoop1波形のその時点での位相に、さらに、上記位相差「α」を減算した位置に対応する読み出し位置からLoop2波形の読み出しを開始し、その位相差「α」を保ったままクロスフェードを行う。このような位相調整を行うことによって、時刻t1以降、Loop1波形とLoop2波形とが位相が合った状態で繰り返し読み出される。こうした位相調整を行うことにより、クロスフェード合成による相前後する2波形の接続時における波形の打ち消しを防ぎ、滑らかに波形接続を行うようになっている。
【0036】
上述したように、最適な位相差を求める際には所定の相互相関関数を用いるのであるが、こうした最適な(つまり、相関が最大な)位相差を求める際に上記数1を用いて演算すると相互相関の計算に非常に時間がかかる。こうしたことは、ユーザ操作に応じてリアルタイムに波形を生成する場合に特に問題となる。そこで、リアルタイムに波形を生成する場合(例えば、リアルタイム演奏時)においては上記数1を用いずに、次に示すような簡略化方法により相互相関の計算を簡略化して行うようにするとよい。以下、こうした相互相関計算の簡略化方法について説明する。
【0037】
まず、接続元としての先行するループ波形及び接続先としての後続するループ波形のそれぞれについて、波形の振幅が「0」となる位置を跨いで振幅値の符号(正又は負)が変わるゼロクロス点、正の振幅値の内で最も大きい振幅値をとる正ピーク点、負の振幅値の内で最も大きい振幅値をとる負ピーク点などの各点を求める。次に、以下に示すような各点の位相差を最適な位相差の候補と仮定し、それぞれの点の位相差における相関値を求める。例えば、ゼロクロス点の内のいずれかの点同士が重なる位相差(τ0)における相関値、又は正ピーク点同士が重なる位相差(τ1)における相関値、若しくは負ピーク点同士が重なる位相差(τ2)における相関値など、代表的なこれら位相差の候補についてのみ相関値を求め、その中で最も大きな相関値をもつ位相差を選択することで、全ての位相差にわたって相関値の計算をする場合に比べて計算量を大きく削減できる。
さらに、相互相関の計算時における波形同士の乗算を該波形の周期内全ての点において計算するのではなく(上記数1参照)、所定の複数点でのみ、つまり間引いた波形(ダウンサンプリング波形)で相互相関を計算する。こうした場合における相互相関関数R´(τ)の一例を示すと、例えば数2に示すような式になる。この数2においては先行する調和Timbreベクタデータをサンプリング波形データF1(x)、後続する調和Timbreベクタデータをサンプリング波形データF2(x)と表す。また、上記サンプリング波形データF1(x)の周期長をT1、サンプリング波形データF2(x)の周期長をT2と表す。
【0038】
【数2】
Figure 0003829733
上記数2において、Mは波形を間引いた後のサンプル数(一例として16点)を表わす。記号τは位相差を示す値であり、0〜1までの値(小数含む)である。すなわち、記号τが「0」である場合には位相差「0」、つまり位相差がなく、記号τが「1」である場合には位相差「2π」を示す。式n/(M-1)は各波形データの読み出し位置(例えば波形読み出しアドレス)に関する位相を示す値であり、0〜1までの値(小数含む)である。すなわち、式n/(M-1)が0である場合には位相0つまり波形データの先頭位置を示し、式n/(M-1)が1である場合には位相2πつまり波形データの最終位置を示す。波形データF1(x)と波形データF2(x)は各々周期長がT1、T2であるので、式n/(M-1)にT1もしくはT2を乗算することで上記波形位置が得られる。すなわち、波形データF1(x)の周期長と波形データF2(x)の周期長をそろえた上で相互相関を計算する。なお、上記数2におけるp(n/(M-1)+τ)は、n/(M-1)+τの小数点以下のみを取得する関数である。また、上記数2において、各サンプリング波形データF1(x)及びF2(x)は波形を補間しながら読み出すか、もしくは小数点アドレスを切り捨てながら読み出すようにするとよい。上記数2で表わされる相互相関R´(τ)を用いて代表的な位相差の候補(τ0、τ1、τ2など)についてのみ相関値を求めると、図5(b)に示したような実線で表される連続的な相互関数波形が、飛び飛びの部分的な点で表される離散的な相互関数値として現れることになる。代表的な位相差の候補についてこの数2を用いると、相前後する2波形間における全ての位相差についての相互相関の計算を上記した数1を用いた場合に比べて非常に速く行うことができるようになり、ユーザの操作に応じて波形を生成する際にユーザの操作に大きく遅れることなくリアルタイムに波形を生成できることから非常に有効である。
【0039】
次に、位相差計算部39の他の実施例について、図を用いていくつか説明する。まず、図7に示した実施例について説明する。図7は位相差計算部39の他の実施例を示すブロック図であり、この実施例ではキャッシュ検索を行うことにより位相差を決定する位相差計算部39について説明する。
【0040】
位相差計算部39は、ベクタローダ20から各パケット内のベクタIDに基づいて波形データベース9から読み出した当該ベクタIDに対応する調和Timbreベクタデータとパケットとをベクタローダ20から受け取る。この実施例においては、パケットストリームにおいて時間的に先行するSourceパケットのベクタID「15」に対応する調和Timbreベクタデータ、パケットストリームにおいてSourceパケットに時間的に後続するDestinationパケットのベクタID「23」に対応する調和Timbreベクタデータを、位相差計算部39は受け取るものを例として示した。位相差計算部39ではSourceパケットとDestinationパケットとを受け取ると、受け取ったSourceパケットとDestinationパケット内のベクタIDに基づきキャッシュ検索39Aを実行する。このキャッシュ検索39Aにおいては、ベクタIDの組み合わせに基づいてキャッシュメモリ39Dを検索する。キャッシュメモリ39Dは、ベクタIDの組み合わせ毎の位相差を記憶するメモリである。この実施例に示すキャッシュメモリ39Dにおいて、先行する接続元の波形がベクタID「15」、後続する接続先の波形がベクタID「23」である場合には位相差は「0.5326」という値が既に格納されており、先行する接続元の波形がベクタID「58」、後続する接続先の波形がベクタID「64」である場合には位相差は「0.8123」という値が既に格納されている。キャッシュ検索39Aの結果、キャッシュメモリ39Dに該当するベクタIDの組み合わせが格納されている場合には(図中「有り」表示参照)、該キャッシュメモリ39Dに格納されている位相差を最適位相差としてDestinationパケットに書き込み、ベクタデコーダ33に送る。
【0041】
一方、キャッシュ検索39Aの結果、キャッシュメモリ39Dに該当するベクタIDの組み合わせがない場合には(図中「無し」表示参照)、入力されたSourceパケットとDestinationパケットとに基づき波形評価39Bを行う。すなわち、SourceパケットのベクタID「15」に対応する先行する調和TimbreベクタデータとDestinationパケットのベクタID「23」に対応する後続する調和Timbreベクタデータとの間で所定の評価関数(例えば、上記数1あるいは数2などに示したような相互相関関数など)に従って複数の位相差に対する評価値を計算する。そして、該計算結果を最適値検索39Cで行い、該最適値検索結果(例えば、最大値など)を最適位相差としてDestinationパケットに書き込み、ベクトルデコーダ33に送る。また、最適値検索39Cを行った場合、キャッシュ制御部39Eは波形評価39Bを行ったベクタIDの組み合わせと共に最適値検索39Cの結果(つまり、最適位相差)をキャッシュメモリ39Dに格納する。こうすると、同じベクタIDの組み合わせについて再度最適位相差を算出しなければならないような場合において、再度波形評価39Bを行うことなく、キャッシュ検索39Aによりキャッシュメモリ39Dから位相差を直接読み出すだけで最適位相差を簡単に算出することができるようになることから、最適位相差の算出に係る処理時間を大幅に短縮することができ非常に便利である。
【0042】
上述の図7に示した実施例では、波形評価39Bを行ったベクタIDの組み合わせと共に最適値検索39Cの結果(つまり、最適位相差)をキャッシュメモリ39Dに登録し、同じベクタIDの組み合わせについて再度最適位相差を算出しなければならないような場合に、キャッシュメモリ39Dから位相差を直接読み出すようにしたがこれに限らず、encode時に波形接続する可能性の有る組み合わせについて予め位相差計算を行っておき、その結果を全て既計算値メモリに記憶しておく方法がある。こうした場合の一実施例を示すと、図8のようになる。図8は位相差計算部39の他の実施例を示すブロック図であり、この実施例では既計算値メモリの検索を行うことにより位相差を決定する位相差計算部39について説明する。この実施例においても、パケットストリームにおいて時間的に先行するSourceパケットのベクタID「15」に対応する調和Timbreベクタデータ、パケットストリームにおいてSourceパケットに時間的に後続するDestinationパケットのベクタID「23」に対応する調和Timbreベクタデータを、位相差計算部39がベクタローダ20から受け取るものを例として示した。
【0043】
位相差計算部39はSourceパケットとDestinationパケットとを受け取ると、受け取ったSourceパケットとDestinationパケット内のベクタIDに基づき既計算値検索39Fを実行する。この既計算値検索39Fにおいては、ベクタIDの組み合わせに基づいて該計算値メモリ39Iを検索する。該計算値メモリ39Iは、ベクタIDの組み合わせ毎の位相差を記憶するメモリである。この該計算値メモリ39Iには、例えばベクタID「15」とベクタID「23」の組み合わせ時の位相差は「0.5326」、ベクタID「58」とベクタID「64」の組み合わせ時の位相差「0.8123」などのようにして、波形接続の際に組み合わせ対象となりうる各ベクタIDの組み合わせ毎に予め位相差が定義されている。既計算値検索39Fの結果、既計算値メモリ39Iに該当するベクタIDの組み合わせがある場合には(図中「有り」表示参照)、該既計算値メモリ39Iに定義されている位相差を最適位相差としてDestinationパケットに書き込み、ベクタデコーダ33に送る。一方、既計算値検索39Fの結果、既計算値メモリ39Iに該当するベクタIDの組み合わせがない場合には(図中「無し」表示参照)、入力されたSourceパケットとDestinationパケットとに基づいて波形評価39Gを行う。そして、該計算結果を最適値検索39Hし、該最適値検索結果(例えば、最大値など)を最適位相差としてDestinationパケットに書き込み、ベクトルデコーダ33に送る。図8から理解できるように、この既計算値メモリ39Iを利用する場合は上述の図7に示したキャッシュメモリ39Dを利用する場合と異なり、最適値検索39Hを行った場合に既計算値メモリ39Iに対し、波形評価39Gを行ったベクタIDの組み合わせと共に最適値検索39Hの結果(つまり、最適位相差)を登録することを行わなくてよい。
【0044】
さらに、位相差計算部39の他の実施例として、クロスフェード接続する波形の組み合わせが決まる前に、波形接続対象候補の全ての波形との間で最適位相差を計算する方法について、図9を用いて説明する。図9は、クロスフェード接続する波形の組み合わせが決まる前に、波形接続対象となる可能性がある全ての波形との間で最適位相差を計算し記憶しておく方法について説明するための概念図である。
【0045】
ベクタローダ20には、パケットキューバッファ23に蓄積されたパケットストリームを構成する個々のパケットが時刻情報に応じた時間順に順次に1つずつ入力される。また、ベクタローダ20は入力されたパケット内のベクタIDに対応する接続可能性先IDリストをアーティキュレーター1C(図3参照)から受け取る。この接続可能性先IDリストはプレーヤー1B(図2参照)での楽譜解釈に従うNOTE、音の強弱、その他の奏法パラメータから予想される接続先波形をベクタIDにより指し示す接続先リストであり、アーティキュレーター1Cにより作成されるものである。この実施例では、予想される接続先波形としてベクタID「13」「45」「38」などが接続可能性先IDリストに規定されている。そして、ベクタローダ20は入力されたパケット内のベクタIDに基づき、波形データベース9から当該ベクタIDに対応する調和Timbreベクタデータを読み出し、該読み出した調和Timbreベクタデータを位相差計算部39に送る。
【0046】
位相差計算部39では、入力されたパケットと接続可能性先IDリストとに基づき、該読み出した調和Timbreベクタデータに接続する可能性のある全ての波形(つまり調和Timbreベクタデータ)との間で位相差計算を行う。すなわち、ベクタローダ20は、接続可能性先IDリストに規定されているベクタIDに基づき、波形データベース9から当該ベクタIDに対応する全ての調和Timbreベクタデータを順次に読み出し、該読み出した調和Timbreベクタデータを位相差計算部39に送る。位相差計算部39では、入力されたパケット内のベクタIDに基づき読み出された調和Timbreベクタデータと接続可能性先IDリストに規定されているベクタIDに基づき読み出された調和Timbreベクタデータとの間で相互相関を計算し、該計算結果に基づき最適な位相差を特定する。つまり、入力されたパケットと接続可能性先IDリストとに基づき読み出された調和Timbreベクタデータ間で相互相関を計算し、最も相関の大きい位相差を最適な位相差として特定する。この最適な位相差を特定するために用いる所定の相互相関関数は、上記数1あるいは数2などに示した関数を用いればよい。上記位相計算部39による位相差計算の結果たる最適な位相差は、予測ベクタバッファ100にベクタID、調和Timbreベクタデータと共に書き込まれ、予測ベクタパケットとして記憶される。
【0047】
ベクタローダ20は、パケットキュー23内のストリームに基づき予測ベクタバッファ100から該当する予測ベクタパケットを取り出して、該取り出した予測ベクタパケットを調和Timbreベクタデコーダ33へ送る。調和Timbreベクタデコーダ33ではSourceパケットと予測ベクタパケットとを受け取ると、予測ベクタパケットに書き込まれている最適な位相差に基づき、先行するSourceパケットの調和Timbreベクタデータと後続する予測ベクタパケットの調和Timbreベクタデータとの間で位相合わせを行いながらクロスフェード合成を行うことにより、滑らかに両波形を接続して合成する。
【0048】
なお、上述した各実施例においては位相合わせの方法として、所定の相互相関関数(数1あるいは数2参照)に基づいて先行する接続元の波形と後続する接続先の波形との間で相互相関を計算し、該相互相関値が最大となる位相差を最適な位相差として求めるようにしたがこれに限らない。こうした位相合わせの方法は所定の相互相関関数を用いる他にも、波形同士の距離(つまり、差分の絶対値の周期的総和)を計算し、該計算値が一番小さくなるような位相差を最適な位相差として求めるようにしてもよい。この場合においても、取り出した所定の複数点、例えば波形の振幅が「0」となる位置を跨いで振幅値の符号(正又は負)が変わるゼロクロス点、正の振幅値の内で最も大きい振幅値をとる正ピーク点、負の振幅値の内で最も大きい振幅値をとる負ピーク点などの各点において波形同士の距離を求めるとよい。こうした場合における波形同士の距離を計算するための関数K(τ)の一例を示すと、例えば数3に示すような式になる。この実施例に示す数3においては、先行する調和Timbreベクタデータをサンプリング波形データF1(x)、後続する調和Timbreベクタデータをサンプリング波形データF2(x)と表す。また、上記サンプリング波形データF1(x)の周期長をT1、サンプリング波形データF2(x)の周期長をT2と表す。
【0049】
【数3】
Figure 0003829733
上記数3において、Mは波形を間引いた後のサンプル数(一例として16点)を表わす。記号τは位相差を示す値であり、0〜1までの値(小数含む)である。すなわち、記号τが「0」である場合には位相差「0」、つまり位相差がなく、記号τが「1」である場合には位相差「2π」を示す。式n/(M-1)は各波形データの読み出し位置(例えば波形読み出しアドレス)に関する位相を示す値であり、0〜1までの値(小数含む)である。すなわち、式n/(M-1)が0である場合には位相0つまり波形データの先頭位置を示し、式n/(M-1)が1である場合には位相2πつまり波形データの最終位置を示す。波形データF1(x)と波形データF2(x)は各々周期長がT1、T2であるので、式n/(M-1)にT1もしくはT2を乗算することで上記波形位置が得られる。すなわち、波形データF1(x)の周期長と波形データF2(x)の周期長をそろえた上で相互相関を計算する。なお、上記数3におけるp(n/(M-1)+τ)は、n/(M-1)+τの小数点以下のみを取得する関数である。また、上記数3においても、各サンプリング波形データF1(x)及びF2(x)は波形を補間しながら読み出すか、もしくは小数点アドレスを切り捨てながら読み出すようにするとよい。
【0050】
上述した各実施例では1波ループ波形(つまり、1周期分のループ波形)同士で波形を接続する場合について説明したがこれに限らず、1波ループ波形同士以外で波形を接続する場合に適用してよいことは言うまでもない。例えば1波ループ波形と2波ループ波形、あるいは2波ループ波形と3波ループ波形などの周期長の異なる複数周期からなるループ波形を用いて波形を接続する場合においても適用可能である。ただし、こうした1波ループ波形同士以外で波形を接続する場合において、2波形間の位相差を上記数1、数2、数3のいずれかを用いて計算する際には、各波形の最初の1波のみについて周期長をそろえて計算を行うようにする。例えば、1波ループ波形と3波ループ波形との間で位相差を算出する場合には、3波ループ波形における3周期分の長さを3分の1した長さを1波ループ波形の周期長にそろえるようにする。すなわち、3波ループ波形における3分の1の波形のみを位相差の計算に用い、残りの3分の2の波形は位相差の計算に用いない。あるいは、2波形の各周期長の最小公倍数からなる長いループ波形を新たに生成し(つまり、生成される2個の長いループ波形の各周期数は同一である)、該生成した長いループ波形全体に渡って位相差の計算を行うようにしてもよい。このように、複数周期からなるループ波形間の位相差を上記数1、数2、数3のいずれかを用いて計算することができることは明らかであることから、上述した各実施例を複数周期からなるループ波形を用いて波形を接続する場合にも適用することができることは言うまでもない。
【0051】
なお、上述した各実施例においては、入力波形を成分毎(調和成分、調和外成分)及び要素毎(波形、ピッチ、振幅)に分け、そのうちの調和波形(つまり調和Timbreベクタデータ)におけるモジュールやユニットをループ波形で接続することで一連の楽音波形を生成するAEM(Articulation Element Modeling)音源に適用したものについて説明したが、こうしたAEM音源に適用することに限らないことは言うまでもない。
なお、上述した各実施例においては、時間的に相前後するループ波形をクロスフェード合成により波形接続するものを例に説明したがこれに限らず、例えば時間的に相前後する周期波形のワンショット波形同士の最適位相差を求め、該最適位相差に基づきクロスフェード合成するようにしてもよい。
【0052】
なお、上述したような波形生成装置を電子楽器に用いた場合、電子楽器は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、その場合に、曲データ再生部101A、楽譜解釈部101B、奏法合成部101C、波形合成部101D等を1つの電子楽器本体内に内蔵したものに限らず、それぞれが別々に構成され、MIDIインタフェースや各種ネットワーク等の通信手段を用いて各構成部を接続するように構成されたものにも同様に適用できることはいうまでもない。また、パソコンとアプリケーションソフトウェアという構成であってもよく、この場合処理プログラムを磁気ディスク、光ディスクあるいは半導体メモリ等の記憶メディアから供給したり、ネットワークを介して供給するものであってもよい。さらに、自動演奏ピアノのような自動演奏装置などにも適用してよい。
【0053】
【発明の効果】
本発明によれば、接続する波形の組み合わせが決定した時点で各波形間の位相差を求め、該求めた位相差に基づき相前後する波形の位相を合わせながらクロスフェード合成するようにしたことによって、各波形間における位相の違いによる合成波形の劣化のない、高品質な波形を生成することができるようになる。また、事前に複数の波形の組み合わせに応じて位相差を計算して記憶してき、記憶されている限られた組み合わせの中から波形を選択して使用する場合と比較して、そのような制限がなくなるので、波形の組み合わせの自由度が高くなる、多くの波形の組み合わせに応じた位相差を記憶しておく必要がなくデータ量を減らせる、波形を追加した際に関連する波形との位相差を計算して記憶しておく必要がないので波形を容易に追加することが可能となる、という優れた効果を奏する。
また、基準位相がはっきりしない、波形が異なる同士の接続においても、より最適な位相差で波形を接続することができるので、高品質な波形を生成することができる。さらに、実際に接続する波形の組み合わせで最適な位相差をその都度求めるようにすることで、サイン波などの中間的な基準波形を用いた場合に比べても、より最適な位相差で波形を接続することができ、したがって高品質な波形を生成することができるようになる。
【図面の簡単な説明】
【図1】 この発明に係る波形生成装置のハードウエア構成例を示すブロック図である。
【図2】 波形生成処理を専用ハードウエア装置の形態で構成した場合の一実施例を示すブロック図である。
【図3】 波形合成部における楽音波形生成動作を説明するための概念図である。
【図4】 位相差計算部の一実施例を示すブロック図である。
【図5】 位相差計算処理について説明するための概念図であり、図5(a)は波形接続対象の波形を示す概念図、図5(b)は位相差計算について説明するための概念図である。
【図6】 クロスフェード合成について説明するための概念図であり、図6(a)はLoop1波形とLoop2波形との開始点を時間軸上に配置した場合の模式図、図6(b)はLoop1波形の振幅制御特性を表すエンベロープを示す概念図、図6(c)はLoop1波形の読み出し位置の時間的位置変化を示す概念図、図6(d)はLoop2波形の振幅制御特性を表すエンベロープを示す概念図、図6(e)はLoop2波形の読み出し位置の時間的位置変化を示す概念図である。
【図7】 位相差計算部の他の実施例を示すブロック図であり、キャッシュ検索を行うことにより位相差を決定するものである。
【図8】 位相差計算部の他の実施例を示すブロック図であり、既計算値メモリの検索を行うことにより位相差を決定するものである。
【図9】 クロスフェード接続する波形の組み合わせが決まる前に、波形接続対象となる可能性がある全ての波形との間で最適位相差を計算し記憶しておく方法について説明するための概念図である。
【符号の説明】
1…CPU、2…リードオンリメモリ(ROM)、3…ランダムアクセスメモリ(RAM)、4…パネルスイッチ、5…パネル表示器、6…ドライブ、6A…外部記憶メディア、7…波形取込部、8…波形出力部、8A…サウンドシステム、9…ハードディスク、10…通信インタフェース、BL…バスライン、1A…曲データ再生部、1B…楽譜解釈部(プレーヤー)、1C…奏法合成部(アーティキュレーター)、1D…波形合成部、20…ベクタローダ、21(22〜25)…パケットキューバッファ、31…調和Ampベクタデコーダ、32…調和Pitchベクタデコーダ、33…調和Timbreベクタデコーダ、34…調和外Ampベクタデコーダ、35…調和外Timbreベクタデコーダ、38…ミキサ、39…位相差計算部、100…予測ベクタバッファ

Claims (7)

  1. 演奏情報に基づき、複数の波形の中から時間的に相前後するように波形接続する波形の組み合わせを取得するものであって、該取得した波形の組み合わせにおいては時間的に先行する接続元の波形と該接続元の波形に時間的に後続する周期長の異なる接続先の波形とを含む、波形接続対象取得手段と
    前記取得した組み合わせにおける前記接続元の波形及び接続先の波形について、少なくとも一方の波形の周期長を他方の波形の周期長に合わせた上で該波形間の位相差を求める波形評価手段と、
    前記取得した組み合わせにおける時間的に相前後する前記接続元の波形及び接続先の波形を並行して読み出す読み出し手段と、
    前記取得した組み合わせにおける前記接続元の波形及び接続先の波形並行して読み出す際に、時間的に後続する接続先の波形の読み出し位置を、時間的に先行する接続元の波形の読み出し位置に対し前記波形評価手段により求めた位相差に応じて決められた読み出し位置で読み出すよう、前記読み出し手段を制御する制御手段と
    を具える波形生成装置。
  2. 前記波形評価手段は、前記取得した接続元の波形及び接続先の波形のうちの少なくとも一方の波形の周期長を他方の波形の周期長に合わせ、所定の比較範囲において時間的に先行する接続元の波形と時間的に後続する接続先の波形との相関度を計算し、該計算した相関度に基づき前記位相差を決定することを特徴とする請求項に記載の波形生成装置。
  3. 前記波形評価手段により求められる前記位相差は、前記取得した接続元の波形及び接続先の波形のうちの少なくとも一方の波形の周期長を他方の波形の周期長に合わせ、所定の比較範囲において時間的に先行する接続元の波形と時間的に後続する接続先の波形との間で差分の絶対値の周期内総和を計算し、該計算した周期内総和を最小とするときの位相差であることを特徴とする請求項に記載の波形生成装置。
  4. 演奏情報に基づき、複数の波形の中から時間的に相前後するように波形接続する波形の組み合わせを取得するステップであって、該取得した波形の組み合わせにおいては時間的に先行する接続元の波形と該接続元の波形に時間的に後続する周期長の異なる接続先の波形とを含む、ステップと
    前記取得した組み合わせにおける前記接続元の波形及び接続先の波形について、少なくとも一方の波形の周期長を他方の波形の周期長に合わせた上で該波形間の位相差を求めるステップと、
    前記取得した組み合わせにおける時間的に相前後する前記接続元の波形及び接続先の波形を並行して読み出すステップと、
    前記取得した組み合わせにおける前記接続元の波形及び接続先の波形並行して読み出す際に、時間的に後続する接続先の波形の読み出し位置を、時間的に先行する接続元の波形の読み出し位置に対し前記求められた位相差に応じて決められた読み出し位置で読み出すよう、前記読み出し手段を制御するステップと
    を具える波形生成方法。
  5. 前記位相差を求めるステップは、前記取得した接続元の波形及び接続先の波形のうちの少なくとも一方の波形の周期長を他方の波形の周期長に合わせ、所定の比較範囲において時間的に先行する接続元の波形と時間的に後続する接続先の波形との相関度を計算し、該計算した相関度に基づき前記位相差を求めることを特徴とする請求項4に記載の波形生成方法。
  6. 前記位相差を求めるステップにより求められる前記位相差は、前記取得した接続元の波形及び接続先の波形のうちの少なくとも一方の波形の周期長を他方の波形の周期長に合わせ、所定の比較範囲において時間的に先行する接続元の波形と時間的に後続する接続先の波形との間で差分の絶対値の周期内総和を計算し、該計算した周期内総和を最小とするときの位相差であることを特徴とする請求項4に記載の波形生成方法。
  7. コンピュータに、
    演奏情報に基づき、複数の波形の中から時間的に相前後するように波形接続する波形の組み合わせを取得する手順であって、該取得した波形の組み合わせにおいては時間的に先行する接続元の波形と該接続元の波形に時間的に後続する周期長の異なる接続先の波形とを含む、手順と
    前記取得した組み合わせにおける前記接続元の波形及び接続先の波形について、少なくとも一方の波形の周期長を他方の波形の周期長に合わせた上で該波形間の位相差を求める手順と、
    前記取得した組み合わせにおける時間的に相前後する前記接続元の波形及び接続先の波形を並行して読み出す手順と、
    前記取得した組み合わせにおける前記接続元の波形及び接続先の波形並行して読み出す際に、時間的に後続する接続先の波形の読み出し位置を、時間的に先行する接続元の波形の読み出し位置に対し前記求めた位相差に応じて決められた読み出し位置で読み出すよう、前記読み出し手段を制御する手順と
    を実行させるためのプログラム。
JP2002042472A 2002-02-20 2002-02-20 波形生成装置及び方法 Expired - Fee Related JP3829733B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002042472A JP3829733B2 (ja) 2002-02-20 2002-02-20 波形生成装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002042472A JP3829733B2 (ja) 2002-02-20 2002-02-20 波形生成装置及び方法

Publications (2)

Publication Number Publication Date
JP2003241759A JP2003241759A (ja) 2003-08-29
JP3829733B2 true JP3829733B2 (ja) 2006-10-04

Family

ID=27782546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002042472A Expired - Fee Related JP3829733B2 (ja) 2002-02-20 2002-02-20 波形生成装置及び方法

Country Status (1)

Country Link
JP (1) JP3829733B2 (ja)

Also Published As

Publication number Publication date
JP2003241759A (ja) 2003-08-29

Similar Documents

Publication Publication Date Title
JP3975772B2 (ja) 波形生成装置及び方法
JP2001100760A (ja) 波形生成方法及び装置
JP3601371B2 (ja) 波形生成方法及び装置
JP3654079B2 (ja) 波形生成方法及び装置
JP3654083B2 (ja) 波形生成方法及び装置
JP3654080B2 (ja) 波形生成方法及び装置
JP3654082B2 (ja) 波形生成方法及び装置
JP3654084B2 (ja) 波形生成方法及び装置
JP3829732B2 (ja) 波形生成装置及び方法
JP3829733B2 (ja) 波形生成装置及び方法
JP3630107B2 (ja) 音データ転送方法、音データ転送装置およびプログラム
JP3552675B2 (ja) 波形生成方法及び装置
JP3630106B2 (ja) 音データ転送方法、音データ転送装置およびプログラム
JP3613191B2 (ja) 波形生成方法及び装置
JP3674526B2 (ja) 波形合成方法、音データ転送装置およびプログラム
JP3933161B2 (ja) 波形生成方法及び装置
JP3885803B2 (ja) 演奏データ変換処理装置及び演奏データ変換処理プログラム
JP3876896B2 (ja) 波形生成方法及び装置
JP3933162B2 (ja) 波形生成方法及び装置
JP3829707B2 (ja) 波形生成装置及び方法
JP4007374B2 (ja) 波形生成方法及び装置
JP3649141B2 (ja) 音データ転送方法、音データ転送装置およびプログラム
JP3674527B2 (ja) 波形生成方法及び装置
JP3552676B2 (ja) 波形生成方法及び装置
JP3897026B2 (ja) 演奏データ変換処理装置及び演奏データ変換処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060328

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060703

R150 Certificate of patent or registration of utility model

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100721

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100721

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120721

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130721

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees