(57)【特許請求の範囲】
【請求項１】
波形データと、該波形データの波形の時間軸上の位置を示す複数のマーク情報と、該マーク情報に対応し波形の発音態様を制御するための制御情報とを記憶する記憶手段と、
前記波形データの再生速度を表す再生速度情報を入力する速度情報入力手段と、
前記速度情報入力手段により入力された再生速度情報に応じた変化速度で変化する時間情報を発生する時間情報発生手段と、
前記時間情報発生手段が発生する時間情報が、前記記憶手段に記憶されたマーク情報の位置に到達したことに基づいてタイミングを指示する指示手段と、
前記波形データを読み出して波形信号を形成する波形形成手段であって、前記指示手段によりタイミングが指示された場合に、該タイミングに対応するマーク情報が示す波形を、該マーク情報に対応する前記記憶手段に記憶された制御情報に応じた発音態様で発音するように波形信号を形成する波形形成手段と
を有する波形再生装置。
【請求項２】
請求項１に記載の波形再生装置において、
前記制御情報は、発音音高を制御する音高情報であり、
前記波形形成手段は、前記音高情報に応じた音高で波形信号を形成する
ものである波形再生装置。
【請求項３】
請求項１に記載の波形再生装置において、
前記制御情報は、音量変化を制御するエンベローブ情報であり、
前記波形形成手段は、前記エンベロープ情報に応じて音量変化する波形信号を形成する
ものである波形再生装置。
【請求項４】
請求項１に記載の波形再生装置において、
前記制御情報は、前記指示手段が指示するタイミングを修正するタイミング修正情報であり、
前記指示手段は、前記タイミング修正情報に基づいて、タイミングを修正して指示する
ものである波形再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、波形再生装置に関し、さらに詳細には、任意に指定された速度で波形データを再生することのできる波形再生装置に関する。
【０００２】
【従来の技術】
従来より、波形データのタイム・ストレッチ技術（波形データを時間圧縮あるいは時間伸張して再生する技術）を使用して、メモリに記憶された波形データに対して再生時間に応じた圧縮処理あるいは伸張処理を施し、この圧縮処理あるいは伸張処理により予めタイム・ストレッチした波形データを作成しておき、こうして作成されたタイム・ストレッチした波形データを再生する方法が知られている。
【０００３】
しかしながら、この方法による場合には、予めタイム・ストレッチの処理（圧縮処理あるいは伸張処理）を施す必要があるため、リアルタイムで任意に圧縮あるいは伸張を制御することができないという問題点があった。
【０００４】
さらに、上記のようにして作成されたタイム・ストレッチした波形データを再生する際における再生音高を変化させると、再生時間も変化してしまうという問題点があった。
【０００５】
一方、上記した波形データのタイム・ストレッチ技術を使用したものとは異なる技術として、メモリからの波形の読み出し速度を変化することによって再生時間を変化させ、その変化させた結果として生じる波形再生のピッチの変化をピッチ変換装置によって補正する方法が提案されている。
【０００６】
この方法によれば、リアルタイムで再生時間の制御が可能であるが、ピッチ変換装置の変換能力には限界があるため音質の劣化は免れず、再生時間の制御範囲が狭い範囲に制限されるという問題点があった。このため、特に、波形の読出速度を遅くする場合に不都合が生じることとなっており、例えば、メモリの読出速度を非常に遅くして長い再生時間に制御しようとする場合には、ピッチ変換装置では元の波形データを再現することはできなくなってしまうものであった。
【０００７】
さらに、上記したようなピッチ変換装置を使用する制御方法において、波形データを同じ再生音高により再生時間を変化させて再生しようとする際には、たとえ再生音高が同じであっても再生時間を変化させることによりピッチ変換装置に入力される波形のピッチも変化してしまうため、ピッチ変換装置の変換量も再生時間毎に異なった変換量に設定する必要があるという問題点があった。つまり、読出速度（再生時間）の制御とピッチ変換量の制御とが互いに関連しており、読出速度（再生時間）と再生音高とを任意に独立して制御するには非常に複雑な処理が必要になってしまうものであった。
【０００８】
また、従来のタイム・ストレッチ技術においては、単に波形を時間的に圧縮あるいは伸張するのみであって、波形データと再生時間とがそれぞれ同じであれば、結果として同じ楽音が再生されることになり、変化に乏しいという問題点もあった。
【００１０】
【発明が解決しようとする課題】
本発明は、上記したような従来の技術の有する種々の問題点に鑑みてなされたものであり、その目的とするところは、タイム・ストレッチの処理を行いつつ、楽音の発生態様を変化させることを可能にして、同じ波形データからバリエーションに冨む波形再生を得ることができるようにするとともに、タイム・ストレッチの処理により圧縮または伸張を行なっても波形データが表わす波形とその発生態様との関係がずれることなく常に一定に保持されるようにした波形再生装置を提供しようとするものである。
【００１１】
また、本発明の目的とするところは、一連の波形データの部分部分で異なる音高の制御を可能とし、音高の変化によるアクセントを付与することができるようにした波形再生装置を提供しようとするものである。
【００１２】
また、本発明の目的とするところは、一連の波形データの部分部分で異なるエンベローブの制御を可能とし、例えば、波形データが複数のドラム音などの場合に、所定の拍のドラム音についてのみ減衰を短くしたり、所定の拍のドラム音についてのみ音量を絞ることができるようにして、音量の変化によるアクセントを付与することができるようにした波形再生装置を提供しようとするものである。また、本発明の目的とするところは、シャッフル感を表現したりすることを可能とし、リズムの変化を生むことができるようにした波形再生装置を提供しようとするものである。
【００１５】
【課題を解決するための手段】
上記目的を達成するために、本発明のうち請求項１に記載の発明は、波形データと、該波形データの波形の時間軸上の位置を示す複数のマーク情報と、該マーク情報に対応し波形の発音態様を制御するための制御情報とを記憶する記憶手段と、上記波形データの再生速度を表す再生速度情報を入力する速度情報入力手段と、上記速度情報入力手段により入力された再生速度情報に応じた変化速度で変化する時間情報を発生する時間情報発生手段と、上記時間情報発生手段が発生する時間情報が、上記記憶手段に記憶されたマーク情報の位置に到達したことに基づいてタイミングを指示する指示手段と、上記波形データを読み出して波形信号を形成する波形形成手段であって、上記指示手段によりタイミングが指示された場合に、該タイミングに対応するマーク情報が示す波形を、該マーク情報に対応する上記記憶手段に記憶された制御情報に応じた発音態様で発音するように波形信号を形成する波形形成手段とを有するようにしたものである。
【００１６】
従って、本発明のうち請求項１に記載の発明によれば、タイム・ストレッチの処理を行いつつ楽音の発生態様を変化させることができるので、同じ波形データからバリエーションに冨む波形を再生することができるようになるとともに、制御情報は波形の位置を示すマーク情報に対応しているので、タイム・ストレッチの処理により圧縮または伸張を行なっても、波形データが表わす波形とその発生態様との関係を常に一定に保持することができるようになる。
【００１７】
また、本発明のうち請求項２に記載の発明は、本発明のうち請求項１に記載の発明において、上記制御情報は、発音音高を制御する音高情報であり、上記波形形成手段は、上記音高情報に応じた音高で波形信号を形成するようにしたものである。
【００１８】
従って、本発明のうち請求項２に記載の発明によれば、音高情報により音高を制御することができるので、一連の波形データの部分部分で異なる音高に制御することが可能となり、音高の変化によるアクセントを付与することができるようになる。
【００１９】
また、本発明のうち請求項３に記載の発明は、本発明のうち請求項１に記載の発明において、上記制御情報は、音量変化を制御するエンベローブ情報であり、上記波形形成手段は、上記エンベロープ情報に応じて音量変化する波形信号を形成するようにしたものである。
【００２０】
従って、本発明のうち請求項３に記載の発明によれば、エンベロープ情報により音量を制御することができるので、一連の波形データの部分部分で異なる音量に制御することが可能となり、例えば、波形データが複数のドラム音などの場合には、所定の拍のドラム音についてのみ減衰を短くしたり、所定の拍のドラム音についてのみ音量を絞ることができるようになって、音量の変化によるアクセントを付与することができるようになる。
【００２１】
また、本発明のうち請求項４に記載の発明は、本発明のうち請求項１に記載の発明において、上記制御情報は、上記指示手段が指示するタイミングを修正するタイミング修正情報であり、上記指示手段は、上記タイミング修正情報に基づいて、タイミングを修正して指示するようにしたものである。
【００２２】
従って、本発明のうち請求項４に記載の発明によれば、タイミング修正情報によりタイミングをずらすことができるので、シャッフル感を表現したりすることができ、リズムの変化を生むことができるようになる。
【００２３】
【発明の実施の形態】
以下、添付の図面を参照しながら、本発明による波形再生装置の実施の形態の一例を詳細に説明する。
【００２４】
まず始めに、本発明による波形再生装置の理解を容易にするために、本発明による波形再生装置により実行されるタイム・ストレッチの処理の概略について説明する。
（１）本発明による波形再生装置により実行されるタイム・ストレッチの処理の概略
（１−１）本実施の形態において用いる用語の説明
（Ａ）波形データ
波形データとは、時間経過に従って順次発生される複数の音（フレーズ）を表す波形のデータである。例えば、数小節のドラム演奏をサンプリングした波形のデータなどを意味する。
【００２５】
（Ｂ）イベント
波形データによって表される時間経過に従って順次発生される複数の音のそれぞれをイベントと称する。
【００２６】
（Ｃ）イベント・アドレス
イベント発生時のアドレス、即ち、波形データにおけるイベントの先頭のアドレスである。波形データが、例えば、数小節のドラム演奏をサンプリングしたものである場合には、当該ドラム演奏によるドラム音のアタック部の始点を示すアドレスである。
【００２７】
（Ｄ）ループ・アドレス
波形データの再生時間の伸張時において、波形サンプルをループさせる際に参照するアドレスたるループ・スタート・アドレスとループ・エンド・アドレスとの総称である。波形データの再生時間の伸張時には、ループ・スタート・アドレスとループ・エンド・アドレスとによって特定されるループ区間の波形データを繰り返し（ループ）して読み出すことになる。従って、ループ・エンド・アドレスにおける波形とループ・スタート・アドレスにおける波形とがうまく接続されるように、ループ・スタート・アドレスとループ・エンド・アドレスとが定められる。なお、振幅に関する不整合は、後述する減衰率を乗じることにより解決することができる（この点については、図１７（ａ）（ｂ）（ｃ）を参照しながら後に詳述する。）。
【００２８】
（Ｅ）減衰率
ループを繰り返す毎に波形データのレベルを減衰させる割合である。
（１−２）原理
本発明による波形再生装置により実行されるタイム・ストレッチの処理においては、基本的に、予め波形データに応じてイベント発生時のアドレスたるイベント・アドレスと、波形データの再生時間の伸張時に波形サンプルをループさせるループ・アドレス（ループ・スタート・アドレスおよびループ・エンド・アドレス）と、ループを繰り返す毎にそのレベルを減衰させるための減衰率とを指定しておくものである（図１参照）。
【００２９】
なお、図１に示す波形データは、イベントとしてはイベントＡとイベントＢとがある。
【００３０】
そして、波形データの再生時間を伸張する場合には、予め指定されたこれらのデータを元にして、図２に示すようにループ区間の波形を減衰率を乗じながら繰り返し発生させるものである。
【００３１】
一方、波形データの再生時間を圧縮する場合には、図３に示すようにイベントＡとイベントＢとの間隔を詰めて波形を発生させるものである。
（１−３）デジタル・シグナル・プロセッサ（ＤＳＰ）でのリアルタイム処理の概要
本実施の形態においては、後述するようにＤＳＰ２０（図９参照）のリアルタイム処理によって本発明による波形再生装置のタイム・ストレッチの処理が実現されるものである。
【００３２】
以下、本発明の理解を容易にするために、こうしたＤＳＰ２０におけるリアルタイム処理の概要について説明するものであり、ＤＳＰ２０でリアルタイム処理を行うためには、次のようにする。
【００３３】
（Ａ）まず、アドレス・カウンタを２つ持つようにする。これら２つのアドレス・カウンタの一方は再生時間カウンタであり、もう一方は実アドレス・カウンタである。
【００３４】
ここで、再生時間カウンタは、時間の圧縮あるいは伸張に合わせて再生時間通りに動作するカウンタである。伸張率が「１：１」であるならば１サンプル時間で１だけ増加し、伸張率が「２」、即ち、再生時間が半分になる場合には１サンプル時間で２増加する。なお、従来のサンプラーでは、この再生時間カウンタの値を波形メモリのアドレスとして読み出していたため、再生時間が半分になればピッチが倍になっていた。
【００３５】
また、実アドレス・カウンタは、実際に波形メモリを読み出すときのアドレスを示すものである。通常は圧縮あるいは伸張に関わらず、１サンプル時間につき１だけ増加する。つまり、読み出しピッチは一定となる。ただし、後述するように、必要に応じてアドレスは、次のイベント・アドレスやループ・スタート・アドレスヘジャンプすることがある。
【００３６】
（Ｂ）次に、２つのカウンタ、即ち、再生時間カウンタおよび実アドレス・カウンタの動きを具体的に説明する。
【００３７】
まず、オリジナル（サンプリング時における状態）に対して８０％の再生時間に圧縮する場合、即ち、再生速度を１．２５倍にして再生する場合について検討する。
【００３８】
なお、以下の説明においては、図４に示すように、波形データの頭（アドレス０）で最初のイベントがあり、アドレスａで次のイベントが発生し、アドレスｂで波形データが終了している波形データを例として説明する。
【００３９】
まず、再生時間カウンタを、１サンプル時間につき１．２５増加させるように設定する。実アドレス・カウンタについては、１サンプル時間につき１増加のままでよく、実アドレス・カウンタをポインタとして波形データを読み出しに行くので、再生ピッチ（再生音高）はオリジナルのままである。
【００４０】
そうすると、当然のことながら、再生時間カウンタが先にアドレスａに到達するが、再生時間カウンタがアドレスａに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をａに書き換える。それから何事もなかったように、またアドレスａから読み出しを行なう。
【００４１】
そして、再生時間カウンタがアドレスｂに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【００４２】
以上の動作で、再生時間を８０％に圧縮し、しかしピッチはオリジナルのままという、本発明による波形再生装置におけるタイム・ストレッチの処理による波形データの再生時間の時間圧縮が可能となる。
【００４３】
（Ｃ）次に、オリジナルに対して１２５％の再生時間に伸張する場合、即ち、再生速度を０．８倍にして再生する場合を検討する。
【００４４】
なお、アドレスａ、アドレスｂについては圧縮の場合と同様であるが、これに加えて図５に示すように、アドレスｃ、アドレスｄ、アドレスｅおよびアドレスｆをループ・アドレスとして設定する。ここで、アドレスｃおよびアドレスｅはループ・スタート・アドレスであり、アドレスｄおよびアドレスｆはループ・エンド・アドレスである。
【００４５】
そして、再生時間カウンタを、１サンプル時間につき０．８増加するように設定する。また、実アドレス・カウンタについては、１サンプル時間につき１増加のままでよく、実アドレス・カウンタをポインタとして波形データを読み出して行くので、再生ピッチはオリジナルのままとなる。
【００４６】
そして、実アドレス・カウンタがループ・エンド・アドレスｄに到達したならば、ループ・スタート・アドレスｃに戻ってワンウ工イ・ループを行なう。その場合には、予め設定してある減衰率を乗算し、エンベロープがスムーズにつながるようにする。このループは再生時間カウンタがａに達するまで、何度でも操り返すが、繰り返す度に減衰率を乗算するので、出力は徐々に減衰していく。
【００４７】
なお、基本的には本発明は、ドラム音などの減衰音を処理の対象としているものである。
【００４８】
そして、再生時間カウンタがａに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をａに書き換え、同様にａから読み出しを行ない、ループ・スタート・アドレスｅとループ・エンド・アドレスｆとの間でループする。
【００４９】
さらに、再生時間カウンタがｂに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【００５０】
以上の動作で、再生時間を１２５％に伸張し、しかしピッチはオリジナルのままという本発明による波形再生装置におけるタイム・ストレッチの処理による波形データの再生時間の時間伸張が可能となる。
【００５１】
（Ｄ）上記においては、再生時間を８０％に圧縮する場合および再生時間を１２５％に伸張する場合、換言すれば、再生速度を１．２５倍にして再生する場合および再生速度を０．８倍にして再生する場合について説明したが、リアルタイムでこのような圧縮あるいは伸張の率、つまりは再生速度を変化させる場合には、この再生速度を上記再生時間カウンタの１サンプル時間の増加量に随時反映させればよい。例えば、再生速度が１．２５倍ならば増加量は１．２５とし、再生速度が０．８倍ならば増加量は０．８というようにすればよい。
【００５２】
（Ｅ）本発明による波形再生装置により実行されるタイム・ストレッチの処理における基本的な動作は以上の通りであるが、このままでは実際には若干問題が生じる恐れがある。例えば、圧縮する場合を考えると、実アドレス・カウンタが図６（ａ）のアドレスｘにいたときに、イベント・アドレスａにジャンプすると波形が不連続になり、「プチッ」という音のノイズが発生してしまう恐れがある。
【００５３】
こうしたノイズを防止するために、後述する実施の形態においては、再生時間カウンタが次のイベント・アドレスａに近づくと、図６（ｂ）に示すように、ＴＶＡ（時変振幅制御器）のゲインを用いて出力を徐々に絞ることによって、波形の不連続によるノイズの発生を抑制するようにしている。
（２）本発明による波形再生装置により実行されるタイム・ストレッチの処理におけるバリエーションの付与
以上において説明した例においては、圧縮あるいは伸張された出力は、ピッチ、音色、発音タイミングなどはオリジナルのものと同一である。しかしながら、特定のイベントのピッチなどを変更することによって、フレーズにバリエーションを付けることができるものであり、以下にその例を説明する。
（例１）イベント毎にピッチを変更する場合
オリジナルの８０％に再生時間を圧縮し、かつ、ピッチは５％下げる場合を検討する。なお、図４に示す場合と同様に、波形データの頭（アドレス０）で最初のイベントがあり、アドレスａで次のイベント、アドレスｂで波形データが終了するものとする。
【００５４】
まず、再生時間カウンタを１サンプル時間につき１．２５増加するように設定する。ここで、実アドレス・カウンタについては１サンプル時間につき０．９５増加するように設定する。このようにすると、実アドレス・カウンタをポインタとして波形データを読み出して行くので、再生ピッチはオリジナルから５％下がった値となる。
【００５５】
当然のことながら、再生時間カウンタが先にアドレスａに到達し、再生時間カウンタがアドレスａに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をａに書き換える。それから何事もなかったようにまたａから読み出しを行なう。
【００５６】
さらに、再生時間カウンタがｂに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【００５７】
以上の動作により、再生時間を８０％に圧縮し、ピッチをオリジナルから５％下げた波形信号が得られることになる（なお、イベント毎のエンベロープは、若干変化することになる。）
ここで、何％のピッチ変換をするかを各イベント毎に予め設定したテーブルを設けておくことにより、イベント発生毎（上記した例においては再生時間カウンタがアドレスａに到達したとき）にそのテーブルを参照し、イベント毎にピッチの変換値を変更することも可能である。
【００５８】
また、ピッチ変換値は、ＬＦＯやノイズ・ジェネレータを用いることにより、周期的に、あるいはランダムに変更することも可能である。
（例２）イベント毎にエンベロープを変更する場合
上記した（１−２）の（Ｅ）において説明したように、後述する実施の形態においては、出力される波形信号に影響があらわれない程度にＴＶＡ（時変振幅制御器）がかけられているが、これを積極的に用いて、楽音に効果を付与することも可能である。例えば、図７（ａ）に示すタイム・ストレッチの処理を施した波形（原音）にゲートをかけるなどの効果付与は、ドラム音などには特に有効である。
【００５９】
即ち、図７（ａ）に示すタイム・ストレッチした波形（原音）に関して、ＴＶＡ波形のゲート・タイム（図７（ｂ）におけるａ）、ゲイン（図７（ｂ）におけるｂ）、ゲートを閉じる場合の減衰カーブ形状（図７（ｂ）におけるｃ）などをイベント毎に指定して、ピッチの場合と同様にイベント毎に付与する効果を変更することにより、図７（ｃ）に示す効果付与された波形を得ることにより音色のバリエーションを得ることができるようになる。
（例３）特定のイベントの発生位置を移動させる場合
例えば、ドラムの波形サンプルにおいて、圧縮時あるいは伸張時に特定のイベント（例えば、スネア音など）を少しもたらせた、即ち、タイミングを遅らせたり、タイミングを早めたりしたいときがある。この場合について説明する。
【００６０】
ここで、図８に示すように、オリジナルの８０％に再生時間を圧縮する場合について、波形データの頭（アドレス０）で最初のイベントがあり、アドレスａで次のイベントが発生し、アドレスｂで波形データが終了しているものとする。
【００６１】
まず、再生時間カウンタを１サンプル時間につき１．２５増加するように設定する。実アドレス・カウンタについては１サンプル時間につき１増加のままでよく、実アドレス・カウンタをポインタとして波形データを読み出していくので、再生ピッチはオリジナルのままとなる。
【００６２】
そして、当然のことながら、再生時間カウンタが先にアドレスａ−ｘに到達する。再生時間カウンタがアドレスａ−ｘに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をａに書き換える。それから、何事もなかったようにまたａから読み出しを行う。
【００６３】
そして、再生時間カウンタがｂに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【００６４】
以上の動作により、ピッチはオリジナルのままで再生時間を８０％に圧縮し、２つめのイベントの発生タイミングを、純粋に８０％に圧縮した場合よりもｘだけ早めて発音させた信号が出力される。
【００６５】
逆にｘだけ遅らせたいならば、再生時間カウンタがアドレスａ＋ｘに到達したときに、実アドレス・カウンタはその値をａに書き換えればよい。
【００６６】
なお、イベントの発生位置を変えることによって、時間的に隣り合うイベントの発生の間隔が長くなったり短くなったりすることになる。従って、再生時間を圧縮する場合であっても、時間的に隣り合うイベントの発生の間隔が長くなることにより、波形再生をループによって伸張しなければならない場合がある。
【００６７】
また、上記ｘの値およびタイミングを遅らせるか早めるかの極性は、イベント毎に指定可能なことは勿論である。
（例４）特定のイベントに連動させて別の波形データを読み出す場合
例えば、ドラムのスネア音を他の音に変更したいときがある。この場合には、特定のイベントに対してＴＶＡのゲインを０にすると同時に、別の波形データを読み出すようにすればよい。これにより、特定のイベントの差し替えが可能である。
【００６８】
イベントの差し替えはピッチ変換の場合と同様に、差し替えを行なうか否か、さらには差し替えを行なう場合にどの波形データと差し替えるのかを各イベント毎に設定したテーブルを予め用意し、イベント発生毎にそのテーブルを参照して、差し替えを行なうかどうかを決定するとともに、さらにイベントを差し替える場合には差し替える波形データを決定するようにすればよい。
（３）  実施の形態の詳細な説明
図９には、本発明による波形再生装置の実施の形態の一例を表すブロック構成図が示されている。
【００６９】
この波形再生装置は、その全体の動作の制御を中央処理装置（ＣＰＵ）１０を用いて制御するように構成されており、このＣＰＵ１０には、バス（ＢＵＳ）１２を介して、リード・オンリ・メモリ（ＲＯＭ）１４と、ランダム・アクセス・メモリ（ＲＡＭ）１６と、ハード・ディスク（ＨＤＤ）１８と、デジタル・シグナル・プロセッサ（ＤＳＰ）２０と、時変振幅制御器（ＴＶＡ）２２と、操作子群２４と、表示器２６とが接続されている。そして、さらにＴＶＡ２２には、デジタル／アナログ変換器（Ｄ／Ａ）２８が接続され、Ｄ／Ａ２８にはアンプ（増幅器）３０が接続され、アンプ３０にはスピーカー３２が接続されている。
【００７０】
次に、上記した各構成要素を詳細に説明すると、まず、ＣＰＵ１０は、ＲＯＭ１４に格納されたプログラムを実行して、後述するフローチャートに示す操作子群２４を構成する各種の操作子の操作に応じた処理やＤＳＰ２０の処理などの制御などを実行するものである。
【００７１】
また、ＲＯＭ１４は、ＣＰＵ１０が実行するプログラムを記憶する半導体メモリである。
【００７２】
また、ＲＡＭ１６は、波形情報やＣＰＵ１０の処理に用いられる変数ならびに設定される各種パラメータ値（パラメータ情報）を記憶する半導体メモリである。
【００７３】
また、ＨＤＤ１８は、ＲＡＭ１６に転送するための複数の波形情報を蓄積するハード・ディスクである。
【００７４】
また、ＤＳＰ２０は、ＣＰＵ１０の制御に基づいてＤＳＰ２０内部に格納されているプログラムを実行し、ＲＡＭ１６から波形情報を読み出して波形再生を行い、波形信号を出力するものである。
【００７５】
また、ＴＶＡ２２は、ＤＳＰ２０から出力される波形信号の振幅制御を行い、振幅制御された波形信号を出力するものである。なお、この波形再生装置においては、イベント毎にエンベロープを変更するためにのみこのＴＶＡ２２を用いており、その他の振幅制御はＤＳＰ２０により行なうようにしている。
【００７６】
また、操作子群２４は、図１０を参照しながら後述する演奏操作のための演奏操作子とパラメータをエディットするためのエディット用操作子とから構成されている。
【００７７】
また、表示器２６は、パラメータのエディット時にパラメータ値を表示画面２６ａ（図１０参照）に表示するものである。
【００７８】
また、Ｄ／Ａ２８は、ＴＶＡ２２から出力されたデジタルの波形信号を、アナログの波形信号に変換して出力するものである。
【００７９】
また、アンプ３０は、Ｄ／Ａ２８から出力された波形信号を増幅して出力するものである。
【００８０】
また、スピーカー３２は、アンプ３０から出力された波形信号を、聴取し得る音として空間に放音するものである。
【００８１】
次に、図１０に示す操作パネルの概略構成図を参照しながら、操作子群２４を構成する各種の操作子について説明する。なお、操作パネルには、操作子群２４を構成する各種の操作子の他に、表示器２６の表示画面２６ａが設けられている。
【００８２】
ここで、操作子群２４を構成する操作子としては、上記したように、演奏操作のための演奏操作子とパラメータをエディットするためのエディット用操作子とがある。そして、演奏操作子としては、４個のパッド４０（４個のパッド４０は、図１０に示す１〜４の番号に対応する１〜４の番号（パッドの番号）によって管理されている。）とダイアル４２とが設けられている。また、エディット用操作子としては、エディット・ボタン（ＥＤＩＴ）４４と、エクジット・ボタン（ＥＸＩＴ）４６と、イベント選択前進ボタン４８ａおよびイベント選択後退ボタン４８ｂよりなるイベント選択ボタン（ＥＶＥＮＴ）４８と、ピッチ・シフト・ボタン（Ｐｉｔｃｈ  Ｓｈｉｆｔ）５０と、エンベロープ・ボタン（Ｅｎｖｅｌｏｐｅ）５２と、タイミング・シフト・ボタン（Ｔｉｍｉｎｇ  Ｓｈｉｆｔ）５４と、パラメータ値増加ボタン５６ａおよびパラメータ値減少ボタン５６ｂよりなるバリュー・ボタン（ＶＡＬＵＥ）５６と、プレビュー・ボタン（Ｐｒｅｖｉｅｗ）５８とが設けられている。以下に、上記した各操作子について詳細に説明する。
【００８３】
まず、パッド４０は、オン操作（押す操作）をすることで、オン操作したパッド４０に対応する波形の再生を行なうことを指示する操作子である。パッド４０をオン操作している間（押している間）は波形再生が続けられ、オフ操作（離す操作）を行うと消音されることになる。
【００８４】
また、ダイアル４２は、波形再生の速度を制御するためのツマミである。ダイアル４２を右に回すほど再生速度が速くなり、ダイアル４２を左に回すほど再生速度が遅くなる。なお、このダイアル４２の操作は、再生される波形のピッチに影響を与えない。
【００８５】
また、エディット・ボタン４４は、イベントに設定する各種のパラメータのエディットの開始を指示するボタンである。
【００８６】
また、エクジット・ボタン４６は、エディット・ボタン４４の操作により開始されたエディットの終了を指示するボタンである。
【００８７】
また、イベント選択ボタン４８は、上記したようにイベント選択前進ボタン４８ａおよびイベント選択後退ボタン４８ｂよりなり、パラメータをエディットしたいイベントを選択するためのボタンよりなる。イベント選択前進ボタン４８ａを１回押す毎に現在選択されているイベントより先にあるイベントが順次選択され、イベント選択後退ボタン４８ｂを１回押す毎に現在選択されているイベントより後にあるイベントが順次選択される。
【００８８】
また、ピッチ・シフト・ボタン５０は、エディットするパラメータの種類としてピッチ・シフトを選択するボタンである。
【００８９】
また、エンベロープ・ボタン５２は、エディットするパラメータの種類としてエンベロープを選択するボタンである。
【００９０】
また、タイミング・シフト・ボタン５４は、エディットするパラメータの種類としてタイミング・シフトを選択するボタンである。
【００９１】
また、バリュー・ボタン５６は、上記したようにパラメータ値増加ボタン５６ａおよびパラメータ値減少ボタン５６ｂよりなり、パラメータ値の増減やＯＮ（オン）／ＯＦＦ（オフ）選択に用いる。
【００９２】
また、プレビュー・ボタン５８は、現在注目しているイベントの波形を実際に再生する際に操作するものである。
【００９３】
次に、ＲＡＭ１６ならびにＨＤＤ１８に記憶される波形情報について説明すると、ＲＡＭ１６ならびにＨＤＤ１８に記憶される波形情報は以下の情報よりなるものである。
【００９４】
（Ａ）波形データ
ＷＡＶＥ［アドレス］
（Ｂ）エンド・アドレス（波形データの最終アドレス）
ＥＮＤ＿ＡＤＤＲ
（Ｃ）総イベント数（波形データに含まれるイベントの総数）
ＥＶＥＮＴＳ
（Ｄ）イベント情報（イベント毎の情報）
（Ｄ１）イベント・アドレス
ＥＶＥＮＴ＿ＡＤＤＲ［イベント・ナンバ］
（Ｄ２）ループ・スタート・アドレス
ＬＯＯＰ＿ＳＴＡＲＴ［イベント・ナンバ］
（Ｄ３）ループ・エンド・アドレス
ＬＯＯＰ＿ＥＮＤ［イベン・ナンバ］
（Ｄ４）減衰率
ＤＥＣＡＹ＿ＲＡＴＥ［イベント・ナンバ］
なお、イベント・ナンバはイベントを特定するための番号であり、時系列の各イベントに対して時間的に早い方から順に０、１、２、・・・の番号が与えられでいる。以下の説明においては、０番目のイベント、１番目のイベント、２番目のイベント、・・・というようにして用いる。
【００９５】
次に、パラメータ情報の詳細について説明するが、パラメータ情報とは、上記した波形情報の各イベントに対して波形の発音態様を制御するためのパラメータ群であり、以下のものからなる。なお、これらの設定については後述する。
【００９６】
（Ａ）ピッチ（音高）シフト量
ＰＩＴＣＨ＿ＳＨＩＦＴ［イベント・ナンバ］
（初期値＝１）
値が１のときピッチ不変であり、１より大のときピッチがオリジナルより高くなり、１より小のときピッチがオリジナルより低くなる。
【００９７】
（Ｂ）エンベロープ情報
エンベロープの制御をするか否か、ならびにエンベロープの形状を示すものである。
【００９８】
（Ｂ１）エンベロープＳＷ
ＥＮＶ＿ＳＷ［イベント・ナンバ］
（初期値：ＯＦＦ（オフ））
ＯＮ（オン）：制御する、ＯＦＦ（オフ）：制御しない
（Ｂ２）エンベロープ・タイム（図７（ｂ）のａに対応する。）
ＥＮＶ＿ＴＩＭＥ［イベント・ナンバ］
（Ｂ３）エンベロープ・ゲイン（図７（ｂ）のｂに対応する。）
ＥＮＶ＿ＧＡＩＮ［イベント・ナンバ］
値が１のとき音量不変であり、１より大のとき音量がオリジナルより大きくなり、１より小のとき音量がオリジナルより小さくなる。
【００９９】
（Ｂ４）エンベロープ・カーブ（図７（ｂ）のｃに対応する。）
ＥＮＶ＿ＣＵＲＶＥ［イベント・ナンバ］
（Ｃ）タイミング・シフト量
ＴＩＭＥ＿ＳＨＩＦＴ［イベント・ナンバ］
（初期値：０）
値が０のときタイミング不変であり、値が正のときイベントの発生タイミングがオリジナルより遅れ、値が負のときイベントの発生タイミングがオリジナルより早まる。
【０１００】
次に、ＲＡＭ１６の記憶領域について説明すると、ＲＡＭ１６には、パッドの番号１〜４の４個のパッド４０にそれぞれ対応して、４個のバンクのための記憶領域が設けられている。
【０１０１】
ここで、４個のバンクは、バンクの番号（バンク・ナンバ）が１のバンク１、バンク・ナンバが２のバンク２、バンク・ナンバが３のバンク３、バンク・ナンバが４のバンク４として管理されており、バンク１〜４の各々のバンクには、上記した波形情報と当該波形情報に対応するパラメータ情報とが組になって記憶されている。従って、例えば、パッド２が操作されると、パッド２に対応するバンク２に記憶された波形情報およびパラメータ情報に基づいて波形の再生が行われることになる。
【０１０２】
次に、図１１に示すフローチャートを参照しながら、ＣＰＵ１０により実行されるＣＰＵ処理ルーチンについて説明する。
【０１０３】
このＣＰＵ処理ルーチンにおいては、まず、この波形再生装置の初期化の処理を行う（ステップＳ１１０２）。初期化の処理としては、具体的には、以下の（Ａ）〜（Ｅ）の処理を行う。
【０１０４】
（Ａ）ＲＡＭ１６のバンク１〜４について波形情報をＨＤＤ１８からそれぞれ読み込む。
【０１０５】
（Ｂ）ＲＡＭ１６のバンク１〜４のそれぞれのパラメータ情報を初期化する。
（Ｃ）波形情報の全てのイベントについて、以下の初期値を設定する。
【０１０６】
・ＰＩＴＣＨ＿ＳＨＩＦＴ［イベント・ナンバ］の初期値として１を設定する。
【０１０７】
・ＥＮＶ＿ＳＷ［イベント・ナンバ］の初期値としてオフ（ＯＦＦ）を設定する。
【０１０８】
・ＴＩＭＥ＿ＳＨＩＦＴ［イベント・ナンバ］の初期値として０を設定する。
【０１０９】
（Ｄ）変数の初期化
・ＯＮ＿ＦＬＡＧの初期値として０を設定する。
【０１１０】
（Ｅ）ＤＳＰ２０のレジスタの初期化、ＤＳＰ２０の起動
・ｎ＿ｏｎ（後述する。）の初期値として０を設定する。
【０１１１】
・ｎ＿ｏｆｆ（後述する。）の初期値として０を設定する。
【０１１２】
・ｇａｔｅ（後述する。）の初期値として０を設定し、発音しないようにする。
【０１１３】
ステップＳ１１０２の処理を終了すると、ステップＳ１１０４へ進み、パッド４０がオン操作されたか否かを判断する。
【０１１４】
ステップＳ１１０４において、パッド４０がオン操作されたと判断された場合には、ステップＳ１１０６へ進み、ステップＳ１１０６〜ステップＳ１１１４においてパッド４０のオン操作に対する処理を行う。
【０１１５】
まず、ＯＮ＿ＦＬＡＧが１にセットされているか否かを判断する（ステップＳ１１０６）。このＯＮ＿ＦＬＡＧは、再生開始指示をＤＳＰ２０に行なったとき１にセットされ、再生終了指示を行なったとき０にセットされるフラグである。ステップＳ１１０６において、ＯＮ＿ＦＬＡＧが１にセットされているとは判断されなかった場合には、ＤＳＰ２０に再生開始指示を行なうために、ステップＳ１１０８〜ステップＳ１１１４における処理を行なう。
【０１１６】
即ち、オン操作されたパッド４０に対応するパッド番号をＤＳＰ２０のレジスタであるバンク・ナンバｂａｎｋ＃（後述する。）にセッ卜し（ステップＳ１１０８）、再生開始指示のためにＤＳＰ２０のｎ＿ｏｎに１をセットし（ステップＳ１１１０）、オン操作されたパッド４０の番号をＤＳＰ２０のレジスタであるＯＮ＃に記憶しておき（ステップＳ１１１２）、再生開始指示を行なったのでＯＮ＿ＦＬＡＧを１にセットして（ステップＳ１１１４）、それからステップＳ１１０４へ戻る。
【０１１７】
一方、ステップＳ１１０６において、ＯＮ＿ＦＬＡＧが１にセットされていると判断された場合には、既に他のパッド４０のオン操作により波形再生が行なわれているので、新たに再生開始指示を行なうことなくそのままステップ１１０４へ戻る。
【０１１８】
また、ステップＳ１１０４において、パッド４０がオン操作されたと判断されなかった場合には、ステップＳ１１１６へ進み、パッド４０がオフ操作されたか否かを判断する。
【０１１９】
ステップＳ１１１６において、パッド４０がオフ操作されたと判断された場合には、ステップＳ１１１８へ進み、ステップＳ１１１８〜ステップＳ１１２２においてパッド４０のオフ操作に対する処理を行う。
【０１２０】
まず、オフ操作されたパッド４０の番号とＯＮ＃に記憶されたパッド４０の番号とが等しいか否かを判断する（ステップＳ１１１８）。即ち、ＯＮ＃には再生開始指示を行なったときのパッド４０の番号が記憶されているので、ＯＮ＃に記憶されたパッド４０の番号とオフ操作されたパッドの番号とが等しい場合には、再生開始指示の元となったパッド４０がオフ操作されたと判断されるものである。
【０１２１】
ステップＳ１１１８において、オフ操作されたパッド４０の番号とＯＮ＃に記憶されたパッド４０の番号とが等しいと判断された場合、即ち、再生開始指示の元となったパッド４０がオフ操作されたと判断された場合には、ＤＳＰ２０に再生終了指示を行なうために、ステップＳ１１２０〜ステップＳ１１２２における処理を行なう。
【０１２２】
即ち、再生終了指示のためにＤＳＰ２０のｎ＿ｏｆｆに１をセットし（ステップＳ１１２０）、それから再生終了指示を行なったのでＯＮ＿ＦＬＡＧに０をセットして（ステップＳ１１２０）、そうしてステップＳ１１０４へ戻る。
【０１２３】
一方、ステップＳ１１１８において、オフ操作されたパッド４０の番号とＯＮ＃に記憶されたパッド４０の番号とが等しいと判断されなかった場合には、新たに再生終了指示を行なうことなくそのままステップ１１０４へ戻る。
【０１２４】
また、ステップＳ１１１６において、パッド４０がオフ操作されたと判断されなかった場合には、ステップＳ１１２４へ進み、ダイアル４２が操作されたか否かを判断する。
【０１２５】
そして、ステップＳ１１２４において、ダイアル４２が操作されたと判断された場合には、ステップＳ１１２６へ進み、ダイアル４２の現在値をＤＳＰ２０のレジスタであるｔｃｏｍｐ（後述する。）にセットする。なお、この波形再生装置においては、ダイアル４２の操作により得られる値、すなわち波形の再生速度を「１／２〜１（中央）〜２」としている。そして、ステップＳ１１２６の処理を終了すると、ステップＳ１１０４へ戻る。
【０１２６】
一方、ステップＳ１１２４において、ダイアル４２が操作されたと判断されなかった場合には、ステップＳ１１２８へ進み、エディット・ボタン４４が操作されたか否かを判断する。
【０１２７】
そして、ステップＳ１１２８において、エディット・ボタン４４が操作されたと判断された場合には、ステップＳ１１３０へ進み、パラメータ情報の各種パラメータをエディットするパラメータ・エディット処理を実行する。そして、ステップＳ１１３０のパラメータ・エディット処理を終了すると、ステップＳ１１０４へ戻る。
【０１２８】
一方、ステップＳ１１２８において、エディット・ボタン４４が操作されたと判断されなかった場合には、そのままステップＳ１１０４へ戻る。
【０１２９】
ここで、ステップＳ１１３０におけるパラメータ・エディット処理においては、エディットの操作は以下（１）〜（６）のようにして行われる。
【０１３０】
（１）パッド４０のいずれかを操作して、バンクを指定する。即ち、パッド１を操作するとバンク１が指定され、パッド２を操作するとバンク２が指定され、パッド３を操作するとバンク３が指定され、パッド４を操作するとバンク４が指定される。
【０１３１】
（２）イベント選択ボタン４８を操作して何番目のイベントのパラメータをエディットするのかを選択する。
【０１３２】
（３）ピッチ・シフト・ボタン５０、エンベロープ・ボタン５２、タイミング・シフト・ボタン５４のいずれかを操作して、エディットするパラメータの種類を指定する。
【０１３３】
（４）バリュー・ポタン５６を操作してパラメータ値を変更する。
【０１３４】
（５）プレビュー・ボタン５８を押すと、現在注目しているイベントの波形が実際に再生されるので、これを確認して必要ならば再び上記（４）の処理を行なう。
【０１３５】
（６）さらに別のパラメータをエディットするときは上記（１）〜（５）の処理を操り返す。エディットを終了するときはエクジット・ボタン４６を押す操作を行う。エクジット・ボタン４６を押す操作により、パラメータ・エディット処理を抜けることになる。
【０１３６】
なお、この波形再生装置においては、エンベロープ・ボタン５２を押す毎に、パラメータの種類がエンベロープ・スイッチ（エンベロープＳＷ）→エンベロープ・タイム→エンベロープ・ゲイン→エンベロープ・カーブ→エンベロープＳＷ→・・・と巡回的に切り換わるものである。
【０１３７】
また、タイミング・シフトのエディットを行なっているときにプレビュー・ボタン５８を押すと、現在注目しているイベントならびに現在注目しているイベントの手前のイベントおよびそれに続くイベントを合わせて連続して波形再生する。これによって他のイベントとの相対的なタイミングを確認することができるようになる。
【０１３８】
さらに、表示器２６の表示画面２６ａには、指定したバンク、イベント、パラメータ種類、パラメータ値が、図１２（ａ）（ｂ）に示すように表示される。
【０１３９】
即ち、図１２（ａ）には、バンクのパラメータ値が３（ＢＡＮＫ：３）、イベントのパラメータ値が４（ＥＶＥＮＴ：４）、ピッチのパラメータ値が２．００（ＰＩＴＣＨ：２．００）である状態が示されている。
【０１４０】
また、図１２（ｂ）には、バンクのパラメータ値が２（ＢＡＮＫ：２）、イベントのパラメータ値が７（ＥＶＥＮＴ：７）、エンベロープ・スイッチのパラメータ値がオフ（ＥＮＶＥＬＯＰＥ  ＳＷ：ＯＦＦ）である状態が示されている。
次に、図１３ならびに図１４に示すフローチャートを参照しながら、ＤＳＰ２０により実行されるメイン・ルーチンについて説明する。
【０１４１】
なお、ＤＳＰ２０は、このメイン・ルーチンをサンプリング周期毎に繰り返し実行する。従って、サンプリング周波数が４４．１ｋＨｚであれば、１秒間に４４１００回実行されることになる。
【０１４２】
ここで、メイン・ルーチンの処理内容を説明する前に、このメイン・ルーチンにおいて用いられるＤＳＰ２０の主要なレジスタやフラグについて説明する。
【０１４３】
（Ａ）ｐｃ
再生時間カウンタである。波形データのアドレスを指し、再生速度ｔｃｏｍｐの値ずつ歩進する。
【０１４４】
（Ｂ）ａｃ
実アドレス・カウンタである。波形データの読み出しアドレスとして用いられるものであり、ピッチ・シフト量ｐｉｔｃｈの値ずつ歩進する。
【０１４５】
（Ｃ）ｔｃｏｍｐ
再生速度を示すものである。ＣＰＵ１０によりその値が設定され、値が１のときオリジナルと同じ再生速度となり、１より大きいときはオリジナルより再生速度が速くなり、１より小さいときはオリジナルより再生速度が遅くなる。
（Ｄ）ｐｉｔｃｈ
ピッチ・シフト量を示すものである。値が１のときオリジナルと同じピッチとなり、１より大きいときはオリジナルよりピッチが高くなり、１より小さいときはオリジナルよりピッチが低くなる。
【０１４６】
（Ｅ）ｂａｎｋ＃
バンク・ナンバを示すものである。オン操作されたパッド４０のパッド番号が、ＣＰＵ１０の処理によりセットされる。
【０１４７】
（Ｆ）ｅｖｅｎｔ＃
イベント・ナンバを示すものである。再生処理中のイベントが何番目のイベントであるかを指し示すものである。
【０１４８】
（Ｇ）ｎ＿ｏｎ
再生開始指示フラグである。ＣＰＵ１０がＤＳＰ２０に再生開始を指示するときに、ＣＰＵ１０が１にセットする。そして、再生開始を終えたならば、ＤＳＰが０にセットする。
【０１４９】
（Ｈ）ｎ＿ｏｆｆ
再生終了指示フラグである。ＣＰＵ１０がＤＳＰ２０に再生終了を指示するときに、ＣＰＵ１０が１にセットする。そして、再生終了を終えたらならば、ＤＳＰ２０が０にセットする。
【０１５０】
（Ｉ）ｇａｔｅ
ＤＳＰ２０から波形信号を出力するとき１にセットし、出力しないとき０にセットするフラグである。このｇａｔｅは、後述するステップＳ１３２４の処理において反映される。
【０１５１】
（Ｊ）ｇａｉｎ
減衰制御を行うためのものである。ループ読み出しにおける減衰処理、および次イベントに移行する前の急速減衰処理に用いられる。
【０１５２】
（Ｋ）ｎｅｘｔ＿ａｄｄｒ
次アドレスを示すものである。基本的にはｐｃが次に到達するイベント・アドレスが格納される。ただし、タイミング・シフト量が考慮され、イベント・アドレスよりも前後する。
【０１５３】
（Ｌ）ｄｕｍｐ＿ａｄｄｒ
急速減衰開始アドレスを示すものである。次のイベントに移る前に急速減衰処理を開始するアドレスたる急速減衰開始アドレスを示すものであり、ｐｃがこれに到達すると処理を開始する。
【０１５４】
以上において説明したレジスタやフラグを参照しながらメイン・ルーチンを説明すると、メイン・ルーチンにおいては、まず、ステップＳ１３０２〜ステップＳ１３１４において再生開始指示に対する処理が実行される。
【０１５５】
即ち、ステップＳ１３０２において、レジスタｎ＿ｏｎに１がセットされているか否か判断され、レジスタｎ＿ｏｎに１がセットされていると判断された場合には、ＣＰＵ１０から再生開始指示があったものとしてステップＳ１３０４〜ステップＳ１３１４における処理を行う。
【０１５６】
つまり、イベント・ナンバｅｖｅｎｔ＃を０に初期化して波形情報の先頭のイベントを指すようにし（ステップＳ１３０４）、再生時間カウンタｐｃおよび実アドレス・カウンタａｃに初期値として波形情報の先頭のイベント・アドレスＥＶＥＮＴ＿ＡＤＤＲ［ｂａｎｋ＃，ｅｖｅｎｔ＃］  （ｅｖｅｎｔ＃は０）をセットし（ステップＳ１３０６）、ｅｎｄ＿ａｄｄｒに波形情報のエンド・アドレスＥＮＤ＿ＡＤＤＲ［ｂａｎｋ＃］をセットするとともにｅｖｅｎｔｓに波形情報の総イベント数ＥＶＥＮＴＳ［ｂａｎｋ＃］をセットし（ステップＳ１３０８）、メイン・ルーチンのサブ・ルーチンとしてのイベント処理（図１５を参照しながら後述する。）を実行し（ステップＳ１３１０）、ｇａｔｅに１をセットして波形再生音が出力されるようにし（ステップＳ１３１２）、上記のようにして再生開始の処理が済んだのでｎ−ｏｎを０にクリアする（ステップＳ１３１４）。
【０１５７】
そして、ステップＳ１３１４の処理を終了すると、ステップＳ１３１６の処理へ進む。
【０１５８】
一方、ステップＳ１３０２において、レジスタｎ＿ｏｎに１がセットされていると判断されなかった場合には、ジャンプしてステップＳ１３１６の処理へ進む。
【０１５９】
そして、ステップＳ１３１６〜ステップＳ１３２０において再生終了指示に対する処理が実行される。
【０１６０】
即ち、ステップＳ１３１６において、レジスタｎ＿ｏｆｆに１がセットされているか否か判断され、レジスタｎ＿ｏｆｆに１がセットされていると判断された場合には、ＣＰＵ１０から再生終了指示があったものとしてステップＳ１３１８〜ステップＳ１３２０における処理を行う。
【０１６１】
つまり、ｇａｔｅに０をセットして波形再生音が出力されないようにし（ステップＳ１３１８）、これにより再生終了の処理が済んだのでｎ−ｏｆｆを０にクリアする（ステップＳ１３２０）。
【０１６２】
そして、ステップＳ１３２０の処理を終了すると、ステップＳ１３２２の処理へ進む。
【０１６３】
一方、ステップＳ１３１６において、レジスタｎ＿ｏｆｆに１がセットされていると判断されなかった場合には、ジャンプしてステップＳ１３２２の処理へ進む。
【０１６４】
そして、ステップＳ１３２２においては、波形情報を読み出して、バンク・ナンバｂａｎｋ＃の波形情報のアドレスａｃの波形データＷＡＶＥ［ｂａｎｋ＃，ａｃ］をｗａｖにセツトする。
【０１６５】
ステップＳ１３２２の処理を終了すると、ステップＳ１３２４へ進み、演算式「ｗａｖ×ｇａｉｎ×ｇａｔｅ」の演算によって得られた値を、波形信号としてＴＶＡ２２へ出力する。
【０１６６】
ステップＳ１３２４の処理を終了すると、再生時間カウンタｐｃをｔｃｏｍｐだけ歩進させ（ステップＳ１３２６）、さらに実アドレス・カウンタａｃをｐｉｔｃｈだけ歩進させる（ステップＳ１３２８）。
【０１６７】
ステップＳ１３２８の処理を終了すると、ステップＳ１３３０へ進み、再生時間カウンタｐｃが波形データの最終アドレスであるエンド・アドレスｅｎｄ＿ａｄｄｒに到達したか否かを判断する。
【０１６８】
ここで、ステップＳ１３３０において、再生時間カウンタｐｃが波形データの最終アドレスであるエンド・アドレスｅｎｄ＿ａｄｄｒに到達したと判断された場合には、ステップＳ１３３２〜ステップＳ１３３８において再生終了に関する処理が実行される。
【０１６９】
即ち、ｇａｔｅに０をセットして波形再生音が出力されないようにし（ステップＳ１３３２）、ｅｖｅｎｔ＃に０をセットし（ステップＳ１３３４）、再生時間カウンタｐｃおよび実アドレス・カウンタａｃに初期値として波形情報の先頭のイベント・アドレスＥＶＥＮＴ＿ＡＤＤＲ［ｂａｎｋ＃，ｅｖｅｎｔ＃］（ｅｖｅｎｔ＃はＯ）をセットし（ステップＳ１３３６）、メイン・ルーチンのサブ・ルーチンとしてのイベント処理を実行し（ステップＳ１３３８）、このメイン・ルーチンを終了する。
【０１７０】
なお、上記したステップＳ１３３２〜ステップＳ１３３８の処理において、再生音が出力されないようにするのであれば、ｇａｔｅに０をセットするだけで十分であるが、再生を終了しても波形データの読み出しは継続されるため、その際に予定外のデータを読み出すことのないように、念のため波形情報の先頭のイベント・アドレスから波形を再び読み出すようにしている。
【０１７１】
また、上記したようにｇａｔｅに０をセットすると、波形データを最後まで読み終わるとともに再生終了することになるが、このｇａｔｅに０をセットするステップＳを省いて、繰返して波形再生音が出力されるようにしてもよい。
【０１７２】
一方、ステップＳ１３３０において、再生時間カウンタｐｃが波形データの最終アドレスであるエンド・アドレスｅｎｄ＿ａｄｄｒに到達したと判断されなかった場合には、ステップＳ１３４０へ進み、再生時間カウンタｐｃが次アドレスｎｅｘｔ＿ａｄｄｒ（詳細は後述する。）に到達したか否かを判断する。
【０１７３】
ここで、ステップＳ１３４０において、再生時間カウンタｐｃが次アドレスｎｅｘｔ＿ａｄｄｒに到達したと判断された場合には、ステップＳ１３４２〜ステップＳ１３４６において次のイベントに再生処理を移す処理が実行される。
【０１７４】
即ち、ｅｖｅｎｔ＃を１歩進させ（ステップＳ１３４２）、実アドレス・カウンタａｃにイベント・アドレスＥＶＥＮＴ＿ＡＤＤＲ［ｂａｎｋ＃，ｅｖｅｎｔ＃］をセットして次のイベント・アドレスから波形データを読み出すようにし（ステップＳ１３４４）、メイン・ルーチンのサブ・ルーチンとしてのイベント処理を実行し（ステップＳ１３４６）、このメイン・ルーチンを終了する。
【０１７５】
一方、ステップＳ１３４０において、再生時間カウンタｐｃが次アドレスｎｅｘｔ＿ａｄｄｒに到達したと判断されなかった場合には、ステップＳ１３４８へ進み、再生時間カウンタｐｃが急速減衰開始アドレスｄｕｍｐ＿ａｄｄｒへ到達したか否かを判断する。
【０１７６】
そして、ステップＳ１３４８において、再生時間カウンタｐｃが急速減衰開始アドレスｄｕｍｐ＿ａｄｄｒに到達したと判断された場合には、ステップＳ１３５０へ進み、ｇａｉｎに急速減衰率ｋを乗じる。再生時間カウンタｐｃが急速減衰開始アドレスｄｕｍｐ＿ａｄｄｒに到達したら以降は、再生時間カウンタｐｃがｎｅｘｔ＿ａｄｄｒに到遠するまでサンプリング周期毎に急速減衰率ｋを乗じ続けることになる。図１６には、この処理によるｇａｉｎの変化の一例が示されている。
【０１７７】
なお、この処理は、再生時間カウンタｐｃが次アドレスｎｅｘｔ＿ａｄｄｒに到達したときに実アドレス・カウンタａｃをジャンプさせることにより生ずるノイズを軽減させるための処理である。ここで、ｄｕｍｐ＿ａｄｄｒは、ｎｅｘｔ＿ａｄｄｒの少し手前に設定されることになる（なお、ｄｕｍｐ＿ａｄｄｒの設定については、後述するイベント処理ルーチンを参照する。）。
【０１７８】
そして、ステップＳ１３５０の処理を終了すると、ステップＳ１３５２へ進む。また、ステップＳ１３４８において、再生時間カウンタｐｃが急速減衰開始アドレスｄｕｍｐ＿ａｄｄｒに到達したと判断されなかった場合には、ジャンプしてステップＳ１３５２へ進む。
【０１７９】
ステップＳ１３５２においては、実アドレス・カウンタａｃがループ・エンド・アドレスｌｐ＿ｅｎｄに到達したか否かを判断する。
【０１８０】
ステップＳ１３５２において、実アドレス・カウンタａｃがループ・エンド・アドレスｌｐ＿ｅｎｄに到達したと判断された場合には、実アドレス・カウンタａｃをループ・スタート・アドレスｌｐ＿ｓｔａｒｔに戻してループ再生を行なうようにし（ステップＳ１３５４）、また、ループの区間を再生するごとに減衰率ｄ＿ｒａｔｅをｇａｉｎに乗じ（ステップＳ１３５６）、このメイン・ルーチンの処理を終了する。
【０１８１】
なお、図１７には、ステップＳ１３５６の処理による減衰率の作用が示されている。即ち、図１７（ａ）はループ・スタートとループ・エンドとのアドレスが設定された波形データを示し、図１７（ｂ）は単にループ・スタートとループ・エンドとの間を繰り返して読み出した再生波形を示している。図１７（ａ）に示すような、例えば、ドラム音などのな減衰音を単にループの区間を繰返して読み出すだけでは、図１７（ｂ）に示すように振幅の減衰と振幅の急激な増大とを繰返すことになり不自然な波形再生となる。そこで、ステップＳ１３５６に示すように、ループの区間を読み出し終える毎に減衰率を乗じていくものである。このようにすれば、図１７（ｃ）に示すように滑らかに減衰をする再生波形が得られることになる。
【０１８２】
ここで、減衰率は、例えば、ｌｐ＿ｓｔａｒｔにおける振幅とｌｐ＿ｅｎｄにおける振幅との比とすればよい。
【０１８３】
一方、ステップＳ１３５２において、実アドレス・カウンタａｃがループ・エンド・アドレスｌｐ＿ｅｎｄに到達したと判断されなかった場合には、そのままメイル・ルーチンを終了する。
【０１８４】
次に、図１５を参照しながら、メイン・ルーチンのサブ・ルーチンとしてのイベント処理ルーチンを説明する。
【０１８５】
このイベント処理ルーチンにおいては、まず、ステップＳ１５０２において、ｇａｉｎに初期値１．０をセットする。
【０１８６】
ステップＳ１５０２の処理を終了すると、ステップＳ１５０４へ進み、ｐｉｔｃｈにパラメータ情報のピッチ・シフト量ＰＩＴＣＨ＿ＳＨＩＦＴ［ｂａｎｋ＃，ｅｖｅｎｔ＃］をセットする。
【０１８７】
ステップＳ１５０４の処理を終了すると、ステップＳ１５０６へ進み、ループ・スタート・アドレス、ループ・エンド・アドレス、減衰率をそれぞれ以下のようにレジスタにセットする。
【０１８８】
・ｌｐ＿ｓｔａｒｔにＬＯＯＰ＿ＳＴＡＲＴ［ｂａｎｋ＃，ｅｖｅｎｔ＃］をセットする。
【０１８９】
・ｌｐ＿ｅｎｄにＬＯＯＰ＿ＥＮＤ［ｂａｎｋ＃，ｅｖｅｎｔ＃］をセットする。
【０１９０】
・ｄ＿ｒａｔｅにＤＥＣＡＹ＿ＲＡＴＥ［ｂａｎｋ＃，ｅｖｅｎｔ＃］をセットする。
【０１９１】
ステップＳ１５０６の処理を終了すると、ステップＳ１５０８へ進み、ｅｖｅｎｔ＃で示されるイベントに続くイベントがあるか否か、即ち、最後のイベントであるか否かを判断する。
【０１９２】
ステップＳ１５０８において、ｅｖｅｎｔ＃で示されるイベントに続くイベントがある、即ち、最後のイベントでないと判断された場合には、ステップＳ１５１０へ進み、次アドレスｎｅｘｔ＿ａｄｄｒに、イベント・アドレスＥＶＥＮＴ＿ＡＤＤＲ［ｂａｎｋ＃，（ｅｖｅｎｔ＃＋１）］にタイミング・シフト量ＴＩＭＥ＿ＳＨＩＦＴ［ｂａｎｋ＃，（ｅｖｅｎｔ＃＋１）］を加算したアドレスを設定する。
【０１９３】
一方、ステップＳ１５０８において、ｅｖｅｎｔ＃で示されるイベントに続くイベントがない、即ち、最後のイベントであると判断された場合には、ステップＳ１５１２へ進み、次アドレスｎｅｘｔ＿ａｄｄｒに、エンド・アドレスｅｎｄ＿ａｄｄｒを設定する。
【０１９４】
なお、次アドレスｎｅｘｔ＿ａｄｄｒは、再生時間カウンタｐｃが歩進して到違する目標のアドレスであり、到達するとそのタイくングで次のイベントの波形再生に移行する。
【０１９５】
また、タイミング・シフト量は、イベント・アドレスに対して次アドレスｎｅｘｔ＿ａｄｄｒを前あるいは後ろに変位させる量を示し、値が０のときは変位なし、値が正のときは次アドレスが後ろに変位してｐｃの到達が遅れるので次のイベントの波形再生に移行するタイミングが遅れ、値が負のときは次アドレスが前に変位してｐｃの到達が早まるので次のイベントの波形再生に移行するタイミングが早まるものである。
【０１９６】
また、次のイベントがない、即ち、最後のイベントである場合とは、例えば、総イベント数が３（ｅｖｅｎｔｓ＝３）であるときに、０番目のイベントの波形、１番目のイベントの波形と順次再生してきて、今度２番目のイベント（ｅｖｅｎｔ＃＝２）の波形を再生する場合を意味する。この場合を判別するための演算式が、ステップＳ１５０８の「ｅｖｅｎｔ＃＋１＝ｅｖｅｎｔｓ  ？」である。そして、ステップＳ１５１０あるいはステップＳ１５１２の処理を終了すると、ステップＳ１５１４へ進み、次アドレスｎｅｘｔ＿ａｄｄｒから「ｔｃｏｍｐ×ｎ」を減算したアドレスを、急速減衰開始アドレスｄｕｍｐ＿ａｄｄｒにセットする。
【０１９７】
ここで、ｎは、次アドレスｎｅｘｔ＿ａｄｄｒにｐｃが到達するまで急速減衰させるときに、どのくらい手前のアドレスからその急速減衰を開始するかを決定するための定数である。ノイズが生じない程度に早く、かつ十分な減衰ができるように、この定数ｎと急速減衰率ｋとが定められるものである。
【０１９８】
ステップＳ１５１４の処理を終了すると、ステップＳ１５１６へ進み、パラメータ情報に含まれるエンベロープ情報（エンベロープＳＷ、エンベローブ・タイムなど）をＴＶＡ２２にバス１２経由で送出し、このイベント処理ルーチンを終了してメイン・ルーチンへリターンする。
【０１９９】
ここで、ＴＶＡ２２はＤＳＰ２０と同期して動作し、ＤＳＰ２０より送られてきたエンベローブ情報に基づき、以下のようにしてＤＳＰ２０からの波形信号の振幅を制御する。
【０２００】
即ち、エンベローブＳＷがＯＦＦの場合には、それ以降、振幅の制御は行なわず、ＤＳＰ２０からの波形信号をそのままＤ／Ａ２８に送出する。
【０２０１】
一方、エンベローブＳＷがＯＮの場合には、それ以降、エンベロープ・タイム、エンベローブ・ゲイン、エンベローブ・カーブに基づいて、ＤＳＰ２０からの波形信号の振幅を時間経過に応じて変化させながらＤ／Ａ２８に出力する。詳細には、ＤＳＰ２０よりエンベローブ情報が送られてきた時点からエンベロープ・タイムで指定される時間は、エンベロープ・ゲインで指定されるゲインを保って振幅制御し、それ以降はエンベロープ・カーブで指定される減衰カーブに従って振幅の減衰制御を行なう（図７（ｂ）参照）。なお、ゲインは１より大きい場合は波形信号の振幅を増大させ、１より小さい場合は振幅を減少させるように作用する。
【０２０２】
なお、上記した実施の形態においては、同時に１つの波形データのみを読み出す構成となっているが、これに限られることなしに、同時に複数の波形データを読み出して波形信号を出力するようにしてもよいことは勿論である。つまり、実施の形態における複数のパッド４０をオン操作して、それぞれ波形再生できるように構成してもよい。この場合であっても、再生速度の指定は１つのダイアルで行ない、指定された再生速度を再生中のすべての波形データの読み出しに反映させると操作しやすい。なお、同時に複数の波形再生を行なうと音楽的な速度が合わないことが考えられるが、その場合には波形データを加工して波形データが示す波形のテンポを揃えておくか、波形データにオリジナルのテンポの情報を付随させておき、オリジナルのテンポの情報をも加味して各々の波形の再生速度を決定すりょうにしてもよい。
【０２０３】
また、上記した実施の形態においては、ＤＳＰ２０から出力される波形信号をＴＶＡ２２でエンベロープ制御（振幅制御）して、波形の再生においてイベント毎に変化を付与したが、これに限られることなしに、ＴＶＡ２２に代えてリバーブ、コーラスなどのエフェクタを配して、イベント毎に異なる効果を付与するようにしでもよいことは勿論である。このとき、ＤＳＰ２０はエンベロープの情報を送る代わりにエフェクタのパラメータ（リバーブ・タイム、コーラス深さなど）をイベント毎にエフェクタに送出すればよい。
【０２０５】
【発明の効果】
本発明は、以上説明したように構成されているので、タイム・ストレッチの処理を行いつつ楽音の発生態様を変化させることができるので、同じ波形データからバリエーションに冨む波形を再生することができるようになるとともに、制御情報は波形の位置を示すマーク情報に対応しているので、タイム・ストレッチの処理により圧縮または伸張を行なっても、波形データが表わす波形とその発生態様との関係を常に一定に保持することができるようになるという優れた効果を奏する。
【０２０６】
また、本発明は、以上説明したように構成されているので、音高情報により音高を制御することができるので、一連の波形データの部分部分で異なる音高に制御することが可能となり、音高の変化によるアクセントを付与することができるようになるという優れた効果を奏する。
【０２０７】
また、本発明は、以上説明したように構成されているので、エンベロープ情報により音量を制御することができるので、一連の波形データの部分部分で異なる音量に制御することが可能となり、例えば、波形データが複数のドラム音などの場合には、所定の拍のドラム音についてのみ減衰を短くしたり、所定の拍のドラム音についてのみ音量を絞ることができるようになって、音量の変化によるアクセントを付与することができるようになるという優れた効果を奏する。
【０２０８】
また、本発明は、以上説明したように構成されているので、タイミング修正情報によりタイミングをずらすことができるので、シャッフル感を表現したりすることができ、リズムの変化を生むことができるようになるという優れた効果を奏する。
【図面の簡単な説明】
【図１】波形データ、イベント、イベント・アドレス、ループ・アドレスを説明するための波形説明図である。
【図２】ループ、減衰率を説明するとともに、波形データの再生時間を伸張する場合を示す波形説明図である。
【図３】波形データの再生時間を圧縮する場合を示す波形説明図である。
【図４】波形データの頭（アドレス０）で最初のイベントがあり、アドレスａで次のイベントが発生し、アドレスｂで波形データが終了している場合を示す波形説明図である。
【図５】波形データの頭（アドレス０）で最初のイベントがあり、アドレスａで次のイベントが発生し、アドレスｂで波形データが終了しているとともに、アドレスｃ、アドレスｄ、アドレスｅおよびアドレスｆをループ・アドレスとして設定している場合を示す波形説明図である。
【図６】（ａ）は再生時間を圧縮する場合に波形が不連続となってノイズが発生する状態を示す波形説明図であり、（ｂ）はＴＶＡ（時変振幅制御器）などで出力を徐々に絞ることによって波形の不連続によるノイズの発生を抑制するようにした場合を示す波形説明図である。
【図７】（ａ）はタイム・ストレッチした波形（原音）を示す波形説明図であり、（ｂ）はＴＶＡ波形を示す波形説明図であり、（ｃ）は（ａ）に示すタイム・ストレッチした波形（原音）に対して（ｂ）に示すＴＶＡ波形により効果を付与した場合の波形を示す波形説明図である。
【図８】波形データの頭で最初のイベントがあり、アドレスａで次のイベントが発生し、アドレスｂで波形データが終了している場合に、アドレス値ｘだけ再生時間を圧縮する場合を示す波形説明図である。
【図９】本発明による波形再生装置の実施の形態の一例を表すブロック構成図である。
【図１０】操作パネルの概略構成説明図である。
【図１１】ＣＰＵ処理ルーチンのフローチャートである。
【図１２】（ａ）ならびに（ｂ）は、表示器における指定したバンク、イベント、パラメータ種類、パラメータ値の表示状態を例を示す。
【図１３】ＤＳＰのメイン・ルーチンのフローチャートである。
【図１４】ＤＳＰのメイン・ルーチンのフローチャートである。
【図１５】ＤＳＰのイベント処理ルーチンのフローチャートである。
【図１６】ｇａｉｎの変化の一例を示す波形説明図である。
【図１７】（ａ）はループ・スタートとループ・エンドとのアドレスが設定された波形を示し、（ｂ）は単にループ・スタートとループ・エンドとの間を繰り返して読み出した再生波形を示し、（ｃ）ループの区間を読み出し終える毎に減衰率を乗じた滑らかに減衰する再生波形を示す波形説明図である。
【符号の説明】
１０      中央処理装置（ＣＰＵ）
１２      バス（ＢＵＳ）
１４      リード・オンリ・メモリ（ＲＯＭ）
１６      ランダム・アクセス・メモリ（ＲＡＭ）
１８      ハード・ディスク（ＨＤＤ）
２０      デジタル・シグナル・プロセッサ（ＤＳＰ）
２２      時変振幅制御器（ＴＶＡ）
２４      操作子群
２６      表示器
２８      デジタル／アナログ変換器（Ｄ／Ａ）
３０      アンプ（増幅器）
３２      スピーカー
【図１】
0004097785.tif 000002
【図２】
0004097785.tif 000003
【図３】
0004097785.tif 000004
【図４】
0004097785.tif 000005
【図５】
0004097785.tif 000006
【図６】
0004097785.tif 000007
【図７】
0004097785.tif 000008
【図８】
0004097785.tif 000009
【図９】
0004097785.tif 000010
【図１０】
0004097785.tif 000011
【図１１】
0004097785.tif 000012
【図１２】
0004097785.tif 000013
【図１３】
0004097785.tif 000014
【図１４】
0004097785.tif 000015
【図１５】
0004097785.tif 000016
【図１６】
0004097785.tif 000017
【図１７】
0004097785.tif 000018