(57)【特許請求の範囲】
【請求項１】
装置全体の制御を行う中央処理装置と、
シーケンスデータに基づく波形再生に使用される複数の波形データを記憶する第１のメモリと、
複数の波形データを記憶することのできる第２のメモリと、
前記第２のメモリから波形データを読み出し、該読み出した波形データを再生する波形出力回路とを有する波形再生装置であって、
前記シーケンスデータは、各波形データに対する再生命令と該再生命令を発するタイミングを示す時間データとを含んでおり、
前記中央処理装置は、シーケンス再生指示に応答して、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて最初に再生される所定数の波形データを前記第１のメモリから読み出して前記第２のメモリに記憶するとともに、該記憶された所定数の波形データの前記第２のメモリにおける記憶アドレスとその再生開始のタイミングとを、各該波形データに対する再生命令と該再生命令に対応する時間データに基づいて前記波形出力回路に設定し、
前記波形出力回路は、設定された各記憶アドレスの波形データを前記第２のメモリから読み出して、対応する再生開始のタイミングからその再生を開始し、
前記中央処理装置は、前記第２のメモリに記憶された波形データ中のいずれかの波形データについて前記波形出力回路による読み出しが終了したとき、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて次に再生される波形データを前記第１のメモリから読み出して前記第２のメモリに記憶するとともに、該記憶された波形データの第２のメモリにおける記憶アドレスとその再生開始のタイミングとを、該波形データに対する再生命令と該再生命令に対応する時間データに基づいて前記波形出力回路に設定することを特徴とする波形再生装置。
【請求項２】
装置全体の制御を行う中央処理装置と、
シーケンスデータに基づく波形再生に使用される複数の波形データを記憶する第１のメモリと、
複数の波形データを記憶することのできる第２のメモリと、
複数チャンネルの各チャンネル毎に複数サンプルの波形データを記憶するバッファメモリと、
サンプリング周期毎に複数チャンネルの波形データが入力されるディジタルオーディオ回路と、
前記バッファメモリに所定量の空きが生じたときに、前記第２のメモリに記憶された波形データを所定の複数サンプルを単位として前記バッファメモリに転送する第１の転送回路と、
前記バッファメモリに記憶された複数チャンネルの波形データを、各サンプリング周期ごとに１サンプルずつ読み出して前記ディジタルオーディオ回路に転送する第２の転送回路とを有する波形再生装置であって、
前記シーケンスデータは、各波形データに対する再生命令と該再生命令を発するタイミングを示す時間データとを含んでおり、
前記中央処理装置は、
シーケンス再生指示に応答して、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて最初に再生される所定数の波形データを前記第１のメモリから読み出して前記第２のメモリに記憶し、前記第１の転送回路に対して該第２のメモリに記憶された前記所定数の波形データを前記バッファメモリへ転送することを指示するとともに、前記第２の転送回路に対して、前記バッファメモリから各波形データを読み出して前記ディジタルオーディオ回路に転送することを開始するタイミングを前記波形データに対する再生命令とそれに対応する前記時間データに基づいて設定し、
前記第２のメモリに記憶された波形データ中のいずれかの波形データについて前記第１の転送回路による転送が終了したとき、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて次に再生される波形データを前記第１のメモリから読み出して前記第２のメモリに記憶し、前記第１の転送回路に対して該波形データを前記バッファメモリへ転送することを指示するとともに、前記第２の転送回路に対して、前記バッファメモリから各波形データを読み出して前記ディジタルオーディオ回路に転送することを開始するタイミングを前記波形データに対する再生命令とそれに対応する前記時間データに基づいて設定することを特徴とする波形再生装置。
【請求項３】
前記シーケンスデータは前記ディジタルオーディオ回路の制御命令を含んでおり、前記ディジタルオーディオ回路は、制御命令に対応する前記時間データにより指示されるタイミングで該制御命令に基づいて制御されることを特徴とする請求項２記載の波形再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、波形サンプルデータからオーディオ信号を再生する波形再生装置に関する。
【０００２】
【従来の技術】
パーソナルコンピュータなどにおいては、アナログデジタル変換器（Ａ／Ｄ変換器、ＡＤＣ）、デジタルアナログ変換器（Ｄ／Ａ変換器、ＤＡＣ）等を備えた符号化復号化回路（ＣＯＤＥＣ）と該ＣＯＤＥＣを駆動するためのＣＯＤＥＣドライバソフトウエアとを備えることにより、波形サンプルデータ（ＷＡＶＥデータ）のモノラルあるいはステレオの記録再生を行なうことができるようになされている。
従来のこのようなＣＯＤＥＣとＣＯＤＥＣドライバによるＷＡＶＥデータの再生方式においては、各サンプリング周期（ＤＡＣサイクル、例えば、４４．１ＫＨｚ）毎にバスを占有して、１サンプルのＷＡＶＥデータをＣＯＤＥＣに転送することが行なわれている。また、録音を行うときにも同様に、各サンプリング周期毎に１波形サンプルデータの転送が行われている。
【０００３】
【発明が解決しようとする課題】
上述した従来の波形サンプルデータの録音再生方法においては、各サンプリング周期毎にバスを使用して波形サンプルデータを転送しているため、バスの使用権の切り替えが頻繁に発生し、システム全体の動作効率が低下する原因となっていた。
また、録音再生することのできるチャンネル数も、モノラルまたはＬとＲがインターリーブされたステレオに限られており、独立した複数チャンネル（複数トラック）の録音再生を行うことができなかった。かりに、独立した２チャンネルの録音再生を行う場合には、２個の独立したＤＭＡチャンネルを必要としていた。
【０００４】
そこで、本発明は、波形サンプルデータを再生する場合に、システムの動作効率を低下させることなく波形サンプルデータを再生することのできる波形再生装置を提供することを目的としている。
また、複数トラックを独立して同時に再生することのできる波形再生装置を提供することを目的としている。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、本発明の波形再生装置は、装置全体の制御を行う中央処理装置と、シーケンスデータに基づく波形再生に使用される複数の波形データを記憶する第１のメモリと、複数の波形データを記憶することのできる第２のメモリと、前記第２のメモリから波形データを読み出し、該読み出した波形データを再生する波形出力回路とを有する波形再生装置であって、前記シーケンスデータは、各波形データに対する再生命令と該再生命令を発するタイミングを示す時間データとを含んでおり、前記中央処理装置は、シーケンス再生指示に応答して、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて最初に再生される所定数の波形データを前記第１のメモリから読み出して前記第２のメモリに記憶するとともに、該記憶された所定数の波形データの前記第２のメモリにおける記憶アドレスとその再生開始のタイミングとを、各該波形データに対する再生命令と該再生命令に対応する時間データに基づいて前記波形出力回路に設定し、前記波形出力回路は、設定された各記憶アドレスの波形データを前記第２のメモリから読み出して、対応する再生開始のタイミングからその再生を開始し、前記中央処理装置は、前記第２のメモリに記憶された波形データ中のいずれかの波形データについて前記波形出力回路による読み出しが終了したとき、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて次に再生される波形データを前記第１のメモリから読み出して前記第２のメモリに記憶するとともに、該記憶された波形データの第２のメモリにおける記憶アドレスとその再生開始のタイミングとを、該波形データに対する再生命令と該再生命令に対応する時間データに基づいて前記波形出力回路に設定するようになされているものである。
これにより、波形データの再生終了時に次の波形の読み込みを開始するようにしているため、メモリへの読み込みから再生タイミングまでに時間的な余裕ができ、安定な動作をさせることができる。また、波形読み込みのトリガを発生する処理が単純なものとなり、システムの動作効率を低下することなくシーケンスデータを再生することができる。
【０００７】
また、本発明の他の波形再生装置は、装置全体の制御を行う中央処理装置と、シーケンスデータに基づく波形再生に使用される複数の波形データを記憶する第１のメモリと、複数の波形データを記憶することのできる第２のメモリと、複数チャンネルの各チャンネル毎に複数サンプルの波形データを記憶するバッファメモリと、サンプリング周期毎に複数チャンネルの波形データが入力されるディジタルオーディオ回路と、前記バッファメモリに所定量の空きが生じたときに、前記第２のメモリに記憶された波形データを所定の複数サンプルを単位として前記バッファメモリに転送する第１の転送回路と、前記バッファメモリに記憶された複数チャンネルの波形データを、各サンプリング周期ごとに１サンプルずつ読み出して前記ディジタルオーディオ回路に転送する第２の転送回路とを有する波形再生装置であって、前記シーケンスデータは、各波形データに対する再生命令と該再生命令を発するタイミングを示す時間データとを含んでおり、前記中央処理装置は、シーケンス再生指示に応答して、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて最初に再生される所定数の波形データを前記第１のメモリから読み出して前記第２のメモリに記憶し、前記第１の転送回路に対して該第２のメモリに記憶された前記所定数の波形データを前記バッファメモリへ転送することを指示するとともに、前記第２の転送回路に対して、前記バッファメモリから各波形データを読み出して前記ディジタルオーディオ回路に転送することを開始するタイミングを前記波形データに対する再生命令とそれに対応する前記時間データに基づいて設定し、前記第２のメモリに記憶された波形データ中のいずれかの波形データについて前記第１の転送回路による転送が終了したとき、前記シーケンスデータに含まれる前記再生命令と前記時間データに応じて次に再生される波形データを前記第１のメモリから読み出して前記第２のメモリに記憶し、前記第１の転送回路に対して該波形データを前記バッファメモリへ転送することを指示するとともに、前記第２の転送回路に対して、前記バッファメモリから各波形データを読み出して前記ディジタルオーディオ回路に転送することを開始するタイミングを前記波形データに対する再生命令とそれに対応する前記時間データに基づいて設定するようになされているものである。
これにより、順次再生が終了したところへ次の波形の再生を設定することができるため処理が単純となり、また、その処理が多少遅れても再生のタイミングには影響をおよぼすことがない。したがって、システムの動作効率を低下することなく、安定した動作を行う波形再生装置を提供することができる。
【０００８】
さらにまた、前記シーケンスデータは前記ディジタルオーディオ回路の制御命令を含んでおり、前記ディジタルオーディオ回路は、制御命令に対応する前記時間データにより指示されるタイミングで該制御命令に基づいて制御されるようになされているものである。
これにより、ディジタルオーディオ回路において、再生される波形に対する音量、効果などの制御を再生される波形に同期したタイミングで行うことが可能となる。
【０００９】
【発明の実施の形態】
図１は、本発明の波形再生装置の一実施の形態である波形録音再生装置の全体構成を示すブロック図である。この図において、１０はこの波形再生装置全体の制御を行うための中央処理装置（ＣＰＵ）、１１は各種のプログラムや定数データなどを記憶するＲＯＭ、１２は実行するプログラムやデータが読み込まれるとともに各種バッファ領域やワークエリアとして使用される第１のランダムアクセスメモリ（ＲＡＭ）、１３は各種の情報を表示する表示装置、１４は該表示装置１３をローカルバス１８に接続するためのインターフェース回路、１５はユーザからの各種の指示などを入力するためのキーボード、１６は該キーボード１５をローカルバス１８に接続するためのインターフェース回路、１７は時間を計測したりＣＰＵ１０に対してタイマ割込をかけるタイマである。これらＣＰＵ１０、ＲＯＭ１１、第１のＲＡＭ１２、インターフェース回路１４、１６およびタイマ１７は、ローカルバス１８に接続されている。
【００１０】
ここで、前記第１のＲＡＭ１２上には、複数チャンネルの波形サンプルデータが記憶されるバッファ領域（ＰＣバッファ）が確保される。このＰＣバッファは、前記ＣＰＵのメモリアドレス空間上の任意の位置に任意の大きさで設定することができる。なお、前記波形サンプルデータは、１ワードが３２ビットあるいは１６ビット等いずれのタイプのデータであってもよいが、ここでは、１ワードが１６ビットの波形サンプルデータであるものとして説明する。
【００１１】
２０はＰＣＩ（Peripheral Component Interconnect）バスであり、１９は前記ローカルバス１８とＰＣＩバス２０とを接続するためのＨＯＳＴ−ＰＣＩブリッジ回路である。なお、ＰＣＩバスは６４ビットに拡張することができるが、ここでは３２ビットのデータバス幅をもつものとする。ＰＣＩバス２０は、１つの３２ビットのデータバスをアドレス用およびデータ用に時分割で使用する。例えばデータ転送時には、まず、アドレスを該データバスに送出して転送先を指定し、次に同バスを使用してデータ転送を実行する。
【００１２】
２１は第２のランダムアクセスメモリ（ＲＡＭ）、２２は該第２のＲＡＭ２１を前記ＰＣＩバス２０に接続するためのインターフェース回路である。また、２３は各種の波形サンプルデータやプログラムなどが格納されるハードディスク装置、２４は各種の波形サンプルデータやプログラムなどを記録したＣＤ−ＲＯＭを駆動するＣＤ−ＲＯＭ装置、２５はハードディスク装置２３やＣＤ−ＲＯＭ装置２４などの外部記憶装置を接続するためのＳＣＳＩ（small computer system interface）インターフェース回路である。さらに、２７はネットワークインターフェース回路であり、電話回線や専用線等を介して外部のネットワーク２６と接続するための回路である。なお、この図には示されていないが、ＭＩＤＩ信号を入出力するためのＭＩＤＩインターフェース等を設けても良い。
【００１３】
３０は、前記第１のＲＡＭ１２中のＰＣバッファに記憶されている波形サンプルデータを読み出し、該読み出された波形サンプルデータに対して必要に応じてエフェクト付与などの加工を施してサウンドシステム２９に出力し、また、オーディオ入力端子からマイクロフォン２８等を介して入力されるオーディオ信号を波形サンプルデータに変換して、前記第１のＲＡＭ１２中のＰＣバッファに格納する波形入出力回路（サウンド入出力ボード）であり、２８は前記サウンド入出力ボード３０に設けられたサウンド入力端子に接続されたマイクロフォン、２９は前記サウンド入出力ボード３０から出力されるオーディオ信号を増幅して放音するサウンドシステムである。なお、このサウンド入出力ボード３０の内部構成については後述する。
【００１４】
図示するように、前記ＰＣＩバス２０には、前記ＨＯＳＴ−ＰＣＩブリッジ回路１９、インターフェース回路２２、ネットワークインターフェース回路２７、ＳＣＳＩインターフェース回路２５およびサウンド入出力ボード３０が接続されている。ここで、前記ＨＯＳＴ−ＰＣＩブリッジ回路１９、ネットワークインターフェース回路２７、ＳＣＳＩインターフェース回路２５およびサウンド入出力ボード３０は、いずれもバス・マスターとなることができ、例えば前記ＨＯＳＴ−ＰＣＩブリッジ回路１９に設けられているバスアービターに対してバス使用要求を出して、バス使用権を獲得した後にＰＣＩバス２０を使用して当該データ転送を実行することができる。
【００１５】
なお、バス構成は、前記図１に示した例に限られることはない。例えば、図１におけるローカルバスを、ＣＰＵ専用のバスと周辺Ｉ／Ｏ等を接続するためのローカルＰＣＩバスの２つのバスにより構成するなど、様々なバス構成とすることが出来る。
また、図１においては、前記ハードディスク装置２３およびＣＤ−ＲＯＭ装置２４はＰＣＩバス２０に接続されているものとしたが、前記ローカルバス１８にＳＣＳＩインターフェース回路を接続し、これにハードディスク装置やＣＤ−ＲＯＭ装置あるいはＤＶＤ装置などの外部記憶装置を接続するようにしても良い。
【００１６】
次に、前記サウンド入出力ボード３０の内部構成について説明する。図２は、前記サウンド入出力ボード３０の一構成例を示すブロック図である。この図において、３１は前記ＰＣＩバス２０に接続された第１の転送回路、３２はバッファメモリとして使用される第３のランダムアクセスメモリ（ＲＡＭ３）であり、この第３のＲＡＭ３２には再生バッファ（Ｐバッファ：Play Buffer）と録音バッファ（Ｒバッファ：Record Buffer）の２種類のバッファが設けられており、１チャンネル当たり例えば１Ｋワード（＝１０２４ワード）の容量となされている。この例においては、再生１６チャンネル、録音４チャンネルの合計２０チャンネルとされており、各チャンネル毎に１Ｋワードの波形サンプルデータを格納することができるようになされている。また、３３は前記ＰバッファおよびＲバッファとミキサ３４との間のデータ転送を実行する第２の転送回路である。後述するように、ＲＡＭ３２へのアクセスはサンプリング周期（ＤＡＣサイクル）の２分の１の期間を単位として時分割多重化されており、各ＤＡＣサイクルの前半を第２の転送回路３３が、また、後半を第１の転送回路３１がそれぞれ使用してアクセスを行っている。
【００１７】
３４はミキサ、３５は信号処理プロセッサ（ＤＳＰ：Digital Signal Processor）、３６はＡ／Ｄ変換器、３７はＤ／Ａ変換器である。ミキサ３４は例えば入力３６チャンネル、出力２４チャンネルの構成とされており、前記マイクロフォン２８から入力され前記Ａ／Ｄ変換器３６においてデジタルデータに変換された波形サンプルデータ、前記第２の転送回路３３により転送される前記Ｐバッファからの波形サンプルデータおよび前記ＤＳＰ３５において処理された波形サンプルデータを入力とし、前記ＣＰＵ１０から供給される制御データに基づいてミキシング動作を行って、前記第２の転送回路３３を介して前記Ｒバッファ、前記ＤＳＰ３５あるいは前記Ｄ／Ａ変換器３７に出力する。
【００１８】
ＤＳＰ３５は、前記ミキサ３４から入力される１６チャンネルの波形サンプルに対し所定のエフェクト付加や補間演算等の各種の処理を実行し、処理結果の１６チャンネルの波形サンプルを前記ミキサ３４に出力する。なお、このＤＳＰ３５は１ＤＡＣサイクル期間に複数種類の信号処理、例えば補間演算、各種のエフェクト処理等を実行することのできるマルチ（プログラム）ＤＳＰとされている。
Ａ／Ｄ変換器３６は前記マイクロフォン２８から入力されるオーディオ信号（音声信号あるいは楽音信号）を所定のサンプリングレート（ＤＡＣサイクル、例えば４４．１ＫＨｚ）でサンプリングして所定ビット数（ここでは１６ビット）の波形サンプルデータに変換して、前記ミキサ３４に出力する。ここでは、４チャンネルの波形サンプルを入出力することができるように構成されている。
Ｄ／Ａ変換器３７は、前記ミキサ３４から出力される４チャンネルの波形サンプルデータをアナログ信号に変換して前記サウンドシステム２９に出力する。
【００１９】
前記ミキサ３４では、サンプリング周期毎に、第２の転送回路から１６チャンネル、マルチＤＳＰ３５から１６チャンネル、Ａ／Ｄ変換器３６から４チャンネルの計３６チャンネルの波形データを入力し、制御データに含まれる各入力／出力毎に独立して設定されたレベルデータに基づいて２０通りのミキシング処理を行い、そのミキシング結果を第２の転送回路に４チャンネル、マルチＤＳＰ３５に１６チャンネル、Ｄ／Ａ変換器３７に４チャンネルの計２４チャンネルの波形データとしてそれぞれ出力する。
【００２０】
ここで、第２の転送回路３３、マルチＤＳＰ３５、Ａ／Ｄ変換器３６、Ｄ／Ａ変換器３７をどのように接続するかを、前記レベルデータにより設定することができる。例えば、外部マイクロフォン２８から入力する波形データをＰＣバッファに録音したいときは、各ＤＡＣサイクル毎に、Ａ／Ｄ変換器３６から入力する波形データをミキサ３４で音量制御してマルチＤＳＰ３５に送り、マルチＤＳＰ３５でイコライザ処理やコンプレッサ処理を行った波形データを再びミキサ３４に入力して音量制御した後に、ミキサ３４内の転送回路２への送出レジスタ（図示せず）に記憶させる。また、録音時の結線は、録音用の４チャンネルのそれぞれについて独立して設定できる。
【００２１】
また、ＰＣバッファの波形データを再生したいときには、各ＤＡＣサイクル毎に、転送回路２からミキサ３４内の入力レジスタ（図示せず）に出力される波形データをミキサ３４で音量制御してマルチＤＳＰ３５に送り、マルチＤＳＰ３５でコーラス効果や残響効果のエフェクト処理を行った波形を再びミキサ３４に入力して、音量制御した後にＤ／Ａ変換器３７に出力する。再生時の結線は、再生用の１６チャンネルのそれぞれについて独立に設定することができる。
さらに他の例として、Ａ／Ｄ変換器から入力する波形データをマルチＤＳＰ３５に送ってエフェクトを付与してＤ／Ａ変換器３７に出力するよう設定したり、再生チャンネルで再生したＰＣバッファの波形データを、マルチＤＳＰでイコライザ処理等の処理を施した後、録音チャンネルで別領域のＰＣバッファに記憶するよう設定することもできる。
【００２２】
なお、上述したようにサンプリング周期で処理を行う、ミキサ３４、ＤＳＰ３５、Ｄ／Ａ変換器３７等をディジタルオーディオ回路とよぶ。これらディジタルオーディオ回路に入力された波形データは、最終的にはアナログ波形に変換されて、さらにスピーカ等で音に変換されることとなる。
【００２３】
３８は例えば３２ビット構成とされたカウンタであり、前記ＤＡＣサイクルに等しい４４．１ＫＨｚのパルスを計数するように構成されている。したがって、このカウンタ３８はＤＡＣサイクルを単位として計数した時刻データを出力する。３９は前記カウンタ３８から出力される時刻データおよび後述するレジスタ４０に格納されている各種の指定時刻データとの比較結果に基づいて前記第１の転送回路３１あるいは第２の転送回路３３の動作を制御するタイミング発生部である。
また、４０はレジスタであり、このサウンド入出力ボード３０における前記第１の転送回路３１、第２の転送回路３３、カウンタ３８、タイミング発生部３９、ＤＳＰ３５、Ａ／Ｄ変換器３６およびＤ／Ａ変換器３７等に対する各種制御に必要な各種の制御データあるいは変数が前記ＣＰＵ１０により設定されるようになされている。なお、このレジスタ４０に設定される各データの詳細については後述する。
【００２４】
さて、このように構成された波形録音再生装置において、波形再生時には、前記第１のＲＡＭ１２上のＰＣバッファに格納されている各チャンネルの波形サンプルデータを前記第１の転送回路３１の制御のもとに前記サウンド入出力ボード３０内の前記第３のＲＡＭ３２のＰバッファに３２サンプル単位で順次転送し、前記第２の転送回路３３の制御のもとに該第３のＲＡＭ３２から各発音チャンネルにつき各ＤＡＣサイクル毎に１波形サンプルデータずつ前記ミキサ３４（及びマルチＤＳＰ３５）を介して前記Ｄ／Ａ変換器３７に出力して、前記サウンドシステム２９から当該オーディオ信号を出力する。また、波形録音時には、前記マイクロフォン２８から入力され前記Ａ／Ｄ変換器３６において波形サンプルデータに変換されて（マルチＤＳＰ３５を介して）前記ミキサ３４から出力されるオーディオ信号を前記第２の転送回路３３の制御のもとに前記第３のＲＡＭ３２中のＲバッファに格納し、該第３のＲＡＭ中のＲバッファ中に格納された波形サンプルデータを前記第１の転送回路３１の制御のもとに、前記第１のＲＡＭ１２中のＰＣバッファに３２サンプル単位で転送する。
【００２５】
この様子を図３を参照して説明する。図３は、前記第１のＲＡＭ１２に設けられたＰＣバッファ、前記第３のＲＡＭ３２に設けられたＰバッファあるいはＲバッファおよび前記ミキサ３４の間を波形サンプルデータが転送される様子を説明するための図であり、（ａ）は再生時のデータの流れ、（ｂ）は録音時のデータの流れを示す図である。前述したように、この実施の形態においては、再生が１６チャンネル、録音が４チャンネルとされており、図示するようにチャンネル番号０〜１５までが再生チャンネル、チャンネル番号１６〜１９までが録音チャンネルとされている。前記Ｐバッファおよび前記Ｒバッファは各再生チャンネル、各録音チャンネルに対応して互いに独立して設けられており、それぞれ波形データを記憶するリングバッファとし循環的に使用される。
【００２６】
図３の（ａ）は、前記チャンネル番号０〜１５の再生データの流れを示すもので、ここには１つのチャンネルｘについてのみ図示してある。図示するように、前記第１のＲＡＭ１２中に設けられた第ｘチャンネル（ｘ＝０，１，…，１５）に対応するＰＣバッファ領域は開始アドレスＳＡ［ｘ］と終了アドレスＥＡ［ｘ］とにより規定されており、ＴＰ［ｘ］は、該ＰＣバッファ領域の読み出し位置を示す転送ポインタである。
【００２７】
前記サウンド入出力ボード３０は、１ＤＡＣサイクルを２つに分割し、１ＤＡＣサイクルの前半の期間にＰＣバッファからの波形サンプルデータの読み出しが必要であるか否かを判定する。そして、波形サンプルデータの読み出しが必要な場合には、同ＤＡＣサイクルの後半の期間に、バスアービターにＰＣＩバス２０の使用要求を出力し、バスの使用権を獲得して、ＲＡＭ１２をアクセスし、転送ポインタＴＰ［ｘ］により指定されたアドレスから連続する３２ワードのデータを読み出し、Ｐバッファにバースト転送する。このとき、前記転送ポインタＴＰ［ｘ］は、１バストランザクション毎に１６アドレス（３２ワード分）だけ増加される。また、前記ＰＣバッファは３２ビットアドレス境界でアクセスされることとなる。ここで、バースト転送とは、最初にアドレスをデータバスに１回だけ出力し、次に複数のデータを連続的に転送する転送方法である。バースト転送では、１データ毎にアドレスを指定する必要がないため、メモリ上の指定したアドレスの位置から連続する複数アドレス分のデータをまとめて高速転送することができる。例えば、ＰＣＩバスの動作クロックを３３ＭＨｚとすると、１ＤＡＣサイクルで３２サンプルのバースト転送を行う場合には、バスの転送能力の０．１％程度が使用される。一方、３２サンプルをバースト転送を行わずに転送した場合には、その約４倍弱の転送時間を要する。
【００２８】
また、前記開始アドレスＳＡ［ｘ］と終了アドレスＥＡ［ｘ］の間には割り込み要求アドレスＩＡ［ｘ］を設定することができるようになされており、前記転送ポインタＴＰ［ｘ］がこの割り込み要求アドレスＩＡ［ｘ］に達したときに、前記ＣＰＵ１０に対して割り込み要求を発生するようになされている。
したがって、この割り込み要求アドレスＩＡ［ｘ］＝終了アドレスＥＡ［ｘ］に設定しておけば、ＣＰＵは、当該割り込みにより当該ＰＣバッファのデータの転送完了を検出することができ、その時点でそのＰＣバッファを開放してＲＡＭ１２上の他の波形データの再生に使用できるようにすることもできるし、あるいは、前記転送ポインタＴＰ［ｘ］＝ＳＡ［ｘ］とセットして当該ＰＣバッファに格納されている波形データを繰り返し再生させることもできる。
【００２９】
また、以下に示す方法を用いれば、１つの再生チャンネルｘの小容量のＰＣバッファ（例えば、４Ｋ〜６４Ｋワード）を使用して、前記ハードディスク装置２３あるいは前記ＣＤ−ＲＯＭ装置２４等の外部記憶装置に記憶されている大容量の波形データ（例えば数百Ｋ〜数十Ｍワード）を、順次読み出しながらダイレクト再生することができる。
【００３０】
まず、前記外部記憶装置に記憶された波形データの１つが再生指示されると、ＣＰＵは、その先頭部分の波形データをＰＣバッファ［ｘ］に転送する。そして、前記ＩＡ［ｘ］を前記ＳＡ［ｘ］と前記ＥＡ［ｘ］の中間の値に設定して同ＰＣバッファの再生を開始する。やがてＴＰ［ｘ］がＩＡ［ｘ］に達して割り込みが発生したら、ＣＰＵは、ＩＡ［ｘ］＝ＥＡ［ｘ］に設定するとともに、前記外部記憶装置から続きの波形データを読み出し、同ＰＣバッファ［ｘ］の前記開始アドレスＳＡ［ｘ］からその容量の１／２だけ格納する。さらに、ＴＰ［ｘ］がＩＡ［ｘ］に達して割り込みが発生したら、ＣＰＵは、ＴＰ［ｘ］＝ＳＡ［ｘ］かつＩＡ［ｘ］に前記中間の値を設定するとともに、前記外部記憶装置から続きの波形データを読み出し、同ＰＣバッファ［ｘ］の後半の１／２に格納する。以後、上述した前記中間の値に設定されたＩＡ［ｘ］での割り込みの処理と、ＥＡ［ｘ］に設定されたＩＡ［ｘ］での割り込みの処理を交互に繰り返して、前記外部記憶装置の指定された波形データの再生を最後まで行う。
なお、ＣＰＵは、上述したＰＣバッファ［ｘ］の半分の量の波形データの転送を、ＣＰＵの内蔵するダイレクトメモリアクセスコントローラＤＭＡＣで行ってもよいし、またその際にバースト転送を使用してもよい。
【００３１】
さて、前記第１のＲＡＭ１２上のＰＣバッファの転送ポインタＴＰ［ｘ］から読み出され、バースト転送された３２ワードの波形サンプルデータは、前記第３のＲＡＭ３２上のｘチャンネルのＰバッファの転送書き込みポインタＴＷＰ［ｘ］で示されるアドレスから順に書き込まれる。前述のように、このＰバッファは例えば各チャンネル１Ｋワードの大きさとされている。バースト転送毎に、ＴＷＰ［ｘ］は３２アドレスずつ進む。
このＰバッファのデータの読み出しは、前記第２の転送回路３３によりＤＡＣサイクルの前半に実行される。第２の転送回路３３は、前記Ｐバッファのオーディオ再生ポインタＡＰＰ［ｘ］により示されるアドレスから１ＤＡＣサイクル毎に１サンプルの波形サンプルデータを読み出し、前記ミキサ３４に転送する。なお、後述するように、この読み出しを開始／終了するタイミングは、前記タイミング発生部３９により制御される。
【００３２】
一方、前記図３の（ｂ）は録音チャンネルにおけるデータの流れを示す図である。前記マイクロフォン２８から入力され、前記Ａ／Ｄ変換器３６においてデジタルデータに変換されたオーディオデータは、必要に応じて前記ＤＳＰ３５において所定の信号処理を施された後、前記ミキサ３４から出力される。前記第２の転送回路３３は前記ミキサ３４からＤＡＣサイクル毎に出力される波形サンプルデータをＤＡＣサイクルの前半に前記第３のＲＡＭ３２中に設けられたｘチャンネル（ｘ＝１６，…，１９）のＲバッファのオーディオ録音ポインタＡＲＰ［ｘ］により指定されるアドレスに書き込む。このオーディオ録音ポインタはＤＡＣサイクル毎に順次インクリメントされる。なお、このＲバッファのサイズも、前記Ｐバッファと同様に各チャンネル１Ｋワードとされている。
【００３３】
このＲバッファに波形サンプルデータが所定量書き込まれると、ＤＡＣサイクルの後半において、前記第１の転送回路３１がバス・マスターとなり、この波形サンプルデータを前記第１ＲＡＭ中のＰＣバッファに３２ワードずつバースト転送により書き込む。このとき、前記Ｒバッファの転送読み出しポインタＴＲＰ［ｘ］を先頭アドレスとする３２ワードの波形サンプルデータが順次読み出され、前記第１のＲＡＭ１２上のＰＣバッファの転送ポインタＴＰ［ｘ］から順に書き込みが行われる。そして、転送ポインタＴＰ［ｘ］は、１バストランザクション毎に１６アドレス（３２ワード分）ずつ増加される。
【００３４】
なお、この録音の場合にも、前述の場合と同様に割り込み要求アドレスＩＡ［ｘ］を設定することにより、録音の終わったＰＣバッファを順次開放すること、あるいは、前記ＰＣバッファを小容量のダブルバッファとして使用して、入力する大容量の波形データをダイレクトにハードディスク装置等に録音することができる。
【００３５】
このように、本発明においては、バースト転送機能を有するＰＣＩバス２０に波形再生回路となるサウンド入出力ボード３０が接続されており、前記第１の転送回路３１が、ＰＣバッファからの波形サンプルの読み出しが必要となったときに、ＰＣＩバス２０の使用権を獲得して当該波形サンプルを前記サウンド入出力ボード３０上に設けられた当該チャンネルのバッファメモリに例えば３２サンプルずつバースト転送している。したがって、波形データの転送によるシステム全体の動作効率の低下を防止することが可能となり、また、複数チャンネルの波形データを同時に安定して再生することが可能となる。
【００３６】
次に、このように構成された波形録音再生装置の動作について、フローチャートを参照しながら詳細に説明する。
図４は、前記ＣＰＵ１０により実行されるメインルーチンの動作を示すフローチャートである。
まず、前記ＣＰＵ１０は、ステップＳ１１において、各領域の確保や、変数およびフラグの初期化等の初期設定処理を実行する。次に、何らかの起動要因の発生を待つ（ステップＳ１２およびＳ１３）。そして、起動要因が発生すると、ステップＳ１４に進み、その起動要因が何であるかを判定する。
【００３７】
起動要因が、スイッチあるいはＧＵＩ画面上の所定の領域に対するマウスのクリックなどのスイッチ操作であるときには、ステップＳ１５に進み、該操作されたスイッチに対応する処理を行う。ここで、波形再生に対応するスイッチが操作されたときは、後述する波形再生処理が行われることとなる。
また、前記起動要因が割り込みであるときには、ステップＳ１６に進み、当該割り込みに対応する処理が行われる。この割り込み処理については、後述する。
さらに、前記起動要因がスイッチ操作でもなく、割り込みでもなく、終了指示でもないその他の処理であるときには、ステップＳ１７に進み、当該起動要因に対応する処理が行われる。
さらにまた、前記起動要因が終了指示であるときには、ステップＳ１８に進み、メモリ領域の開放等の終了処理を実行する。
【００３８】
次に、本発明において実行される波形録音再生処理について説明するが、その前に、前記図２に示した前記レジスタ４０中に格納されている各フラグおよび変数について一通り説明する。
ＲＦはランフラグ（Run Flag）であり、このランフラグＲＦが「１」にセットされているときに、前記カウンタ３８はカウントを開始し、ＲＦ＝０のときにカウントを停止するようになされている。
また、前述のように、ＳＡ［ｘ］（Start Address）は第ｘチャンネルのＰＣバッファの先頭アドレス、ＥＡ［ｘ］（End Address）は第ｘチャンネルのＰＣバッファの最終アドレス、ＩＡ［ｘ］（IRQ Address）は第ｘチャンネルのＰＣバッファの割り込み要求アドレス、ＴＰ［ｘ］（Transfer Pointer）は第ｘチャンネルのＰＣバッファの読み出し位置を示す転送ポインタである。
ＳＵＳ［ｘ］（Suspend Flag）は第１の転送回路３１によるそのチャンネルの転送が一時中断されていることを示すサスペンドフラグである。
【００３９】
また、ＰＳＣ［ｘ］（Playback Start Count）は第ｘチャンネルのＤＡＣサイクルを単位とする再生開始時刻を示す再生開始カウント値、ＰＥＣ［ｘ］（Playback End Count）は第ｘチャンネルのＤＡＣサイクルを単位とする再生停止時刻を示す再生終了カウント値、ＴＷＰ［ｘ］（Transfer Write Pointer）は第ｘチャンネルのＰバッファの書込位置を示す転送書き込みポインタ、ＴＷＦ［ｘ］（Transfer Write Flag）は第ｘチャンネルのＰＣバッファからＰバッファへの転送の開始／終了を指示する転送指示フラグ、ＡＰＰ［ｘ］（Audio Playback Pointer）は第ｘチャンネルのＰバッファの読み出し位置を示す再生ポインタ、ＡＰＦ［ｘ］（Audio Playback Flag）は第ｘチャンネルの波形再生開始／終了を指示する再生指示フラグである。
【００４０】
さらに、ＲＳＣ［ｘ］（Recording Start Count）は第ｘチャンネルのＤＡＣサイクルを単位とする録音開始時刻を指定する録音開始カウント値、ＲＥＣ［ｘ］（Recording End Count）は第ｘチャンネルのＤＡＣサイクルを単位とする録音停止時刻を指定する録音終了カウント値、ＴＲＰ［ｘ］（Transfer Read Pointer）は第ｘチャンネルのＲバッファの読み出し位置を示す転送読み出しポインタ、ＴＲＦ［ｘ］（Transfer Read Flag）は第ｘチャンネルのＲバッファからＰＣバッファへの転送の開始／終了を指示する転送指示フラグ、ＡＲＰ［ｘ］（Audio Rec Pointer）は第ｘチャンネルのＲバッファの録音ポインタ、ＡＲＦ［ｘ］（Audio Rec Flag）は第ｘチャンネルの録音の開始／終了を指示する録音指示フラグである。さらにまた、ＲＰＣ（Recording Pre Count）は、プリトリガー録音の場合に、何サンプル前から録音を開始するかを指示する録音プリカウント値、すなわちＴＲＦ［ｘ］＝１となった時のＡＲＰ［ｘ］の値より、何サンプル前から転送を開始するかを規定するデータであり、ＴＲＦ［ｘ］＝１がセットされたタイミングにＴＲＰ［ｘ］＝ＡＲＰ［ｘ］−ＲＰＣを転送開始アドレスとして第１の転送回路がＰＣバッファへの転送を開始する。
【００４１】
録音を行いたい場合、操作者は、まず録音準備の操作を行い、その後に録音開始の操作を行う。ＣＰＵ１０は、前記録音準備の動作に応じて録音指示フラグＡＲＦ［ｘ］を１にセットし、その後の前記録音開始の指示に応じてＴＲＦ［ｘ］を１にセットする。ＡＲＦ［ｘ］のセットに応じて、まず、第２の転送回路３３による前記ミキサ３４から出力される波形データのＲバッファへの書込みがスタートし、その後にＴＲＦ［ｘ］のセットに応じて、第１の転送回路によるＲバッファの波形データのＰＣバッファへの転送がスタートする。入力波形データのＲバッファへの書き込みは前記ＴＲＦ［ｘ］を１にセットするタイミングに先立って行われているので、上記転送開始アドレスによって、録音開始の指示時のサンプルよりＲＰＣの示すサンプル数だけ前のサンプルから波形データをＰＣバッファに転送することができる。
【００４２】
このように、本実施の形態によれば、波形データの録音バッファからＰＣバッファへの転送を、任意のタイミングで開始することができる。しかも、録音開始の指示がなされるまで入力波形はＲバッファに書き込まれるだけであるので、指示待ちの状態でＰＣＩバス２０に負担を掛けることはない。なお、操作者が録音開始の指示を行うかわりに、入力波形のレベルに応じてＣＰＵ１０が録音開始の指示を発生するようにしても良い。
【００４３】
さて、この波形録音再生装置における波形再生処理には、（１）前記第１のＲＡＭ１２上に格納されている波形サンプルデータを再生する場合、（２）シーケンス再生、すなわち、各チャンネルの波形サンプルデータを再生する時間等を記述したシーケンスデータに基づいて波形再生を行う場合、（３）上述したようなハードディスクに記憶されている波形をダイレクトに再生する場合等各種の場合がある。
【００４４】
はじめに、前記（１）の第１のＲＡＭ１２上に格納されている波形サンプルデータ（ＷＡＶＥデータ）を再生する場合について説明する。
図５の（ａ）は、前記（１）のＷＡＶＥデータの再生指示が行われたときに前記ＣＰＵ１０により実行される動作を説明するためのフローチャートである。この処理は、前記図４においてはステップＳ１５のスイッチ処理の中に含まれている。
【００４５】
操作者が波形再生を指示するスイッチの操作あるいはＧＵＩ画面上のボタンに対するマウス等のクリックにより波形再生指示を行うと、この図５の（ａ）の処理が開始される。まず、ステップＳ２１において、当該再生指示に含まれている前記第１のＲＡＭ１２上に格納されている再生すべき波形データを指示するＷＡＶＥ指示データを受け取る。
【００４６】
次に、ステップＳ２２に進み、前記ステップＳ２１において同時に再生することを指示されたＷＡＶＥデータに応じて、発音チャンネルの割り当てを行う。ここでは、前記発音チャンネルのうち現在発音されていないチャンネル、すなわち、第０チャンネル〜第１５チャンネルのうちで、前記転送指示フラグＴＷＦ［ｘ］および再生指示フラグＡＰＦ［ｘ］がともに「０」であるチャンネルの中から発音すべきチャンネルｘを指定する。また、ＴＷＦ［ｘ］とＡＰＦ［ｘ］がともに「０」であるチャンネルが無い場合には、再生用の１６個のチャンネルのうちの発音の一番短いチャンネルや音量の一番小さいチャンネルを消音して、そのチャンネルを発音チャンネルｘとして指定する。
【００４７】
続いて、ステップＳ２３に進み、前記ＷＡＶＥ指示データに含まれている当該ＷＡＶＥデータに対応する前記ＰＣバッファの先頭アドレスおよび最終アドレスを、指定した発音チャンネルｘの先頭アドレスＳＡ［ｘ］および最終アドレスＥＡ［ｘ］として、前記レジスタ４０に設定する。
次に、ステップＳ２４に進み、前記レジスタ４０の当該発音チャンネルｘに対応する転送指示フラグＴＷＦ［ｘ］を「１」にセットする。このとき、当該チャンネルｘの転送書き込みポインタＴＷＰ［ｘ］および再生ポインタＡＰＰ［ｘ］は初期化される。なお、このＴＷＦ［ｘ］を「１」にセットすることにより、後述するように、指定されたＷＡＶＥデータの第１の転送回路３１による前記Ｐバッファへの転送（プリロード）が開始されることとなる。
【００４８】
続いて、ステップＳ２５に進み、当該発音チャンネルに対応するＤＡＣサイクルを単位とする再生開始時刻を示す再生スタートカウント値ＰＳＣ［ｘ］およびＤＡＣサイクルを単位とする再生停止時刻を示す再生終了カウント値ＰＥＣ［ｘ］を前記レジスタ４０に設定する。例えば、直ちに再生を開始させる場合には、前記タイマ１７における現在時刻データをもとにＤＡＣサイクルを単位とする現在時刻データを算出し、その値を前記再生スタートカウント値ＰＳＣ［ｘ］として設定する。また、前記再生終了カウント値ＰＥＣ［ｘ］としては、当該波形再生指示に再生終了時刻情報が含まれているときにはそれに対応する値を設定し、また、当該ＷＡＶＥデータを一通り再生する場合にはその波形サンプル数を前記再生スタートカウント値ＰＳＣ［ｘ］に加算した値を設定する。ここでは、ランフラグがＲＦ＝１に設定されており、カウンタ３８が動作中であることとする。
【００４９】
以上が、波形再生指示がなされたときに前記ＣＰＵ１０において実行される処理である。この処理において、上述したように、割り当てられた発音チャンネルにそれぞれ対応するＳＡ［ｘ］、ＥＡ［ｘ］、ＰＳＣ［ｘ］およびＰＥＣ［ｘ］が設定され、また、ＰＣバッファから前記Ｐバッファへの転送の開始を指示するＴＷＦ［ｘ］が「１」にセットされることとなる。実際の再生処理は、次に説明する第１の転送回路３１および第２の転送回路３３による処理により実行される。
【００５０】
図５の（ｂ）は、前記第１の転送回路３１において実行される転送準備処理のフローチャートである。この転送準備処理は１ＤＡＣサイクルを２つに分割した前半部分において１回どおり実行される。
まず、ステップＳ３１において、前記転送指示フラグＴＷＦ［ｘ］あるいは前記転送指示フラグＴＲＦ［ｘ］について、「１」にセットされているものがあるか否かを判定する。ここで、全チャンネルについてフラグＴＷＦ［ｘ］およびＴＲＦ［ｘ］がセットされていないときには、転送は指示されていないのであるから、この転送準備処理は終了される（Ｓ３１の判定結果がＹＥＳのとき）。
一方、フラグＴＷＦ［ｘ］あるいはＴＲＦ［ｘ］のいずれかが「１」にセットされている場合、すなわち、転送が指示されているチャンネルがあるときには、ステップＳ３２に進む。
【００５１】
ステップＳ３２において、ＴＷＦ［ｘ］あるいはＴＲＦ［ｘ］が「１」にセットされているチャンネルについて、サスペンドフラグＳＵＳ［ｘ］が「１」にセットされており、かつ、転送すべきデータが１２８ワード以上あるチャンネルをサーチする。ここで、サスペンドフラグＳＵＳ［ｘ］は、キャッチアップ防止のために当該チャンネルのＷＡＶＥデータの転送を一時中断するためのフラグであり、当該チャンネルが発音チャンネルであるときにはＷＡＶＥデータが書き込まれる前記Ｐバッファの空き容量が一度のバースト転送により転送されるデータ量（この実施の形態においては３２ワード）よりも少なくなったときに、また、当該チャンネルが録音チャンネルであるときには前記Ｒバッファに貯えられている波形サンプルが３２ワードよりも少なくなったときにセットされる。すなわち、このＳＵＳ［ｘ］フラグが「１」にセットされているときにはそのチャンネルの転送は中断されている。
【００５２】
ＳＵＳ［ｘ］フラグが「１」にセットされており、転送すべきデータが１２８ワード以上あるチャンネルが見つかったときは、ステップＳ３４において、このチャンネルのＳＵＳ［ｘ］フラグを「０」にリセットする。ここで、「転送すべきデータ」は、当該チャンネルが発音チャンネルであるときには前記Ｐバッファの空き容量を指し、当該チャンネルが録音チャンネルであるときには前記Ｒバッファに貯えられた波形サンプルの量を指す。
このように、前記ステップＳ３２〜Ｓ３４により、ＳＵＳ［ｘ］フラグが「１」にセットされているチャンネルのうちの転送すべきデータが１２８ワード以上あるチャンネルについて、ＳＵＳ［ｘ］フラグを「０」にリセットして、その転送の中断状態を解除する処理が行われている。
【００５３】
続いて、ステップＳ３５に進み、前記フラグＴＷＦ［ｘ］あるいはＴＲＦ［ｘ］が「１」にセットされており、かつ、ＳＵＳ［ｘ］フラグが「０」であるチャンネルについて、その転送すべきデータが一番多いチャンネルをサーチし、そのチャンネルの番号ｘを今回の転送処理において転送対象となるチャンネルの番号を指定するレジスタｉにセットする。
以上が前記第１の転送回路３１において実行される転送準備処理のフローチャートである。すなわち、ＤＡＣサイクルの前半部分において実行される転送準備処理において、転送を行うチャンネルが決定され、レジスタｉにそのチャンネルの番号がセットされる。
【００５４】
なお、上記ステップＳ３５においては、転送すべきデータが最も多いチャンネルを次の転送処理の対象チャンネルとしているが、これ以外の方法により転送を行うチャンネルを決定することもできる。たとえば、フラグＴＷＦ［ｘ］あるいはＴＲＦ［ｘ］が「１」であり、かつ、ＳＵＳ［ｘ］フラグが「０」であるチャンネルを順に転送対象チャンネルとして、前記レジスタｉにセットするようにしてもよい。ただし、第２の転送回路３３にチャンネル別のアドレスカウンタや補間回路を付加してサンプリングレートが異なる波形サンプルを同時に録音再生できるように構成した場合には、サンプリングレートに応じて転送すべきデータの変化速度が異なるため、このような場合には、前述した転送すべきデータを参照して転送を実行するチャンネルを決定する方法の方が望ましい。
【００５５】
次に、前記第１の転送回路３１において実行される転送処理について、図５の（ｃ）に示すフローチャートを参照して説明する。この転送処理は１ＤＡＣサイクルを２つに分割した後半部分において実行される。
この転送処理においては、まず、ステップＳ４１において、転送すべきチャンネルの有無が調査される。これは、前記レジスタｉに有意のデータがセットされているか否かにより判定される。この判定の結果、チャンネル番号がセットされていないときには、転送すべきチャンネルがないので、この転送処理は終了される。
【００５６】
前記レジスタｉに前記転送準備処理においてチャンネル番号が書き込まれているときは、ステップＳ４１の判定結果がＮＯとなり、ステップＳ４２に進み、ＰＣＩバス２０が獲得される。すなわち、前記第１の転送回路３１は、バスアービタに対しＰＣＩバスの使用権を要求し、その使用権を獲得する。
ＰＣＩバスの使用権を獲得した後、ステップＳ４３に進み、チャンネルｉの３２サンプルのＷＡＶＥデータの転送を行う。すなわち、前記第１の転送回路３１がバス・マスターとなり、当該チャンネルｉが発音チャンネルの時は、前記第１のＲＡＭ１２上の当該発音チャンネルｉに対応するＰＣバッファの転送ポインタＴＰ［ｉ］の示す記憶位置から３２サンプル分のＷＡＶＥデータを読み出し、バースト転送モードで前記第３のＲＡＭ３２のｉチャンネルに対応するＰバッファのポインタＴＷＰ［ｉ］で示される記憶位置に順次格納する。また、当該チャンネルが録音チャンネルのときは、前記第３のＲＡＭ３２のｉチャンネルに対応するＲバッファの転送読み出しポインタＴＲＰ［ｘ］から３２サンプルの波形データを読み出し、バースト転送モードで前記ＰＣバッファの転送ポインタＴＰ［ｉ］の示す記憶位置から順次格納する。
【００５７】
ステップＳ４３では前記バースト転送の後、転送に使用した転送ポインタＴＰ［ｉ］を１６アドレス（３２サンプルに対応）進めるとともに、転送に使用した転送書き込みポインタＴＷＰ［ｉ］ないし転送読み出しポインタＴＲＰ［ｉ］を３２アドレス進める。また、ポインタＴＷＰ［ｉ］ないしＴＲＰ［ｉ］がそれぞれ対応するＰバッファないしＲバッファの最終アドレスまで進行した場合には、第１の転送回路３１は、該ポインタＴＷＰ［ｉ］ないしＴＲＰ［ｉ］を対応するＰバッファないしＲバッファの先頭アドレスに戻すように制御する。
この転送が終了したら、ステップＳ４４に進み、前記ＰＣＩバス２０を開放する。
【００５８】
次に、ステップＳ４５に進み、当該チャンネル（ｉチャンネル）の転送すべきデータ量が３２サンプル以下であるか否かを判定する。すなわち、このｉチャンネルが発音チャンネルであるときは前記Ｐバッファの空き容量が３２サンプル以下であるか否かを判定し、録音チャンネルであるときは前記Ｒバッファに貯えられているサンプルが３２サンプル以下であるか否かについて判定する。この判定の結果がＹＥＳのときは、次に転送を行ったときにキャッチアップが発生するため、当該チャンネルに対応するサスペンドフラグＳＵＳ［ｉ］を「１」にセットし、このチャンネルの転送を中断させる（ステップＳ４６）。
【００５９】
以上が、第１の転送回路３１により実行される１回の転送処理の内容である。
すなわち、１ＤＡＣサイクル内に前記図５の（ｂ）に示した転送準備処理と、前記図５の（ｃ）に示した転送処理とが各１回ずつ実行されており、１ＤＡＣサイクル当たり１つのチャンネルの３２サンプルのＷＡＶＥデータの転送が実行される。このようにして、発音チャンネルについては、前記第３のＲＡＭ３２上のＰバッファに、そのＰバッファの空き容量が３２サンプル以下になるまで、各発音チャンネルのＷＡＶＥデータが順次格納されていく。また、録音チャンネルについては、前記Ｒバッファ上に貯えられた波形サンプルが、前記Ｒバッファの残りが３２サンプル以下になるまで、前記ＰＣバッファに順次転送される。
【００６０】
上に説明した第１の転送回路３１によるデータ転送では、図５（ｂ）のステップＳ３５で１つのチャンネル番号ｘだけをレジスタｉに設定し、図５（ｃ）のステップＳ４３で設定された１つのチャンネルの転送を行うようになっていた。ステップＳ３５で１チャンネルだけを設定するのではなく、転送すべきデータが２番目、３番目…に多いチャンネルも含めて、ｎ個（例えば５個）のレジスタｉ１〜ｉｎに最大ｎ個までのチャンネル番号を設定し、ステップＳ４３で指定された最大ｎ個のチャンネルのデータ転送をまとめて転送するようにしてもよい。その場合、特に転送の遅れたチャンネルがある場合にｎ個のレジスタの中の複数個に同一のチャンネルを登録し、そのチャンネルについて一度に６４サンプル、９６サンプル等のデータ転送をするようにしてもよい。
【００６１】
次に、前記第２の転送回路３３により実行される、発音チャンネルについての前記Ｐバッファから前記ミキサ３４へのＷＡＶＥデータの転送処理および録音チャンネルについての前記ミキサ３４から前記Ｒバッファへの転送処理について、図６の（ａ）に示すフローチャートを参照して説明する。この処理も各ＤＡＣサイクルの前半期間に１回どおり実行される。
【００６２】
前記第２の転送回路３３は、まず、ステップＳ５１において、チャンネル番号を格納するレジスタｊに初期値「０」をセットする。前述したように、第０チャンネル〜第１５チャンネルは発音チャンネルとされており、第１６チャンネル〜第１９チャンネルは録音チャンネルとされている。したがって、０≦ｊ≦１５のときは当該チャンネルは発音チャンネルであり、１６≦ｊ≦１９のときは当該チャンネルは録音チャンネルである。
続いて、ステップＳ５２において、レジスタｊに設定されているチャンネルに対応する波形再生の開始／終了を指示する再生指示フラグＡＰＦ［ｊ］が「１」にセットされているか否かを判定する。この再生指示フラグＡＰＦ［ｘ］は、後述するタイミング発生処理において当該発音チャンネルに対応する発音開始時刻に「１」に設定され、発音終了時刻に「０」に設定されるフラグである。
【００６３】
当該発音チャンネルに対応する再生指示フラグＡＰＦ［ｊ］が「１」にセットされているときは、ステップＳ５３において、その発音チャンネルｊに対応するＰバッファの再生ポインタＡＰＰ［ｊ］を１つ進め、そのアドレスの波形サンプルデータ（ＷＡＶＥデータ）を読み出して、前記ミキサ３４内の入力レジスタに出力し、ステップＳ５４に進む。
一方、当該発音チャンネルに対応するＡＰＦ［ｊ］が「０」のときは、そのままステップＳ５４に進む。ここで、ポインタＡＰＰ［ｊ］が対応するＰバッファの最終位置まで進行したら、ＡＰＰ［ｊ］は再び同Ｐバッファの先頭に戻される。
そして、ステップＳ５４においてｊをｊ＋１にひとつ進め、上記処理をｊが１６以上になるまで繰り返す（ステップＳ５５）。
【００６４】
次に、第１５チャンネルまでの処理が終了し、前記ステップＳ５５の判定結果がＹＥＳになると、ステップＳ５６に進み、当該録音チャンネルのオーディオデータの録音の開始／終了を指示する録音指示フラグＡＲＦ［ｊ］が「１」であるか否かが判定される。このフラグＡＲＦ［ｘ］は、ＣＰＵ１０により録音開始時刻に先立って「１」に設定され、後述するタイミング発生処理により録音停止時刻に「０」に設定されるフラグである。
【００６５】
当該フラグＡＲＦ［ｊ］が「１」にセットされている場合には、ステップＳ５６の判定結果がＹＥＳとなり、ステップＳ５７に進む。ステップＳ５７においては、当該録音チャンネルのＲバッファの録音ポインタＡＲＰ［ｊ］を１つ進め、前記Ａ／Ｄ変換器３６から取り込まれ前記ミキサ３４内の出力レジスタに記憶されている波形サンプルデータを取り出して、ＡＲＰ［ｊ］の示すアドレスに書き込む。ここで、ポインタＡＲＰ［ｊ］が対応するＲバッファの最終位置まで進行したら、ＡＲＰ［ｊ］は再び同Ｒバッファの先頭に戻される。また、ＡＲＦ［ｊ］が「０」の録音チャンネルについては、なにも行わない。
そして、ステップＳ５８に進み、ｊをひとつだけ進め、ｊ＝１９になるまで、上記ステップＳ５６〜Ｓ５８を繰り返し（ステップＳ５９）、このＤＡＣサイクルにおける第２の転送回路３３の転送処理を終了する。
【００６６】
このように、第２の転送回路３３においては、各ＤＡＣサイクル毎に、全発音チャンネル（第０チャンネル〜第１５チャンネルの１６チャンネル）について、発音開始指示がなされているか否かを判定し、発音開始指示がなされている発音チャンネルについては、当該Ｐバッファから１波形サンプルデータを読み出して前記ミキサ３４に出力する動作を行い、一方、全録音チャンネル（第１６チャンネル〜第１９チャンネルの４チャンネル）について、録音開始指示がなされている録音チャンネルについて前記ミキサ３４を介して前記Ａ／Ｄ変換器３６によりＡ／Ｄ変換された波形サンプルデータを前記Ｒバッファに書き込んでいる。
【００６７】
次に、前記再生指示フラグＡＰＦ［ｘ］、あるいは、転送指示フラグＴＲＦ［ｘ］ないし録音指示フラグＡＲＦ［ｘ］を指定されたタイミングでセットあるいはリセットするタイミング発生処理について、図６の（ｂ）に示すフローチャートを参照して説明する。このタイミング発生処理は、前記タイミング発生部３９により常時実行されている処理である。
【００６８】
前述したように、本発明のこの実施の形態においては、ＤＡＣサイクル（この実施の形態においては４４．１ＫＨｚ）をカウントする３２ビットのカウンタ３８が設けられている。したがって、このカウンタ３８により約２５時間を計数することができ、本発明のこの実施の形態においては、波形再生および録音の開始および終了のタイミングをＤＡＣサイクルを単位とする時間により制御するようにしている。すなわち、再生あるいは録音の開始時刻および終了時刻をＤＡＣサイクルを単位とする時刻データにより指定している。
【００６９】
前記タイミング発生部３９は、前記カウンタ３８の計数値と前記ＣＰＵ１０により設定された当該チャンネルの再生開始時刻を指定するＤＡＣサイクルを単位とする再生開始カウント値ＰＳＣ［ｘ］、再生停止時刻を指定するＤＡＣサイクルを単位とする再生終了カウント値ＰＥＣ［ｘ］、録音開始時刻を指定するＤＡＣサイクルを単位とする録音開始カウント値ＲＳＣ［ｘ］、録音停止時刻を指定するＤＡＣサイクルを単位とする録音終了カウント値ＲＥＣ［ｘ］とを比較判定し、対応する再生指示フラグＡＰＦ［ｘ］、あるいは、転送指示フラグＴＲＦ［ｘ］ないし録音指示フラグＡＲＦ［ｘ］をセットあるいはリセットする処理を実行するものである。
すなわち、前記タイミング発生部３９は、まず、初期設定時に各チャンネルに対応するフラグＡＰＦ［ｘ］およびＡＲＦ［ｘ］を「０」にリセットする（ステップＳ６１）。
そして、前記カウンタ３８の計数値と前記レジスタ４０に設定された各チャンネルのＰＳＣ［ｘ］およびＰＥＣ［ｘ］あるいはＲＳＣ［ｘ］およびＲＥＣ［ｘ］とを比較し、カウンタ３８の計数値と前記各指定時刻との一致を検出する（ステップＳ６２およびＳ６３）。
【００７０】
そして、いずれかのチャンネルのＰＳＣ［ｘ］、ＰＥＣ［ｘ］、ＲＳＣ［ｘ］あるいはＲＥＣ［ｘ］と前記カウンタ３８の計数値との一致を検出した場合には、ステップＳ６４に進み、対応するフラグＡＰＦ［ｘ］、あるいは、ＴＲＦ［ｘ］ないしＡＲＦ［ｘ］を制御する。すなわち、あるチャンネルのＰＳＣ［ｘ］が前記カウンタ３８の計数値と一致する場合には、当該チャンネルのフラグＡＰＦ［ｘ］を「１」にセットし、ＰＥＣ［ｘ］が一致するときには、当該チャンネルのフラグＡＰＦ［ｘ］を「０」にリセットする。また、あるチャンネルのＲＳＣ［ｘ］が前記カウンタ３８の計数値と一致したときには、該チャンネルのフラグＴＲＦ［ｘ］を「１」にセットし、ＲＥＣ［ｘ］が一致したときには、当該フラグＡＲＦ［ｘ］を「０」にリセットする。
【００７１】
これにより、当該チャンネルのＰＳＣ［ｘ］により指定された時刻からＰＥＣ［ｘ］により指定された時刻までの時間だけ当該チャンネルの再生を指示するフラグＡＰＦ［ｘ］が「１」とされる。また、当該チャンネルのＲＳＣ［ｘ］により指定された時刻に転送を指示するフラグＴＲＦ［ｘ］が「１」とされ、ＲＥＣ［ｘ］により指定された時刻に録音を指示するフラグＡＲＦ［ｘ］が「０」とされる。この結果、前記図６の（ａ）に示した第２の転送回路３３による転送処理により、当該発音チャンネルの波形サンプルデータのミキサ３４への送出、あるいは、当該録音チャンネルのＡ／Ｄ変換された波形サンプルデータの読み込みが実行されるようになる。なお、ＰＥＣ［ｘ］とＲＥＣ［ｘ］に関して、それぞれ、指定時刻の検出時にＣＰＵ１０に対して割り込みを発生するようにしてもよい。ＣＰＵ１０は、ＰＥＣ［ｘ］による割り込みに応じて再生の終了したチャンネルを次の再生のために開放し、ＲＥＣ［ｘ］による割り込みに応じて録音の終了したチャンネルを次の録音のために開放する。
【００７２】
このように、この実施の形態においては、前記中央処理装置により各チャンネルのタイミングデータが設定されるレジスタと、タイミングパルスを計数するカウンタと、該カウンタの計数値と前記レジスタに設定されている前記タイミングデータに基づいて各チャンネルのタイミング信号を発生するタイミング発生手段とを設け、前記タイミング信号に応じて前記バッファメモリの当該チャンネルに対応した記憶領域から波形データを読み出して再生しているので、前記メモリに記憶された複数の波形データを正確なタイミングで同時再生するという課題も解決することができる。
【００７３】
次に、ＣＰＵ１０で図５（ａ）の再生指示イベント処理が実行された場合の、第１の転送回路３１と第２の転送回路３３の動作について説明する。
ＣＰＵ１０によりステップＳ２４でＷＡＶＥデータの再生に使用するチャンネルｘのＴＷＦ［ｘ］が１に設定されると、第１の転送回路３１は、ステップＳ３２で該チャンネルｘのフラグＳＵＳ［ｘ］を「０」に設定する。転送開始時にはｘチャンネルのＰバッファが空であり、転送すべきデータが多いチャンネルとして、続くステップＳ３５ではそのチャンネルｘを示すチャンネル番号がレジスタｉに設定される。この状態で、ステップＳ４３が繰り返し実行されることにより、ｘチャンネルのＰバッファには、アドレスＳＡ［ｘ］、ＥＡ［ｘ］で示されるＰＣバッファに記憶されたＷＡＶＥデータの先頭部分の波形が、ＤＡＣサイクル毎に３２サンプルずつ転送される。
このようにして、ｘチャンネルのＰバッファに波形サンプルが準備された後、ステップＳ２５で設定されたＰＳＣ［ｘ］のタイミングが、タイミング発生部３９のステップＳ６３の処理で検出され、フラグＡＰＦ［ｘ］が「１」に設定される。
【００７４】
第２の転送回路３３は、サンプル周期で実行される転送２転送処理（図６（ａ））のステップＳ５２においてＡＰＦ［ｘ］が「１」に設定されたことを検出し、Ｐバッファに準備された波形サンプルをポインタＡＰＰ［ｘ］を更新しながら読み出してミキサ３４内の入力レジスタに供給する。ミキサ３４に供給された波形サンプルは、ＤＳＰ３５により適宜エフェクトを付与された後、Ｄ／Ａ変換器３７に出力されサウンドシステム２９から出力される。
このようにして第２の転送回路によってＰバッファ上の波形サンプルが再生されている間にも、第１の転送回路は並列に動作しており、再生によりｘチャンネルのＰバッファの空き領域が増加した場合には、前記ＷＡＶＥデータの前記先頭部分に続く後続波形のサンプルをＰＣバッファからＰバッファに順次転送する。
【００７５】
さて、以上説明したのは、前記第１のＲＡＭ１２のＰＣバッファに格納されている１つのチャンネルの波形サンプルの波形再生動作、および、マイクロフォン２８等から入力され前記Ａ／Ｄ変換器３６においてＡ／Ｄ変換された波形サンプルデータの読み込み動作であるが、前述したように、この波形録音再生装置においては、シーケンス再生を実行することができる。次に、このようなシーケンス再生時の動作について説明する。
【００７６】
図７の（ａ）は、シーケンス再生を行うときに使用されるシーケンスデータの一例を示す図である。この図に示すように、シーケンスデータは、（１）当該データの名称、データ種類、データサイズ、時刻単位等を格納したヘッダ部、（２）初期設定等に用いられる初期データ、（３）スタートコード、（４）時間データおよびＷＡＶＥデータに対する命令（再生命令あるいは制御命令）、（５）エンドコードにより構成されている。ここで、前記（４）の時間データはそれに後続するＷＡＶＥデータに対する命令を発するタイミングを動作開始時あるいは前の命令からの相対時間データ（例えば、ＤＡＣサイクルを単位とする時間データ）により示したものである。
【００７７】
ここで、図７の（ａ）に示した例においては、前記ＷＡＶＥデータに対する命令として、（１）「Ｗ１再生命令」、「Ｗ３再生命令」等の各ＷＡＶＥデータの再生を開始する波形再生命令、および（２）「Ｗ４レベル制御命令」、「Ｗ１０レベル制御命令」等の各ＷＡＶＥデータの再生レベルを制御して当該ＷＡＶＥデータのフェードインやフェードアウト等を行う命令や「Ｗ１効果制御命令」等の当該ＷＡＶＥデータに対して付加するエフェクト（例えば、リバーブ等）を制御する波形制御命令がある。前記波形再生命令には、当該ＷＡＶＥデータの名称、記憶位置（アドレス）、サンプリング周波数、その再生に要する時間等が含まれている。
【００７８】
図７の（ｂ）に示すように、各ＷＡＶＥデータは例えば前記ハードディスク装置２３に格納されており、前記シーケンスデータの再生に必要とされるＷＡＶＥデータが順次前記第１のＲＡＭ１２に読み出されて格納される。すなわち、当該シーケンスデータの再生に必要とされるＷＡＶＥデータをすべてＲＡＭ１２に転送しておくのではなく、最初に必要とされる所定数のＷＡＶＥデータを前記ＲＡＭ１２に転送しておき、１つのＷＡＶＥデータの再生が終了した後、次に再生されるＷＡＶＥデータを前記ＲＡＭ１２にロードするようにしている。
【００７９】
このようなシーケンスデータの再生を行うときの動作について、図８および図９に示すフローチャートを参照して説明する。
図８に示すのは、前記メインプログラム（図４）において、シーケンス再生指示イベントが発生したときに前記ステップＳ１５のスイッチ操作に対応する処理として実行されるシーケンス再生指示イベント処理のフローチャートであり、この処理は前記ＣＰＵ１０により実行される。
【００８０】
シーケンス再生指示イベントが発生すると、ＣＰＵ１０は、ステップＳ７１において当該シーケンス再生指示イベントに含まれている再生すべきシーケンスに対応するシーケンス指示データを受け取る。
そして、前記ランフラグＲＦを「０」に初期化する（Ｓ７２）。これにより、前記カウンタ３８が停止される。
続いて、ステップＳ７３に進み、前記ステップＳ７１において受け取ったシーケンス指示データにより指定されたシーケンスデータを解析し、当該シーケンスデータの再生に必要とされる最大チャンネル数（最大トラック数）ｎを算出し、該最大トラック数ｎに対応する発音チャンネルを割り当てる。ここで、前記第１のＲＡＭ１２上のＰＣバッファ領域に前記ｎ個のチャンネルのＷＡＶＥデータを格納する領域を確保する。
【００８１】
次に、ステップＳ７４において、当該シーケンスデータにおいて再生されるはじめからｎ個のＷＡＶＥデータを前記ハードディスク装置２３から読み出して前記第１のＲＡＭ１２上のＰＣバッファの前記ステップＳ７３において確保された領域にロードする。
そして、ステップＳ７５において、該ｎ個のチャンネルにＲＡＭ１２上の前記ｎ個のＷＡＶＥデータの記憶位置にそれぞれ対応する開始アドレスＳＡ［ｘ］、終了アドレスＥＡ［ｘ］を前記レジスタ４０に設定するとともに、前記終了アドレスＥＡ［ｘ］と同一のアドレスに割り込み要求アドレスＩＡ［ｘ］を設定する（ＩＡ［ｘ］＝ＥＡ［ｘ］）。
【００８２】
次に、前記ｎ個のチャンネルの転送開始フラグＴＷＦ［ｘ］を「１」に設定し（Ｓ７６）、各ｎ個のチャンネルの再生開始カウント値ＰＳＣ［ｘ］および再生停止カウント値ＰＥＣ［ｘ］を前記シーケンスデータを解析して得た値に設定する（Ｓ７８）。すなわち、前記時間データおよび前記波形再生命令に含まれている当該ＷＡＶＥデータの再生時間長（あるいは波形サンプル数）から、当該再生開始カウント値ＰＳＣ［ｘ］および再生停止カウント値ＰＥＣ［ｘ］を算出して、前記レジスタ４０に設定する。ＴＷＦ［ｘ］が１に設定されたチャンネルでは、第１の転送回路で図５（ｂ）、（ｃ）の処理が実行されることにより、同チャンネルで再生すべきＷＡＶＥデータの先頭波形がＰＣバッファからＰバッファに順次転送される。
【００８３】
そして、ステップＳ７８において、前記波形制御命令すなわちレベル制御命令や効果制御命令の実行されるタイミングを前記シーケンスデータ中の時間データから算出して、そのタイミングで割り込み（制御割り込み）が発生されるように該タイミングに対応するカウント値をレジスタに設定する。ここでは、まず、最初の制御命令（図７の（ａ）に示した例においては「Ｗ４レベル制御命令」）に対応するカウント値を設定する。
次に、ステップＳ７９に進み、前記カウンタ３８をリセットするとともに、前記ランフラグＲＦを「１」にセットして、該カウンタ３８のカウントを開始させる。前述のように、カウンタ３８はＤＡＣサイクルに対応したパルスを計数するため、これにより、ＤＡＣサイクルのカウントが「０」から開始される。
【００８４】
このように、前記シーケンス再生指示に基づいて、ＣＰＵ１０は当該シーケンスの再生に必要な準備処理を実行し、再生を開始する。
その後、第１のＲＡＭ１２中に格納されているｎ個のＷＡＶＥデータの再生が前述した場合と同様に順次開始される。すなわち、タイミング発生部３９のステップＳ６３でＰＳＣ［ｘ］のタイミングが検出されると、同チャンネルのＡＰＦ［ｘ］が１に設定され、図６（ａ）で説明したような第２の転送回路３３による同チャンネルのＰバッファの再生が開始される。該再生によりＰバッファに空きが生じたら、第１の転送回路３１の図５（ｂ）、（ｃ）の処理により、同チャンネルの再生の終わった先頭波形に続くＷＡＶＥデータの後続波形がＰＣバッファからＰバッファに順次補給される。第２の転送回路３３による上記再生は、タイミング発生部３９で同チャンネルのＰＥＣ［ｘ］のタイミングが検出されるまで継続される。
【００８５】
さて、このようにして、前記第１のＲＡＭ１２上のＰＣバッファからそれぞれ対応するＷＡＶＥデータが前記第３のＲＡＭ３２上のＰバッファに転送され、ＷＡＶＥデータの再生が進行するが、前記ＰＣバッファ上のデータの転送ポインタＴＰ［ｘ］が前記割り込み要求アドレスＩＡ［ｘ］に達したときに、前述したようにチャンネル割り込みが発生する。すなわち、このチャンネル割り込みは当該チャンネルのＰＣバッファの最後まで読み出したときに発生するため当該ＷＡＶＥデータがすべて前記当該Ｐバッファに転送されたことを示しており、次に再生すべきＷＡＶＥデータを前記第１のＲＡＭ１２のＰＣバッファにロードすることができる。このロード処理はチャンネル割り込み処理ルーチンにより実行される。
【００８６】
図９の（ａ）は、このチャンネル割り込み処理ルーチンの動作を説明するフローチャートである。前述のように第１のＲＡＭ１２内のＰＣバッファにおける当該チャンネルのＷＡＶＥデータがすべて前記第３のＲＡＭ３２内のＰバッファに転送され、チャンネル割り込みが発生すると、ステップＳ８１において、ハードディスク装置２３からＰＣバッファに既にロードされているＷＡＶＥデータの次にロードすべきＷＡＶＥデータがあるか否かが判定される。この判定の結果、シーケンスデータで発音指示されるＷＡＶＥデータが既に全部ＰＣバッファにロードされ、ハードディスク装置２３にはもう転送すべきデータが無い場合には、ステップＳ８７に進み、現在再生中の発音チャンネルがあるか否かを判定する。この結果、現在波形再生中の発音チャンネルがないときには、すべてのＷＡＶＥデータの再生が終了したのであるから、前記ランフラグＲＦを「０」にリセットし、このシーケンス再生処理を終了する。また、再生中の発音チャンネルがあるときには、そのまま、このチャンネル割り込み処理を終了する。
【００８７】
一方、再生すべきＷＡＶＥデータが残っており前記ステップＳ８１の判定結果がＹＥＳとなったときは、そのチャンネル番号を変数ｋに代入し（Ｓ８２）、当該ＷＡＶＥデータをハードディスク装置２３から読み出して前記第１のＲＡＭ１２中の空き領域にロードする（Ｓ８３）。
そして、ステップＳ８４に進み、前記ステップＳ８３において当該ＷＡＶＥデータを格納した領域を、ｋチャンネルの新たなＰＣバッファとして、対応する先頭アドレスＳＡ［ｋ］、終了アドレスＥＡ［ｋ］および割り込み要求アドレスＩＡ［ｋ］（＝ＥＡ［ｋ］）を前記レジスタ４０に設定する。
【００８８】
次に、対応する転送開始フラグＴＷＦ［ｋ］を「１」にセットし（Ｓ８５）、それに応じて、第１の転送回路３１は該ＷＡＶＥデータの先頭波形をＰＣバッファからＰバッファに順次転送する。そして、対応する再生開始カウント値ＰＳＣ［ｘ］および再生停止カウント値ＰＥＣ［ｘ］をセットする（Ｓ８６）。
以上のように、チャンネル割り込みが発生したときに、次に再生されるデータを前記ＰＣバッファに転送し、対応する波形再生のための準備処理が実行される。このようにして準備されたｋチャンネルのＷＡＶＥデータは、図８のシーケンスの準備処理で説明したｎ個のＷＡＶＥデータと同様の方法で、ＰＳＣ［ｋ］からＰＥＣ［ｋ］のタイミングに再生される。
【００８９】
次に、前記ステップＳ７８（図８）におけるその他割り込み設定に対応する制御割り込み処理について、図９の（ｂ）に示すフローチャートを参照して説明する。
前記カウンタ３８の計数値が前記ステップＳ７８によりレジスタに設定されたカウント値となり前記制御割り込みが発生されると、前記ＣＰＵ１０は、まず、このタイミングの制御命令（前記図７の（ａ）に示す例では「Ｗ４レベル制御命令」）に基づく制御処理を実行する。これは、例えば、当該制御命令に対応するレベル制御データ等を前記レジスタ４０に書き込むことにより実行され、ミキサ３４における当該チャンネルのレベルが制御される。また、効果制御命令の場合は、対応するＤＳＰ制御パラメータ等が前記レジスタ４０に書き込まれ、ＤＳＰで行われているエフェクト処理の内容が制御される。
【００９０】
次に、前記ＣＰＵ１０は、ステップＳ９２に進み、前記シーケンスデータ中に次の制御命令があるか否かをサーチする。そして、制御命令が存在しなかったときには、そのまま、この制御割り込み処理を終了する。
一方、前記ステップＳ９２の結果、次の制御命令が見つかったときは、その制御命令のタイミング情報、すなわち、その制御命令が実行されるタイミングを示すカウント値を前記時間データに基づいて算出し、それを前記レジスタに設定する（Ｓ９３）。そして、この制御割り込み処理を終了する。これにより、次の制御命令のタイミングになったときに、再び制御割り込み処理が実行されることとなる。
このようにして、シーケンスデータに基づく、ハードディスク装置２３に記憶された複数ＷＡＶＥデータのそれぞれ指定タイミングでの再生、および、各指定タイミングでのレベル制御、効果制御が行われる。
【００９１】
さて、以上では、（１）第１のＲＡＭ１２上のＰＣバッファに格納されているＷＡＶＥデータを再生する場合、および、（２）シーケンス再生を行う場合について説明した。次に、（３）ハードディスク等に記憶されている波形をダイレクトに再生するダイレクト再生について説明する。
【００９２】
前記ハードディスク装置２３あるいはＣＤ−ＲＯＭ装置２４等の外部記憶装置に格納されている長時間のＷＡＶＥデータを順次読み込みながら再生するダイレクト再生の場合には、前述したように、前記割り込み要求アドレスＩＡ［ｘ］をＰＣバッファの中間位置および最終位置に繰り返し設定する。そして、当該割り込み処理ルーチンにおいて前記外部記憶装置から当該波形サンプルデータをＰＣバッファに順次読み込むようにすることにより、前記第１のＲＡＭ１２上のＰＣバッファをダブルバッファとして使用し、長時間のＷＡＶＥデータを順次再生することができる。
また、前記ネットワークインターフェース回路２７を介して前記ネットワーク２６からＷＡＶＥデータを受信しつつ、再生することも可能である。この場合にも、前記ダイレクト再生の場合と同様に、前記ＰＣバッファをダブルバッファとして使用する。
【００９３】
さらに、本発明においては、前記ＣＰＵ１０により波形サンプルデータをソフトウエアにより生成するいわゆるソフトウエア音源を用いて生成した波形サンプルデータを再生することも可能である。この場合には、図示しないＭＩＤＩインターフェース等を通じて入力されたＭＩＤＩデータに基づいて前記ＣＰＵ１０により例えば１６チャンネル分の楽音波形サンプルを演算生成し、該演算生成した楽音波形サンプルを前記第１のＲＡＭ１２上のＰＣバッファに書き込むようにする。そして、前述した実施の形態の場合と同様にして、このＰＣバッファに書き込まれた波形サンプルデータを再生する。この方法によれば、前記ＤＳＰ３５により生成した楽音に対するエフェクト付与等を行うことができ、前記ＣＰＵ１０により生成した楽音に対するエフェクト処理まで実行する通常のソフトウエア音源の場合に比較してＣＰＵ１０の処理負荷を少なくすることが可能となる。
【００９４】
なお、上述した実施の形態においては、各ＤＡＣサイクルに１チャンネルの３２サンプルをバースト転送するようになっていたが、各ＤＡＣサイクル毎に最大ｎチャンネル分バースト転送するようにしてもよいし、また、各チャンネルで異なるサンプル数分をバースト転送するようにしてもよい。このように変更すれば、バスを長く占有してしまうものの、第１の転送回路による転送はより安定する。
また、上述した実施の形態では、１度のバースト転送は３２サンプル固定であったが、バースト転送するサンプル数を各チャンネルの空き容量に応じて、空き容量の多い場合には４８サンプル、さらに多い場合には６４サンプルのように、変更してもよい。このように変更すれば、第１の転送回路の転送遅れが生じる可能性が下がり、転送の安定性が向上する。
【００９５】
さらに、上述した実施の形態では、バッファメモリのサイズは１Ｋワード固定であったが、この容量を自由に設定できるようにしてもよい。容量を大きくすれば再生の安定度が向上するし、小さくすれば回路構成が簡単になる。また、各チャンネル毎に異なる容量が設定できるようにしてもよい。その場合、安定して再生したいチャンネルのバッファメモリを、大きな容量に設定すればよい。
さらにまた、上述した実施の形態においては、シーケンス再生のときにｎこの波形データをハードディスク装置からメモリにロードするようになっていたが、この部分に関してはいろいろな変更を行うことができる。例えば、メモリ上で波形データの記憶に使用する容量の上限を設け、シーケンスで再生する複数の波形データを、先に再生されるものからその上限に達するまで順次メモリにロードするようにしてもよい。あるいは、シーケンスで現在再生中の位置から所定時間分先（未来）の位置で再生される波形データまでをメモリにロードするようにしてもよい。
【００９６】
さらにまた、上述した実施の形態においては、確保するチャンネル数とロードする波形データの数がともにｎ個で共通になっていたが、互いに異なる個数であってもよい。
さらにまた、上述した実施の形態においては、シーケンス再生を開始する際に必要なチャンネル数を検出して使用するチャンネル数ｎを決定したが、このｎを予めシーケンスデータ毎に指定しておいたり、手動でｎを設定するようにしてもよい。
さらにまた、上述した実施の形態においては、前記ＰＣバッファを第１のＲＡＭ１２上に設けるものとして説明したが、これに限られることはなく、前記第２のＲＡＭ２１上にＰＣバッファを設けるようにしても良い。要するに、前記ＣＰＵ１０のメモリ空間上に、前記ＰＣバッファが配置されていればよい。
さらにまた、上述した実施の形態においては、前記サウンド入出力ボード３０上にＡ／Ｄ変換器３６およびＤ／Ａ変換器３７を設けているが、これらの回路をサウンド入出力ボード上に設けず、ＵＳＢ（Univesal Serial Bus）あるいはＩＥＥＥ１３９４等のシリアルインターフェースを介してデジタルオーディオ機器等に接続するようにしても良い。この場合には、デジタルデータで入出力を行うことができ、ノイズ等の混入を防止することができる。
【００９７】
さらにまた、前述したＰバッファ、Ｒバッファのサイズ、再生および録音のチャンネル数、ミキサのチャンネル数、波形サンプルデータのビット数等は、いずれも、上述した実施の形態に記載した数値に限られることはなく、それぞれ、任意の値に変更することが可能である。
さらにまた、上述した実施の形態においては、前記サウンド入出力ボード３０がＰＣＩバスに接続されているものとして説明したが、これに限られることはなく、バースト転送を行うことのできる高速バスであれば、全く同様に適用することができる。
【００９８】
【発明の効果】
以上説明したように、本発明の波形再生装置によれば、ＰＣＩバス等の高速バスの有するバースト転送機能を有効に使用して波形サンプルデータの入出力を行っているので、波形再生に要するＣＰＵの負荷を軽減することができる。また、複数チャンネルの波形サンプルデータの出力が可能であるため、高品質の波形再生を行うことが可能となる。
さらに、シーケンスデータの再生時などに、波形データの再生終了時に次の波形の読み込みを開始しているため、メモリへの読み込みから再生タイミングまでに時間的な余裕ができ、安定した動作を行うことができるとともに、波形読み込みのトリガを発生する処理が単純となる。そして、その処理が多少遅れたとしても、再生のタイミングには影響を及ぼすことがない。したがって、システムの動作効率を低下することなく、安定した動作を行うことができる。
【図面の簡単な説明】
【図１】  本発明の一実施の形態である波形録音再生装置における一実施の形態の構成を示すブロック図である。
【図２】  図１に示した実施の形態におけるサウンド入出力ボードの構成例を示すブロック図である。
【図３】  図１に示した実施の形態におけるデータの流れを説明するための図である。
【図４】  本発明の一実施の形態である波形録音再生装置におけるメインルーチンのフローチャートである。
【図５】  本発明の一実施の形態である波形録音再生装置における再生指示イベント処理および第１の転送回路の動作を説明するためのフローチャートである。
【図６】  本発明の一実施の形態である波形録音再生装置における第２の転送回路の動作およびタイミング発生処理を説明するためのフローチャートである。
【図７】  本発明の一実施の形態である波形録音再生装置におけるシーケンスデータおよび第１のＲＡＭにおける記憶領域の使用例を説明するための図である。
【図８】  本発明の一実施の形態である波形録音再生装置におけるシーケンス再生指示イベント処理を説明するためのフローチャートである。
【図９】  本発明の一実施の形態である波形録音再生装置におけるチャンネル割込処理および制御割込処理を説明するためのフローチャートである。
【符号の説明】
１０  ＣＰＵ、１１  ＲＯＭ、１２、２１、３２  ＲＡＭ、１３  表示器、１４、１６、２２  インターフェース回路、１５  キーボード、１７  タイマ、１８  ローカルバス、１９  ＨＯＳＴ−ＰＣＩブリッジ回路、２０  ＰＣＩバス、２３  ハードディスク装置、２４  ＣＤ−ＲＯＭ装置、２５  ＳＣＳＩインターフェース回路、２６  ネットワーク、２７  ネットワークインターフェース回路、２８  マイクロフォン、２９  サウンドシステム、３０  サウンド入出力ボード、３１、３３  転送回路、３４  ミキサ、３５  ＤＳＰ、３６  Ａ／Ｄ変換器、３７  Ｄ／Ａ変換器、３８  カウンタ、３９  タイミング発生部、４０  レジスタ
【図１】
0004120979.tif 000002
【図２】
0004120979.tif 000003
【図３】
0004120979.tif 000004
【図４】
0004120979.tif 000005
【図５】
0004120979.tif 000006
【図６】
0004120979.tif 000007
【図７】
0004120979.tif 000008
【図８】
0004120979.tif 000009
【図９】
0004120979.tif 000010