(57)【特許請求の範囲】
【請求項１】
複数の区間からなる波形データを記憶する波形データ記憶手段と、
前記波形データの全体に対する時間軸圧縮伸張率を入力する入力手段と、
前記区間ごとの前記時間軸圧縮伸張率の修正度合である柔軟度を表す柔軟度情報を時間軸圧縮伸張の前に設定する柔軟度情報設定手段と、
前記柔軟度情報によって、前記区間ごとに前記時間軸圧縮伸張率を修正する修正手段と、
前記修正された時間軸圧縮伸張率に基づいて前記波形データに時間軸圧縮伸張処理を施す波形処理手段とを、
具備し、前記柔軟度情報は、前記各区間の長さと、その区間における前記柔軟度との積の総和が前記複数の区間の全長になるように設定されている
波形処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶手段から波形データを読み出すときに、時間軸の圧縮伸長処理を行う波形処理装置に関する。
【０００２】
【従来の技術】
一般に、図１０（ａ）に示すような楽音波形のサンプルを考えた場合、このサンプルには概略的に示すように、アタック部２ａ、定常音部４ａ、減衰部６ａ及び無音部８ａからなるものがある。従来、この波形の時間軸を伸長する場合、同図（ｂ）に示すようにアタック部２ｂ、定常音部４ｂ、減衰部６ｂ及び無音部８ｂそれぞれを同じ量だけ伸長していた。なお、同図（ｂ）は、同図（ａ）の波形を２倍に伸長した場合である。同様に、例えば１／２に時間軸を圧縮する場合、同図（ｄ）に示すように、アタック部２ｄ、定常音部４ｄ、減衰部６ｄ及び無音部８ｄがそれぞれ同じ量だけ圧縮されていた。
【０００３】
【発明が解決しようとする課題】
しかし、音楽的に考えた場合、このようにサンプルの各部を均等に伸長または圧縮することは好ましくない。例えば、アタック部は、時間軸の伸長または圧縮が行われたとしても、元サンプルのアタック部と同じ時間であることが、音楽的には望ましい。
【０００４】
本発明は、波形の時間軸の圧縮または伸長を行うとき、圧縮または伸長の度合を個別に変更することができる波形処理装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記の課題を解決するために、本発明の波形処理装置は、複数の区間からなる波形データを記憶する波形データ記憶手段と、前記波形データの全体に対する時間軸圧縮伸張率を入力する入力手段と、前記区間ごとの前記時間軸圧縮伸張率の修正度合である柔軟度を表わす柔軟度情報を時間軸圧縮処理の前に設定する柔軟度情報設定手段と、前記柔軟度情報によって、前記区間ごとに前記時間軸圧縮伸張率を修正する修正手段と、前記修正された時間軸圧縮伸張率に基づいて前記波形データに時間軸圧縮伸張処理を施す波形処理手段とを、具備している。前記柔軟度情報は、前記各区間の長さと、その区間における前記柔軟度との積の総和が前記複数の区間の全長になるように設定されている。
【００１０】
【発明の実施の形態】
本発明の一実施の形態の波形処理装置は、図１０（ａ）に示すような楽音波形、例えばフレーズを伸長する場合、同図（ｃ）に示すように、例えば２倍に伸長する場合、その全長は元の波形の２倍でありながら、各区間、例えばアタック部２ｃは、圧縮伸長を行っていない元の波形のままであり、定常音部４ｃ、減衰部６ｃ、無音部８ｃが伸長されたものとすることが可能なものである。また、この波形処理装置は、圧縮する場合、例えば１／２に圧縮する場合、同図（ｅ）に示すように、全長は１／２に圧縮されているが、アタック部２ｅは元波形と同じ長さであり、定常音部４ｅ、減衰部６ｅ、無音部８ｅが圧縮されたものとすることが可能なものである。
【００１１】
このような圧縮伸長を行うために、後述するように圧縮伸長率と柔軟度とを使用している。圧縮伸長率は、波形全体に対する圧縮伸長量を圧縮伸長前後の時間長の比率で表わし、柔軟度は、波形の各部分において圧縮伸長率をどのように修正するかの修正度合を表わしたものである。各区間の長さとその区間における柔軟度との積の総和が、全区間の長さとなるように、各柔軟度が設定されている。数式で表わすと、数１で表わされる。但し、Ｌ（ｉ）は各区間の長さを表わし、Ｅ（ｉ）は各区間における柔軟度を表わし、ｍは総区間数を表わす。従って、柔軟度によって圧縮伸長率が修正されても、波形データの全体の圧縮または伸長された時間は、圧縮伸長率に元の波形データの時間を乗算した値、即ち波形データ全体を単に圧縮伸長率に基づいて圧縮伸長したときの時間となる。なお、この場合、各Ｅ（ｉ）の値のうち少なくとも１つは、他のＥ（ｉ）の値と異なった値である。
【００１２】
【数１】
0004267114.tif 000002
【００１３】
この波形処理装置は、上記の柔軟度と伸長圧縮率を使用して、時間軸の圧縮、伸長を行うものであるが、圧縮、伸長には、波形再生部、例えば位相ボコーダ１０を使用している。位相ボコーダ１０は、図１に示すように、波形メモリ１２を有し、この波形メモリ１２には、波形データが記憶されている。
【００１４】
この波形データは、可聴周波数信号の各サンプリング値を、可聴周波数信号の概略基本周期を帯域幅に持つ複数の周波数帯域、例えば周波数帯域（バンド）０乃至９９に分割し、各帯域の成分をそれぞれの帯域の中心の複素周波数で乗算して、振幅値と瞬間周波数に分析展開したものを、図２に示すように記憶したものである。図２において、アドレスａｄｄｒは、各サンプリング点に対応するアドレスであり、各アドレスごとにバンド０から９９のそれぞれ振幅値と瞬間周波数データとが記憶されている。波形データとしては、例えば１フレーズ分の楽音を使用することができる。
【００１５】
同一アドレスに記憶されているバンド０から９９までの振幅値と瞬間周波数データとは、それぞれ対応する時間周波数変換処理部１４−０乃至１４−９９に供給される。単に、波形を復元する場合には、時間周波数変換処理部１４−０乃至１４−９９は、波形メモリ１２からアドレスａｄｄｒに従って順に読み出された瞬間周波数と、その瞬間周波数が属するバンドの中心周波数との和の周波数で、対応する余弦発振器１６−０乃至１６−９９を発振させ、これら発振出力を、対応する乗算器１８−０乃至１８−９９において、波形メモリ１２から対応する振幅値で振幅変調する。これら変調出力を合成することによって、元の波形を合成することができる。これらが、波形処理手段に相当する。
【００１６】
時間軸の伸長を行う場合には、時間周波数変換処理部１４−０乃至１４−９９において、各サンプル点での振幅値を補間して、振幅値のエンベロープを伸長率に基づいて伸長し、瞬間周波数もサンプル点間の補間値を求める。時間軸の圧縮を行う場合には、時間周波数変換処理部１４−０乃至１４−９９において、振幅値と瞬間周波数とを補間によって間引くことによってエンベロープを縮める。
【００１７】
このような時間周波数変換処理部１４−０乃至１４−９９での処理を行うために、バス２０を介して波形データの時間位置情報としてａｄｄｒが、ＣＰＵ２２から各時間周波数変換処理部１４−０乃至１４−９９に供給される。このとき、時間軸の圧縮伸長の結果、波形メモリ１２に実在しないアドレスａｄｄｒが供給されたとき、上述した補間を行う。同時に、再生される波形のピッチを後述する鍵盤３２の操作に従って変更するために、ピッチ情報が各時間周波数変換処理部１４−０乃至１４−９９に供給される。このピッチ情報が、波形メモリ１２から読み出された瞬間周波数に乗算されて修正され、この修正された瞬間周波数が、各余弦発振器１６−０乃至１６−９９に供給される。時間位置情報とピッチ情報の供給については、後述する。
【００１８】
位相ボコーダ１０は、各乗算器１８−０乃至１８−９９の合成出力を出力したり、消去するためのゲート２４も有し、このゲート２４を開閉するためのゲート情報もバス２０を介してＣＰＵ２２からゲート２４に供給される。
【００１９】
ＣＰＵ２２は、ＲＯＭ２６に記憶されているプログラムに従って動作する。また、波形メモリ１２に記憶される波形データは、ＲＡＭ２８に多数記憶されている波形データのうち操作子３０によって選択されたものである。
【００２０】
この波形処理装置は、鍵盤３２を備え、この鍵盤３２が演奏操作されることによって、演奏情報がＣＰＵ２２に供給される。この演奏情報として、鍵盤３２は、鍵が押鍵されたとき、押鍵された鍵を表わすノートナンバー情報を含むノートオン情報を、離鍵時には離鍵された鍵を表わすノートナンバー情報を含むノートオフ情報をＣＰＵ２２に送出する。また、鍵盤３２には、演奏操作子、例えばレバー３４が設けられており、これを操作することによって再生される波形の再生速度が設定される。このレバー３４は、ばねにより中点に自動的に復帰するものが望ましい。なお、上記の再生速度は、圧縮伸長率とは逆数の関係にある。例えば、或る波形を２倍の再生速度で再生すると、再生にかかる時間は１／２倍となるが、これは、即ち圧縮伸長率が１／２であることに他ならない。また、この波形を１／２倍の再生速度で再生すると、再生にかかる時間は２倍となるが、同様に、これは圧縮伸長率が２であることを示している。
【００２１】
図示していないが、波形メモリ１２に記憶されている波形データのサンプリング周波数に等しい周波数のクロック信号を発生するクロック発生器も設けられている。このクロック信号は、ＣＰＵ２２及び位相ボコーダ１０に供給され、互いの処理が同期して行われるようにしている。例えば波形データのサンプリング周波数が４４．１ｋＨｚであると、クロック発生器のクロック周波数も４４．１ｋＨｚである。
【００２２】
なお、ＲＡＭ２８には、各波形データごとに、総区間数ｍ、区間開始アドレスＭ（ｉ）、柔軟度情報Ｅ（ｉ）、波形終端アドレスＷａｖｅＥｎｄ、基本ノートナンバーＮｏｔｅ＃の波形情報も、記憶されている。各波形データとこれらの波形情報は、後述する波形ナンバーによって関連付けられている。
【００２３】
総区間数ｍは、図３に示すように波形データを時間的に複数の区間に区切ったときの総区間数である。区間開始アドレスＭ（ｉ）は、図３に示すように、各区間の先頭の時間位置をアドレスａｄｄｒの値で示したものである。ｉは０からｍまでの値をとる。Ｍ（０）は、波形データの先頭を表わし、この実施の形態では、値をアドレス０とする。
【００２４】
更に、柔軟度情報Ｅ（ｉ）は、上述した柔軟度を図３に示すように、各区間毎に記憶したものである。波形終端ＷａｖｅＥｎｄは、波形データの終わりの位置を時間アドレスａｄｄｒの値で示したものであり、これはＭ（ｍ）に等しい。
【００２５】
基本ノートナンバーは、波形メモリ１２の波形データをピッチ変換して波形再生する際の基本となるノートナンバーである。鍵盤３２で指定されるノートナンバーの、この基本ノートナンバーからの変位に基づいてピッチ変換量が決定される。
【００２６】
以下、ＣＰＵ２２が行う処理について説明する。この処理において使用される変数ＧＡＴＥ、ａｄｄｒ、ｔｃｏｍｐ、ｔｃｏｍｐ’、ｉについて説明する。
【００２７】
ＧＡＴＥは、ノートンオン情報が鍵盤３２から入力されて発音を開始するときに、１に設定され、ノートオフ情報が鍵盤３２から入力されて発音を終了するときに０に設定されることによって、現在の発音状態を示す。
【００２８】
ａｄｄｒは、波形データのアドレス位置を表わし、波形再生の時間位置を表わしている。
【００２９】
ｔｃｏｍｐは、時間位置アドレスａｄｄｒを歩進させる量、即ち波形再生の速さ、言い換えれば時間伸長圧縮率の逆数を表わす。このｔｃｏｍｐは、レバー３４の操作によって決定される。
【００３０】
ｔｃｏｍｐ’は、上記ｔｃｏｍｐを対応する柔軟度情報に基づいて修正したものである。このｔｃｏｍｐ’が、１クロックごとにａｄｄｒに加算され、波形データの読み出し位置、即ち読み出し時間位置を表わす。
【００３１】
ｉは、０からｍまでの区間のうちどの区間が再生中であるかを表わす区間カウンタである。
【００３２】
図４に示すメインルーチンでは、まず初期設定が行われる（ステップＳ２）。この初期設定では、ＧＡＴＥを０に設定し、ＲＡＭ２８に記憶されている各波形データを指定するための波形ナンバーＮを初期値に設定し、かつｔｃｏｍｐを１に設定する。
【００３３】
次に、操作子３０中の波形選択ボタンが押されたか判断し（ステップＳ４）、波形選択ボタンが押されていると、押された波形選択ボタンに対応する波形データに波形ナンバーＮを変更する（ステップＳ６）。波形ナンバーＮが表わす波形情報の波形データをＲＡＭ２８から波形メモリ１２に転送する（ステップＳ８）。
【００３４】
さらに、波形ナンバーＮが表わす波形情報に基づいて再生するため、各種パラメータを設定する（ステップＳ１０）。即ち、総区間数ｍ、各区間開始アドレスＭ（０）、Ｍ（１）・・・・Ｍ（ｍ）、柔軟度Ｅ（０）、Ｅ（１）・・・・Ｅ（ｍ−１）を設定し、さらに波形終端ＷａｖｅＥｎｄにＭ（ｍ）を設定し、基本ノートナンバーＮｏｔｅ＃を設定する。
【００３５】
そして、波形再生処理を行い（ステップＳ１２）、ステップＳ４に戻る。なお、ステップＳ４において、選択ボタンが押されていないと判断された場合には、直ちにステップＳ１２の波形再生処理が実行される。
【００３６】
波形再生処理は、図５に示すように、まず鍵盤３２から演奏情報が入力されているか判断する（ステップＳ１４）。演奏情報の入力があると、演奏情報がノートオン情報であるか判断する（ステップＳ１６）。ノートオン情報の場合、ノートオン処理が実行される（ステップＳ１８）。
【００３７】
ノートオン処理が終了した後、またはステップＳ１６において演奏情報がノートオン情報でないと判断されると、演奏情報がノートオフ情報であるか判断される（ステップＳ２０）。ノートオフ情報の場合、ノートオフ処理が実行される（ステップＳ２２）。
【００３８】
ノートオフ処理が実行された後、或いはステップＳ２０においてノートオフ情報でないと判断されると、演奏情報はレバー３４からのレバー操作情報であるか判断される（ステップＳ２４）。レバー操作情報である場合、再生速度設定処理が行われる（ステップＳ２６）。
【００３９】
再生速度設定処理が実行された後、或いはステップＳ２４において演奏情報がレバー操作情報でないと判断された場合、或いはステップＳ１４において演奏情報が入力されていないと判断された場合、ノートオン処理またはノートオフ処理で１または０とされているＧＡＴＥが１であるか否かの判断がなされる（ステップＳ２８）。ＧＡＴＥが１の場合には、まだ再生が継続されるので、ステップＳ１４に戻り、ＧＡＴＥが１でない場合には再生が中止されているので、この波形再生処理を終了する。
【００４０】
ノートオン処理では、図６に示すように、まずノートオン情報のノートナンバー（Ｎ＃）と、予め記憶されている基本ノートナンバーＮｏｔｅ＃とに基づいてピッチ情報を生成する（ステップＳ３０）。即ちピッチ情報Ｐは、数２によって計算される。そして、この生成されたピッチ情報は、図１に示すように波形再生部（位相ボコーダ１０）の各時間周波数変換処理部１４−０乃至１４−９９に供給される（ステップＳ３２）。
【００４１】
【数２】
0004267114.tif 000003
【００４２】
次に、ノートナンバーＮｏｔｅ＃は、オンナンバーＯＮ＃に保存される（ステップＳ３４）。これは、後述するが、ノートオフ処理において使用するために、保存されている。
【００４３】
そして、ＧＡＴＥが１であるか否かを判断する（ステップＳ３６）。ＧＡＴＥが１であると既に再生が行われているので、ノートオン処理をする必要が無い。よって、リターンする。ＧＡＴＥが１でないと、再生を開始させるために、以下の処理を実行する。
【００４４】
区間カウンタｉを０にし（ステップＳ３８）、区間カウンタｉが波形データの先頭の区間を指示するようにする。波形再生の時間位置ａｄｄｒを０に、即ち区間Ｍ（０）を先頭にして（ステップＳ４０）、波形データの先頭を指示するようにする。このａｄｄｒを時間位置情報として、図１に示すように、時間周波数変換処理部１４−０乃至１４−９９に送出する（ステップＳ４２）。波形の再生が開始されたことを表わすためにＧＡＴＥを１とする（ステップＳ４４）。これによって、１であるゲート情報をゲート２４に供給する。よって、各時間周波数変換部１４−０乃至１４−９９の出力の合成出力がゲート２４を介して出力される。なお、ステップＳ３６は、複数の鍵が押鍵された場合のためのもので、或る鍵が押鍵されている状態で、別の鍵が押鍵された場合、ピッチのみを別の鍵に対応したものとし、時間軸の圧縮伸長は、或る鍵が押されたときの状態のままとしている。
【００４５】
ノートオフ処理では、図７に示すように、まず、ノートオフ情報に含まれているノートナンバー情報が、オンナンバーＯＮ＃に等しいか判断する（ステップＳ４８）。即ち、現在再生されている音のノートナンバーに等しいか判断する。オンナンバーＯＮ＃は、ステップＳ３４において複数の鍵が押鍵された状態では、最後に押鍵された鍵のノートナンバーを表わしている。従って、ノートオフ情報が最後に押鍵されたものであるか、ステップＳ４８は判断している。最後に押鍵された鍵が離鍵されたのでなければ（ノートナンバーがオンナンバーＯＮ＃に等しくないと）、何も処理をせずに、ノートオフ処理を終了する。最後に押鍵された鍵が離鍵されたのであれば（ノートナンバーがオンナンバーＯＮ＃に等しければ）、ＧＡＴＥを０とし（ステップＳ５０）、ゲート情報０を波形再生部（位相ボコーダ）のゲート２４に供給し、発音を停止させる（ステップＳ５２）。
【００４６】
再生速度処理設定では、図８に示すように、レバー３４の操作量０乃至ｘに対応してｔｃｏｍｐの値を、例えば１／２乃至２の範囲内の値に設定する（ステップＳ５４）。このｔｃｏｍｐは、値が１のとき、波形データのオリジナルの再生速度を表わし、値が大きくなるに従って高い再生速度を表わし、即ち時間軸が圧縮される。ｔｃｏｍｐが小さくなるほど低い再生速度を表わし、即ち時間軸が伸長されることを表わす。これが時間軸圧縮伸長率に相当する。
【００４７】
なお、この実施の形態ではｔｃｏｍｐを１／２乃至２の範囲に限定したが、必ずしもこの範囲に限るものではない。また、レバー３４の操作量は、鍵盤３２の操作中に任意に変更されるので、ｔｃｏｍｐの値も鍵盤３２の操作中に任意に変更される。このｔｃｏｍｐの値が、柔軟度情報に基づいて割り込み処理において修正される。
【００４８】
割り込み処理は、クロック発生器がクロック信号を発生するごとに実行され、図９に示すように、まず現在のａｄｄｒを時間位置情報として波形再生部（位相ボコーダ１０）の時間周波数変換処理部１４−０乃至１４−９９に供給する（ステップＳ５６）。
【００４９】
次に、ｔｃｏｍｐを柔軟度係数を使用して、数３に基づいて修正し、ｔｃｏｍｐ’にセットする（ステップＳ５８）。但し、Ｅ（ｉ）は、現在再生中の区間Ｍ（ｉ）の柔軟度情報である。
【００５０】
【数３】
0004267114.tif 000004
【００５１】
ここでＥ（ｉ）を１とすると、ｔｃｏｍｐ’はｔｃｏｍｐとなり、レバー３４に設定された再生速度となる。またＥ（ｉ）を１よりも小さくすると、ｔｃｏｍｐ’の値はｔｃｏｍｐよりも小さくなり、レバー３４によって設定された再生速度よりも低くなる。またＥ（ｉ）を１よりも大きくすると、ｔｃｏｍｐ’の値はｔｃｏｍｐよりも大きくなり、レバー３４に設定された再生速度よりも高くなる。またＥ（ｉ）を０に設定すると、ｔｃｏｍｐ’は１となり、元波形の再生速度となる。従って、Ｅ（ｉ）を０に設定することによって圧縮伸長を行っているにも拘わらず、その区間Ｍ（ｉ）を元波形の再生速度で再生することができる。この場合、レバー３４によって設定されるｔｃｏｍｐの値が再生の途中で変更されても、ｔｃｏｍｐ’は１を維持する。このようにＣＰＵ２２がｔｃｏｍｐの修正を行っている。
【００５２】
次に、修正されたｔｃｏｍｐ’をアドレスａｄｒｒに加算する（ステップＳ６０）。これは、次回に割込み処理が行われたとき、このアドレスａｄｄｒから時間位置情報としてステップＳ５６において波形再生部に送出するためである。
【００５３】
次に、このａｄｄｒがＷａｖｅＥｎｄ以上であるか判断し（ステップＳ６２）、ＷａｖｅＥｎｄ以上であると、ａｄｄｒをＷａｖｅＥｎｄとし（ステップＳ６４）、これ以上波形データが進まないようにする。かつゲート情報０を波形発生部１０に送出して、発音を終了させ（ステップＳ６６）、この割り込み処理を終了する。
【００５４】
ステップＳ６２において、ａｄｄｒがＷａｖｅＥｎｄ以上でないと判断されると、ａｄｄｒがＭ（ｉ＋１）以上であるか、即ち、次の区間の開始アドレスに達しているか判断する（ステップＳ６８）。達していると、区間カウンタｉに１を加算して、次の区間を指示するようにして、この割り込み処理を終了する（ステップＳ７０）。
【００５５】
上記の波形再生処理処理装置では、柔軟度情報は、波形データの各区間に設定したが、少なくとも１つの区間にのみ設定することができる。また、波形処理手段として位相ボコーダ１０を使用したが、波形データを読み出して再生するものであれば、他の時間軸圧縮伸張装置も使用することができる。
【００５６】
【発明の効果】
以上のように、本発明によれば、波形データの各部分が、均等に圧縮伸張されず、少なくとも或る部分では、指定された圧縮伸張率よりも大きな、或いは、小さな圧縮伸張を行うことができる。また、波形データ全体では、予め定められた時間軸圧縮伸張率に従って時間軸の圧縮伸張が行われている。
【図面の簡単な説明】
【図１】本発明の一実施の形態の波形処理装置のブロックダイアグラムである。
【図２】図１の波形処理装置において使用する波形メモリのデータ構造を示す図である。
【図３】図１の波形処理装置における波形データの構成を示す図である。
【図４】図１の波形処理装置のメインルーチンを示すフローチャートである。
【図５】図４の波形再生処理の詳細なフローチャートである。
【図６】図５のノートオン処理の詳細なフローチャートである。
【図７】図５のノートオフ処理の詳細なフローチャートである。
【図８】図５の再生速度処理設定の詳細なフローチャートである。
【図９】図１の波形再生処理装置において実行される割り込み処理の詳細なフローチャートである。
【図１０】図１の波形再生処理装置及び従来の波形再生処理装置において時間軸圧縮伸長処理された波形の概略を示す図である。
【符号の説明】
１２  波形メモリ（波形データ記憶手段）
１４−０乃至１４−９９  時間周波数変換処理部（波形処理手段）
１６−０乃至１６−９９  余弦発振器（波形処理手段）
１８−０乃至１８−９９  乗算器（波形処理手段）
２２  ＣＰＵ（柔軟度情報発生手段、修正手段）
３４  レバー（指定手段）
【図１】
0004267114.tif 000005
【図２】
0004267114.tif 000006
【図３】
0004267114.tif 000007
【図４】
0004267114.tif 000008
【図５】
0004267114.tif 000009
【図６】
0004267114.tif 000010
【図７】
0004267114.tif 000011
【図８】
0004267114.tif 000012
【図９】
0004267114.tif 000013
【図１０】
0004267114.tif 000014