JP3675184B2 - 波形形成装置及び方法 - Google Patents
波形形成装置及び方法 Download PDFInfo
- Publication number
- JP3675184B2 JP3675184B2 JP22501698A JP22501698A JP3675184B2 JP 3675184 B2 JP3675184 B2 JP 3675184B2 JP 22501698 A JP22501698 A JP 22501698A JP 22501698 A JP22501698 A JP 22501698A JP 3675184 B2 JP3675184 B2 JP 3675184B2
- Authority
- JP
- Japan
- Prior art keywords
- waveform
- time
- loop
- control signal
- 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
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
この発明は、メモリ等からの波形データの読出等に基づき、楽音あるいは音声若しくはその他任意の音の波形を形成する装置及び方法に関し、特に、音の発音期間における所定の区間で所定のループ波形を繰り返すことで波形形成を行う技術において、波形再生時間の伸縮制御を行うことに関する。この発明は、電子楽器は勿論のこと、自動演奏装置、コンピュータ、電子ゲーム装置その他マルチメディア機器等、楽音あるいは音声若しくはその他任意の音を発生する機能を有する汎ゆる分野の機器若しくは装置または方法において広範囲に応用できるものである。なお、この明細書において、楽音波形という場合、音楽的な音の波形に限るものではなく、音声あるいはその他任意の音の波形を含んでいてもよい意味合いで用いるものとする。
【0002】
【従来の技術】
波形メモリにおいて、PCM(パルス符号変調)あるいはDPCM(差分PCM)又はADPCM(適応差分PCM)等の任意の符号化方式で符号化した波形データ(つまり波形サンプルデータ)を記憶しておき、これを所望の楽音ピッチに対応して読み出すことにより、楽音波形を形成するようにした、いわゆる「波形メモリ読み出し」技術は、既に公知であり、また、様々なタイプの「波形メモリ読み出し」技術が知られている。従来知られた「波形メモリ読み出し」技術のほとんどは、発音開始から終了までの1つの音の波形を発生するためのものである。一例として、発音開始から終了までの1音の全波形の波形データを記憶する方式がある。また、別の例として、変化の複雑なアタック部についてはその全波形の波形データを記憶し、変化のあまりないサステイン部については所定のループ波形を記憶する方式がある(例えば特開昭59−188697号)。後者の方式では、ループ波形を記憶する構成であることにより波形データ記憶量を簡素化することができると共に、ループ波形を繰り返し読み出すことにより、音の持続時間を任意に調節することができる。なお、本明細書において、「ループ波形」とは、繰り返し読み出し(ループ読み出し)される波形という意味で用いるものとし、「ループ再生波形」とは、「ループ波形」を繰り返し読み出し(ループ読み出し)することで得られた(再生された)波形という意味で用いるものとする。
【0003】
また、1つの音の発生のために、複数のループ波形を使用し、各ループ波形を特定のシーケンスに従って順次切り替えて読み出し、相前後するループ波形のループ読出出力データ(つまり「ループ再生波形」)をクロスフェード合成することで、各ループ再生波形が滑らかに接続されるようにした技術も知られている(例えば特開昭62−14696号)。この場合、クロスフェード合成は、所定のクロスフェード区間において行なわれるようになっており、上述した単純な1つのループ波形の繰り返し読み出し技術とは異なり、個々のクロスフェード区間の時間長を任意に可変調節することについては示されていない。すなわち、予め設定された切り替え時間でしかクロスフェード区間を切り替えることができず、制御性に乏しい。
【0004】
一方、音声信号の時間軸圧縮技術としては、例えば特開平1−93795号に示されたものがある。そこでは、音声波形を母音区間と子音区間とに分け、子音区間の時間軸圧縮比率を相対的に小さくし、母音区間の時間軸圧縮比率を相対的に大きくすることが示されている。また、特開平5−274599号においては、子音区間では時間軸圧縮制御を行なわず、母音区間でのみ時間軸圧縮制御を行なうことが示されている。しかし、これらの技術は、音声信号のデータ圧縮のためのものであり、音のアーティキュレーション(奏法)を考慮したり、そのコントロールを可能にすることとは全く無関係である。
【0005】
【発明が解決しようとする課題】
従来のループ波形を用いた楽音波形形成技術においては、記憶する波形データ量を簡素化することに関しては適していたが、それと引き替えに、表現力のある楽音波形の形成には適さないものであり、また、音のアーティキュレーション(奏法)を考慮した楽音波形の形成とは無関係であった。そして、一般に、ループ波形を用いた楽音波形形成技術においては、予め決まった時間態様のループしか行なえず、制御性に乏しく、また、編集性にも乏しかった。一方、従来の音声の時間軸圧縮制御技術においては、その種の時間軸圧縮制御技術を楽音生成技術に適用することは考えられておらず、また、当然、楽音波形の時間軸伸縮制御を行なう場合の対策も考慮されていない。
【0006】
この発明は上述の点に鑑みてなされたもので、ループ波形を使用して音の波形を形成する場合において、音のアーティキュレーション(奏法)を考慮した品質のよい波形形成を行なうことができるようにすると共に、制御性に富み、また、編集性にも富んだ波形形成装置及び方法を提供しようとするものである。また、楽音波形を時間軸伸縮制御する場合に、該楽音波形の各種楽音要素(ピッチ、音量、音色等)に対する制御を考慮した適切な制御を行なうことができるようにした波形形成装置及び方法を提供しようとするものである。
【0007】
【課題を解決するための手段】
この発明の第1の観点に従う波形形成装置は、波形再生時間を伸縮制御する時間制御信号を発生するものであって、該時間制御信号の現在値を時間変数とする所定の関数に従って時間的に変化するよう該時間制御信号を発生する時間制御信号発生部と、音の発音期間における所定の区間で所定のループ波形を繰り返すことでループ再生波形を生成し、複数の異なるループ再生波形の区間を含んで該音の波形を形成し、かつ各ループ再生波形区間の時間長を前記時間制御信号の現在値に応じて伸縮制御する波形形成部とを具備する。
【0008】
この発明によれば、複数の異なるループ再生波形区間に対して、時間的に可変の時間制御信号の現在値に応じて、その再生時間長、つまり当該ループ再生波形に対応する音が存在する時間長、を伸縮制御する。従って、音を構成する複数のループ再生波形区間に独自の変化をつけることができ、制御性に富んだ波形形成を行うことができる。このようにループ再生波形の制御性が向上するので、比較的簡素な波形構造(例えばメモリ容量が少なくて済む)からなるループ波形を、音のアーティキュレーション(奏法)を考慮した品質のよい波形形成の場面においても利用し易くなる、という優れた効果を奏する。また、各ループ再生波形区間の時間長は前記時間制御信号の現在値に応じて随時伸縮制御されるようになっているので、音を構成する複数のループ再生波形区間の或る区間の時間長を圧縮し、別の区間の時間長を伸張する、といったように変化をつけることができ、様々な時間バリエーションで複数のループ再生波形区間を組み合わせることができるようになり、従来単調な制御しかできなかったループ部の楽音に対して、制御性に富んだ波形形成を行うことができるようになる、という優れた効果を奏する。
【0009】
特に、この発明によれば、前記時間制御信号は所定の関数に従って時間的に変化するものであり、該関数は該時間制御信号の現在値を時間変数とするものであり、これにより、時間制御信号を発生する所定の関数それ自体を該時間制御信号の現在値に応じて制御することで、その発生の時間経過を制御するようにしている。従って、時間制御信号に応じた波形再生時間の伸縮に伴って、適切に該時間制御信号それ自体の時間経過を制御することができる。
【0010】
更に、一実施態様として、前記波形形成部は、前記所定の区間で所定の第1のループ波形を繰り返すことで第1のループ再生波形を生成すると共に第2のループ波形を繰り返すことで第2のループ再生波形を生成し、第1及び第2のループ再生波形とを該所定の区間でクロスフェード合成することで合成したループ再生波形を形成するようにしてもよい。これによれば、クロスフェード合成により滑らかな波形接続が行われ、複数のループ再生波形区間の相互接続を滑らかに行うことができる。また、クロスフェード合成される第1及び第2のループ再生波形の時間長を、時間制御信号に応じて伸縮制御することができるので、上述と同様に、音のアーティキュレーション(奏法)を考慮した品質のよい波形形成を、ループ波形を使用して簡便に行なうことができる。
【0011】
また、一実施態様として、前記波形形成部は、前記ループ波形の波形データを記憶したメモリから該ループ波形の波形データを繰り返し読み出すことによりループ再生波形を生成するものであってよい。勿論、これに限定されるものではなく、例えば、メモリやテーブルをループ波形発生源とせずに、演算回路や非線形回路あるいは関数発生回路等をループ波形発生源としてもよい。
【0012】
この発明の第2の観点に従う波形形成装置は、時間的に変化する楽音制御信号を発生する第1の制御信号発生部と、時間経過を制御する時間制御信号を発生するものであって、所定の関数に従って時間的に変化するよう該時間制御信号を発生する第2の制御信号発生部と、楽音波形を形成するものであって、形成する楽音波形の時間経過を前記第2の制御信号発生部で発生する時間制御信号によって制御し、かつ、該時間制御信号によって前記第1の制御信号発生部で発生する楽音制御信号の時間経過を制御し、時間経過が制御された楽音制御信号によって前記形成する楽音波形の特性を制御する波形形成部とを具備する。
【0013】
これによれば、波形形成部で形成する楽音波形の時間経過が時間制御信号によって制御され、上記と同様に、波形再生時間を該時間制御信号によって伸縮制御することができる。第1の制御信号発生部で発生する楽音制御信号は、振幅やピッチ、音色等の任意の楽音要素を制御するものであってよい。そのような、時間的に変化する楽音制御信号としては、例えば、振幅エンベロープやピッチ変化エンベロープあるいは音色変化エンベロープなとがよく知られている。時間制御信号によって波形再生時間を伸縮制御するとき、楽音波形のみならず、該波形を制御するための楽音制御信号つまり振幅エンベロープやピッチ変化エンベロープなどの時間軸も同時に伸縮制御することで、楽音波形と該波形を制御するための楽音制御信号の両者を同期して時間軸伸縮制御することができる、という優れた効果を奏する。従って、楽音波形を時間軸伸縮制御する場合に、該楽音波形の各種楽音要素(ピッチ、音量、音色等)に対する制御を考慮した適切な制御を行なうことができるようになる。これにより、時間経過を制御する時間制御信号を所定の関数に応じて時間的に変化するよう可変制御することで、時間経過の制御形態を複雑にしている。従って、時間制御信号に応じた波形再生時間の伸縮制御を行うのみならず、時間制御信号それ自体の時間経過を制御することもでき、複雑な制御が可能となる。なお、この第2の観点に従う波形形成装置においては、前記楽音波形は、ループ波形又はノンループ波形のどちらであってもよいし、両方を含んでいてもよい。
【0014】
この発明は、装置発明として構成し、実施することができるのみならず、方法発明として構成し、実施することもできる。また、この発明は、コンピュータプログラムの形態で実施することができるし、そのようなコンピュータプログラムを記憶した記録媒体の形態で実施することもできる。更に、この発明は、新規なデータ構造からなる波形データを記憶した記録媒体の形態で実施することもできる。
【0015】
【発明の実施の形態】
以下、添付図面を参照してこの発明の実施の形態を詳細に説明しよう。
図1は、この発明の一実施例に係る波形形成装置のハードウェア構成例を示すブロック図である。ここに示されたハードウェア構成例はコンピュータを用いて構成されており、そこにおいて、波形形成処理は、コンピュータがこの発明に係る波形形成処理を実現する所定のプログラム(ソフトウェア)を実行することにより実施される。勿論、この波形形成処理は、コンピュータソフトウェアの形態に限らず、DSP(ディジタル・シグナル・プロセッサ)によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウェア装置の形態で実施してもよい。また、この波形形成装置は、電子楽器あるいはカラオケ装置又は電子ゲーム装置又はその他のマルチメディア機器又はパーソナルコンピュータ等、任意の製品応用形態をとっていてよい。
【0016】
図1に示されたハードウェア構成例においては、コンピュータのメイン制御部としてのCPU(中央処理部)100に、ROM(リードオンリーメモリ)101、RAM(ランダムアクセスメモリ)102、ハードディスク装置103、リムーバブルディスク装置(例えばCD−ROMドライブ若しくはMOドライブなど)104,表示器105,キーボード及びマウス等の入力操作装置106,波形インタフェース107,タイマ108、通信インタフェース109,MIDIインタフェース110等が、バス111を介して接続されている。波形インタフェース107は、外部からアナログ波形信号(オーディオ信号)を入力してディジタル信号に変換してバス111に送り出す機能と、このコンピュータにより実行した波形形成処理によって形成されたディジタル波形データをバス111を介して受け取り、アナログ変換してスピーカシステム等に出力する機能等を有するものである。もちろん、形成されたディジタル波形データをディジタルデータのまま外部に転送出力することも可能である。
【0017】
この波形形成装置が楽器の製品応用形態をとっている場合は、入力操作装置106におけるキーボードとして、所望の楽音ピッチを選択・指定するための演奏キーボードを含んでいる。一方、この波形形成装置が楽器以外の製品応用形態をとっている場合は、MIDIインタフェース110にMIDIキーボードモジュールを接続し、これにより所望の楽音ピッチを選択・指定することができる。また、所望の楽音ピッチを選択・指定は、自動演奏データの形態で与えるようにしてもよい。自動演奏データは、ROM101、RAM102、ハードディスク装置103、リムーバブルディスク装置104等のいずれかの記憶装置に記憶されているものを読み出すことにより与えられるようになっていてもよいし、MIDIインタフェース110を介して外部から与えられるようにしてもよい。特に詳しく説明しないが、電子楽器の分野では通常知られているように、入力操作装置106においては、各種音色や楽音効果、音量等、各種楽音要素の選択・設定等を行うためのスイッチや操作子類が適宜設けられている。また、これらの各種楽音要素の選択・設定は、上記と同様に自動演奏データの形態で与えるようになっていてもよい。
【0018】
波形データを記憶する波形メモリWMの機能は、どのタイプのデータ記憶装置が受け持ってもよい。すなわち、ROM101、RAM102、ハードディスク装置103、リムーバブルディスク装置104のいずれを波形メモリWMとして機能させてもよい。一般的には、大容量の記憶装置であるハードディスク装置103における適宜の記憶領域あるいはリムーバブルディスク装置104に着脱可能なCD−ROMやMO等のリムーバブルな記録媒体を、波形データベースとしてつまり波形メモリWMとして、機能させればよい。あるいは、外部のホスト又はサーバコンピュータに具備されている波形データベースに対して、通信インタフェース109及び通信回線を介してアクセスし、必要な波形データをハードディスク装置103あるいはRAM102等にダウンロードするようにしてもよい。
CPU100の制御の下で、この発明に係る波形形成処理を実行するソフトウェアプログラムは、ROM101又はRAM102あるいはハードディスク装置103のいずれに記憶しておくようにしてもよい。また、このプログラムは、リムーバブルディスク装置104に着脱可能なCD−ROMやMO等のリムーバブルな記録媒体に記録されていてもよく、また、外部のホスト又はサーバコンピュータから通信回線及び通信インタフェース109を介して該プログラムを受信し、ハードディスク装置103あるいはRAM102等にダウンロードするようにしてもよい。
【0019】
波形メモリWMにおいては、多数の単位波形の波形データが記憶されている。単位波形とは、それを一つの単位として選択することが可能な波形の一単位を指す。単位波形には、複数のタイプがあり、そのタイプは、音楽的若しくは感性的な意味と、データ読み出しの仕方に基づく技術的意味の、両面から分類するようにしてよい。技術的意味に基づく分類は、その波形データを繰り返し読み出しするか否かによる分類であり、便宜上、波形データが繰り返し読み出しされるものを「ループ波形」といい、波形データが繰り返し読み出しされないものを「ノンループ波形」という。一方、音楽的若しくは感性的な意味に基づく分類は、その波形が、音のどのような部分若しくは区間で使用されるのに相応しいか、ということに基づく分類である。例えば、音の立ち上がり部分(アタック部)で使用されるのに相応しい単位波形を「アタック部波形」、音の立ち下げ部分(リリース部)で使用されるのに相応しい単位波形を「リリース部波形」、音の持続部分(サステイン部)で使用されるのに相応しい単位波形を「サステイン部波形」、スラー等の特定の奏法に従う音と音のつながり部分で使用されるのに相応しい単位波形を「つなぎ奏法波形」、あるいは、ビブラートやトレモロ等の特定の奏法に従って音の持続部で使用されるのに相応しい単位波形を「中間奏法波形」、等のように、適宜に分類し、適切に名付けることができる。
【0020】
概して、微妙なアーティキュレーション(奏法)が要求される部分で使用されるのに相応しい単位波形としては、そのアーティキュレーション(奏法)の特徴を色濃く表現することができる「ノンループ波形」を含んで使用するのがよい。「ノンループ波形」は、通常、そのアーティキュレーション(奏法)の特徴を表現するのに必要十分な複数周期分の波形からなる。一方、比較的単調な音の部分では、「ループ波形」を使用するのが、波形データ記憶容量の節約の点で都合がよい。「ループ波形」は、通常、1周期または適当な複数周期分の波形からなる。「ループ波形」は、それ単独で、比較的単調な音部分の単位波形として、例えば「サステイン部波形」の単位波形として、使用することができる。その場合に、複数の「ループ波形」を適宜順次組み合わせることにより、つまり、複数の単位波形を順次組み合わせることにより、一連の音の持続部分の波形を形成するようにしてもよく、それは音の品質を上げることができる点で有利である。また、単位波形同士の接続をクロスフェード合成によって滑らかに行うために、その接続箇所部分で、「ループ波形」を使用するのも有利である。しかして、「ノンループ波形」を含む単位波形にあっても、他の単位波形との接続箇所となる始端又は終端において予め「ループ波形」を含むことが、好ましい一実施の形態として考えられる。一方、勿論、「ノンループ波形」のみで構成される単位波形があってもよく、その場合は、他の単位波形との接続は、接続点における適切な位相合わせ処理によって、滑らかに行うことができる。
【0021】
図2は、波形メモリWMに記憶されるいくつかの単位波形の典型例を示す概略図である。図示の簡略化のために、実際の波形図形は一部のみ図示し、波形の所在の概要のみ四角枠で囲って図示している。なお、この図示例では、波形データの振幅ピークレベルを一定値に規格化して記憶しておき、読出・再生時に、所要の振幅エンベロープを付与するようにしている。勿論、これに限らず、記憶する波形データの振幅ピークレベルを規格化せずに、任意の振幅エンベロープが付与された状態のまま記憶しておくようにしてもよい。図で横軸はメモリのアドレスである。なお、波形メモリWMに記憶する各単位波形の波形データは、典型的には、PCM化された波形サンプルデータであるものとする。しかし、波形データのコード化フォームは、PCMに限らず、DPCMあるいはADPCM等であってもよい。
【0022】
図2(a)はアタック部波形の一例であり、このアタック部波形は先行するノンループ波形NLWと後続するループ波形LWとからなっている。波形メモリWMにおけるこのアタック部波形の開始点は、特定のスタートアドレスSAによって特定される。また、ループ波形LWの開始点は、特定のループスタートアドレスLSによって特定される。
図2(b)はサステイン部波形のような中間波形に該当する単位波形の一例であり、この中間波形は、1つのループ波形LWからなっている。この場合も、波形メモリWMにおけるこの中間波形の開始点、つまりループ波形LWの開始点は、特定のループスタートアドレスLSによって特定される。なお、中間波形に該当する単位波形の形態は、これに限らず、ノンループ波形を含んでいてもよい。例えば、所定のノンループ波形の前後にループ波形をそれぞれ配置して1つの単位波形を構成してもよい。
図2(c)はリリース部波形の一例であり、このリリース部波形は先行するループ波形LWと後続するノンループ波形NLWとからなっている。波形メモリWMにおけるこのリリース部波形の開始点、つまりループ波形LWの開始点は、特定のループスタートアドレスLSによって特定される。また、リリース部波形の終了点は、特定のエンドアドレスEAによって特定される。なお、前述のとおり、アタック部波形又はリリース部波形は、ループ波形LWを含まずに、ノンループ波形NLWのみからなっていてもよい。
【0023】
図2においては、個々のループ波形LWを管理するための個別の各種管理情報LS,LL,WN,SPについても示されている。ループスタートアドレスLSは前述の通りループ波形LWの開始点のアドレスであり、繰り返し読み出しつまりループ読み出しの開始アドレスを示す。ループ長データLLは、該ループ波形LWの長さをアドレス数によって示すデータであり、「LS+LL」によってループエンドアドレス(ループ読み出しの終わりのアドレス)を特定することができる。よって、当該ループ波形LWの繰り返し読み出しつまりループ読み出しは、ループスタートアドレスLSからループエンドアドレス「LS+LL」までの波形データを繰り返し読み出すことにより行われる。
【0024】
ループ波数データWNは、当該ループ波形LWを構成している波形の波数つまり周期数を示すデータである。前述のとおり、ループ波形LWは、1波つまり1周期に限らず、複数波つまり複数周期からなっていてもよい。この実施例においては、各ループ波形LWの波数(WN)及びアドレス数(LL)は任意であってよいものとしているので、波数(WN)及びアドレス数(LL)が適宜に異なるループ波形同士をクロスフェード合成するときに、後述するように、これらのデータWN,LLを利用して各ループ波形の読み出しレートの調整を行い、各ループ再生波形のピッチを合わせるようにしている。このように、波数(WN)及びアドレス数(LL)が適宜に異なるループ波形同士をクロスフェード合成できるようにした構成は、ループ波形同士の自由な組合せを容易に可能にし促進するものであるので、波形形成処理の際の制御性と編集性を高めることができる。
【0025】
初期位相情報SPは、ループスタートアドレスLSに対応して記憶されている当該ループ波形LWの先頭の波形サンプルデータの位相を絶対位相表現で示す情報である。すなわち、この実施例によれば、各ループ波形LWの初期位相を予め位相合わせして波形データを記憶させておく必要がなく、その代わりに、当該ループ波形LWの初期位相を示す初期位相情報SPを、当該ループ波形LWの波形データに対応づけて、波形メモリWMに記憶しておき、該初期位相情報SPを利用して必要な位相調整等の管理を行うことにより、ループ波形同士の組み合わせ(接続若しくはクロスフェード合成)の際に、適切な位相合わせを行うことができるようにしている。これにより、各ループ波形LWの初期位相を予め位相合わせしておかねばならないという面倒がなくなり、これに伴い、ループ波形LWの汎用性、異なる波形データベース間での相互利用可能性を高めることができるので、極めて有利である。なお、初期位相情報SPに限らず、その他の位相管理情報を、当該ループ波形LWの波形データに対応づけて、波形メモリWMに記憶しておくようにしてもよい。例えば、ループ波形LWの終了点(ループエンドアドレス「LS+LL」に対応する波形サンプルデータ)の位相を示す情報(終端位相情報)を、位相管理情報として使用してもよい。また、初期位相情報SP又は終端位相情報等の位相管理情報は、絶対位相に限らず、相対位相で表現してもよい。例えば、任意の位相値を基準位相として、該基準位相に対する初期位相(若しくは終端位相)の位相差つまり相対位相で表すようにしてもよい。また、初期位相情報SP又は終端位相情報等の位相管理情報のデータ表現は、この実施例ではラジアン表現を用いるものとするが、それに限らず、角度表現あるいは、アドレス数による間接的位相表現等であってもよい。更に、位相管理情報は、ループ波形LWの初期位相や終端位相を示すものに限らず、例えば、当該ループ波形LWにおける所定の基準位相(例えば0位相)の波形サンプルデータが所在するアドレスを示す情報等であってもよい。勿論、位相管理情報を管理データとして記憶することなく、各ループ波形LWの初期位相を予め位相合わせしてなる波形データを波形メモリWMに記憶するようにしてもよい。
【0026】
図3はいくつかのループ波形の具体例を拡大して示す図であり、(a)に示すループ波形例1は初期位相情報SPが0である例、(b)に示すループ波形例2は初期位相情報SPがΔP1である例、(c)に示すループ波形例3は初期位相情報SPがΔP2である例、を示している。図で黒点で示した箇所が0位相(絶対位相の位相値0)に該当している。また、図の各例ではWN=1としている。この例では初期位相情報SPを絶対位相で表しているため、(a)のように初期位相が0位相である場合はSP=0、(b)のように初期位相がΔP1である場合はSP=ΔP1、(c)のように初期位相がΔP2である場合はSP=ΔP2、と表現される。これに対して、例えば絶対位相の位相値ΔP1を基準とする相対位相で初期位相情報SPを表現した場合は、(a)の例はSP=2π−ΔP1、(b)の例はSP=0、(c)の例はSP=ΔP2−ΔP1、と表現される。図において、ゼロ位相アドレスZPは、当該ループ波形における0位相(所定の基準位相)の波形サンプルデータが所在するアドレスを示す。図から明らかなように、このようなゼロ位相アドレスZPによってループ波形の初期位相を表現できる。このゼロ位相アドレスZPは、ループスタートアドレスLSに対する相対値で表されていてよい。位相管理情報は、その他適宜の表現が可能である。
【0027】
図4(a)は、波形メモリWMにおける記憶フォーマットを略示する図であり、波形メモリWMは管理データ領域と波形データ領域とからなる。波形データ領域は、上述したような様々なタイプの多数の単位波形の波形データ(具体的な波形サンプルデータ)をそれぞれ個別に記憶する領域である。管理データ領域は、波形データ領域に記憶している個々の波形データについて必要な各種の管理情報を記憶している領域である。
【0028】
図4(b)〜(d)は、管理データ領域に記憶される各波形データ毎の管理データの具体的な記憶フォーマットを、いくつかのタイプの単位波形について、例示するものである。(b)はノンループ波形NLWとループ波形LWからなるアタック部波形についての管理データの一例、(c)はループ波形LWのみからなる中間波形についての管理データの一例、(d)はループ波形NLとノンループ波形NLWからなるリリース部波形についての管理データの一例、を示す。図示の管理データフォーマットにおいて、タイプデータTYPEは、その単位波形がいかなるタイプのものであるかを示すデータである。例えば、(b)の場合は「ノンループ波形NLWとループ波形LWからなるアタック部波形」ということがタイプデータTYPEによって示され、(c)の場合は「ループ波形LWのみからなる中間波形」ということがタイプデータTYPEによって示され、(d)の場合は「ループ波形NLとノンループ波形NLWからなるリリース部波形」ということがタイプデータTYPEによって示される。その他、タイプデータTYPEは、上述した各種のタイプに応じて、当該タイプを示すことができるような情報からなる。識別データIDは、個々の波形データを識別するデータ(例えば個別波形データのファイル名)である。
【0029】
また、管理データは、当該単位波形の波形データを波形データ領域から読み出すために必要なアドレスデータやその他のデータを含んでいる。(b)の例では、スタートアドレスSA、ループスタートアドレスLS、ループ長さデータLL、ループ波数データWN、ループ波形の初期位相情報SPなどである。(c)の例では、ループスタートアドレスLS、ループ長さデータLL、ループ波数データWN、ループ波形の初期位相情報SPなどである。(c)の例では、ループスタートアドレスLS、ループ長さデータLL、ループ波数データWN、ループ波形の初期位相情報SP、エンドアドレスEAなどである。
【0030】
ところで、ループ波形LWにおいては、ループ長さデータLLとループ波数データWNとによって、1波つまり1周期波形当りのアドレス数(サンプル数)が判明する。この1波つまり1周期波形当りのアドレス数(サンプル数)を示すデータを波長データWLということにする。波長データWLは、下記の式(1)によって求まる。
WL=LL/WN …(1)
前述の通り、これらのデータ(つまり波長データWL)を用いて読み出しレートを調整することによって、所望の楽音ピッチに従う読み出しが可能となる。これによって、記録時のサンプリング周波数の違いやオリジナル音のピッチの相違などを考慮に入れた波形データ読み出し制御が可能となるので、所望の再生ピッチを保ちながら、記録時のサンプリング周波数やオリジナル音のピッチが異なる単位波形同士を接続したり、クロスフェード合成したりすることが容易に行えるようになる。
【0031】
同様の目的のために、ノンループ波形NLWにおいても、当該波形における1波つまり1周期波形当りのアドレス数(サンプル数)の代表値を示すデータ(波長データWL)を、管理データの中に含んで記憶しておくものとする。その場合、代表的な波長データWLは、一般的に、「記録時のサンプリング周波数」÷「オリジナル音のピッチ周波数」の式から得ることができる。なお、この種の波長データWLは、ノンループ波形NLWのみからなる単位波形の管理データにおいて記憶しておくようにし、ノンループ波形NLWとループ波形LWを含んでいる単位波形の管理データにおいては、ループ波形LWについて上記式(1)から得られる波長データWLをノンループ波形NLWにも流用するようにしてよい。
【0032】
次に、所望の楽音再生ピッチに従って波形メモリWMから波形データを読み出すための基本的な原理について説明する。
所望の楽音再生ピッチの周波数に比例する定数である「周波数ナンバ」(以下、Fナンバと略称する)を、所定の再生サンプリング周波数に対応する規則的時間間隔で繰り返し加算若しくは減算(つまり累算)し、その累算値の整数部をメモリ読出用アドレスとして、波形データの読み出しを行う波形読出原理は既に周知である。当実施例では、この波形読出原理に従うものとする。所望の楽音再生ピッチの周波数をfnとし、所定の再生サンプリング周波数をfsとすると、その標準的なFナンバ(これを標準FナンバFst(N)と表す)は、下記式(2)で求まる。
Fst(N)=fn/fs …(2)
標準FナンバFst(N)は、小数値からなり、適宜のFナンバテーブルに記憶されており、再生すべき楽音のピッチが、押鍵操作あるいはキーコード若しくはノートナンバ等の情報によって指定されたとき、該Fナンバテーブルから読み出される。
【0033】
上記の標準FナンバFst(N)は、所望の楽音再生ピッチの周波数fnの1周期に対応するアドレス数を1としたときのFナンバに相当する。つまり、Fst(N)を「fs/fn」回累算したときに、その累算結果が「1」になるような値である。しかし、実際のFナンバは、該Fナンバを再生サンプリング周波数fsに従う周期で「fs/fn」回累算したときに、その累算結果が波長データWLに相当するアドレス数(1周期分のアドレス数)になるような値であるべきなので、実際のFナンバ(これをF(N)とする)は、上記標準FナンバFst(N)と上記式(1)で求めた波長データWLを用いて下記式(3)に従って算出する。
F(N)=Fst(N)×WL …(3)
【0034】
更に、後述するように、再生楽音のピッチを時間的に変動制御するピッチ制御関数PV(vt)(ピッチベクトル)を使用して、再生ピッチを時変動制御する場合は、実際のFナンバF(N)は、下記式(4)に従って算出される。ただし、ピッチ変動なしのとき、PV(vt)=1である。
F(N)=Fst(N)×WL×PV(vt) …(4)
上記式(4)で求まるFナンバF(N)を、再生サンプリング周波数fsに従う周期で規則的に累算し、その累算値の整数部を読出アドレス(スタートアドレスSA又はLSに対する相対アドレス)として波形データを読み出すことにより、所望の楽音再生ピッチに対応する周波数fnを持つ波形を、ピッチ制御関数PV(vt)に従うピッチ時変動制御を行いつつ、再生読み出しすることができる。この場合の読出アドレスをADで示すと、ループ波形LWの波形データを読み出す場合は、下記式(5)のように表せる。
AD=LS + MOD.LL{ΣF(N)} …(5)
ここで、ΣF(N)は、FナンバF(N)を再生サンプリング周波数fsに従う周期で規則的に累算した値を示し、MOD.LL{ΣF(N)}は、該累算値ΣF(N)を、当該ループ波形LWのループ長さデータLLに対応する値をモジュロ数とする余り値、つまりΣF(N)をLLで割った商の余り値である。これにより、ループスタートアドレスLSから始まって、ループ長さデータLLの範囲のアドレス範囲で繰り返される(ループする)読出アドレスADが生成され、この読出アドレスADに従ってループ波形LWの波形データを繰り返し読み出し(ループ読み出し)することができる。
【0035】
なお、図2(a)のようなアタック部波形のノンループ波形NLWを読み出す場合は、読出アドレスADを下記式(6)に従って生成すればよく、これに従って該ノンループ波形NLWを1回だけ読み出す。
AD=SA + ΣF(N) …(6)
また、図2(c)のようなリリース部波形のノンループ波形NLWを読み出す場合は、読出アドレスADを下記式(7)に従って生成すればよく、これに従って該ノンループ波形NLWを1回だけ読み出す。
AD=LS+LL+ ΣF(N) …(7)
なお、「LS+LL」はリリース部波形のノンループ波形NLWのスタートアドレスを示している。
【0036】
なお、FナンバF(N)の累算値ΣF(N)の小数部の値を用いて、通常知られているように、波形データのサンプル値の補間演算を行い、記憶された波形データの分解能よりも精密な分解能で波形データを生成することができる。ところで、上記式(4)でFナンバF(N)を算出する場合、あるいは累算値ΣF(N)の演算過程において、演算のビット数(桁数)に限界があるため、下位ビットの丸め込み処理が行われる。その結果、誤差が生じることになるが、適当な周期で所定の誤差補正演算を行うようにすればよい。特に、後述するように、2つのループ波形をクロスフェード合成する場合に、両波形の初期位相のずれに応じた位相差を保持して両ループ波形の読出アドレスADの生成を行うことにより、結果的に両者のループ再生波形の位相合わせを行うようにしているので、上記の丸め誤差が両者の読出アドレスADの位相差に誤差をもたらし、ループ再生波形の位相合わせに誤差をもたらすことになる。そのようなクロスフェード合成に際しての各読出アドレスADの所定の位相差を狂わせる丸め誤差の影響を補正するために、両読出アドレスADの差が所定の位相差を保つように、適当な周期で強制的に誤差補正演算を行えばよい。例えば、512サンプルの波形データを再生する毎に(再生サンプリング周波数fsが48kHzの場合は約10ミリ秒毎)、あるいは4096サンプルの波形データを再生する毎に(約100ミリ秒毎)、といういうように、所定の時間間隔で、両ループ波形の読出アドレスADの差が、両者の初期位相SPの差を保つように、累算値ΣF(N)を修正すればよい。
【0037】
次に、ループ波形同士を接続する処理の基本例及びその時間軸伸縮制御例について説明する。
図5の(a)は、先行するループ波形Aと後続するループ波形Bを単純接続する例を示す。この場合は、先行するループ波形Aを所定回数だけループ読出した後、後続するループ波形Bのループ読出を行うように、切り換えることにより、接続を行う。その場合に、両者の初期位相情報SPを考慮して、接続点における先行するループ波形Aの終端と後続するループ波形Bの始まりの位相が合うように、後続するループ波形Bの読出開始アドレスを調整すればよい。例えば、図3(b)のループ波形例2が先行するループ波形Aであり、(c)のループ波形例3が後続するループ波形Bであるとすると、先行するループ波形Aのループ読出の最後においてその読出アドレスがゼロ位相アドレスZPまで到達したとき、後続するループ波形Bの読出に切換え、該ループ波形Bをそのゼロ位相アドレスZPから読出開始するようにすればよい。このように、単純接続する場合においても、両者の初期位相情報SPを利用して滑らかに接続できるよう位相調整処理を行うことができる。
【0038】
この場合、各ループ再生波形の持続時間つまりループ再生区間は、それぞれ時間制御情報によって可変制御することができる。例えば、時間軸伸縮を行なわないときのループ波形Aのループ再生区間の終了時点がtb0であるとすると、時間制御情報によって時間軸伸縮制御を行なうことで、該ループ波形Aのループ再生区間の終了時点がtb0の前後(例えばtb1又はtb2等)に増減制御される。勿論、次のループ波形Bのループ再生区間は、時間軸伸縮制御されたループ波形Aのループ再生区間の終了時点から開始する。また、次のループ波形Bのループ再生区間の時間軸伸縮制御は独自の時間制御情報に応じて独自に行なうことができる。すなわち、時間制御情報を時間的に可変とすることで、各ループ再生区間毎に独自の時間軸伸縮制御を行なう。なお、ループ波形の読出アドレスの変化レートつまり再生楽音のピッチは変化させずに、ループ再生区間のみを時間軸伸縮制御することができる。
【0039】
図5の(b)は、先行するループ波形Aと後続するループ波形Bをクロスフェード合成する例を示す。この場合は、クロスフェード区間1において、先行するループ波形Aをループ読み出しすると同時に、後続するループ波形Bもループ読み出しし、先行するループ波形Aのループ再生波形を図で点線で示すようなフェードアウト(立ち下がり)特性のエンベロープで振幅制御し、後続するループ波形Bのループ再生波形を図で点線で示すようなフェードイン(立ち上がり)特性のエンベロープで振幅制御し、両者を加算合成して、1つのループ再生波形を合成する。クロスフェード合成されたループ再生波形は、ループ波形Aからループ波形Bへと滑らかに変化することになる。その次のクロスフェード区間2においては、ループ波形Bをループ読み出しすると同時に、後続するループ波形Cもループ読み出し、両者を上述と同様にクロスフェード合成する。
【0040】
この場合も、各クロスフェード区間におけるループ再生波形の持続時間は、それぞれ時間制御情報によって可変制御するようにすることができる。例えば、時間軸伸縮を行なわないときのクロスフェード区間1の終了時点がtb0であるとし、それに対応するクロスフェードカーブ(フェードアウト及びインのエンベロープの傾き)がXFb0とすると、時間制御情報に応じて当該クロスフェード区間のクロスフェードカーブの傾きを変える(傾きを増す例をXFb1で示し、傾きを減らす例をXFb2で示す)ことで、該クロスフェード区間1の時間長を可変制御することができる。クロスフェード合成において、このようにクロスフェード区間の時間長がを可変するということは、合成される波形の形状が先行するループ波形から後続ループ波形へと変化する速さが時間制御情報によって可変制御されることを意味している。なお、この場合も、次のクロスフェード区間2は、時間軸伸縮制御されたクロスフェード区間1の終了時点から開始する。上記と同様に、時間制御情報は時間的に可変であり、次のクロスフェード区間2の時間軸伸縮制御は独自の時間制御情報に応じて独自に行なうことができる。
以下、さらに詳細に説明する例においては、クロスフェード合成によってループ波形同士の接続処理を行うものとする。
【0041】
2つのループ波形の読み出し出力をクロスフェード合成する場合、両者の位相が合っていないと、波形の打消が起こるので、好ましくない。そこで、クロスフェード合成する2つのループ波形の読み出し出力(つまりループ再生波形)の位相が合うように適切に位相調整してやる必要がある。そのために、各ループ波形の初期位相情報SPを使用し、両者の読出アドレスADを適切に位相調整することにより、両ループ再生波形の位相が合うように制御する。なお、「位相を合わせる」とは、必ずしも厳密に位相を合わせることのみを意味するのではなく、波形の打消が起こらない範囲で適切に位相調整を行なうことも含む。つまり「ゆるい位相合わせ」であってもよい。
【0042】
そのための一例として、クロスフェード合成する2つのループ波形の読出アドレスADi,ADi―1 を下記式(8)及び(9)に従って算出すればよい。これらの式における各変数AD,LS,LL,ΣF(N)の意味は、上記式(5)と同じであり、各変数に付された添字i―1 は、先行するループ波形についての変数であることを示し、添字iは、後続するループ波形についての変数であることを示す。すなわち、ADi―1 は先行するループ波形の読出アドレス、ADiは後続するループ波形の読出アドレスである。また、SPi―1 は先行するループ波形の初期位相情報SP(ラジアン表現)、SPiは後続するループ波形の初期位相情報SP(ラジアン表現)である。この例の場合、式(8)は上記式(5)と同じであり、先行するループ波形の読出アドレスADi―1 については、初期位相情報SPに応じたアドレスオフセット処理を行なっていない。
ADi―1 =LSi―1 + MOD.LLi―1{ΣFi―1(N)} …(8)
ADi=LSi + MOD.LLi{ΣFi(N)−(SPi−SPi―1)×WLi/2π} …(9)
【0043】
上記式(9)において、「−(SPi−SPi―1)×WLi/2π」の項は、初期位相SPiとSPi―1とSPiの位相差を、後続するループ波形の波長データWLiを1周期(=2π)とするアドレス数に換算したものである。これにより、一方の読出アドレスADiが、他方の読出アドレスADi―1 に対して、両者の初期位相SPの位相差「SPi−SPi―1」に対応するアドレス数分だけオフセットされ、両者の実際の波形データの読出位相が合うことになる。つまり、読出アドレスADi―1 によりその初期位相SPi―1 のアドレス0から波形データを読み出すとき、読出アドレスADiのアドレスはその初期位相SPiから「SPi−SPi―1」の位相差だけオフセットされたアドレス、つまり、SPi−(SPi−SPi―1)=SPi―1 の位相に対応するアドレスから波形データを読み出すこととなり、両者の読出波形データの絶対位相が合うことになる。
【0044】
図6は、上記2系列の読出アドレスADi―1,ADiが、両者の初期位相SPの位相差「SPi−SPi―1」に対応するアドレス数分だけオフセットした状態を保ちつつ、ループする状態を示したグラフである。縦軸がアドレス、横軸が時間である。それぞれのループ長さデータLLi―1,LLiに対応するアドレス範囲でループしている。この図から明らかなように、読出アドレス形成処理は、或る第1のループ波形の波形データを読み出すための第1のアドレス信号ADiと或る第2のループ波形の波形データを読み出すための第2のアドレス信号ADi―1 とを、該第1及び第2のループ波形の初期位相の差「SPi−SPi―1 」に応じた異なる態様でループさせてなるものであり、これにより、該第1及び第2のアドレス信号ADi,ADi―1 に従って前記第1及び第2のループ波形の波形データをそれぞれ繰返し読み出しすることでそれぞれに対応して形成される第1及び第2のループ再生波形の位相調整つまり位相合わせが行なわれるようになっている。なお、図6の例では、2つのループ波形のループ波数が「1」で、それぞれのループ周期Ti―1,Tiが再生ピッチの1周期Tに対応しているものとしている。そうすると、両アドレス信号ADi―1,ADiのループタイミングの時間差ΔTは、再生ピッチの1周期Tを2πとするラジアン表現に換算すると、
2π(ΔT/T)
と表すことができ、これが両ループ波形の初期位相SPi―1,SPiの位相差ΔSPに対応している。つまり、
ΔSP=SPi−SPi―1 =2π(ΔT/T)
なる関係が成り立つ。図示のように、この初期位相差ΔSPに対応するアドレスのずれを保持しつつ、各アドレス信号ADi―1,ADiがループする。
【0045】
ところで、クロスフェード区間が切り替わるときは、それまでの後続ループ波形が先行ループ波形に切り換わり、その次のループ波形が後続ループ波形となる。後続ループ波形から先行ループ波形に切り替わった読出アドレスADiの進展を滑らかにするには、クロスフェード区間の最後で、後続ループ波形の読出アドレスADiがそのループ波形の終了点アドレス(つまりLS+LL)に達したときに波形を切り替えるようにするとよい。そうすれば、上記式(9)に従ってアドレスオフセットしつつループしていた後続ループ波形の読出アドレスADiが次にとるべきアドレスはループスタートアドレスLSであることになり、クロスフェード区間の切り替えによって、次のサンプリング周期において、これが先行ループ波形切り替わって、その読出アドレスADi―1 が上記式(8)に従って算出されることとなったとしても、所定のループスタートアドレスLSを読出アドレスとして指定することとなり、問題のない制御が行なえる。
【0046】
クロスフェード合成する2つの読出アドレスADi―1,ADiの計算式は、上記式(8)、(9)に限らず、適宜変更可能である。例えば、下記式のように、夫々の初期位相SPi―1,SPiに相当するアドレス数分だけオフセットするようにしてもよい。
ADi―1 =LSi―1 + MOD.LLi―1{ΣFi―1(N)−SPi―1×WLi―1/2π} …(10)
ADi=LSi + MOD.LLi{ΣFi(N)−SPi×WLi /2π}…(11)
この場合も、両読出アドレスADi―1,ADiのループタイミングの時間差は、両者の初期位相SPの位相差「SPi−SPi―1」=ΔSPに対応するものとなり、両者の実際の波形データの読出位相が合うことになる。
【0047】
なお、上述したような、初期位相SPの位相差「SPi−SPi―1」を考慮して各読出アドレスADi―1,ADiのループタイミングに時間差を設定してそれぞれループ読出制御することにより、初期位相の異なる2つのループ波形の各ループ再生波形の絶対位相を実質的に合わせるようにした処理は、クロスフェード合成の場合に限らず、適宜のミキシング比で2系列またはそれ以上の系列のループ波形をミキシング合成(若しくは補間合成)するような場合にも適用することができる。また、必ずしも、初期位相情報SPを管理データ領域に予め記憶させておかなくてもよい。すなわち、任意の初期位相からなる2つのループ波形を合成しようとする段階になってから、両ループ波形を分析して両者の初期位相の差を求め、この位相差に応じて両ループ波形の読出アドレスのループタイミングをずらすことで、初期位相の異なる2つのループ波形の各ループ再生波形の絶対位相を実質的に合わせるようにすることができる。位相差の分析は、例えば、2つのループ波形の相互相関関数が最も大きくなる位相差を求めることで可能である。なお、予め各ループ波形の初期位相を合わせた状態で各波形データを波形メモリWMに記憶した場合は、前記式(9)、(10)、(11)における初期位相調整用の項が不要となるのは勿論である。
【0048】
次に、一連の音の波形を形成する処理について説明する。
基本的には、一連の音の波形は、複数の単位波形を所望の順序で選択して、その波形データを波形メモリWMから読み出し、これらを相互に接続することにより、形成される。一例として、予め設定された波形シーケンスデータによって、単位波形の選択順序と読み出し手順等が指定される。図4(e)は、そのような波形シーケンスデータの一例を示すものである。この波形シーケンスデータは、ROM101,RAM102,ハードディスク装置103,リムーバブルディスク装置104等の適宜のデータ記憶装置において予め記憶されているものであってよく、また、そのデータ内容の書き替え等の編集操作を適宜行なうことができるものである。
【0049】
図4(e)に示した波形シーケンスデータは、図7(a)に示すような態様で、複数の単位波形を組み合わせるようにした例に対応するものである。図4(e)において、まず、時間データt0と共に特定の単位波形Atk5を指定する波形選択データが記憶されている。時間データt0は、波形形成スタートタイミングを示すデータである。波形選択データによる指定値「Atk5」をインデックスとして、波形メモリWMから「Atk5」の識別データIDを持つ単位波形の管理データを読み出し、これに基づき該単位波形Atk5の波形データを所定の手順で読み出す。例えば、この単位波形Atk5のタイプは、図2(a)に示すようなノンループ波形NLWとループ波形LWとからなるアタック部波形である。次のデータXF5は、クロスフェード区間長データであり、特定のクロスフェード区間長(時間長)を指示している。クロスフェード区間長は、クロスフェードカーブの傾きに対応している。すなわち、クロスフェードカーブは、係数値0から1まで(または1から0まで)の範囲で直線的に変化する関数からなり、その傾きがそのまま0から1まで(または1から0まで)の変化に要する時間つまりクロスフェード区間長に対応している。次のデータLp10は、ループ波形のみからなる特定の単位波形Lp10を指定する波形選択データである。よって、上記データXF5は、単位波形Atk5の終端部分にあるループ波形と次のループ波形Lp10とをクロスフェード合成する際のクロスフェード区間長を指示している。
【0050】
図7の例では、以後、ループ波形のみからなる単位波形Lp12,Lp8,Lp7を順次接続し、それぞれのクロスフェード区間長をXF1,XF10,XF7,XF16のように順次設定することが示されている。よって、図4(e)のデータも、それに対応するシーケンスが得られるように、記憶されている。最後の単位波形Rel5は、図2(c)に示すようなループ波形LWとノンループ波形NLWとからなるリリース部波形である。データXF16によって区間長が指示されたクロスフェード区間ではループ波形Lp7とリリース部波形Rel5の始まり部分にあるループ波形との間でクロスフェード合成がなされる。
【0051】
図7(a)において、時点t1〜t6は、それぞれ使用する単位波形を切り替える時点を示している。これらの切り替え時点は、ノンループ波形の固有のデータ長やデータXFによって指定される各クロスフェード区間長によってそれぞれ決まってくるが、後述する波形データの時間軸伸縮制御に伴って適宜可変制御される。なお、図7(a)に示された序数iは、波形シーケンスにおける単位波形の切り替えステップを示す序数であり、1,2,3,…と順に変化する。また、図7(a)に示されたステート情報STは、シーケンスの進展に伴って変化するシーケンス管理情報であり、例えば、0のとき発音停止ステートを示し、1のときアタックステートを示し、2のとき単位波形を切り替える準備を行なう過渡的ステートを示し、3のときループ波形のクロスフェード合成を行なうクロスフェードステートを示し、4のときリリースステートを示す。
【0052】
上述したような波形シーケンスに従って、所定の単位波形が順次読み出され、その際、ループ波形にあっては適宜ループ読み出しされ、かつ、単位波形同士の接続はループ波形同士のクロスフェード合成によって滑らかに行なわれ、全体として、一連の音の波形が形成される。この一連の音とは、1つの音若しくは音符を構成するものに限らず、複数の音若しくは音符(つまりフレーズ)を構成するものであってもよい。なお、その際、ループ波形同士のクロスフェード合成に際しては、前述の通り、それぞれの初期位相情報SPを使用して位相合わせを行ないつつ、ループ読み出しが行なわれる。なお、所望の一連の音の波形を形成するための波形シーケンスデータは、メモリに予め記憶されたものを使用する場合に限らず、演奏者のリアルタイムの選択・設定操作に応じてリアルタイムで作成したり、変更したりできるようにしてよい。
【0053】
更に、この実施例においては、上記のような波形シーケンスに従って生成する波形の様々な楽音要素を、各種のパラメータによって可変制御するようにしている。制御対象となる楽音要素の代表例は、ピッチ、音色、振幅、時間等である。それぞれの楽音要素についての制御量は、時間的に可変のエンベロープデータの形で与えられる。図7(b)〜(d)は、いくつかの楽音要素制御データの一例を示したものであり、(b)は時間要素を制御するデータ(時間制御情報)の一例、(c)は振幅要素を制御するデータの一例、(d)はピッチ要素を制御するデータの一例、である。このような各種の制御データの時間変化のパターンつまりエンベロープ形状は、テンプレートとして予め準備されていてよいし、または所望のテンプレートをユーザーが自由に作成できるようにしてもよい。なお、各テンプレートは、適宜のメモリ又はテーブル等に予め記憶しておくようにしてもよいし、また、必ずしもメモリ又はテーブル等に予め記憶しておくことなく、適宜演算等によって形成するようにしてもよい。
【0054】
個々の波形シーケンスに対応して、これらの各種楽音要素制御データの所定のテンプレートを指定するデータを、ベクトルデータとして、用意しておく。図7(b)のような時間要素制御データ(時間制御情報)を特定するベクトルデータを、タイムベクトルTVということにする。このタイムベクトルTVによって、所定のエンベロープ状の(つまり時間変化しうる)時間要素制御データ(時間制御情報)のテンプレートを特定し、発生することができる。図7(c)のような振幅要素制御データを特定するベクトルデータを、振幅ベクトルAVということにする。この振幅ベクトルAVによって、所定の振幅エンベロープのテンプレートを特定し、該振幅エンベロープを発生することができる。図7(d)のようなピッチ要素制御データを特定するベクトルデータを、ピッチベクトルPVということにする。このピッチベクトルPVによって、所定のピッチ変動エンベロープのテンプレートを特定し、該ピッチ変動エンベロープを発生することができる。ピッチベクトルPVに基づくピッチ変動エンベロープ値は、Fナンバに対する比率で表されており、ピッチ変化させない場合は「1」、ピッチをアップする場合は「1」以上の値、ピッチをダウンする場合は「1」未満の値、である。
【0055】
タイムベクトルTVに基づき行なわれる時間要素の制御とは、波形データが時間軸で存在する長さ(つまり持続時間長)を伸張したり圧縮したりする制御(以下、これを時間軸伸縮制御、略してTSC制御、という)である。この種の時間軸伸縮制御すなわちTSC制御は、楽音再生ピッチとは独立に波形データの存在時間長を制御できるようにすることが望ましい。そのためのタイムベクトルTVに基づく時間軸伸縮制御情報は、時間軸伸縮比を示すデータ(これをCRateという)として表され、例えば、時間軸伸縮を行なわない場合「1」、時間軸伸張を行なう場合「1」未満の値、時間軸圧縮を行なう場合「1」以上の値、で表される。
【0056】
更に時間軸伸縮制御すなわちTSC制御について説明する。ループ波形の場合は、基本的には、ループ回数を可変することによって、比較的簡単に、楽音再生ピッチとは独立に、ループ再生波形全体の時間長を可変制御することができる。つまり、クロスフェード区間長データXFによって特定のクロスフェードカーブが特定されると、それに伴ってクロスフェード区間長(時間長若しくはループ回数)が決まってくる。ここで、このクロスフェードカーブの傾きをタイムベクトルTVが示す時間軸伸縮比によって可変制御することにより、クロスフェードの速さが可変制御され、結局、クロスフェード区間の時間長が可変制御される。その間、楽音再生ピッチには影響を与えないので、結局、ループ回数が可変制御されることで当該クロスフェード区間の時間長が可変制御される。
【0057】
一方、ノンループ波形の場合は、楽音再生ピッチとは独立に、時間軸上におけるその存在時間長を可変制御することはそれほど簡単ではない。しかし、本出願人が既に出願済みの新技術である「波形データの時間軸伸縮制御」技術を用いることで、ノンループ波形の時間軸伸縮制御も可能である。すなわち、簡単に要約すれば、一定の波形データ量からなるノンループ波形を、一定の再生サンプリング周波数と所定の再生ピッチを維持しつつ、その時間軸上の波形データ存在時間長を伸縮するために、圧縮する場合は、波形データの適宜の部分を飛び越して読み出しを行ない、伸張する場合は、波形データの適宜の部分を繰り返し読み出しするようにし、そして、飛び越し若しくは部分的繰り返し読み出しによる波形データの不連続性を除去するためにクロスフェード合成を行なうようにする。この手法を、本実施例におけるノンループ波形部分でのTSC制御においても適用することができるし、また、必要に応じてループ波形部分でのTSC制御においても適用することができる。
【0058】
ところで、図7(b)〜(d)の横軸は時間軸であるが、この変数は実際の時間ではなく、図7(b)に示すようなタイムベクトルTVに基づく時間軸伸縮比データCRateに応じて伸縮制御された時間軸(これをバーチャルタイムvtという)である。すなわち、図7(a)に示すような再生波形データは、その時間軸での存在時間が、図7(b)に示すタイムベクトルTVに応じて伸縮制御されるので、この伸縮制御にあわせて、図7(b)〜(d)に示す各ベクトルに基づく制御データの時間軸も伸縮してやる必要がある、つまり、各楽音要素の制御データの時間軸上の存在時間も、再生波形データの時間軸伸縮に同期させて、伸縮してやる必要があるからである。この理由により、前記式(4)におけるピッチ制御関数PV(vt)の時間変数としてバーチャルタイムvtを用いている。また、振幅エンベロープ関数AV(vt)及びピッチ変動エンベロープ関数PV(vt)の時間変数としてもバーチャルタイムvtが用いられる。
【0059】
次に、図4(e)あるいは図7(a)に示したような波形シーケンスにしたがって、図1におけるコンピュータによって波形形成処理を行なう場合の処理プログラムの一例を図8〜図10によって説明する。
図8は、波形再生のために波形シーケンスを進行する処理の概略を示す。まず、再生しようとする波形シーケンスデータを指定する(ステップS1)。次に、ステートSTを「0」にセットし、波形再生を開始する準備をする(ステップS2)。次のステップS3では、ストップイベントSTOPの有無をチェックする。ストップイベントSTOPが与えられていない場合は、時間データt0によって示された波形形成スタートタイミングが到来したかどうかをチェックする(ステップS4)。NOであれば、ステップS3に戻り、ステップS3,S4を繰り返す。波形形成スタートタイミングが到来し、ステップS4でYESと判断されたら、ステートSTを「1」にセットすると共に序数iを「1」にセットし、最初の単位波形つまりアタック部波形を再生する準備をする(ステップS5)。すなわち、波形メモリWMの管理データ領域から該当するアタック部波形(例えば図4(e)及び図7(a)のAtk5)の各管理データを読み出し、該アタック部波形Atk5の波形データを波形メモリWMの波形データ領域から読み出すことを開始する準備をする。次に、ステートSTが「2」になったかどうかをチェックし(ステップS6)、NOであれば、ステートSTが「2」になるまで待機する。
【0060】
図9は、再生サンプリング周波数fsの1周期毎に規則的に行なわれる割込み処理の一例を示す。1サンプル当たりの波形データの読み出し及び形成処理は、この1回の割込み処理において行なわれる。従って、図8の処理がステップS6で待機している間、図9の割込み処理が繰り返し実行されて、波形データの読み出し及び形成処理が行なわれる。この割込み処理では、まず、ステートSTが「0」かどうかをチェックし(ステップS20)、「0」であれば割込みを直ちに終了する。「0」でなければ次のステップS21に行き、バーチャルタイムvtを計算する。この計算は、タイムベクトルTVによって指定される時間伸縮制御データCRateの現在値を累算することによって行なう。次に、求めたバーチャルタイムvtに応じて、該タイムベクトルTVに対応するテンプレートに基づく時間伸縮制御データTV(vt)(つまりCRateの新たな現在値に相当するものであり、以下、これを単に「タイムベクトル値TV(vt)」という)及びピッチベクトルに対応するテンプレートに基づくピッチ変動エンベロープ関数の現在値PV(vt)(以下、これを単に「ピッチベクトル値PV(vt)」という)を発生する(ステップS22)。つまり、今回求めたバーチャルタイムvtの値を時間変数として、図7(b),(d)に示すような時間伸縮制御データCRateの瞬時値とピッチ変動エンベロープの瞬時値を読み出す(若しくは演算等によって生成する)。
【0061】
次に、ステートSTが「3」になっているか否かをチェックする(ステップS23)。ループ波形の読み出しステートでないならば、NOであり、ステップS24に行き、Fナンバ生成処理を行なう。このFナンバ生成処理では、前記式(4)に従って、ノンループ波形を読み出すためのFナンバF(N)を生成する。つまり、再生しようとする楽音のピッチに対応する標準FナンバFst(N)と、波長データWLと、ピッチベクトル値PV(vt)とに基づき、波形読出アドレス演算に使用する、ピッチ制御済みのFナンバF(N)を求める。
【0062】
次に、ステップS25では、FナンバF(N)をサンプリング周期毎に累算することにより、基本的には、前記式(6)又は式(7)に示すような、ノンループ波形を読み出すための読出アドレスADiを発生する。ただし、この読出アドレスADiの発生はステートSTを考慮して行なうものとし、ステートSTが「1」又は「4」のときはノンループ波形NLW(アタック部又はリリース部波形のノンループ波形)を読み出すための読出アドレスADiを発生するが、ステートSTが「2」(波形切り替えの過渡的状態に対応している)のときはループ波形LW(アタック部又はリリース部波形におけるノンループ波形)を読み出すための読出アドレスADiを発生する。なお、ノンループ波形部分での時間軸伸縮制御を行なう場合は、このステップS25において、タイムベクトル値TV(vt)つまり時間軸伸縮比CRateに応じて、読出アドレスADiの発生を更に適宜制御する。
次に、ステップS26では、読出アドレスADiに基づいて波形メモリWMの波形データ領域から波形データを読み出す。その際に、前述のように、FナンバF(N)の累算値の小数部(つまり読出アドレスADiの小数部)に応じて波形サンプル間の補間演算を行なうようにするとよい。
【0063】
次のステップS27では、ステートSTが「1」でかつアタック部波形のノンループ波形部分のエンドアドレスANendに達したかをチェックする。このアタック部波形のノンループ波形NLWの部分のエンドアドレスANendは、アタック部波形のループスタートアドレスLS(図2(a)参照)の1つ前のアドレス「LS−1」であり、管理データにおけるループスタートアドレスLSに基づき取得できる。読出アドレスADiがアタック部波形のノンループ波形のエンドアドレスANendにまだ達していなければ(つまりノンループ波形の読み出し中)、ステップS27はNOであり、ステップS28に行く。
ステップS28では、ステートSTが「4」でかつリリース部波形のエンドアドレスEA(図2(c)参照)に達したかをチェックする。読出アドレスADiがリリース部波形のエンドアドレスEAにまだ達していなければ、ステップS28はNOであり、ステップS29に行く。
【0064】
ステップS29では、バーチャルタイムvtに応じて振幅ベクトル値AV(vt)を発生する。つまり、今回求めたバーチャルタイムvtの値を時間変数として、図7(c)に示すような振幅ベクトルAVに基づく振幅エンベロープの瞬時値を読み出す(若しくは演算等によって生成する)。そして、上記ステップS26で生成された波形サンプルデータの振幅を該振幅ベクトル値AV(vt)によって制御し(ステップS30)、振幅制御された波形サンプルデータを、バス111を介して波形インターフェース107のディジタル/アナログ変換器(DAC)に対して出力する(ステップS31)。なお、複数チャンネル分の波形データを同時並行的に形成する場合は、上述したステップS20〜S30の処理をそれぞれ各チャンネルに対応して複数回実行し、ステップS30の次にチャンネル合成ステップを設け、各チャンネルの波形サンプルデータを合計してステップS31で出力する。
【0065】
このように、再生サンプリング周波数fsの1周期毎に、図9の割込み処理が実行され、1サンプル分の波形データが生成される。これにより、最初の単位波形であるアタック部波形のノンループ波形NLWとそれに続くループ波形LWが順次読み出される。ループ波形LWの1回の読み出しが終了して、読出アドレスADiがアタック部波形のノンループ波形部分のエンドアドレスANendに到達すると、ステップS27がYESとなり、ステップS32に行き、ステートSTを「2」にセットする。その後、ステップS29〜S31に行く。
【0066】
図8に戻ると、ステップS6でステートSTが「2」となったことを検出すると、ステップS7に行き、次の波形を読み出す準備をする。すなわち、波形シーケンスにおける次のステップの内容を読み出して(図4(e))、次に読み出すべき波形データの情報を取得し、それに応じて必要な準備処理を行なう。図4(e)の例の場合、Atk5を読み出したシーケンスステップの次として、クロスフェード区間長データXF5とそれに続くループ波形Lp10を選択する波形選択データを、波形シーケンスデータメモリ部から読み出す。
次のステップS8では、次の単位波形のタイプが何であるかを判定する。ループ波形であれば、ステップS9に行き、ステートSTを「3」にセットすると共に、序数iを1増加する。そして、ステップS6に行き、ステートSTが「2」になるまで待機する。なお、ステップS8では、リリース部波形のように先頭にループ波形LWを持つものについても、その先頭のループ波形LWの読出がまだ行なわれていない場合は、ループ波形と判定して、ステップS9に行く。また、過渡的ステートであるステートST=「2」をループ波形のループエンドまで続けてから、ステートSTを「3」に切り替えるために、ステップS9では、読出アドレスがループエンド(LS+LL)に達したことを確認してから、ステートSTを「3」に切り替えると共に序数iを1増加するようにするとよい。
【0067】
一方、図9では、ステートSTが「3」にセットされると、ステップS23がYESに分岐し、ループ読出制御を行なうルーチンに行く。ステップS33は前記ステップS24と同様の「Fナンバ生成処理」であるが、クロスフェード合成のために、先行するループ波形のFナンバFi―1(N)と、後続するループ波形のFナンバFi(N)とを、前記式(4)に従って、それぞれ別々に生成する。各ループ波形の波長データWL(1波当たりのアドレス数)は任意であるため、夫々の波長データWLi―1,WLiを用いて前記式(4)の演算を行ない、各ループ波形毎のFナンバFi―1(N),Fi(N)を求めてやる必要がある。なお、今の例の場合、先行するループ波形は、アタック部波形の終端に付加されたループ波形であり、後続するループ波形は、新たに選択された上記ループ波形Lp10である。
次のステップS34は、前記ステップS25と同様に読出アドレスADを生成する処理であるが、ループ読み出し及びクロスフェード合成のために、先行するループ波形の読出アドレスADi―1 は前記式(8)に従って算出し、後続するループ波形の読出アドレスADiは前記式(9)に従って算出する。次のステップS35では、各読出アドレスADi―1,ADiに従って、対応する各ループ波形の波形データをそれぞれ読み出すと共にサンプル間補間演算をそれぞれ行なう。
【0068】
次のステップS36では、クロスフェード区間長データXF5によって定まる傾き特性を持つクロスフェード関数XFの時間変数として、現在のバーチャルタイムvtを適用し、クロスフェード係数の現在値XF(vt)を発生する。例えば、クロスフェード関数XFが直線状の1次関数である場合は、バーチャルタイムvtの値にデータXF5の値を掛けることで、クロスフェード係数の現在値XF(vt)を得ることができる。すなわち、時間伸縮比が1の場合は、バーチャルタイムvtは実時間に対応しており、1サンプリング周期毎に1増加する時間関数であるから、これに、データXF5を掛けることにより、該データXF5の値に応じた傾きを持つ1次関数を作成することができ、これをクロスフェード関数XF(vt)とすることができる。これを式で示すと、
XF(vt)=XF5×vt+C
と表せる。ただし、Cは任意の定数である。タイムベクトルTVの変化によってバーチャルタイムvtの増減率(つまり傾き)が変化すると、これにデータXF5を掛けることにより得られるクロスフェード関数XF(vt)の傾きも変化する。このことは、逆に言えば、クロスフェード区間長データXF5によって定まる傾き特性を持つクロスフェードカーブの傾きを、タイムベクトルTVの現在値に応じて可変制御していることと同じである。こうして、タイムベクトルTVに応じて時間軸伸縮制御がなされたクロスフェード関数XF(vt)を発生することができる。一般化して示すと、クロスフェード関数XFが変数xについての算術関数f(x)若しくはテンプレートtbl(x)で表されているとすると、変数x=vtとして、FX=f(vt)又はtbl(vt)で表すことができる。なお、具体的には、クロスフェード関数XF(vt)が0から1まで変化する小数値からなるものであるとすると、フェードイン用のクロスフェード係数としてXF(vt)を使用し、フェードアウト用のクロスフェード係数は「1−XF(vt)」を使用する。
【0069】
次のステップS37では、所定のクロスフェード終了点XFendに達したかをチェックする。クロスフェード終了点XFendとは、クロスフェード区間の終了時点を示すものである。すなわち、クロスフェード関数XF(vt)の値つまりフェードイン側(後続波形側)のクロスフェード係数値が最大値「1」に達したら、そのまま「1」を保持するようになっており、このクロスフェード係数値が最大値「1」になった後、フェードイン側(後続波形側)の読出アドレスADiが当該ループ波形の最終点のアドレス(つまりLS+LL)に達したときを、クロスフェード終了点XFendと判定する。クロスフェード終了点XFendにまだ達していなければ、ステップS37はNOであり、ステップS38に行き、クロスフェード関数XF(vt)の値に応じて各ループ波形の読出波形データ(ループ再生波形)をクロスフェード合成する。その後、ステップS29〜S31に行く。
【0070】
再生サンプリング周波数fsの1周期毎に、図9の割込み処理が実行され、ステップS33〜S38のルーチンが繰り返し実行され、各ループ波形の繰り返し読み出しと、その読出出力波形データ(ループ再生波形)のクロスフェード合成とが行なわれる。やがてクロスフェード終了点XFendに達すると、ステップS37がYESとなり、ステップS39に行き、ステートSTを「2」にセットする。こうして、1つのクロスフェード区間についてのクロスフェード合成処理が完了する。
【0071】
図8に戻ると、ステップS6でステートSTが「2」となったことを検出すると、ステップS7に行き、次の波形を読み出す準備をする。図4(e)の例の場合、Lp10を読み出したシーケンスステップの次として、クロスフェード区間長データXF1とそれに続くループ波形Lp12を選択する波形選択データを、波形シーケンスデータメモリ部から読み出す。こうして、前述と同様の、ループ読み出し処理とクロスフェード合成処理とが、今度は異なるループ波形について行なわれることになる。すなわち、今回の例の場合、先行するループ波形は、前回後続ループ波形であったループ波形Lp10であり、後続するループ波形は、新たに選択された上記ループ波形Lp12である。
【0072】
こうして、所定の波形シーケンスに従って、順次に、ループ波形を切り替えながら、ループ読み出し処理とクロスフェード合成処理とが行なわれ、音の部分的な区間を構成する波形が、滑らかなつながりをもって、次々に形成される。
やがて、図8のステップS7の処理により、最後のループ波形Lp7の次の波形シーケンスステップとして、クロスフェード区間長データXF16とリリース部波形Relを選択する波形選択データが読み出されると(図4(e))、次に読み出すべき波形データの情報としてリリース部波形Relの始端にあるループ波形LWのデータを取得し、それに応じて必要な準備処理を行なう。そして、その次のステップS8では、次の波形のタイプがループ波形であると判定して、ステップS9に行き、ステートSTを「3」にセットする。そして、ステップS6に行き、ステートSTが「2」になるまで待機する。こうして、図9の割込み処理によって、最後のループ波形Lp7とリリース部波形Relの始端にあるループ波形LWとのループ読み出し処理とクロスフェード合成処理とが、データXF16に対応するクロスフェード区間長で、行なわれるようになる。この最後のクロスフェード区間が終了すると、図9のステップS39でステートSTが「2」にセットされる。
【0073】
それから、図8のステップS7では、次に読み出すべき波形データの情報としてリリース部波形Relのノンループ波形NLWのデータを取得し、それに応じて必要な準備処理を行なう。そして、その次のステップS8では、次の波形のタイプがリリース部波形Relのノンループ波形NLWであると判定して、ステップS10に行き、ステートSTを「4」にセットする。次に、ステップS11では、ステートSTが「0」になるまで待機する。一方、図9では、ステップS23のNOから、ノンループ波形読出用のルーチンに分岐し、ステップS25,S26の処理によって、リリース部波形Relのノンループ波形NLWを読み出すためのアドレスADiを生成し、その波形データを順次読み出し、かつ、サンプル間補間等を行なう。やがて、読出アドレスADiが、リリース部波形RelのエンドアドレスEAに達すると、ステップS28がYESとなり、ステップS40に行って、ステートSTを「0」にセットする。こうして、発音終了状態となる。図8のステップS11では、ステートSTが「0」になったことを確認すると、ステップS3に戻り、ステップS3,S4のループを繰り返す。波形シーケンスにおける次の音を発生すべきタイミングが到来すると、前述のようにステップS4がYESとなり、前述と同様の処理が開始される。他方、ストップイベントSTOPが、シーケンスデータに基づき又は手動操作等に応じて、発生されると、図8の処理を終了する。すなわち、1つの波形シーケンスにおいて複数の音を断続的に発生するように、波形シーケンスを組むことができる。つまり、1つの波形シーケンスによって、1つの音符に対応する楽音波形を記述することができるのみならず、複数の音符(フレーズ)に対応する楽音波形を記述することができる。
【0074】
なお、上記の例では、過渡的なステートST=「2」をループ波形のループエンドまで続けてからステートST=「3」に切り替えるように説明した。これによってクロスフェード区間の始まりが先行ループ波形のループスタートアドレスLSに一致するようになる。しかし、これに限らず、ステートST=「2」をループ波形のループエンドまで続けずに、図8のステップ9において、即座にステートST=「3」に切り替えるようにしてもよい。その場合は、クロスフェード区間が先行ループ波形の任意のアドレスから始まるが、そのクロスフェード開始アドレス分だけ後続ループ波形の読出アドレスADiの開始値をオフセットする(初期位相差に対応するオフセット分よりさらにオフセットする)ようにすればよい。
【0075】
図11は、以上説明した実施例によって実現可能なTSC制御の具体例を示す図である。(a)は、複数のループ波形#1,#2〜#8,#9を順次切り替えてループ再生を行なうと共にクロスフェード合成することで一連の音の波形を形成するようにした場合のオリジナル再生波形例を示すもので、(b)のように、全発音期間中においてタイムベクトルTVの時間軸伸縮比CRateを「1」に維持することにより得られる波形例である。なお、ループ波形#1はアタック部波形Atkの終端に含まれるループ波形、ループ波形#9はリリース部波形Relの始端に含まれるループ波形、他のループ波形#2〜#8はそれぞれ単独のループ波形である。同図(c)は、(d)のようにタイムベクトルTVの時間軸伸縮比CRateを適宜時間的に変化させた場合において得られる再生波形例を示す。この例の場合、概ね、ループ波形#1〜#5のループ再生区間(クロスフェード区間)でタイムベクトルTVの時間軸伸縮比CRateが1以上の適宜の値をとり、ループ波形#5〜#9のループ再生区間(クロスフェード区間)でタイムベクトルTVの時間軸伸縮比CRateが1未満の適宜の値をとっている。なお、図11(a),(c)は振幅ベクトルAVに応じて波形の振幅エンベロープを制御済みの状態例を図示している。タイムベクトルTVの時変動に合わせて、前述の通り、振幅ベクトルAVの時間軸が伸縮制御されるので、波形の時間軸伸縮変化に同期した適切な振幅エンベロープ付与がなされている。すなわち、この場合の振幅エンベロープの基本特性は、アタック部から中間の所定のループ波形#5の切り換わり時点の辺りまで振幅が漸増するクレッシェンド特性を示し、そこからリリース部まで振幅が漸減するデクレッシェンド特性を示しているが、波形の時間軸伸縮制御がなされても、それに連動して振幅エンベロープが時間軸伸縮制御されることにより、所定のループ波形#5の切り換わり時点の辺りまでクレッシェンド特性を示し、それ以後はデクレッシェンド特性を示すという基本的特徴を維持することができる。このような波形の時間軸伸縮制御に連動した他の楽音要素の時間軸特性の伸縮制御は、各楽音要素の時間軸制御がばらばらにならずに、一体的に同期して変化を示すものとなるので、良好である。
【0076】
図12は、以上説明した実施例によって実現可能なTSC制御の別の具体例を示す図である。同図の例は、ビブラート成分を持つ波形を複数のループ波形を用いることによってデータ圧縮し、それを時間軸伸縮制御して波形再生する例を示す。すなわち、複数のループ波形の組合せにより、ビブラートのように高品質なアーティキュレーションを持つ波形を、制御性豊かに形成することができる例を示している。同図(a)は、ビブラートを含むオリジナル波形を例示する。このオリジナル波形においては、ビブラートの1周期において波形ピッチが変動しているのみならず、振幅も変動している。(b)は(a)のオリジナル波形から分散的に複数のループ波形a1,a2,a3,a4を取り出す例を示している。例えば、これらのループ波形a1〜a4としては、波形形状(音色)が異なっているものを選び、適宜のデータサイズで切り出し、ピッチ及び振幅について規格化処理を施し、前述のように必要な管理データを付加して、その波形データを波形メモリWMに記憶する。この読出し法は、上述のように、各ループ波形a1〜a4を順次ループ読出しすると共にクロスフェード合成することにより行なう。
【0077】
図12(c)は、ビブラート1周期の間でのピッチ変動特性を示すピッチベクトルPV(ピッチ変化エンベロープ)の一例を示している。なお、このピッチベクトルPVのピッチ変化パターンは図示では高ピッチから始まって低ピッチに移行し、最後に高ピッチに戻るパターンであるが、これに限らず、他のパターン(例えば低ピッチから高ピッチに移行し、低ピッチに戻るパターンや、中間のピッチから始まって高ピッチ→低ピッチ→中間ピッチに戻るパターンなど)であってもよい。
【0078】
図12(d)はループ読出した各ループ波形a1〜a4に対するクロスフェード制御波形を例示している。(c)のピッチベクトルPVに従うピッチで最初はループ波形a1とa2をそれぞれループ読出し(繰返し読出し)し、先行するループ波形a1のループ再生波形に対してはフェードアウト、後続するループ波形a2のループ再生波形に対してはフェードインの振幅制御をして両者を合成する。これにより、ループ波形a1からa2に向かってその波形形状がクロスフェードして順次変化していき、かつそのクロスフェード合成波形のピッチがピッチベクトルPVに従うピッチで順次変化する。以下、同様に波形を順次切換えて、a2とa3とで、次にa3とa4とで、次にa4とa1とで、クロスフェード合成をそれぞれ行う。
図12(e)は、ビブラート1周期の間での振幅変動特性を示す振幅ベクトルAV(振幅変化エンベロープ)の一例を示している。クロスフェード合成した波形に対して付与する該振幅ベクトルAVに応じた振幅エンベロープを付与する。勿論、振幅ベクトルAVに応じた振幅エンベロープの付与は、クロスフェード合成の前に行なってもよく、若しくはクロスフェード合成と同時に行なってもよい。
【0079】
図12(f)は合成された波形データを示す。この波形データは、ビブラート1周期の間で、その波形形状がループ波形a1から順にa4まで滑らかにクロスフェードされて変化していき、かつ、そのピッチはピッチベクトルPVに従って変化していくことによりビブラートが付けられたものである。上記のようなビブラート1周期分の波形データの合成処理を繰り返すことにより、複数のビブラート周期にわたる波形データを合成することができる。その場合、(c),(e)に示すようなビブラート1周期分のピッチベクトルPV及び振幅ベクトルAVを必要なビブラート周期数分だけループさせればよい。
【0080】
図12の例においては、(d)に示す各クロスフェード区間の時間長を所望のタイムベクトルTVに応じてTSC制御することにより、楽音再生ピッチ(ループ波形読出アドレスの変化レート)を変化させずに該TSC制御を行なった場合は、ビブラート1周期の時間長を伸縮制御することができ、これにより、ビブラート周波数の制御が行なえる。なお、その場合、タイムベクトルTVを、(c),(e)に示すようようなピッチベクトルPV及び振幅ベクトルAVと同様にビブラート1周期分に対応して用意した場合は、ビブラート1周期分の該タイムベクトルTVを必要なビブラート周期数分だけループさせればよい。なお、ピッチベクトルPV及び振幅ベクトルAVの出力値は、タイムベクトルTVに基づいて生成されるバーチャルタイムvtの関数として記述されているので、ピッチベクトルPV及び振幅ベクトルAVの時間軸も、タイムベクトルTVに応じて伸縮制御される。
一方、ピッチベクトルPVが示すピッチ変化エンベロープ特性を上下にシフトすることにより、ビブラート波形の楽音再生ピッチを可変制御することができる。その場合、タイムベクトルTVについては変更しないようにすることにより、楽音再生ピッチにかかわらず、ビブラート1周期の時間長を一定に維持するよう制御することができる。
【0081】
なお、上記では、各ループ波形a1〜a4のピッチと振幅を規格化して波形メモリWMに記憶しておくようにした例について説明したが、ピッチまたは振幅が規格化されていないループ波形を使用し、そのピッチと振幅をピッチベクトルPV及び振幅ベクトルAVで制御することもできる。その場合、ループ波形固有のピッチとピッチベクトルPVとの差分で波形読出速度を制御すると共に、ループ波形固有の振幅と振幅ベクトルAVとの差分でレベル制御を行なうようにすればよい。
【0082】
なお、複数の波形シーケンスを組み合わせることにより、楽曲の自動演奏を行なうことができる。そのために、楽譜の音符列に対応するノートシーケンスを用いるようにするとよい。ノートシーケンスは、MIDIの自動演奏シーケンスデータと同様のものであってよく、例えば、イベントデータで、ノートつまり再生すべき楽音のピッチと発音タイミングを指定するとともに該ノートの発生のために使用すべき波形シーケンスや各ベクトルを指定すればよい。または、自動演奏シーケンスに応じて、ノートを指定するイベントデータ、波形シーケンスを指定するイベントデータ、各ベクトルを指定するイベントデータを、それぞれ別個に発生したり、あるいは、ノートを指定するイベントデータに応じて他のイベントデータを発生するようにしてもよい。
【0083】
各波形シーケンスの内容や、各波形シーケンスに対応するベクトルデータTV,AV,PVの内容等は、ユーザーによって自由に編集することが可能である。図10(a)はベクトルエディット処理のフローチャート例を示す。まず、ユーザーの操作によって、所望の波形シーケンスを選択して当該波形シーケンスに対応する各種楽音要素のどの楽音要素のベクトルを変更しようとするのかを指定する(ステップS41)。次に、ユーザーの操作に応じて、指定した楽音要素のベクトルデータを変更することにより別のテンプレートに差し替えたり、該ベクトルデータの変更はせずに、それに対応するテンプレートの内容つまり当該ベクトルデータによって指定される具体的な時変動制御データの内容を適宜変更する、等の処理を行なう(ステップS42)。
図10(b)は波形シーケンスエディット処理のフローチャート例を示す。まず、ユーザーの操作によって、所望の波形シーケンスを選択して当該波形シーケンスにおけるどの位置の単位波形を編集したいかを指定する(ステップS43)。次に、ユーザーの操作に応じて、指定された位置に任意の単位波形を追加挿入したり、指定された位置にある単位波形を削除したり、指定された位置にある単位波形を別の単位波形に変更したり、指定された位置におけるクロスフェード区間長データXFの値を変更する、等の処理を行なう(ステップS44)。
【0084】
上記実施例では、図9に示す割込み処理によって波形サンプルデータを形成する処理が行なわれるようになっており、再生サンプリング周波数fsの1周期毎の割込み処理として当該サンプリング周期における1サンプル分の波形サンプルデータが形成される。しかし、これに限らず、本出願人が既に提案済みのソフトウェア音源技術で知られているように、1フレーム区間に該当する多数のサンプル数分の波形サンプルデータを短時間で一括して形成し、これを出力バッファに蓄えておき、出力バッファからの波形サンプルデータの読み出しを再生サンプリング周波数fsの1周期毎に行なうようにしてもよい。また、ソフトウェアプログラムに基づく波形形成処理に限らず、上記実施例と同様の波形形成処理用のマイクロプログラムで動作するように構成されたDSP装置によって本発明に従う波形形成処理を行なうようにしてもよいし、あるいは、LSI回路やディスクリート回路によって上記実施例と同様の波形形成処理を行なうように専用ハードウェア回路を構成してもよい。
【0085】
【発明の効果】
以上の通り、この発明によれば、複数の異なるループ再生波形区間に対して、時間的に可変の時間制御信号の現在値に応じて、その再生時間長、つまり当該ループ再生波形に対応する音が存在する時間長、を伸縮制御するようにしたので、音を構成する複数のループ再生波形区間に独自の変化をつけることができ、制御性に富んだ波形形成を行うことができる、という優れた効果を奏する。このようにループ再生波形の制御性が向上するので、比較的簡素な波形構造(例えばメモリ容量が少なくて済む)からなるループ波形を、音のアーティキュレーション(奏法)を考慮した品質のよい波形形成の場面においても利用し易くなる、という優れた効果を奏する。また、各ループ再生波形区間の時間長は前記時間制御信号の現在値に応じて随時伸縮制御されるようになっているので、音を構成する複数のループ再生波形区間の或る区間の時間長を圧縮し、別の区間の時間長を伸張する、といったように変化をつけることができ、様々な時間バリエーションで複数のループ再生波形区間を組み合わせることができるようになり、従来単調な制御しかできなかったループ部の楽音に対して、制御性に富んだ波形形成を行うことができるようになる、という優れた効果を奏する。
【0086】
また、この発明によれば、時間経過を制御する時間制御信号によって楽音波形の時間経過を伸縮制御する一方で、該楽音波形の制御のために時間的に変化する楽音制御信号の時間経過をも該時間制御信号によって伸縮制御するようにしたので、時間制御信号によって波形再生時間を伸縮制御するとき、波形のみならず、該波形を制御するための楽音制御信号つまり振幅エンベロープやピッチ変化エンベロープなどの時間軸も同時に伸縮制御することで、楽音波形と該波形を制御するための楽音制御信号の両者を同期して時間軸伸縮制御することができる、という優れた効果を奏する。
【図面の簡単な説明】
【図1】 この発明に係る波形形成装置の一実施例のハードウェア構成を略示するブロック図。
【図2】 波形メモリに記憶する単位波形のいくつかの例を概念的に示す図。
【図3】 任意の初期位相を持つループ波形のいくつかの具体例を示す波形図。
【図4】 波形メモリの記憶フォーマットの一例及び波形シーケンスデータの一例を示す概念図。
【図5】 ループ波形同士の接続例を単純接続とクロスフェード合成について示す概念図。
【図6】 クロスフェード合成する2つのループ波形をそれぞれ読み出すための読出アドレスを、両者の初期位相の差に応じてずらしてループ制御する例を
【図7】 波形シーケンスの一例とそれに対応する楽音要素制御用のベクトルデータ例とを示す概念図。
【図8】 波形シーケンス処理の一例を示すフローチャート。
【図9】 割込み処理として実行される波形サンプルデータ形成処理の一例を示すフローチャート。
【図10】 (a)はベクトルエディット処理の一例を示し、(b)は波形シーケンスエディット処理の一例を示すフローチャート。
【図11】 ループ再生区間を含む波形の時間軸伸縮制御の具体例を示す説明図。
【図12】 ループ再生区間を含む波形の時間軸伸縮制御の別の具体例を示す説明図。
【符号の説明】
100 CPU
101 ROM
102 RAM
103 ハードディスク装置
104 リムーバブルディスク装置
105 表示器
106 入力操作装置
107 波形インタフェース
108 タイマ
109 通信インタフェース
110 MIDIインタフェース
111 バス
WM 波形メモリ
Claims (8)
- 波形再生時間を伸縮制御する時間制御信号を発生するものであって、該時間制御信号の現在値を時間変数とする所定の関数に従って時間的に変化するよう該時間制御信号を発生する時間制御信号発生部と、
音の発音期間における所定の区間で所定のループ波形を繰り返すことでループ再生波形を生成し、複数の異なるループ再生波形の区間を含んで該音の波形を形成し、かつ各ループ再生波形区間の時間長を前記時間制御信号の現在値に応じて伸縮制御する波形形成部と
を具備する波形形成装置。 - 前記波形形成部は、前記所定の区間で所定の第1のループ波形を繰り返すことで第1のループ再生波形を生成すると共に第2のループ波形を繰り返すことで第2のループ再生波形を生成し、第1及び第2のループ再生波形とを該所定の区間でクロスフェード合成することで合成したループ再生波形を形成する請求項1に記載の波形形成装置。
- 前記波形形成部は、前記音の発音期間における別の所定の区間では繰り返さないノンループ波形を生成し、該ノンループ波形の区間の時間長を前記時間制御信号に応じて伸縮制御する請求項1に記載の波形形成装置。
- 時間的に変化する楽音制御信号を発生する第1の制御信号発生部と、
時間経過を制御する時間制御信号を発生するものであって、所定の関数に従って時間的に変化するよう該時間制御信号を発生する第2の制御信号発生部と、
楽音波形を形成するものであって、形成する楽音波形の時間経過を前記第2の制御信号発生部で発生する時間制御信号によって制御し、かつ、該時間制御信号によって前記第1の制御信号発生部で発生する楽音制御信号の時間経過を制御し、時間経過が制御された楽音制御信号によって前記形成する楽音波形の特性を制御する波形形成部と
を具備する波形形成装置。 - 音の発音期間における所定の区間で所定のループ波形を繰り返すことでループ再生波形を生成し、複数の異なるループ再生波形の区間を含んで該音の波形を形成する第1のステップと、
波形再生時間を伸縮制御する時間制御信号を発生するものであって、該時間制御信号の現在値を時間変数とする所定の関数に従って時間的に変化するよう該時間制御信号を発生する第2のステップと、
前記第1のステップで生成する前記各ループ再生波形の区間の時間長を前記時間制御信号の現在値に応じて伸縮制御する第3のステップと
を具備する波形形成方法。 - 時間的に変化する楽音制御信号を発生する第1のステップと、
時間経過を制御する時間制御信号を発生するものであって、所定の関数に従って時間的に変化するよう該時間制御信号を発生する第2のステップと、
楽音波形を形成するものであって、形成する楽音波形の時間経過を前記第2のステップで発生する時間制御信号によって制御し、かつ、該時間制御信号によって前記第1のステップで発生する楽音制御信号の時間経過を制御し、時間経過が制御された楽音制御信号によって前記形成する楽音波形の特性を制御する第3のステップと
を具備する波形形成方法。 - コンピュータによって実行される波形形成のためのプログラムの命令群を内容としているコンピュータ読み取り可能な記録媒体であって、前記プログラムは、
音の発音期間における所定の区間で所定のループ波形を繰り返すことでループ再生波形を生成し、複数の異なるループ再生波形の区間を含んで該音の波形を形成する第1のステップと、
波形再生時間を伸縮制御する時間制御信号を発生するものであって、該時間制御信号の現在値を時間変数とする所定の関数に従って時間的に変化するよう該時間制御信号を発生 する第2のステップと、
前記第1のステップで生成する前記各ループ再生波形の区間の時間長を前記時間制御信号の現在値に応じてそれぞれ伸縮制御する第3のステップと
を具備する記録媒体。 - コンピュータによって実行される波形形成のためのプログラムの命令群を内容としているコンピュータ読み取り可能な記録媒体であって、前記プログラムは、
時間的に変化する楽音制御信号を発生する第1のステップと、
時間経過を制御する時間制御信号を発生するものであって、所定の関数に従って時間的に変化するよう該時間制御信号を発生する第2のステップと、
楽音波形を形成するものであって、形成する楽音波形の時間経過を前記第2のステップで発生する時間制御信号によって制御し、かつ、該時間制御信号によって前記第1のステップで発生する楽音制御信号の時間経過を制御し、時間経過が制御された楽音制御信号によって前記形成する楽音波形の特性を制御する第3のステップと
を具備する記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22501698A JP3675184B2 (ja) | 1997-09-30 | 1998-08-07 | 波形形成装置及び方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9-284423 | 1997-09-30 | ||
JP28442397 | 1997-09-30 | ||
JP22501698A JP3675184B2 (ja) | 1997-09-30 | 1998-08-07 | 波形形成装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11167382A JPH11167382A (ja) | 1999-06-22 |
JP3675184B2 true JP3675184B2 (ja) | 2005-07-27 |
Family
ID=26526382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22501698A Expired - Fee Related JP3675184B2 (ja) | 1997-09-30 | 1998-08-07 | 波形形成装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3675184B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3654080B2 (ja) | 1999-09-27 | 2005-06-02 | ヤマハ株式会社 | 波形生成方法及び装置 |
JP3654083B2 (ja) | 1999-09-27 | 2005-06-02 | ヤマハ株式会社 | 波形生成方法及び装置 |
DE10051398B4 (de) * | 1999-10-18 | 2007-03-15 | Roland Corp. | Gerät zur Wiedergabe einer Audiowellenform |
JP4581190B2 (ja) * | 2000-06-19 | 2010-11-17 | ヤマハ株式会社 | 音楽信号の時間軸圧伸方法及び装置 |
SG118122A1 (en) | 2001-03-27 | 2006-01-27 | Yamaha Corp | Waveform production method and apparatus |
JP4274152B2 (ja) | 2005-05-30 | 2009-06-03 | ヤマハ株式会社 | 楽音合成装置 |
JP4735196B2 (ja) * | 2005-11-04 | 2011-07-27 | ヤマハ株式会社 | オーディオ再生装置 |
JP6806120B2 (ja) * | 2018-10-04 | 2021-01-06 | カシオ計算機株式会社 | 電子楽器、楽音発生方法及びプログラム |
-
1998
- 1998-08-07 JP JP22501698A patent/JP3675184B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11167382A (ja) | 1999-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3644263B2 (ja) | 波形形成装置及び方法 | |
JP3744216B2 (ja) | 波形形成装置及び方法 | |
US7396992B2 (en) | Tone synthesis apparatus and method | |
JP2007011217A (ja) | 楽音合成装置及びプログラム | |
JP3601371B2 (ja) | 波形生成方法及び装置 | |
JP3675184B2 (ja) | 波形形成装置及び方法 | |
JP3008922B2 (ja) | 楽音発生装置および楽音発生方法 | |
JP2007316269A (ja) | 楽音合成装置及びプログラム | |
JP3654080B2 (ja) | 波形生成方法及び装置 | |
JP3654084B2 (ja) | 波形生成方法及び装置 | |
JP3726765B2 (ja) | 波形形成装置及び方法 | |
JP3520781B2 (ja) | 波形生成装置及び方法 | |
JP3904012B2 (ja) | 波形生成装置及び方法 | |
JP3724222B2 (ja) | 楽音データ作成方法及び楽音合成装置並びに記録媒体 | |
JP4816441B2 (ja) | 楽音合成装置及びプログラム | |
JP3613191B2 (ja) | 波形生成方法及び装置 | |
JP3669177B2 (ja) | ビブラート発生装置及び方法 | |
JP3873985B2 (ja) | 楽音データの編集方法及び装置 | |
JP4826276B2 (ja) | 楽音合成装置及びプログラム | |
JP3562341B2 (ja) | 楽音データの編集方法及び装置 | |
JP4821558B2 (ja) | 楽音合成装置及びプログラム | |
JP3724223B2 (ja) | 自動演奏装置及び方法並びに記録媒体 | |
JP3095018B2 (ja) | 楽音発生装置 | |
JP3933162B2 (ja) | 波形生成方法及び装置 | |
JP3876896B2 (ja) | 波形生成方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040709 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040727 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050111 |
|
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: 20050412 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050425 |
|
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: 20090513 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100513 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110513 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130513 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140513 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |