(57)【特許請求の範囲】
【請求項１】
波形データが記憶される読み書き可能な波形メモリと、
該波形メモリから波形データを読み出して楽音を再生する再生手段と、
該再生手段における所定の周期毎における楽音再生用の波形データの読出処理と重複しない時分割化されたタイミングにおいて、制御手段の制御の基で、前記波形メモリへのアクセスを行うことができるアクセス手段とを備え、
録音された複数トラックの波形データを前記波形メモリ上にトラック毎に形成された複数のバッファに、前記アクセス手段がそれぞれ所定量ずつ波形データを転送し、前記再生手段が、前記複数のバッファから複数トラックの波形データを読み出して複数トラックの楽音を再生するようにされており、前記複数の各バッファは、バッファに記憶された波形データの再生時間が相互に同じになるようなバッファサイズとされて、前記アクセス手段は、該複数バッファから各々所定量の波形データが読み出され再生されたタイミングで、複数トラックの既に転送された波形データに続く所定量の波形データを複数トラックに対応する前記複数のバッファへ一括してデータ転送するようにしたことを特徴とするマルチトラック再生装置。
【請求項２】
前記再生手段は基準サンプリング周期毎に、前記複数のバッファから複数トラックの波形データを読み出して複数トラックの楽音を再生するようにされており、該基準サンプリング周期をカウントするサンプリングカウンタの計数値が所定値となった際に、前記複数のバッファへのデータ転送要求が発行され、該要求により、前記アクセス手段が前記複数バッファの各々への所定量の波形データの転送を行うようにしたことを特徴とする請求項１記載のマルチトラック再生装置。
【請求項３】
前記複数の各バッファは、バッファに記憶された波形データの再生時間が相互に同じになるように、記憶される波形データのサンプリング周波数に応じたバッファサイズとされていることを特徴とする請求項１記載のマルチトラック再生装置。
【請求項４】
前記複数の各バッファは、バッファに記憶された波形データの再生時間が相互に同じになるように、記憶される波形データのサンプルあたりのビット数に応じたバッファサイズとされていることを特徴とする請求項１記載のマルチトラック再生装置。
【請求項５】
トラック毎に波形データの再生開始タイミングと再生終了タイミングとが独立して制御可能な複数トラックの波形データを再生するマルチトラック再生装置であって、
前記複数トラックの各々に対応している複数のバッファと、
前記複数トラックにおいて再生される波形データを記憶する記憶手段と、
サンプリング周期毎に、複数のトラックに対応している前記複数のバッファから、それぞれ所定サンプル数の波形データを１サンプルずつ読み出し、読み出した波形データに基づいて前記複数トラックの楽音を再生する再生手段と、
該再生手段により所定時間分あるいは所定サンプル数の波形データが再生されたことを検出し、データ要求を発行する要求手段と、
該要求手段が発行するデータ要求に応じて、複数のトラックのそれぞれについて、既にバッファに転送した波形データに続く所定量の波形データを、前記記憶手段から対応する前記バッファに順次転送する転送手段と、
を備えたことを特徴とするマルチトラック再生装置。
【請求項６】
トラック毎に波形データの再生開始タイミングと再生終了タイミングとが独立して制御可能な複数トラックの波形データを再生するマルチトラック再生装置であって、
前記複数トラックの各々に対応している複数のバッファと、
前記複数トラックにおいて再生される波形データを記憶する記憶手段と、
サンプリング周期毎に、複数のトラックに対応している前記複数のバッファから、それぞれ所定サンプル数の波形データを１サンプルずつ読み出し、読み出した波形データに基づいて前記複数トラックの楽音を再生する再生手段と、
該再生手段により所定時間分あるいは所定サンプル数の波形データが再生されたことを検出し、データ要求を発行する要求手段と、
該要求手段が発行するデータ要求に応じて、複数のトラックのそれぞれについて、既にバッファに転送した波形データに続く所定量の波形データを、前記記憶手段から対応するバッファに順次転送する転送手段とを備えており、
前記データ要求の発行時、前記転送手段は、前記複数トラックのうち対応するタイミングで波形データを再生しないトラックについては波形データの転送を省略するようにしたことを特徴とするマルチトラック再生装置。
【請求項７】
前記複数トラックの再生開始時に、前記複数トラックのうちの有意な波形データの再生が他のトラックに遅れて開始されるトラックについても、前記再生手段による再生を同時に開始するとともに、前記転送手段は当該トラックの該有意な波形データの転送を、前記再生開始タイミングの直前のデータ要求より前のデータ要求に応じて開始するようにしたことを特徴とする請求項３または４記載のマルチトラック再生装置。
【請求項８】
複数トラックの波形データを録音するマルチトラック録音装置であって、
前記複数トラックの各々に対応している複数のバッファと、
波形データが録音される記憶手段と、
複数の波形データを入力する入力手段と、
サンプリング周期毎に、複数のトラックに対応している前記複数のバッファに、前記入力手段から入力される複数の波形データを、それぞれ１サンプルずつ書き込む書込手段と、
該書込手段により所定時間分あるいは所定サンプル数の波形データが書き込まれたことを検出し、データ要求を発行する要求手段と、
該要求手段が発行するデータ要求に応じて、複数のトラックの各トラックに対応している前記複数のバッファから、当該バッファに記憶されている波形データを順次読み出して、前記記憶手段に転送書込する転送手段と、
を備えたことを特徴とするマルチトラック録音装置。
【請求項９】
波形データが記憶される読み書き可能な波形メモリと、
該波形メモリから波形データを読み出して楽音を再生すると共に、複数トラックの波形データを録音可能な録音再生手段と、
該録音再生手段における所定の周期毎における楽音再生用の波形データの読出処理及び楽音録音用の波形データの書込処理と重複しない時分割化されたタイミングにおいて、制御手段の制御の基で、前記波形メモリへのアクセスを行うことができるアクセス手段とを備え、
前記録音再生手段は波形データを録音する際に、前記複数トラックの波形データを前記波形メモリ上に形成された複数のバッファに基準サンプリング周期に従ってそれぞれ書き込み、該複数のバッファに所定量の波形データが書き込まれた際に、前記アクセス手段が前記複数のバッファに書き込まれた所定量の波形データを録音用記憶手段に転送するようにされており、前記複数の各バッファは、波形データのバッファへの録音時間が相互に同じになるようなバッファサイズとされて、前記複数のバッファからの転送処理が一括して行われるようにしたことを特徴とするマルチトラック録音再生装置。
【請求項１０】
前記基準サンプリング周期をカウントするサンプリングカウンタの計数値が所定値となった際に、前記複数のバッファからのデータ転送要求が発行され、該要求により、前記アクセス手段が前記複数のバッファの各々からの所定量の波形データの転送を行うようにしたことを特徴とする請求項３記載のマルチトラック録音再生装置。
【請求項１１】
少なくとも１つの録音トラックの波形データを録音すると同時に、複数の再生トラックの波形データを再生することができるマルチトラック録音再生装置であって、
前記複数トラックの各々に対応している複数のバッファと、
波形データを読み出しおよび書き込みすることができる記憶手段と、
波形データを入力する入力手段と、
サンプリング周期毎に、録音用とされたトラックに対応している前記バッファに、前記入力手段から入力される複数の波形データを、１サンプルずつ書き込むとともに、複数の再生用とされたトラックに対応している前記バッファから所定サンプル数の波形データを１サンプルずつ読み出し、読み出した波形データに基づいて前記複数再生トラックの楽音を再生する書込読出手段と、
該書込読出手段により所定時間分あるいは所定サンプル数の波形データが処理されたことを検出し、データ要求を発行する要求手段と、
該要求手段が発行するデータ要求に応じて、録音用とされたトラックに対応している前記バッファから、当該バッファに記憶されている波形データを順次読み出して前記記憶手段に転送書込するとともに、複数の再生用とされたトラックのそれぞれについて、既にバッファに転送した波形データに続く所定量の波形データを、前記記憶手段から対応する前記バッファに順次転送する転送手段と、
を備えたことを特徴とするマルチトラック録音再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチトラックの再生や録音を行うことのできるマルチトラック再生装置、マルチトラック録音装置およびマルチトラック録音再生装置に関するものである。
【０００２】
【従来の技術】
従来より、発音しようとするピッチに応じて波形メモリから読み出した波形データに基づいて楽音を生成するようにした波形メモリ音源が知られている。このような波形メモリ音源において、１チャンネルの波形データを波形メモリに書き込み可能とした発明が提案されている（特開平１０−４９１７０号参照）。
また、ハードディスク等の大容量の記憶装置にストリーム波形データ等の２トラックの楽音データを記録し、再生できるようにした楽音データ録音再生装置が提案されている。従来提案されている楽音データ録音再生装置の概略構成を図９に示す。図９に示す楽音データ録音再生装置においては、２トラックの波形データの録音再生が可能とされている。
【０００３】
図９に示す楽音データ録音再生装置１２０において、外部回路１２２から供給された２トラックの波形データは、転送および録音／再生制御部１３１の制御の基で、例えばハードディスク（ＨＤ）からなる大容量メモリ１２１に録音されるようになる。この場合、入力された２トラックの波形データは、それぞれ２分されている録音バッファメモリ１３２ａ，１３２ｂに一次記憶されて大容量メモリ１２１に転送されて録音されるようになされている。録音バッファメモリ１３２ａ，１３２ｂは、それぞれ２分されてダブルバッファ構成とされている。すなわち、第１トラックの波形データが一次記憶される録音バッファメモリ１３２ａは第１バッファRBUF1Aと第２バッファRBUF1Bとに分割されており、第２トラックの波形データが一次記憶される録音バッファメモリ１３２ｂも同様に第１バッファRBUF2Aと第２バッファRBUF2Bとに分割されている。
【０００４】
第１トラックの波形データが録音される場合は、転送および録音／再生制御部１３１の制御の基で、録音バッファメモリ１３２ａの第１バッファRBUF1Aに順次書き込まれていく。第１バッファRBUF1Aへの書き込みが終了すると、引き続いて第２バッファRBUF1Bに波形データが書き込まれていくが、この際に第１バッファRBUF1Aの波形データが大容量メモリ１２１へ転送される。そして、第２バッファRBUF1Bへの書き込みが終了すると、引き続いて既に波形データが転送されている第１バッファRBUF1Aに波形データが書き込まれる。この際に、第２バッファRBUF1Bの波形データが大容量メモリ１２１へ転送される。第２トラックの波形データの録音についても録音バッファメモリ１３２ｂを使用して同様に行われ、このような動作が繰り返し行われることにより、２トラックの波形データを大容量メモリ１２１に録音することができるようになる。
【０００５】
このようにして録音された２トラックの波形データを再生する際には、ダブルバッファ構成とされた２トラック分の読出バッファ１３３ａ，１３３ｂと、この読出バッファ１３３ａ，１３３ｂから波形データが転送されるダブルバッファ構成とされた２トラック分の再生バッファ１３４ａ，１３４ｂとが使用される。そして、最終的に大容量メモリ１２１から読み出された波形データが再生音発生部１３５に供給されて、再生された楽音データがＤＡＣ１３６においてアナログ楽音信号に変換されてサウンドシステムから放音されるようになる。
【０００６】
この場合、図１０に示す動作タイミング図のように転送および録音／再生制御部１３１により制御されて再生が行われる。すなわち、図１０に示すように、再生に当たって再生準備スタートがタイミングt0でスタートされると、大容量メモリ１２１から読出バッファ１３３ａの第１バッファXBuf1Aに第１トラック（Ｔｒ．１）の波形データＳ１０が書き込まれ、続いて大容量メモリ１２１から読出バッファ１３３ａの第２バッファXBuf1Bに第１トラックの次の波形データＳ１１が書き込まれる。そして、転送後のタイミングt2において読出バッファ１３３ａの第１バッファXBuf1Aおよび第２バッファXBuf1Bに書き込まれた第１トラックの波形データＳ１０，Ｓ１１の所定量が、再生バッファ１３４ａの第１バッファPBuf1Aおよび第２バッファPBuf1Bにそれぞれ転送される。ここで、第１のトラックについては、バッファXBuf1A,BのサイズとバッファPBuf1A,Bのサイズは同じになっている。
【０００７】
このタイミングt2において、大容量メモリ１２１から読出バッファ１３３ｂの第１バッファXBuf2Aに第２トラック（Ｔｒ．２）の波形データＳ２０が書き込まれる。そして、転送後のタイミングｔ３において読出バッファ１３３ｂの第１バッファXBuf2Aに書き込まれた第２トラックの波形データＳ２０の所定量ずつが、再生バッファ１３４ｂの第１バッファPBuf2Aおよび第２バッファPBuf2Bにそれぞれ転送される。このタイミングt3において、書き込まれた波形データＳ１０の全てが転送された読出バッファ１３３ａの第１バッファXBuf1Aに大容量メモリ１２１から第１トラックの次の波形データＳ１２が書き込まれ、続くタイミングt4において、大容量メモリ１２１から読出バッファ１３３ｂの第２バッファXBuf2Bに第２トラックの続く波形データＳ２１が書き込まれる。これにより、再生の準備が完了する。ここで、第２のトラックについては、バッファXBuf1A,BのサイズがバッファPBuf1A,Bのサイズの４倍となっている。
【０００８】
再生スタートされると、再生バッファ１３４ａ，１３４ｂにおける第１バッファPBuf1A，PBuf2Aから第１トラックおよび第２トラックの波形データが読み出されて再生音発生部１３５に供給され、再生音発生部１３５において再生音が再生されていく。この場合、例えば第１トラックの波形データは４８ｋＨｚのサンプリング周波数とされ、第２トラックの波形データは３６ｋＨｚのサンプリング周波数とされているものとする。このため、再生バッファ１３４ｂにおける第１バッファPBuf2Aからの読み出しがタイミングt5で終了し、続いて再生バッファ１３４ｂにおける第２バッファPBuf2Bから連続して次の第２トラックの波形データが読み出される。同時に、再生バッファ１３４ｂにおける第１バッファPBuf2Aへのデータ転送要求が発生し、タイミングt5において次の波形データが読出バッファ１３３ｂの第１バッファXBuf2Aから再生バッファ１３４ｂにおける第１バッファPBuf2Aに転送される。
【０００９】
また、タイミングt6において再生バッファ１３４ａにおける第１バッファPBuf1Aからの読み出しが終了し、続いて再生バッファ１３４ａにおける第２バッファPBuf1Bから連続して次の第１トラックの波形データが読み出される。同時に、再生バッファ１３４ａにおける第１バッファPBuf1Aへのデータ転送要求が発生し、タイミングt6において次の波形データが読出バッファ１３３ａの第２バッファXBuf1Bから再生バッファ１３４ａにおける第１バッファPBuf1Aに転送される。この際に、読出バッファ１３３ａにおける第２バッファXBuf1Bの波形データが全て転送されて第２バッファXBuf1Bへのデータ書込要求が発生する。そこで、続く第１トラックの波形データＳ１３が大容量メモリ１２１から読み出されて、読出バッファ１３３ａにおける第２バッファXBuf1Bに書き込まれるようになる。
【００１０】
次いで、タイミングt7になると再生バッファ１３４ｂにおける第２バッファPBuf2Bからの読み出しが終了し、続いて再生バッファ１３４ｂにおける第１バッファPBuf2Aから連続して次の第２トラックの波形データが読み出される。同時に、再生バッファ１３４ｂおける第２バッファPBuf2Bへのデータ転送要求が発生し、タイミングt7において次の波形データが読出バッファ１３３ｂの第１バッファXBuf2Aから再生バッファ１３４ｂにおける第２バッファPBuf2Bに転送される。この際に、読出バッファ１３３ｂにおける第１バッファXBuf2Aの波形データ（バッファPBuf2A，PBuf2Bの４つ分に相当）が全て転送され第１バッファXBuf2Aへのデータ書込要求が発生する。そこで、この第１バッファXBuf2Aに続く第２トラックの波形データＳ２２が大容量メモリ１２１から読み出されて書き込まれるようになる。このような動作が図１０に示すように繰り返し行われて、大容量メモリ１２１から読み出された波形データが再生音発生部１３５に供給されて、再生された楽音データがＤＡＣ１３６においてアナログ楽音信号に変換されてサウンドシステムから放音されるようになる。
【００１１】
ところで、このような楽音データ録音再生装置１２０において再生されるトラックの内の一方のトラックが途中から再生される場合もある。この場合の、動作タイミング図を図１１に示す。図１１に示すタイミングは、第２トラックが再生中に第１トラックが再生スタートされる場合を示している。
第２トラックは既に再生されている。第１トラックが再生スタートされる前に第１トラックにおける再生準備スタートが開始され、タイミングt25近傍において大容量メモリ１２１から読出バッファ１３３ａの第１バッファXBuf1Aに第１トラックの波形データＳ１０が書き込まれる。この時、再生中の第２トラックにおいて読出バッファ１３３ｂの第１バッファXBuf2Aへのデータ書込要求が発生し、第１バッファXBuf2Aに大容量メモリ１２１から読み出された第２トラックの次の波形データＳ２１が書き込まれる。続いて、大容量メモリ１２１から読出バッファ１３３ａの第２バッファXBuf1Bに第１トラックの次の波形データＳ１１が書き込まれる。そして、タイミングｔ２８において読出バッファ１３３ａの第１バッファXBuf1Aおよび第２バッファXBuf1Bに書き込まれた第１トラックの波形データＳ１０，Ｓ１１の所定量が、再生バッファ１３４ａの第１バッファPBuf1Aおよび第２バッファPBuf1Bにそれぞれ転送される。
【００１２】
このようにして再生スタートの準備が完了し、タイミングt31のタイミングにて第１トラックの再生がスタートされる。再生スタートされると、再生バッファ１３４ａにおける第１バッファPBuf1Aから第１トラックの波形データが読み出されて再生音発生部１３５に供給され、再生音発生部１３５において再生音が再生されていくようになる。そして、タイミングt32で再生バッファ１３４ｂにおける第２バッファPBuf2Bからの読み出しが終了すると、続いて再生バッファ１３４ｂにおける第１バッファPBuf2Aから連続して次の第２トラックの波形データが読み出される。同時に、再生バッファ１３４ｂにおける第２バッファPBuf2Bへのデータ転送要求が発生し、タイミングt32において次の波形データが読出バッファ１３３ｂの第２バッファXBuf2Bから再生バッファ１３４ｂにおける第２バッファPBuf2Bに転送される。
【００１３】
この転送により、空いた第２バッファXBuf2Bへのデータ書込要求が発生して、続く第２トラックの波形データＳ２２が大容量メモリ１２１から読み出されて、読出バッファ１３３ｂにおける第２バッファXBuf2Bに書き込まれるようになる。さらに、タイミングt33において再生バッファ１３４ａにおける第１バッファPBuf1Aからの読み出しが終了し、続いて再生バッファ１３４ａにおける第２バッファPBuf1Bから連続して次の第１トラックの波形データが読み出される。同時に、再生バッファ１３４ａにおける第１バッファPBuf1Aへのデータ転送要求が発生し、タイミングt33において次の波形データが読出バッファ１３３ａの第２バッファXBuf1Bから再生バッファ１３４ａにおける第１バッファPBuf1Aに転送される。この際に、読出バッファ１３３ａにおける第２バッファXBuf1Bの波形データが全て転送されて第２バッファXBuf1Bへのデータ書込要求が発生する。そこで、続く第１トラックの波形データＳ１３が大容量メモリ１２１から読み出されて、読出バッファ１３３ａにおける第２バッファXBuf1Bに書き込まれるようになる。このような動作が図１１に示すように繰り返し行われて、大容量メモリ１２１から読み出された波形データが再生音発生部１３５に供給されて、再生された楽音データがＤＡＣ１３６においてアナログ楽音信号に変換されてサウンドシステムから放音されるようになる。
【００１４】
【発明が解決しようとする課題】
従来提案されている楽音データ録音再生装置１２０においては、２トラックの波形データの録音／再生を行うことができる。しかしながら、２つのトラックにおいて再生する際に、各トラックにおけるデータ書込要求やデータ転送要求の割込要求タイミングは、バッファメモリのサイズや読出レートにより応じたタイミングとなっていた。すなわち、図１０に示すようにトラック間における割込要求のタイミングが非同期となり、あるタイミングにおいて割込要求タイミングが集中するおそれが生じる。また、再生中に他のトラックの再生がスタートされる場合は、既に再生中のトラックとの同期をとる手段がなく、この場合においても、あるタイミングにおいて割込要求タイミングが集中するおそれが生じるようになる。このように割込要求の頻度が高く且つ変動的になると、割込要求を受けて動作する制御手段の動作が不安定になるおそれがあるという問題点があった。また、従来はトラック毎の割込要求であるので、単位時間あたりの割込要求の回数が多くなってしまう。すると、制御手段では１回の割込処理ごとにどうしても所定量のオーバーヘッドが生じてしまうことから、全体として処理速度が遅くなったり動作が不安定になるという問題があった。
【００１５】
そこで本発明は、マルチトラックの録音や再生を行っても制御手段への割込頻度が高く変動的にならないようにしたマルチトラック再生装置、マルチトラック録音装置およびマルチトラック録音再生装置を提供することを目的としている。
【００１６】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１のマルチトラック再生装置は、波形データが記憶される読み書き可能な波形メモリと、該波形メモリから波形データを読み出して楽音を再生する再生手段と、該再生手段における所定の周期毎における楽音再生用の波形データの読出処理と重複しない時分割化されたタイミングにおいて、制御手段の制御の基で、前記波形メモリへのアクセスを行うことができるアクセス手段とを備え、録音された複数トラックの波形データを前記波形メモリ上にトラック毎に形成された複数のバッファに、前記アクセス手段がそれぞれ所定量ずつ波形データを転送し、前記再生手段が、前記複数のバッファから複数トラックの波形データを読み出して複数トラックの楽音を再生するようにされており、前記複数の各バッファは、バッファに記憶された波形データの再生時間が相互に同じになるようなバッファサイズとされて、前記アクセス手段は、該複数バッファから各々所定量の波形データが読み出され再生されたタイミングで、複数トラックの既に転送された波形データに続く所定量の波形データを複数トラックに対応する前記複数のバッファへ一括してデータ転送するようにしている。
【００１７】
また、上記本発明の第１のマルチトラック再生装置において、前記再生手段は基準サンプリング周期毎に、前記複数のバッファから複数トラックの波形データを読み出して複数トラックの楽音を再生するようにされており、該基準サンプリング周期をカウントするサンプリングカウンタの計数値が所定値となった際に、前記複数のバッファへのデータ転送要求が発行され、該要求により、前記アクセス手段が前記複数バッファの各々への所定量の波形データの転送を行うようにしてもよい。
さらに、上記本発明の第１のマルチトラック再生装置において、前記複数の各バッファは、バッファに記憶された波形データの再生時間が相互に同じになるように、記憶される波形データのサンプリング周波数に応じたバッファサイズとされていてもよい。
さらにまた、上記本発明の第１のマルチトラック再生装置において、前記複数の各バッファは、バッファに記憶された波形データの再生時間が相互に同じになるように、記憶される波形データのサンプルあたりのビット数に応じたバッファサイズとされていてもよい。
【００１８】
次に、上記目的を達成することのできる本発明の第２のマルチトラック再生装置は、トラック毎に波形データの再生開始タイミングと再生終了タイミングとが独立して制御可能な複数トラックの波形データを再生するマルチトラック再生装置であって、前記複数トラックの各々に対応している複数のバッファと、前記複数トラックにおいて再生される波形データを記憶する記憶手段と、サンプリング周期毎に、複数のトラックに対応している前記複数のバッファから、それぞれ所定サンプル数の波形データを１サンプルずつ読み出し、読み出した波形データに基づいて前記複数トラックの楽音を再生する再生手段と、該再生手段により所定時間分あるいは所定サンプル数の波形データが再生されたことを検出し、データ要求を発行する要求手段と、該要求手段が発行するデータ要求に応じて、複数のトラックのそれぞれについて、既にバッファに転送した波形データに続く所定量の波形データを、前記記憶手段から対応する前記バッファに順次転送する転送手段とを備えている。
【００１９】
次に、上記目的を達成することのできる本発明の第３のマルチトラック再生装置は、トラック毎に波形データの再生開始タイミングと再生終了タイミングとが独立して制御可能な複数トラックの波形データを再生するマルチトラック再生装置であって、前記複数トラックの各々に対応している複数のバッファと、前記複数トラックにおいて再生される波形データを記憶する記憶手段と、サンプリング周期毎に、複数のトラックに対応している前記複数のバッファから、それぞれ所定サンプル数の波形データを１サンプルずつ読み出し、読み出した波形データに基づいて前記複数トラックの楽音を再生する再生手段と、該再生手段により所定時間分あるいは所定サンプル数の波形データが再生されたことを検出し、データ要求を発行する要求手段と、該要求手段が発行するデータ要求に応じて、複数のトラックのそれぞれについて、既にバッファに転送した波形データに続く所定量の波形データを、前記記憶手段から対応するバッファに順次転送する転送手段とを備えており、前記データ要求の発行時、前記転送手段は、前記複数トラックのうち対応するタイミングで波形データを再生しないトラックについては波形データの転送を省略するようにしている。
【００２０】
また、上記本発明の第２および第３のマルチトラック再生装置において、前記複数トラックの再生開始時に、前記複数トラックのうちの有意な波形データの再生が他のトラックに遅れて開始されるトラックについても、前記再生手段による再生を同時に開始するとともに、前記転送手段は当該トラックの該有意な波形データの転送を、前記再生開始タイミングの直前のデータ要求より前のデータ要求に応じて開始するようにしてもよい。
【００２１】
次に、上記目的を達成することのできる本発明のマルチトラック録音装置は、複数トラックの波形データを録音するマルチトラック録音装置であって、前記複数トラックの各々に対応している複数のバッファと、波形データが録音される記憶手段と、複数の波形データを入力する入力手段と、サンプリング周期毎に、複数のトラックに対応している前記複数のバッファに、前記入力手段から入力される複数の波形データを、それぞれ１サンプルずつ書き込む書込手段と、該書込手段により所定時間分あるいは所定サンプル数の波形データが書き込まれたことを検出し、データ要求を発行する要求手段と、該要求手段が発行するデータ要求に応じて、複数のトラックの各トラックに対応している前記複数のバッファから、当該バッファに記憶されている波形データを順次読み出して、前記記憶手段に転送書込する転送手段とを備えている。
【００２２】
上記目的を達成することのできる本発明の第１のマルチトラック録音再生装置は、波形データが記憶される読み書き可能な波形メモリと、該波形メモリから波形データを読み出して楽音を再生すると共に、複数トラックの波形データを録音可能な録音再生手段と、該録音再生手段における所定の周期毎における楽音再生用の波形データの読出処理及び楽音録音用の波形データの書込処理と重複しない時分割化されたタイミングにおいて、制御手段の制御の基で、前記波形メモリへのアクセスを行うことができるアクセス手段とを備え、前記録音再生手段は波形データを録音する際に、前記複数トラックの波形データを前記波形メモリ上に形成された複数のバッファに基準サンプリング周期に従ってそれぞれ書き込み、該複数のバッファに所定量の波形データが書き込まれた際に、前記アクセス手段が前記複数のバッファに書き込まれた所定量の波形データを録音用記憶手段に転送するようにされており、前記複数の各バッファは、波形データのバッファへの録音時間が相互に同じになるようなバッファサイズとされて、前記複数のバッファからの転送処理が一括して行われるようにしている。
【００２３】
また、上記本発明の第１のマルチトラック録音再生装置において、前記基準サンプリング周期をカウントするサンプリングカウンタの計数値が所定値となった際に、前記複数のバッファからのデータ転送要求が発行され、該要求により、前記アクセス手段が前記複数のバッファの各々からの所定量の波形データの転送を行うようにしてもよい。
【００２４】
次に、上記目的を達成することのできる本発明の第２のマルチトラック録音再生装置は、少なくとも１つの録音トラックの波形データを録音すると同時に、複数の再生トラックの波形データを再生することができるマルチトラック録音再生装置であって、前記複数トラックの各々に対応している複数のバッファと、波形データを読み出しおよび書き込みすることができる記憶手段と、波形データを入力する入力手段と、サンプリング周期毎に、録音用とされたトラックに対応している前記バッファに、前記入力手段から入力される複数の波形データを、１サンプルずつ書き込むとともに、複数の再生用とされたトラックに対応している前記バッファから所定サンプル数の波形データを１サンプルずつ読み出し、読み出した波形データに基づいて前記複数再生トラックの楽音を再生する書込読出手段と、該書込読出手段により所定時間分あるいは所定サンプル数の波形データが処理されたことを検出し、データ要求を発行する要求手段と、該要求手段が発行するデータ要求に応じて、録音用とされたトラックに対応している前記バッファから、当該バッファに記憶されている波形データを順次読み出して前記記憶手段に転送書込するとともに、複数の再生用とされたトラックのそれぞれについて、既にバッファに転送した波形データに続く所定量の波形データを、前記記憶手段から対応する前記バッファに順次転送する転送手段とを備えている。
【００２５】
このような本発明によれば、波形データが順次転送される複数のバッファから複数トラックの波形データを読み出して複数トラックの楽音を再生する際に、複数の各バッファは、転送される波形データのサンプリング周波数とサンプルあたりのビット数に対応するバッファサイズとされて、複数のバッファへの転送処理が一括して行うことができるようにしている。これにより、各トラック毎の割込要求をそれぞれ送出する必要をなくすことができ、制御手段への割込頻度を低減することができる。さらに、割込要求の送出タイミングが所定周期となることから、割込要求の発生タイミングが変動することを防止することができる。従って、制御手段の動作を安定化することができる。また、一括して転送処理を行えることから、複数のバッファの書込／読出の管理を行いやすくなる。
さらに、データ転送要求の発生タイミングが複数のバッファにおいて同期していることから、基準サンプリング周期をカウントするサンプリングカウンタの計数値が所定値となった際に、複数のバッファへのデータ転送の割込要求を送出することができるようになり、それぞれのバッファにデータ転送要求の検出および割込要求を送出するハードを設ける必要がなくすことができるようになる。
【００２６】
【発明の実施の形態】
本発明にかかるマルチトラック録音再生装置の機能を備えている本発明の実施の形態にかかる楽音生成装置の構成例を示すブロック図を図１に示す。
図１に示す楽音生成装置１おいて、ＣＰＵ１０は各種プログラムを実行することにより楽音生成装置１における楽音再生や録音の動作を制御する中央処理装置（Central Processing Unit）であり、タイマ１１は動作時の経過時間を示したり、特定の間隔でタイマ割込を発生するタイマであり、自動演奏の時間管理等に使用される。ＲＯＭ１２は、ＣＰＵ１０が実行する録音処理や楽音生成処理のプログラムや、各種データが格納されているＲＯＭ（Read Only Memory）である。ＲＡＭ１３は楽音生成装置１におけるシステムメモリであり、ＣＰＵ１０のワークエリア等が設定されるＲＡＭ（Random Access Memory）である。
【００２７】
また、ディスク１４はハードディスク、フレキシブルディスク、リムーバブルディスク等の記録媒体であり、波形メモリ２１にロードする波形データや録音されたストリーム波形データなどが格納されている。ドライブ１５はセットされたディスク１４の読出／書込を行うディスクドライブである。ＭＩＤＩインタフェース１６は、楽音生成装置１内部で作成したＭＩＤＩメッセージを外部へ送出したり、外部からのＭＩＤＩメッセージを受信するＭＩＤＩインターフェースである。ネットワークインタフェース１７は、ＬＡＮ（Local Area Network ）やインターネット、電話回線等の通信ネットワークを介してサーバコンピュータに接続するためのネットワークインターフェースである。パネルスイッチ（パネルＳＷ）１８は、楽音生成装置１のパネルに設けられている各種スイッチであり、これを操作することにより楽音生成装置１に各種指示を与えることができる。パネル表示器１９は、楽音生成時に各種情報が表示されるディスプレイである。
【００２８】
音源部２０は、ＣＰＵ１０からの発音開始指示に基づいて、波形メモリ２１から波形データ（波形サンプル）を読み出し、補間、エンベロープ付与、チャンネル累算（ミキシング）、および効果（エフェクト）付与などの処理を行って、楽音波形データとして出力している。音源部２０から出力された楽音波形データは、ＤＡＣ２３によりアナログ信号に変換され、サウンドシステム２４により放音される。波形メモリ２１は、ＳＤＲＡＭ等の高速のメモリにより構成されており、所定のレートでサンプリングされた多数の波形サンプルデータが格納されている。波形サンプルは、例えば１６ビットあるいは３２ビットで表され、アドレスは波形サンプル単位に付けられている。すなわち、１アクセスで１つの波形サンプルを読み出すようにしている。波形メモリ２１には、楽音の生成に先立ってディスク１４等から読み出された波形データが格納されている。
【００２９】
外部回路２２は、外部から音声や楽音等のオーディオデータを取り込むためのアナログ・ディジタル変換器（ＡＤＣ）、効果（エフェクト）付与処理を行なう外部ＤＳＰ、あるいはディジタルフィルタなどで構成されている。音源部２０から外部回路２２へ供給された波形データには、外部回路２２においてエフェクト付与処理やディジタルフィルタ処理が施されて、音源部２０へ戻される。音源部２０においては、戻された波形データが他のチャンネルの波形データにミキシングされて出力されるようになる。なお、外部回路２２は楽音生成装置１に内蔵してもよいし、楽音生成装置１の外部に設けてもよい。ディジタル・アナログ変換器（ＤＡＣ）２３は、音源部２０から最終的に出力されるステレオの楽音データをディジタルの楽音信号に変換してサウンドシステムから放音している。また、バス２５はアドレスバス、コントロールバス、データバスの各バスを備える前記した各部を相互接続しているＣＰＵバスである。
【００３０】
次に、本発明の実施の形態における楽音生成装置１の音源部２０の詳細構成を図２に示し、図３に音源部２０における動作タイミングを示す。この音源部２０において発音チャンネル数が１２８チャンネルとされている場合は、音源部２０は時分割１２８チャンネルで動作する。このため、音源部２０内の各部には、時分割を行なうための基準信号となる制御クロック信号やチャンネルカウント値などの制御信号が供給されている。
図２において、波形メモリ２１は読み書き可能な、例えばＳＤＲＡＭ（Synchronous DRAM）により構成されており、音源部２０において楽音を生成する際には予めディスク１４等から読み出した複数の比較的短期間のサンプリング波形が記憶されている。音源部２０では、この波形メモリ２１からチャンネル毎に時分割で読み出された波形データに基づいて各チャンネルの楽音を生成している。
【００３１】
楽音を生成する際に、楽音生成装置１におけるＣＰＵ１０は音源制御レジスタ３０に各種音源パラメータ情報を供給して、発音の開始指示を出す。この音源制御レジスタ３０にはＣＰＵ１０からアドレスバス（AD4）を介してアドレスが供給されると共に、データバス（DATA4）を介して各種データの授受が行われる。図２においては、データバス（DATA4）が複数本示されているが、説明の便宜上複数本として示しているだけであり、実際には１本のバスとされている。上記した音源パラメータ情報はＣＰＵ１０からデータバス（DATA4）を介して音源制御レジスタ３０に供給され、音源制御レジスタ３０においてＣＰＵ１０からアドレスバス（AD4）を介して与えられるレジスタアドレスで示されるレジスタに格納される。
【００３２】
発音開始指示と共に音源制御レジスタ３０に供給される音源パラメータ情報は、波形メモリ読み出し速度（楽音ピッチに対応）、波形メモリ読み出し区間、エンベロープパラメータ、ミキサ３３に対する設定情報、およびエフェクト用係数等とされる。この内の波形メモリ読み出し区間パラメータは、読み出す波形データの開始アドレスＡＳおよびそのデータ長ＬＰＡとされる。この場合、アドレスバス（AD4）上のレジスタアドレスで示される音源制御レジスタ３０内の特定のレジスタに、データバス（DATA４）を介して供給される音源パラメータが格納される。これにより、複数のそれぞれのレジスタに対応する音源パラメータがそれぞれ格納されていくようになる。
【００３３】
音源制御レジスタ３０および読出書込回路３１は、処理Ａ、処理Ｂ、取り込み処理、および補間処理、Ｘアクセス処理の５つの処理を行なう。各処理の概要および処理タイミングは次の通りである。処理Ａは、音源制御レジスタ３０から供給される波形データの開始アドレスＡＳおよびそのデータ長ＬＰＡやピッチＰＩＴＣＨ等の情報に基づいて、楽音生成のために時分割チャンネルタイミングにしたがって各発音チャンネルの波形データ読出アドレスを作成する処理である。各チャンネルのアドレスは、読出書込回路３１内の図示しないレジスタに保持される。発音チャンネル数が１２８チャンネルとされている場合は、処理ＡはＤＡＣ２３における１ＤＡＣ周期内において１２８チャンネル分の波形データ読出アドレスを作成する。なお、１２８チャンネルのうちの任意のチャンネルは波形メモリ２１に波形データを書き込むための書込チャンネルとして動作可能であり、書込チャンネルとして動作しているチャンネルについては、処理Ａにおいて波形データ書込アドレスが生成される。
【００３４】
この場合、図３に示すように１ＤＡＣ周期は前半と後半とに２分割されて、前半の期間では１ｃｈ〜６４ｃｈの波形データ読出アドレスが作成され（処理Ａ前半ｃｈ）、後半の期間では６５ｃｈ〜１２８ｃｈの波形データ読出アドレスが作成される（処理Ａ後半ｃｈ）。処理Ａでは、全チャンネルについて読出アドレスの生成を行ない、かつ、各チャンネルの読出アドレスの整数部の進行量に応じて波形データを読み出すべきチャンネルを決定し、決定されたチャンネルのチャンネル番号とそのチャンネルでの読み出すべきサンプル数（前記進行量に対応）を制御ＲＡＭに格納する。なお、補間処理における４点補間では連続する４サンプルの波形データが必要になるが、そのうちの過去に波形メモリ２１から読み出された波形データは波形バッファに既に保存されている。なお、１ｃｈ〜１２８ｃｈの各チャンネルの処理を行うタイムスロットは１ＤＡＣ周期を等分割して与えられる。すなわち、処理Ａにおける各チャネルに割り当てられるタイムスロットは１ＤＡＣ周期をＴとするとＴ／１２８とされ、このタイムスロットにおいて図示するようにチャンネル順に処理される。
【００３５】
処理Ｂは、読出書込回路３１において処理Ａよりほぼ１／２ＤＡＣ周期だけ遅れて実行される処理であり、後述するタイミングで処理Ａが終了したチャンネルについて行われる。処理Ｂは、制御ＲＡＭに読み出すべきチャンネルとして記憶されているチャンネルについて、当該チャンネルの読出アドレスに基づいて制御ＲＡＭに記憶されているアクセス回数だけ波形メモリをアクセスし、該回数分の波形サンプルを読み出している。この場合、図３に示すように１ＤＡＣ周期の前半の期間では１ｃｈ〜６４ｃｈについての波形メモリ２１からの読み出しが実行され（処理Ｂ前半ｃｈ）、後半の期間では６５ｃｈ〜１２８ｃｈについての波形メモリ２１からの読み出しが実行される（処理Ｂ後半ｃｈ）。この場合、処理Ａにおいて、波形データを読み出すべきチャンネルとしてチャンネル番号が制御ＲＡＭに格納されなかったチャンネルについては、処理Ｂの処理は行われない。処理Ｂが行われるタイムスロットは処理Ａの１タイムスロットの１／４とされ、１ＤＡＣ周期をＴとするとＴ／５１２とされる。１ＤＡＣ周期ごとに５１２回ということは、音源の１チャンネル当たり４サンプルの波形データを読み出すことができることを意味している。
【００３６】
そして、処理Ａにおいて記憶されたアクセス回数が複数であったチャンネル（すなわち、読出アドレスの整数部が複数進行したチャンネル）については、それぞれの波形データ読出アドレスに対する処理Ｂが該アクセス回数に対応したタイムスロット数ずつ順次実行されるようになる。例えば、図３の処理Ｂに示すように１ｃｈについては処理Ｂが１タイムスロットで行われ、２ｃｈについては処理Ｂは行われず、３ｃｈについては処理Ｂが３タイムスロットで行われ、４ｃｈについては処理Ｂは行われず、５ｃｈについては処理Ｂが１タイムスロットで行われ、６ｃｈについては処理Ｂは行われず、７ｃｈについては処理Ｂが２タイムスロットで行われ、発音されていない８ｃｈ〜６４ｃｈについては処理Ｂは行われないようになる。なお、書込チャンネルとして設定されたチャンネルについては、処理Ｂにおいて、波形データ書込アドレスが生成される。この書込チャンネルのアクセス回数は、それぞれ、常に１回とされる。
【００３７】
このように、処理Ｂが行われないチャンネルがあることから処理Ｂの前半期間においては７ｃｈの処理が終了してから後半期間が始まるまでのタイムスロットが空くようになると共に、後半期間においても後には次の前半期間が始まるまでにタイムスロットに空きが生じるようになる。そこで、この空いたタイムスロットを使用してＸアクセス回路４０によるＸアクセス処理が行われるようになる。なお、処理Ｂにおいてタイムスロットが空くまでは読出書込回路３１がセレクタ制御信号（CONT1）をセレクタ３５に与えて、セレクタ３５を読出書込回路３１側へ切り換えている。これにより、読出書込回路３１からアドレスバス（AD2）を介して波形データ読出アドレスを波形メモリ２１へ供給することができるようになる。また、処理Ｂにおいてタイムスロットに空きが生じるようになると、読出書込回路３１がセレクタ制御信号（CONT1）によりセレクタ３５をＸアクセス回路４０側へ切り換える。さらに、読出書込回路３１はセレクタ制御信号（CONT2）をＸアクセス回路４０へ与えて後述するＸアクセス処理を実行できるようにする。
【００３８】
また、取り込み処理は、読出書込回路３１により実行される処理であり、処理Ｂにより波形メモリ２１に供給された波形データ読出アドレスにしたがって読み出された波形データをデータバス（DATA1）を介して取り込み、各チャンネル別に内蔵する波形バッファに書き込む処理である。この波形バッファは、サンプル間補間用の波形データを記憶するバッファであり、各チャンネルごとに波形メモリ２１から読み出された最新の波形データを４サンプル分記憶する。処理Ｂにおいて波形データ読出アドレスが波形メモリ２１に供給されると、波形メモリ２１から直ちに波形データが読み出されることから、取り込み処理は、図３に示すように処理Ｂからわずか遅れて開始されるようになる。この場合、１つの波形データ読出アドレスで１つの波形サンプルが読み出されることから、図３の取り込み処理に示すように１ｃｈについては波形データが１サンプル分取り込まれ、２ｃｈについては波形データは取り込まれず、３ｃｈについては波形データが３サンプル分取り込まれ、４ｃｈについては波形データは取り込まれず、５ｃｈについては波形データが１サンプル分取り込まれ、６ｃｈについては波形データは取り込まれず、７ｃｈについて波形データが２サンプル分取り込まれ、８ｃｈ〜６４ｃｈについては波形データは取り込まれないようになる。なお、書込チャンネルとして設定されたチャンネルについては、この取り込み処理の代わりに、前記波形メモリ書込アドレスに対し、ミキサ３３から１ＤＡＣ周期ごとに１サンプルずつ供給される波形データを書き込む書込処理が行われる。
【００３９】
このように、波形データが取り込まれないチャンネルがあることから取り込み処理の前半期間においては７ｃｈの処理が終了してから後半期間が始まるまでのタイムスロットが空くようになると共に、後半期間においても後には次の前半期間が始まるまでのタイムスロットに空きが生じるようになる。そこで、この空いたタイムスロットを後述するＸアクセス処理を行うＸアクセス回路４０が波形メモリ２１にアクセスする際のタイムスロットとして割り当てるようにする。なお、取り込み処理における１タイムスロットは処理Ｂの１タイムスロットと同様とされ、１ＤＡＣ周期をＴとするとＴ／５１２とされる。なお、取り込み処理においてタイムスロットが空くまでは読出書込回路３１がセレクタ制御信号（CONT1）をセレクタ３５に与えて、セレクタ３５を読出書込回路３１側へ切り換えている。これにより、波形メモリ２１から読み出した波形データをデータバス（DATA1）、セレクタ３５およびデータバス（DATA2）を介して読出書込回路３１の波形バッファに取り込むことができるようになる。また、取り込み処理においてタイムスロットに空きが生じるようになると、読出書込回路３１がセレクタ制御信号（CONT1）によりセレクタ３５をＸアクセス回路４０側へ切り換える。さらに、読出書込回路３１はセレクタ制御信号（CONT2）をＸアクセス回路４０へ与えて後述するＸアクセス処理を実行できるようにする。
【００４０】
補間処理は、読出書込回路３１における図示しない補間回路により実行される処理であり、時分割チャンネルタイミングにしたがって、波形バッファから各チャンネルの必要とする波形サンプルを読み出し、２点補間や４点補間を行なった波形データを出力する処理である。この場合、波形バッファには取り込み処理により取り込まれた波形データが格納されていることから、補間処理は取り込み処理より若干遅れて開始されるようになる。補間された波形データは、読出書込回路３１からＥＧ付与回路３２に供給される。この場合、図３に示すように１ＤＡＣ周期の前半の期間では１ｃｈ〜６４ｃｈの補間処理が行われ（補間前半ｃｈ）、後半の期間では６５ｃｈ〜１２８ｃｈの補間処理が行われる（補間後半ｃｈ）。なお、１ｃｈ〜１２８ｃｈの各チャンネルの補間処理時間は１ＤＡＣ周期を等分割して与えられる。すなわち、補間処理における各チャネルに割り当てられるタイムスロットは１ＤＡＣ周期をＴとするとＴ／１２８とされ、このタイムスロットにおいて図示するようにチャンネル順に処理される。
【００４１】
Ｘアクセス処理は、音源制御レジスタ３０内に設けられているＸアクセス回路４０の制御の基で実行される処理である。このＸアクセス処理では、録音処理や再生処理における転送処理が行われるようになる。具体的には、前述した処理Ｂや取り込み処理において処理を行うタイムスロットが空いた際に、Ｘアクセス処理により、そのタイムスロットを使用してＸアクセス回路４０の制御の基で転送処理が行われる。例えば、外部回路２２に入力されたオーディオデータをディジタル変換したストリーム波形データをハードディスク等の大容量の記憶容量を有するディスク１４に録音することができる。この際には、ストリーム波形データを一時記憶するバッファメモリが波形メモリ２１上に設けられるようになる。すなわち、波形メモリ２１の一部によりバッファメモリが構成される。この場合、録音するストリーム波形データを複数トラックの複数のストリーム波形データとすることができ、トラックを構成するチャンネル数に対応するバッファメモリが波形メモリ２１上に形成される。
【００４２】
波形メモリ２１上に形成されたバッファメモリの一構成例を図５に示す。この例では、チャンネル１（ch.1）ないしチャンネル６（ch.6）の６チャンネルに対応するバッファメモリが波形メモリ２１上に構成されている。この場合の各バッファメモリのサイズは、記憶されるストリーム波形データのサンプリング周波数と１サンプルあたりのビット数に応じて、各バッファに記憶される波形データの再生時間が相互に同じ時間長になるように定められている。すなわち、サンプリング周波数が４４．１ｋＨｚで１６ビットのサンプルとされているストリーム波形データを一時記憶するチャンネル１，チャンネル３，チャンネル５，チャンネル６におけるバッファメモリのサイズは、図５に示すように全体で２ｋＷ（ワード）とされ、それぞれ１ｋＷのバッファＡとバッファＢとに分割されてダブルバッファ構成とされている。また、サンプリング周波数が２２．０５ｋＨｚで１６ビットのサンプルとされているストリーム波形データを一時記憶するチャンネル２におけるバッファメモリのサイズは、全体で１ｋＷ（ワード）とされそれぞれ０．５ｋＷのバッファＡとバッファＢとに分割されてダブルバッファ構成とされている。さらに、サンプリング周波数が４４．１ｋＨｚで３２ビットのサンプルとされているストリーム波形データを一時記憶するチャンネル４におけるバッファメモリのサイズは、全体で４ｋＷ（ワード）とされそれぞれ２ｋＷのバッファＡとバッファＢとに分割されてダブルバッファ構成とされている。
【００４３】
このようなバッファメモリのサイズとすると、全体で２ｋＷ（ワード）、分割されて１ｋＷとされているバッファＡあるいはバッファＢにおいて、４４．１ｋＨｚのサンプリング周波数でストリーム波形データを読出／書込した際に要する時間は、１０２４Word×１／４４．１≒２３．２msecとなる。また、全体で１ｋＷ（ワード）とされ分割されて０．５ｋＷとされているバッファＡあるいはバッファＢにおいて、２２．０５ｋＨｚのサンプリング周波数でストリーム波形データを読出／書込した際に要する時間は、５１２Word×１／２２．０５≒２３．２msecとなる。さらに、全体で４ｋＷ（ワード）とされ分割されて２ｋＷとされているバッファＡあるいはバッファＢにおいて、４４．１ｋＨｚのサンプリング周波数で３２ビット（２ワード）のストリーム波形データを読出／書込した際に要する時間は、２０４８Word×１／（４４．１×２）≒２３．２msecとなる。このように、チャンネル１ないしチャンネル６において各バッファメモリに記憶された波形データを再生する際の再生時間が相互に等しくなると共に、波形データを各バッファメモリに録音する際の録音時間が相互に等しくなるサイズとされている。
【００４４】
例えば、第１トラックがサンプリング周波数が４４．１ｋＨｚで１６ビットのサンプルのチャンネル１からなり、第２トラックがサンプリング周波数が２２．０５ｋＨｚで１６ビットのサンプルのチャンネル２からなり、第１トラックと第２トラックとのストリーム波形データを録音する場合は、使用していない２つの発音チャンネルを録音用に転用するよう選択する。転用できる発音チャンネルは、例えば最大１２８チャンネルとされている場合に最後の１６チャンネルとされている。ここで、第１トラックに第１２７チャンネルを第２トラックに第１２８チャンネルを選択して割り当てたとする。すると、処理Ａの後半の期間における第１２７チャンネルおよび第１２８チャンネルのタイムスロットにおいて、第１トラックおよび第２トラックにおけるストリーム波形データを書き込む波形メモリ２１上のバッファメモリのアドレスが、それぞれ読出書込回路３１において作成される。このアドレスは、サンプリング周波数に応じてＤＡＣ周期毎にインクリメントされていく。また、第１トラックにおけるバッファメモリはそれぞれ１０２４ワードサイズの第１バッファメモリBuf1Aと第２バッファメモリBuf1Bからなり、第２トラックにおけるバッファメモリはそれぞれ５１２ワードサイズの第１バッファメモリBuf2Aと第２バッファメモリBuf2Bからなるものとする。そして、処理Ｂの後半期間における第１２７チャンネルおよび第１２８チャンネルのタイムスロットにおいて、絶対アドレスに変換されたアドレスがセレクタ３５を介して波形メモリ２１へ供給され、第１バッファメモリBuf1Aと第２バッファメモリBuf2Aとの先頭に、第１トラックおよび第２トラックのストリーム波形データが１サンプルずつ書き込まれる。
【００４５】
次のＤＡＣサイクルでは、処理Ｂの後半期間における第１２７チャンネルおよび第１２８チャンネルのタイムスロットにおいて、第１バッファメモリBuf1Aに、第１トラックのストリーム波形データが１サンプル書き込まれるが、第２トラックのストリーム波形データは２２．０５ｋＨｚのサンプリング周波数とされているためアドレスがインクリメントされず第１バッファメモリBuf2Aに波形サンプルが書き込まれないことと等価となる。このように、第１トラックのストリーム波形データは１ＤＡＣ毎に１サンプル書き込まれ、第２トラックのストリーム波形データは２ＤＡＣ毎に１サンプル書き込まれることになる。すると、第１バッファメモリBuf1Aに第１トラックのストリーム波形データが１０２４サンプル書き込まれてFull状態となりデータ転送の割込要求がＣＰＵ１０に送出される時には、バッファメモリBuf2Aに第２トラックのストリーム波形データが５１２サンプル書き込まれてFull状態となっており、データ転送の割込要求が送出されるタイミングとなっている。そこで、この際にデータ転送の割込要求を送出し、これを受けたＣＰＵ１０が、第１バッファメモリBuf1Aおよび第１バッファメモリBuf2Aに書き込まれた第１トラックおよび第２トラックのストリーム波形データを、一括処理により順次ディスク１４へ転送するようにする。これにより、複数トラックの録音をする際においても割込要求をトラック毎に送出する必要がないので、割込要求回数を低減することができる。
【００４６】
なお、１ＤＡＣサイクルおきにインクリメントするアドレスを作成する場合に、ＤＡＣサイクル毎にインクリメントするアドレスカウンタのカウント値を１ビットシフトダウンしたカウント値を用いることができる。また、上述したようにデータ転送の割込要求は第１トラックおよび第２トラックにおいて同一のタイミングで所定周期毎に発生するので、いずれか一つのアドレスカウンタのカウント値を見ることにより一つの割込要求を送出すればよい。あるいは、基準とされる２０４８サンプル（１ＤＡＣサイクルで１サンプル）をカウントするサンプルカウンタが、その半分までカウントした際およびカウントアップした際にデータ転送の割込要求を送出するようにしても良い。
【００４７】
ところで、ストリーム波形データのバッファメモリからの転送は、Ｘアクセス処理により行われる。Ｘアクセス処理に先立ってＣＰＵ１０は、まず、第１バッファメモリBuf1Aの先頭アドレスをＸＡレジスタ４２に設定し、Ｘアクセス回路４０に対し転送処理の開始を指示する。そして、タイムスロットが空いてＸアクセス処理が実行可能なタイミングになると、読出書込回路３１から制御信号（CONT2）がＸアクセス回路４０に供給されるようになる。さらに、セレクタ３５が制御信号（CONT1）によりＸアクセス回路４０側に切り換えられて、第１バッファメモリBuf1Aに書き込まれた第１トラックのストリーム波形データがデータバス（DATA3）を介してＦＩＦＯ４１に順次読み込まれる。ここで、１ＤＡＣ周期の空きタイムスロットで転送できるデータ量は転送するデータ量及びバッファメモリのサイズと比べて少ないので、上記読み込みは複数のＤＡＣ周期にわたり継続的に行われる。そして、ＦＩＦＯ４１に所定量の波形データが書き込まれたことがＣＰＵ１０に通知されると、ＣＰＵ１０はＦＩＦＯ４１からストリーム波形データを読み出してＲＡＭ１３に書き込む。ここで、ＦＩＦＯ４１のサイズは、通常、転送するデータ量より小さいので、以上の波形メモリ２１に形成されている第１バッファメモリBuf1AからＦＩＦＯ４１への読み込み、および、ＦＩＦＯ４１からＲＡＭ１３への転送も複数回繰り返して実行されることにより、第１バッファメモリBuf1Aに記憶された第１トラックのストリーム波形データ（１０２４サンプル）が全てＲＡＭ１３へ転送される。
【００４８】
続いて、ＣＰＵ１０は、Ｘアクセス回路４０の転送処理を一旦停止し、第２バッファメモリBuf2Aの先頭アドレスをＸＡレジスタ４２に設定した後、Ｘアクセス回路４０に対し転送処理の開始を指示する。そして、第１トラックの場合と同様にして、第２バッファメモリBuf2Aに記憶された第２トラックのストリーム波形データ（５１２サンプル）が全て波形メモリ２１に形成されている第２バッファメモリBuf2AからＲＡＭ１３へ転送される。各トラックについて、ＲＡＭ１３にストリーム波形データが、ディスク１４の記憶単位（１クラスタ、例えば３２ｋバイト）以上蓄積されたとき、該記憶単位分のストリーム波形データが、ディスク１４へ転送書込される。なお、Ｘアクセス処理により転送する波形データの量がＦＩＦＯ４１のサイズより小さい場合には、ＣＰＵ１０によるＦＩＦＯ４１からＲＡＭ１３への転送処理が１回で終了する。
以上に説明したように、本発明にかかる楽音生成装置１では複数トラックの録音をする際においても、割込要求をトラック毎に送出しないので、多数の割込によりＣＰＵ１０の動作が遅くなることを防止することができる。なお、波形データのＦＩＦＯ４１からＲＡＭ１３への転送を、ＣＰＵ１０自身が行わず、ＣＰＵ１０により制御された図示しないＤＭＡコントローラが行うようにしてもよい。
【００４９】
ところで、第１バッファメモリBuf1Aおよび第１バッファメモリBuf2Aへの書込が終了すると、続くサンプルは、第２バッファメモリBuf1Bおよび第２バッファメモリBuf2Bに書き込まれるようになる。そして、第２バッファメモリBuf1Bおよび第２バッファメモリBuf2Bへの書込が終了すると、続くサンプルは、転送が終了した第１バッファメモリBuf1Aおよび第１バッファメモリBuf2Aに書き込まれるようになると共に、データ転送の割込要求の発生に応じてＸアクセス処理による第２バッファメモリBuf1Bおよび第２バッファメモリBuf2Bに書き込まれているストリーム波形データの転送が開始されるようになる。このような動作を繰り返し行うことにより、エンドレス録音をディスク１４に対して行うことができるようになる。
【００５０】
なお、ＸＡレジスタ４２には、１トラックに対応するバッファメモリの先頭アドレスを収納することができる。波形メモリ２１上に複数のバッファメモリが形成されて複数トラックの同時録音を行う場合も、上述した２トラック録音の例のように、ＸＡレジスタ４２に複数バッファの先頭アドレスを順番に設定して、各バッファごとにストリーム波形データをＲＡＭ１３に転送するようにすればよい。また、１トラックのストリーム波形データがステレオとされている場合には、ステレオ用に形成されているバッファメモリのそれぞれの先頭アドレスをＸＡレジスタ４２に格納できるようにしてもよい。この場合の先頭アドレスは、ＣＰＵ１０から供給される。例えば、Ｘアクセス処理により波形メモリ２１に形成されているバッファメモリからステレオのストリーム波形データをＦＩＦＯ４１に転送する場合は、ＸＡレジスタ４２に格納されたＬチャンネル用のアドレスとＲチャンネル用のアドレスとが時分割されて交互に波形メモリ２１に供給される。これにより、波形メモリ２１からステレオのＬデータとＲデータとが交互に読み出されるようになる。このＬデータとＲデータとが、ＦＩＦＯ４１にインターリーブされて交互に書き込まれるようになる。ＣＰＵ１０はＦＩＦＯ４１に書き込まれたインターリーブされて格納されているＬデータとＲデータとを読み出してＲＡＭ１３上にＬデータとＲデータとに分離して取り込めばよい。
エンドレス録音の動作と同様にしてエンドレス再生を行うこともできるが、この説明は後述する。
【００５１】
次に、読出書込回路３１から時分割で出力される各チャンネルの波形データは、ＥＧ付与回路３２においてエンベロープが付与される。付与されるエンベロープは、ＣＰＵ１０から与えられて音源制御レジスタ３０のレジスタに格納されている各チャンネルのエンベロープパラメータに基づいて決定される。エンベロープが付与された、例えば１２８チャンネル分の波形データはミキサ３３に供給される。さらに、ミキサ３３には信号処理回路（ＤＳＰ）３４から出力されるエフェクト処理等がされた、例えば８チャンネル分の波形データ、および外部回路２２から入力された、あるいはフィルタ処理やエフェクト処理等がされた、例えば８チャンネル分の波形データが供給されている。ミキサ３３は、これらの供給された各チャンネルの波形データにそれぞれ係数値を乗算してミキシングする。係数値はＣＰＵ１０から音源制御レジスタ３０に与えられて、内蔵するレジスタに格納されている。ミキサ３３においてミキシングされた波形データは、８チャンネル分がＤＳＰ３４に、８チャンネル分が外部回路２２に、音源部２０の最終的な出力となる２チャンネル（ＬおよびＲ出力）分がＤＡＣ２３に、それぞれ出力されるようになされている。そして、ＤＡＣ２３によりアナログ信号に変換された楽音信号はサウンドシステム２４から放音されるようになる。このように、ミキサ３３はＣＰＵ１０から指定されたチャンネルの波形データに指定された係数値を乗算してミキシングし、そのミキシング結果をＣＰＵ１０の指定に基づく出力部へ指定されたチャンネルで送出するようにしている。
【００５２】
なお、ＦＩＦＯ４１にはポインタレジスタから書込ポインタと読出ポインタとが指示されており、読出ポインタが書込ポインタを追い越さないようにＦＩＦＯ４１は制御される。このような制御のため、ＦＩＦＯ制御レジスタ４４に通知制御情報が格納されている。この通知制御情報は、ＦＩＦＯ４１に書き込んだデータを転送する際の書き込んだデータ量の閾値情報や、ＦＩＦＯ４１に転送したデータを読み出す際の残存するデータ量の閾値情報とされており、これらの閾値を超えた際にデータ読出／書込を実行するようにされている。また、ＦＩＦＯ制御レジスタ４４にステレオ指示情報が供給されると、ＦＩＦＯ制御レジスタ４４はＬデータとＲデータとをＦＩＦＯ４１に交互に書き込むインターリーブ処理を行って波形データを書き込むように制御する。さらに、ＦＩＦＯ制御レジスタ４４にクリア情報が供給されると、ＦＩＦＯ制御レジスタ４４はＦＩＦＯ４１をクリアする。さらにまた、ＦＩＦＯ制御レジスタ４４にビット数情報が供給されると、ＦＩＦＯ制御レジスタ４４は波形データを１６ビットあるいは３２ビットとして扱う。ＦＩＦＯ４１は５１２ワード×１６ビットとされているので、指示されたビット数に応じてＦＩＦＯ４１を制御するようにする。すなわち、ビット数情報により３２ビットと指示されると、ＦＩＦＯ制御レジスタ４４は１つの波形データを読出／書込する際に２ワードをＦＩＦＯ４１から読出／書込するように制御する。
【００５３】
次に、図２に示す構成の音源部２０におけるデータ流れ図を図４に、その動作タイミングを図７に示し、これらの図を参照しながら、録音処理および再生処理におけるデータの流れを説明する。
図４において、制御手段５はＣＰＵ１０とシステムＲＡＭ（図１に示すＲＡＭ１３）と図２には示していないＤＭＡ（Direct Memory Access）コントローラからなり、波形メモリ２１に形成されているバッファメモリにおけるストリーム波形データの転送制御を行っている。書込手段５２は読出書込回路３１の一機能であり、楽音生成用のチャンネルの内の上述した特定のチャンネルを使用して波形メモリ２１に形成されているバッファメモリへストリーム波形データを書き込む手段である。音源手段５１は、内蔵する読出書込回路３１により読み出された波形データにＥＧ付与部３２により音量の時間変化を付与することにより楽音データを生成する音源手段である。この音源手段５１が、波形メモリ２１に形成されているバッファメモリからループ再生することにより、後述するようにエンドレス再生することが可能となる。
【００５４】
ミキサ手段５３は、ミキサ３３とＤＳＰ３４の機能を備え時分割で生成された各チャンネルの楽音データをミキシングして最終的な楽音データを作成してＤＡＣ２３に供給したり、外部回路２２に波形データを供給してエフェクト処理された波形データを受け取ってミキシングしたりしている。外部回路２２，ＤＡＣ２３，音源手段５１，書込手段５２，ミキサ手段５３は、１ＤＡＣ周期を基準とするサンプリング周波数Fsに同期して動作している。これに対して、波形メモリ２１に形成されているバッファメモリとＦＩＦＯ４１間ではサンプリング周波数Ｆｓに同期してデータの授受が行われるが、ＦＩＦＯ４１と制御手段５間ではサンプリング周波数Fsとは直接関係しないＣＰＵ１０の動作タイミングで読み出される。
【００５５】
ここで、書込手段５２およびＸアクセス回路４０を使用した複数トラックのエンドレス録音について説明する。例えば、トラック１ないしトラック５の録音を音源手段のチャンネル１ないしチャンネル５に割当てる。書込手段５２により実行される書込処理では、前述した処理Ａによりストリーム波形データを書き込む波形メモリ２１上のバッファメモリのアドレスが作成され、処理Ｂにより作成されたアドレスに基づいて上記バッファメモリにストリーム波形データが書き込まれる。あるトラックにおいて、このストリーム波形データが４４．１ｋＨｚのサンプリング周波数で１６ビットのサンプルとされている場合は、サンプリング周波数Fs毎に１サンプルずつ上記バッファメモリに書き込まれていく。そして、サンプリング周波数４４．１ｋＨｚのサンプルが１０２４ワード上記バッファメモリに書き込まれたタイミングt2において、図７に示すようにデータ転送の割込要求が発生する。また、サンプリング周波数が２２．０５ｋＨｚであれば、タイミングt2でのサンプル数は５１２ワードである。この割込要求を受けたＣＰＵ１０は、Ｘアクセス処理を利用して、波形メモリ２１上に設定された複数トラックのバッファメモリから、当該バッファメモリに記憶されたストリーム波形データを１トラック分ずつ順次ＲＡＭ１３に転送する。
【００５６】
図示する例では、ＣＰＵ１０がＸアクセス回路を用いた転送処理を実行することにより、チャンネル１の第２バッファBuf1B、チャンネル２の第２バッファBuf2B、チャンネル４の第２バッファBuf4B、チャンネル５の第２バッファBuf5Bに記憶されているストリーム波形データがＸアクセス処理によりＦＩＦＯ４１へ順次転送されるとともに、ＣＰＵ１０によりＦＩＦＯ４１からシステムＲＡＭ（ＲＡＭ１３）へ順次転送される。ここで、Ｘアクセス処理による転送は前述した空きタイムスロットで行われ、ＣＰＵ１０による転送はＣＰＵ１０の動作タイミングで行われる。すなわち、ＣＰＵ１０の動作タイミングでＦＩＦＯ４１からシステムＲＡＭ（ＲＡＭ１３）にストリーム波形データが転送され、システムＲＡＭの何れかのトラックのバッファで、ディスク１４の記憶単位に相当する量のストリーム波形データが蓄積されたら、当該トラックの該記憶単位分のストリーム波形データがディスク１４へ転送記憶される。このＦＩＦＯ４１からシステムＲＡＭへの転送、および、システムＲＡＭからディスク１４への転送は、ＣＰＵ１０により制御されたＤＭＡコントローラが、ＤＭＡコントローラの動作タイミングで行うことができる。
【００５７】
さらに、サンプリング周波数４４．１ｋＨｚのサンプルが１０２４ワード（サンプリング周波数２２．０５ｋＨｚではサンプルが５１２ワード）上記バッファメモリに書き込まれた際に、データ転送の割込要求がタイミングt3において発生する。この割込要求を受けたＣＰＵ１０は、Ｘアクセス処理により波形メモリ２１に記憶されているストリーム波形データがＸアクセス処理によりＦＩＦＯ４１へ順次転送するとともに、ＣＰＵ１０によりＦＩＦＯ４１からシステムＲＡＭ（ＲＡＭ１３）へ順次転送する。図示する例では、Ｘアクセス処理によりチャンネル１の第１バッファBuf1A、チャンネル２の第１バッファBuf2A、チャンネル４の第１バッファBuf4A、チャンネル５の第１バッファBuf5Aに記憶されているストリーム波形データがＦＩＦＯ４１へ順次転送されるとともに、ＣＰＵ１０によりＦＩＦＯ４１からシステムＲＡＭ（ＲＡＭ１３）へ順次転送される。ここで、Ｘアクセス処理による転送は前述した空きタイムスロットで行われ、ＣＰＵ１０による転送はＣＰＵ１０の動作タイミングで行われる。すなわち、ＣＰＵ１０の動作タイミングでＦＩＦＯ４１からシステムＲＡＭ（ＲＡＭ１３）にストリーム波形データが転送され、システムＲＡＭにおいてまとめられたストリーム波形データがディスク１４へ転送されるようになる。このような動作が繰り返し行われることにより、エンドレス録音をディスク１４に対して行うことができるようになる。なお、データ転送の割込要求は所定周期毎に発生している。
【００５８】
次に、ディスク１４に録音されているストリーム波形データをエンドレス再生する説明を行う。
図８に５トラック同時再生タイミングを示し、この図を参照して５トラック同時再生の説明を行う。ここでは、第１トラック（Tr.1）はチャンネル１からなり、第２トラック（Tr.2）はチャンネル２からなり、第３トラック（Tr.3）はチャンネル３からなり、第４トラック（Tr.4）はチャンネル４からなり、第５トラック（Tr.5）はチャンネル５からなっているものとする。そして、第１トラックおよび第２トラックはタイミングt0の再生スタート時から発音されるが、第３トラックは図示する範囲の時間以上経過したタイミングtn3で再生スタートされ、第４トラックはタイミングt34で再生スタートされ、第５トラックはタイミングt15で再生スタートされるものとされている。また、第２トラックはタイミングt42で再生が終了するものとされている。なお、図８に示される各トラックにおいて、上段の短いボックスは、ＣＰＵ１０の制御の基でストリーム波形データをＸアクセス処理により波形メモリへ書き込んでいる期間および書込先のバッファ（ＡないしＢ）を示し、また、下段の長いボックスの連鎖は、音源部手段５１による波形メモリ２１に記憶されているストリーム波形データの再生が行われている期間および再生元のバッファ（ＡないしＢ）を示す。また、それらのボックスのうち、ハッチングの付与されたボックスはそのデータに録音されたストリーム波形データが含まれていることを示し、空白のボックスはそのデータが全てゼロデータであることを示す。
【００５９】
また、ストリーム波形データがエンドレス再生される場合は、波形メモリ２１に再生されるトラック分のダブルバッファ構成のバッファメモリが形成され、それぞれのバッファメモリ領域がループ再生されることによりエンドレス再生されるようになる。この場合の各バッファメモリのサイズは、各バッファメモリにおける読出／書込に要する時間が等しくなるサイズとされている。すなわち、前述したように記憶されるストリーム波形データのサンプリング周波数と１サンプルあたりのビット数に応じて各バッファメモリのサイズが定められている。ここでは、図５に示すサンプリング周波数と１サンプルあたりのビット数とされたチャンネル１ないしチャンネル５とされ、図５に示すサイズのバッファメモリが第１トラックないし第５トラック用のバッファメモリとして波形メモリ２１上に形成されたとする。そして、タイミングt0の再生スタートに先立って、第１トラックのバッファメモリBuf1A,Buf1Bに第１トラックのストリーム波形データが順次転送され、続いて第２トラックのバッファメモリBuf2A,Buf2Bに第２トラックのストリーム波形データが転送される。また、同時に、第５トラックの第１バッファメモリBuf5Aには全てのサンプル値がゼロである無音のストリーム波形データが転送され、第２バッファメモリBuf5Bには途中のタイミングt15に対応する位置までが無音で、それ以降に録音された波形データが始まる第５トラックのストリーム波形データが転送される。さらに、同時に、第３トラックおよび第４トラックのバッファメモリBuf3A,Buf3B,Buf4A,Buf4Bには無音のストリーム波形データが転送される。
【００６０】
このストリーム波形データの転送は、前述したＸアクセス処理により実行される。すなわち、ＣＰＵ１０は再生する第１トラックないし第５トラックのストリーム波形データの所定量をディスク１４からＲＡＭ１３に読み出しておく。そして、第１トラックのストリーム波形データを所定量ずつＦＩＦＯ４１に転送する。ここで、タイムスロットが空いてＸアクセス処理が実行可能なタイミングになると、読出書込回路３１から制御信号（CONT2）がＸアクセス回路４０に供給されるようになる。さらに、セレクタ３５が制御信号（CONT1）によりＸアクセス回路４０側へ切り換えられて、ＦＩＦＯ４１上の第１トラックのストリーム波形データが波形メモリ２１上に形成されている第１バッファメモリBuf1Aおよび第２バッファメモリBuf2Aに順次転送されるようになる。バッファメモリBuf1A,Buf1Bへの第１トラックのストリーム波形データの転送が終了すると、同様にして第２トラックのバッファメモリBuf2A,Buf2Bに第２トラックのストリーム波形データが順次転送される。さらに、バッファメモリBuf2A,Buf2Bへの第２トラックのストリーム波形データの転送が終了すると、同様にして、第３トラック、第４トラックおよび第５トラックのバッファメモリBuf3A,Buf3B,Buf4A,Buf4B,Buf5Aに無音のストリーム波形データが転送され、さらに、第５トラックの第２バッファメモリBuf5Bに第５トラックのストリーム波形データが転送される。ここで、第２バッファメモリBuf5Bに転送されるストリーム波形データは以下の手順でＣＰＵ１０により作成される。ＣＰＵ１０は、まず、第２バッファメモリBuf5Bと同じサイズの記憶領域をＲＡＭ１３上に確保し、その先頭よりタイミングt15に相当する途中の位置までゼロを書き込む。次に、ＣＰＵ１０は、ディスク１４ないしＲＡＭ１３からトラック５のタイミングt15で再生開始すべきストリーム波形データを読み出し、その先頭部を第２バッファメモリBuf5Bの該途中の位置以降に書き込む。このストリーム波形データを音源手段５１が読み出すことにより、タイミングt15までが無音であり、それ以降に録音された波形がスタートするようなトラック５の楽音を再生することができる。
【００６１】
これにより、再生の準備が終了し再生スタートされるが、それぞれのトラックにおける再生スタートでそれぞれのトラックを再生スタートさせると、途中で再生スタートされるトラックは既にスタートされているトラックに同期させるためには、既にスタートされているトラックの再生位置を検出して後のトラックの再生をスタートさせる同期化回路が必要であり、構成が複雑になってしまう。そこで、途中で再生されるトラックも含めて複数トラックを同期して再生する複数トラックの同時再生を行う場合は、その複数トラックの再生のために使用するチャンネル（トラック再生チャンネル）のすべてにキーオントリガを同時に与え、同じサンプリング周期においてその複数チャンネルの読出再生動作を開始させる。すなわち、再生開始に先立って複数のトラック再生チャンネルに、それぞれ対応するトラックの２バッファ領域の先頭アドレスと終了アドレス、サンプリング周波数、データビット数を設定するとともに、再生を開始するタイミングt0において、そのトラック再生チャンネルのすべてにキーオントリガを同時に与えることにより、例えば、図８に示す５トラックに対応する５チャンネルが同時に再生動作を開始する。
【００６２】
これにより、波形メモリ２１上に形成されている第１トラックないし第５トラックのバッファメモリの先頭アドレスからＤＡＣ周期毎に１サンプルずつ波形データが読み出され、少なくとも５トラックのストリーム波形データが音源手段５１において再生されていくようになる。この場合、トラック再生チャンネルとして、読出書込回路３１の書込チャンネルに設定されていない何れのチャンネルを使用してもよい。例えば、チャンネル１ないしチャンネル５が第１トラックないし第５トラックにそれぞれ割り当てられたものとする。書込チャンネルに設定されておらず、かつ、トラック再生チャンネルでもないチャンネルは、ＭＩＤＩ信号等の演奏データに応じ、波形メモリから波形データを読み出して楽音を生成する楽音形成チャンネルとして使用することができる。
【００６３】
すると、処理Ａの前半の期間におけるチャンネル１ないしチャンネル５のタイムスロットにおいて第１トラックないし第５トラックにおけるストリーム波形データを読み出す波形メモリ２１上のバッファメモリBuf1,Buf2,Buf3,Buf4,Buf5のアドレスがそれぞれ読出書込回路３１において作成される。このアドレスは、各チャンネルに設定された各トラックの先頭アドレスを初期値として、各バッファメモリに格納されているストリーム波形データのサンプリング周波数に応じてＤＡＣ周期毎にインクリメントされていく。そして、処理Ｂの前半期間におけるチャンネル１ないしチャンネル５の各タイムスロットにおいて絶対アドレスに変換されたアドレスがセレクタ３５を介して波形メモリ２１へ供給され、第１バッファメモリBuf1A、第１バッファメモリBuf2A、第１バッファメモリBuf3A、第１バッファメモリBuf4A、第１バッファメモリBuf5Aの先頭の１サンプルのストリーム波形データがそれぞれ読み出される。そして、第１バッファメモリBuf1Aおよび第２バッファメモリBuf2Aから読み出されたストリーム波形データに基づいて、前述したように音源手段５１において第１トラックおよび第２トラックの楽音が生成される。しかし、図８に示すように第３トラックないし第５トラックは未だ再生スタートのタイミングに達しておらず、第１バッファメモリBuf3A,Buf4A,Buf5Aからは無音のストリーム波形データが読み出される。このため、第３トラックないし第５トラックでは音源手段５１により無音の楽音が再生されるようになる。
【００６４】
そして、タイミングt1に達すると第１バッファメモリBuf1Aおよび第１バッファメモリBuf2Aに転送されていたストリーム波形データの読み出しが同時に終了し、続いて第２バッファメモリBuf1Bおよび第２バッファメモリBuf2Bに転送されていたストリーム波形データの読み出しが開始される。この場合、第１バッファメモリBuf3A，Buf4A，Buf5Aの読み出しも同時に終了し、続いて第２バッファメモリBuf3B，Buf4B，Buf5Bの読み出しが開始される。この際にデータ転送の割込要求が送出される。この割込要求は、基準とされる２０４８サンプル（１ＤＡＣサイクルで１サンプル）をカウントするサンプルカウンタが、その半分までカウントした際およびカウントアップした際に送出される。ここで、何れかのトラック再生チャンネルのアドレスカウンタをこのサンプリングカウンタとして動作させるようにしてもよい。これを受けたＣＰＵ１０は、ＦＩＦＯ４１にＲＡＭ１３から第１トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第１トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf1Aに転送する。次いで、ＦＩＦＯ４１にＲＡＭ１３から第２トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第２トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf2Aに転送する。さらに、ＦＩＦＯ４１にＲＡＭ１３から第５トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第５トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf5Aに転送する。さらにまた、第３トラックおよび第４トラックでは、当該期間t2-t3にかけて無音の再生が継続し、かつ、対応するバッファメモリには既に無音のストリーム波形データが記憶されているので、さらなるデータ転送の必要はない。
【００６５】
タイミングt1からは、第２バッファメモリBuf1B，Buf2Bに転送されていたストリーム波形データが、ＤＡＣ周期毎に１サンプルずつ読み出されて、読み出されたストリーム波形データに基づいて、前述したように音源手段５１において楽音が生成されていく。また、第２バッファメモリBuf3B，Buf4B，Buf5BからもＤＡＣ周期毎に１サンプルずつ読み出されるが、第３トラックないし第５トラックは未だ再生スタートのタイミングに達しておらず、無音のデータが読み出される。このため、第３トラックないし第５トラックでは音源手段５１により無音の楽音が再生され続けるようになる。ここで、タイミングt15に達すると第５トラックの再生スタートタイミングとなり、このタイミングからは第２バッファメモリBuf5BからＤＡＣ周期毎に読み出されたデータは有意なストリーム波形データとなり、読み出されたストリーム波形データに基づいて、前述したように音源手段５１において第５トラックの楽音も生成されていくようになる。
【００６６】
そして、タイミングt2に達すると第２バッファメモリBuf1B，Buf2B，Buf5Bに転送されていたストリーム波形データの読み出しが同時に終了し、続いて第１バッファメモリBuf1A，Buf2A，Buf5Aに転送されていたストリーム波形データの読み出しが開始される。さらに、第２バッファメモリBuf3B，Buf4Bの読み出しも同時に終了し、続いて第１バッファメモリBuf3A，Buf4Aの読み出しが開始される。この際、チャンネル１ないしチャンネル５のタイムスロットにおいてＤＡＣ周期毎にインクリメントされているバッファメモリBuf1,Buf2,Buf3,Buf4,Buf5の読出アドレスは、各チャンネルに設定されている各バッファの終了アドレス（バッファＢの最後）に同時に達した後、各バッファの先頭アドレス（バッファＡの先頭）に戻されＤＡＣ周期毎のインクリメントを継続する。このリターン時にデータ転送の割込要求が送出される。この割込要求は、前述したようにサンプルカウンタが、その半分までカウントした際およびカウントアップした際に送出される。これを受けたＣＰＵ１０は、ＦＩＦＯ４１にＲＡＭ１３から第１トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第１トラックの次のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf1Bに転送する。
【００６７】
次いで、ＦＩＦＯ４１にＲＡＭ１３から第２トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第２トラックの次のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf2Bに転送する。さらに、ＦＩＦＯ４１にＲＡＭ１３から第５トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第５トラックの次のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf5Bに転送する。さらにまた、第４トラックの再生スタートタイミングがt34とされていることから、それに先立って、ＣＰＵ１０は、ＲＡＭ１３上において先頭からタイミングt34に相当する位置までが無音でそれ以降に有意な楽音が始まるトラック４のストリーム波形データ（第２バッファメモリBuf4Bと同サイズ）を作成し、ＦＩＦＯ４１にＲＡＭ１３から該ストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第４トラックの先頭のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf4Bに転送する。さらにまた、第３トラックでは期間t3-t4にかけて無音の再生が継続し、かつ、バッファメモリに既に無音のストリーム波形データが記憶されているので、更なるデータ転送の必要はない。
【００６８】
この様子が図７の前半に示されている。すなわち、タイミングt2において割込要求が発生し、これを受けたＣＰＵ１０はＸアクセス処理によりＦＩＦＯ４１を介して波形メモリ２１に形成されている所定のチャンネルのバッファメモリに、続くストリーム波形データを図７に示すように転送している。この転送はＣＰＵアクセスによる転送となり、その転送時間は転送するデータ量（＝バッファのサイズ＝データビット数×サンプル数）にほぼ比例する時間となる。すなわち、サンプリング周波数が４４．１ｋＨｚでサンプルのビット数が１６ビットとされているトラック１およびトラック５の転送時間に対して、サンプリング周波数が２２．０５ｋＨｚでサンプルのビット数が１６ビットとされているトラック２の転送時間は１／２となり、サンプリング周波数が４４．１ｋＨｚでサンプルのビット数が３２ビットとされているトラック４の転送時間は２倍となる。この各バッファメモリへの転送処理は、図７に示すように一括して行われている。なお、図７では各１つのトラックの転送が連続的に行われているように見えるが、それを更に拡大して見れば、図３に示されるようにＤＡＣ周期毎の空きタイムスロットを利用したＸアクセス処理によって、断続的に徐々に行われていることが判る。
【００６９】
タイミングt2からは、第１バッファメモリBuf1A，Buf2A，Buf5Aに転送されていたストリーム波形データが、ＤＡＣ周期毎に１サンプルずつ読み出されて、読み出されたストリーム波形データに基づいて、前述したように音源手段５１において第１トラック、第２トラックおよび第５トラックの楽音が生成されていく。また、第１バッファメモリBuf3A，Buf4AからもＤＡＣ周期毎に１サンプルずつ読み出されが、第３トラックおよび第４トラックは未だ再生スタートのタイミングに達しておらず、無音のデータが読み出される。このため、第３トラックおよび第４トラックでは音源手段５１により無音の楽音が再生され続けるようになる。
【００７０】
そして、タイミングt3に達すると第１バッファメモリBuf1A，Buf2A，Buf5Aに転送されていたストリーム波形データの読み出しが同時に終了し、続いて第２バッファメモリBuf1B，Buf2B，Buf5Bに転送されていたストリーム波形データの読み出しが開始される。さらに、第１バッファメモリBuf3A，Buf4Aの読み出しも同時に終了し、続いて第２バッファメモリBuf3B，Buf4Bの読み出しが開始される。この際にデータ転送の割込要求が送出される。この割込要求は、前述したようにサンプルカウンタが、その半分までカウントした際およびカウントアップした際に送出される。これを受けたＣＰＵ１０は、ＦＩＦＯ４１にＲＡＭ１３から第１トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第１トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf1Aに転送する。さらに、第２トラックの再生エンドタイミングがt42とされていることから、それに先立って、ＣＰＵ１０は、ＲＡＭ１３上において先頭からタイミングt42に相当する位置までが録音された有意な楽音となり以降が無音となるようなトラック２のストリーム波形データを作成し、ＦＩＦＯ４１にＲＡＭ１３から該ストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第２トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf2Aに転送する。
【００７１】
さらに、ＦＩＦＯ４１にＲＡＭ１３から第５トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第５トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf5Aに転送する。さらにまた、ＦＩＦＯ４１にＲＡＭ１３から第４トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第４トラックの先頭のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf4Aに転送する。さらにまた、第３トラックでは期間t4-t5にかけて無音の再生が継続し、かつ、バッファメモリに既に無音のストリーム波形データが記憶されているので、更なるデータ転送の必要はない。
このタイミングt3における転送の様子も図７に示されている。すなわち、タイミングt3において割込要求が発生し、これを受けたＣＰＵ１０はＸアクセス処理によりＦＩＦＯ４１を介して波形メモリ２１に形成されている所定のチャンネルのバッファメモリに、続くストリーム波形データを図７に示すように転送している。
【００７２】
タイミングt3からは、第２バッファメモリBuf1B，Buf2B，Buf5Bに転送されていたストリーム波形データが、ＤＡＣ周期毎に１サンプルずつ読み出されて、読み出されたストリーム波形データに基づいて、前述したように音源手段５１において第１トラック、第２トラックおよび第５トラックの楽音が生成されていく。また、第２バッファメモリBuf3B，Buf4BからもＤＡＣ周期毎に１サンプルずつ読み出されが、第３トラックおよび第４トラックは未だ再生スタートのタイミングに達しておらず、無音のデータが読み出される。このため、第３トラックおよび第４トラックでは音源手段５１により無音の楽音が再生され続けるようになる。ここで、タイミングt34に達すると第４トラックの再生スタートタイミングとなり、このタイミングからは第２バッファメモリBuf4BからＤＡＣ周期毎に読み出されたデータは有意なストリーム波形データとなり、読み出されたストリーム波形データに基づいて、前述したように音源手段５１において第４トラックの楽音も生成されていくようになる。
【００７３】
そして、タイミングt4に達すると第２バッファメモリBuf1B，Buf2B，Buf4B，Buf5Bに転送されていたストリーム波形データの読み出しが同時に終了し、続いて第１バッファメモリBuf1A，Buf2A，Buf4A，Buf5Aに転送されていたストリーム波形データの読み出しが開始される。さらに、第２バッファメモリBuf3Bの読み出しも同時に終了し、続いて第１バッファメモリBuf3Aの読み出しが開始される。この際にデータ転送の割込要求が送出される。この割込要求は、前述したようにサンプルカウンタが、その半分までカウントした際およびカウントアップした際に送出される。これを受けたＣＰＵ１０は、ＦＩＦＯ４１にＲＡＭ１３から第１トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第１トラックの次のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf1Bに転送する。次いで、ＦＩＦＯ４１にＲＡＭ１３から第２トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第２トラックの次のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf2Bに転送する。しかし、第２トラックは既にタイミングt42において終了しており当該区間t5-t6にかけて無音の再生が継続するが、バッファメモリには未だ無音のストリームデータが記憶されていないので、Buf2Bには無音のストリーム波形データが転送されるようになる。
【００７４】
さらに、ＦＩＦＯ４１にＲＡＭ１３から第４トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第４トラックの次のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf4Bに転送する。さらにまた、ＦＩＦＯ４１にＲＡＭ１３から第５トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第５トラックの次のストリーム波形データを波形メモリ２１上に形成されている第２バッファメモリBuf5Bに転送する。さらにまた、第３トラックでは期間t5-t6にかけて無音の再生が継続し、かつ、バッファメモリに既に無音のストリーム波形データが記憶されているので、更なるデータ転送の必要はない。
【００７５】
タイミングt4からは、第１バッファメモリBuf1A，Buf2A，Buf4A，Buf5Aに転送されていたストリーム波形データが、ＤＡＣ周期毎に１サンプルずつ読み出されて、読み出されたストリーム波形データに基づいて、前述したように音源手段５１において第１トラック、第２トラック、第４トラックおよび第５トラックの楽音が生成されていく。また、第１バッファメモリBuf3AからもＤＡＣ周期毎に１サンプルずつ読み出されが、第３トラックは未だ再生スタートのタイミングに達しておらず、無音のデータが読み出される。このため、第３トラックでは音源手段５１により無音の楽音が再生され続けるようになる。ここで、タイミングt42に達すると第２トラックの終了タイミングとなり、このタイミングからは第１バッファメモリBuf2AからＤＡＣ周期毎に読み出されたデータは無音のデータとなり、トラック２では無音の楽音が生成されるようになる。
【００７６】
そして、タイミングt5に達すると第１バッファメモリBuf1A，Buf2A，Buf4A，Buf5Aに転送されていたストリーム波形データの読み出しが同時に終了し、続いて第２バッファメモリBuf1B，Buf2B，Buf4B，Buf5Bに転送されていたストリーム波形データの読み出しが開始される。さらに、第１バッファメモリBuf3Aの読み出しも同時に終了し、続いて第２バッファメモリBuf3Bの読み出しが開始される。この際にデータ転送の割込要求が送出される。この割込要求は、前述したようにサンプルカウンタが、その半分までカウントした際およびカウントアップした際に送出される。これを受けたＣＰＵ１０は、ＦＩＦＯ４１にＲＡＭ１３から第１トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第１トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf1Aに転送する。次いで、ＦＩＦＯ４１にＲＡＭ１３から第２トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第２トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf2Aに転送する。しかし、第２トラックでは、当該区間t5-t6にかけて無音の再生が継続し、かつ、バッファメモリには未だ無音のストリームデータが記憶されていないので、Buf2Aには無音のストリーム波形データが転送されるようになる。
【００７７】
さらに、ＦＩＦＯ４１にＲＡＭ１３から第４トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第４トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf4Aに転送する。さらにまた、ＦＩＦＯ４１にＲＡＭ１３から第５トラックの次のストリーム波形データを転送しつつ、Ｘアクセス処理によりＦＩＦＯ４１上の第５トラックの次のストリーム波形データを波形メモリ２１上に形成されている第１バッファメモリBuf5Aに転送する。さらにまた、第３トラックでは期間t5-t6にかけて無音の再生が継続し、かつ、バッファメモリに既に無音のストリーム波形データが記憶されているので、更なるデータ転送の必要はない。
タイミングt5からは、第２バッファメモリBuf1B，Buf2B，Buf4B，Buf5Bに転送されていたストリーム波形データが、ＤＡＣ周期毎に１サンプルずつ読み出されて、読み出されたストリーム波形データに基づいて、前述したように音源手段５１において第１トラック、第４トラックおよび第５トラックの楽音が生成されていく。ただし、第２トラックでは、前述したように無音の楽音が生成される。また、第２バッファメモリBuf3BからもＤＡＣ周期毎に１サンプルずつ読み出されるが、第３トラックは未だ再生スタートのタイミングに達しておらず、無音のデータが読み出される。このため、第３トラックでは音源手段５１により無音の楽音が再生され続けるようになる。
【００７８】
このようにして録音されているストリーム波形データを再生していくことにより、エンドレスの５トラック同時再生を実行することができるようになる。この場合、上述した５トラック同時再生において、途中から再生スタートされるトラック３においては、再生スタートの一つ前の区間のタイミングまでは、そのトラックのバッファメモリにはストリーム波形データの転送を行わないようにしている。例えば、区間tn-t(n+1)の何れかのタイミングtn3から再生されるトラック３においては、再生スタートの一つ前の区間t(n-1)-tnのタイミングt(n-1)までは、トラック３のバッファメモリBuf3A、Buf3Bにはストリーム波形データの転送は行われない。すなわち、無音区間におけるデータの転送は行わない。これにより、転送処理の負荷を軽減することができるようになる。これは、再生処理ばかりではなく録音処理においても同様とされている。なお、データ転送の割込要求は図８に示すように所定周期毎に発生している。
【００７９】
また、録音されているストリーム波形データを再生する際に、再生するストリーム波形データの範囲を予め定めて再生することができる。この場合は、図６に示すようにディスク１４に録音されているストリーム波形データ上に、再生開始アドレスと再生終了アドレスを指定するようにすればよい。この再生開始アドレスは絶対アドレスとされ、再生終了アドレスは再生開始アドレスに対する差分で表されている。
このようにして、再生終了アドレスまで再生してトラック２のように途中で再生が終了したトラックについては、バッファメモリに無音のストリーム波形データ（全てデータ０）を転送してバッファメモリ内のデータをゼロクリアするようにしている。そして、該トラックにおいて２区間以上、無音の再生が継続する場合には、最初の２区間のために２つのバッファがゼロクリアされたら、それ以降の無音区間についてはストリーム波形データの転送を行う必要はなくなる。例えば、トラック２においてはタイミングt4において第２バッファBuf4Bにデータ０が転送され、タイミングt5において第１バッファBuf4Aにデータ０が転送されてバッファメモリBuf2上の全てのデータがゼロクリアされる。そこで、タイミングt5よりスタートする無音区間が２区間以上継続する場合には、タイミングt6以降のそれに対応するデータ転送の割込要求に応じたデータ転送を行わないようにしている。これによっても、転送処理の負荷を軽減することができるようになる。
【００８０】
また、本発明の実施の形態にかかる楽音生成装置１では、音源手段５１と書込手段５２がそれぞれ読出書込回路３１の異なるチャンネルにより同時に動作可能であるので、以上に説明した複数トラックの同時録音と複数トラックの同時再生も平行して同時に行うことができる。例えば、読出書込回路３１のチャンネル１、２を２つのトラックの録音に、チャンネル３、４、５を３つのトラックの再生に割当て、それらの録音再生を全部同時に実行することができる。図５に示すように波形メモリ２１に録音用のバッファメモリBuf1,Buf2と再生用のバッファメモリBuf3,Buf4,Buf5を用意し、読出書込回路３１のチャンネル１、２を書込チャンネルに設定して、トラック録音チャンネルであるチャンネル１、２とトラック再生チャンネルであるチャンネル３、４、５に同時にキーオントリガを与え、既に説明したのと同様の処理により、ストリーム波形データのエンドレス録音とエンドレス再生を実行する。録音と再生のチャンネルに同時にキーオンを掛けるため、録音と再生でデータ転送の要求割込が共通化できるし、録音後に、新たに録音されたストリーム波形データのタイミングを、同時に再生したストリーム波形データに容易に同期させることができる。
【００８１】
上記説明した本発明の実施の形態にかかる楽音生成装置１では、ディスク１４への記憶単位と波形メモリ２１のバッファサイズが異なっており、ディスク１４と波形メモリ２１の転送の途中に介在されるＲＡＭ１３において、ＣＰＵ１０がサイズ変換をおこなっている。そのため、ディスク１４側と録音再生側で異なるそれぞれにとって都合のよい記憶単位を使用することができる。すなわち、ディスク１４側ではクラスタを単位の効率のよい記憶を行い、録音再生側では複数トラックで共通の区間単位の管理を行なえるようになる。これにより、複数トラック間において区間が共通のため、途中から再生開始する場合のトラック間の同期がとりやすくなる。また、本発明にかかるマルチトラック録音再生装置であれば、一般に波形メモリより大きい容量とされるＣＰＵ１０のシステムＲＡＭの一部を、ディスクキャッシュとして使用することができる。
【００８２】
なお、上記の説明では本発明は、マルチトラック録音再生装置の機能を備えた楽音生成装置として説明したが、単にマルチトラック録音再生装置であってもよい。
さらに、本発明において述べている一括処理による転送とは、共通のデータ転送の要求割込に応じて複数トラックの波形データを時分割で転送することを意味しており、複数トラック分の転送法は上述した方法に限らずいろいろなバリエーションが考えられる。例えば、複数トラック分の波形データを１、ないし、複数サンプルごとに時分割化して転送してもよい。あるいは、波形メモリの波形データの転送元ないし転送先の準備状態に応じて、波形データを準備できたサンプル数ずつ送るようにしてもよい。または、複数トラック分の複数バッファの転送すべき波形データの量が均一化されるように制御してもよい。
【００８３】
ところで、上記説明した本発明の実施の形態にかかる楽音生成装置１では、各トラックの録音された波形データの存在しない期間（無音期間）では、その期間の最初に無音のストリーム波形データをバッファに転送することにより、その期間の無音の再生が行なわれるようになっていた。しかしながら、この無音のストリーム波形データの転送は、以下に説明する第１の態様あるいは第２の態様を採用することにより省略することが可能であり、省略した際に制御手段５の負荷を軽減することができる。
【００８４】
第１の態様は、図５に示す波形メモリ２１上に形成されたバッファメモリにおいて、複数トラックに共通の（予め何れのトラックにも属さない）バッファBufZ（図示しない）を確保し、そのバッファに無音のストリーム波形データを記憶しておく方法である。ここで、このバッファBufZのサイズは、同時に再生する複数トラックに対応した複数バッファのうちの一番大きいバッファと同じサイズ（２ｋワード）にする。
各トラックの再生において無音期間の再生を開始する場合は、制御手段５の制御の基で、読出書込回路３１のそのトラックのトラック再生チャンネルで作成している波形データ読出アドレスを、そのチャンネルに対応したバッファ（第１バッファメモリないし第２バッファメモリ）のアドレスから共通のバッファBufZのアドレスにジャンプさせる。すなわち、その無音期間の間はバッファBufZからの無音の波形データの読み出しを行なわせる。無音期間中に、制御手段５は、無音期間後に再生するストリーム波形データをそのチャンネルに対応したバッファに転送し、さらに、無音期間が終了したら、同読出アドレスをその転送されたバッファに再ジャンプさせ、そのチャンネルに対応したバッファによる通常再生に復帰させる。
【００８５】
ここで、バッファBufZのサイズは上述のように設定されているので、無音期間の開始時と終了時のジャンプでは、その前後で各トラック再生チャンネルの読出アドレスのバッファ先頭位置からの相対位置、同読出アドレスの進行速度、および、バッファのサイズを同じにすることができる。そのため、各バッファ内での読出アドレスの相対位置はジャンプにより影響を受けず、ジャンプしても読出アドレスにおけるトラック間の同期が保たれたままとなる。この場合、読出書込回路３１に読出アドレスのジャンプ機能が必要となるが、これは従来のサンプラ等で実現されている簡単な構成で実現可能である。また、バッファBufZは、複数のトラックに共通であり、トラック数分のバッファは必要ない。さらに、各トラックの第１バッファと第２バッファに共通のバッファとすることにより、バッファBufZの容量を更に削減している。このように、少ないハードウェアの追加で、無音のストリーム波形データの転送を省略することができる。
【００８６】
また、第２の態様は、図２に示す波形メモリ２１から読出書込回路３１への読み出し経路のいずれかの任意の場所に、読み出される波形データの全ビットをマスクしてゼロにしてしまうマスク回路（図示しない）を設ける方法である。すなわち、各トラックの再生において無音期間の再生を開始する場合は、そのタイミングで、制御手段５（ないしＣＰＵ１０）は、マスク回路に対して読出書込回路３１のそのトラックのトラック再生チャンネルで読み出し中の波形データをマスクする開始を指示する。マスクの開始されたチャンネルでは、波形メモリ２１から読み出される波形データはマスクされ、ゼロの波形データに基づく無音の再生が行なわれる。そして、制御手段５は、無音期間中に無音期間後に再生するストリーム波形データをそのチャンネルに対応したバッファに転送し、無音期間の終了タイミングで、マスク回路に対してマスクの停止を指示する。マスクの停止されたチャンネルは、波形メモリ２１から読み出された波形データに基づく通常のトラック再生に復帰する。
【００８７】
この例では、そもそも、無音のストリーム波形データをバッファに記録すること自体が不要となり、第１の態様と比べても、バッファBufZが不要となる点が優れている。マスク回路は簡単なアンドゲートを使用して実現できる。このため、さらに少ないハードウェアの追加で、無音のストリーム波形データの転送を省略することができる。この第２の態様において、さらに制御手段５がマスクの開始ないし停止とともにその実行タイミングを指示するようにすると、マスクタイミングの精度を向上させることもできる。
なお、ストリーム波形データをマスクすることに代えて、無音期間においてエンベロープ乗算器の乗算係数をゼロにしてミュートするようにしてもよい。これによっても無音のストリーム波形データの転送を省略することができる。
【００８８】
さらにまた、上記説明した本発明の実施の形態にかかる楽音生成装置１におけるバッファメモリはダブルバッファとしたが、バッファメモリは必ずしもダブルバッファにしなくてもよい。例えば、トラックごとに３以上のバッファにして、それに順次書き込むようにしてもよい。あるいは、１トラックごとに１つのバッファにして、サンプルカウンタで所定量の空きが生じるのを検出して波形データの転送を要求するようにしてもよい。このようにすると、途中から再生を開始するトラックについて、再生開始タイミングが含まれる区間の直前のデータ転送の割込要求の一つ前のデータ転送の割込要求でストリーム波形データのバッファへの転送を開始する代わりに、当該割込要求以前の他のタイミングのデータ転送の割込要求で転送を開始するようにすることができるようになる。さらに、バッファとしてＦＩＦＯを使用したり、デュアルポートメモリを使用してもよい。本発明では、独立した複数トラックについて転送の要求を共用するとともに、それに応じた波形データの転送を一括して行うところに特徴がある。本発明の実施の形態においては、具体的なバッファの構成の仕方は自在に変更することができる。
【００８９】
さらにまた、上記説明したＸアクセスにおいて、波形データをＦＩＦＯに書き込む処理、ないし、波形データをＦＩＦＯから読み出す処理を、ＣＰＵの代わりに、そのＣＰＵにより制御されたＤＭＡＣ（ダイレクトメモリアクセス・コントローラ）が行うようにしてもよい。ＤＭＡＣが代わりに行うようにすれば、ＣＰＵの割り込み処理の起動に伴うオーバーヘッド増加を防ぐことができる。
さらにまた、上記の説明において述べたストリーム波形データとは、連続した複数サンプリング周期分の複数サンプルデータからなる波形データを意味している。さらにまた、有意のストリーム波形データとは、マイク等から入力音や電子楽器の演奏音を録音することに得られたストリーム波形データや、ＣＤ、レコード、ダウンロードした音楽コンテンツからリッピングされたストリーム波形データなどの何らかの録音された音の含まれるデータであり、無音のストリーム波形データとは、録音ではなく値が０のサンプルを並べることにより作られたデータのことである。
【００９０】
【発明の効果】
本発明は以上説明したように、波形データが順次転送される複数のバッファから複数トラックの波形データを読み出して複数トラックの楽音を再生する際に、複数の各バッファは、転送される波形データのサンプリング周波数とサンプルあたりのビット数に対応するバッファサイズとされて、複数のバッファへの転送処理を一括して行うことができるようにしている。これにより、各トラック毎の割込要求をそれぞれ送出する必要をなくすことができ、制御手段への割込頻度を低減することができる。さらに、割込要求の送出タイミングが所定周期となることから、割込要求の発生タイミングが変動することを防止することができる。従って、制御手段の動作を安定化することができる。また、一括して転送処理を行えることから、複数のバッファの書込／読出の管理を行いやすくなる。
さらに、データ転送要求の発生タイミングが複数のバッファにおいて同期していることから、基準サンプリング周期をカウントするサンプリングカウンタの計数値が所定値となった際に、複数のバッファへのデータ転送の割込要求を送出することができるようになり、それぞれのバッファにデータ転送要求の検出および割込要求を送出するハードを設ける必要がなくすことができるようになる。
【図面の簡単な説明】
【図１】  本発明にかかるマルチトラック録音再生装置の機能を備えている本発明の実施の形態にかかる楽音生成装置の構成例を示すブロック図である。
【図２】  本発明の実施の形態にかかる楽音生成装置における音源部の詳細構成を示す図である。
【図３】  本発明の実施の形態にかかる楽音生成装置における音源部の動作タイミングを示す図である。
【図４】  本発明の実施の形態にかかる楽音生成装置における音源部のデータの流れを説明するための機能ブロック図である。
【図５】  本発明の実施の形態にかかる楽音生成装置における波形メモリ上におけるバッファの配置構成を示す図である。
【図６】  録音されたストリーム波形データ上の再生範囲を説明するための図である。
【図７】  本発明の実施の形態にかかる楽音生成装置におけるマルチトラック録音／再生処理時の転送タイミングを示す図である。
【図８】  本発明の実施の形態にかかる楽音生成装置におけるマルチトラック再生処理時の再生タイミングを示す図である。
【図９】  従来の楽音データ録音再生装置の概略構成を示すブロック図である。
【図１０】  従来の楽音データ録音再生装置における再生タイミングを示す図である。
【図１１】  従来の楽音データ録音再生装置における他の再生タイミングを示す図である。
【符号の説明】
１  楽音生成装置、５  制御手段、１０  ＣＰＵ、１１  タイマ、１２  ＲＯＭ、１３  ＲＡＭ、１４  ディスク、１５  ドライブ、１６  ＭＩＤＩインタフェース、１７  ネットワークインタフェース、１８  パネルＳＷ、１９  パネル表示器、２０  音源部、２１  波形メモリ、２２  外部回路、２３  ＤＡＣ、２４サウンドシステム、２５  バス、３０  音源制御レジスタ、３１  読出書込回路、３２  ＥＧ付与回路、３３  ミキサ、３４  ＤＳＰ、３５  セレクタ、４０Ｘアクセス回路、４１  ＦＩＦＯ、４２  ＸＡレジスタ、４３  ポインタレジスタ、４４  ＦＩＦＯ制御レジスタ、５１  音源手段、５２  書込手段、５３  ミキサ手段、１２０  楽音データ録音再生装置、１２１  大容量メモリ、１２２外部回路、１３１  再生制御部、１３２ａ，１３２ｂ  録音バッファメモリ、１３３ａ，１３３ｂ  読出バッファ、１３４ａ，１３４ｂ  再生バッファ、１３５  再生音発生部
【図１】
0003815353.tif 000002
【図２】
0003815353.tif 000003
【図３】
0003815353.tif 000004
【図４】
0003815353.tif 000005
【図５】
0003815353.tif 000006
【図６】
0003815353.tif 000007
【図７】
0003815353.tif 000008
【図８】
0003815353.tif 000009
【図９】
0003815353.tif 000010
【図１０】
0003815353.tif 000011
【図１１】
0003815353.tif 000012