(57)【特許請求の範囲】
【請求項１】
制御プログラムを記憶するメモリと、
前記制御プログラムを実行して、装置全体の動作の制御を行なうＣＰＵと、
波形データを記憶する波形記憶手段と、
前記ＣＰＵにより制御され、前記波形記憶手段から波形データを読み出して再生する読出再生部とを備えた波形データ再生装置であって、
前記読出再生部は、
順次進行する読出アドレスを生成する生成手段と、
生成された読出アドレスで波形記憶手段から波形データを読み出して再生する手段と、
ジャンプ元アドレスとジャンプ先アドレスとを記憶するアドレス記憶手段と、
読出アドレスが前記ジャンプ元アドレスに達したら、前記生成手段が生成する読出アドレスを、前記ジャンプ元アドレスに対応する前記ジャンプ先アドレスに移行させる手段とを備えており、
前記読出再生部が前記波形データの読み出し再生を行なっているとき、前記ＣＰＵが、
波形データの時間軸の伸縮を制御する時間軸制御データに基づいて、読み出し対象の波形データ中の波形サンプル単位の所定位置であるジャンプ元アドレスと該ジャンプ元アドレスに対応するジャンプ先アドレスとを前記アドレス記憶手段に順次設定する処理を実行することにより、読み出される波形データの時間軸伸縮制御を行なうことを特徴とする波形データ再生装置。
【請求項２】
請求項１に記載の波形データ再生装置であって、
前記ＣＰＵは、前記ジャンプ元アドレスとジャンプ先アドレスとを設定する処理において、
現在の読出アドレスが、設定されているジャンプ元アドレスに達する前に、少なくともその次のジャンプ元アドレスの設定を終えていることを特徴とする波形データ再生装置。
【請求項３】
請求項１に記載の波形データ再生装置であって、
前記波形記憶手段に記憶されている波形データには複数ビート分の波形データが含まれており、
前記ＣＰＵは、前記ジャンプ元アドレスとジャンプ先アドレスとを設定する処理において、前記ジャンプ先アドレスを、前記波形データの複数のビート先頭位置の各々に順次設定することを特徴とする波形データ再生装置。
【請求項４】
制御プログラムを記憶するメモリと、
前記制御プログラムを実行して、装置全体の動作の制御を行なうＣＰＵと、
波形データを記憶する波形記憶手段と、
前記ＣＰＵにより制御され、前記波形記憶手段から波形データを読み出して再生する読出再生部とを備えた波形データ再生装置であって、
前記読出再生部は、
順次進行する読出アドレスを生成する生成手段と、
生成された読出アドレスで波形記憶手段から波形データを読み出して再生する手段と、
前記波形データ中の波形サンプル単位で表したジャンプ先アドレスと該ジャンプ先アドレスに対応するジャンプ元アドレスとを、第１組、第２組、…、および第Ｎ組のＮ組記憶するアドレス記憶手段と、
前記生成手段に対し、まず、前記波形データの第１組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、読出アドレスが第１組のジャンプ元アドレスに至ったとき第２組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、読出アドレスが第２組のジャンプ元アドレスに至ったとき第３組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、…、読出アドレスが第Ｎ組のジャンプ元アドレスに至ったとき第１組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、…というように、前記Ｎ組のアドレスを巡回的に使用しつつ読出アドレスを移行させる手段とを
備えており、
前記読出再生部が前記波形データの読み出し再生を行なっているとき、前記ＣＰＵが、
前記アドレス記憶手段が記憶するＮ組のジャンプ先アドレスとジャンプ元アドレスのうち、ジャンプ元アドレスが前記移行させる手段によって読出アドレスの移行に既に使用されている第ｉ組のジャンプ先アドレスと第ｉ組のジャンプ元アドレスとのセットまたは第ｉ組のジャンプ元アドレスと第（ｉ＋１）組のジャンプ先アドレスとのセットに対し、波形データの時間軸の伸縮を制御する時間軸制御データに基づいて、次に用いるジャンプ先アドレスおよびジャンプ元アドレスを設定する処理を実行することにより、読み出される波形データの時間軸伸縮制御を行なうことを特徴とする波形データ再生装置。
【請求項５】
請求項４に記載の波形データ再生装置において、
前記ＣＰＵは、前記次に用いるジャンプ元アドレスおよびジャンプ先アドレスを設定する処理の際に、
前記次に用いるジャンプ元アドレスおよびジャンプ先アドレスを、前記アドレス記憶手段に、１セット分または２セット分ずつ設定することを特徴とする波形データ再生装置。
【請求項６】
請求項４に記載の波形データ再生装置において、
前記ＣＰＵは、前記次に用いるジャンプ元アドレスおよびジャンプ先アドレスを設定する処理を、
前記Ｎ組のうちの既に読み出しに使用されたアドレスの組が次に読み出しに使用されるまでの所定のタイミングで実行することを特徴とする波形データ再生装置。
【請求項７】
請求項１ないし６に記載の波形データ再生装置において、
前記ＣＰＵは、前記ジャンプ元アドレスとジャンプ先アドレスとを設定する処理に先立って、
前記波形データ中の各ビートの波形データの先頭位置を、それぞれ、各ビートのジャンプ先アドレスとして決定する過程と、
再生する波形データのサンプリング周波数とテンポと拍子とビートとに基づいて、１小節中の波形サンプルの数を求め、その波形サンプルの数を１小節のビートの数で均等に分割することにより整数部と分数部とを含む１ビート分のサンプル数を算出し、該整数部に対して該分数部に応じた調整を加えることにより各ビートの波形データのサンプル数を算出する過程と、
前記決定された各ビートの波形データの先頭位置に算出された各ビートのサンプル数を加算した位置を、それぞれ、各ビートのジャンプ元アドレスとして決定する過程と
を実行することを特徴とする波形データ再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、波形データを時間軸方向に伸縮して再生することができる時間軸可変の波形データ再生装置に関する。
【０００２】
【従来の技術】
従来より、時間軸制御が可能なサンプラが知られている。これは、サンプリング（録音）した波形データの再生を行なう際に時間軸方向に伸縮して再生することが可能なものである。また、テンポ同期が可能なサンプラが知られている。これは、ループモードにしたときに、そのループ波形をテンポ同期させることができる、すなわち曲のテンポが変化したときにその変化後のテンポに同期してループ波形を時間軸方向に圧縮伸張して再生できるようにしたものである。
【０００３】
一方、ディジタルデータを録音するディジタルレコーダにテンポマップの機能を加えたものが知られている。これは、新規にソングを作成するときに、そのレコーディングに先立って当該ソングにおけるテンポの変化を制御するテンポマップを作成するものである。テンポマップは、例えば、ソングの開始時のテンポはテンポ１００ＢＰＭ（ＢＰＭは１分間の４分音符の個数でテンポを表す単位）、第１０小節目からテンポ１２０ＢＰＭ、第１４小節目から再びテンポ１００ＢＰＭ、…というように、ソングの各範囲のテンポを予め設定するための画面である。これにより、ユーザは、ソング中の任意の範囲で任意のテンポ情報を設定できる。レコーディング時には、作成したテンポマップに応じたテンポのメトロノーム音を発生し、演奏者はそのメトロノーム音を聞きながら自分のパートの演奏を行なう。その演奏を当該パートに対応するトラックに録音する。このようにして、複数パートの各パートの演奏を順次行ない、演奏された楽音をそれぞれ異なるトラックに録音していく。全パートの演奏の録音が終わった後、複数トラックに録音された楽音をミックスダウンして、例えばステレオ２チャンネルの楽音を取得する。以上のようにして、テンポマップの設定にしたがうテンポで複数トラックのレコーディングを行なうことができる。
【０００４】
【発明が解決しようとする課題】
ところで、上述した時間軸制御が可能な従来のサンプラの方式としては、第１に、ＣＰＵが各波形サンプルを各サンプリング周期に配置することにより、時間軸方向の圧縮および伸張を行なうものがある。これは、元になる波形データを、テンポに応じて定められたある時間区間で再生するとき、その波形データを切り分けて、前記時間区間の各サンプリング周期でどのサンプルを読むかを決定して配置していくものである。これによれば、任意の精度で時間軸方向の伸縮を管理することができる。しかし、１秒ごとにサンプリング周波数に対応する数の波形サンプルについて時間軸制御処理を行なわなければならず、ＣＰＵの負荷が大きいという問題がある。
【０００５】
時間軸制御が可能なサンプラの方式として、第２に、ＣＰＵが音源に対してスライスされた各波形データ再生開始のトリガを供給し、音源は該トリガに応じて各波形データを再生するものがある。これによれば、ＣＰＵはトリガなどの波形データの再生を制御するデータだけを扱えばよいので（波形サンプル自体を扱わなくてよい）、ＣＰＵの負荷は小さい。しかし、ＣＰＵは波形データの時間軸制御以外にも様々な処理を行なっており、トリガのタイミングの精度を上げることは難しいという問題がある。
【０００６】
従来のテンポ同期が可能なサンプラでは、サンプリング周期の精度の時間軸制御を行なう場合、ディジタルレコーダのテンポマップに対するテンポ同期が徐々にずれてくるという問題がある。
【０００７】
この発明は、波形データを時間軸方向に圧縮あるいは伸張することができる時間軸可変の波形データ再生装置において、ＣＰＵの負荷を軽減し、また時間軸制御された波形データの再生が破綻することなく、さらにテンポマップで設定された場合のようにあらかじめ定められた所望のテンポからずれずに正確に時間軸制御して再生を行なうことができる波形データ再生装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この目的を達成するため、請求項１に係る発明は、制御プログラムを記憶するメモリと、前記制御プログラムを実行して、装置全体の動作の制御を行なうＣＰＵと、波形データを記憶する波形記憶手段と、前記ＣＰＵにより制御され、前記波形記憶手段から波形データを読み出して再生する読出再生部とを備えた波形データ再生装置であって、前記読出再生部は、順次進行する読出アドレスを生成する生成手段と、生成された読出アドレスで波形記憶手段から波形データを読み出して再生する手段と、ジャンプ元アドレスとジャンプ先アドレスとを記憶するアドレス記憶手段と、読出アドレスが前記ジャンプ元アドレスに達したら、前記生成手段が生成する読出アドレスを、前記ジャンプ元アドレスに対応する前記ジャンプ先アドレスに移行させる手段とを備えており、前記読出再生部が前記波形データの読み出し再生を行なっているとき、前記ＣＰＵが、波形データの時間軸の伸縮を制御する時間軸制御データに基づいて、読み出し対象の波形データ中の波形サンプル単位の所定位置であるジャンプ元アドレスと該ジャンプ元アドレスに対応するジャンプ先アドレスとを前記アドレス記憶手段に順次設定する処理を実行することにより、読み出される波形データの時間軸伸縮制御を行なうことを特徴とする。
【０００９】
請求項２に係る発明は、請求項１に記載の波形データ再生装置であって、前記ＣＰＵは、前記ジャンプ元アドレスとジャンプ先アドレスとを設定する処理において、現在の読出アドレスが設定されているジャンプ元アドレスに達する前に、少なくともその次のジャンプ元アドレスの設定を終えていることを特徴とする。
【００１０】
請求項３に係る発明は、請求項１に記載の波形データ再生装置であって、前記波形記憶手段に記憶されている波形データには複数ビート分の波形データが含まれており、前記ＣＰＵは、前記ジャンプ元アドレスとジャンプ先アドレスとを設定する処理において、前記ジャンプ先アドレスを、前記波形データの複数のビート先頭位置の各々に順次設定することをを特徴とする。
【００１１】
請求項４に係る発明は、制御プログラムを記憶するメモリと、前記制御プログラムを実行して、装置全体の動作の制御を行なうＣＰＵと、波形データを記憶する波形記憶手段と、前記ＣＰＵにより制御され、前記波形記憶手段から波形データを読み出して再生する読出再生部とを備えた波形データ再生装置であって、前記読出再生部は、順次進行する読出アドレスを生成する生成手段と、生成された読出アドレスで波形記憶手段から波形データを読み出して再生する手段と、前記波形データ中の波形サンプル単位で表したジャンプ先アドレスと該ジャンプ先アドレスに対応するジャンプ元アドレスとを、第１組、第２組、…、および第Ｎ組のＮ組記憶するアドレス記憶手段と、前記生成手段に対し、まず、前記波形データの第１組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、読出アドレスが第１組のジャンプ元アドレスに至ったとき第２組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、読出アドレスが第２組のジャンプ元アドレスに至ったとき第３組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、…、読出アドレスが第Ｎ組のジャンプ元アドレスに至ったとき第１組のジャンプ先アドレスを前記生成手段の読出アドレスに設定し、…というように、前記Ｎ組のアドレスを巡回的に使用しつつ読出アドレスを移行させる手段とを備えており、前記読出再生部が前記波形データの読み出し再生を行なっているとき、前記ＣＰＵが、前記アドレス記憶手段が記憶するＮ組のジャンプ先アドレスとジャンプ元アドレスのうち、ジャンプ元アドレスが前記移行させる手段によって読出アドレスの移行に既に使用されている第ｉ組のジャンプ先アドレスと第ｉ組のジャンプ元アドレスとのセットまたは第ｉ組のジャンプ元アドレスと第（ｉ＋１）組のジャンプ先アドレスとのセットに対し、波形データの時間軸の伸縮を制御する時間軸制御データに基づいて、次に用いるジャンプ先アドレスおよびジャンプ元アドレスを設定する処理を実行することにより、読み出される波形データの時間軸伸縮制御を行なうことを特徴とする。
請求項５に係る発明は、請求項４に記載の波形データ再生装置において、前記ＣＰＵは、前記次に用いるジャンプ元アドレスおよびジャンプ先アドレスを設定する処理の際に、前記次に用いるジャンプ元アドレスおよびジャンプ先アドレスを、前記アドレス記憶手段に、１セット分または２セット分ずつ設定することを特徴とする。
【００１２】
請求項６に係る発明は、請求項４に記載の時間軸可変の波形データ再生装置において、前記ＣＰＵは、前記次に用いるジャンプ元アドレスおよびジャンプ先アドレスを設定する処理を、前記Ｎ組のうちの既に読み出しに使用されたアドレスの組が次に読み出しに使用されるまでの所定のタイミングで実行することを特徴とする。
【００１３】
請求項７に係る発明は、請求項１ないし６に記載の波形データ再生装置において、前記ＣＰＵは、前記ジャンプ元アドレスとジャンプ先アドレスとを設定する処理に先立って、前記波形データ中の各ビートの波形データの先頭位置を、それぞれ、各ビートのジャンプ先アドレスとして決定する過程と、再生する波形データのサンプリング周波数とテンポと拍子とビートとに基づいて、１小節中の波形サンプルの数を求め、その波形サンプルの数を１小節のビートの数で均等に分割することにより整数部と分数部とを含む１ビート分のサンプル数を算出し、該整数部に対して該分数部に応じた調整を加えることにより各ビートの波形データのサンプル数を算出する過程と、前記決定された各ビートの波形データの先頭位置に算出された各ビートのサンプル数を加算した位置を、それぞれ、各ビートのジャンプ元アドレスとして決定する過程とを実行することを特徴とする。
【００１４】
【発明の実施の形態】
以下、図面を用いてこの発明の実施の形態を説明する。
【００１５】
図１は、この発明に係る時間軸可変の波形データ再生装置を適用したディジタルレコーダのブロック構成図である。このシステムは、中央処理装置（ＣＰＵ）１０１、フラッシュメモリ１０２、ランダムアクセスメモリ（ＲＡＭ）１０３、表示器１０４、フェーダ１０５、操作子１０６、ＰＣ入出力インターフェース（Ｉ／Ｏ）１０７、書込＆読出再生部１１１、波形メモリ１１２、ミキサ１１３、波形入力部１１４、波形出力部１１５、転送部１１６、バッファメモリ１１７、ＩＤＥ（Integrated Device Electromics）インターフェース１１８、ハードディスク１１９、ＣＤ−ＲＷ（CD-rewritable）ドライブ１２０、およびバスライン１３０を備える。
【００１６】
ＣＰＵ１０１は、このシステムの全体の動作を制御する処理装置である。フラッシュメモリ１０２は、ＣＰＵ１０１が実行する各種の制御プログラムやＣＰＵ１０１が使用する各種のデータなどを格納した不揮発性メモリである。フラッシュメモリ１０２は、書き換えが可能で、電源を切っても記憶された情報が失われない。ＲＡＭ１０３は、ＣＰＵ１０１が実行するプログラムのロード領域やワーク領域に使用する揮発性メモリである。表示器１０４は、このシステムの外部パネル上に設けられた各種の情報を表示するためのディスプレイである。フェーダ１０５は、このシステムの外部パネル上に設けられた各種パラメータの値設定用の操作子である。操作子１０６は、このシステムの外部パネル上に設けられた各種の操作子である。操作子１０６は、ユーザが操作するための複数のパッドを備えている。
【００１７】
ＰＣ  Ｉ／Ｏ１０７は、外部のＰＣ機器と接続するためのインターフェースである。書込＆読出再生部１１１は、後述するサンプラ機能を実現するための部分であり、外部から入力した波形データを波形メモリ１１２に書き込み、また波形メモリ１１２に記憶された波形データを読み出して再生する処理を行なう。波形メモリ１１２は、外部から入力した波形データ（サンプリングしたもの）を記憶する記憶装置である。
【００１８】
ミキサ１１３は、書込＆読出再生部１１１を介して入力した波形メモリ１１２からの波形データ、波形入力部１１４から入力した波形データ、および転送部１１６を介して入力したハードディスク１１９やＣＤ−ＲＷドライブ１２０からの波形データを、任意に組み合わせてミキシングする。ミキシング結果は、波形出力部１１５や転送部１１６に出力される。波形入力部１１４は、マイクから入力したアナログ楽音信号をディジタル波形データに変換してミキサ１１３に供給する。波形出力部１１５は、ミキサ１１３から供給される波形データを出力する。出力された波形データは、必要に応じて、アナログ楽音信号に変換され不図示のサウンドシステムにより放音される。
【００１９】
ミキサ１１３は、実際にはディジタルシグナルプロセッサ（ＤＳＰ）により構成されている。ミキサ１１３は、サンプリング周期単位で行なわれる時分割多重処理で複数トラックの処理を並行して実行する。ミキサ１１３に対する入出力は、基本的には１サンプリング周期で波形データの１サンプルを入出力するものである。ミキサ１１３に対して波形入出力を行なう周辺各部は、ミキサ１１３の時分割処理に同期して、波形データの入出力を行なう。例えば、所定のマイクから入力した演奏音を所定のトラックに録音する場合、当該マイクから入力して波形入力部１１４でディジタルデータに変換された波形データは、ミキサ１１３が当該トラックの処理を行なうタイムスレッドで波形入力部１１４からミキサ１１３に供給されるようにタイミングが調整される。同様に、ミキサ１１３から当該トラックの波形出力を行なうタイムスレッドで出力される波形データは、それが出力されるタイミングで転送部１１６が受け取り、当該トラックに対応するファイルにその波形データを書き込むように処理される。
【００２０】
転送部１１６は、ＣＰＵ１０１からの指示に応じて、ハードディスク１１９とバッファメモリ１１７間の転送およびバッファメモリ１１７とミキサ１１３間の転送（１サンプル／サンプリング周期×再生または録音トラック数分）を制御する。バッファメモリ１１７には、複数トラック分の記憶領域が用意されており、複数トラック分同時に録音・再生することができる。
【００２１】
１トラック分の録音は、以下のように行なう。転送部１１６は、当該トラックに録音すべき波形データの１サンプルが出力されるサンプリング周期のタイミングで、ミキサ１１３から当該サンプルを受け取り、バッファメモリ１１７の当該トラックの記憶領域に書き込む。バッファメモリ１１７の当該トラックの記憶領域に１クラスタ分のサンプルが溜まったら、それをハードディスク１１９の当該トラック記憶領域へ転送する。転送部１１６からハードディスク１１９への波形データの転送は、１クラスタ分のデータが溜まったときに行なわれ、ミキサ１１３と転送部１１６との間のサンプリング周期に同期した転送とは独立している。したがって、転送部１１６からハードディスク１１９に転送を行なっている間も、前述したバッファメモリ１１７への書き込み動作は継続される。
【００２２】
１トラック分の再生は、以下のように行なう。まず再生すべきトラックの先頭の２以上のクラスタのサンプルをハードディスク１１９から読み出してバッファメモリ１１７の当該トラックに対応する記憶領域に書き込む。転送部１１６は、ミキサ１１３が当該トラックの波形データを入力するサンプリング周期のタイミングで、バッファメモリ１１７から当該トラックの１サンプルを読み出してミキサ１１３に渡す。バッファメモリ１１７に１クラスタ分の空き領域（再生し終えたサンプルの記憶領域）ができたら、ハードディスク１１９からその空き領域へ後続の１クラスタ分のデータを転送する。ハードディスク１１９からバッファメモリ１１７へのデータ転送がミキサ１１３と転送部１１６との間のデータ転送と独立して行なわれることは、録音時と同様である。
【００２３】
ＩＤＥ  Ｉ／Ｏ１１８は、ハードディスク１１９およびＣＤ−ＲＷドライブ１２０と転送部１１６とを接続するためのインターフェースである。また、ＩＤＥＩ／Ｏ１１８は、ハードディスク１１９およびＣＤ−ＲＷドライブ１２０と、ＣＰＵ１０１、フラッシュメモリ１０２、およびＲＡＭ１０３との間のインターフェースでもある。ハードディスク１１９は、演奏データを格納するための外部記憶装置である。ＣＤ−ＲＷドライブ１２０は、ＣＤ、ＣＤ−Ｒ、あるいはＣＤ−ＲＷを挿入してデータを読み出しあるいは書き込む装置である。
【００２４】
上記転送部１１６によるレコーダ機能と書込＆読出再生部１１１を使用して実現するサンプラ機能について説明する。ＣＰＵ１０１は、上述したように転送部１１６によるレコーダ機能を用いてハードディスク１１９に書き込んだ波形データをＲＡＭ１０３上に読み出し、該ＲＡＭ１０３上でその波形データから波形メモリ１１２に記憶する波形データを作成する。これは、例えば、録音した波形データの前後を切り落として４分の４拍子の１小節分に合うようにするなどの処理を行なうものである。ＣＰＵ１０１の指示に応じて、作成した波形データを波形メモリ１１２へ書き込む。このシステムは複数のパッドを備えており、再生時に、各パッドを操作したとき、そのパッドに割り当てられた波形メモリ１１２上の波形データを読み出して再生する。このとき波形データの時間軸を圧縮伸張することが可能である。その時間軸の圧縮伸張は、ＣＰＵ１０１の指示に応じて書込＆読出再生部１０８が行なう。
【００２５】
図２は、図１の書込＆読出再生部１０８による時間軸可変の読出再生機能を実現するための構成を示す。書込＆読出再生部１０８は、ジャンプ先アドレスレジスタ群（ＤＥＳＴ１〜４）、ジャンプ元アドレスレジスタ群（ＴＡＲ１〜４）、フェードアウト開始点レジスタ群（ＦＯＵＴ１〜４）、フェード速度レジスタ（ＲＡＴＥ）２０４、セレクタ２０５、現在アドレスレジスタ２０６、アドレス加算器２０７、比較器２０８，２０９、カウンタ２１０、クロスフェードカーブ発生器２１１、および乗算器２１２を備えている。書込＆読出再生部１０８は時分割多重処理で複数チャンネルの処理を行なうことができるようになっているが、ここでは１チャンネル分の構成について示した。
【００２６】
レジスタ群２０１〜２０４は、このチャンネルで波形データを再生するときに使用するレジスタである。ＣＰＵ１０１は、これらのレジスタ群２０１〜２０４に値を設定することにより、所望の通りに時間軸制御された波形データを読み出せる。ジャンプ先アドレスレジスタ群（ＤＥＳＴ１〜４）２０１は、４つのジャンプ先アドレスの設定用レジスタである。ジャンプ元アドレスレジスタ群（ＴＡＲ１〜４）２０２は、４つのジャンプ元アドレスの設定レジスタである。フェードアウト開始点レジスタ群２０３は、フェードアウトを開始する位置を示す４つのフェードアウト開始点アドレスを設定するレジスタである。フェード速度レジスタ２０４は、フェードアウトの速度（レート）を設定するレジスタである。
【００２７】
それぞれ４つのレジスタから構成されるレジスタ群２０１〜２０３については、ｎ＝１〜４として、ＤＥＳＴｎとＴＡＲｎとＦＯＵＴｎを１セットとして使用する（全部で４セット）。ＤＥＳＴｎとＴＡＲｎとＦＯＵＴｎの１セットを、第ｎセットレジスタと呼ぶ。なお、レジスタと該レジスタに設定するデータとは同じ記号で呼ぶものとする。例えば、ジャンプ先アドレスを設定するレジスタＤＥＳＴ１に設定されたデータは、ジャンプ先アドレスＤＥＳＴ１と呼ぶ。
【００２８】
図２の各部の動作を説明する前に、波形データを時間軸方向で伸縮して再生するための読み出しアドレスの進め方について説明する。
【００２９】
図３（ａ）は、書込＆読出再生部１０８による波形メモリの読み出しアドレスの進行の様子を示すタイミング図である。３０１は読み出す対象の波形データを表わす。その上の右向き矢印３２１，３２２，３２３は、波形データ３０１から波形サンプルがサンプリング周期ごとに読み出されていく向きを示す。すなわち、この矢印の向きに読み出しアドレスが進行していく。なお、波形メモリからの波形データの読み出し速度は、各チャンネルごとに１サンプル／サンプリング周期で一定とする。また、読み出す波形データは固有のテンポ（サンプリングしたときのテンポ）を持っているが、このテンポは任意の値でよい。
【００３０】
上述したように、時間軸制御のためのパラメータとして、ＣＰＵ１０１は、各チャンネルごと（すなわち、各発音ごと）に、ジャンプ先アドレスＤＥＳＴ１〜４、ジャンプ元アドレスＴＡＲ１〜４、およびフェードアウト開始点アドレスＦＯＵＴ１〜４の４セットのデータとフェード速度ＲＡＴＥを１つ設定できる。波形データの読み出しは、ジャンプ先アドレスＤＥＳＴ１から開始する。矢印３２１に示すようにサンプリング周期ごとに１ずつ読み出しアドレスを進めて波形サンプルを読み出していき、ジャンプ元アドレスＴＡＲ１まで進んだとき、読み出しアドレスを次のジャンプ先アドレスＤＥＳＴ２に移行する。同様にして、ジャンプ先アドレスＤＥＳＴ２から読み出しアドレスを矢印３２２のように進め、次のジャンプ元アドレスＴＡＲ２まで進んだとき、さらに次のジャンプ先アドレスＤＥＳＴ３に移行する。このように読み出しアドレスを進めていき、ジャンプ元アドレスＴＡＲ４まで進んだら、読み出しアドレスを次のジャンプ先アドレスＤＥＳＴ１に移行する。読み出しアドレスをＴＡＲ４からＤＥＳＴ１にジャンプさせるときまでに、アドレスＤＥＳＴ１，ＴＡＲ１，ＦＯＵＴ１は次に使うデータに書き替えておく。このように、上述した４セットのアドレスレジスタのうちの、そこに書き込まれたアドレスによる読み出しが終了したレジスタについて、ＣＰＵ１０１がセット単位で順次更新していくことにより、図３に示すように読み出しアドレスが進行し、時間軸の制御された波形データが継続的に再生される。
【００３１】
図３の３３１は、矢印３２１のように読み出しアドレスを進行させて読み出していく波形データのフェードインおよびフェードアウトの様子を示す。ジャンプ先アドレスＤＥＳＴ１から読み出しを開始したとき、所定の速度でフェードインを行ない波形データを出力する。フェードアウトのタイミング３１１は、フェードアウト開始点アドレスＦＯＵＴ１に至ったときフェードアウトを開始し、ジャンプ元アドレスＴＡＲ１に至ったときそのフェードアウトが終了するように制御する。これ以降の読み出しの場合の波形データ３３２，３３３についても同様である。なお、フェードアウトの速度は、フェード速度レジスタ２０４の設定に基づく。
【００３２】
説明を簡単にするため、アドレスレジスタおよびそこに設定されるアドレスを示すＤＥＳＴ１〜４，ＴＡＲ１〜４，ＦＯＵＴ１〜４の記号は、それ以降の設定アドレスを表すために拡張して使用するものとする。例えば、ジャンプ先アドレスについては、ＤＥＳＴ１→ＤＥＳＴ２→ＤＥＳＴ３→ＤＥＳＴ４の順にレジスタを利用し、ＤＥＳＴ４の次に利用するアドレスは再びレジスタＤＥＳＴ１に設定したデータを利用することになるが、ＤＥＳＴ４の次に利用するアドレスをＤＥＳＴ５と表記する。それ以後のアドレスも順次、ＤＥＳＴ６，ＤＥＳＴ７，…と表記する。逆に言えば、ＣＰＵ１０１がジャンプ先アドレスとして順次計算したアドレスをＤＥＳＴｎ（ｎは正整数）とし、ＤＥＳＴ１→ＤＥＳＴ２→ＤＥＳＴ３→ＤＥＳＴ４→ＤＥＳＴ５→ＤＥＳＴ６→…→ＤＥＳＴｎ（ｎは正整数）→…というようにアドレスを進める際、アドレスＤＥＳＴｎはレジスタＤＥＳＴｎ’（ただし、ｎ’は、▲１▼ｎを４で割った余りが１〜３のときはその余り、▲２▼ｎが４で割り切れるときは４とする）に設定するということである。ＴＡＲｎ，ＦＯＵＴｎについても同様である。
【００３３】
図３（ｂ）は、波形データのテンポより引き伸ばして（テンポを遅くして）読み出す場合の読み出しの様子を示す。３４１〜３４３は波形データを示す。波形データは、あらかじめ拍単位に区切られているものとし、３４１が１拍目、３４２が２拍目、３４３が３拍目のデータを示す。テンポを遅くする場合でもアドレスの進め方は図３（ａ）で説明したのと同様である。ただし、ＤＥＳＴ１から読み出しを開始した１拍目のデータ３４１が終わる位置からフェードアウトし無発音の区間を経てＴＡＲ１までで１拍目の再生を終え、引き続きＤＥＳＴ２から読み出しを開始し、その２拍目のデータ３４２が終わる位置からフェードアウトし無発音の区間を経てＴＡＲ２までで２拍目の再生を終え、…というように再生を進める。ここでは、１拍目のデータ３４１の終了位置をＦＯＵＴ１とし、２拍目のデータ３４２の終了位置をＦＯＵＴ２とし、…というようにしているが、ＦＯＵＴの位置はこれに限らない。ただし、次の拍のアタック部が出力されない程度の位置までにフェードアウトする必要がある。
【００３４】
図４は、出力される波形データの例を示す。４０１は出力される波形データを示す。その中のＢＬＯＣＫ０，１，２，…は、それぞれ図３の３３１，３３２，３３３のようなジャンプ先アドレスＤＥＳＴｎからジャンプ元アドレスＴＡＲｎで読み出された波形データを示す。４０２は、ＢＬＯＣＫ０〜３を拡大した図である。各ＢＬＯＣＫで読み出された波形データが繋げられている。
【００３５】
次に、ＣＰＵ１０１が、ジャンプ先アドレス、ジャンプ元アドレス、およびフェードアウト開始点アドレスを設定する具体例を説明する。
【００３６】
（第１の具体例）
サンプリング周波数Ｆｓを４４．１ｋＨｚ、テンポ９０ＢＰＭ、４／４拍子、８ビートで、波形データの再生を行なう場合、ＣＰＵ１０１は、次のように１ビートのサンプル数を計算する。まず、テンポが９０ＢＰＭで４／４拍子であるから、
１小節の長さ＝（６０／９０）×４＝８／３秒
である。したがって、
１小節のサンプル数＝４４１００×（８／３）＝１１７６００サンプル
である。１小節が８ビートであるから、
１ビートの長さ＝１１７６００／８＝１４７００サンプル
である。そこで、ジャンプ先アドレスとジャンプ元アドレスとは、
ＴＡＲi−ＤＥＳＴi＝１４７００    ……（１）
の関係となる。
【００３７】
再生すべき波形データは、ＣＰＵ１０１が、サンプリングした波形を編集して用意する。したがって、例えば４／４拍子で使う８ビート分の波形、あるいは３拍子系で使う１２ビート分の波形というような波形データを生成できる。ここでは、再生すべき波形データが８ビート分のサンプル数がＭ（Ｍは８で割り切れる整数とする）のデータであり、この波形データを上述のテンポで１小節で再生するように時間軸制御するとする。まず、ＤＥＳＴ１に波形データの先頭アドレスを設定する。また、１小節８ビートであるから波形データの先頭からＭ／８サンプルごとにビート先頭位置があることになる。したがって、
ＤＥＳＴj+1＝ＤＥＳＴj＋Ｍ／８  （ｊ＝１〜７）    ……（２）
である。ＴＡＲiは（１）式より求めればよい。すなわち、テンポに応じた１ビート当たりの長さと、各ＤＥＳＴｉ（ビート先頭位置）とに基づいて、各ＴＡＲｉが算出される。以上より、１小節の再生を行なうためのジャンプ先アドレスＤＥＳＴiとジャンプ元アドレスＴＡＲi（ｉ＝１〜８）が計算できる。フェードアウト開始点アドレスＦＯＵＴiは、ジャンプ元アドレスＴＡＲiより所定サンプルだけ前に設定すればよい。ただし、図３（ｂ）のような場合は、ＦＯＵＴiとして各ビートの終了位置などを設定する。
【００３８】
（第２の具体例）
サンプリング周波数Ｆｓを４４．１ｋＨｚ、テンポ９５ＢＰＭ、４／４拍子、８ビートで、波形データの再生を行なう場合、ＣＰＵ１０１は、次のように１ビートのサンプル数を計算する。まず、テンポが９５ＢＰＭで４／４拍子であるから、
１小節の長さ＝（６０／９５）×４＝４８／１９秒
である。したがって、
１小節のサンプル数＝４４１００×（４８／１９）＝１１１４１０＋（１０／１９）サンプル    ……（１１）
である。上記（１１）式の整数部分１１１４１０から、
１ビートの長さ＝１１１４１０／８＝１３９２６＋（１／４）サンプル……（１２）
である。そこで、ジャンプ先アドレスとジャンプ元アドレスとを、
0003656906.tif 000002
・ＴＡＲｉ−ＤＥＳＴｉ＝１３９２７  （ｉ＝４，８のとき）    ……（１４）
の関係となるように設定する。これは、（１２）式における１／４サンプル分を調整するため、３回分の読み出しの１ビートの長さを１３９２６サンプルとし、次の１回分の読み出しの１ビートの長さを１３９２７サンプルとしたものである。同様にして、（１１）式における１０／１９サンプル分を調整するため、１９小節のうちの１０小節は１１１４１１サンプルを読み出し、残りの９小節は１１１４１０サンプルを読み出すようにする。例えば、１９小節単位で、２，４，６，８，１０，１２，１４，１６，１８，１９番目の小節（１０小節分）の８ビート目の読み出しサンプル数を＋１すればよい。
【００３９】
なお、ここではテンポの補正を最後の拍で行なうようにしたが、先頭の拍や途中の拍で行なってもよい。また、テンポの補正を１小節単位ではなく、複数小節単位、または任意の複数拍単位で行なってもよい。
【００４０】
図２に戻って、図３および図４で説明した時間軸可変の波形データ再生を行なう書込＆読出再生部１０８の動作について詳しく説明する。
【００４１】
ＣＰＵ１０１は、上述したように計算したジャンプ先アドレスＤＥＳＴ１〜４、ジャンプ元アドレスＴＡＲ１〜４、およびフェードアウト開始点アドレスＦＯＵＴ１〜４の４セットのデータとフェード速度ＲＡＴＥをレジスタ群２０１〜２０４に設定する。カウンタ２１０は、使用するレジスタセットを特定するｉ＝１〜４の値を保持するレジスタである。読み出しが開始されるときカウンタ２１０はｉ＝１に初期化されるから、始めは、レジスタ群２０１〜２０３から、第１セットレジスタのアドレス（ＤＥＳＴ１，ＴＡＲ１，ＦＯＵＴ１）がそれぞれ出力される。
【００４２】
読み出しが開始されると、セレクタ２０５は最初にジャンプ先アドレスレジスタ群２０１からの入力を選択出力する。いまレジスタ群２０１からは、レジスタＤＥＳＴ１に設定されたアドレスが出力されているから、このＤＥＳＴ１に設定されたアドレスがセレクタ２０５を介して現在アドレスレジスタ２０６に設定される。現在アドレスレジスタ２０６に設定されたアドレスは、波形メモリ１０９に入力し、当該アドレスから波形データが読み出し出力される。アドレス加算器２０７は、サンプリング周期ごとに、現在アドレス２０６の値をカウントアップし、その結果をセレクタ２０５に入力する。セレクタ２０５は、上述したように最初にＤＥＳＴ１を選択出力した後は、アドレス加算器２０７からの入力を選択出力する。したがって、現在アドレスレジスタ２０６の値は、ＤＥＳＴ１から順次カウントアップされ、これにより波形メモリのＤＥＳＴ１から波形データが１サンプルずつ読み出される（図３（ａ）の矢印３２１）。
【００４３】
クロスフェードカーブ発生器２１１は、読み出しが開始されてから、所定の速度でフェードインするような乗数を乗算器２１２に出力する。乗算器２１２は、読み出された波形サンプルにクロスフェードカーブ発生器２１１からの乗数を乗算して出力する。これにより、波形データの読み出し開始時のフェードインが実現される。
【００４４】
比較器２０９は、フェード開始点レジスタ群２０３からの出力とアドレス加算器２０７からの出力とを比較する。いまレジスタ群２０３からは、レジスタＦＯＵＴ１に設定されたアドレスが出力されている。これらが一致したとき、すなわち現在アドレスがＦＯＵＴ１に至ったとき、比較器２０９は一致信号を出力する。この一致信号は、クロスフェードカーブ発生器２１１に入力する。クロスフェードカーブ発生器２１１は、この一致信号により現在アドレスがＦＯＵＴ１に至ったことを検出し、この時点からレジスタ２０４に設定された速度でフェードアウトするような乗数を乗算器２１２に出力する。乗算器２１２は、読み出された波形サンプルにクロスフェードカーブ発生器２１１からの乗数を乗算して出力する。これにより、現在アドレスがＦＯＵＴ１に至ったとき以降のフェードアウトが実現される。
【００４５】
比較器２０８は、ジャンプ元アドレスレジスタ群２０２からの出力とアドレス加算器２０７からの出力とを比較する。いまレジスタ群２０２からは、レジスタＴＡＲ１に設定されたアドレスが出力されている。これらが一致したとき、すなわち現在アドレスがＴＡＲ１に至ったとき、比較器２０８は一致信号を出力する。この一致信号は、セレクタ２０５、カウンタ２１０、およびクロスフェードカーブ発生器２１１に入力する。これによりカウンタ２１０はｉ＝１から２にカウントアップするので、レジスタ群２０１からはレジスタＤＥＳＴ２に設定されたアドレス、レジスタ群２０２からはレジスタＴＡＲ２に設定されたアドレス、レジスタ群２０３からはレジスタＦＯＵＴ２に設定されたアドレスが出力される。また、比較器２０８からの一致信号を受けたセレクタ２０５は、ジャンプ先アドレスレジスタ２０１からの入力を選択出力する。これ以降の動作は、上述のｉ＝１の場合と同様である。カウンタ２１０がｉ＝１，２，３，４とカウントアップされるのに伴って処理が進み、ｉ＝４の後は再びｉ＝１に設定され、上述の処理を繰り返す。なお、ＣＰＵ１０１は順次ジャンプ先アドレスＤＥＳＴ１〜４、ジャンプ元アドレスＴＡＲ１〜４、およびフェードアウト開始点アドレスＦＯＵＴ１〜４のデータを書き替えていく。
【００４６】
以上のように処理を進めることにより、書込＆読出再生部１０８は、時間軸可変の波形データ再生を実現する。
【００４７】
図５は、時間軸制御レジスタ（ＤＥＳＴ１〜４，ＴＡＲ１〜４，ＦＯＵＴ１〜４）の更新タイミングを示す図である。５０１は読出される波形データを示す。ａ，ｂ，ｃ，…は、それぞれ時間軸制御レジスタに設定する１セットのデータ（ジャンプ先アドレス、ジャンプ元アドレス、およびフェードアウト開始点アドレス）を示す。
【００４８】
読み出しを開始するとき、ＣＰＵ１０１は、５２１に示すように４セット分のデータを時間軸制御レジスタに設定する。矩形５２１内に記載したａｂｃｄは、セットデータａ，ｂ，ｃ，ｄを、この順に、第１〜第４セットレジスタに設定したことを示す。矩形５２２，５２３，…についても同様である。読み出し開始タイミング５１１から、第１セットレジスタに設定されたセットデータａにしたがって波形データが読み出される。セットデータａにしたがう波形データの読み出しが終了すると、次のセットデータｂにしたがう波形データの読み出しに移行する。また、セットデータａにしたがう波形データの読み出しが終了したタイミングで割り込みが発生し、ＣＰＵ１０１は、この割り込みを契機として時間区間５１２で次のセットデータｅを第１セットレジスタに設定する（５２２）。同様にして、セットデータｂにしたがう波形データの読み出しが終了したタイミングで割り込みが発生し、ＣＰＵ１０１は、この割り込みを契機として時間区間５１３で次のセットデータｆを第１セットレジスタに設定する（５２３）。
【００４９】
セットデータの設定は、２セット単位で行なうこともできる。例えば、５５１に示すように４セット分のデータを設定した後、波形データの読み出しを開始し、セットデータａ，ｂにしたがう波形データ読み出しが終了したタイミングで割り込みを発生させ、時間区間５４２で２セット分のデータｅ，ｆを書き込む。これを繰返すことにより波形データを読出すことができる。
【００５０】
上記実施形態によれば、現在の読み出しアドレスがジャンプ元アドレスに達する前に、少なくともその次のジャンプ元アドレスの設定を終えているようにしているので、安定した動作が可能である。
【００５１】
なお、上記実施形態では、再生すべき波形データのサンプル数Ｍをビート数で割り切れる整数としたが、必ずしも割り切れる数でなくてもよい。割り算の結果１以下の分数が生じてしまった場合には、波形データの各ビート先頭位置に、生じてしまった分数に対応する補正をかけてやればよい。例えば、ビート数８で割った結果の余りが３で、分数３／８が生じてしまった場合は、８ビートの波形の３番目と６番目と８番目を＋１すればよい。
【００５２】
また、各ビートの先頭位置は、必ずしも等間隔である必要はない。ユーザが、各ビートの先頭位置を個別に指定できるようになっていてもよい。あるいは、波形データから音の立ち上がり位置を検出し、その検出結果に基づいて各ビートの先頭位置を自動的に決定するようにしてもよい。
【００５３】
各ビート位置が等間隔でない場合、テンポを変えつつ波形データを再生する際の各ビートの長さは、波形データの元のテンポ、再生するテンポ、および各ビート先頭位置間のサンプル数とに基づいて決定するとよい。すなわち、波形データのテンポを変更した場合でも、各ビート毎のサンプル数の比率が保たれるようにする。また、この場合も、再生される全ビート分の波形データのサンプル数がテンポとビート数に応じて決定されるサンプル数に合致するよう補正をかける必要がある。
【００５４】
さらにまた、各ビート位置が等間隔でない場合に、そのビート位置をテンポに応じた正確なビート位置に修正し（いわゆる波形データのクォンタイズ）、その修正後のビート位置を基準に時間軸の伸縮を行うようにしてもよい。
【００５５】
波形データのビート先頭位置のアドレスをビート数に基づいて毎回算出する必要はない。すなわち、波形データの再生時にビート先頭位置の計算するのではなく、各波形データ毎に予め決定しておいてその波形データに対応するデータとして記憶しておくのがよい。
【００５６】
上記実施形態では、レジスタ群２０１〜２０４を、ビートを単位として更新していたが、その代わりに、ジャンプを単位に更新を行なうようにしてもよい。すなわち、ジャンプ先アドレスＤＥＳＴｉとジャンプ元アドレスＴＡＲｉを組として更新を行なうのではなく、ジャンプ元アドレスＴＡＲｉとジャンプ先アドレスＤＥＳＴ（ｉ＋１）とを組にして、その組単位でレジスタの更新を行なうようにしてもよい。
【００５７】
【発明の効果】
以上説明したように、この発明によれば、時間軸制御データに基づいてジャンプ元アドレスとジャンプ先アドレスとを設定するだけで、読み出しアドレスを移行させながら読み出しを行なうことができるので、ＣＰＵで直接波形サンプルを扱う必要がなく、ＣＰＵの負荷が小さい。また、時間軸制御をサンプリング周期で行なうことができる。さらに、ジャンプ元アドレスとジャンプ先アドレスとの組を複数組記憶できるようにしているので、ＣＰＵによる制御が一時的に遅れても、時間軸制御された波形データの再生が破綻しない。また、再生すべき時間区間でのサンプル数と、各組のジャンプ先アドレスからジャンプ元アドレスまでの読み出しサンプル数の和にずれがあるときは、ジャンプ先アドレスからジャンプ元アドレスまでの読み出しを所定回数行なうごとに、その所定回数の読み出しの各組のジャンプ先アドレスからジャンプ元アドレスまでの読み出しサンプル数を調整して、ずれ量の補正を行なっているので、例えばディジタルレコーダのテンポマップで規定されたテンポからずれることなく、正確な時間軸制御が可能である。また、各拍ごとに補正をするのに比べて、補正に要する演算量を大幅に減少できる。
【図面の簡単な説明】
【図１】この発明に係る時間軸可変の波形データ再生装置を適用したディジタルレコーダのブロック構成図
【図２】書込＆読出再生部による時間軸可変の読出再生機能を実現するための構成図
【図３】書込＆読出再生部１０８による波形メモリの読み出しアドレスの進行の様子を示すタイミング図
【図４】出力される波形データの例を示す図
【図５】時間軸制御レジスタの更新タイミングを示す図
【符号の説明】
１０１…中央処理装置（ＣＰＵ）、１０２…フラッシュメモリ、１０３…ランダムアクセスメモリ（ＲＡＭ）、１０４…表示器、１０５…フェーダ、１０６…操作子、１０７…ＰＣ入出力インターフェース（Ｉ／Ｏ）、１１１…書込＆読出再生部、１１２…波形メモリ、１１３…ミキサ、１１４…波形入力部、１１５…波形出力部、１１６…転送部、１１７…バッファメモリ、１１８…ＩＤＥ（Integrated Device Electromics）インターフェース、１１９…ハードディスク、１２０…ＣＤ−ＲＷ（CD-rewritable）ドライブ、１３０…バスライン１３０。
【図１】
0003656906.tif 000003
【図２】
0003656906.tif 000004
【図３】
0003656906.tif 000005
【図４】
0003656906.tif 000006
【図５】
0003656906.tif 000007