(57)【特許請求の範囲】
【請求項１】
複数の区間からなる元のオーディオ波形信号の前記区間の境界となる時間軸上の位置を示す１つ以上のマーク情報と、前記元のオーディオ波形信号を複数の周波数帯域に分割した分割帯域ごとの波形信号の位相情報及び振幅値情報とを、元のオーディオ波形信号の時間軸上の位置と対応して記憶し、前記分割帯域ごとの波形信号には、互いに異なるループ区間が設定されている波形データ記憶手段と、
前記元のオーディオ波形信号の時間軸上の位置を表わし、所望の速度で時間的に変化する第１の再生位置情報を発生する第１の再生位置情報発生手段と、
前記位相情報及び振幅値情報の時間軸上の位置を表わし、前記所望の速度と異なる速度で時間的に変化する第２の再生位置情報を、前記分割帯域の波形信号ごとに異ならせて発生する第２の再生位置情報発生手段と、
第２の再生位置情報に従って、前記波形データ記憶手段から前記位相情報及び振幅値情報を読み出し、その読み出された位相情報及び振幅値情報に従って再生オーディオ波形信号を合成する波形信号合成手段と、
前記第１の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達する前に、前記第２の再生位置情報が前記ループ区間の終端に達した分割帯域についてそのループ区間を繰り返し読み出すように前記第２の再生位置情報を制御し、前記第１の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達したとき、このマーク情報の表わす位置に対応する第２の再生位置情報に変更するように、前記第２の再生位置情報を制御する制御手段とを、
具備する波形再生装置。
【請求項２】
請求項１記載の波形発生装置において、前記波形信号合成手段は、
前記波形データ記憶手段から読み出された位相情報を周波数情報に変換する変換手段と、
該変換された周波数情報を入力して、該周波数情報に対応した周波数の周期信号を発生すると共に、前記読み出された位相情報に従って発生される周期信号の位相が、前記第２の再生位置情報の変更に対応して変更制御される周期信号発生手段と、
該周期信号発生手段から発生される周期信号の振幅を前記読み出された振幅情報に対応して制御する振幅制御手段とを、
具備する波形再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、いわゆる位相ボコーダを使用して時間軸の圧縮伸長を行う波形再生装置に関する。
【０００２】
【従来の技術】
一般に、位相ボコーダでは、オーディオ波形信号を、この信号の概略基本周期を帯域幅に持つ複数の周波数帯域に分割し、各帯域の信号をそれぞれの帯域の中心の複素周波数で乗算して、振幅値と瞬間周波数とに分析し、これをメモリに記憶させる。各帯域ごとに、分析された瞬間周波数と、対応する帯域の中心周波数との和の周波数で発振した正弦または余弦発振波を、分析された振幅値で振幅変調する。このようにして各帯域ごとに発生した信号を全部混合することによって元のオーディオ波形信号を再現する。
【０００３】
このような位相ボコーダを使用して、元のオーディオ波形信号の時間軸を圧縮及び伸長することが提案されている。例えば、上記振幅値情報と瞬間周波数情報を時間軸上で圧縮または伸長し、この圧縮または伸長された振幅値情報と瞬間周波数情報とを用いて、元のオーディオ波形信号を再合成することによって、元のオーディオ波形信号を時間軸上で圧縮または伸長することが提案されている。
【０００４】
図１５には、公知の位相ボコーダの一例のブロック図が示されている。また、図１６には、図１５の位相ボコーダにおけるバンドｋ（図１６の例では、ｋは０〜９９の整数である）に関する分析部（バンドｋ分析部）の詳細な構成が示されている。以下、図１５及び図１６を参照しながら、位相ボコーダについて詳細に説明する。
【０００５】
位相ボコーダは、音声信号、即ち、波形を当該音声信号の概略基本周波数帯を帯域幅に持つ複数の周波数帯域（Ｂａｎｄ；バンド）に分割する（図１５のボコーダでは、図１７に示すようにバンド０〜バンド９９の１００の周波数帯域に分割している）。分割された各周波数帯域の音声信号は、各周波数帯域の分析部に供給され、各分割周波数帯域の中心の複素周波数で乗算され、振幅値と瞬間周波数に分析展開される。
【０００６】
図１６に示す分析部においてｗ（ｎ）は、分析フィルタのインパルス応答である。各分析部の作用は、周知のｗ（ｎ）の窓で切り出す短区間フーリエ変換と同等のものである。
【０００７】
各分析部で得られた振幅値と瞬間周波数とはメモリに記憶される。
【０００８】
メモリに記憶された各周波数帯域の音声信号は、合成部（図１５に示す時間周波数変換処理部、加算器及び余弦発振器）において合成される。各合成部では、分析された振幅値と瞬間周波数とによって、当該分析された各周波数帯域の中心周波数の正弦波を変調し、当該各周波数帯域の音声信号を生成し、生成した各周波数帯域の音声信号を混合すると、元の音声信号を復元できる。
【０００９】
ここで、音声信号の再生時間を圧縮伸張する場合には、時間周波数変換処理部において、振幅値の補間値と、瞬間周波数の補間値とを求める時間周波数変換処理が行われる。
【００１０】
図１８（ａ）には、バンドｋに関する時間周波数変換処理を実行するためのバンドｋの時間周波数変換処理部の構成が示されている。この図１８（ａ）を参照しながら、音声信号の再生時間を圧縮伸張する場合について説明する。
【００１１】
先ず、音声信号の再生時間を伸張する場合には、時間周波数変換処理部において、各サンプル点での振幅値を補間して、振幅値のエンベロープを時間伸縮情報に基づいて引き延ばし、また、瞬間周波数も時間伸縮情報に基づいてサンプル点の補間値を求める（図１８（ｂ）参照）。このように補間によって得られた振幅値と瞬間周波数とから、上述したのと同様に、分割された各周波数帯域の音声信号を求め、混合する。
【００１２】
一方、音声信号の再生時間を圧縮する場合には、振幅値と瞬間周波数とを時間伸縮情報に基づく補間によって間引いて、エンベロープを縮める（図１８（ｃ）参照）。このように補間によって得られた振幅値と瞬間周波数とから、上述したのと同様に、分割された各周波数帯域の音声信号を求め、混合する。
【００１３】
なお、音声信号のピッチを変化させる場合には、分割された各周波数帯域の中心周波数と瞬間周波数との和を周波数変換情報（変化比率）で乗算し、上述した補間演算を実行すればよい。
【００１４】
上述した処理は、公知の手法により実行されるものであるので、フローチャート並びにその小差な説明は省略する。
【００１５】
このような圧縮及び伸長では、オーディオ波形信号全体を時間軸上で一様に圧縮または伸長している。従って、元のオーディオ波形信号が、例えば楽音信号であるとすると、それのアタック部も圧縮伸長されることになる。この場合、楽音としては非常に不自然なものとなることがあった。
【００１６】
これを防止するために、各帯域の振幅値情報と瞬間周波数情報自体の圧縮伸長は行わずに、通常通りに振幅値情報と瞬間周波数情報に基づいて波形再生をおこない、時間軸圧縮する場合には、オーディオ波形信号が音声の場合、或る音節に対して、設定された圧縮時間が経過した段階で、次の音節の波形再合成に移行し、伸長する場合には、各帯域ごとに振幅値情報と瞬間周波数情報との繰り返し期間を予め定めておき、振幅値情報と瞬間周波数情報との或る音節の繰り返し期間の読み出しが終了した後、その繰り返し期間の振幅値と瞬間周波数情報とを繰り返し使用して、波形再合成を行い、設定された伸長時間が経過するまで或る音節の波形再合成を行うことが考えられる。
【００１７】
【発明が解決しようとする課題】
しかし、このような繰り返し再生を行う場合、各帯域での繰り返し期間の周期や、繰り返し期間の位置が一致するとは限らず、次の音節に進むタイミングが各帯域において一致せず、再合成音が不自然になる。また、瞬間周波数情報を使用する位相ボコーダの構成上、圧縮も伸張も行わずに元のオーディオ波形信号を再合成しようとしても、位相情報を有していないので、元のオーディオ信号を再合成することができなかった。特に立ち上がりが急なオーディオ信号では、その違いが明確に現れることがあった。
【００１８】
本発明は、位相ボコーダを利用してオーディオ波形信号の時間軸圧縮伸長を行う場合で、かつ各帯域の波形データの再生位置に誤差が生じるような再生を行う場合に、波形データの所定位置での誤差を補正するようにしたことや、圧縮も伸張も行わない場合に、元のオーディオ波形信号を再合成できるようにしたことによって、合成波形の音質を改善する波形再生装置を提供することを目的とする。
【００１９】
【課題を解決するための手段】
本発明の波形再生装置は、複数の区間からなる元のオーディオ波形信号の前記区間の境界となる時間軸上の位置を示す１つ以上のマーク情報と、前記元のオーディオ波形信号を複数の周波数帯域に分割し、これら分割帯域ごとの波形信号の位相情報及び振幅値情報とを、記憶する波形データ記憶手段を有している。各帯域の位相情報及び振幅値情報は、元のオーディオ波形信号を適切なサンプリング周波数でサンプリングして得た各サンプリング値ごとに取得されている。即ち、元のオーディオ波形信号の時間軸上の位置に対応して取得されている。前記元のオーディオ波形信号の時間軸上の位置、例えば上記の各サンプリング値の位置を表わし、所望の速度で時間的に変化する第１の再生位置情報を発生する第１の再生位置情報発生手段が設けられている。この速度は、時間圧縮する場合には元のオーディオ波形信号を時間軸の圧縮伸長を行わない場合よりも速くなり、時間伸長する場合には遅くなる。前記各帯域の位相情報及び振幅値情報の時間軸上の位置を表わし、前記所望の速度と異なる速度で時間的に変化する第２の再生位置情報を発生する第２の再生位置情報発生手段も設けられている。第２の再生位置情報の速度は、一定の速度とすることができ、例えば、元のオーディオ波形信号の時間軸の圧縮伸長を行わない場合の速度とすることができる。第２の再生位置情報に従って、前記波形データ記憶手段から前記位相情報及び振幅値情報を読み出し、その読み出された位相情報及び振幅値情報に従って再生オーディオ波形信号を合成する波形信号合成手段が設けられている。第２の再生位置情報は、各帯域毎にそれぞれ独立して設けるようにしている。前記第１の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達する前に、前記第２の再生位置情報が前記ループ区間の終端に達した分割帯域についてそのループ区間を繰り返し読み出すように前記第２の再生位置情報を制御し、前記第１の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達したとき、このマーク情報の表わす位置に対応する第２の再生位置情報に変更するように前記第２の再生位置情報を制御する制御手段が、設けられている。
【００２０】
また、波形信号合成手段は、前記波形データ記憶手段から読み出された位相情報を周波数情報に変換する変換手段と、該変換された周波数情報を入力して、該周波数情報に対応した周波数の周期信号を発生すると共に、前記読み出された位相情報に従って発生される周期信号の位相が、前記第２の再生位置情報の変更に対応して変更制御される周期信号発生手段と、該周期信号発生手段から発生される周期信号の振幅を前記読み出された振幅情報に対応して制御する振幅制御手段とを、具備するものとできる。
【００２１】
本発明の波形再生装置では、第１の再生位置情報は、時間軸の圧縮を行う場合には、元の波形信号をそのまま再生する場合よりも速い速度で変化し、伸長を行う場合には、遅い速度で変化する。一方、第２の再生位置情報は、例えば第１の再生位置情報と異なる速度で各帯域の振幅値情報及び位相情報を読み出しているので、第１の再生位置情報が指定している時間軸上の位置と、第２の再生位置情報が指定している振幅値情報及び位相情報に対応する元のオーディオ波形信号の時間軸上の位置とには、ずれ（偏差）が生じる。そして、第１の再生位置情報がマーク情報が表わす位置に到達したとき、即ち、所定の時間軸圧縮または伸長が行われた時点で、第１の再生位置情報と第２の再生位置情報との偏差が零になるように、制御手段が第２の再生位置情報を制御しているので、第２の再生位置情報は、マーク情報に対応する各帯域の位相情報と振幅値情報とに対応する位置に修正され、以後の波形再生は、マーク情報に対応する位置以降の各帯域の位相情報と振幅値情報とに基づいて行われる。
【００２２】
なお、時間軸の伸長を行う場合、第１の再生位置情報が、まだマーク情報の位置に到達する前に、第２の位置情報によって、マーク情報の位置に対応する位相情報及び振幅値情報まで読み出してしまうことがある。そこで、マーク情報の位置に対応する位相情報及び振幅値情報の記憶されている位置よりも前に第２の再生位置情報に対して繰り返し期間を定めておき、第１の再生位置情報がマーク情報の位置に到達する前には、この繰り返し期間の位相情報と振幅値情報とを繰り返し読み出すことを行うことができる。この場合、第１の再生位置情報がマーク情報の位置に到達すると、即座に第２の再生位置情報がマーク情報に対応する位置に修正される。また、時間軸の圧縮を行う場合、第１の再生位置情報がマーク情報の位置に到達したとき、第２の再生位置情報がマーク情報の位置に対応する位相情報及び振幅値情報の記憶位置を指定していないことがある。この場合にも、直ちに第２の再生位置情報は、マーク情報の位置に対応する位相情報と振幅値情報の記憶位置に修正される。
【００２３】
【発明の実施の形態】
本発明の１実施の形態の波形再生装置は、図１に示すように、波形メモリ２、ＤＳＰ４とを有し、これらが位相ボコーダとして機能する。この位相ボコーダは、波形メモリ２に記憶されている波形データに基づいて再生オーディオ波形信号を合成して、Ｄ／Ａ変換器５に供給する。ＤＳＰ４は、ＲＯＭ８に記憶されたプログラムに従って動作する。このプログラムは、ＣＰＵ６を介してＤＳＰ４に転送される。
【００２４】
ＣＰＵ６は、ＲＯＭ８に記憶されているプログラムに従って、操作子１０の操作状態を検出し、検出結果に従ってＤＳＰ４を制御する。検出した操作子１０の操作状態や、操作子１０の操作状態に基づくＤＳＰ４の制御状態を、表示装置１２にＣＰＵ６は表示する。操作子１０には、再生モードを設定する再生モードスイッチ、圧縮または伸長とその程度を表すパラメータを設定する圧縮伸長操作子、複数の鍵を備えた鍵盤等が、設けられている。また、ＲＡＭ１４は、ＣＰＵ６のワーキングメモリとして使用され、後述する各種レジスタやフラグが設定される。
【００２５】
波形メモリ２には、前述の位相ボコーダとは異なり、振幅値情報と位相情報とが、記憶されている。これら情報は、図１１及び、図１１に示した各分析部の詳細を示した図１２から明らかなように、或る波形データ信号、例えば楽音の１フレーズを所定のサンプリング周波数でサンプリングした各サンプリング値ｘ（ｎ）を、この波形データ信号の概略基本周期を帯域幅に持つ複数、例えばｍ個の周波数帯域に分割し、各帯域の信号をそれぞれの帯域の中心の複素周波数で乗算して、振幅情報と位相情報に分析展開したものである。
【００２６】
ＤＳＰ４は、図２に示すように、各帯域ごとにそれぞれ設けられた変換手段、例えば時間周波数変換処理部４ａ−１乃至４ａ−ｍと、周期信号発生手段、例えば余弦発振器４ｂ−１乃至４ｂ−ｍと、振幅制御手段、例えば乗算器４ｃ−１乃至４ｃ−ｍを備える波形信号合成手段として機能する。さらに、ＤＳＰ４は、各乗算器４ｃ−１乃至４ｃ−ｍの各出力を加算する加算器４ｄと、この加算器４ｄの加算出力にゲート信号を乗算する乗算器４ｅとしても機能する。加算器４ｄが合成器として、乗算器４ｅがゲートとして機能する。
【００２７】
各時間周波数変換処理部４ａ−１乃至４ａ−ｍは、後述の制御手段、例えば制御部４ｆから供給される、各帯域の時間伸縮情報ａｄｄｒに従って振幅値情報と位相情報とを波形メモリ２から読み出し、位相情報は、微分手段によって瞬時周波数情報に変換して、それぞれ補間演算を施し、対応する帯域の中心周波数ωｋとの和の周波数で、対応する余弦発振器４ｂ−１乃至４ｂ−ｍを発振させる。なお、音高を変更する場合には、周波数変換情報である変換比率を乗算する。また、余弦発振器４ｂ−１乃至４ｂ−ｍの位相を設定するために、波形メモリ２から読み出した位相情報を対応する余弦発振器４ｂ−１乃至４ｂ−ｍに供給しており、その余弦発振器４ｂ−１乃至４ｂ−ｍは、供給された位相情報に位相が制御部４ｆからの位相リセット信号によりリセットされる。これらの処理を実施するには、時間周波数変換処理部４ａ−１乃至４ａ−ｍは、図１３のような構成で実現できる。
【００２８】
図１３において、１００は、波形メモリ２から振幅情報と位相情報とを時間伸縮情報ａｄｄｒに従って読み出すための読み出し手段、１０２は、読み出された位相情報を微分する微分手段、１０４は、微分手段から得られた瞬時周波数情報を後述する時間伸縮情報ａｄｄｒによって補間する補間手段、１０６は読み出された振幅値情報を時間伸縮情報ａｄｄｒによって補間する補間手段、１０８は補間された瞬時周波数情報と中心周波数ωｋとを加算するための加算手段、１１０は加算手段１０８からの出力に周波数変換情報を乗算する乗算手段である。
【００２９】
以上のようにして発振された余弦発振器４ｂ−１乃至４ｂ−ｍからの余弦発振波を、対応する乗算器４ｃ−１乃至４ｃ−ｍにおいて、対応する時間周波数変換処理部４ａ−１乃至４ａ−ｍからの振幅情報によって振幅変調する。このようにして各帯域ごとに発生した信号を加算器４ｄで合成することによって、元のオーディオ波形信号を再現できる。なお、ゲート４ｅの開閉状態を制御するゲート信号は、制御部４ｆに含まれているゲート信号発生部４ｇから供給される。ゲート信号は、例えば０から１の間の値をとり、立上のときには、０から直ちに１となるが、立ち下げのときには１から徐々に０に向かって減少する。
【００３０】
波形メモリ２には、上述した各振幅値情報及び位相情報を含めて、各種パラメータが記憶されている。即ち、図４（ａ）に示すように、波形メモリ２は、波形情報領域、バンド波形情報領域及びバンド波形データ領域を有している。
【００３１】
同図（ｂ）に示すように、波形情報領域には、ＷａｖｅＳｔａｒｔ、ＷａｖｅＥｎｄ、Ｍａｒｋ（１）、Ｍａｒｋ（２）、Ｍａｒｋ（３）、Ｍａｒｋ（４）が記憶されている。Ｗａｖｅｓｔａｒｔは、図３の上部に示す原オーディオ波形信号を所定の周波数でサンプリングして、波形メモリ２に記憶させたとしたなら（実際には波形メモリ２には記憶させていない）、そのスタートアドレスとなるアドレスであり、ＷａｖｅＥｎｄは、同じくエンドアドレスとなるアドレスである。
【００３２】
Ｍａｒｋ（１）乃至Ｍａｒｋ（４）は、同じく原オーディオ波形信号の各サンプリング値を記憶させたとしたなら、例えば楽音の場合、アタック部、定常部、減衰部、無音部のような各区間の境界、音声信号の場合、各音節のような各区間の境界となる部分のアドレスである。これらＭａｒｋ（１）乃至Ｍａｒｋ（４）がマーク情報に相当する。なお、この実施の形態では、原オーディオ波形信号が３つの区間からなる例を示したので、マーク情報は４つであるが、実際には原オーディオ波形信号の区間数に応じてマーク情報の数は増減する。
【００３３】
図４（ｃ）に示すように、バンド波形データ領域は、原オーディオ波形信号の概略基本周期を帯域幅に持つｍ個の周波数帯域ごとに設けられており、同図（ｄ）に示すように、各帯域ごとに、上述した振幅値情報と位相情報とが記憶されている。これら振幅値情報と位相情報とは、同図（ｅ）に示すように、原オーディオ波形信号の各サンプリング値ごとに記憶されている。
【００３４】
バンド波形情報領域も、同図（ｆ）に示すようにｍ個の帯域に対応して設けられており、各帯域ごとに同図（ｇ）に示すようにｗａｖｅ＿ｓｔａｒｔ、ｗａｖｅ＿ｅｎｄ、ｍａｒｋ（１）、ａｌｔＳ（１）、ａｌｔＥ（１）、ｍａｒｋ（２）、ａｌｔＳ（２）、ａｌｔＥ（２）、ｍａｒｋ（３）、ａｌｔＳ（３）、ａｌｔＥ（３）、ｍａｒｋ（４）が記憶されている。
【００３５】
ｗａｖｅ＿ｓｔａｒｔは、各サンプリング値の各帯域における振幅値情報と周波数情報が記憶されているアドレスのうちスタートアドレスを表し、ｗａｖｅ＿ｅｎｄは、エンドアドレスを表している。ｍａｒｋ（１）乃至ｍａｒｋ（４）は、上述した各区間の境界Ｍａｒｋ（１）乃至Ｍａｒｋ（４）に対応し、これらの位置にあるサンプリング値の振幅値情報と周波数情報とが記憶されているアドレスを表している。
【００３６】
ａｌｔＳ（１）乃至ａｌｔＳ（３）は、各区間におけるループ期間の開始点における振幅値情報と位相情報とが記憶されているアドレスを表し、ａｌｔＥ（１）乃至ａｌｔＥ（３）は、ループ期間の終了点における振幅値情報と位相情報とが記憶されているアドレスを表す。ループ期間は、後述するように時間軸の伸長を行った場合、例えばループ期間の最終アドレスａｌｔＥ（１）乃至ａｌｔＥ（３）の振幅値情報と位相情報まで読み出して、波形合成を行ってもまだ伸長が終了しない場合に、このループ期間の振幅値情報と位相情報とによって波形合成を行うためのものである。
【００３７】
なお、この実施の形態では、区間数を３としたので、ｍａｒｋの数が４、ａｌｔＳの数が３、ａｌｔＥの数が３であるが、区間数が３とは異なった場合には、これらの数も区間数に応じて変化する。また、ループ期間の位置及び長さ（周期）は、図３から明らかなように、各帯域ごとに異なっている。
【００３８】
次に、図３を参照しながら、この波形再生装置の概略の動作について、説明する。なお、本願発明の実施の形態では、波形メモリ２のバンド波形データ領域には振幅情報と位相情報とが記憶されているが、具体的な現象（ピッチの変化）を分かりやすくするために、図３では、位相情報を周波数情報に変更して示している。実際には、各帯域の記憶情報は、図１４に、或る帯域Ｂａｎｄ（ｍ）として示されているように、位相情報Ｐ（ｍ）と振幅情報Ａ（ｍ）とが記憶されている。この波形再生装置では、ＤＳＰ４において原オーディオ波形信号の各サンプリング点のアドレス（第１の再生位置情報）を発生するアドレスカウンタＳＰＨＡＳＥと、各帯域の位相情報及び振幅値情報が記憶されているアドレス（第２の再生位置情報）を発生するｍ個のアドレスカウンタａｄｄｒとを使用する。
【００３９】
ＳＰＨＡＳＥの値は、ＷａｖｅＳｔａｒｔから増加していく。その増分ｔｃｏｍｐは、操作子１０に含まれている圧縮伸長操作子によって設定された圧縮または伸長の程度に応じて設定される。例えば圧縮する場合には、増分ｔｃｏｍｐは、圧縮伸長を行わない場合の増分、例えば１よりも大きな値とされ、伸長する場合には、圧縮伸長を行わない場合の増分１よりも小さな値とされる。また、各ａｄｄｒは、ｍａｒｋ（１）から増加していくが、その増分ｒａｔｅは、ＳＰＨＡＳＥの増分ｔｃｏｍｐと異なり、例えば圧縮伸長を行わない通常の再生の場合の増分である１である。なお、増分ｒａｔｅは、操作子によって任意に設定することができるようにしてもよい。
【００４０】
各ａｄｄｒの値に従って、波形メモリ２から各帯域の位相情報及び振幅値情報が読み出され、対応する周波数時間変換処理部４ａ−１乃至４ａ−ｍに供給され、波形の再合成が行われる。
【００４１】
原オーディオ波形信号のサンプリング周期と同じ周期ごとに、ＳＰＨＡＳＥと各ａｄｄｒとが、アドレスの発生を行うと、例えば、ｔｃｏｍｐが１より大きい場合、即ち、時間圧縮の場合、ＳＰＨＡＳＥがＭａｒｋ（２）を指定したとき、各ａｄｄｒは、まだＭａｒｋ（２）に対応するｍａｒｋ（２）の位置には到達していない。この時、各ａｄｄｒとＳＰＨＡＳＥとの値には偏差が生じている。この偏差を０にするように、各ａｄｄｒの値がｍａｒｋ（２）に強制的に修正されると同時に、各余弦発振器４ｂ−１乃至４ｂ−ｍに制御部４ｆから位相リセット信号が供給されて、各ｍａｒｋ（２）におけるそれぞれの位相情報を各余弦発振器４ｂ−１乃至４ｂ−ｍに設定する。これによって、Ｍａｒｋ（２）から始まる区間について、これらに対応した各帯域の位相情報及び振幅値情報に基づいて時間圧縮されたオーディオ波形信号が再合成され、再合成音が不自然になることはない。以下、同様にＭａｒｋ（２）以降の区間についても時間軸の圧縮された波形の再合成が行われる。
【００４２】
同様にｔｃｏｍｐが１よりも小さい場合、即ち時間軸の伸長が行われた場合、仮に各ａｄｄｒがｍａｒｋ（２）に到達しても、ＳＰＨＡＳＥはＭａｒｋ（２）には到達していない。そこで、各帯域ごとにループ期間を設け、各ａｄｄｒの値が各ループ期間の終端部のアドレスａｌｔ＿Ｅ（各帯域のループ期間の終了点を総称して、ａｌｔ＿Ｅと記載する。）に到達すると、ここからａｌｔ＿Ｓ（各帯域のループ期間の始端部を総称して、ａｌｔ＿Ｓと記載する。）まで、逆方向に位相情報と振幅値情報とを読み出し、波形の再生を行う。ａｌｔ＿Ｓまで戻っても、ＳＰＨＡＳＥがＭａｒｋ（２）に到達していない場合、ａｌｔ＿Ｅに向かって順方向に位相情報と振幅値情報とを読み出し、波形の再合成を行う。
【００４３】
このようなループ期間での読み出しを行っている間に、ＳＰＨＡＳＥがＭａｒｋ（２）に到達すると、このときもＳＰＨＡＳＥの値と各ａｄｄｒの値との間には偏差が存在する。そこで、この偏差を０にするように、各ａｄｄｒの値がＭａｒｋ（２）に対応するｍａｒｋ（２）に強制的に修正されると同時に、各余弦発振器４ｂ−１乃至４ｂ−ｍに位相リセット信号が供給されて、各ｍａｒｋ（２）におけるそれぞれの位相情報を各余弦発振器４ｂ−１乃至４ｂ−ｍに設定する。これによって、Ｍａｒｋ（２）から始まる区間の時間伸長された波形の再合成が、Ｍａｒｋ（２）に対応する各帯域のｍａｒｋ（２）の位相情報及び振幅値情報に基づいて開始される。従って、Ｍａｒｋ（２）から始まる区間の開始のタイミングが、各帯域とも一致しており、再合成音が不自然になることはない。Ｍａｒｋ（２）以降の区間でも同様に時間軸の伸長が行われる。
【００４４】
このような圧縮伸長の場合、各ａｄｄｒの増分ｒａｔｅが１であるので、オーディオ波形信号の再合成は、このオーディオ波形信号の各サンプリング値をサンプリング周波数で読み出すことによって行われている。従って、例えば、元のオーディオ波形信号が楽音信号の場合、アタック部が圧縮伸長されないと共に、原波形信号のアタック部の音質を損なうことなく再合成することができ、不自然な楽音となることはない。
【００４５】
以下、ＤＳＰ４及びＣＰＵ６の動作を詳細に説明する。図５は、ＣＰＵ６のメインルーチンを示したものである。ＣＰＵ６は、主に操作子１０の状態を検出し、この検出状態に応じて各種設定を行うと共に、表示装置１２に検出状態及び設定状態を表示する。
【００４６】
まず、操作子１０に含まれている再生モードスイッチが変化しているか否かを判断する（ステップＳ２）。再生モードはモード１とモード２とがある。モード２は、上述したような原オーディオ波形信号の新たな区間の再合成を開始するとき、各帯域の周波数情報及び振幅値情報のタイミングを一致させるモードであり、モード１は、このようなタイミングの修正を行わないモードである。
【００４７】
再生モードスイッチに変化があると判断されると、変化した再生モードスイッチはモード１であるかモード２であるかを判断する（ステップＳ４）。再生モードスイッチがモード１であると、再生モードを１に設定し（ステップＳ６）、再生モードスイッチがモード２であると、再生モードを２に設定し（ステップＳ８）、表示装置１２における再生モードの表示を、設定されたモードに変更する（ステップＳ１０）。
【００４８】
ステップＳ１０に続いて、或いはステップＳ２において再生モードスイッチに変化がないと判断されたとき、操作子１０に含まれている圧縮伸長操作子が変化しているか判断する（ステップＳ１２）。圧縮伸長操作子に変化があると判断されると、圧縮伸長操作子の操作量に対応して圧縮伸長パラメータ値ｔｃｏｍｐを設定する（ステップＳ１４）。次に、表示装置１２におけるｔｃｏｍｐの値の表示を更新する（ステップＳ１６）。
【００４９】
ステップＳ１６に続いて、或いはステップＳ１２において圧縮伸長操作子に変化が無いと判断されると、操作子１０に含まれている鍵盤の鍵操作子が操作されたか否かを判断する（ステップＳ１８）。この鍵操作子が変化していると判断されると、鍵操作子の変化がオフからオンか（発音の開始か）或いはオンからオフか（発音の停止か）或いはオンからオンか（レガート演奏か）の判断が行われる（ステップＳ２０）。オフからオンの変化であると判断されると、その押された鍵に対応したＭＩＤＩデータであるノート番号から周波数変換情報を算出して、その周波数変換情報をＤＳＰ４に転送する（ステップＳ２１）。次に、ＤＳＰ発音開始処理を実行するように、ＤＳＰ４に指示を送る（ステップＳ２２）。前記ステップＳ２０においてオンからオンの変化であると判断されると、それは鍵をレガート演奏したことであり、新たな押鍵に対応したＭＩＤＩデータであるノート番号から新たな周波数変換情報を算出して、その周波数変換情報をＤＳＰ４に転送する（ステップＳ２３）。同様にオンからオフの変化であると判断されると、ＤＳＰ発音停止処理を実行するように、ＤＳＰ４に指示を送る（ステップＳ２４）。これによって、メインルーチンが終了する。なお、メインルーチンは、所定周期ごとに繰返し実行される。
【００５０】
ＤＳＰ発音開始処理では、初期設定を行う（ステップＳ２６）。即ち、図６に示すように、原オーディオ波形信号の各サンプル値のアドレスを指定するアドレスカウンタＳＰＨＡＳＥの値を、スタートアドレスであるＷａｖｅＳｔａｒｔに設定する。次に、現在ＳＰＨＡＳＥが表しているアドレスが属する区間の先頭のマーク情報を記憶するレジスタｍｋの値をＭａｒｋ（１）にする。そして、初期設定以後にはアドレスカウンタＳＰＨＡＳＥが現在発生しているアドレスが属する区間の１つ前の区間の先頭を表すマーク情報を記憶するレジスタｍｋ＿ｏｌｄの値をＭａｒｋ（１）とする。次に各マーク情報を指定するためのカウンタｎの値を１とする。発音が開始されているか否かを表すフラグｋｅｙ＿ｏｎを１に設定し、発音が開始されていることを示す。そして、ループ期間の振幅値情報と周波数情報を読み出すときの方向を指定するフラグｄｉｒを順方向に設定する。
【００５１】
そして、ＤＳＰ２の割込みを許可する（ステップＳ２８）。これによって、ＤＳＰ発音開始処理ルーチンは終了する。
【００５２】
ＤＳＰ発音停止処理ルーチンは、図７に示すように、発音を停止させるために、ｋｅｙ＿ｏｎを０に設定する（ステップＳ３０）。次に、ゲート信号発生部４ｆにゲート信号の立ち下げを指示する（ステップＳ３２）。これによって、ゲート４ｅの出力が徐々に小さくなり、消音される。
【００５３】
ＤＳＰの割り込み処理ルーチンは、原オーディオ波形信号のサンプリング周波数に等しい周波数のクロック信号が、図示しないクロック発生器によって発生されるごとに実行される。このルーチンでは、図８に示すように、まず制御メイン処理を実行する（ステップＳ３４）。制御メイン処理については、後述する。
【００５４】
次に各帯域を指定するためのカウンタｊの値を１とし（ステップＳ３６）、後述するように、このカウンタｊによって指定された帯域の時間軸変換処理を行う（ステップＳ３８）。この時間軸変換処理についても後述する。カウンタｊの値がｍより大きいか判断し（ステップＳ４０）、ｍより大きければ、割込み処理を終了し、ｍより大きくなければ、カウンタｊの値を１つ増加させ、ステップＳ３８を実行する。そして、後述のフラグｓｙｌｌ＿ｆｌｇが１であるか判断する（ステップＳ３９）。フラグｓｙｌｌ＿ｆｌｇが１の場合には、余弦発振器４ａ−１乃至４ａ−ｍに位相リセット信号を供給し、位相をリセットするように指示し、ＤＳＰ４の割り込み処理ルーチンを終了する（ステップＳ４１）。なお、ステップＳ３９において、フラグｓｙｌｌ＿ｆｌｇが１でないと判断されると、ＤＳＰ４の割り込み処理ルーチンを終了する。
【００５５】
ＤＳＰ制御メイン処理は、クロック信号が発生するごとに、主にＳＰＨＡＳＥの値をｔｃｏｍｐずつ進めるためのものである。図９に示すように、ＤＳＰ制御メイン処理では、アドレスカウンタＳＰＨＡＳＥがＭａｒｋ（１）乃至（４）のいずれかに到達したとき、即ち各区間の先頭に到達したときのみに、１とされるフラグｓｙｌｌ＿ｆｌａｇが０以外であるか、まず判断する（ステップＳ４２）。０以外であれば、これを０とする（ステップＳ４４）。これに続いて、またはステップＳ４２においてｓｙｌｌ＿ｆｌａｇが０以外でないと、即ち０であると判断された場合、アドレスカウンタＳＰＨＡＳＥの値が、ｍｋ以上であるか判断する（ステップＳ４６）。当初、ＤＳＰ発音開始処理において、ＳＰＨＡＳＥをＷａｖｅＳｔａｒｔに、ｍｋをＭａｒｋ（１）に設定しているので、始めてステップＳ４６が実行されたときには、アドレスカウンタＳＰＨＡＳＥの値が、ｍｋ以上であると判断される。
【００５６】
アドレスカウンタＳＰＨＡＳＥの値が、ｍｋ以上であると、ＳＰＨＡＳＥがＷａｖｅＥｎｄ以上であるか、即ち区間の最終アドレスを指定したか判断する。最終アドレスを指定していない場合、ｓｙｌｌ＿ｆｌａｇを１とし、カウンタｎの値を１つ増加させる（ステップＳ５０）。即ち、ＳＰＨＡＳＥが或る区間の先頭に位置していることを表す。
【００５７】
次に、ｍｋをＭａｒｋ（ｎ）に更新する（ステップＳ５２）。これによって、ｍｋの値は、次の区間の先頭を表す。ゲート信号発生部４ｇにゲート信号の立上を指示する（ステップＳ５４）。これによって、ゲート４ｅから再生波形の出力が可能となる。
【００５８】
そして、ｋｅｙ＿ｏｎが０であるか判断する（ステップＳ５６）。ｋｅｙ＿ｏｎは上述したＤＳＰ発音停止処理が実行されたときのみに０となる。ｋｅｙ＿ｏｎが０でないと、アドレスカウンタＳＰＨＡＳＥの値をｔｃｏｍｐだけ増加させ（ステップＳ５８）、この制御メイン処理を終了する。
【００５９】
ｋｅｙ＿ｏｎが０であると、ゲート信号が０になっているか判断する（ステップＳ６０）。ゲート信号は立ち下げを指示された後、徐々に低下していくので、実際にゲート信号が０となってゲート４ｅから出力が発生していないかどうか判断している。ゲート信号が０でないと判断されると、ステップＳ５８が実行される。ゲート信号が０であると、ＤＳＰの割り込み処理を停止させ（ステップＳ６２）、リターンする。従って、以後、再び割込みが許可されるまで、クロック信号が発生しても、割込み処理は実行されない。
【００６０】
ステップＳ４８において、ＳＰＨＡＳＥがＷａｖｅＥｎｄ以上であると判断されると、直ちにステップＳ６２が実行される。
【００６１】
ステップＳ４６において、ＳＰＨＡＳＥがｍｋ以上でないと判断されると、即ち次の区間の先頭に到達していないと判断されると、ＳＰＨＡＳＥの値がｍｋ−α以上か判断される。即ち、次の区間の先頭から予め定めたアドレス距離αだけ手前のアドレスにＳＰＨＡＳＥが到達しているか判断する（ステップＳ６４）。αは、各区間の終了間際に、再生合成音の消音を開始する位置を決定するためのものである。ＳＰＨＡＳＥの値がｍｋ−α以上でないと判断されると、ステップＳ５６、Ｓ６０、Ｓ５８またはＳ５６、Ｓ６０、Ｓ６２が実行される。
【００６２】
ＳＰＨＡＳＥの値がｍｋ−α以上であると、ｍｋの値がｍｋ＿ｏｌｄに等しくないか判断する（ステップＳ６６）。或る区間の先頭のアドレスをＳＰＨＡＳＥが指定したとき、ステップＳ５２によってｍｋは次の区間の先頭のアドレスに更新されているので、初めてステップＳ６６が実行されるときには、ｍｋはｍｋ＿ｏｌｄと不一致である。従って、ゲート信号発生部４ｇにゲート信号の立ち下げを指示する（ステップＳ６８）。そしてｍｋ＿ｏｌｄをｍｋの値に更新し（ステップＳ７０）、ステップＳ５６以降を実行する。従って、二度目以降にステップＳ６６が実行される場合、ステップＳ６６から直ちにステップＳ５６以降が実行される。
【００６３】
このようにＤＳＰ制御メインルーチンでは、クロック信号が発生するごとにＳＰＨＡＳＥをｔｃｏｍｐずつ増加させ、ＳＰＨＡＳＥが各区間の先頭のアドレスを指定したときだけ、ｓｙｌｌ＿ｆｌａｇを１とし、ゲート４ｅから出力可能とし、ＳＰＨＡＳＥがｍｋ−α以上のアドレスを初めて指定したとき、ゲート信号の立ち下げを開始している。
【００６４】
図１０に示すように、ＤＳＰ時間軸変換処理では、設定されている再生モードが１であるか２であるかを判断する（ステップＳ７２）。再生モード１である場合には、ｊカウンタによって指定された帯域のａｄｄｒをｔｃｏｍｐだけ増加させ（ステップＳ７４）、ａｄｄｒを時間伸縮情報として各時間周波数変換処理部に転送する（ステップＳ７６）。
【００６５】
再生モード２が設定されている場合には、ｓｙｌｌ＿ｆｌａｇが１であるか、即ち、いずれかの区間の先頭のアドレスが指定されているか判断する（ステップＳ７８）。いずれかの区間の先頭のアドレスが指定されている場合、その区間の先頭のアドレスをａｄｄｒに設定するため、ａｄｄｒをｍａｒｋ（ｎ−１）に更新する（ステップＳ８０）。
【００６６】
これは、ＤＳＰ制御メイン処理のステップＳ５０においてｓｙｌｌ＿ｆｌａｇを１としたときに（ＳＰＨＡＳＥが原オーディオ波形信号のいずれかの区間の先頭に到達したとき）、ｎを１進めているので、ａｄｄｒをｍａｒｋ（ｎ）とすると、ＳＰＨＡＳＥが指定している区間の次の区間の先頭の振幅値情報と位相情報とが記憶されているアドレスを指定することになる。従って、ｍａｒｋ（ｎ−１）として、ＳＰＨＡＳＥが指定している原オーディオ波形信号の区間の先頭に振幅値情報と位相情報とが記憶されているアドレスを指定させている。
【００６７】
このようにＳＰＨＡＳＥが或る区間の先頭を指定したとき、ａｄｄｒもその区間の先頭の振幅値情報と位相情報とが記憶されているアドレスに強制的に修正されているので、時間軸の圧縮、伸長いずれが行われている場合でも、新しい区間の再生合成は、その区間の先頭のサンプリング値の各帯域の位相情報と振幅値情報とによって開始される。
【００６８】
次に、ループ期間の先頭のアドレスを記憶するａｌｔ＿ｓｔａｒｔの値をｊカウンタが指定する帯域のａｌｔＳ（ｎ−１）に、ループ期間の終了端のアドレスを記憶するａｌｔ＿ｅｎｄの値をｊカウンタが指定する帯域のａｌｔＥ（ｎ−１）に更新する（ステップＳ８２）。これもａｄｄｒが指定するアドレスが属する区間のループ期間の先頭と終了点とを記憶するためである。次に、ｄｉｒを順方向に設定し（ステップＳ８４）、ステップＳ７６を実行する。
【００６９】
ステップＳ７８において、ｓｙｌｌ＿ｆｌａｇが１でないと判断されると、ＳＰＨＡＳＥは区間の先頭を指定していないので、ｄｉｒが順方向であるか判断する（ステップＳ８６）。順方向の場合、ａｄｄｒを予め定めたｒａｔｅだけ増加させる（ステップＳ８８）。ｒａｔｅとしては、上述したように例えば１が使用される。従って、ステップＳ７６で転送されたａｄｄｒに従って、時間周波数変換処理部での振幅情報と位相情報との読み出しは、通常の速度で行われる。
【００７０】
ａｄｄｒがａｌｔ＿ｅｎｄ以上であるか判断され（ステップＳ９０）、ａｌｔ＿ｅｎｄ以上でなければ、ステップＳ７６が実行される。ａｄｄｒがａｌｔ＿ｅｎｄ以上であれば、ループ期間の終了点を超えたアドレスを指定しているので、ａｄｄｒの値を、現在のａｄｄｒの値とａｌｔ＿ｅｎｄとの偏差（ａｄｄｒ−ａｌｔ＿ｅｎｄ）だけａｌｔ＿ｅｎｄから減算した値に修正する（ステップＳ９２）。次に、ｄｉｒを逆方向に設定し（ステップＳ９４）、ステップＳ７６を実行する。
【００７１】
ステップＳ９２の演算は、ステップＳ９４において逆方向にａｄｄｒの読み出し方向を変更するが、このとき順方向のときに、ａｌｔ＿ｅｎｄを超えてａｄｄｒが進んだ量だけ、ａｌｅ＿ｅｎｄから戻したアドレスから逆方向では、周波数情報と振幅値情報を読み出すためである。
【００７２】
ステップＳ８６において、逆方向であると判断されると、ａｄｄｒをｒａｔｅだけ減少させる（ステップＳ９６）。ａｄｄｒがａｌｔ＿ｓｔａｒｔ以下であるか判断され（ステップＳ９８）、ａｌｔ＿ｓｔａｒｔ以下でなければ、ステップＳ７６が実行される。ａｄｄｒがａｌｔ＿ｓｔａｒｔ以下であれば、ループ期間の先頭を超えたアドレスを指定しているので、ａｄｄｒの値を、現在のａｄｄｒの値とａｌｔ＿ｓｔａｒｔとの偏差（ａｄｄｒ＋ａｌｔ＿ｓｔａｒｔ）だけａｌｔ＿ｓｔａｒｔを増加させた値に修正する（ステップＳ１００）。次に、ｄｉｒを順方向に設定し（ステップＳ１０２）、ステップＳ７６を実行する。
【００７３】
ステップＳ１００の演算は、ステップＳ１０２において順方向にａｄｄｒの読み出し方向を変更するが、逆方向においてａｌｔ＿ｓｔａｒｔを超えてａｄｄｒが進んだ量だけ、順方向ではａｌｅ＿ｓｔａｒｔから戻したアドレスから周波数情報と振幅値情報を読み出すためである。
【００７４】
このようにして、波形の再生が行われるので、原オーディオ波形信号の時間軸の圧縮伸長を行う場合に、原オーディオ波形信号の各区間の先頭部分を再合成するとき、当該区間の先頭部分の位相情報及び振幅値情報に基づいて波形再生が行われるので、合成波形の音質を改善できる。
【００７５】
上記の実施の形態では、再生モード１と再生モード２とを設けたが、場合によっては、再生モード１は不要である。再生モード１を設けない場合、波形メモリ２には、各区間におけるαの期間について振幅値情報及び位相情報を記憶させる必要はない。
【００７６】
【発明の効果】
以上のように、本発明によれば、第１の再生位置情報がマーク情報の位置に到達したとき、第２の再生位置情報を第１の再生位置情報に修正しているので、マーク情報のオーディオ波形信号の時間軸の圧縮伸長が、マーク情報に対応する位相情報及び振幅値情報によって行われ、これ以降のオーディオ波形信号の時間軸の圧縮伸長も同様に対応する位相情報及び振幅値情報によって行われるので、音質が改善される。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の波形再生装置のブロック図である。
【図２】図１の波形再生装置におけるＤＳＰが実現する位相ボコーダのブロック図である。
【図３】図１の波形再生装置の波形メモリ２に記憶されている各帯域の周波数情報と振幅値情報とこれらを発生する元になるオーディオ波形信号を示す図である。
【図４】波形メモリ２に記憶されている各種データを示す図である。
【図５】図１のＣＰＵが実行するメインルーチンのフローチャートである。
【図６】ＤＳＰが実行するＤＳＰ発音開始処理ルーチンのフローチャートである。
【図７】ＤＳＰが実行するＤＳＰ発音停止処理ルーチンのフローチャートである。
【図８】ＤＳＰが実行する割込み処理ルーチンのフローチャートである。
【図９】図８の割り込み処理ルーチン中の制御メイン処理のフローチャートである。
【図１０】図８の割り込み処理ルーチン中の時間軸変換処理のフローチャートである。
【図１１】図１の波形再生装置において波形メモリに振幅値情報と位相情報とを記憶するための構成のブロック図である。
【図１２】図１１における分析部の詳細なブロック図である。
【図１３】図１の波形再生装置における時間周波数変換処理部の詳細なブロック図である。
【図１４】図１の波形再生装置において波形メモリにバンド波形データとして記憶されている位相情報と振幅値情報とを示す図である。
【図１５】従来の位相ボコーダのブロック図である。
【図１６】図１５の分析部の詳細なブロック図である。
【図１７】図１５の位相ボコーダによって行われる波形分析を示す図である。
【図１８】図１５の時間周波数変換処理部の詳細なブロック図及び図１５の時間周波数変換処理部における時間伸張、圧縮の説明図である。
【符号の説明】
２  波形メモリ（波形データ記憶手段）
４  ＤＳＰ（第１の再生位置情報発生手段と、第２の再生位置情報発生手段、波形信号合成手段、制御手段）。
【図１】
0004294179.tif 000002
【図２】
0004294179.tif 000003
【図３】
0004294179.tif 000004
【図４】
0004294179.tif 000005
【図５】
0004294179.tif 000006
【図６】
0004294179.tif 000007
【図７】
0004294179.tif 000008
【図８】
0004294179.tif 000009
【図９】
0004294179.tif 000010
【図１０】
0004294179.tif 000011
【図１１】
0004294179.tif 000012
【図１２】
0004294179.tif 000013
【図１３】
0004294179.tif 000014
【図１４】
0004294179.tif 000015
【図１５】
0004294179.tif 000016
【図１６】
0004294179.tif 000017
【図１７】
0004294179.tif 000018
【図１８】
0004294179.tif 000019