JP4097785B2 - 波形再生装置 - Google Patents
波形再生装置 Download PDFInfo
- Publication number
- JP4097785B2 JP4097785B2 JP16612598A JP16612598A JP4097785B2 JP 4097785 B2 JP4097785 B2 JP 4097785B2 JP 16612598 A JP16612598 A JP 16612598A JP 16612598 A JP16612598 A JP 16612598A JP 4097785 B2 JP4097785 B2 JP 4097785B2
- Authority
- JP
- Japan
- Prior art keywords
- waveform
- information
- event
- address
- reproduction
- 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】
【従来の技術】
従来より、波形データのタイム・ストレッチ技術(波形データを時間圧縮あるいは時間伸張して再生する技術)を使用して、メモリに記憶された波形データに対して再生時間に応じた圧縮処理あるいは伸張処理を施し、この圧縮処理あるいは伸張処理により予めタイム・ストレッチした波形データを作成しておき、こうして作成されたタイム・ストレッチした波形データを再生する方法が知られている。
【0003】
しかしながら、この方法による場合には、予めタイム・ストレッチの処理(圧縮処理あるいは伸張処理)を施す必要があるため、リアルタイムで任意に圧縮あるいは伸張を制御することができないという問題点があった。
【0004】
さらに、上記のようにして作成されたタイム・ストレッチした波形データを再生する際における再生音高を変化させると、再生時間も変化してしまうという問題点があった。
【0005】
一方、上記した波形データのタイム・ストレッチ技術を使用したものとは異なる技術として、メモリからの波形の読み出し速度を変化することによって再生時間を変化させ、その変化させた結果として生じる波形再生のピッチの変化をピッチ変換装置によって補正する方法が提案されている。
【0006】
この方法によれば、リアルタイムで再生時間の制御が可能であるが、ピッチ変換装置の変換能力には限界があるため音質の劣化は免れず、再生時間の制御範囲が狭い範囲に制限されるという問題点があった。このため、特に、波形の読出速度を遅くする場合に不都合が生じることとなっており、例えば、メモリの読出速度を非常に遅くして長い再生時間に制御しようとする場合には、ピッチ変換装置では元の波形データを再現することはできなくなってしまうものであった。
【0007】
さらに、上記したようなピッチ変換装置を使用する制御方法において、波形データを同じ再生音高により再生時間を変化させて再生しようとする際には、たとえ再生音高が同じであっても再生時間を変化させることによりピッチ変換装置に入力される波形のピッチも変化してしまうため、ピッチ変換装置の変換量も再生時間毎に異なった変換量に設定する必要があるという問題点があった。つまり、読出速度(再生時間)の制御とピッチ変換量の制御とが互いに関連しており、読出速度(再生時間)と再生音高とを任意に独立して制御するには非常に複雑な処理が必要になってしまうものであった。
【0008】
また、従来のタイム・ストレッチ技術においては、単に波形を時間的に圧縮あるいは伸張するのみであって、波形データと再生時間とがそれぞれ同じであれば、結果として同じ楽音が再生されることになり、変化に乏しいという問題点もあった。
【0010】
【発明が解決しようとする課題】
本発明は、上記したような従来の技術の有する種々の問題点に鑑みてなされたものであり、その目的とするところは、タイム・ストレッチの処理を行いつつ、楽音の発生態様を変化させることを可能にして、同じ波形データからバリエーションに冨む波形再生を得ることができるようにするとともに、タイム・ストレッチの処理により圧縮または伸張を行なっても波形データが表わす波形とその発生態様との関係がずれることなく常に一定に保持されるようにした波形再生装置を提供しようとするものである。
【0011】
また、本発明の目的とするところは、一連の波形データの部分部分で異なる音高の制御を可能とし、音高の変化によるアクセントを付与することができるようにした波形再生装置を提供しようとするものである。
【0012】
また、本発明の目的とするところは、一連の波形データの部分部分で異なるエンベローブの制御を可能とし、例えば、波形データが複数のドラム音などの場合に、所定の拍のドラム音についてのみ減衰を短くしたり、所定の拍のドラム音についてのみ音量を絞ることができるようにして、音量の変化によるアクセントを付与することができるようにした波形再生装置を提供しようとするものである。また、本発明の目的とするところは、シャッフル感を表現したりすることを可能とし、リズムの変化を生むことができるようにした波形再生装置を提供しようとするものである。
【0015】
【課題を解決するための手段】
上記目的を達成するために、本発明のうち請求項1に記載の発明は、波形データと、該波形データの波形の時間軸上の位置を示す複数のマーク情報と、該マーク情報に対応し波形の発音態様を制御するための制御情報とを記憶する記憶手段と、上記波形データの再生速度を表す再生速度情報を入力する速度情報入力手段と、上記速度情報入力手段により入力された再生速度情報に応じた変化速度で変化する時間情報を発生する時間情報発生手段と、上記時間情報発生手段が発生する時間情報が、上記記憶手段に記憶されたマーク情報の位置に到達したことに基づいてタイミングを指示する指示手段と、上記波形データを読み出して波形信号を形成する波形形成手段であって、上記指示手段によりタイミングが指示された場合に、該タイミングに対応するマーク情報が示す波形を、該マーク情報に対応する上記記憶手段に記憶された制御情報に応じた発音態様で発音するように波形信号を形成する波形形成手段とを有するようにしたものである。
【0016】
従って、本発明のうち請求項1に記載の発明によれば、タイム・ストレッチの処理を行いつつ楽音の発生態様を変化させることができるので、同じ波形データからバリエーションに冨む波形を再生することができるようになるとともに、制御情報は波形の位置を示すマーク情報に対応しているので、タイム・ストレッチの処理により圧縮または伸張を行なっても、波形データが表わす波形とその発生態様との関係を常に一定に保持することができるようになる。
【0017】
また、本発明のうち請求項2に記載の発明は、本発明のうち請求項1に記載の発明において、上記制御情報は、発音音高を制御する音高情報であり、上記波形形成手段は、上記音高情報に応じた音高で波形信号を形成するようにしたものである。
【0018】
従って、本発明のうち請求項2に記載の発明によれば、音高情報により音高を制御することができるので、一連の波形データの部分部分で異なる音高に制御することが可能となり、音高の変化によるアクセントを付与することができるようになる。
【0019】
また、本発明のうち請求項3に記載の発明は、本発明のうち請求項1に記載の発明において、上記制御情報は、音量変化を制御するエンベローブ情報であり、上記波形形成手段は、上記エンベロープ情報に応じて音量変化する波形信号を形成するようにしたものである。
【0020】
従って、本発明のうち請求項3に記載の発明によれば、エンベロープ情報により音量を制御することができるので、一連の波形データの部分部分で異なる音量に制御することが可能となり、例えば、波形データが複数のドラム音などの場合には、所定の拍のドラム音についてのみ減衰を短くしたり、所定の拍のドラム音についてのみ音量を絞ることができるようになって、音量の変化によるアクセントを付与することができるようになる。
【0021】
また、本発明のうち請求項4に記載の発明は、本発明のうち請求項1に記載の発明において、上記制御情報は、上記指示手段が指示するタイミングを修正するタイミング修正情報であり、上記指示手段は、上記タイミング修正情報に基づいて、タイミングを修正して指示するようにしたものである。
【0022】
従って、本発明のうち請求項4に記載の発明によれば、タイミング修正情報によりタイミングをずらすことができるので、シャッフル感を表現したりすることができ、リズムの変化を生むことができるようになる。
【0023】
【発明の実施の形態】
以下、添付の図面を参照しながら、本発明による波形再生装置の実施の形態の一例を詳細に説明する。
【0024】
まず始めに、本発明による波形再生装置の理解を容易にするために、本発明による波形再生装置により実行されるタイム・ストレッチの処理の概略について説明する。
(1)本発明による波形再生装置により実行されるタイム・ストレッチの処理の概略
(1−1)本実施の形態において用いる用語の説明
(A)波形データ
波形データとは、時間経過に従って順次発生される複数の音(フレーズ)を表す波形のデータである。例えば、数小節のドラム演奏をサンプリングした波形のデータなどを意味する。
【0025】
(B)イベント
波形データによって表される時間経過に従って順次発生される複数の音のそれぞれをイベントと称する。
【0026】
(C)イベント・アドレス
イベント発生時のアドレス、即ち、波形データにおけるイベントの先頭のアドレスである。波形データが、例えば、数小節のドラム演奏をサンプリングしたものである場合には、当該ドラム演奏によるドラム音のアタック部の始点を示すアドレスである。
【0027】
(D)ループ・アドレス
波形データの再生時間の伸張時において、波形サンプルをループさせる際に参照するアドレスたるループ・スタート・アドレスとループ・エンド・アドレスとの総称である。波形データの再生時間の伸張時には、ループ・スタート・アドレスとループ・エンド・アドレスとによって特定されるループ区間の波形データを繰り返し(ループ)して読み出すことになる。従って、ループ・エンド・アドレスにおける波形とループ・スタート・アドレスにおける波形とがうまく接続されるように、ループ・スタート・アドレスとループ・エンド・アドレスとが定められる。なお、振幅に関する不整合は、後述する減衰率を乗じることにより解決することができる(この点については、図17(a)(b)(c)を参照しながら後に詳述する。)。
【0028】
(E)減衰率
ループを繰り返す毎に波形データのレベルを減衰させる割合である。
(1−2)原理
本発明による波形再生装置により実行されるタイム・ストレッチの処理においては、基本的に、予め波形データに応じてイベント発生時のアドレスたるイベント・アドレスと、波形データの再生時間の伸張時に波形サンプルをループさせるループ・アドレス(ループ・スタート・アドレスおよびループ・エンド・アドレス)と、ループを繰り返す毎にそのレベルを減衰させるための減衰率とを指定しておくものである(図1参照)。
【0029】
なお、図1に示す波形データは、イベントとしてはイベントAとイベントBとがある。
【0030】
そして、波形データの再生時間を伸張する場合には、予め指定されたこれらのデータを元にして、図2に示すようにループ区間の波形を減衰率を乗じながら繰り返し発生させるものである。
【0031】
一方、波形データの再生時間を圧縮する場合には、図3に示すようにイベントAとイベントBとの間隔を詰めて波形を発生させるものである。
(1−3)デジタル・シグナル・プロセッサ(DSP)でのリアルタイム処理の概要
本実施の形態においては、後述するようにDSP20(図9参照)のリアルタイム処理によって本発明による波形再生装置のタイム・ストレッチの処理が実現されるものである。
【0032】
以下、本発明の理解を容易にするために、こうしたDSP20におけるリアルタイム処理の概要について説明するものであり、DSP20でリアルタイム処理を行うためには、次のようにする。
【0033】
(A)まず、アドレス・カウンタを2つ持つようにする。これら2つのアドレス・カウンタの一方は再生時間カウンタであり、もう一方は実アドレス・カウンタである。
【0034】
ここで、再生時間カウンタは、時間の圧縮あるいは伸張に合わせて再生時間通りに動作するカウンタである。伸張率が「1:1」であるならば1サンプル時間で1だけ増加し、伸張率が「2」、即ち、再生時間が半分になる場合には1サンプル時間で2増加する。なお、従来のサンプラーでは、この再生時間カウンタの値を波形メモリのアドレスとして読み出していたため、再生時間が半分になればピッチが倍になっていた。
【0035】
また、実アドレス・カウンタは、実際に波形メモリを読み出すときのアドレスを示すものである。通常は圧縮あるいは伸張に関わらず、1サンプル時間につき1だけ増加する。つまり、読み出しピッチは一定となる。ただし、後述するように、必要に応じてアドレスは、次のイベント・アドレスやループ・スタート・アドレスヘジャンプすることがある。
【0036】
(B)次に、2つのカウンタ、即ち、再生時間カウンタおよび実アドレス・カウンタの動きを具体的に説明する。
【0037】
まず、オリジナル(サンプリング時における状態)に対して80%の再生時間に圧縮する場合、即ち、再生速度を1.25倍にして再生する場合について検討する。
【0038】
なお、以下の説明においては、図4に示すように、波形データの頭(アドレス0)で最初のイベントがあり、アドレスaで次のイベントが発生し、アドレスbで波形データが終了している波形データを例として説明する。
【0039】
まず、再生時間カウンタを、1サンプル時間につき1.25増加させるように設定する。実アドレス・カウンタについては、1サンプル時間につき1増加のままでよく、実アドレス・カウンタをポインタとして波形データを読み出しに行くので、再生ピッチ(再生音高)はオリジナルのままである。
【0040】
そうすると、当然のことながら、再生時間カウンタが先にアドレスaに到達するが、再生時間カウンタがアドレスaに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をaに書き換える。それから何事もなかったように、またアドレスaから読み出しを行なう。
【0041】
そして、再生時間カウンタがアドレスbに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【0042】
以上の動作で、再生時間を80%に圧縮し、しかしピッチはオリジナルのままという、本発明による波形再生装置におけるタイム・ストレッチの処理による波形データの再生時間の時間圧縮が可能となる。
【0043】
(C)次に、オリジナルに対して125%の再生時間に伸張する場合、即ち、再生速度を0.8倍にして再生する場合を検討する。
【0044】
なお、アドレスa、アドレスbについては圧縮の場合と同様であるが、これに加えて図5に示すように、アドレスc、アドレスd、アドレスeおよびアドレスfをループ・アドレスとして設定する。ここで、アドレスcおよびアドレスeはループ・スタート・アドレスであり、アドレスdおよびアドレスfはループ・エンド・アドレスである。
【0045】
そして、再生時間カウンタを、1サンプル時間につき0.8増加するように設定する。また、実アドレス・カウンタについては、1サンプル時間につき1増加のままでよく、実アドレス・カウンタをポインタとして波形データを読み出して行くので、再生ピッチはオリジナルのままとなる。
【0046】
そして、実アドレス・カウンタがループ・エンド・アドレスdに到達したならば、ループ・スタート・アドレスcに戻ってワンウ工イ・ループを行なう。その場合には、予め設定してある減衰率を乗算し、エンベロープがスムーズにつながるようにする。このループは再生時間カウンタがaに達するまで、何度でも操り返すが、繰り返す度に減衰率を乗算するので、出力は徐々に減衰していく。
【0047】
なお、基本的には本発明は、ドラム音などの減衰音を処理の対象としているものである。
【0048】
そして、再生時間カウンタがaに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をaに書き換え、同様にaから読み出しを行ない、ループ・スタート・アドレスeとループ・エンド・アドレスfとの間でループする。
【0049】
さらに、再生時間カウンタがbに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【0050】
以上の動作で、再生時間を125%に伸張し、しかしピッチはオリジナルのままという本発明による波形再生装置におけるタイム・ストレッチの処理による波形データの再生時間の時間伸張が可能となる。
【0051】
(D)上記においては、再生時間を80%に圧縮する場合および再生時間を125%に伸張する場合、換言すれば、再生速度を1.25倍にして再生する場合および再生速度を0.8倍にして再生する場合について説明したが、リアルタイムでこのような圧縮あるいは伸張の率、つまりは再生速度を変化させる場合には、この再生速度を上記再生時間カウンタの1サンプル時間の増加量に随時反映させればよい。例えば、再生速度が1.25倍ならば増加量は1.25とし、再生速度が0.8倍ならば増加量は0.8というようにすればよい。
【0052】
(E)本発明による波形再生装置により実行されるタイム・ストレッチの処理における基本的な動作は以上の通りであるが、このままでは実際には若干問題が生じる恐れがある。例えば、圧縮する場合を考えると、実アドレス・カウンタが図6(a)のアドレスxにいたときに、イベント・アドレスaにジャンプすると波形が不連続になり、「プチッ」という音のノイズが発生してしまう恐れがある。
【0053】
こうしたノイズを防止するために、後述する実施の形態においては、再生時間カウンタが次のイベント・アドレスaに近づくと、図6(b)に示すように、TVA(時変振幅制御器)のゲインを用いて出力を徐々に絞ることによって、波形の不連続によるノイズの発生を抑制するようにしている。
(2)本発明による波形再生装置により実行されるタイム・ストレッチの処理におけるバリエーションの付与
以上において説明した例においては、圧縮あるいは伸張された出力は、ピッチ、音色、発音タイミングなどはオリジナルのものと同一である。しかしながら、特定のイベントのピッチなどを変更することによって、フレーズにバリエーションを付けることができるものであり、以下にその例を説明する。
(例1)イベント毎にピッチを変更する場合
オリジナルの80%に再生時間を圧縮し、かつ、ピッチは5%下げる場合を検討する。なお、図4に示す場合と同様に、波形データの頭(アドレス0)で最初のイベントがあり、アドレスaで次のイベント、アドレスbで波形データが終了するものとする。
【0054】
まず、再生時間カウンタを1サンプル時間につき1.25増加するように設定する。ここで、実アドレス・カウンタについては1サンプル時間につき0.95増加するように設定する。このようにすると、実アドレス・カウンタをポインタとして波形データを読み出して行くので、再生ピッチはオリジナルから5%下がった値となる。
【0055】
当然のことながら、再生時間カウンタが先にアドレスaに到達し、再生時間カウンタがアドレスaに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をaに書き換える。それから何事もなかったようにまたaから読み出しを行なう。
【0056】
さらに、再生時間カウンタがbに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【0057】
以上の動作により、再生時間を80%に圧縮し、ピッチをオリジナルから5%下げた波形信号が得られることになる(なお、イベント毎のエンベロープは、若干変化することになる。)
ここで、何%のピッチ変換をするかを各イベント毎に予め設定したテーブルを設けておくことにより、イベント発生毎(上記した例においては再生時間カウンタがアドレスaに到達したとき)にそのテーブルを参照し、イベント毎にピッチの変換値を変更することも可能である。
【0058】
また、ピッチ変換値は、LFOやノイズ・ジェネレータを用いることにより、周期的に、あるいはランダムに変更することも可能である。
(例2)イベント毎にエンベロープを変更する場合
上記した(1−2)の(E)において説明したように、後述する実施の形態においては、出力される波形信号に影響があらわれない程度にTVA(時変振幅制御器)がかけられているが、これを積極的に用いて、楽音に効果を付与することも可能である。例えば、図7(a)に示すタイム・ストレッチの処理を施した波形(原音)にゲートをかけるなどの効果付与は、ドラム音などには特に有効である。
【0059】
即ち、図7(a)に示すタイム・ストレッチした波形(原音)に関して、TVA波形のゲート・タイム(図7(b)におけるa)、ゲイン(図7(b)におけるb)、ゲートを閉じる場合の減衰カーブ形状(図7(b)におけるc)などをイベント毎に指定して、ピッチの場合と同様にイベント毎に付与する効果を変更することにより、図7(c)に示す効果付与された波形を得ることにより音色のバリエーションを得ることができるようになる。
(例3)特定のイベントの発生位置を移動させる場合
例えば、ドラムの波形サンプルにおいて、圧縮時あるいは伸張時に特定のイベント(例えば、スネア音など)を少しもたらせた、即ち、タイミングを遅らせたり、タイミングを早めたりしたいときがある。この場合について説明する。
【0060】
ここで、図8に示すように、オリジナルの80%に再生時間を圧縮する場合について、波形データの頭(アドレス0)で最初のイベントがあり、アドレスaで次のイベントが発生し、アドレスbで波形データが終了しているものとする。
【0061】
まず、再生時間カウンタを1サンプル時間につき1.25増加するように設定する。実アドレス・カウンタについては1サンプル時間につき1増加のままでよく、実アドレス・カウンタをポインタとして波形データを読み出していくので、再生ピッチはオリジナルのままとなる。
【0062】
そして、当然のことながら、再生時間カウンタが先にアドレスa−xに到達する。再生時間カウンタがアドレスa−xに到達したならば、実アドレス・カウンタは現在のアドレス値を放棄し、その値をaに書き換える。それから、何事もなかったようにまたaから読み出しを行う。
【0063】
そして、再生時間カウンタがbに到達したならば、これは波形データの読み出しの終了を意味するので、実アドレス・カウンタも動作を中止し、波形再生を完了する。
【0064】
以上の動作により、ピッチはオリジナルのままで再生時間を80%に圧縮し、2つめのイベントの発生タイミングを、純粋に80%に圧縮した場合よりもxだけ早めて発音させた信号が出力される。
【0065】
逆にxだけ遅らせたいならば、再生時間カウンタがアドレスa+xに到達したときに、実アドレス・カウンタはその値をaに書き換えればよい。
【0066】
なお、イベントの発生位置を変えることによって、時間的に隣り合うイベントの発生の間隔が長くなったり短くなったりすることになる。従って、再生時間を圧縮する場合であっても、時間的に隣り合うイベントの発生の間隔が長くなることにより、波形再生をループによって伸張しなければならない場合がある。
【0067】
また、上記xの値およびタイミングを遅らせるか早めるかの極性は、イベント毎に指定可能なことは勿論である。
(例4)特定のイベントに連動させて別の波形データを読み出す場合
例えば、ドラムのスネア音を他の音に変更したいときがある。この場合には、特定のイベントに対してTVAのゲインを0にすると同時に、別の波形データを読み出すようにすればよい。これにより、特定のイベントの差し替えが可能である。
【0068】
イベントの差し替えはピッチ変換の場合と同様に、差し替えを行なうか否か、さらには差し替えを行なう場合にどの波形データと差し替えるのかを各イベント毎に設定したテーブルを予め用意し、イベント発生毎にそのテーブルを参照して、差し替えを行なうかどうかを決定するとともに、さらにイベントを差し替える場合には差し替える波形データを決定するようにすればよい。
(3) 実施の形態の詳細な説明
図9には、本発明による波形再生装置の実施の形態の一例を表すブロック構成図が示されている。
【0069】
この波形再生装置は、その全体の動作の制御を中央処理装置(CPU)10を用いて制御するように構成されており、このCPU10には、バス(BUS)12を介して、リード・オンリ・メモリ(ROM)14と、ランダム・アクセス・メモリ(RAM)16と、ハード・ディスク(HDD)18と、デジタル・シグナル・プロセッサ(DSP)20と、時変振幅制御器(TVA)22と、操作子群24と、表示器26とが接続されている。そして、さらにTVA22には、デジタル/アナログ変換器(D/A)28が接続され、D/A28にはアンプ(増幅器)30が接続され、アンプ30にはスピーカー32が接続されている。
【0070】
次に、上記した各構成要素を詳細に説明すると、まず、CPU10は、ROM14に格納されたプログラムを実行して、後述するフローチャートに示す操作子群24を構成する各種の操作子の操作に応じた処理やDSP20の処理などの制御などを実行するものである。
【0071】
また、ROM14は、CPU10が実行するプログラムを記憶する半導体メモリである。
【0072】
また、RAM16は、波形情報やCPU10の処理に用いられる変数ならびに設定される各種パラメータ値(パラメータ情報)を記憶する半導体メモリである。
【0073】
また、HDD18は、RAM16に転送するための複数の波形情報を蓄積するハード・ディスクである。
【0074】
また、DSP20は、CPU10の制御に基づいてDSP20内部に格納されているプログラムを実行し、RAM16から波形情報を読み出して波形再生を行い、波形信号を出力するものである。
【0075】
また、TVA22は、DSP20から出力される波形信号の振幅制御を行い、振幅制御された波形信号を出力するものである。なお、この波形再生装置においては、イベント毎にエンベロープを変更するためにのみこのTVA22を用いており、その他の振幅制御はDSP20により行なうようにしている。
【0076】
また、操作子群24は、図10を参照しながら後述する演奏操作のための演奏操作子とパラメータをエディットするためのエディット用操作子とから構成されている。
【0077】
また、表示器26は、パラメータのエディット時にパラメータ値を表示画面26a(図10参照)に表示するものである。
【0078】
また、D/A28は、TVA22から出力されたデジタルの波形信号を、アナログの波形信号に変換して出力するものである。
【0079】
また、アンプ30は、D/A28から出力された波形信号を増幅して出力するものである。
【0080】
また、スピーカー32は、アンプ30から出力された波形信号を、聴取し得る音として空間に放音するものである。
【0081】
次に、図10に示す操作パネルの概略構成図を参照しながら、操作子群24を構成する各種の操作子について説明する。なお、操作パネルには、操作子群24を構成する各種の操作子の他に、表示器26の表示画面26aが設けられている。
【0082】
ここで、操作子群24を構成する操作子としては、上記したように、演奏操作のための演奏操作子とパラメータをエディットするためのエディット用操作子とがある。そして、演奏操作子としては、4個のパッド40(4個のパッド40は、図10に示す1〜4の番号に対応する1〜4の番号(パッドの番号)によって管理されている。)とダイアル42とが設けられている。また、エディット用操作子としては、エディット・ボタン(EDIT)44と、エクジット・ボタン(EXIT)46と、イベント選択前進ボタン48aおよびイベント選択後退ボタン48bよりなるイベント選択ボタン(EVENT)48と、ピッチ・シフト・ボタン(Pitch Shift)50と、エンベロープ・ボタン(Envelope)52と、タイミング・シフト・ボタン(Timing Shift)54と、パラメータ値増加ボタン56aおよびパラメータ値減少ボタン56bよりなるバリュー・ボタン(VALUE)56と、プレビュー・ボタン(Preview)58とが設けられている。以下に、上記した各操作子について詳細に説明する。
【0083】
まず、パッド40は、オン操作(押す操作)をすることで、オン操作したパッド40に対応する波形の再生を行なうことを指示する操作子である。パッド40をオン操作している間(押している間)は波形再生が続けられ、オフ操作(離す操作)を行うと消音されることになる。
【0084】
また、ダイアル42は、波形再生の速度を制御するためのツマミである。ダイアル42を右に回すほど再生速度が速くなり、ダイアル42を左に回すほど再生速度が遅くなる。なお、このダイアル42の操作は、再生される波形のピッチに影響を与えない。
【0085】
また、エディット・ボタン44は、イベントに設定する各種のパラメータのエディットの開始を指示するボタンである。
【0086】
また、エクジット・ボタン46は、エディット・ボタン44の操作により開始されたエディットの終了を指示するボタンである。
【0087】
また、イベント選択ボタン48は、上記したようにイベント選択前進ボタン48aおよびイベント選択後退ボタン48bよりなり、パラメータをエディットしたいイベントを選択するためのボタンよりなる。イベント選択前進ボタン48aを1回押す毎に現在選択されているイベントより先にあるイベントが順次選択され、イベント選択後退ボタン48bを1回押す毎に現在選択されているイベントより後にあるイベントが順次選択される。
【0088】
また、ピッチ・シフト・ボタン50は、エディットするパラメータの種類としてピッチ・シフトを選択するボタンである。
【0089】
また、エンベロープ・ボタン52は、エディットするパラメータの種類としてエンベロープを選択するボタンである。
【0090】
また、タイミング・シフト・ボタン54は、エディットするパラメータの種類としてタイミング・シフトを選択するボタンである。
【0091】
また、バリュー・ボタン56は、上記したようにパラメータ値増加ボタン56aおよびパラメータ値減少ボタン56bよりなり、パラメータ値の増減やON(オン)/OFF(オフ)選択に用いる。
【0092】
また、プレビュー・ボタン58は、現在注目しているイベントの波形を実際に再生する際に操作するものである。
【0093】
次に、RAM16ならびにHDD18に記憶される波形情報について説明すると、RAM16ならびにHDD18に記憶される波形情報は以下の情報よりなるものである。
【0094】
(A)波形データ
WAVE[アドレス]
(B)エンド・アドレス(波形データの最終アドレス)
END_ADDR
(C)総イベント数(波形データに含まれるイベントの総数)
EVENTS
(D)イベント情報(イベント毎の情報)
(D1)イベント・アドレス
EVENT_ADDR[イベント・ナンバ]
(D2)ループ・スタート・アドレス
LOOP_START[イベント・ナンバ]
(D3)ループ・エンド・アドレス
LOOP_END[イベン・ナンバ]
(D4)減衰率
DECAY_RATE[イベント・ナンバ]
なお、イベント・ナンバはイベントを特定するための番号であり、時系列の各イベントに対して時間的に早い方から順に0、1、2、・・・の番号が与えられでいる。以下の説明においては、0番目のイベント、1番目のイベント、2番目のイベント、・・・というようにして用いる。
【0095】
次に、パラメータ情報の詳細について説明するが、パラメータ情報とは、上記した波形情報の各イベントに対して波形の発音態様を制御するためのパラメータ群であり、以下のものからなる。なお、これらの設定については後述する。
【0096】
(A)ピッチ(音高)シフト量
PITCH_SHIFT[イベント・ナンバ]
(初期値=1)
値が1のときピッチ不変であり、1より大のときピッチがオリジナルより高くなり、1より小のときピッチがオリジナルより低くなる。
【0097】
(B)エンベロープ情報
エンベロープの制御をするか否か、ならびにエンベロープの形状を示すものである。
【0098】
(B1)エンベロープSW
ENV_SW[イベント・ナンバ]
(初期値:OFF(オフ))
ON(オン):制御する、OFF(オフ):制御しない
(B2)エンベロープ・タイム(図7(b)のaに対応する。)
ENV_TIME[イベント・ナンバ]
(B3)エンベロープ・ゲイン(図7(b)のbに対応する。)
ENV_GAIN[イベント・ナンバ]
値が1のとき音量不変であり、1より大のとき音量がオリジナルより大きくなり、1より小のとき音量がオリジナルより小さくなる。
【0099】
(B4)エンベロープ・カーブ(図7(b)のcに対応する。)
ENV_CURVE[イベント・ナンバ]
(C)タイミング・シフト量
TIME_SHIFT[イベント・ナンバ]
(初期値:0)
値が0のときタイミング不変であり、値が正のときイベントの発生タイミングがオリジナルより遅れ、値が負のときイベントの発生タイミングがオリジナルより早まる。
【0100】
次に、RAM16の記憶領域について説明すると、RAM16には、パッドの番号1〜4の4個のパッド40にそれぞれ対応して、4個のバンクのための記憶領域が設けられている。
【0101】
ここで、4個のバンクは、バンクの番号(バンク・ナンバ)が1のバンク1、バンク・ナンバが2のバンク2、バンク・ナンバが3のバンク3、バンク・ナンバが4のバンク4として管理されており、バンク1〜4の各々のバンクには、上記した波形情報と当該波形情報に対応するパラメータ情報とが組になって記憶されている。従って、例えば、パッド2が操作されると、パッド2に対応するバンク2に記憶された波形情報およびパラメータ情報に基づいて波形の再生が行われることになる。
【0102】
次に、図11に示すフローチャートを参照しながら、CPU10により実行されるCPU処理ルーチンについて説明する。
【0103】
このCPU処理ルーチンにおいては、まず、この波形再生装置の初期化の処理を行う(ステップS1102)。初期化の処理としては、具体的には、以下の(A)〜(E)の処理を行う。
【0104】
(A)RAM16のバンク1〜4について波形情報をHDD18からそれぞれ読み込む。
【0105】
(B)RAM16のバンク1〜4のそれぞれのパラメータ情報を初期化する。
(C)波形情報の全てのイベントについて、以下の初期値を設定する。
【0106】
・PITCH_SHIFT[イベント・ナンバ]の初期値として1を設定する。
【0107】
・ENV_SW[イベント・ナンバ]の初期値としてオフ(OFF)を設定する。
【0108】
・TIME_SHIFT[イベント・ナンバ]の初期値として0を設定する。
【0109】
(D)変数の初期化
・ON_FLAGの初期値として0を設定する。
【0110】
(E)DSP20のレジスタの初期化、DSP20の起動
・n_on(後述する。)の初期値として0を設定する。
【0111】
・n_off(後述する。)の初期値として0を設定する。
【0112】
・gate(後述する。)の初期値として0を設定し、発音しないようにする。
【0113】
ステップS1102の処理を終了すると、ステップS1104へ進み、パッド40がオン操作されたか否かを判断する。
【0114】
ステップS1104において、パッド40がオン操作されたと判断された場合には、ステップS1106へ進み、ステップS1106〜ステップS1114においてパッド40のオン操作に対する処理を行う。
【0115】
まず、ON_FLAGが1にセットされているか否かを判断する(ステップS1106)。このON_FLAGは、再生開始指示をDSP20に行なったとき1にセットされ、再生終了指示を行なったとき0にセットされるフラグである。ステップS1106において、ON_FLAGが1にセットされているとは判断されなかった場合には、DSP20に再生開始指示を行なうために、ステップS1108〜ステップS1114における処理を行なう。
【0116】
即ち、オン操作されたパッド40に対応するパッド番号をDSP20のレジスタであるバンク・ナンバbank#(後述する。)にセッ卜し(ステップS1108)、再生開始指示のためにDSP20のn_onに1をセットし(ステップS1110)、オン操作されたパッド40の番号をDSP20のレジスタであるON#に記憶しておき(ステップS1112)、再生開始指示を行なったのでON_FLAGを1にセットして(ステップS1114)、それからステップS1104へ戻る。
【0117】
一方、ステップS1106において、ON_FLAGが1にセットされていると判断された場合には、既に他のパッド40のオン操作により波形再生が行なわれているので、新たに再生開始指示を行なうことなくそのままステップ1104へ戻る。
【0118】
また、ステップS1104において、パッド40がオン操作されたと判断されなかった場合には、ステップS1116へ進み、パッド40がオフ操作されたか否かを判断する。
【0119】
ステップS1116において、パッド40がオフ操作されたと判断された場合には、ステップS1118へ進み、ステップS1118〜ステップS1122においてパッド40のオフ操作に対する処理を行う。
【0120】
まず、オフ操作されたパッド40の番号とON#に記憶されたパッド40の番号とが等しいか否かを判断する(ステップS1118)。即ち、ON#には再生開始指示を行なったときのパッド40の番号が記憶されているので、ON#に記憶されたパッド40の番号とオフ操作されたパッドの番号とが等しい場合には、再生開始指示の元となったパッド40がオフ操作されたと判断されるものである。
【0121】
ステップS1118において、オフ操作されたパッド40の番号とON#に記憶されたパッド40の番号とが等しいと判断された場合、即ち、再生開始指示の元となったパッド40がオフ操作されたと判断された場合には、DSP20に再生終了指示を行なうために、ステップS1120〜ステップS1122における処理を行なう。
【0122】
即ち、再生終了指示のためにDSP20のn_offに1をセットし(ステップS1120)、それから再生終了指示を行なったのでON_FLAGに0をセットして(ステップS1120)、そうしてステップS1104へ戻る。
【0123】
一方、ステップS1118において、オフ操作されたパッド40の番号とON#に記憶されたパッド40の番号とが等しいと判断されなかった場合には、新たに再生終了指示を行なうことなくそのままステップ1104へ戻る。
【0124】
また、ステップS1116において、パッド40がオフ操作されたと判断されなかった場合には、ステップS1124へ進み、ダイアル42が操作されたか否かを判断する。
【0125】
そして、ステップS1124において、ダイアル42が操作されたと判断された場合には、ステップS1126へ進み、ダイアル42の現在値をDSP20のレジスタであるtcomp(後述する。)にセットする。なお、この波形再生装置においては、ダイアル42の操作により得られる値、すなわち波形の再生速度を「1/2〜1(中央)〜2」としている。そして、ステップS1126の処理を終了すると、ステップS1104へ戻る。
【0126】
一方、ステップS1124において、ダイアル42が操作されたと判断されなかった場合には、ステップS1128へ進み、エディット・ボタン44が操作されたか否かを判断する。
【0127】
そして、ステップS1128において、エディット・ボタン44が操作されたと判断された場合には、ステップS1130へ進み、パラメータ情報の各種パラメータをエディットするパラメータ・エディット処理を実行する。そして、ステップS1130のパラメータ・エディット処理を終了すると、ステップS1104へ戻る。
【0128】
一方、ステップS1128において、エディット・ボタン44が操作されたと判断されなかった場合には、そのままステップS1104へ戻る。
【0129】
ここで、ステップS1130におけるパラメータ・エディット処理においては、エディットの操作は以下(1)〜(6)のようにして行われる。
【0130】
(1)パッド40のいずれかを操作して、バンクを指定する。即ち、パッド1を操作するとバンク1が指定され、パッド2を操作するとバンク2が指定され、パッド3を操作するとバンク3が指定され、パッド4を操作するとバンク4が指定される。
【0131】
(2)イベント選択ボタン48を操作して何番目のイベントのパラメータをエディットするのかを選択する。
【0132】
(3)ピッチ・シフト・ボタン50、エンベロープ・ボタン52、タイミング・シフト・ボタン54のいずれかを操作して、エディットするパラメータの種類を指定する。
【0133】
(4)バリュー・ポタン56を操作してパラメータ値を変更する。
【0134】
(5)プレビュー・ボタン58を押すと、現在注目しているイベントの波形が実際に再生されるので、これを確認して必要ならば再び上記(4)の処理を行なう。
【0135】
(6)さらに別のパラメータをエディットするときは上記(1)〜(5)の処理を操り返す。エディットを終了するときはエクジット・ボタン46を押す操作を行う。エクジット・ボタン46を押す操作により、パラメータ・エディット処理を抜けることになる。
【0136】
なお、この波形再生装置においては、エンベロープ・ボタン52を押す毎に、パラメータの種類がエンベロープ・スイッチ(エンベロープSW)→エンベロープ・タイム→エンベロープ・ゲイン→エンベロープ・カーブ→エンベロープSW→・・・と巡回的に切り換わるものである。
【0137】
また、タイミング・シフトのエディットを行なっているときにプレビュー・ボタン58を押すと、現在注目しているイベントならびに現在注目しているイベントの手前のイベントおよびそれに続くイベントを合わせて連続して波形再生する。これによって他のイベントとの相対的なタイミングを確認することができるようになる。
【0138】
さらに、表示器26の表示画面26aには、指定したバンク、イベント、パラメータ種類、パラメータ値が、図12(a)(b)に示すように表示される。
【0139】
即ち、図12(a)には、バンクのパラメータ値が3(BANK:3)、イベントのパラメータ値が4(EVENT:4)、ピッチのパラメータ値が2.00(PITCH:2.00)である状態が示されている。
【0140】
また、図12(b)には、バンクのパラメータ値が2(BANK:2)、イベントのパラメータ値が7(EVENT:7)、エンベロープ・スイッチのパラメータ値がオフ(ENVELOPE SW:OFF)である状態が示されている。
次に、図13ならびに図14に示すフローチャートを参照しながら、DSP20により実行されるメイン・ルーチンについて説明する。
【0141】
なお、DSP20は、このメイン・ルーチンをサンプリング周期毎に繰り返し実行する。従って、サンプリング周波数が44.1kHzであれば、1秒間に44100回実行されることになる。
【0142】
ここで、メイン・ルーチンの処理内容を説明する前に、このメイン・ルーチンにおいて用いられるDSP20の主要なレジスタやフラグについて説明する。
【0143】
(A)pc
再生時間カウンタである。波形データのアドレスを指し、再生速度tcompの値ずつ歩進する。
【0144】
(B)ac
実アドレス・カウンタである。波形データの読み出しアドレスとして用いられるものであり、ピッチ・シフト量pitchの値ずつ歩進する。
【0145】
(C)tcomp
再生速度を示すものである。CPU10によりその値が設定され、値が1のときオリジナルと同じ再生速度となり、1より大きいときはオリジナルより再生速度が速くなり、1より小さいときはオリジナルより再生速度が遅くなる。
(D)pitch
ピッチ・シフト量を示すものである。値が1のときオリジナルと同じピッチとなり、1より大きいときはオリジナルよりピッチが高くなり、1より小さいときはオリジナルよりピッチが低くなる。
【0146】
(E)bank#
バンク・ナンバを示すものである。オン操作されたパッド40のパッド番号が、CPU10の処理によりセットされる。
【0147】
(F)event#
イベント・ナンバを示すものである。再生処理中のイベントが何番目のイベントであるかを指し示すものである。
【0148】
(G)n_on
再生開始指示フラグである。CPU10がDSP20に再生開始を指示するときに、CPU10が1にセットする。そして、再生開始を終えたならば、DSPが0にセットする。
【0149】
(H)n_off
再生終了指示フラグである。CPU10がDSP20に再生終了を指示するときに、CPU10が1にセットする。そして、再生終了を終えたらならば、DSP20が0にセットする。
【0150】
(I)gate
DSP20から波形信号を出力するとき1にセットし、出力しないとき0にセットするフラグである。このgateは、後述するステップS1324の処理において反映される。
【0151】
(J)gain
減衰制御を行うためのものである。ループ読み出しにおける減衰処理、および次イベントに移行する前の急速減衰処理に用いられる。
【0152】
(K)next_addr
次アドレスを示すものである。基本的にはpcが次に到達するイベント・アドレスが格納される。ただし、タイミング・シフト量が考慮され、イベント・アドレスよりも前後する。
【0153】
(L)dump_addr
急速減衰開始アドレスを示すものである。次のイベントに移る前に急速減衰処理を開始するアドレスたる急速減衰開始アドレスを示すものであり、pcがこれに到達すると処理を開始する。
【0154】
以上において説明したレジスタやフラグを参照しながらメイン・ルーチンを説明すると、メイン・ルーチンにおいては、まず、ステップS1302〜ステップS1314において再生開始指示に対する処理が実行される。
【0155】
即ち、ステップS1302において、レジスタn_onに1がセットされているか否か判断され、レジスタn_onに1がセットされていると判断された場合には、CPU10から再生開始指示があったものとしてステップS1304〜ステップS1314における処理を行う。
【0156】
つまり、イベント・ナンバevent#を0に初期化して波形情報の先頭のイベントを指すようにし(ステップS1304)、再生時間カウンタpcおよび実アドレス・カウンタacに初期値として波形情報の先頭のイベント・アドレスEVENT_ADDR[bank#,event#] (event#は0)をセットし(ステップS1306)、end_addrに波形情報のエンド・アドレスEND_ADDR[bank#]をセットするとともにeventsに波形情報の総イベント数EVENTS[bank#]をセットし(ステップS1308)、メイン・ルーチンのサブ・ルーチンとしてのイベント処理(図15を参照しながら後述する。)を実行し(ステップS1310)、gateに1をセットして波形再生音が出力されるようにし(ステップS1312)、上記のようにして再生開始の処理が済んだのでn−onを0にクリアする(ステップS1314)。
【0157】
そして、ステップS1314の処理を終了すると、ステップS1316の処理へ進む。
【0158】
一方、ステップS1302において、レジスタn_onに1がセットされていると判断されなかった場合には、ジャンプしてステップS1316の処理へ進む。
【0159】
そして、ステップS1316〜ステップS1320において再生終了指示に対する処理が実行される。
【0160】
即ち、ステップS1316において、レジスタn_offに1がセットされているか否か判断され、レジスタn_offに1がセットされていると判断された場合には、CPU10から再生終了指示があったものとしてステップS1318〜ステップS1320における処理を行う。
【0161】
つまり、gateに0をセットして波形再生音が出力されないようにし(ステップS1318)、これにより再生終了の処理が済んだのでn−offを0にクリアする(ステップS1320)。
【0162】
そして、ステップS1320の処理を終了すると、ステップS1322の処理へ進む。
【0163】
一方、ステップS1316において、レジスタn_offに1がセットされていると判断されなかった場合には、ジャンプしてステップS1322の処理へ進む。
【0164】
そして、ステップS1322においては、波形情報を読み出して、バンク・ナンバbank#の波形情報のアドレスacの波形データWAVE[bank#,ac]をwavにセツトする。
【0165】
ステップS1322の処理を終了すると、ステップS1324へ進み、演算式「wav×gain×gate」の演算によって得られた値を、波形信号としてTVA22へ出力する。
【0166】
ステップS1324の処理を終了すると、再生時間カウンタpcをtcompだけ歩進させ(ステップS1326)、さらに実アドレス・カウンタacをpitchだけ歩進させる(ステップS1328)。
【0167】
ステップS1328の処理を終了すると、ステップS1330へ進み、再生時間カウンタpcが波形データの最終アドレスであるエンド・アドレスend_addrに到達したか否かを判断する。
【0168】
ここで、ステップS1330において、再生時間カウンタpcが波形データの最終アドレスであるエンド・アドレスend_addrに到達したと判断された場合には、ステップS1332〜ステップS1338において再生終了に関する処理が実行される。
【0169】
即ち、gateに0をセットして波形再生音が出力されないようにし(ステップS1332)、event#に0をセットし(ステップS1334)、再生時間カウンタpcおよび実アドレス・カウンタacに初期値として波形情報の先頭のイベント・アドレスEVENT_ADDR[bank#,event#](event#はO)をセットし(ステップS1336)、メイン・ルーチンのサブ・ルーチンとしてのイベント処理を実行し(ステップS1338)、このメイン・ルーチンを終了する。
【0170】
なお、上記したステップS1332〜ステップS1338の処理において、再生音が出力されないようにするのであれば、gateに0をセットするだけで十分であるが、再生を終了しても波形データの読み出しは継続されるため、その際に予定外のデータを読み出すことのないように、念のため波形情報の先頭のイベント・アドレスから波形を再び読み出すようにしている。
【0171】
また、上記したようにgateに0をセットすると、波形データを最後まで読み終わるとともに再生終了することになるが、このgateに0をセットするステップSを省いて、繰返して波形再生音が出力されるようにしてもよい。
【0172】
一方、ステップS1330において、再生時間カウンタpcが波形データの最終アドレスであるエンド・アドレスend_addrに到達したと判断されなかった場合には、ステップS1340へ進み、再生時間カウンタpcが次アドレスnext_addr(詳細は後述する。)に到達したか否かを判断する。
【0173】
ここで、ステップS1340において、再生時間カウンタpcが次アドレスnext_addrに到達したと判断された場合には、ステップS1342〜ステップS1346において次のイベントに再生処理を移す処理が実行される。
【0174】
即ち、event#を1歩進させ(ステップS1342)、実アドレス・カウンタacにイベント・アドレスEVENT_ADDR[bank#,event#]をセットして次のイベント・アドレスから波形データを読み出すようにし(ステップS1344)、メイン・ルーチンのサブ・ルーチンとしてのイベント処理を実行し(ステップS1346)、このメイン・ルーチンを終了する。
【0175】
一方、ステップS1340において、再生時間カウンタpcが次アドレスnext_addrに到達したと判断されなかった場合には、ステップS1348へ進み、再生時間カウンタpcが急速減衰開始アドレスdump_addrへ到達したか否かを判断する。
【0176】
そして、ステップS1348において、再生時間カウンタpcが急速減衰開始アドレスdump_addrに到達したと判断された場合には、ステップS1350へ進み、gainに急速減衰率kを乗じる。再生時間カウンタpcが急速減衰開始アドレスdump_addrに到達したら以降は、再生時間カウンタpcがnext_addrに到遠するまでサンプリング周期毎に急速減衰率kを乗じ続けることになる。図16には、この処理によるgainの変化の一例が示されている。
【0177】
なお、この処理は、再生時間カウンタpcが次アドレスnext_addrに到達したときに実アドレス・カウンタacをジャンプさせることにより生ずるノイズを軽減させるための処理である。ここで、dump_addrは、next_addrの少し手前に設定されることになる(なお、dump_addrの設定については、後述するイベント処理ルーチンを参照する。)。
【0178】
そして、ステップS1350の処理を終了すると、ステップS1352へ進む。また、ステップS1348において、再生時間カウンタpcが急速減衰開始アドレスdump_addrに到達したと判断されなかった場合には、ジャンプしてステップS1352へ進む。
【0179】
ステップS1352においては、実アドレス・カウンタacがループ・エンド・アドレスlp_endに到達したか否かを判断する。
【0180】
ステップS1352において、実アドレス・カウンタacがループ・エンド・アドレスlp_endに到達したと判断された場合には、実アドレス・カウンタacをループ・スタート・アドレスlp_startに戻してループ再生を行なうようにし(ステップS1354)、また、ループの区間を再生するごとに減衰率d_rateをgainに乗じ(ステップS1356)、このメイン・ルーチンの処理を終了する。
【0181】
なお、図17には、ステップS1356の処理による減衰率の作用が示されている。即ち、図17(a)はループ・スタートとループ・エンドとのアドレスが設定された波形データを示し、図17(b)は単にループ・スタートとループ・エンドとの間を繰り返して読み出した再生波形を示している。図17(a)に示すような、例えば、ドラム音などのな減衰音を単にループの区間を繰返して読み出すだけでは、図17(b)に示すように振幅の減衰と振幅の急激な増大とを繰返すことになり不自然な波形再生となる。そこで、ステップS1356に示すように、ループの区間を読み出し終える毎に減衰率を乗じていくものである。このようにすれば、図17(c)に示すように滑らかに減衰をする再生波形が得られることになる。
【0182】
ここで、減衰率は、例えば、lp_startにおける振幅とlp_endにおける振幅との比とすればよい。
【0183】
一方、ステップS1352において、実アドレス・カウンタacがループ・エンド・アドレスlp_endに到達したと判断されなかった場合には、そのままメイル・ルーチンを終了する。
【0184】
次に、図15を参照しながら、メイン・ルーチンのサブ・ルーチンとしてのイベント処理ルーチンを説明する。
【0185】
このイベント処理ルーチンにおいては、まず、ステップS1502において、gainに初期値1.0をセットする。
【0186】
ステップS1502の処理を終了すると、ステップS1504へ進み、pitchにパラメータ情報のピッチ・シフト量PITCH_SHIFT[bank#,event#]をセットする。
【0187】
ステップS1504の処理を終了すると、ステップS1506へ進み、ループ・スタート・アドレス、ループ・エンド・アドレス、減衰率をそれぞれ以下のようにレジスタにセットする。
【0188】
・lp_startにLOOP_START[bank#,event#]をセットする。
【0189】
・lp_endにLOOP_END[bank#,event#]をセットする。
【0190】
・d_rateにDECAY_RATE[bank#,event#]をセットする。
【0191】
ステップS1506の処理を終了すると、ステップS1508へ進み、event#で示されるイベントに続くイベントがあるか否か、即ち、最後のイベントであるか否かを判断する。
【0192】
ステップS1508において、event#で示されるイベントに続くイベントがある、即ち、最後のイベントでないと判断された場合には、ステップS1510へ進み、次アドレスnext_addrに、イベント・アドレスEVENT_ADDR[bank#,(event#+1)]にタイミング・シフト量TIME_SHIFT[bank#,(event#+1)]を加算したアドレスを設定する。
【0193】
一方、ステップS1508において、event#で示されるイベントに続くイベントがない、即ち、最後のイベントであると判断された場合には、ステップS1512へ進み、次アドレスnext_addrに、エンド・アドレスend_addrを設定する。
【0194】
なお、次アドレスnext_addrは、再生時間カウンタpcが歩進して到違する目標のアドレスであり、到達するとそのタイくングで次のイベントの波形再生に移行する。
【0195】
また、タイミング・シフト量は、イベント・アドレスに対して次アドレスnext_addrを前あるいは後ろに変位させる量を示し、値が0のときは変位なし、値が正のときは次アドレスが後ろに変位してpcの到達が遅れるので次のイベントの波形再生に移行するタイミングが遅れ、値が負のときは次アドレスが前に変位してpcの到達が早まるので次のイベントの波形再生に移行するタイミングが早まるものである。
【0196】
また、次のイベントがない、即ち、最後のイベントである場合とは、例えば、総イベント数が3(events=3)であるときに、0番目のイベントの波形、1番目のイベントの波形と順次再生してきて、今度2番目のイベント(event#=2)の波形を再生する場合を意味する。この場合を判別するための演算式が、ステップS1508の「event#+1=events ?」である。そして、ステップS1510あるいはステップS1512の処理を終了すると、ステップS1514へ進み、次アドレスnext_addrから「tcomp×n」を減算したアドレスを、急速減衰開始アドレスdump_addrにセットする。
【0197】
ここで、nは、次アドレスnext_addrにpcが到達するまで急速減衰させるときに、どのくらい手前のアドレスからその急速減衰を開始するかを決定するための定数である。ノイズが生じない程度に早く、かつ十分な減衰ができるように、この定数nと急速減衰率kとが定められるものである。
【0198】
ステップS1514の処理を終了すると、ステップS1516へ進み、パラメータ情報に含まれるエンベロープ情報(エンベロープSW、エンベローブ・タイムなど)をTVA22にバス12経由で送出し、このイベント処理ルーチンを終了してメイン・ルーチンへリターンする。
【0199】
ここで、TVA22はDSP20と同期して動作し、DSP20より送られてきたエンベローブ情報に基づき、以下のようにしてDSP20からの波形信号の振幅を制御する。
【0200】
即ち、エンベローブSWがOFFの場合には、それ以降、振幅の制御は行なわず、DSP20からの波形信号をそのままD/A28に送出する。
【0201】
一方、エンベローブSWがONの場合には、それ以降、エンベロープ・タイム、エンベローブ・ゲイン、エンベローブ・カーブに基づいて、DSP20からの波形信号の振幅を時間経過に応じて変化させながらD/A28に出力する。詳細には、DSP20よりエンベローブ情報が送られてきた時点からエンベロープ・タイムで指定される時間は、エンベロープ・ゲインで指定されるゲインを保って振幅制御し、それ以降はエンベロープ・カーブで指定される減衰カーブに従って振幅の減衰制御を行なう(図7(b)参照)。なお、ゲインは1より大きい場合は波形信号の振幅を増大させ、1より小さい場合は振幅を減少させるように作用する。
【0202】
なお、上記した実施の形態においては、同時に1つの波形データのみを読み出す構成となっているが、これに限られることなしに、同時に複数の波形データを読み出して波形信号を出力するようにしてもよいことは勿論である。つまり、実施の形態における複数のパッド40をオン操作して、それぞれ波形再生できるように構成してもよい。この場合であっても、再生速度の指定は1つのダイアルで行ない、指定された再生速度を再生中のすべての波形データの読み出しに反映させると操作しやすい。なお、同時に複数の波形再生を行なうと音楽的な速度が合わないことが考えられるが、その場合には波形データを加工して波形データが示す波形のテンポを揃えておくか、波形データにオリジナルのテンポの情報を付随させておき、オリジナルのテンポの情報をも加味して各々の波形の再生速度を決定すりょうにしてもよい。
【0203】
また、上記した実施の形態においては、DSP20から出力される波形信号をTVA22でエンベロープ制御(振幅制御)して、波形の再生においてイベント毎に変化を付与したが、これに限られることなしに、TVA22に代えてリバーブ、コーラスなどのエフェクタを配して、イベント毎に異なる効果を付与するようにしでもよいことは勿論である。このとき、DSP20はエンベロープの情報を送る代わりにエフェクタのパラメータ(リバーブ・タイム、コーラス深さなど)をイベント毎にエフェクタに送出すればよい。
【0205】
【発明の効果】
本発明は、以上説明したように構成されているので、タイム・ストレッチの処理を行いつつ楽音の発生態様を変化させることができるので、同じ波形データからバリエーションに冨む波形を再生することができるようになるとともに、制御情報は波形の位置を示すマーク情報に対応しているので、タイム・ストレッチの処理により圧縮または伸張を行なっても、波形データが表わす波形とその発生態様との関係を常に一定に保持することができるようになるという優れた効果を奏する。
【0206】
また、本発明は、以上説明したように構成されているので、音高情報により音高を制御することができるので、一連の波形データの部分部分で異なる音高に制御することが可能となり、音高の変化によるアクセントを付与することができるようになるという優れた効果を奏する。
【0207】
また、本発明は、以上説明したように構成されているので、エンベロープ情報により音量を制御することができるので、一連の波形データの部分部分で異なる音量に制御することが可能となり、例えば、波形データが複数のドラム音などの場合には、所定の拍のドラム音についてのみ減衰を短くしたり、所定の拍のドラム音についてのみ音量を絞ることができるようになって、音量の変化によるアクセントを付与することができるようになるという優れた効果を奏する。
【0208】
また、本発明は、以上説明したように構成されているので、タイミング修正情報によりタイミングをずらすことができるので、シャッフル感を表現したりすることができ、リズムの変化を生むことができるようになるという優れた効果を奏する。
【図面の簡単な説明】
【図1】波形データ、イベント、イベント・アドレス、ループ・アドレスを説明するための波形説明図である。
【図2】ループ、減衰率を説明するとともに、波形データの再生時間を伸張する場合を示す波形説明図である。
【図3】波形データの再生時間を圧縮する場合を示す波形説明図である。
【図4】波形データの頭(アドレス0)で最初のイベントがあり、アドレスaで次のイベントが発生し、アドレスbで波形データが終了している場合を示す波形説明図である。
【図5】波形データの頭(アドレス0)で最初のイベントがあり、アドレスaで次のイベントが発生し、アドレスbで波形データが終了しているとともに、アドレスc、アドレスd、アドレスeおよびアドレスfをループ・アドレスとして設定している場合を示す波形説明図である。
【図6】(a)は再生時間を圧縮する場合に波形が不連続となってノイズが発生する状態を示す波形説明図であり、(b)はTVA(時変振幅制御器)などで出力を徐々に絞ることによって波形の不連続によるノイズの発生を抑制するようにした場合を示す波形説明図である。
【図7】(a)はタイム・ストレッチした波形(原音)を示す波形説明図であり、(b)はTVA波形を示す波形説明図であり、(c)は(a)に示すタイム・ストレッチした波形(原音)に対して(b)に示すTVA波形により効果を付与した場合の波形を示す波形説明図である。
【図8】波形データの頭で最初のイベントがあり、アドレスaで次のイベントが発生し、アドレスbで波形データが終了している場合に、アドレス値xだけ再生時間を圧縮する場合を示す波形説明図である。
【図9】本発明による波形再生装置の実施の形態の一例を表すブロック構成図である。
【図10】操作パネルの概略構成説明図である。
【図11】CPU処理ルーチンのフローチャートである。
【図12】(a)ならびに(b)は、表示器における指定したバンク、イベント、パラメータ種類、パラメータ値の表示状態を例を示す。
【図13】DSPのメイン・ルーチンのフローチャートである。
【図14】DSPのメイン・ルーチンのフローチャートである。
【図15】DSPのイベント処理ルーチンのフローチャートである。
【図16】gainの変化の一例を示す波形説明図である。
【図17】(a)はループ・スタートとループ・エンドとのアドレスが設定された波形を示し、(b)は単にループ・スタートとループ・エンドとの間を繰り返して読み出した再生波形を示し、(c)ループの区間を読み出し終える毎に減衰率を乗じた滑らかに減衰する再生波形を示す波形説明図である。
【符号の説明】
10 中央処理装置(CPU)
12 バス(BUS)
14 リード・オンリ・メモリ(ROM)
16 ランダム・アクセス・メモリ(RAM)
18 ハード・ディスク(HDD)
20 デジタル・シグナル・プロセッサ(DSP)
22 時変振幅制御器(TVA)
24 操作子群
26 表示器
28 デジタル/アナログ変換器(D/A)
30 アンプ(増幅器)
32 スピーカー
Claims (4)
- 波形データと、該波形データの波形の時間軸上の位置を示す複数のマーク情報と、該マーク情報に対応し波形の発音態様を制御するための制御情報とを記憶する記憶手段と、
前記波形データの再生速度を表す再生速度情報を入力する速度情報入力手段と、
前記速度情報入力手段により入力された再生速度情報に応じた変化速度で変化する時間情報を発生する時間情報発生手段と、
前記時間情報発生手段が発生する時間情報が、前記記憶手段に記憶されたマーク情報の位置に到達したことに基づいてタイミングを指示する指示手段と、
前記波形データを読み出して波形信号を形成する波形形成手段であって、前記指示手段によりタイミングが指示された場合に、該タイミングに対応するマーク情報が示す波形を、該マーク情報に対応する前記記憶手段に記憶された制御情報に応じた発音態様で発音するように波形信号を形成する波形形成手段と
を有する波形再生装置。 - 請求項1に記載の波形再生装置において、
前記制御情報は、発音音高を制御する音高情報であり、
前記波形形成手段は、前記音高情報に応じた音高で波形信号を形成する
ものである波形再生装置。 - 請求項1に記載の波形再生装置において、
前記制御情報は、音量変化を制御するエンベローブ情報であり、
前記波形形成手段は、前記エンベロープ情報に応じて音量変化する波形信号を形成する
ものである波形再生装置。 - 請求項1に記載の波形再生装置において、
前記制御情報は、前記指示手段が指示するタイミングを修正するタイミング修正情報であり、
前記指示手段は、前記タイミング修正情報に基づいて、タイミングを修正して指示する
ものである波形再生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16612598A JP4097785B2 (ja) | 1998-05-29 | 1998-05-29 | 波形再生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16612598A JP4097785B2 (ja) | 1998-05-29 | 1998-05-29 | 波形再生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11344982A JPH11344982A (ja) | 1999-12-14 |
JP4097785B2 true JP4097785B2 (ja) | 2008-06-11 |
Family
ID=15825505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16612598A Expired - Fee Related JP4097785B2 (ja) | 1998-05-29 | 1998-05-29 | 波形再生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4097785B2 (ja) |
-
1998
- 1998-05-29 JP JP16612598A patent/JP4097785B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11344982A (ja) | 1999-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6255576B1 (en) | Device and method for forming waveform based on a combination of unit waveforms including loop waveform segments | |
EP2680255B1 (en) | Automatic performance technique using audio waveform data | |
JP4274152B2 (ja) | 楽音合成装置 | |
JPH1063265A (ja) | 自動演奏装置 | |
JP3654117B2 (ja) | 時間軸方向における楽音波形信号の伸縮方法 | |
JP4201679B2 (ja) | 波形発生装置 | |
JP3747758B2 (ja) | 自動演奏装置 | |
JP4097785B2 (ja) | 波形再生装置 | |
JPH10260685A (ja) | 波形発生装置 | |
JP2001022350A (ja) | 波形再生装置 | |
JP4170525B2 (ja) | 波形読出装置 | |
JP4070315B2 (ja) | 波形再生装置 | |
JP4552769B2 (ja) | 楽音波形合成装置 | |
JP3635361B2 (ja) | 電子楽器の音素材処理装置 | |
JP4236570B2 (ja) | 波形再生装置および波形再生プログラム | |
JP2002175080A (ja) | 波形データ生成方法、波形データ生成装置および記録媒体 | |
JP3656906B2 (ja) | 時間軸可変の波形データ再生装置 | |
JP5359203B2 (ja) | 楽曲処理装置およびプログラム | |
JP4835434B2 (ja) | 演奏パターン再生装置及びそのコンピュータプログラム | |
JP5316091B2 (ja) | 波形メモリ音源 | |
JP4132268B2 (ja) | 波形再生装置 | |
JP2004219495A (ja) | 電子楽器 | |
JP2770767B2 (ja) | 自動演奏装置 | |
JPH11184471A (ja) | 波形発生装置 | |
JP4213835B2 (ja) | 波形再生装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050524 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070322 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070403 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070530 |
|
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: 20080311 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080312 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110321 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120321 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130321 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140321 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |