JP4236570B2 - 波形再生装置および波形再生プログラム - Google Patents

波形再生装置および波形再生プログラム Download PDF

Info

Publication number
JP4236570B2
JP4236570B2 JP2003415924A JP2003415924A JP4236570B2 JP 4236570 B2 JP4236570 B2 JP 4236570B2 JP 2003415924 A JP2003415924 A JP 2003415924A JP 2003415924 A JP2003415924 A JP 2003415924A JP 4236570 B2 JP4236570 B2 JP 4236570B2
Authority
JP
Japan
Prior art keywords
address
waveform
attack
real
pointer
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
Application number
JP2003415924A
Other languages
English (en)
Other versions
JP2005173423A (ja
Inventor
厚 星合
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Roland Corp
Original Assignee
Roland Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Roland Corp filed Critical Roland Corp
Priority to JP2003415924A priority Critical patent/JP4236570B2/ja
Publication of JP2005173423A publication Critical patent/JP2005173423A/ja
Application granted granted Critical
Publication of JP4236570B2 publication Critical patent/JP4236570B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、波形再生装置および波形再生プログラムに関し、特に、記憶されている波形をピッチまたはタイムを変更して再生することができる波形再生装置および波形再生プログラムに関する。
従来、記憶手段に記憶されている波形を読出す速度を変えることにより再生される波形のピッチを変更する波形再生装置が知られている。また、記憶手段に記憶されている波形を読出す際に、ピッチを変更せずに、波形を読出す位置の進行を遅くする場合には、波形の一部を繰り返し再生し、波形を読出す位置の進行を速くする場合には、波形の一部を読み飛ばしたりすることにより再生する時間(タイム)を制御すること(いわゆる時間軸圧縮伸張あるいはタイムストレッチ)ができる波形再生装置が知られている。
これらの波形再生装置では、波形の立ちあがり(アタック)部分は、波形の振幅やピッチが大きく変動しているため、繰り返し読み出すと不自然な楽音が形成されるので、アタックから所定の区間は、繰り返し読み出さないようにする必要がある。
また、タイムを変更する場合には、アタックの位置をタイムに比例したタイミングで発生しないと、タイミングがずれるので、アタックを読み出すタイミングを設定されるタイムに応じた時刻にする必要がある。
特開2000−56771号公報(特許文献1)には、楽音の波形を表す波形データをメモリに記憶するとともに、その波形上の繰り返し読出す位置や読み飛ばす位置に対応するアドレスを予めメモリに記憶しておき、任意に設定されるピッチとタイムに応じて、波形を読出す速度を変えるとともに、アドレス間の波形を繰り返し読出したり、飛び越して読出したりする波形再生装置が開示されている。
特開2000−56771号公報
しかしながら、特許文献1に開示されている波形再生装置では、予め繰り返し読み出すアドレスや、飛び越して読み出すためのアドレスなどの波形上の特定の位置に対応するアドレスを多数記憶しておく必要があるという問題点があった。
本発明は、上述した問題点を解決するためになされたものであり、予め波形の特定のアドレスを多数記憶する必要がなく、自然な楽音を再生することができる波形再生装置および波形再生プログラムを提供することを目的としている。
この目的を達成するために、請求項1記載の波形再生装置は、タイムレートおよびピッチレートを設定する設定手段と、波形を記憶する波形記憶手段と、前記波形記憶手段に記憶されている波形のアタック位置に対応するアタックアドレスを記憶するアタックアドレス記憶手段と、前記設定手段により設定されたピッチレートで歩進する実アドレスを発生する実アドレス発生手段と、前記設定手段により設定されたタイムレートで歩進する仮想アドレスを発生する仮想アドレス発生手段と、前記実アドレス発生手段が発生した実アドレスと前記仮想アドレス発生手段が発生した仮想アドレスとに基づいて、前記実アドレス発生手段が発生した実アドレスを所定のスキップ値だけ変更するアドレス変更手段と、そのアドレス変更手段により変更される変更前のアドレスと変更後のアドレスとの範囲に前記アタックアドレス記憶手段に記憶されたアタックアドレスが含まれないように制御する制御手段と、前記実アドレス発生手段により発生された実アドレスに基づいて前記波形記憶手段に記憶されている波形を読み出す波形読出し手段とを備え、前記制御手段は、仮想アドレスがアタックアドレスに達する時刻に実アドレスがほぼアタックアドレスに達するように前記スキップ値を設定するものである
この請求項1記載の波形再生装置によれば、設定されたピッチレートに応じて実アドレスを、タイムレートに応じて仮想アドレスをそれぞれ発生し、実アドレスを実アドレスと仮想アドレスとに基づいてスキップ値だけ変更する際、その変更されるアドレス範囲に波形のアタック位置に対応するアタックアドレスが含まれないように制御される。
請求項記載の波形再生プログラムは、波形を記憶する波形記憶手段とその波形のアタックアドレスを記憶するアタックアドレス記憶手段とを備えたコンピュータにより実行されるものであり、タイムレートおよびピッチレートを設定する設定ステップと、その設定ステップにより設定されたピッチレートで歩進する実アドレスを発生する実アドレス発生ステップと、その設定ステップにより設定されたタイムレートで歩進する仮想アドレスを発生する仮想アドレス発生ステップと、前記実アドレス発生ステップにより発生された実アドレスと前記仮想アドレス発生ステップにより発生された仮想アドレスとに基づいて、前記実アドレス発生ステップにより発生された実アドレスを所定のスキップ値だけ変更するアドレス変更ステップと、そのアドレス変更ステップにより変更される変更前のアドレスと変更後のアドレスとの範囲に前記アタックアドレス記憶手段に記憶されたアタックアドレスが含まれないように、前記仮想アドレスがアタックアドレスに達する時刻に前記実アドレスがほぼアタックアドレスに達するように前記スキップ値を設定する制御ステップと、前記実アドレス発生ステップにより発生された実アドレスに基づいて前記波形記憶手段に記憶されている波形を読み出す波形読出しステップとを、前記コンピュータに実行させるものである
請求項1記載の波形再生装置および請求項2記載の波形再生プログラムによれば、実アドレスを実アドレスと仮想アドレスとに基づいてスキップ値だけ変更する際、その変更されるアドレス範囲に波形のアタック位置に対応するアタックアドレスが含まれないように制御されるので、波形のアタックが繰り返し読出されることがなく、設定されたピッチレートまたはタイムレートで自然な楽音を発生することができるという効果がある。また、実アドレスと仮想アドレスを順次歩進させ、つぎのアタックアドレスをスキップしないように制御されるので、予め時間伸張するためのループ区間を設定しておいたり、時間圧縮を行うためのスキップ区間を設定しておく必要がないという効果もある。また、実アドレスと仮想アドレスを順次歩進させ、つぎのアタックアドレスをスキップしないように制御されるので、予め複数のアタック位置がある場合に、アタック間の長さを求めておいて、その長さに応じて時間軸を伸張したり圧縮する方法に比べ、予めアタック間の長さを求めておく必要がないという効果もある。
更に、請求項記載の波形再生装置および請求項記載の波形再生プログラムによれば、アドレス変更手段は、実アドレスが、ほぼ仮想アドレスとアタックアドレスの交点を通過するようにスキップ値を設定するので、再生される波形のアタックの時刻が、タイムで設定される時刻に合致した時刻になるという効果がある。
以下、本発明の好ましい実施例について、添付図面を参照して説明する。図1は、本発明による波形再生装置1の電気的構成を示すブロック図である。同図において、CPU10と、ROM20と、RAM30と、ユーザ入力される演奏データや設定データなどを、この波形発生装置を動作させるために操作される操作子群40と、ストレージ50と、D/A変換器60とはバスラインで相互に接続され、D/A変換器から出力された信号はローパスフィルタ70により処理されて出力される。
CPU10は、中央演算処理装置であり、ROM20は、このCPU10により実行される各種の制御プログラムや、そのプログラムを実行する際に参照される固定値データが格納されている。後述する図6〜図9に示すフローチャートを実行するプログラムは、このROM20に記憶されている。RAM30は、CPU10が制御プログラムを実行する際に必要な各種レジスタ群などが設定されたワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリア等を有しランダムにアクセスできる書き換え可能なメモリである。また、この実施例では、ストレージ50に記憶されている各種波形のうち、選択された波形がこのRAM30に形成されたリングバッファに順次書込まれ、このリングバッファに書込まれた波形が順次読出されるものである。
また、ストレージ50から順次波形がRAM30のリングバッファに書込まれる際には、波形のエンベロープレベルやピッチが検出され、エンベロープレベルが急激に大きくなった位置や、ピッチが変化した位置をアタック位置とし、RAM30に設定されたアタックアドレス記憶領域に、そのアタック位置に対応するリングバッファのアドレスをアタックアドレスとして順次記憶している。
また、アタックアドレスからの所定の区間をαとして設定するが、この区間αは、予め所定値として設定しておいてもよいし、エンベロープレベルが急激に大きくなり、最大値から所定の割合に至った時までを設定するなどとしてもよい。また、音声の場合は、発音が開始され、子音から母音に変わる区間としてもよい。
これらのアタックアドレスや区間αの長さ、または区間αの終了アドレスは、エンベロープレベルやピッチを検出する手段により検出されたものでもよいし、予め、波形を表示し、その波形からアタック位置や区間αを指定するようにしてもよい。
ストレージ50は、ハードディスクなどの大容量記憶装置であって、複数の波形を記憶している。これらの波形は、楽器の演奏や音声などを所定のサンプリング周期でサンプリングしたPCMデータであり、例えば4小節の長さのフレーズと呼ばれる音楽のひとかたまりのデータである。
操作子群40は、各種電子楽器のパラメータを設定する操作子群であり、図2を参照して後述する。
D/A変換器60は、CPU10から送られてくるデジタル振幅値を順次アナログ値に変換するもので、変換されたアナログ値は、ローパスフィルタ70により平滑されて出力される。なお、この実施例では、CPU10がサンプリング周期毎に振幅値をD/A変換器60へ出力するものとしたが、CPU10により波形振幅値が順次形成され、形成された振幅値は、一時バッファに記憶されて、専用回路によりサンプリング周期に従ってD/A変換器60へ出力されるようにしてもよい。
図2は、上記操作子群を表す図であり、ピッチノブ42は、ピッチレートをユーザが設定する操作子であり、タイムノブ44は、タイムレートをユーザが設定する操作子である。ここで、ピッチレートとは、波形を読出す速度であって、この速度を変えることにより再生される波形のピッチを変更する。このピッチレートが「1」の場合は、録音された時のサンプリング周波数と同じサンプリング周波数で、1アドレスずつ歩進して読出されるので、録音した波形のピッチと同じピッチで再生される。このピッチレートが「1」より大きい場合は、録音した速度より速い速度で再生され、ピッチを高くすることができる。逆にピッチレートが「1」より小さい場合は、録音した速度より遅い速度で再生され、ピッチを低くすることができる。この速度とは、アドレスが進行する速さであって、サンプリング周波数を変える方法とサンプリング周波数は一定で、サンプリング周期毎に歩進するアドレスの数値を変える方法が知られている。サンプリン周期が一定である方が、多チャンネル化が容易である。以下の説明では、この後者の方法を使用しているものとし、ピッチレートに応じて、アドレスが歩進される。アドレスの値が小数点以下を含む場合はその小数点以下の数値に応じた振幅値が補間により求めることができる。補間の方法に付いては、公知であるので説明を省く。
タイムレートは、波形を読出す読出し位置の進行速度である。例えば、記憶手段に10秒の波形録音したとし、これを、タイムレートを「1」として再生すると、やはり10秒で再生され、タイムレート「2」で再生すると5秒で再生され、タイムレートが「0.5」の場合には、再生時間は20秒となる。
次に、スタート/ストップスイッチ46は、記憶されている波形の再生の開始および停止を指示する操作子であり、再生が停止されているときにこのスイッチを押すと、再生が開始され、波形が再生されているときにこのスイッチを押すと、再生が停止される。
これら操作子以外に、ボリュウムを設定する操作子や、ストレージ50に記憶されている複数の波形の中から所望の波形を選択するための操作子が備えられているが、本発明の趣旨ではないので省略する。
図3および図4は、本発明の概略を説明するための図であり、図3は、ピッチレートがタイムレートより大きい場合、図4は、ピッチレートがタイムレートより小さい場合、それぞれにおいて、アタックアドレスと、実ポインタおよび仮想ポインタの関係を示している。ピッチレートにより設定されるアドレスを実ポインタと呼び、実線で表す。また、タイムレートにより設定されるアドレスを仮想ポインタと呼び、一点鎖線で表す。従って、ピッチレートは、実線で示される直線の傾きに、タイムレートは、一点鎖線で示される直線の傾きにそれぞれ該当する。
ピッチレートとタイムレートとがそれぞれ歩進し、実ポインタの値と仮想ポインタの値との差が、所定値(グレイン長)に達した場合には、実ポインタを仮想ポインタに強制的に変更し、再び、実ポインタは、ピッチレートで増加する。一方、仮想ポインタは、常にタイムレートで増加する。ここで、グレイン長は、例えば波形の1周期または数周期などとするのが良く、予め定められた値である。
図3(a)は、ピッチレートがタイムレートより大きい場合を示すもので、時刻t1では、実ポインタの示すアドレスと仮想ポインタの示すアドレスとの差がグレイン長に達し、実ポインタは、強制的に仮想ポインタとされる。しかし、読出される波形が不連続となってノイズが発生するので、この実ポインタが強制的に仮想ポインタとされた時からクロス長により設定される期間は、実ポインタにより読出される波形振幅値と強制的に変更されて増加する新たな実アドレスにより読み出される波形振幅値をクロスフェードさせる。このクロスフェード処理の詳細については、図5を参照しながら後述する。
なお、このピッチレートがタイムレートより大きい場合のクロスフェードする期間のステータスをREW(rewind)とし、ピッチレートがタイムレートより大きい場合もピッチレートがタイムレートより小さい場合も、実ポインタのみにより波形が読み出される状態のステータスをGOとする。
次に、時刻t2において、実ポインタの示すアドレスと仮想ポインタの示すアドレスとの差がグレイン長には達していないが、実ポインタの示すアドレスにクロス長に対応するアドレスを加算したアドレスが、アタックアドレスに達している。
このまま実ポインタを進めると、アタックアドレスを越えることになり、アタックを二度発音する、または、アタックを発音するタイミングが本来発音するタイミングより早くなる。そこで、アタックを読出すべきタイミングである仮想ポインタがアタックアドレスと交差する時刻に実ポインタがアタックアドレスを越えるように制御する必要がある。したがって、時刻t2と、仮想ポインタがアタックアドレスと交差する点を通る実ポインタの直線との交点であるアドレスA1に実ポインタを変更すればよいことになる。しかしながら、アドレスA1は、現在の実ポインタの示すアドレスと大きく離れているので、波形の変動が大きく、不自然になる場合があるので、この場合は現在の実ポインタをグレイン長だけ戻したアドレスA2とする。
次に、時刻t3において、再び実ポインタの示すアドレスと仮想ポインタの示すアドレスとの差がグレイン長には達していないが、実ポインタの示すアドレスにクロス長に対応するアドレスを加算したアドレスが、アタックアドレスに達する。この場合の、仮想ポインタがアタックアドレスと交差する点を通る実ポインタの直線との交点のアドレスA3は、実ポインタの示すアドレスからグレイン長を引いたアドレスより後に位置するので、実ポインタをA3とし、ピッチレートに従ってアドレスを歩進する。
アタックアドレスから所定の区間αは、波形が安定していないので、この区間では、実ポインタと仮想ポインタとの差がグレイン長に達していても、実ポインタを仮想ポインタに強制的に変更しないものとする。同図において、時刻t4では、実ポインタと仮想ポインタとの差がグレイン長に達し、仮想ポインタが区間αより後に位置しているので、実ポインタを強制的に仮想ポインタに変更し、以後同様に実ポインタはピッチレートで増加する。
図3(b)は、実ポインタがクロス長に対応するアドレスだけ進むとアタックアドレスに達する場合に、実ポインタを戻すスキップ長を求める演算式を説明するための図である。
クロス長をCL、ピッチレートをPR,タイムレートをTR、アタックアドレスをATとし、実ポインタがアタックアドレスからクロス長×ピッチレートのアドレスに達したときの実ポインタのアドレスをRP、その時の仮想ポインタのアドレスをIP、その時から実ポインタがアタックアドレスに達するべき時間をT、そしてスキップ長をSLとすると、
RP−SL+T×PR=AT (1)
IP+T×TR=AT (2)
(2)式からTを求め(1)式に代入してSLを求めると、
SL=(AT−IP)×PR/TR−(AT−RP) (3)
となる。
図4(a)は、ピッチレートがタイムレートより小さい場合を示すもので、時刻t1では、実ポインタの示すアドレスと仮想ポインタの示すアドレスとの差がグレイン長に達し、実ポインタは、強制的に仮想ポインタに変更される。ピッチレートがタイムレートより大きい場合と異なり、この場合は、仮想ポインタの方が実ポインタより先のアドレスを示している。同様に、この実ポインタが強制的に仮想ポインタに変更された時からクロス長により設定される期間は、実ポインタにより読出される波形振幅値と強制的に変更されて増加する新たな実アドレスにより読み出される波形振幅値をクロスフェードさせる。
なお、このピッチレートがタイムレートより小さい場合のクロスフェードする期間のステータスをFWD(forward)とする。
次に、時刻t2において、実ポインタの示すアドレスと仮想ポインタの示すアドレスと
の差がグレイン長には達していないが、仮想ポインタの示すアドレスに、仮想ポインタのクロス長に対応するアドレスを加算したアドレスが、アタックアドレスに達している。
このまま実ポインタを進めると、仮想アドレスがアタックアドレスに一致する時刻に実ポインタがアタックアドレスに達しないことになる。つまり、アタックを発音するタイミングが本来発音するタイミングより遅くなる。そこで、アタックを読出すべきタイミングである仮想ポインタがアタックアドレスと交差する時刻に実ポインタがアタックアドレスを越えるように制御する必要がある。そのために、時刻t2と、仮想ポインタがアタックアドレスと交差する点を通る実ポインタの直線との交点であるアドレスA1に実ポインタを変更する。
アタックアドレスから所定の区間αは、波形が安定していないので、この区間では、実ポインタと仮想ポインタとの差がグレイン長に達していても、実ポインタを仮想ポインタに強制的に変更しないものとする。同図において、時刻t3では、実ポインタと仮想ポインタとの差がグレイン長に達し、実ポインタが区間αより後に位置しているので、実ポインタを強制的に仮想ポインタに変更し、以後同様に実ポインタはピッチレートで増加する。
図4(b)は、仮想ポインタのクロス長に対応するアドレスを加算した仮想ポインタがアタックアドレスに達する場合に、実ポインタを先のアドレスへ進めるスキップ長を演算により求める式を説明するための図である。
図3(b)の場合と同様に、クロス長をCL、ピッチレートをPR、アタックアドレスをAT、実ポインタがアタックアドレスに達するべき時刻からクロス長を引いた時刻における実ポインタのアドレスをRP、そしてスキップ長をSLとすると、
RP+SL+CL×PR=AT (4)
よって、SL=AT−RP−CL×PR (5)
となる。
図5は、図3および図4において説明したクロス長の区間におけるクロスフェード処理を説明するための図である。ピッチレートの方がタイムレートより大きい場合に、実ポインタがアドレスA1に至ったとき仮想ポインタとの差がグレイン長に達したことなどによりステータスがGOからREWに変更され、実ポインタにより読出される波形の振幅値に乗算されるスロープ値を(a)に、実ポインタからスキップ長を引いたアドレスにより読出される振幅値に乗算されるスロープ値を(b)に示す。(a)、(b)は、横軸を同じアドレスとし、縦軸をスロープ値として表している。(a)では、アドレスA1以降は、アドレスの進行に従って、スロープレートに従ってスロープ値が減少し、クロス長に対応するアドレスに至ると「0」になる。一方、(b)では、アドレスA2以降は、アドレスの進行に従って、スロープレートに従ってスロープ値が増加し、クロス長に対応するアドレスに至ると「1.0」になり、以降「1.0」の値が維持される。
図5は、ステータスがREWの場合についてのものであるが、ステータスがFWDの場合は、先のアドレスにスキップされる点が異なるだけであるので、説明を省く。
図6〜図9は、図3から図5を用いて説明した処理をフローチャートで表したものである。
まず、図6は、CPU10が実行するメイン処理を表すフローチャートで、この装置の電源が投入されると起動されるものである。この処理で使用されるスタートフラグは、「1」のとき波形の再生が行われ、「0」のとき再生が行われないことを示す。
まず、初期設定として、スタートフラグを「0」に、ピッチレートおよびタイムレートを「1.0」に設定する(S1)。次にスタート/ストップスイッチ46が押されたか否かを判断する(S2)。スタート/ストップスイッチ46が押されたと判断した場合は(S2:Yes)スタートフラグが、「1」に設定されているか否かを判断する(S3)。スタートフラグが「1」に設定されている場合は(S3:Yes)、スタートフラグを「0」に設定し(S4)、スタートフラグが「0」に設定されている場合は(S3:No)、スタートフラグを「1」に設定し(S5)、ステータスをGOに設定して(S6)S7の処理へ進む。
S2のスタート/ストップスイッチ46が押されたか否かの判断処理で、スタート/ストップスイッチ46が押されていないと判断した場合は、S7の処理へ進む。
S7の処理では、ピッチノブ42が操作されてピッチレートが変更されたか否かを判断する。ピッチレートが変更された場合は(S7:Yes)、RAM30に記憶されているピッチレートを変更し(S8)、S9の処理へ進む。S7の処理でピッチノブ42が操作されていないと判断した場合は、S9の処理へ進む。
S9の処理では、タイムノブ44が操作されてタイムレートが変更されたか否かを判断する。タイムレートが変更された場合は(S9:Yes)、RAM30に記憶されているタイムレートを変更し(S10)、S12の処理へ進む。S9の処理でタイムノブ44が操作されていないと判断した場合は、S12の処理へ進む。
S12の処理では、スタートフラグが「1」に設定されているか否かを判断する。スタートフラグが「1」に設定されている場合は(S12:Yes)、時刻がサンプリング時刻に達しているか否かを判断する(S14)。ここで、サンプリング時刻とは、波形の振幅値を出力すべき時刻であって、図示しないカウンタが計時する時刻が、サンプリング周期(例えばサンプリング周波数を44.1kHzとした場合の周期)に達しているか否かを判断するものである。
時刻が、サンプリング時刻に達している場合は(S14:Yes)、波形再生処理を実行(S16)する。S12の処理において、スタートフラグが「1」に設定されていないと判断した場合(S12:No)と、S14の処理において、時刻がサンプリング時刻に達していないと判断した場合(S14:No)は、S18のその他の処理へ進む。
S16の波形再生処理については、図7〜図9のフローチャートを用いて後述する。S18のその他処理では、図示しない波形を選択する操作子が操作されたか否かを判断し、複数記憶されている波形の中から、所望の波形を選択したり、図示しない鍵盤が操作されたか否かを検出し、押鍵された鍵があればその鍵に対応する楽音を形成するよう制御を行うなどの処理が行われる。その他の処理の後、S2の処理へ進み、この装置の電源が切断されるまで上記一連の処理が実行される。
次に図7〜図9のフローチャートに従って、波形再生処理について説明する。図7は、ピッチレートがタイムレートより大きい場合の、ステータスを決定する処理であり、図8は、ピッチレートがタイムレートより大きくない場合のステータスを決定する処理であり、図9は、決定されたステータスに従って波形を読出して出力する波形読出し処理である。
図7の処理では、まず、ステータスはGOか否かを判断する(S22)。ステータスがGOでない場合は(S22:No)、図9に示すBの波形読出し処理へ進む。これは、図7の以下の処理では、ステータスをGOからREWへ、またはGOからFWDへ変更するか否かを判断する処理を行っているからであって、ステータスがGO以外のREWまたはFWDの場合には、ステータスの変更を行わないようにしているからである。
ステータスがGOの場合は(S22:Yes)は、ピッチレートがタイムレートより大きいか否かを判断する(S24)。ピッチレートがタイムレートより大きくない場合は(S24:No)、図8に示すフローチャートの処理に進む。ピッチレートがタイムレートより大きい場合は(S24:Yes)、実ポインタが示すアドレスとクロス長に対応するアドレスを加算したアドレスが次のアタックアドレスに達するか否かを判断する(S26)。実ポインタが示すアドレスとクロス長に対応するアドレスを加算したアドレスが次のアタックアドレスに達する場合は(S26:Yes)、スキップ長を式(3)に示す演算により求め(S28)、その演算により求められたスキップ長がグレイン長より大きいか否かを判断する(S30)。
スキップ長がグレイン長より大きい場合は(S30:Yes)、スキップ長をグレイン長とし(S32)、スキップ長がグレイン長より大きくない場合は(S30:No)、そのままS36の処理へ進む。S36の処理では、実ポインタの示すアドレスからスキップ長を引いたアドレスが、直前のアタックアドレスにαを加えたアドレスより大きいか否かを判断する。実ポインタの示すアドレスからスキップ長を引いたアドレスが、直前のアタックアドレスにαを加えたアドレスより大きい場合は(S36:Yes)、ステータスをREWに設定し(S38)、スロープ値を1.0に設定して(S40)図9に示すフローチャートの処理へ進む。実ポインタの示すアドレスからスキップ長を引いたアドレスが、直前のアタックアドレスにαを加えたアドレスより大きくない場合は(S36:No)、図9に示すフローチャートの処理へ進む。
S26の処理で、実ポインタが示すアドレスとクロス長に対応するアドレスを加算したアドレスが次のアタックアドレスに達していないと判断した場合は(S26:No)、実ポインタが示すアドレスから仮想ポインタが示すアドレスを引いた値がグレイン長より大きいか否かを判断する(S34)。実ポインタが示すアドレスから仮想ポインタが示すアドレスを引いた値がグレイン長より大きい場合は(S34:Yes)、S32の処理へ進み、実ポインタが示すアドレスから仮想ポインタが示すアドレスを引いた値がグレイン長より大きくない場合は(S34:No)、図9に示すフローチャートの処理へ進む。
図8は、ピッチレートがタイムレートより大きくない場合であって、まず、仮想ポインタが示すアドレスにクロス長に対応するアドレスを加算したアドレスが次のアタックアドレスに達するか否かを判断する(S42)。仮想ポインタが示すアドレスにクロス長に対応するアドレスを加算したアドレスが次のアタックアドレスに達する場合は(S42:Yes)、式(5)によりスキップ長を演算して(S44)、S52の処理へ進む。
一方、S42の処理で、仮想ポインタが示すアドレスにクロス長に対応するアドレスを加算したアドレスが次のアタックアドレスに達しない場合は(S42:No)、仮想ポインタから実ポインタを引いた値がグレイン長より大きいか否かを判断する(S48)。仮想ポインタから実ポインタを引いた値がグレイン長より大きくない場合は(S48:No)、図9に示すフローチャートの処理へ進み、仮想ポインタから実ポインタを引いた値がグレイン長より大きい場合は(S48:Yes)、スキップ長をグレイン長として(S50)、S52の処理へ進む。
S52の処理では、実ポインタの示すアドレスが直前のアタックアドレス+αより大きいか否かを判断する(S52)。実ポインタの示すアドレスが直前のアタックアドレス+αより大きい場合は(S52:Yes)、ステータスをFWDに設定し(S54)、スロープ値を「1.0」に設定し(S56)図9のフローチャートへ進む。S52の処理で実ポインタの示すアドレスが直前のアタックアドレス+αより大きくない場合は(S52:No)、アタックアドレスからαの区間内の波形を読出しているので、この区間ではスキップせず、図9のフローチャートへ進む。
次に図9のフローチャートに従って波形読出し処理について説明する。まず、実ポインタの示すアドレスをAとし(S60)、ステータスがREWか否かを判断する(S62)。ステータスがREWの場合は(S62:Yes)実ポインタからスキップ長を引いたアドレスをBとし(S64)、アドレスAから読出した振幅値にスロープ値を掛けた値とアドレスBから読出した振幅値に1.0からスロープ値を引いた値を掛けた値とを加算し、D/A変換器へ出力する(S66)。スロープ値からスロープレートを引いた値をスロープ値とし(S68)スロープ値が「0」より小さくなったか否かを判断する(S70)。スロープ値が「0」より小さくなった場合は(S70:Yes)、実ポインタを実ポインタ−スキップ長とし(S72)、ステータスをGOに変更する(S92)。このことにより、ステータスREWのクロス長の処理が終了し、ステータスがGOへ戻される。
S70の処理で、スロープ値が「0」より大きい場合は(S70:No)、まだステータスREWの区間を終了していない状態であり、S94の処理へ進む。
一方、S62の処理で、ステータスがREWではないと判断した場合は(S62:No)、ステータスがFWDか否かを判断する(S80)。ステータスがFWDである場合は(S80:Yes)実ポインタにスキップ長を加えたアドレスをBとし(S82)、アドレスAから読出した振幅値にスロープ値を掛けた値とアドレスBから読出した振幅値に1.0からスロープ値を引いた値を掛けた値とを加算し、D/A変換器へ出力する(S84)。次に、スロープ値からスロープレートを引いた値をスロープ値とし(S86)スロープ値が「0」より小さくなったか否かを判断する(S88)。スロープ値が「0」より小さくなった場合は(S88:Yes)、実ポインタを実ポインタにスキップ長を加えた値とし(S90)、ステータスをGOに変更する(S92)。このことにより、ステータスFWDのクロス長の処理が終了し、ステータスがGOへ戻される。S88の処理で、スロープ値が「0」より大きい場合は(S88:No)S94の処理へ進む。
S80の処理で、ステータスがFWDではないと判断した場合は(S80:No)、ステータスがGOであり、実ポインタの示すアドレスAの波形振幅値を読出して、D/A変換器へ出力し(S98)、S94の処理へ進む。
S94の処理では、実ポインタを実ポインタにピッチレートを加算した値とし、次に
仮想ポインタを仮想ポインタにタイムレートを加算した値として(S96)この処理を終了する。
以上説明したように、本発明によれば、記憶手段に記憶された波形を設定されたピッチあるいはタイムに応じて再生する場合に、アタック位置を繰り返し再生せずに自然な楽音を再生することができる。
なお、請求項1記載の実アドレス発生手段および請求項7記載の実アドレス発生ステップは、図9のフローチャートのS94の処理が該当し、請求項1記載の仮想アドレス発生手段および請求項7記載の仮想アドレス発生ステップは、図9のフローチャートのS96の処理が該当し、請求項1記載のアドレス変更手段および請求項7記載のアドレス変更ステップは、図9のフローチャートのS64およびS82の処理が該当し、請求項1記載の制御手段および請求項7記載の制御ステップは、図7および図8のフローチャートの処理が該当し、請求項1記載の波形読出し手段および請求項7記載の波形読出しステップは図9のフローチャートのS66、S84およびS98の処理が該当する。
以上、実施例に基づき本発明を説明したが、本発明は上述した実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
例えば、上記実施例では、ピッチレートを任意に設定するピッチノブとタイムレートを任意に設定するタイムノブとをそれぞれ設けたが、いずれか一方を備え、備えられていない方のパラメータについては、値を例えば「1」などの所定値に固定してもよい。
また、上記実施例では、回転式のピッチノブによりピッチレートが任意に設定されるものとしたが、鍵盤などの演奏操作子により、音高を指定し、その音高によりピッチレートが設定される、あるいは楽器等の規格であるMIDI情報により指定されるノート情報により指定される音高によりピッチレートが設定されるようにしてもよい。この場合、鍵盤等により指定されて再生される波形の音高と、その鍵盤等により指定された音高との比がピッチレートとして設定される。
また、上記実施例では、スタート/ストップスイッチを操作することにより、再生が開始または停止されるようにしたが、鍵盤などの演奏操作子が操作されることにより、ピッチが指定されると共に、再生が開始または停止されるようにしてもよい。
また、上記実施例では、実ポインタが仮想ポインタからグレイン長だけ離れた場合に、実ポインタを仮想ポインタに強制的に変更したが、これに変えて例えば、実ポインタが仮想ポインタからグレイン長の半分だけ離れた場合に、実ポインタをグレイン長だけ変更するようにしてもよい。
また、上記実施例では、実ポインタが仮想ポインタからグレイン長だけ離れた場合に、実ポインタを仮想ポインタに強制的に変更したが、これに変えて例えば、実ポインタがグレイン長の整数倍進んだ場合に、実ポインタを仮想ポインタに変更するようにしてもよい。
また、上記実施例では、実ポインタが、仮想ポインタがアタックアドレスに達する時刻にアタックアドレスを通るようにしたが、アタックアドレスは、人が聞いた場合にタイミングを感じる位置であって、波形のエンベロープレベルが急激に増加したタイミング、あるいはピッチが明らかに変化したタイミングではない場合もあるので、実ポインタは、仮想ポインタがアタックアドレスに達する時刻付近でアタックアドレスを通ればよい。換言すれば、仮想アドレスがアタックアドレスに達する時刻に、実アドレスが、ほぼアタックアドレスに達するように制御すればよい。
また、上記実施例では、実ポインタが、仮想ポインタとアタックアドレスの交点を通るようにスキップ長を演算し、その演算により求めたスキップ長がグレイン長より大きい場合は、スキップ長をグレイン長としたが、その演算により求めたスキップ長がグレイン長より大きい場合であっても、それほど大きくなければ、その演算で求めたスキップ長をスキップ長としてもよい。これは、実施例では、アドレスのスキップ長が大きいと音質の変化が大きく、不自然になる恐れがあるので、スキップ長がグレイン長を越えないようにしたが、スキップ長をグレイン長以下にしたために、スキップする回数が増えることにより不自然になる場合には、スキップ長をグレイン長より大きく設定してもよい。
本発明の波形再生装置の電気的構成を示したブロック図である。 操作子を説明するための図である。 ピッチレートがタイムレートより大きい場合の処理を説明するための図であ る。 ピッチレートがタイムレートより大きくない場合の処理を説明するための図 である。 クロスフェード処理を説明するための図である。 CPUにより実行されるメイン処理を表すフローチャートである。 ピッチレートがタイムレートより大きい場合のステータスを設定する処理を 表すフローチャートである。 ピッチレートがタイムレートより大きくない場合のステータスを設定する処 理を表すフローチャートである。 波形読出し処理を表すフローチャートである。
符号の説明
10 CPU
20 ROM
30 RAM
42 ピッチノブ
44 タイムノブ
46 スタート/ストップスイッチ

Claims (2)

  1. タイムレートおよびピッチレートを設定する設定手段と、
    波形を記憶する波形記憶手段と、
    前記波形記憶手段に記憶されている波形のアタック位置に対応するアタックアドレスを記憶するアタックアドレス記憶手段と、
    前記設定手段により設定されたピッチレートで歩進する実アドレスを発生する実アドレス発生手段と、
    前記設定手段により設定されたタイムレートで歩進する仮想アドレスを発生する仮想アドレス発生手段と、
    前記実アドレス発生手段が発生した実アドレスと前記仮想アドレス発生手段が発生した仮想アドレスとに基づいて、前記実アドレス発生手段が発生した実アドレスを所定のスキップ値だけ変更するアドレス変更手段と、
    そのアドレス変更手段により変更される変更前のアドレスと変更後のアドレスとの範囲に前記アタックアドレス記憶手段に記憶されたアタックアドレスが含まれないように制御する制御手段と、
    前記実アドレス発生手段により発生された実アドレスに基づいて前記波形記憶手段に記憶されている波形を読み出す波形読出し手段とを備え
    前記制御手段は、仮想アドレスがアタックアドレスに達する時刻に実アドレスがほぼアタックアドレスに達するように前記スキップ値を設定するものであることを特徴とする波形再生装置。
  2. 波形を記憶する波形記憶手段とその波形のアタックアドレスを記憶するアタックアドレス記憶手段とを備えたコンピュータにより実行される波形再生プログラムであって、
    タイムレートおよびピッチレートを設定する設定ステップと、
    その設定ステップにより設定されたピッチレートで歩進する実アドレスを発生する実アドレス発生ステップと、
    その設定ステップにより設定されたタイムレートで歩進する仮想アドレスを発生する仮想アドレス発生ステップと、
    前記実アドレス発生ステップにより発生された実アドレスと前記仮想アドレス発生ステップにより発生された仮想アドレスとに基づいて、前記実アドレス発生ステップにより発生された実アドレスを所定のスキップ値だけ変更するアドレス変更ステップと、
    そのアドレス変更ステップにより変更される変更前のアドレスと変更後のアドレスとの範囲に前記アタックアドレス記憶手段に記憶されたアタックアドレスが含まれないように、前記仮想アドレスがアタックアドレスに達する時刻に前記実アドレスがほぼアタックアドレスに達するように前記スキップ値を設定する制御ステップと、
    前記実アドレス発生ステップにより発生された実アドレスに基づいて前記波形記憶手段に記憶されている波形を読み出す波形読出しステップとを、前記コンピュータに実行させることを特徴とする波形再生プログラム。

JP2003415924A 2003-12-15 2003-12-15 波形再生装置および波形再生プログラム Expired - Fee Related JP4236570B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003415924A JP4236570B2 (ja) 2003-12-15 2003-12-15 波形再生装置および波形再生プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003415924A JP4236570B2 (ja) 2003-12-15 2003-12-15 波形再生装置および波形再生プログラム

Publications (2)

Publication Number Publication Date
JP2005173423A JP2005173423A (ja) 2005-06-30
JP4236570B2 true JP4236570B2 (ja) 2009-03-11

Family

ID=34735251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003415924A Expired - Fee Related JP4236570B2 (ja) 2003-12-15 2003-12-15 波形再生装置および波形再生プログラム

Country Status (1)

Country Link
JP (1) JP4236570B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010146624A1 (ja) * 2009-06-15 2010-12-23 パイオニア株式会社 音声信号処理装置のタイムスケーリング方法、音声信号処理装置のピッチシフト方法、音声信号処理装置およびプログラム
JP5807419B2 (ja) * 2011-07-15 2015-11-10 ヤマハ株式会社 信号処理装置

Also Published As

Publication number Publication date
JP2005173423A (ja) 2005-06-30

Similar Documents

Publication Publication Date Title
EP3373289B1 (en) Electronic musical instrument, musical sound generating method, and storage medium
JP5533892B2 (ja) 演奏装置
JP3008922B2 (ja) 楽音発生装置および楽音発生方法
JP3878485B2 (ja) 波形再生装置
JP4236570B2 (ja) 波形再生装置および波形再生プログラム
JP5141407B2 (ja) 楽曲再生装置
JP2004317819A (ja) 自動演奏装置
JP3933583B2 (ja) 電子楽器
JP4270102B2 (ja) 自動演奏装置及びプログラム
JP6531432B2 (ja) プログラム、音源装置及び音響信号生成装置
JP4315116B2 (ja) 電子音楽装置
JP3928725B2 (ja) 楽音信号発生装置及びレガート処理プログラム
JP5375869B2 (ja) 楽曲再生装置、楽曲再生方法及びプログラム
JP2007047307A (ja) 効果音生成装置
JP3095018B2 (ja) 楽音発生装置
JP4213835B2 (ja) 波形再生装置
JP4290113B2 (ja) 電子楽器および波形表示プログラム
JP4186855B2 (ja) 楽音制御装置及びプログラム
JP3617114B2 (ja) 電子楽器の自動演奏装置
JP2001215973A (ja) 楽音制御パラメータ生成方法、楽音制御パラメータ生成装置および記録媒体
JP5573465B2 (ja) 楽音生成装置
JP2005010462A (ja) 自動演奏装置及び自動演奏処理プログラム並びに自動演奏パターンデータを記録したコンピュータ読み取り可能な記録媒体
JP3862839B2 (ja) 波形圧縮伸長装置
JP4097785B2 (ja) 波形再生装置
JP4835433B2 (ja) 演奏パターン再生装置及びそのコンピュータプログラム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20061109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081006

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: 20081216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081216

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: 20111226

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131226

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees