JP4087964B2 - 波形再生装置 - Google Patents
波形再生装置 Download PDFInfo
- Publication number
- JP4087964B2 JP4087964B2 JP33142398A JP33142398A JP4087964B2 JP 4087964 B2 JP4087964 B2 JP 4087964B2 JP 33142398 A JP33142398 A JP 33142398A JP 33142398 A JP33142398 A JP 33142398A JP 4087964 B2 JP4087964 B2 JP 4087964B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- waveform signal
- mark
- waveform
- reproduction position
- 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】
【課題を解決するための手段】
本発明の波形再生装置は、複数の区間からなる元のオーディオ波形信号の前記区間の境界となる時間軸上の位置を示す1つ以上のマーク情報と、前記元のオーディオ波形信号を複数の周波数帯域に分割し、これら分割帯域ごとの波形信号の周波数情報(瞬間周波数情報)及び振幅値情報とを、記憶する波形データ記憶手段を有している。マーク情報は、例えば元のオーディオ波形信号が音声の場合、各音節の先頭に設けることができる。また、元のオーディオ波形信号が楽音信号の場合、アタック部、定常部、減衰部及び無音部等の各境界に設けることができる。各帯域の周波数情報及び振幅値情報は、元のオーディオ波形信号を適切なサンプリング周波数でサンプリングして得た各サンプリング値ごとに取得されている。即ち、元のオーディオ波形信号の時間軸上の位置に対応して取得されている。前記元のオーディオ波形信号の時間軸上の位置、例えば上記の各サンプリング値の位置を表わし、所望の速度で時間的に変化する第1の再生位置情報を発生する第1の再生位置情報発生手段が設けられている。この速度は、時間圧縮する場合には元のオーディオ波形信号を時間軸の圧縮伸長を行わない場合よりも速くなり、時間伸長する場合には遅くなる。前記各帯域の周波数情報及び振幅値情報の時間軸上の位置を表わし、前記所望の速度と異なる速度で時間的に変化する第2の再生位置情報を発生する第2の再生位置情報発生手段も設けられている。第2の再生位置情報の速度は、一定の速度とすることができ、例えば、元のオーディオ波形信号の時間軸の圧縮伸長を行わない場合の速度とすることができる。第2の再生位置情報に従って、前記波形データ記憶手段から前記周波数情報及び振幅値情報を読み出し、その読み出された周波数情報及び振幅値情報に従って再生オーディオ波形信号を合成する波形信号合成手段が設けられている。第2の再生位置情報は、各帯域毎にそれぞれ独立して設けるようにしている。前記第1の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達する前に、前記第2の再生位置情報が前記ループ区間の終端に達した分割帯域についてそのループ区間を繰り返し読み出すように前記第2の再生位置情報を制御し、前記第1の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達したとき、このマーク情報の表わす位置に対応する第2の再生位置情報に変更するように前記第2の再生位置情報を制御する制御手段が、設けられている。
【0009】
本発明の波形再生装置では、第1の再生位置情報は、時間軸の圧縮を行う場合には、元の波形信号をそのまま再生する場合よりも速い速度で変化し、伸長を行う場合には、遅い速度で変化する。一方、第2の再生位置情報は、第1の再生位置情報と異なる速度で各帯域の振幅値情報及び周波数情報を読み出しているので、第1の再生位置情報が指定している時間軸上の位置と、第2の再生位置情報が指定している振幅値情報及び周波数情報に対応する波形の時間軸の位置とには、ずれ(偏差)が生じる。そして、第1の再生位置情報がマーク情報が表わす位置に到達したとき、即ち、所定の時間軸圧縮または伸長が行われた時点で、第1の再生位置情報と第2の再生位置情報との偏差が零になるように、制御手段が第2の再生位置情報を制御しているので、第2の再生位置情報は、マーク情報に対応する各帯域の周波数情報と振幅値情報とに対応する位置に修正され、以後の波形再生は、マーク情報に対応する位置以降の各帯域の周波数情報と振幅値情報とに基づいて行われる。
【0010】
なお、時間軸の伸長を行う場合、第1の再生位置情報が、まだマーク情報の位置に到達する前に、第2の位置情報によって、マーク情報の位置に対応する周波数情報及び振幅値情報まで読み出してしまうことがある。そこで、マーク情報の位置に対応する周波数情報及び振幅値情報の記憶されている位置よりも前に第2の再生位置情報に対して繰り返し期間を定めておき、第1の再生位置情報がマーク情報の位置に到達する前には、この繰り返し期間の周波数情報と振幅値情報とを繰り返し読み出すことを行うことができる。この場合、第1の再生位置情報がマーク情報の位置に到達すると、即座に第2の再生位置情報がマーク情報に対応する位置に修正される。また、時間軸の圧縮を行う場合、第1の再生位置情報がマーク情報の位置に到達したとき、第2の再生位置情報がマーク情報の位置に対応する周波数情報及び振幅値情報の記憶位置を指定していないことがある。この場合にも、直ちに第2の再生位置情報は、マーク情報の位置に対応する周波数情報と振幅値情報の記憶位置に修正される。
【0011】
【発明の実施の形態】
本発明の1実施の形態の波形再生装置は、図1に示すように、波形メモリ2、DSP4とを有し、これらが位相ボコーダとして機能する。この位相ボコーダは、波形メモリ2に記憶されている波形データに基づいて再生オーディオ波形信号を合成して、D/A変換器5に供給する。DSP4は、ROM8に記憶されたプログラムに従って動作する。このプログラムは、CPU6を介してDSP2に転送される。
【0012】
CPU6は、ROM8に記憶されているプログラムに従って、操作子10の操作状態を検出し、検出結果に従ってDSP4を制御する。検出した操作子10の操作状態や、操作子10の操作状態に基づくDSP4の制御状態を、表示装置12にCPU6は表示する。操作子10には、再生モードを設定する再生モードスイッチ、圧縮または伸長とその程度を表すパラメータを設定する圧縮伸長操作子、発音開始及び終了を指示する発音開始操作子等が設けられている。また、RAM14は、CPU6のワーキングメモリとして使用され、後述する各種レジスタやフラグが設定される。
【0013】
波形メモリ2には、振幅値情報と瞬間周波数(以下、周波数と称する)情報とが、記憶されている。これら情報は、或る波形データ信号、例えば楽音の1フレーズを所定のサンプリング周波数でサンプリングした各サンプリング値を、この波形データ信号の概略基本周期を帯域幅に持つ複数、例えばm個の周波数帯域に分割し、各帯域の信号をそれぞれの帯域の中心の複素周波数で乗算して得たものである。
【0014】
DSP4は、図2に示すように、各帯域ごとにそれぞれ設けられた時間軸変換部4a−1乃至4a−mと、余弦発振器4b−1乃至4b−mと、乗算器4c−1乃至4c−mとして機能する。さらに、DSP4は、各乗算器4c−1乃至4c−mの各出力を加算する加算器4dと、この加算器4dの加算出力にゲート信号を乗算する乗算器4eとしても機能する。加算器4dが合成器として、乗算器4eがゲートとして機能する。
【0015】
各時間軸変換部4a−1乃至4a−mは、これらがそれぞれ対応する帯域の振幅値情報と周波数情報とを、波形メモリ2から制御部4fを介して入力し、対応する帯域の中心周波数と入力された周波数情報が表す周波数との和の周波数で、対応する余弦発振器4b−1乃至4b−mを発振させる。この余弦発振器4b−1乃至4b−mからの余弦発振波を、対応する乗算器4c−1乃至4c−mにおいて、対応する時間軸変換部4a−1乃至4a−mからの振幅値によって振幅変調する。このようにして、各帯域ごとに発生した信号を加算器4dで合成することによって、元のオーディオ波形信号を再現できる。なお、ゲート4eの開閉状態を制御するゲート信号は、制御部4fに含まれているゲート信号発生部4gから供給される。ゲート信号は、例えば0から1の間の値をとり、立上のときには、0から直ちに1となるが、立ち下げのときには1から徐々に0に向かって減少する。
【0016】
波形メモリ2には、上述した各振幅値情報及び周波数情報を含めて、各種パラメータが記憶されている。即ち、図4(a)に示すように、波形メモリ2は、波形情報領域、バンド波形情報領域及びバンド波形データ領域を有している。
【0017】
同図(b)に示すように、波形情報領域には、WaveStart、WaveEnd、Mark(1)、Mark(2)、Mark(3)、Mark(4)が記憶されている。Wavestartは、図3の上部に示す原オーディオ波形信号を所定の周波数でサンプリングして、波形メモリ2に記憶させたとしたなら(実際には波形メモリ2には記憶させていない)、そのスタートアドレスとなるアドレスであり、WaveEndは、同じくエンドアドレスとなるアドレスである。
【0018】
Mark(1)乃至Mark(4)は、同じく原オーディオ波形信号の各サンプリング値を記憶させたとしたなら、例えば楽音の場合、アタック部、定常部、減衰部、無音部のような各区間の境界、音声信号の場合、各音節のような各区間の境界となる部分のアドレスである。これらMark(1)乃至Mark(4)がマーク情報に相当する。なお、この実施の形態では、原オーディオ波形信号が3つの区間からなる例を示したので、マーク情報は4つであるが、実際には原オーディオ波形信号の区間数に応じてマーク情報の数は増減する。
【0019】
図4(c)に示すように、バンド波形データ領域は、原オーディオ波形信号の概略基本周期を帯域幅に持つm個の周波数帯域ごとに設けられており、同図(d)に示すように、各帯域ごとに、上述した振幅値情報と周波数情報とが記憶されている。これら振幅値情報と周波数情報とは、同図(e)に示すように、原オーディオ波形信号の各サンプリング値ごとに記憶されている。
【0020】
バンド波形情報領域も、同図(f)に示すようにm個の帯域に対応して設けられており、各帯域ごとに同図(g)に示すようにwave_start、wave_end、mark(1)、altS(1)、altE(1)、mark(2)、altS(2)、altE(2)、mark(3)、altS(3)、altE(3)、mark(4)が記憶されている。
【0021】
wave_startは、各サンプリング値の各帯域における振幅値情報と周波数情報が記憶されているアドレスのうちスタートアドレスを表し、wave_endは、エンドアドレスを表している。mark(1)乃至mark(4)は、上述した各区間の境界Mark(1)乃至Mark(4)に対応し、これらの位置にあるサンプリング値の振幅値情報と周波数情報とが記憶されているアドレスを表している。
【0022】
altS(1)乃至altS(3)は、各区間におけるループ期間の開始点における振幅値情報と周波数情報とが記憶されているアドレスを表し、altE(1)乃至altE(3)は、ループ期間の終了点における振幅値情報と周波数情報とが記憶されているアドレスを表す。ループ期間は、後述するように時間軸の伸長を行った場合、例えばループ期間の最終アドレスaltE(1)乃至altE(3)の振幅値情報と周波数情報まで読み出して、波形合成を行ってもまだ伸長が終了しない場合に、このループ期間の振幅値情報と周波数情報とによって波形合成を行うためのものである。
【0023】
なお、この実施の形態では、区間数を3としたので、markの数が4、altSの数が3、altEの数が3であるが、区間数が3とは異なった場合には、これらの数も区間数に応じて変化する。また、ループ期間の位置及び長さ(周期)は、図3から明らかなように、各帯域ごとに異なっている。
【0024】
次に、図3を参照しながら、この波形再生装置の概略の動作について、説明する。この波形再生装置では、DSP2において原オーディオ波形信号の各サンプリング点のアドレス(第1の再生位置情報)を発生するアドレスカウンタSPHASEと、各帯域の周波数情報及び振幅値情報が記憶されているアドレス(第2の再生位置情報)を発生するm個のアドレスカウンタaddrとを使用する。
【0025】
SPHASEの値は、WaveStartから増加していく。その増分tcompは、操作子10に含まれている圧縮伸長操作子によって設定された圧縮または伸長の程度に応じて設定される。例えば圧縮する場合には、増分tcompは、圧縮伸長を行わない場合の増分、例えば1よりも大きな値とされ、伸長する場合には、圧縮伸長を行わない場合の増分1よりも小さな値とされる。また、各addrは、mark(1)から増加していくが、その増分rateは、SPHASEの増分tcompと異なり、例えば圧縮伸長を行わない通常の再生の場合の増分である1である。なお、増分rateは、操作子によって任意に設定することができるようにしてもよい。
【0026】
各addrの値に従って、波形メモリ2から各帯域の周波数情報及び振幅値情報が読み出され、対応する時間軸変換部4a−1乃至4a−mに供給され、波形の再合成が行われる。
【0027】
原オーディオ波形信号のサンプリング周期と同じ周期ごとに、SPHASEと各addrとが、アドレスの発生を行うと、例えば、tcompが1より大きく、即ち、時間圧縮の場合、SPHASEがMark(2)を指定したとき、各addrは、まだMark(2)に対応するmark(2)の位置には到達していない。この時、各addrとSPHASEとの値には偏差が生じている。この偏差を0にするように、各addrの値がmark(2)に強制的に修正される。これによって、Mark(2)から始まる区間について、これらに対応した各帯域の周波数情報及び振幅値情報に基づいて時間圧縮されたオーディオ波形信号が再合成され、再合成音が不自然になることはない。以下、同様にMark(2)以降の区間についても時間軸の圧縮された波形の再合成が行われる。
【0028】
同様にtcompが1よりも小さい場合、即ち時間軸の伸長が行われた場合、仮に各addrがmark(2)に到達しても、SPHASEはMark(2)には到達していない。そこで、各帯域ごとにループ期間を設け、各addrの値が各ループ期間の終端部のアドレスalt_E(各帯域のループ期間の終了点を総称して、alt_Eと記載する。)に到達すると、ここからalt_S(各帯域のループ期間の始端部を総称して、alt_Sと記載する。)まで、逆方向に周波数情報と振幅値情報とを読み出し、波形の再生を行う。alt_Sまで戻っても、SPHASEがMark(2)に到達していない場合、alt_Eに向かって順方向に周波数情報と振幅値情報とを読み出し、波形の再合成を行う。
【0029】
このようなループ期間での読み出しを行っている間に、SPHASEがMark(2)に到達すると、このときもSPHASEの値と各addrの値との間には偏差が存在する。そこで、この偏差を0にするように、各addrの値がMark(2)に対応するmark(2)に強制的に修正される。これによって、Mark(2)から始まる区間の時間伸長された波形の再合成が、Mark(2)に対応する各帯域のmark(2)の周波数情報及び振幅値情報に基づいて開始される。従って、Mark(2)から始まる区間の開始のタイミングが、各帯域とも一致しており、再合成音が不自然になることはない。Mark(2)以降の区間でも同様に時間軸の伸長が行われる。
【0030】
このような圧縮伸長の場合、各addrの増分rateが1であるので、オーディオ波形信号の再合成は、このオーディオ波形信号の各サンプリング値をサンプリング周波数で読み出すことによって行われている。従って、例えば、元のオーディオ波形信号が楽音信号の場合、アタック部が圧縮伸長されず、不自然な楽音となることはない。
【0031】
以下、DSP2及びCPU6の動作を詳細に説明する。図5は、CPU6のメインルーチンを示したものである。CPU6は、主に操作子10の状態を検出し、この検出状態に応じて各種設定を行うと共に、表示装置12に検出状態及び設定状態を表示する。
【0032】
まず、操作子10に含まれている再生モードスイッチが変化しているか否かを判断する(ステップS2)。再生モードはモード1とモード2とがある。モード2は、上述したような原オーディオ波形信号の新たな区間の再合成を開始するとき、各帯域の周波数情報及び振幅値情報のタイミングを一致させるモードであり、モード1は、このようなタイミングの修正を行わないモードである。
【0033】
再生モードスイッチに変化があると判断されると、変化した再生モードスイッチはモード1であるかモード2であるかを判断する(ステップS4)。再生モードスイッチがモード1であると、再生モードを1に設定し(ステップS6)、再生モードスイッチがモード2であると、再生モードを2に設定し(ステップS8)、表示装置12における再生モードの表示を、設定されたモードに変更する(ステップS10)。
【0034】
ステップS10に続いて、或いはステップS2において再生モードスイッチに変化がないと判断されたとき、操作子10に含まれている圧縮伸長操作子が変化しているか判断する(ステップS12)。圧縮伸長操作子に変化があると判断されると、圧縮伸長操作子の操作量に対応して圧縮伸長パラメータ値tcompを設定する(ステップS14)。次に、表示装置12におけるtcompの値の表示を更新する(ステップS16)。
【0035】
ステップS16に続いて、或いはステップS12において圧縮伸長操作子に変化が無いと判断されると、操作子10に含まれている発音開始操作子が変化しているか否かを判断する(ステップS18)。この操作子が変化していると判断されると、発音開始操作子の変化がオフからオンか(発音の開始か)或いはオンからオフか(発音の停止か)の判断が行われる(ステップS20)。オフからオンの変化であると判断されると、DSP発音開始処理を実行するように、DSP2に指示を送る(ステップS22)。同様にオンからオフの変化であると判断されると、DSP発音停止処理を実行するように、DSP2に指示を送る(ステップS24)。これによって、メインルーチンが終了する。なお、メインルーチンは、所定周期ごとに繰返し実行される。
【0036】
DSP発音開始処理では、初期設定を行う(ステップS26)。即ち、図6に示すように、原オーディオ波形信号の各サンプル値のアドレスを指定するアドレスカウンタSPHASEの値を、スタートアドレスであるWaveStartに設定する。次に、現在SPHASEが表しているアドレスが属する区間の先頭のマーク情報を記憶するレジスタmkの値をMark(1)にする。そして、初期設定以後にはアドレスカウンタSPHASEが現在発生しているアドレスが属する区間の1つ前の区間の先頭を表すマーク情報を記憶するレジスタmk_oldの値をMark(1)とする。次に各マーク情報を指定するためのカウンタnの値を1とする。発音が開始されているか否かを表すフラグkey_onを1に設定し、発音が開始されていることを示す。そして、ループ期間の振幅値情報と周波数情報を読み出すときの方向を指定するフラグdirを順方向に設定する。
【0037】
そして、DSP2の割込みを許可する(ステップS28)。これによって、DSP発音開始処理ルーチンは終了する。
【0038】
DSP発音停止処理ルーチンは、図7に示すように、発音を停止させるために、key_onを0に設定する(ステップS30)。次に、ゲート信号発生部4fにゲート信号の立ち下げを指示する(ステップS32)。これによって、ゲート4eの出力が徐々に小さくなり、消音される。
【0039】
DSPの割り込み処理ルーチンは、原オーディオ波形信号のサンプリング周波数に等しい周波数のクロック信号が、図示しないクロック発生器によって発生されるごとに実行される。このルーチンでは、図8に示すように、まず制御メイン処理を実行する(ステップS34)。制御メイン処理については、後述する。
【0040】
次に各帯域を指定するためのカウンタjの値を1とし(ステップS36)、後述するように、このカウンタjによって指定された帯域の時間軸変換処理を行う(ステップS38)。この時間軸変換処理についても後述する。カウンタjの値がmより大きいか判断し(ステップS40)、mより大きければ、割込み処理を終了し、mより大きくなければ、カウンタjの値を1つ増加させ、ステップS38を実行する。
【0041】
DSP制御メイン処理は、クロック信号が発生するごとに、主にSPHASEの値をtcompずつ進めるためのものである。図9に示すように、DSP制御メイン処理では、アドレスカウンタSPHASEがMark(1)乃至(4)のいずれかに到達したとき、即ち各区間の先頭に到達したときのみに、1とされるフラグsyll_flagが0以外であるか、まず判断する(ステップS42)。0以外であれば、これを0とする(ステップS44)。これに続いて、またはステップS42においてsyll_flagが0以外でないと、即ち0であると判断された場合、アドレスカウンタSPHASEの値が、mk以上であるか判断する(ステップS46)。当初、DSP発音開始処理において、SPHASEをWaveStartに、mkをMark(1)に設定しているので、始めてステップS46が実行されたときには、アドレスカウンタSPHASEの値が、mk以上であると判断される。
【0042】
アドレスカウンタSPHASEの値が、mk以上であると、SPHASEがWaveEnd以上であるか、即ち区間の最終アドレスを指定したか判断する。最終アドレスを指定していない場合、syll_flagを1とし、カウンタnの値を1つ増加させる(ステップS50)。即ち、SPHASEが或る区間の先頭に位置していることを表す。
【0043】
次に、mkをMark(n)に更新する(ステップS52)。これによって、mkの値は、次の区間の先頭を表す。ゲート信号発生部4gにゲート信号の立上を指示する(ステップS54)。これによって、ゲート4eから再生波形の出力が可能となる。
【0044】
そして、key_onが0であるか判断する(ステップS56)。key_onは上述したDSP発音停止処理が実行されたときのみに0となる。key_onが0でないと、アドレスカウンタSPHASEの値をtcompだけ増加させ(ステップS58)、この制御メイン処理を終了する。
【0045】
key_onが0であると、ゲート信号が0になっているか判断する(ステップS60)。ゲート信号は立ち下げを指示された後、徐々に低下していくので、実際にゲート信号が0となってゲート4eから出力が発生していないかどうか判断している。ゲート信号が0でないと判断されると、ステップS58が実行される。ゲート信号が0であると、DSPの割り込み処理を停止させ(ステップS62)、リターンする。従って、以後、再び割込みが許可されるまで、クロック信号が発生しても、割込み処理は実行されない。
【0046】
ステップS48において、SPHASEがWaveEnd以上であると判断されると、直ちにステップS62が実行される。
【0047】
ステップS46において、SPHASEがmk以上でないと判断されると、即ち次の区間の先頭に到達していないと判断されると、SPHASEの値がmk−α以上か判断される。即ち、次の区間の先頭から予め定めたアドレス距離αだけ手前のアドレスにSPHASEが到達しているか判断する(ステップS64)。αは、各区間の終了間際に、再生合成音の消音を開始する位置を決定するためのものである。SPHASEの値がmk−α以上でないと、ステップS56、S60、S58またはS56、S60、S62が実行される。
【0048】
SPHASEの値がmk−α以上であると、mkの値がmk_oldに等しくないか判断する(ステップS66)。或る区間の先頭のアドレスをSPHASEが指定したとき、ステップS52によってmkは次の区間の先頭のアドレスに更新されているので、初めてステップS66が実行されるときには、mkはmk_oldと不一致である。従って、ゲート信号発生部4gにゲート信号の立ち下げを指示する(ステップS68)。そしてmk_oldをmkの値に更新し(ステップS70)、ステップS56以降を実行する。従って、二度目以降にステップS66が実行される場合、ステップS66から直ちにステップS56以降が実行される。
【0049】
このようにDSP制御メインルーチンでは、クロック信号が発生するごとにSPHASEをtcompずつ増加させ、SPHASEが各区間の先頭のアドレスを指定したときだけ、syll_flagを1とし、ゲート4eから出力可能とし、SPHASEがmk−α以上のアドレスを初めて指定したとき、ゲート信号の立ち下げを開始している。
【0050】
図10に示すように、DSP時間軸変換処理では、設定されている再生モードが1であるか2であるかを判断する(ステップS72)。再生モード1である場合には、jカウンタによって指定された帯域のaddrをtcompだけ増加させ(ステップS74)、addrに従って振幅値情報と周波数情報とを読み出し、対応する時間軸変換部に供給する(ステップS76)。
【0051】
再生モード2が設定されている場合には、syll_flagが1であるか、即ち、いずれかの区間の先頭のアドレスを指定しているか判断する(ステップS78)。いずれかの区間の先頭のアドレスを指定している場合、その区間の先頭のアドレスをaddrに設定するため、addrをmark(n−1)に設定する(ステップS80)。
【0052】
これは、DSP制御メイン処理のステップS50においてsyll_flagを1としたときに(SPHASEが原オーディオ波形信号のいずれかの区間の先頭に到達したとき)、nを1進めているので、addrをmark(n)とすると、SPHASEが指定している区間の次の区間の先頭の振幅値情報と周波数情報とが記憶されているアドレスを指定することになる。従って、mark(n−1)として、SPHASEが指定している原オーディオ波形信号の区間の先頭に振幅値情報と周波数情報とが記憶されているアドレスを指定させている。
【0053】
このようにSPHASEが或る区間の先頭を指定したとき、addrもその区間の先頭の振幅値情報と周波数情報とが記憶されているアドレスに強制的に修正されているので、時間軸の圧縮、伸長いずれが行われている場合でも、新しい区間の再生合成は、その区間の先頭のサンプリング値の各帯域の周波数情報と振幅値情報とによって開始される。
【0054】
次に、ループ期間の先頭のアドレスを記憶するalt_startの値をjカウンタが指定する帯域のaltS(n−1)に、ループ期間の終了端のアドレスを記憶するalt_endの値をjカウンタが指定する帯域のaltE(n−1)に更新する(ステップS82)。これもaddrが指定するアドレスが属する区間のループ期間の先頭と終了点とを記憶するためである。次に、dirを順方向に設定し(ステップS84)、ステップS76を実行する。
【0055】
ステップS78において、syll_flagが1でないと判断されると、SPHASEは区間の先頭を指定していないので、dirが順方向であるか判断する(ステップS86)。順方向の場合、addrを予め定めたrateだけ増加させる(ステップS88)。rateとしては、上述したように例えば1が使用される。従って、ステップS76における振幅値情報と周波数情報との読み出しは、通常の速度で行われる。
【0056】
addrがalt_end以上であるか判断され(ステップS90)、alt_end以上でなければ、ステップS76が実行される。addrがalt_end以上であれば、ループ期間の終了点を超えたアドレスを指定しているので、addrの値を、現在のaddrの値とalt_endとの偏差(addr−alt_end)だけalt_endから減算した値に修正する(ステップS92)。次に、dirを逆方向に設定し(ステップS94)、ステップS76を実行する。
【0057】
ステップS92の演算は、ステップS94において逆方向にaddrの読み出し方向を変更するが、このとき順方向のときに、alt_endを超えてaddrが進んだ量だけ、ale_endから戻したアドレスから逆方向では、周波数情報と振幅値情報を読み出すためである。
【0058】
ステップS86において、逆方向であると判断されると、addrをrateだけ減少させる(ステップS96)。addrがalt_start以下であるか判断され(ステップS98)、alt_start以下でなければ、ステップS76が実行される。addrがalt_start以下であれば、ループ期間の先頭を超えたアドレスを指定しているので、addrの値を、現在のaddrの値とalt_startとの偏差(addr+alt_start)だけalt_startを増加させた値に修正する(ステップS100)。次に、dirを順方向に設定し(ステップS102)、ステップS76を実行する。
【0059】
ステップS100の演算は、ステップS102において順方向にaddrの読み出し方向を変更するが、逆方向においてalt_startを超えてaddrが進んだ量だけ、順方向ではale_startから戻したアドレスから周波数情報と振幅値情報を読み出すためである。
【0060】
このようにして、波形の再生が行われるので、原オーディオ波形信号の時間軸の圧縮伸長を行う場合に、原オーディオ波形信号の各区間の先頭部分を再合成するとき、当該区間の先頭部分の周波数情報及び振幅値情報に基づいて波形再生が行われるので、合成波形の音質を改善できる。
【0061】
上記の実施の形態では、操作子10に含まれる発音開始操作子の操作に応じて発音を開始、停止させるようにだけしたので、再合成される楽音のピッチは、原オーディオ波形信号のままであるが、例えば鍵盤を設け、この鍵盤からのノートナンバー情報に基づいてピッチを変更するようにすることもできる。また、この実施の形態では、再生モード1と再生モード2とを設けたが、場合によっては、再生モード1は不要である。再生モード1を設けない場合、波形メモリ2には、各区間におけるαの期間について振幅値情報及び周波数情報を記憶させる必要はない。
【0062】
【発明の効果】
以上のように、本発明によれば、第1の再生位置情報がマーク情報の位置に到達したとき、第2の再生位置情報を第1の再生位置情報に修正しているので、マーク情報のオーディオ波形信号の時間軸の圧縮伸長が、マーク情報に対応する周波数情報及び振幅値情報によって行われ、これ以降のオーディオ波形信号の時間軸の圧縮伸長も同様に対応する周波数情報及び振幅値情報によって行われるので、音質が改善される。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態の波形再生装置のブロック図である。
【図2】図1の波形再生装置におけるDSPが実現する位相ボコーダのブロック図である。
【図3】図1の波形再生装置の波形メモリ2に記憶されている各帯域の周波数情報と振幅値情報とこれらを発生する元になるオーディオ波形信号を示す図である。
【図4】波形メモリ2に記憶されている各種データを示す図である。
【図5】図1のCPUが実行するメインルーチンのフローチャートである。
【図6】DSPが実行するDSP発音開始処理ルーチンのフローチャートである。
【図7】DSPが実行するDSP発音停止処理ルーチンのフローチャートである。
【図8】DSPが実行する割込み処理ルーチンのフローチャートである。
【図9】図8の割り込み処理ルーチン中の制御メイン処理のフローチャートである。
【図10】図8の割り込み処理ルーチン中の時間軸変換処理のフローチャートである。
【符号の説明】
2 波形メモリ(波形データ記憶手段)
4 DSP(第1の再生位置情報発生手段と、第2の再生位置情報発生手段、波形信号合成手段、制御手段)。
Claims (1)
- 複数の区間からなる元のオーディオ波形信号の前記区間の境界となる時間軸上の位置を示す1つ以上のマーク情報と、前記元のオーディオ波形信号を複数の周波数帯域に分割した分割帯域ごとの波形信号の周波数情報及び振幅値情報とを、元のオーディオ波形信号の時間軸上の位置と対応して記憶し、前記分割帯域ごとの波形信号には、互いに異なるループ区間が設定されている波形データ記憶手段と、
前記元のオーディオ波形信号の時間軸上の位置を表わし、所望の速度で時間的に変化する第1の再生位置情報を発生する第1の再生位置情報発生手段と、
前記周波数情報及び振幅値情報の時間軸上の位置を表わし、前記所望の速度と異なる速度で時間的に変化する第2の再生位置情報を、前記分割帯域の波形信号ごとに異ならせて発生する第2の再生位置情報発生手段と、
第2の再生位置情報に従って、前記波形データ記憶手段から前記周波数情報及び振幅値情報を読み出し、その読み出された周波数情報及び振幅値情報に従って再生オーディオ波形信号を合成する波形信号合成手段と、
前記第1の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達する前に、前記第2の再生位置情報が前記ループ区間の終端に達した分割帯域についてそのループ区間を繰り返し読み出すように前記第2の再生位置情報を制御し、前記第1の再生位置情報が表わす位置が、前記波形データ記憶手段の前記マーク情報の表わす位置に達したとき、このマーク情報の表わす位置に対応する第2の再生位置情報に変更するように、前記第2の再生位置情報を制御する制御手段とを、
具備する波形再生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33142398A JP4087964B2 (ja) | 1998-11-20 | 1998-11-20 | 波形再生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33142398A JP4087964B2 (ja) | 1998-11-20 | 1998-11-20 | 波形再生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000155584A JP2000155584A (ja) | 2000-06-06 |
JP4087964B2 true JP4087964B2 (ja) | 2008-05-21 |
Family
ID=18243512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33142398A Expired - Fee Related JP4087964B2 (ja) | 1998-11-20 | 1998-11-20 | 波形再生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4087964B2 (ja) |
-
1998
- 1998-11-20 JP JP33142398A patent/JP4087964B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000155584A (ja) | 2000-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2866223B1 (en) | Automated music performance time stretch using audio waveform data | |
US6687674B2 (en) | Waveform forming device and method | |
US7396992B2 (en) | Tone synthesis apparatus and method | |
US6721711B1 (en) | Audio waveform reproduction apparatus | |
JP2007011217A (ja) | 楽音合成装置及びプログラム | |
US7816599B2 (en) | Tone synthesis apparatus and method | |
JP2007183442A (ja) | 楽音合成装置及びプログラム | |
JP4087964B2 (ja) | 波形再生装置 | |
JP4294179B2 (ja) | 波形再生装置 | |
JP2001282276A (ja) | 音声合成方法、装置および記憶媒体 | |
US5559298A (en) | Waveform read-out system for an electronic musical instrument | |
JP2000010565A (ja) | 波形デ―タ生成方法、波形デ―タ生成プログラムを記録した記録媒体、波形デ―タ生成装置および波形デ―タを記録した記録媒体 | |
US6207885B1 (en) | System and method for rendition control | |
JP4267114B2 (ja) | 波形処理装置 | |
JP3752855B2 (ja) | 波形データ作成方法 | |
JP4236570B2 (ja) | 波形再生装置および波形再生プログラム | |
JP3430719B2 (ja) | 楽音合成装置のパラメータ設定装置及び方法 | |
JP2001117595A (ja) | オーディオ信号波形処理装置 | |
JP2833485B2 (ja) | 楽音発生装置 | |
JP2939098B2 (ja) | 電子楽器 | |
JP3829707B2 (ja) | 波形生成装置及び方法 | |
JP2968456B2 (ja) | 楽音波形の形成方法及び形成装置 | |
JP2671825B2 (ja) | 波形合成装置 | |
JP3525492B2 (ja) | 楽音信号合成装置 | |
JP2003108143A (ja) | 波形再生装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051118 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070626 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070822 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071009 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071210 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080118 |
|
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: 20080219 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080222 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110228 Year of fee payment: 3 |
|
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: 20120229 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130228 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140228 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |