(57)【要約】【課題】より容易に、欠落を生じさせることなく、ストリームとして供給される音声データを記録する。【解決手段】オーディオデータ処理プログラム８３は、ストリームとして供給された音声データの受信を制御する。録音アプリケーションプログラム８５は、音声データのHDD１４への記録を制御する。ソケットサービスプログラム８４−１は、第１のプロセスにおいて、音声データをオーディオデータ処理プログラム８３から受け取り、第２のプロセスにおいて、録音アプリケーションプログラム８５に転送すべき音声データが存在するか否かを判定し、転送すべき音声データが存在すると判定された場合には、音声データを録音アプリケーションプログラム８５に転送して、転送処理を終了し、転送すべき音声データが存在しないと判定された場合には、転送処理を即座に終了する。本発明は、音声を記録または再生する記録再生装置に適用できる。【選択図】図３
2008117517.tif 000002
【特許請求の範囲】
【請求項１】
マルチタスクオペレーティングシステムの制御の基に、第１のストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置において、
前記マルチタスクオペレーティングシステム上の第１のプログラムの実行により実現される、前記第１のストリームとして供給された前記コンテンツの受信を制御する受信制御手段と、
前記マルチタスクオペレーティングシステム上の第２のプログラムの実行により実現される、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御手段と、
前記マルチタスクオペレーティングシステム上の第３のプログラムの実行により実現される、第１のプロセスにおいて、前記コンテンツを前記受信制御手段から受け取り、第２のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段と
を備える記録装置。
【請求項２】
前記転送手段は、ソケットである
請求項１に記載の記録装置。
【請求項３】
前記受信制御手段は、
受信された前記コンテンツを前記第１のストリームをなす第１の単位で記憶する第１のバッファと、
前記コンテンツを第２の単位で記憶する第２のバッファと、
前記第１のバッファに記憶されている前記コンテンツの単位を前記第２の単位に変換して、前記第２のバッファに移転する移転手段と
をさらに備え、
前記第２のバッファに記憶されている前記コンテンツを前記第２の単位で、前記転送手段に供給する
請求項１に記載の記録装置。
【請求項４】
前記第１のストリームとして受信された前記コンテンツに含まれる制御情報を抽出する抽出手段をさらに備える
請求項１に記載の記録装置。
【請求項５】
前記抽出手段により抽出された前記制御情報を基に、前記記録制御手段に前記コンテンツの記録の禁止を指示する指示手段をさらに備える
請求項４に記載の記録装置。
【請求項６】
前記抽出手段により抽出された前記制御情報を基に、前記コンテンツを処理する処理手段をさらに備える
請求項４に記載の記録装置。
【請求項７】
前記受信制御手段は、さらに、前記第１のストリームとして受信された前記コンテンツの第２のストリームとしての送信を制御する
請求項１に記載の記録装置。
【請求項８】
前記受信制御手段は、
前記第２のプログラムを登録する登録手段を備え、
前記第２のプログラムが登録されている場合に限り、前記記録制御手段の要求に対応して、前記第３のプログラムの起動を前記マルチタスクオペレーティングシステムに要求する
請求項１に記載の記録装置。
【請求項９】
マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置の記録方法において、
前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む記録方法。
【請求項１０】
マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、
前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む記録処理をコンピュータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラムが記録されている記録媒体。
【請求項１１】
マルチタスクオペレーティングシステムを実行し、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置を制御する処理をコンピュータに実行させるプログラムであり、
前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む処理をコンピュータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラム。
【請求項１２】
マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置において、
前記マルチタスクオペレーティングシステム上の第１のプログラムの実行により実現される、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御手段と、
前記マルチタスクオペレーティングシステム上の第２のプログラムの実行により実現される、第１のバッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御手段と、
前記マルチタスクオペレーティングシステム上の第３のプログラムの実行により実現される、第１のプロセスにおいて、転送先を前記送信制御手段とした前記コンテンツを前記読み出し制御手段から受け取り、前記第１のバッファに空きがある場合、第２のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段と
を備える再生装置。
【請求項１３】
マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置の再生方法において、
前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、前記バッファに空きがある場合、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む再生方法。
【請求項１４】
マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、
前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、前記バッファに空きがある場合、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む再生処理をコンピュータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラムが記録されている記録媒体。
【請求項１５】
マルチタスクオペレーティングシステムを実行し、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置を制御する処理をコンピュータに実行させるプログラムであり、
前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、前記バッファに空きがある場合、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む処理をコンユータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記録装置および方法、再生装置および方法、記録媒体、並びにプログラムに関し、特に、例えば、コンテンツを記録するか、または再生する記録装置および方法、再生装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
従来のオーディオ機器は、一般に、いわゆる組み込み型マイクロコンピュータを内蔵している。内蔵されているマイクロコンピュータを動作させるためのソフトウェアは、組み込み型マイクロコンピュータに最適化され、規模の比較的小さいものが主流である。
【０００３】
ネットワークを利用する機能、および、より見やすいGUI（Graphical User Interface）を備えたオーディオ機器を実現するために、ネットワークを利用する機能、およびGUIの開発を従来の設計手法で行うことは、工数がかかりすぎ、妥当な方法ではない。
【０００４】
そこで、ネットワークを利用する機能、およびGUIがすでに実現されている組み込み型マイクロコンピュータ用のオペレーティングシステムを採用する場合が多い。このような場合、本来パーソナルコンピュータをターゲットに設計されているオペレーティングシステムが組み込み型マイクロコンピュータに移植される。
【０００５】
一方、このようなパーソナルコンピュータをターゲットに設計されているオペレーティングシステムにおいては、コンシューマデジタルオーディオ機器においては常識的な、IEC（International Electrotechnical Commission）60958に準拠するデジタルデータである音声データの処理を行って、音声データに係る著作権等を保護することは実現されていない。
【０００６】
また、従来のデジタルオーディオ機器の開発においては、マイクロコンピュータの能力に対して負荷が大きい処理は、専用のDSP（Digital Signal Processor）に実行させるようにすることが多かった。
【０００７】
これに対して、一般的なパーソナルコンピュータの機能を利用するとき、デジタルデータである音声データを処理するための専用のサウンドチップ（音声処理用IC（Integrated Circuit））は皆無に等しく、パーソナルコンピュータのCPU（Central Processing Unit）に音声データを処理させなければならない。このため、音声データを再生するか、または録音するなどの、いわゆるオーディオ機能を実現するためのプロセス（アプリケーションプログラム）は、個々に音声データを解析し、演算しなければならない。このため、CDプレーヤ機能およびハードディスクレコーダ機能を開発する場合において、CDプレーヤ機能およびハードディスクレコーダ機能毎に、IEC60958に準拠する音声データの処理の機能などの、オーディオデータ処理機能を開発しなければならない。
【０００８】
パーソナルコンピュータ用のオペレーティングシステムにおいては、イベントにより処理が起動される、いわゆるイベントドリブンのパラダイムが採用されている。音声データのように常に送信、受信、または転送されているデータを、このようなイベントドリブンのオペレーティングシステムにより制御されている装置で取り扱うとき、データの処理が間に合わなくなる場合が生じ得る。
【０００９】
音声データの処理が間に合わず、音声に欠落が生じることは、オーディオ製品として、致命的な欠点であると言える。特に、安定してシステムが動作しているなど、負荷が低い状態においては、音切れの発生が比較的少ないが、他のプロセス（他のアプリケーションプログラム）が起動または終了されたとき、または、起動中の他のアプリケーションプログラムによりハードディスクがアクセスされたなどの高負荷の状態においては、システムの負荷が大きくなり、音切れが顕著に発生する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
このように、ネットワークを利用する機能、およびGUIの機能を含み、複数のプロセスを時分割で実行するマルチタスクオペレーティングシステムにより制御される機器おいて、音声データを含むコンテンツを時間的に連続するデータ、いわゆるストリームとして取り扱う場合、入力されるストリームを記録する場合、音切れ（音声データの欠落）を生じさせずに記録することは保証できず、また、音飛びを生じさせずにストリームを出力することも保証できないという問題があった。
【００１１】
また、VX-Works（商標）またはμ-i-TRON（商標）などの組み込み型マイクロコンピュータ用のオペレーティングシステムにおいては、設計者がタスクの要求するターンアラウンドタイムを把握して設計しなければならず、設計は困難である。
【００１２】
本発明は、このような状況に鑑みてなされたものであり、例えば、ターンアラウンドタイムが保証されていないマルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、ストリームとして供給されるコンテンツを記録するか、またはコンテンツをストリームとして再生することができるようにするものである。
【課題を解決するための手段】
【００１３】
本発明の第１の側面の記録装置は、マルチタスクオペレーティングシステムの制御の基に、第１のストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置において、前記マルチタスクオペレーティングシステム上の第１のプログラムの実行により実現される、前記第１のストリームとして供給された前記コンテンツの受信を制御する受信制御手段と、前記マルチタスクオペレーティングシステム上の第２のプログラムの実行により実現される、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御手段と、前記マルチタスクオペレーティングシステム上の第３のプログラムの実行により実現される、第１のプロセスにおいて、前記コンテンツを前記受信制御手段から受け取り、第２のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段とを備える。
【００１４】
前記受信制御手段には、受信された前記コンテンツを前記第１のストリームをなす第１の単位で記憶する第１のバッファと、前記コンテンツを第２の単位で記憶する第２のバッファと、前記第１のバッファに記憶されている前記コンテンツの単位を前記第２の単位に変換して、前記第２のバッファに移転する移転手段とをさらに設け、前記第２のバッファに記憶されている前記コンテンツを前記第２の単位で、前記転送手段に供給させることができる。
【００１５】
本発明の第１の側面の記録装置には、前記第１のストリームとして受信された前記コンテンツに含まれる制御情報を抽出する抽出手段をさらに設けることができる。
【００１６】
本発明の第１の側面の記録装置には、前記抽出手段により抽出された前記制御情報を基に、前記記録制御手段に前記コンテンツの記録の禁止を指示する指示手段をさらに設けることができる。
【００１７】
本発明の第１の側面の記録装置には、前記抽出手段により抽出された前記制御情報を基に、前記コンテンツを処理する処理手段をさらに設けることができる。
【００１８】
前記受信制御手段には、前記第２のプログラムを登録する登録手段を設け、前記第２のプログラムが登録されている場合に限り、前記記録制御手段の要求に対応して、前記第３のプログラムの起動を前記マルチタスクオペレーティングシステムに要求させることができる。
【００１９】
本発明の第１の側面の記録方法は、マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置の記録方法において、前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む。
【００２０】
本発明の第１の側面の記録媒体は、マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む記録処理をコンピュータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラムが記録されている記録媒体。
【００２１】
本発明の第１の側面のプログラムは、マルチタスクオペレーティングシステムを実行し、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置を制御する処理をコンピュータに実行させるプログラムであり、前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む処理をコンピュータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラム。
【００２２】
本発明の第２の側面の再生装置は、マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置において、前記マルチタスクオペレーティングシステム上の第１のプログラムの実行により実現される、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御手段と、前記マルチタスクオペレーティングシステム上の第２のプログラムの実行により実現される、第１のバッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御手段と、前記マルチタスクオペレーティングシステム上の第３のプログラムの実行により実現される、第１のプロセスにおいて、転送先を前記送信制御手段とした前記コンテンツを前記読み出し制御手段から受け取り、前記第１のバッファに空きがある場合、第２のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段とを備える。
【００２３】
本発明の第２の側面の再生方法は、マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置の再生方法において、前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、前記バッファに空きがある場合、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む。
【００２４】
本発明の第２の側面の記録媒体は、マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、前記バッファに空きがある場合、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む再生処理をコンピュータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラムが記録されている記録媒体。
【００２５】
本発明の第２の側面のプログラムは、マルチタスクオペレーティングシステムを実行し、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置を制御する処理をコンピュータに実行させるプログラムであり、前記マルチタスクオペレーティングシステム上で実行される第１のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第２のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第３のプログラムによる、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツを前記第１のプログラムから受け取り、前記バッファに空きがある場合、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第２のプログラムに転送して、転送処理を終了し、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む処理をコンユータに実行させる前記第１のプログラム乃至前記第３のプログラムからなるプログラム。
【００２６】
本発明の第１の側面においては、マルチタスクオペレーティングシステム上の第１のプログラムの実行により実現される、第１のストリームとして供給されたコンテンツの受信が制御され、前記マルチタスクオペレーティングシステム上の第２のプログラムの実行により実現される、前記コンテンツの前記コンテンツ記録媒体への記録が制御され、前記マルチタスクオペレーティングシステム上の第３のプログラムの実行により実現される、第１のプロセスにおいて、前記コンテンツが前記第１のプログラムから受け取られ、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かが判定され、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツが前記第２のプログラムに転送されて、転送処理が終了され、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理が即座に終了される。
【００２７】
本発明の第２の側面においては、マルチタスクオペレーティングシステム上の第１のプログラムの実行により実現される、コンテンツ記録媒体に記録されているコンテンツの読み出しが制御され、前記マルチタスクオペレーティングシステム上の第２のプログラムの実行により実現される、第１のバッファに格納されている前記コンテンツの前記ストリームとしての送信が制御され、前記マルチタスクオペレーティングシステム上の第３のプログラムの実行により実現される、第１のプロセスにおいて、転送先を前記第２のプログラムとした前記コンテンツが前記第１のプログラムから受け取られ、前記第１のバッファに空きがある場合、第２のプロセスにおいて、前記第２のプログラムに転送すべきコンテンツが存在するか否かが判定され、前記第２のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツが第２のプログラムに転送されて、転送処理が終了され、前記第２のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理が即座に終了される。
【発明の効果】
【００２８】
本発明の第１の側面によれば、例えば、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、ストリームとして供給されるコンテンツを記録することができる。
【００２９】
本発明の第２の側面によれば、例えば、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、コンテンツをストリームとして再生することができる。
【発明を実施するための最良の形態】
【００３０】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３１】
以下、図面を参照して本発明を適用した実施の形態について説明する。
【００３２】
図１は、本発明に係る記録再生装置の一実施の形態の構成を示す図である。
【００３３】
CPU（Central Processing Unit）１１は、記録再生装置を動作させるための基本プログラムであるオペレーティングシステムまたは後述する各種のアプリケーションプログラムなど、SDRAM（Synchronous Dynamic Random Access Memory）１２に記憶されている各種のプログラムを実行して、所定の処理を実際に実行する。また、CPU１１は、記録再生装置全体を制御する。オペレーティングシステムとして、例えば、本来、パーソナルコンピュータをターゲットとする、いわゆるマルチタスクオペレーティングシステムであるLINUX OSを利用することができる。
【００３４】
SDRAM１２は、CPU１１が実行するプログラム、およびプログラムの実行にあたり必要なパラメータ若しくはデータを記憶する。
【００３５】
なお、SDRAM１２は、RD-RAM（Rambus（商標） DRAM）など他の方式のDRAMまたはSRAM（Static RAM）であってもよい。
【００３６】
IDE（Integrated Device Electronics）インターフェース１３は、ATA（AT Attachment）に準拠した記録媒体を接続するためのインターフェースであり、CPU１１並びにHDD（Hard Disk Drive）１４およびCD-ROM（Compact Disc-Read Only Memory）ドライブ１５が接続されている。
【００３７】
HDD１４は、CPU１１により実行される、オペレーティングシステムまたは各種のアプリケーションプログラムを記録し、記録されているプログラムを読み出して、読み出したプログラムをCPU１１に供給する。
【００３８】
HDD１４は、内蔵されているハードディスクを駆動し、IDEインターフェース１３を介して、CPU１１から供給されたデータをハードディスクに記録し、ハードディスクに記録されているデータを読み出して、読み出したデータをCPU１１に供給する。例えば、HDD１４は、IDEインターフェース１３を介して、CPU１１から供給された、コンテンツ（楽曲）の一例である音声データをハードディスクに記録し、ハードディスクに記録されている音声データを読み出して、読み出した音声データをCPU１１に供給する。
【００３９】
CD-ROMドライブ１５は、装着されているCD-ROMまたはCD（Compact Disc）に記録されているデータを読み出して、読み出したデータをIDEインターフェース１３を介してCPU１１に供給する。例えば、CD-ROMドライブ１５は、装着されているCDに記録されているコンテンツ（楽曲）の一例である音声データを読み出して、読み出した音声データをIDEインターフェース１３を介してCPU１１に供給する。
【００４０】
PCI（Peripheral Component Interconnect）バス１６は、アドインカードなどの拡張用デバイス等を記録再生装置に接続するためのバスであり、グラフィックカード１７、サウンドカード１８、およびドライブ１９が接続されている。
【００４１】
グラフィックカード１７は、PCIバス１６を介して、CPU１１から供給されたデータを基に、図示せぬディスプレイに画像またはテキストを表示するための信号を生成し、ディスプレイに画像またはテキストを表示させる。
【００４２】
サウンドカード１８は、PCIバス１６を介して、CPU１１から供給されたデータを、後述するDAC（Digital to Analog Converter）５２に供給する。また、サウンドカード１８は、後述する外部再生装置５１から供給されたデータを取得し、PCIバス１６を介して、取得したデータをCPU１１に供給する。
【００４３】
サウンドカード１８は、IEC（International Electrotechnical Commission）60958の規格に準拠し、時間的に連続したデータ、いわゆるストリームである音声データを出力する。サウンドカード１８は、IEC60958の規格に準拠し、時間的に連続したストリームである音声データを入力する。
【００４４】
ドライブ１９は、装着されている磁気ディスク３１、光ディスク３２、光磁気ディスク３３、または半導体メモリ３４に記録されているプログラムを読み出して、PCIバス１６を介して、取得したデータをCPU１１またはSDRAM１２に供給する。
【００４５】
なお、以下、記録再生装置が、コンテンツの一例としての音声データを記録するか、または再生する処理を説明するが、コンテンツは、音声データに限らず、動画像、または数値データなどであってもよい。
【００４６】
図２は、記録再生装置における音声データの流れの概要を説明する図である。
【００４７】
例えば、CDプレーヤまたはMD（Mini Disc）プレーヤなどの外部の外部再生装置５１からコンテンツ（楽曲）であるストリームである音声データを取得し、取得した音声データをHDD１４に記録するとき、音声データは、サウンドカード１８から入力され、DMA（Direct Memory Access）方式によりサウンドカード１８からSDRAM１２に供給される。サウンドカード１８に一時的に記憶された音声データは、HDD１４に供給され、HDD１４に記憶される。
【００４８】
HDD１４に記録されている音声データを、外部装置の一例であるDAC（Digital to Analog Converter）５２に出力するとき、すなわち、コンテンツ（楽曲）である音声データを再生するとき、CPU１１の制御の基に、HDD１４は、記録している音声データを読み出して、読み出した音声データをSDRAM１２に供給する。
【００４９】
同様に、CD-ROMドライブ１５に装着されているCDに記録されている音声データを、再生するとき、CPU１１の制御の基に、CD-ROMドライブ１５は、CDに記録されている音声データを読み出して、読み出した音声データをSDRAM１２に供給する。
【００５０】
SDRAM１２は、HDD１４またはCD-ROMドライブ１５から供給された音声データを記憶する。
【００５１】
SDRAM１２に記憶された音声データは、DMA方式によりサウンドカード１８に供給される。サウンドカード１８は、SDRAM１２から供給された音声データをストリームとしてDAC５２に出力する。DAC５２は、音声データをデジタルアナログ変換して、音声信号を生成する。例えば、DAC５２は、音声信号を図示せぬラウドスピーカに供給し、ラウドスピーカに音声を出力させる。
【００５２】
図３は、CPU１１が実行するプログラムの機能の構成を説明するブロック図である。
【００５３】
デバイスドライバ８１は、カーネル８２の要求に基づいて、IDEインターフェース１３、HDD１４、CD-ROMドライブ１５、グラフィックカード１７、およびサウンドカード１８を制御するプログラムである。実際には、IDEインターフェース１３、HDD１４、CD-ROMドライブ１５、グラフィックカード１７、およびサウンドカード１８は、個々に、個別のデバイスドライバにより制御されるが、本明細書において、個々のデバイスドライバをまとめてデバイスドライバ８１と表現する。
【００５４】
カーネル８２は、オペレーティングシステム（基本プログラム）の中心をなすプログラムであり、各種のデバイス制御、ファイルシステム、ユーザプロセスの実行と監視、メモリマネージメント等の、記録再生装置が動作するのに必要な機能を提供する。
【００５５】
ここで、プロセスとは、マルチタスクオペレーティングシステムにおいて、メモリ資源、ディスク資源、またはI/O資源などを独立して占有するプログラムの実行単位をいう。マルチタスクオペレーティングシステムにおいて、実行している各プログラムに対応するプロセスに、見かけ上独立したメモリ空間やI/O空間が割り当てられるので、それぞれのプログラムは個々に動作しているように見える。これにより、各プログラムにおいては、同時に実行される他のプログラムとの関係を考慮する必要がなくなる。
【００５６】
プロセスには、ユーザ（使用者）により起動されたユーザプロセス、またはオペレーティングシステムの機能の一部を独立したプロセスとして実行するシステムプロセスなどが含まれる。
【００５７】
例えば、カーネル８２は、処理の開始または終了の管理、装置の管理、および障害の管理などのシステム制御、並びに例外処理、プロセス管理、およびプロセス間通信制御などの実行管理などを実行する。カーネル８２は、ユーザプロセスであるオーディオデータ処理プログラム８３、録音アプリケーションプログラム８５、および再生アプリケーションプログラム８６を、プロセスを単位として、時分割で実行させる。
【００５８】
オーディオデータ処理プログラム８３は、外部から供給された音声データを記録するとき、デバイスドライバ８１およびカーネル８２を介して、外部からストリームとして供給された音声データを取得し、取得した音声データをソケットサービスプログラム８４−１を介して、録音アプリケーションプログラム８５に供給する。また、オーディオデータ処理プログラム８３は、外部に音声データを出力して、外部の機器に音声データを再生させるとき、ソケットサービスプログラム８４−２を介して、再生アプリケーションプログラム８６から、音声データを取得し、カーネル８２およびデバイスドライバ８１を介して、サウンドカード１８に、取得した音声データをストリームとして外部に出力させる。
【００５９】
オーディオデータ処理プログラム８３は、複数のプログラム（プロセス）、例えば、再生アプリケーションプログラム８６に代表されるCDプレイヤーアプリケーション、または録音アプリケーションプログラム８５に代表されるHDレコーダアプリケーションから共通して使用されるソフトウエアである。各プロセスがオーディオデータ処理プログラム８３を共通に使用できるようにするため、オーディオデータ処理プログラム８３は、後述するソケットと称するプロセス間通信手法を用いる。
【００６０】
このようにすることで、本来、各アプリケーションプログラムのそれぞれが独自におこなわなければならないが、共通の処理である音声データの解析、または演算その他処理を、オーディオデータ処理プログラム８３に一任することができる。
【００６１】
その結果、共通の処理を録音アプリケーションプログラム８５および再生アプリケーションプログラム８６にそれぞれ実装する無駄を省く、いわゆる、資源の共通利用が図られる。
【００６２】
ソケットサービスプログラム８４−１は、オーディオデータ処理プログラム８３を入力側とし、録音アプリケーションプログラム８５を出力側とするソケットを確立するためのプログラムである。ソケットサービスプログラム８４−１により確立されたソケットは、オーディオデータ処理プログラム８３から、録音アプリケーションプログラム８５に、音声データを転送する。
【００６３】
さらに、ソケットは、オーディオデータ処理プログラム８３と録音アプリケーションプログラム８５とのメッセージの交換に使用される。
【００６４】
ソケットサービスプログラム８４−２は、再生アプリケーションプログラム８６を入力側とし、オーディオデータ処理プログラム８３を出力側とするソケットを確立するためのプログラムである。ソケットサービスプログラム８４−２により確立されたソケットは、再生アプリケーションプログラム８６から、オーディオデータ処理プログラム８３に、音声データを転送する。
【００６５】
さらに、ソケットは、オーディオデータ処理プログラム８３と再生アプリケーションプログラム８６とのメッセージの交換に使用される。
【００６６】
ソケットサービスプログラム８４−１および８４−２は、例えば、共有ライブラリのAPI（Application Programming Interface）としてオペレーティングシステムと共に提供される。
【００６７】
本発明に係る記録再生装置において、再生アプリケーションプログラム８６から見たオーディオデータ処理プログラム８３の処理は、時間遅れなく、即座に実行されるように見える。同様に、録音アプリケーションプログラム８５から見たオーディオデータ処理プログラム８３の処理は、時間遅れなく、即座に実行されるように見える。
【００６８】
図４は、オーディオデータ処理プログラム８３、アプリケーションプログラム、およびソケットの関係の例を示す図である。図４において、それぞれの実線は、オーディオデータ処理プログラム８３と、アプリケーションプログラム１乃至アプリケーションプログラム４のいずれかとがメッセージを交換するためのそれぞれのソケットを示す。
【００６９】
図４において、１点鎖線は、アプリケーションプログラム１からオーディオデータ処理プログラム８３に音声データを供給するためのソケットを示す。図４において、２点鎖線は、オーディオデータ処理プログラム８３からアプリケーションプログラム３に音声データを供給するためのソケットを示す。
【００７０】
オーディオデータ処理プログラム８３との間でメッセージを交換するためのソケットは、アプリケーションプログラム１乃至アプリケーションプログラム４のそれぞれ毎に存在する。しかし、オーディオデータ処理プログラム８３が音声データを送信するためのソケットは、複数のアプリケーションプログラムのうち、録音の処理を実行する１つのアプリケーションプログラムに対して、１つしか存在しない。また、オーディオデータ処理プログラム８３が音声データを受信するためのソケットは、複数のアプリケーションプログラムのうち、再生の処理を実行する１つのアプリケーションプログラムに対して、１つしか存在しない。
【００７１】
このようにすることで、音声データが他のアプリケーションプログラムに横取りされることによる音声の欠落、または音声データに他のアプリケーションプログラムから供給された他の音声データが混入することによる音飛びが防止される。
【００７２】
音声データを送信するためのソケットを排他的に確立させる処理は、後述する。
【００７３】
なお、ソケットは、BSD UNIX（登録商標）上で開発されたSocket、米マイクロソフト（商標）社で開発されたWinSock、またはUnix（登録商標） System Vで開発されたSTREAMアーキテクチャを採用するOpenTransportなどであってもよい。
【００７４】
ソケットは、複数のプロセス間を通信するために一般的に利用され、インターネットプロトコルの１つとして実装されることも多い。ソケットを利用する利点の１つは、大量のデータの転送が容易であることである。ソケットの詳細については、後述する。
【００７５】
録音アプリケーションプログラム８５は、ソケットサービスプログラム８４−１により提供されるソケットを介して、オーディオデータ処理プログラム８３から供給された音声データを、HDD１４に記録させるプログラムである。録音アプリケーションプログラム８５は、取得した音声データを、カーネル８２およびデバイスドライバ８１を介して、HDD１４に供給する。HDD１４は、カーネル８２およびデバイスドライバ８１を介して、録音アプリケーションプログラム８５から供給された音声データを記録する。
【００７６】
より具体的には、録音アプリケーションプログラム８５が、システムコールにより、カーネル８２に、音声データの記録を要求したとき、カーネル８２は、デバイスドライバ８１に、HDD１４への音声データの記録を制御させる。
【００７７】
再生アプリケーションプログラム８６は、カーネル８２およびデバイスドライバ８１を介して、CD-ROMドライブ１５に、装着されているCD９１から音声データを読み出させ、読み出した音声データを取得する。または、再生アプリケーションプログラム８６は、カーネル８２およびデバイスドライバ８１を介して、HDD１４に、記録されている音声データを読み出させ、読み出した音声データを取得する。
【００７８】
より具体的には、再生アプリケーションプログラム８６が、システムコールにより、カーネル８２に、CD-ROMドライブ１５からの音声データの読み出しを要求したとき、カーネル８２は、デバイスドライバ８１に、CD-ROMドライブ１５からの、装着されているCDに記録されている音声データの読み出しを制御させる。または、再生アプリケーションプログラム８６が、システムコールにより、カーネル８２に、HDD１４からの音声データの読み出しを要求したとき、カーネル８２は、デバイスドライバ８１に、HDD１４からの音声データの読み出しを制御させる。
【００７９】
再生アプリケーションプログラム８６は、取得した音声データを、ソケットサービスプログラム８４−２により提供されるソケットを介して、オーディオデータ処理プログラム８３に供給する。
【００８０】
オーディオデータ処理プログラム８３は、再生アプリケーションプログラム８６から供給された音声データの出力を、カーネル８２に要求する。カーネル８２は、デバイスドライバ８１に、サウンドカード１８を制御させ、音声データをストリームとして出力させる。
【００８１】
CPU１１により実行されるプログラムが支配する仮想的な空間は、カーネル空間と、ユーザプロセス空間とに分類される。カーネル空間は、オペレーティングシステム、主としてカーネル８２に支配される空間である。これに対して、ユーザプロセス空間においては、オペレーティングシステム以外の通常のアプリケーションプログラムが実行される。
【００８２】
例えば、カーネル空間において、オペレーティングシステムを構成する、デバイスドライバ８１、カーネル８２、並びにソケットサービスプログラム８４−１およびソケットサービスプログラム８４−２が実行される。通常のアプリケーションプログラムである、オーディオデータ処理プログラム８３、録音アプリケーションプログラム８５、および再生アプリケーションプログラム８６は、ユーザプロセス空間で実行される。
【００８３】
システムコールとは、ユーザプロセス空間で実行される通常のアプリケーションプログラムが、カーネル空間で実行されるオペレーティングシステムにサービスを要求する手続をいう。例えば、ユーザプロセス空間とカーネル空間とに跨る音声データの転送、または、HDD１４、CD-ROMドライブ１５、若しくはサウンドカード１８などのデバイスの制御は、システムコールにより実行される。例えば、オーディオデータ処理プログラム８３とカーネル８２との音声データの転送は、オーディオデータ処理プログラム８３からカーネル８２へのシステムコールにより実行される。また、サウンドカード１８の制御は、システムコールにより実行される。
【００８４】
本明細書において、システムコールには、いわゆるライブラリコール、またはカーネルコールが含まれる。
【００８５】
次に、オーディオデータ処理プログラム８３の構成を説明する。
【００８６】
図５は、オーディオデータ処理プログラム８３に含まれるプログラムおよび機能を説明するブロック図である。
【００８７】
読み出し制御プログラム１０１は、サウンドカード１８からの音声データの読み出しを制御し、IEC60958に準拠するストリームを取得したサウンドカード１８から読み出した音声データを読み出しデータバッファ１０２に格納する。
【００８８】
読み出しデータバッファ１０２は、サウンドカード１８から読み出した音声データを、サブフレームを単位として一時的に記憶する。読み出しデータバッファ１０２は、例えば、いわゆるリングバッファとすることができる。
【００８９】
例えば、読み出しデータバッファ１０２は、Ｎ個のバッファ（データの記憶の単位となるバッファ）からなるリングバッファである。最新の音声データは、１番目のバッファから順に、２番目のバッファ、３番目のバッファ、４番目のバッファと格納され、Ｎ番目のバッファまで音声データが格納されたとき、次に、１番目のバッファに戻って音声データが格納される。このように、リングバッファにおいては、Ｎ個のバッファが論理的な環を形成し、論理的に形成され環に沿って、音声データの格納の処理と音声データの読み出しの処理とが実行される。
【００９０】
このため、リングバッファ上の、次に音声データを格納すべき位置を示す書き込みポインタと、リングバッファ上の、次に音声データを読み出すべき位置を示す読み出しポインタとが、リングバッファ毎に設けられる。
【００９１】
書き込みポインタで示される位置および読み出しポインタで示される位置、すなわち、書き込みポインタの値および読み出しポインタの値を基に、そのリングバッファが空であるか、一杯であるかを判断することができる。
【００９２】
オーディオデータ解析フィルタプログラム１０３は、読み出しデータバッファ１０２に格納されている音声データに含まれる、音声データの特徴を示すデータを解析して、解析された結果に対応するデータを音声データに加える。オーディオデータ解析フィルタプログラム１０３は、解析された結果に対応するデータが加えられた音声データを、録音データバッファ１０４、またはスイッチ１０５を介して、IEC60958エンコードプログラム１０６に供給する。
【００９３】
録音データバッファ１０４は、録音アプリケーションプログラム８５に供給する音声データを一時的に記憶する。録音データバッファ１０４は、例えば、いわゆるリングバッファとすることができる。
【００９４】
オーディオデータ処理プログラム８３は、録音アプリケーションプログラム８５に送信すべき新たな音声データが録音データバッファ１０４にないとき、録音アプリケーションプログラム８５の読み出し処理を遅延させる。
【００９５】
録音データバッファ１０４に新たな音声データが順次格納されているにもかかわらず、録音アプリケーションプログラム８５が音声データの読み出しを行わないとき、または音声データを読み出せないとき、録音データバッファ１０４が一杯になるまで、音声データが保持される。
【００９６】
これにより、録音アプリケーションプログラム８５により録音される音声データ（コンテンツ（楽曲））の音切れが防止される。
【００９７】
オーディオデータ処理プログラム８３は、録音アプリケーションプログラム８５との同期を常に取る必要がなく、録音アプリケーションプログラム８５が所定の理由で、オーディオストリーミングを行うためのリアルタイム性を確保できない場合にも、音切れを防止する。
【００９８】
送信制御プログラム１０７は、録音データバッファ１０４に格納されている音声データの録音アプリケーションプログラム８５への供給を制御するプログラムである。より詳細には、送信制御プログラム１０７は、録音アプリケーションプログラム８５が、録音データバッファ１０４の記録開始位置を指定してから、録音終了位置を指定するまで、すなわち、録音アプリケーションプログラム８５が録音の処理を実行している間、録音データバッファ１０４に新たな音声データが格納される度に、新たに格納された音声データを録音アプリケーションプログラム８５に供給する。
【００９９】
送信制御プログラム１０７は、録音アプリケーションプログラム８５への音声データの供給の制御に際し、録音アプリケーションプログラム８５とメッセージを交換する。
【０１００】
受信制御プログラム１０８は、再生アプリケーションプログラム８６から音声データを取得し、取得した音声データを再生データバッファ１０９に格納する処理を制御するプログラムである。受信制御プログラム１０８は、再生アプリケーションプログラム８６からの音声データの取得の処理に際し、再生アプリケーションプログラム８６とメッセージを交換する。
【０１０１】
再生データバッファ１０９は、再生アプリケーションプログラム８６から供給された音声データを一時的に記憶する。再生データバッファ１０９は、例えば、いわゆるリングバッファとすることができる。
【０１０２】
録音データバッファ１０４および再生データバッファ１０９は、図２１および図２２を参照して後述される構造を有する音声データを格納する。
【０１０３】
再生データバッファ１０９に格納された音声データは、図１８乃至図２０のフローチャートを参照して後述される処理により、サウンドカード１８に送出される。音声データがサウンドカード１８に送出されると、再生データバッファ１０９に空きができるので、再生アプリケーションプログラム８６からの音声データの転送を受け付けることができるようになる。
【０１０４】
再生アプリケーションプログラム８６は、再生データバッファ１０９に空きがあるとき、所定の大きさの音声データを１度に再生データバッファ１０９に転送させる。以降、再生アプリケーションプログラム８６は、再生データバッファ１０９に空きができると、その度に、所定の大きさの音声データを１度に再生データバッファ１０９に転送する。
【０１０５】
従って、録音の場合と同様に、再生アプリケーションプログラム８６が何らかの要因で定期的な音声データの転送ができない場合であっても、再生データバッファ１０９に音声データが格納されているとき、再生音の音切れを抑制できようになる。
【０１０６】
また、再生データバッファ１０９に格納されている音声データをクリアすることにより、再生アプリケーションプログラム８６が再生を停止するとき、または再生する曲を変更するとき、再生データバッファ１０９に格納されている音声データが継続してサウンドカード１８から出力されることが防止される。
【０１０７】
スイッチ１０５は、オーディオデータ解析フィルタプログラム１０３から供給された音声データ、再生データバッファ１０９から供給された音声データ、または無音のデータであるゼロデータを生成するゼロデータ生成プログラム１１０より供給されたゼロデータである音声データのいずれか１つを選択し、選択された音声データをIEC60958エンコードプログラム１０６に供給する。
【０１０８】
例えば、録音アプリケーションプログラム８５により録音される音声を確認しながら（サウンドカード１８から音声データを出力しながら）録音を実行するとき、出力される音声データのソースとして、録音データバッファ１０４が選択される。すなわち、スイッチ１０５は、オーディオデータ解析フィルタプログラム１０３から供給された音声データを選択し、選択された音声データをIEC60958エンコードプログラム１０６に供給する。
【０１０９】
このようにすることで、使用者は、図１８乃至図２０のフローチャートを参照して説明する処理により加工された音声データを確認しながら、録音をすることができる。
【０１１０】
例えば、再生アプリケーションプログラム８６が再生の処理を実行するとき、出力される音声データのソースとして、再生データバッファ１０９が選択される。すなわち、スイッチ１０５は、再生データバッファ１０９から供給された音声データを選択し、選択された音声データをIEC60958エンコードプログラム１０６に供給する。
【０１１１】
また、例えば、再生のプロセスおよび録音のプロセスが存在しないとき、すなわち、再生アプリケーションプログラム８６および録音アプリケーションプログラム８５が起動されていないとき、録音データバッファ１０４および再生データバッファ１０９が共に選択されず、無音の音声データが出力される。すなわち、スイッチ１０５は、無音のデータであるゼロデータを生成するゼロデータ生成プログラム１１０より供給されたゼロデータである音声データを選択し、選択された音声データをIEC60958エンコードプログラム１０６に供給する。
【０１１２】
再生アプリケーションプログラム８６が曲の再生を一時停止しているとき、再生データバッファ１０９の動作を止める必要があるので、この場合も、録音データバッファ１０４および再生データバッファ１０９が共に選択されず、無音の音声データが出力される。
【０１１３】
IEC60958エンコードプログラム１０６は、スイッチ１０５を介して供給された音声データを、IEC60958の規格に準拠するようにエンコードする、すなわち音声データの方式をIEC60958の規格に準拠するように変更する。IEC60958エンコードプログラム１０６は、IEC60958の規格に準拠するようにエンコードした音声データを書き込みデータバッファ１１１に供給する。
【０１１４】
書き込みデータバッファ１１１は、IEC60958エンコードプログラム１０６から供給された音声データを、サブフレームを単位として一時的に記憶する。書き込みデータバッファ１１１は、例えば、いわゆるリングバッファとすることができる。
【０１１５】
オーディオデータ処理プログラム８３が動作しているとき、書き込みデータバッファ１１１に格納されている音声データは、サウンドカード１８に常に一定のタイミングで出力されているので、書き込みデータバッファ１１１は、コンスタントに動作していると言える。
【０１１６】
読み出しデータバッファ１０２および書き込みデータバッファ１１１は、IEC60958に準拠するサブフレームを単位として、音声データを記憶する。これに対して、録音データバッファ１０４および再生データバッファ１０９は、サブフレームに比較してより多い数のサンプルデータからなるデータ（図３０を参照して後述する）を単位として、音声データを記憶する。
【０１１７】
なお、音声データのストリームは、IEC60958に準拠する方式であると説明したが、音声データのストリームは、例えば、MPEG（Moving Pictures Experts Group）方式のトランスポートストリームまたはパケッタイズドエレメンタリストリームなど他の方式のストリームでも良く、ストリームの方式は、本発明を限定するものではない。
【０１１８】
次に、図６乃至図１１を参照して、オーディオデータ処理プログラム８３乃至再生アプリケーションプログラム８６による処理の概要を説明する。
【０１１９】
図６は、再生アプリケーションプログラム８６の登録の処理を説明するフローチャートである。
【０１２０】
ステップＳ１００１において、再生アプリケーションプログラム８６は、登録名を生成する。ステップＳ１００２において、再生アプリケーションプログラム８６は、プロセス間通信により、登録名と共に、ソケットの確立要求をオーディオデータ処理プログラム８３に送信する。
【０１２１】
ステップＳ２００１において、オーディオデータ処理プログラム８３は、再生アプリケーションプログラム８６から送信された、登録名、およびソケットの確立要求を受信する。ステップＳ２００２において、オーディオデータ処理プログラム８３は、再生の処理を実行する相手として他のアプリケーションプログラムが登録されていないか、すなわち、再生のアプリケーションプログラムの重複登録をチェックする。他のアプリケーションプログラムが再生のアプリケーションプログラムとして既に登録されているとき、以後の処理は、実行されない。
【０１２２】
これにより、複数の再生のアプリケーションプログラムの重複登録が防止される。その結果、アプリケーションプログラムから音声データを受信する２つ以上のソケットが確立されることがなくなり、音飛びが防止される。
【０１２３】
ステップＳ２００１の処理で受信した登録名が他のアプリケーションプログラムに対応して登録されていないと判断された場合、ステップＳ２００３に進み、オーディオデータ処理プログラム８３は、ステップＳ２００１の処理で受信した登録名を登録して、登録した登録名に対応する登録IDを生成する。オーディオデータ処理プログラム８３は、生成した登録IDを登録名に対応させて登録する、すなわち登録IDおよび登録名を対応させて記憶する。
【０１２４】
オーディオデータ処理プログラム８３は、カーネル８２に、再生アプリケーションプログラム８６とのソケットの確立を要求する。
【０１２５】
ステップＳ２００４において、オーディオデータ処理プログラム８３は、再生アプリケーションプログラム８６に、登録IDを送信する。
【０１２６】
ステップＳ１００３において、再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３から送信された登録IDを受信する。
【０１２７】
ステップＳ１００４において、再生アプリケーションプログラム８６は、受信した登録IDを記憶し、処理は終了する。
【０１２８】
録音アプリケーションプログラム８５の登録の処理は、図６を参照して説明した処理と同様なので、その説明は省略する。
【０１２９】
複数の録音のアプリケーションプログラムの重複登録が防止される。その結果、アプリケーションプログラムに音声データを送信する２つ以上のソケットが確立されることがなくなり、音切れが防止される。
【０１３０】
図７は、オーディオデータ処理プログラム８３に処理を要求するためのメッセージに格納されている登録IDの確認の処理を説明するフローチャートである。
【０１３１】
ステップＳ１１０１において、再生アプリケーションプログラム８６は、プロセス情報に登録IDを格納したメッセージを送信する。メッセージの構成については、後述する。
【０１３２】
ステップＳ２１０１において、オーディオデータ処理プログラム８３は、再生アプリケーションプログラム８６から送信された、プロセス情報に登録IDを格納したメッセージを受信する。オーディオデータ処理プログラム８３は、メッセージのプロセス情報から登録IDを抽出する。
【０１３３】
ステップＳ２１０２において、オーディオデータ処理プログラム８３は、記憶している登録IDを基に、抽出された登録IDが未登録であるか否かを判定し、抽出された登録IDが登録されていると判定された場合、ステップＳ２１０３に進み、メッセージに格納されているコマンドに対応する処理を実行する。
【０１３４】
一方、ステップＳ２１０２において、抽出された登録IDが未登録であると判定された場合、ステップＳ２１０４に進み、オーディオデータ処理プログラム８３は、エラーメッセージを再生アプリケーションプログラム８６に送信する。抽出された登録IDが未登録であると判定された場合、オーディオデータ処理プログラム８３は、メッセージに格納されているコマンドに対応する処理を実行しない。
【０１３５】
ステップＳ１１０２において、再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３から送信されたエラーメッセージを受信し、処理は終了する。
【０１３６】
録音アプリケーションプログラム８５から送信されたメッセージについても、図７を参照して説明した、メッセージに格納されている登録IDの確認の処理が同様に実行されるので、その説明は省略する。
【０１３７】
このようにすることで、複数のアプリケーションプログラムが、再生の処理、または録音の処理において、オーディオデータ処理プログラム８３を使用するとき、複数のアプリケーションプログラムが同時に再生の処理、または録音の処理を、オーディオデータ処理プログラム８３に要求することを防止することができる。
【０１３８】
例えば、再生を実行するあるプロセスが再生の処理を実行している場合、再生を実行する他のプロセスからの、オーディオデータ処理プログラム８３への再生のための音声データの送信を許したとき、あるプロセスから供給される音声データに他のプロセスの音声のデータが混ざり込んでしまうことになり、あるプロセスから供給される音声データを正しく再生することができなくなる。
【０１３９】
同様に、録音を実行するあるプロセスが録音の処理を実行している場合、オーディオデータ処理プログラム８３からの、録音を実行する他のプロセスへの録音のための音声データの送信を許したとき、音声データが横取りされてしまうことになり、あるプロセスは一部が欠けた音声データを記録することになる。
【０１４０】
このように、共通して使用されるオーディオデータ処理プログラム８３のこのような競合状態を防ぐために、オーディオデータ処理プログラム８３は、オーディオデータ処理プログラム８３を使用する各アプリケーションプログラムに、それぞれを識別するための情報を最初に要求する。
【０１４１】
実際に、再生の処理または録音の処理が実行されるとき、オーディオデータ処理プログラム８３は、録音データバッファ１０４の使用者、および再生データバッファ１０９の使用者を記憶しておき、録音データバッファ１０４または再生データバッファ１０９が使用されているとき、他の使用者からの使用を排除する排他制御を実行する。
【０１４２】
図８は、オーディオデータ処理プログラム８３による、再生アプリケーションプログラム８６から送信されたメッセージに格納されているコマンドに対応する処理を実行する処理を説明するフローチャートである。
【０１４３】
ステップＳ１２０１において、再生アプリケーションプログラム８６は、メッセージを送信するためのソケットを介して、実行要求のコマンドを格納したメッセージをオーディオデータ処理プログラム８３に送信する。
【０１４４】
図９は、メッセージの構成を説明する図である。メッセージは、コマンド、エラー、プロセス情報、および引数を含む。
【０１４５】
メッセージに含まれるコマンドは、メッセージを送信するアプリケーションプログラムがオーディオデータ処理プログラム８３に要求する処理内容を示す。エラーは、オーディオデータ処理プログラム８３が、コマンドで要求された処理を実行した結果を示す。エラーには、異常終了の結果に限らず、処理が正常に終了した場合、処理が正常に終了したことを示すデータが設定される。
【０１４６】
プロセス情報は、アプリケーションプログラム、すなわちプロセスの名前、または登録ID等を含む。引数は、コマンドに応じた引数、例えば、コマンドの処理に必要なパラメータなどである。オーディオデータ処理プログラム８３が、コマンドで要求された処理を実行した結果をアプリケーションプログラムに通知する場合、必要なとき、引数に、コマンドの実行結果が設定される。
【０１４７】
ステップＳ２２０１において、オーディオデータ処理プログラム８３は、再生アプリケーションプログラム８６からソケットを介して送信されたメッセージを受信する。ステップＳ２２０２において、オーディオデータ処理プログラム８３は、受信したメッセージからコマンドを抽出し、コマンドを解釈する。例えば、オーディオデータ処理プログラム８３は、コマンドのビット列に対応させて、サービスの名称を配置したテーブルを予め記憶し、記憶しているテーブルを基に、コマンドに対応するサービスの名称を取得する。
【０１４８】
ステップＳ２２０３において、オーディオデータ処理プログラム８３は、コマンドに対応する処理を実行する。例えば、オーディオデータ処理プログラム８３は、コマンドに対応するサービスの名称を基に、サービスの名称に対応した処理を起動する。
【０１４９】
ステップＳ２２０４において、オーディオデータ処理プログラム８３は、メッセージを送信するためのソケットを介して、ステップＳ２２０３の処理の実行結果を格納したメッセージを、再生アプリケーションプログラム８６に送信する。実行の結果は、メッセージのエラーに格納される。
【０１５０】
ステップＳ１２０２において、再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３から送信された、実行結果を格納したメッセージを受信し、処理は終了する。
【０１５１】
オーディオデータ処理プログラム８３による、録音アプリケーションプログラム８５から送信されたメッセージに格納されているコマンドに対応する処理を実行する処理は、図８に示すフローチャートを参照して説明した処理と同様なのでその説明は省略する。
【０１５２】
このように、オーディオデータ処理プログラム８３は、他のアプリケーションプログラムから送信されたメッセージに格納されているコマンドを基に、所定の処理を実行する。オーディオデータ処理プログラム８３に、コマンドを格納したメッセージを送信し、所定の処理を要求したアプリケーションプログラムは、オーディオデータ処理プログラム８３から送信された、実行結果を格納したメッセージを基に、オーディオデータ処理プログラム８３の処理の結果を知ることができる。
【０１５３】
図１０のフローチャートを参照して、再生アプリケーションプログラム８６からオーディオデータ処理プログラム８３に音声データを送信する処理の概要を説明する。
【０１５４】
ステップＳ１３０１において、再生アプリケーションプログラム８６は、メッセージを送信するためのソケットを介して、再生のコマンドを格納したメッセージをオーディオデータ処理プログラム８３に送信する。メッセージは、再生のコマンドを格納するとともに、プロセス情報として、再生アプリケーションプログラム８６の登録IDを格納する。
【０１５５】
ステップＳ２３０１において、オーディオデータ処理プログラム８３は、再生のコマンドを格納したメッセージを受信する。ステップＳ２３０２において、オーディオデータ処理プログラム８３は、メッセージのプロセス情報として格納されている登録IDを基に、メッセージを送信したプログラム、すなわち、再生アプリケーションプログラム８６が再生の処理が可能なプログラムであるかを判断する。ステップＳ２３０３において、オーディオデータ処理プログラム８３は、再生アプリケーションプログラム８６が再生の処理が可能なプログラムであると判断した場合、メッセージを送信するためのソケットを介して、エラーにACKを格納したメッセージを再生アプリケーションプログラム８６に送信し、再生アプリケーションプログラム８６が再生の処理が可能なプログラムでないと判断した場合、メッセージを送信するためのソケットを介して、エラーにNACKを格納したメッセージを再生アプリケーションプログラム８６に送信する。
【０１５６】
ステップＳ１３０２において、再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３から送信されたACKまたはNACKが格納されたメッセージを受信する。再生アプリケーションプログラム８６は、メッセージのエラーに格納されているACKまたはNACKを抽出する。
【０１５７】
ステップＳ１３０３において、再生アプリケーションプログラム８６は、ACKを受信したか否かを判定し、ACKを受信したと判定された場合、ステップＳ１３０４に進み、再生する音声データを、音声データを送信するためのソケットを介してオーディオデータ処理プログラム８３に送信する。
【０１５８】
ステップＳ２３０４において、オーディオデータ処理プログラム８３は、音声データを送信するためのソケットを介して送信された音声データを受信する。
【０１５９】
ステップＳ２３０５において、オーディオデータ処理プログラム８３は、受信された音声データの大きさ（例えば、バイト数）を基に、音声データに欠落があるか否かなど、受信した音声データをチェックする。
【０１６０】
ステップＳ２３０６において、オーディオデータ処理プログラム８３は、音声データに欠落がある場合、エラーにNACKを格納したメッセージをソケットを介して再生アプリケーションプログラム８６に送信し、音声データに欠落がない場合、エラーにACKを格納したメッセージをソケットを介して再生アプリケーションプログラム８６に送信する。
【０１６１】
ステップＳ１３０５において、再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３から送信された、ACKまたはNACKがエラーに格納されているメッセージを受信する。再生アプリケーションプログラム８６は、メッセージのエラーからACKまたはNACKを抽出する。
【０１６２】
ステップＳ１３０６において、再生アプリケーションプログラム８６は、NACKを格納したメッセージを受信したか否かを判定し、NACKを格納したメッセージを受信したと判定された場合、ステップＳ１３０７に進み、音声データをオーディオデータ処理プログラム８３に送信するためのソケットを介して、音声データを再送する。ステップＳ１３０７の処理で再送される音声データは、ステップＳ１３０４の処理で送信される音声のデータと同一である。
【０１６３】
ステップＳ２３０７において、オーディオデータ処理プログラム８３は、再生アプリケーションプログラム８６から再送された音声のデータを受信する。なお、ステップＳ２３０４の処理で欠落がない音声データが受信された場合、ステップＳ２３０７の処理は実行されない。
【０１６４】
また、音声データの再送の処理は、１つの音声データに対応して、１度限りとされる。１つの音声データを数回再送すると、再生のタイミングが間に合わなくなるためである。
【０１６５】
ステップＳ１３０６において、ACKを格納したメッセージを受信したと判定された場合、オーディオデータ処理プログラム８３がステップＳ２３０４の処理で欠落がない音声データを受信したので、音声データを再送する必要がなく、ステップＳ１３０７の処理はスキップされ、処理は、ステップＳ１３０８に進む。
【０１６６】
ステップＳ１３０８において、再生アプリケーションプログラム８６は、音声データの送信を終了するか否かを判定し、音声データの送信を終了しないと判定された場合、ステップＳ１３０４に戻り、音声データの送信の処理を繰り返す。
【０１６７】
ステップＳ１３０８において、音声データの送信を終了すると判定された場合、処理は終了する。
【０１６８】
ステップＳ１３０３において、NACKを受信したと判定された場合、再生アプリケーションプログラム８６が再生の処理が可能なプログラムでない、すなわち、再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３に音声データを送信することはできないので、処理は終了する。
【０１６９】
図１１のフローチャートを参照して、オーディオデータ処理プログラム８３から録音アプリケーションプログラム８５に音声データを送信する処理の概要を説明する。
【０１７０】
ステップＳ３４０１において、録音アプリケーションプログラム８５は、メッセージを送信するためのソケットを介して、録音のコマンドを格納したメッセージをオーディオデータ処理プログラム８３に送信する。メッセージは、録音のコマンドを格納するとともに、プロセス情報として、録音アプリケーションプログラム８５の登録IDを格納する。
【０１７１】
ステップＳ２４０１において、オーディオデータ処理プログラム８３は、録音のコマンドを格納したメッセージを受信する。ステップＳ２４０２において、オーディオデータ処理プログラム８３は、メッセージのプロセス情報として格納されている登録IDを基に、メッセージを送信したプログラム、すなわち、録音アプリケーションプログラム８５が録音の処理が可能なプログラムであるかを判断する。ステップＳ２４０３において、オーディオデータ処理プログラム８３は、録音アプリケーションプログラム８５が録音の処理が可能なプログラムであると判断した場合、メッセージを送信するためのソケットを介して、ACKをエラーに格納したメッセージを録音アプリケーションプログラム８５に送信し、録音アプリケーションプログラム８５が録音の処理が可能なプログラムでないと判断した場合、メッセージを送信するためのソケットを介して、NACKをエラーに格納したメッセージを録音アプリケーションプログラム８５に送信する。録音アプリケーションプログラム８５が録音の処理が可能なプログラムでないと判断された場合、以下の処理は実行されず、音声データは送信されない。
【０１７２】
ステップＳ３４０２において、録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３から送信されたACKまたはNACKが格納されたメッセージを受信する。録音アプリケーションプログラム８５は、メッセージのエラーに格納されているACKまたはNACKを抽出する。
【０１７３】
ステップＳ２４０３において、録音アプリケーションプログラム８５が録音の処理が可能なプログラムであると判断された場合、ステップＳ２４０４に進み、オーディオデータ処理プログラム８３は、録音する音声データを、音声データを送信するためのソケットを介して録音アプリケーションプログラム８５に送信する。
【０１７４】
ステップＳ３４０４において、録音アプリケーションプログラム８５は、音声データを送信するためのソケットを介して送信された音声データを受信する。
【０１７５】
ステップＳ３４０５において、録音アプリケーションプログラム８５は、受信された音声データの大きさ（例えば、バイト数）を基に、音声データに欠落があるか否かなど、受信した音声データをチェックする。
【０１７６】
ステップＳ３４０６において、録音アプリケーションプログラム８５は、音声データに欠落がある場合、エラーにNACKを格納したメッセージをソケットを介してオーディオデータ処理プログラム８３に送信し、音声データに欠落がない場合、エラーにACKを格納したメッセージをソケットを介してオーディオデータ処理プログラム８３に送信する。
【０１７７】
ステップＳ２４０５において、オーディオデータ処理プログラム８３は、録音アプリケーションプログラム８５から送信された、ACKまたはNACKがエラーに格納されているメッセージを受信する。オーディオデータ処理プログラム８３は、メッセージのエラーからACKまたはNACKを抽出する。
【０１７８】
ステップＳ２４０６において、オーディオデータ処理プログラム８３は、NACKを格納したメッセージを受信したか否かを判定し、NACKを格納したメッセージを受信したと判定された場合、ステップＳ２４０７に進み、音声データを録音アプリケーションプログラム８５に送信するためのソケットを介して、音声データを再送する。ステップＳ２４０７の処理で再送される音声データは、ステップＳ２４０４の処理で送信される音声のデータと同一である。
【０１７９】
ステップＳ３４０７において、録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３から再送された音声のデータを受信する。なお、ステップＳ３４０４の処理で欠落がない音声データが受信された場合、ステップＳ３４０７の処理は実行されない。
【０１８０】
また、音声データの再送の処理は、１つの音声データに対応して、１度限りとされる。１つの音声データを数回再送すると、録音のタイミングが間に合わなくなるためである。
【０１８１】
ステップＳ２４０６において、ACKを格納したメッセージを受信したと判定された場合、録音アプリケーションプログラム８５がステップＳ３４０４の処理で欠落がない音声データを受信したので、音声データを再送する必要がなく、ステップＳ２４０７の処理はスキップされ、処理は、ステップＳ２４０８に進む。
【０１８２】
ステップＳ２４０８において、オーディオデータ処理プログラム８３は、音声データの送信を終了するか否かを判定し、音声データの送信を終了しないと判定された場合、ステップＳ２４０４に戻り、音声データの送信の処理を繰り返す。
【０１８３】
ステップＳ２４０８において、音声データの送信を終了すると判定された場合、処理は終了する。
【０１８４】
ステップＳ３４０３において、NACKを受信したと判定された場合、録音アプリケーションプログラム８５が再生の処理が可能なプログラムでない、すなわち、録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３に音声データを送信することはできないので、処理は終了する。
【０１８５】
次に、オーディオデータ処理プログラム８３乃至再生アプリケーションプログラム８６の処理の詳細を説明する。
【０１８６】
図１２は、オーディオデータ処理プログラム８３の起動の処理を説明するフローチャートである。
【０１８７】
ステップＳ１１において、オーディオデータ処理プログラム８３は、自分自身、すなわち、オーディオデータ処理プログラム８３全体のプロセスを始動する。
【０１８８】
ステップＳ１２において、オーディオデータ処理プログラム８３は、初期化の処理を実行する。
【０１８９】
ステップＳ１３において、オーディオデータ処理プログラム８３は、カーネル８２に、オーディオデータ処理プログラム８３に含まれる各プログラム、すなわち読み出し制御プログラム１０１乃至ゼロデータ生成プログラム１１０のスレッドとしての起動を要求する。
【０１９０】
また、オーディオデータ処理プログラム８３は、読み出しデータバッファ１０２、録音データバッファ１０４、再生データバッファ１０９、および書き込みデータバッファ１１１の記憶領域を確保する。
【０１９１】
マルチスレッドシステムにおいては、複数のスレッドが、１つのプロセスで実行され、マルチスレッドシステムは、１つのプロセス内でのマルチタスク処理を可能とする。同じプロセス中のスレッド同士は、メモリ資源またはI/O（Input/Output）資源などのリソースを共有するので、読み出し制御プログラム１０１乃至ゼロデータ生成プログラム１１０間のデータの転送は、容易に実行されることになる。
【０１９２】
ステップＳ１４において、カーネル８２は、オーディオデータ処理プログラム８３に含まれる各プログラム、すなわち読み出し制御プログラム１０１乃至ゼロデータ生成プログラム１１０を並列（時分割）に実行し、処理は終了する。
【０１９３】
読み出し制御プログラム１０１乃至ゼロデータ生成プログラム１１０は、停止が要求されるまで、並列に実行される。
【０１９４】
図１３は、送信制御プログラム１０７による、メッセージの処理を説明するフローチャートである。
【０１９５】
ステップＳ３１において、送信制御プログラム１０７は、カーネル８２から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップＳ３２に進み、ソケット接続要求またはメッセージが受信されたか否かを判定し、ソケット接続要求およびメッセージが受信されていないと判定された場合、ステップＳ３２に戻り、ソケット接続要求またはメッセージが受信されるまで、判定の処理を繰り返す。
【０１９６】
ステップＳ３２の処理は、例えば、selectシステムコールと称する関数の実行により実現される。
【０１９７】
ステップＳ３２において、ソケット接続要求またはメッセージが受信されたと判定された場合、ステップＳ３３に進み、送信制御プログラム１０７は、受信されたのがメッセージであるか否かを判定し、メッセージが受信されたと判定された場合、ステップＳ３４に進み、メッセージからコマンドを抽出し、抽出されたコマンドに応じた処理を起動し、コマンドに対応する処理を実行し、ステップＳ３１に戻り、処理を繰り返す。
【０１９８】
ステップＳ３３において、受信されたのがソケット接続要求であると判定された場合、ステップＳ３５に進み、送信制御プログラム１０７は、録音アプリケーションプログラム８５または再生アプリケーションプログラム８６とのソケット接続を確立して、ステップＳ３１に戻り、処理を繰り返す。
【０１９９】
例えば、ソケット接続の確立により、録音アプリケーションプログラム８５または再生アプリケーションプログラム８６と、オーディオデータ処理プログラム８３とに対応するポート番号が、ソケットオブジェクトとしてカーネル８２に記憶される。ソケットサービスプログラム８４−１または８４−２は、ソケット接続の確立により生成されたソケットオブジェクトを基に、音声データを受け取る相手、または音声データの転送先を特定する。
【０２００】
例えば、ソケット接続の確立を要求した相手、すなわち、録音アプリケーションプログラム８５および再生アプリケーションプログラム８６のいずれかは、ソケット接続が確立されたとき、オーディオデータ処理プログラム８３から、自分が利用すべきソケットを特定するためのハンドルを取得する。
【０２０１】
ステップＳ３１において、停止が要求されたと判定された場合、処理は終了する。
【０２０２】
受信制御プログラム１０８による、メッセージの処理は、図１３のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
【０２０３】
次に、読み出し制御プログラム１０１による、サウンドカード１８から音声データを読み出す処理を図１４のフローチャートを参照して説明する。
【０２０４】
ステップＳ５１において、読み出し制御プログラム１０１は、録音アプリケーションプログラム８５から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップＳ５２に進み、サウンドカード１８から読み出しデータバッファ１０２の半分の大きさの音声データを読み出す。より詳細には、読み出し制御プログラム１０１は、システムコールにより、カーネル８２にサウンドカード１８からの音声データの読み出しを要求し、カーネル８２は、デバイスドライバ８１に、サウンドカード１８からの音声データの読み出しを実行させる。カーネル８２は、読み出された音声データを読み出し制御プログラム１０１に供給する。
【０２０５】
ステップＳ５２、並びに後述するステップＳ５６およびステップＳ５９の処理において、読み出される音声データは、IEC60958の規格に準拠したサブフレームの集合からなる。
【０２０６】
図１５は、サウンドカード１８から読み出される音声データの方式を説明する図である。IEC60958の規格に準拠した音声データは、ストリームとしてサウンドカード１８から入力され、入力された音声データは、オーディオデータ処理プログラム８３に供給される。また、オーディオデータ処理プログラム８３から供給された、IEC60958の規格に準拠した音声データは、サウンドカード１８から出力される。
【０２０７】
図１５は、IEC60958の規格の最小単位であるサブフレームである音声データの構造を示す図である。サブフレームは、サンプル（音声の振幅を示すデータ）を１つ含む、３２ビットのデータからなる。フレームは、２つのサブフレームからなり、Ｌ（左）チャンネルおよびＲ（右）チャンネルのサンプルを１つずつ含む。フレームをサンプルと称する場合もある。
【０２０８】
すなわち、サブフレームは、ＬチャンネルおよびＲチャンネルのいずれかの１つのサンプルを含む。
【０２０９】
ブロックは、連続する１９２個のフレームからなる。
【０２１０】
図中の左側に対応する、サブフレームの最上位から、４ビットは、プリアンブル（Preamble）である。プリアンブルは、Ｂ、Ｍ、またはＷのいずれかである。
【０２１１】
ブロックの先頭のサブフレームは、Ｌチャンネルのサンプルを格納し、ブロックの先頭のサブフレームのプリアンブルは、Ｂである。
【０２１２】
Ｒチャンネルのサンプルを格納するサブフレームのプリアンブルは、Ｗである。
【０２１３】
ブロックの先頭のサブフレームを除き、Ｌチャンネルのサンプルを格納するサブフレームのプリアンブルは、Ｍである。
【０２１４】
プリアンブルの次の４ビット（最上位から５ビット目乃至８ビット目）は、補助ビット（Auxiliary Sample Bits）であり、補助ビットの次の２０ビット（最上位から９ビット目乃至２８ビット目）は、音声のサンプル（サンプリングデータ）であるオーディオサンプルワード（Audio Sample Word）である。
【０２１５】
補助ビットの４ビットには、音声データを２４ビットに拡張したとき、音声データの上位のビットが格納される。
【０２１６】
サブフレームの最上位から２９ビット目の１ビットは、サブフレームが有効であるか否かを示す有効フラグ（Validity Bit）（以下、Ｖビットとも称する）であり、Ｖビットの次の１ビットは、ユーザデータ（User Data Bit）（以下、Ｕビットとも称する）である。サブフレームの最上位から３１ビット目の１ビットは、チャネルの状態を示すチャンネルステータス（Channel Status Bit）（以下、Ｃビットとも称する）であり、Ｃビットの次のビットは、パリティビット（Parity Bit）（以下、Ｐビットとも称する）である。
【０２１７】
１つのブロックに属するサブフレームのＣビットは、集合して、音声データの属性を示す。すなわち、音声データの属性を示すチャンネルステータスは、１つのブロックにおける、１９２ビット（２４バイト）の、Ｌチャンネルのサンプルを格納するサブフレームのＣビットにより構成される。
【０２１８】
言い換えれば、チャンネルステータスは、プリアンブルがＢであるサブフレームのＣビット、およびプリアンブルがＭであるサブフレームのＣビットが順に収集され、構成される。
【０２１９】
チャンネルステータスには、音声データの用法である業務用または民生用の区別を示すビット、音声データであるかまたは音声以外のデータであるかの識別を示すビット、エンファシスの有無を示す３ビットのデータ、IEC60958の規格における８ビットのカテゴリコード、またはＬビットなどが含まれる。
【０２２０】
なお、プリアンブルＷには、プリアンブルＢまたはプリアンブルＭと同じ内容が格納されている。
【０２２１】
カテゴリコードにより示されるカテゴリが光ディスク機器、例えば、CDまたはMD（Mini-Disc）である場合、各サブフレームに含まれるＵビットは、サブコードと称する形式を有し、サブコードから光ディスクに記録されているコンテンツ（曲）の番号を変更するときに有用な情報を含む。
【０２２２】
サブコードについては、以下のように定められている。
【０２２３】
Ｕビットは、左右両チャンネルを多重化して使用し、平均１１７６ビットからなるサブコードブロックを構成する。CDの１フレームは、１２のオーディオサンプルとして１つのサブコーディングシンボルからなる。９８のサブコーディングシンボルでサブコードブロックを構成し、その結果、必要なＵビットは、12*98=1176ビットとなる。
【０２２４】
サブコードシンクは、最小１６回連続する'0'ビットで現される。スタートビットは、'1'である。スタートビットに続いて、Ｑ乃至Ｗの７ビットが伝送される。スタートビットの間隔は、最小８ビットから最大１６ビットまで可変できる。
【０２２５】
サブコードフレームは、９８フレームからなり、サブコードフレームには、それぞれ９８ビットの、サブコードＰ、サブコードＱ、サブコードＲ、サブコードＳ、サブコードＴ、サブコードＵ、サブコードＶ、およびサブコードＷが含まれる。
【０２２６】
図１４に戻り、ステップＳ５３において、読み出し制御プログラム１０１は、サウンドカード１８から読み出された音声データのうち、先頭のサブフレームのプリアンブルがＷであるか否かを判定する。ステップＳ５３において、先頭のサブフレームのプリアンブルがＷであると判定された場合、先頭のサブフレームにはＲチャンネルのサンプルが格納されているので、ステップＳ５４に進み、読み出し制御プログラム１０１は、読み出した音声データを、読み出しデータバッファ１０２の書き込みポインタが示す、書き込み位置から１サブフレーム後にずらして、読み出しデータバッファ１０２に格納する。
【０２２７】
ステップＳ５５において、読み出し制御プログラム１０１は、ステップＳ５４の音声データの読み出しデータバッファ１０２への格納の処理に対応して、書き込みポインタを更新する。
【０２２８】
ステップＳ５６において、読み出し制御プログラム１０１は、読み出しデータバッファ１０２の半分から１サブフレームの大きさを減算した大きさの音声データを、サウンドカード１８から読み出し、手続は、ステップＳ６０に進む。
【０２２９】
一方、ステップＳ５３において、先頭のサブフレームのプリアンブルがＷでないと判定された場合、先頭のサブフレームにはＬチャンネルのサンプルが格納されているので、ステップＳ５７に進み、読み出し制御プログラム１０１は、読み出した音声データを、読み出しデータバッファ１０２の書き込みポインタの指している位置に格納する。
【０２３０】
ステップＳ５８において、読み出し制御プログラム１０１は、ステップＳ５７の音声データの読み出しデータバッファ１０２への格納の処理に対応して、書き込みポインタを更新する。
【０２３１】
ステップＳ５９において、読み出し制御プログラム１０１は、読み出しデータバッファ１０２の半分の大きさの音声データを、サウンドカード１８から読み出し、手続は、ステップＳ６０に進む。
【０２３２】
ステップＳ６０において、読み出し制御プログラム１０１は、ステップＳ５６の処理またはステップＳ５９の処理で読み出した音声データを、読み出しデータバッファ１０２の書き込みポインタが指している位置に格納する。
【０２３３】
ステップＳ６１において、読み出し制御プログラム１０１は、ステップＳ６０の音声データの読み出しデータバッファ１０２への格納の処理に対応して、書き込みポインタを更新し、ステップＳ５１に戻り、音声データの読み出しの処理を繰り返す。
【０２３４】
ステップＳ５１において、録音アプリケーションプログラム８５から停止が要求されたと判定された場合、処理は終了する。
【０２３５】
このように、サウンドカード１８から読み出された、読み出しデータバッファ１０２の半分の大きさの音声データの先頭に位置するサブフレームが、Ｌチャンネルのサンプルを格納する場合、図１６に示すように、音声データは、読み出しデータバッファ１０２の書き込みポインタで指定される位置に書き込まれる。そして、サウンドカード１８から、さらに読み出しデータバッファ１０２の半分の大きさの音声データが読み出され、読み出された音声データが、読み出しデータバッファ１０２に、前回に書き込まれた音声データに続いて書き込まれる。
【０２３６】
サウンドカード１８から読み出された、読み出しデータバッファ１０２の半分の大きさの音声データの先頭に位置するサブフレームが、Ｒチャンネルのサンプルを格納する場合、図１７に示すように、音声データは、読み出しデータバッファ１０２の書き込みポインタで指定される位置から、１サブフレーム後にずらして書き込まれる。そして、サウンドカード１８から、さらに読み出しデータバッファ１０２の半分の大きさから１サブフレームを減算した大きさの音声データが読み出され、読み出された音声データが、読み出しデータバッファ１０２に、前回に書き込まれた音声データに続いて書き込まれる。
【０２３７】
このようにすることで、読み出しデータバッファ１０２の所定の位置には、Ｌチャンネルのサブフレームが格納されることになり、ＬチャンネルとＲチャンネルとの音声の逆転が防止される。
【０２３８】
次に、図１８乃至図２０のフローチャートを参照して、オーディオデータ解析フィルタプログラム１０３およびIEC60958エンコードプログラム１０６による、音声データの解析および加工の処理を説明する。
【０２３９】
ステップＳ１０１において、オーディオデータ解析フィルタプログラム１０３は、カーネル８２から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップＳ１０２に進み、読み出しポインタの値を基に、読み出しデータバッファ１０２に新たな音声のデータが格納されたか否かを判定する。
【０２４０】
ステップＳ１０２において、読み出しデータバッファ１０２に新たな音声のデータが格納されたと判定された場合、ステップＳ１０３に進み、オーディオデータ解析フィルタプログラム１０３は、録音データバッファ１０４に格納されている音声データのうち、書き込みポインタで示される音声データのヘッダに通し番号を書き込む。
【０２４１】
図２１および図２２は、録音データバッファ１０４または再生データバッファ１０９に格納される音声データの構造を説明する図である。
【０２４２】
図２１に示すように、録音データバッファ１０４に格納される音声データ、および再生データバッファ１０９に格納される音声データは、ヘッダ部およびオーディオデータ部からなる。ヘッダ部には、サウンドカード１８から取得された音声データを解析して得られた情報、すなわち、音声データの処理を制御するための情報が格納される。オーディオデータ部には、サウンドカード１８から取得された音声データのサンプル、すなわち音声そのもののデータが格納される。１つのオーディオデータ部には、複数の音声データのサンプルが格納される。すなわち、１つのオーディオデータ部は、複数のサブフレームに対応する。
【０２４３】
録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３に対して録音の開始または停止の指示を行うことにより、オーディオデータ処理プログラム８３に、録音データバッファ１０４に格納されている音声データのうち、録音を開始する音声データの位置、および録音を停止する音声データの位置を通知することができる。
【０２４４】
図２２は、録音データバッファ１０４に格納される音声データ、および再生データバッファ１０９に格納される音声データのヘッダ部の構造の詳細を説明する図である。
【０２４５】
ヘッダ部には、通し番号、Ｃビット情報、SCMS（Serial Copy Management System）情報、デジタルデータのカテゴリ、外部装置再生フラグ、トラックチェンジフラグ、トラックチェンジポイント位置情報、有効オーディオデータ長、再生情報、およびオーディオ信号レベルが含まれる。
【０２４６】
通し番号は、音声データに付される連続する番号である。通し番号は、録音アプリケーションプログラム８５が録音経過時間を知るために利用される。録音経過時間を知る方法については、後述する。
【０２４７】
また、例えば、録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３に対して録音の開始または停止の指示を行うとき、オーディオデータ処理プログラム８３に、通し番号により、録音データバッファ１０４に格納されている音声データのうち、録音を開始する音声データ（例えば、最初の音声データ）、および録音を停止する音声データ（例えば、最後の音声データ）を通知するようにしてもよい。
【０２４８】
Ｃビット情報は、サウンドカード１８から読み出される、IEC60958の規格に準拠した音声データに含まれるＣビットと同一の情報が設定される。
【０２４９】
SCMS情報は、サウンドカード１８から読み出される、IEC60958の規格に準拠した音声データに含まれるＣビットを解析して得られた情報のうち、サウンドカード１８から読み出された音声データの録音が許可されているか否かを示す情報である。
【０２５０】
デジタルデータのカテゴリは、サウンドカード１８から読み出される、IEC60958の規格に準拠した音声データに含まれるＣビットを解析して得られたカテゴリ情報に加えて、サウンドカード１８を介して読み出された音声データが、オーディオ用CD-R（CD-Recordable）に記録されている音声データであるか、または通常のCDに記録されている音声データであるかを判定するための情報を付したものである。
【０２５１】
オーディオ用CD-Rのカテゴリは、CDであるが、オーディオ用CD-Rに記録されている音声データのＣビットに含まれる著作権情報が、４乃至１０Hzで振動している特殊なカテゴリである。著作権情報が４乃至１０Hzで振動している音声データは、記録してはならないので、その旨を示す情報がカテゴリとしてヘッダ部に格納される。
【０２５２】
外部装置再生フラグは、サウンドカード１８を介して読み出される音声データを供給する外部再生装置５１が再生中であるか否かを示すフラグである。
【０２５３】
一般に、多くの録音機器は、入力された音声データの音声のレベルが所定のスレッシュ値以下である状態が、所定の期間続いたとき、曲間を検出したものと判断し、曲の番号を変えるという機能を有する。
【０２５４】
しかしながら、販売されているCDには、アーティストの意志により、長く続く無音を意図的に挿入したものが存在する。このようなCDから読み取られた音声データを記録するとき、１つの曲に曲間が挿入されてしまう場合がある。
【０２５５】
これを防止するために、外部再生装置５１が再生中であれば、曲間を挿入しないようにすればよい。
【０２５６】
外部再生装置５１が再生中であるか否かの判断は、音声データのカテゴリがCDである場合、サブコードＱに含まれるaframeが２０回連続狭義単調増加しているか否かを基準とする。従って、外部再生装置５１が再生中であるか否かの判断は、音声データのカテゴリがCDであるときのみ可能である。
【０２５７】
トラックチェンジフラグは、サウンドカード１８を介して読み出される音声データのＵビットを解析した結果、曲の切れ目が検出されたことを示す。
【０２５８】
トラックチェンジポイント位置情報は、トラックチェンジフラグが真であるとき（曲の切れ目が検出されたとき）、オーディオデータ部の先頭から何バイト目に曲間が検出されたかを示す。
【０２５９】
有効オーディオデータ長は、再生アプリケーションプログラム８６により再生データバッファ１０９に音声データが格納されたとき、再生データバッファ１０９に格納された音声データのうち、何バイト目まだの音声データを実際に再生すべきかを指定する。１つの曲に対応する音声データの大きさが、オーディオデータ部の大きさに比較して小さいとき、有効オーディオデータ長が、有効に利用さることになる。
【０２６０】
再生情報は、再生経過時間または録音経過時間を知るために利用されるメモ領域である。再生情報を基に、再生経過時間または録音経過時間を知る方法は、後述する。
【０２６１】
オーディオ信号レベルは、録音データバッファ１０４または再生データバッファ１０９に格納されている音声データの信号レベルを示す。
【０２６２】
図１８に戻り、ステップＳ１０３において、録音データバッファ１０４の書き込みポインタで示される音声データのヘッダ部に通し番号が書き込まれる。
【０２６３】
ステップＳ１０４において、オーディオ解析フィルタプログラム１０３は、読み出しデータバッファ１０２に格納されている音声データのうち、読み出しポインタで指定されている読み出し位置の音声データに、IEC60958のデコードの処理、およびDIN情報解読処理を適用する。
【０２６４】
すなわち、オーディオ解析フィルタプログラム１０３は、読み出しデータバッファ１０２に格納されている、IEC60958の規格に準拠するサブフレームの形式である音声データのうち、読み出し位置の音声データから、ＣビットおよびＵビット、並びに音声のサンプリングデータであるオーディオサンプルワードを分離する、いわゆるIEC60958デコード処理を読み出しデータバッファ１０２の音声データに適用する。オーディオ解析フィルタプログラム１０３は、ＣビットおよびＵビットを分離し、解析した結果を、録音データバッファ１０４の書き込みポインタで指定される音声データのヘッダ部に書き込む。
【０２６５】
オーディオ解析フィルタプログラム１０３は、分離されたＣビットなどを解析することにより、サウンドカード１８から読み出され、読み出しデータバッファ１０２に格納されている音声データが、SCMSの規格に準拠して、記録可能であるかを調べる。記録が禁止されている、または記録してはならない音声データであると判定された場合、記録の処理は、停止される。
【０２６６】
SCMSの規格によれば、デジタルデータである音声データの２世代に渡るコピーが発生しないことが保証される。
【０２６７】
オーディオ解析フィルタプログラム１０３は、カテゴリがCDまたはMDであるとき、Ｕビットから曲間を検出する。オーディオ解析フィルタプログラム１０３は、検出した曲間に対応する情報を、録音データバッファ１０４の書き込みポインタで指定される音声データのヘッダ部に書き込む。
【０２６８】
図２３は、カテゴリがCDであるときのサブコードＱの構造を示す図である。
【０２６９】
図２４は、カテゴリがMDであるときのサブコードＱの構造を示す図である。
【０２７０】
８ビットのTNOは、再生されている楽曲の曲番号を示す。オーディオ解析フィルタプログラム１０３は、曲番号を基に、曲間を検出する。
【０２７１】
カテゴリがCDであるときのサブコードＱにおける、各８ビットずつのamin，asec、およびaframeは、それぞれBCD（Binary-Coded Decimal）２桁のデータを含む。amin，asec、およびaframeの合わせて６桁のBCDのデータは、CDの先頭を基準とした、CDに記録されている音声の経過時間を示す。サブコードフレームの繰り返し周波数は、７５Hzなので、aframeには、1/75秒を単位とした経過時間を示すデータが配置され、asecには、１秒を単位とした、経過時間を示すデータが配置され、aminには、１分を単位とした、経過時間を示すデータが配置される。
【０２７２】
ステップＳ１０５において、オーディオ解析フィルタプログラム１０３は、Ｃビットの解析の結果を基に、音声データがエンファシスされているか否かを判定し、音声データがエンファシスされていると判定された場合、ステップＳ１０６に進み、音声データをデエンファシスし、手続は、ステップＳ１０７に進む。
【０２７３】
ステップＳ１０５において、音声データがエンファシスされていないと判定された場合、デエンファシスの処理は不要なので、ステップＳ１０６の処理はスキップされ、手続は、ステップＳ１０７に進む。
【０２７４】
これにより、録音アプリケーションプログラム８５により録音される音声データは、常に、デエンファシスされたものとなる。
【０２７５】
このように、音声データに含まれる、Ｃビット、Ｕビット、またはサブコードＱなどの制御情報が抽出され、抽出された制御情報に基づいて、音声データの記録が禁止されるか、またはコンテンツである音声データが処理される。
【０２７６】
ステップＳ１０７において、オーディオ解析フィルタプログラム１０３は、オーディオサンプルワードのレベル変更のための演算を実行して、レベルが変更されたオーディオサンプルワードを録音データバッファ１０４のオーディオデータ部に書き込む。例えば、オーディオ解析フィルタプログラム１０３は、-∞dB乃至+18dB間で、オーディオサンプルワードのレベルを調整する。
【０２７７】
ステップＳ１０８において、オーディオ解析フィルタプログラム１０３は、録音データバッファ１０４の書き込みポインタをインクリメントする。
【０２７８】
ステップＳ１０９において、オーディオ解析フィルタプログラム１０３は、読み出しデータバッファ１０２の読み出しポインタをインクリメントし、手続は、ステップＳ１１０に進む。
【０２７９】
ステップＳ１０２において、読み出しデータバッファ１０２に新たな音声のデータが格納されていないと判定された場合、録音データバッファ１０４への音声データの書き込みの処理は必要ないので、ステップＳ１０３乃至ステップＳ１０９の処理はスキップされ、手続は、ステップＳ１１０に進む。
【０２８０】
ステップＳ１１０において、オーディオデータ処理プログラム８３は、録音アプリケーションプログラム８５、再生アプリケーションプログラム８６、またはカーネル８２からの指示を基に、書き込みデータバッファ１１１に書き込む音声データを選択する。
【０２８１】
ステップＳ１１１において、IEC60958エンコードプログラム１０６は、再生データバッファ１０９が選択された、すなわち、再生データバッファ１０９に格納されている音声データを書き込みデータバッファ１１１に書き込むか否かを判定し、再生データバッファ１０９が選択されたと判定された場合、ステップＳ１１２に進み、再生データバッファ１０９に新たな音声データが格納されたか否かを判定する。
【０２８２】
ステップＳ１１２において、再生データバッファ１０９に新たな音声データが格納されたと判定された場合、ステップＳ１１３に進み、IEC60958エンコードプログラム１０６は、スイッチ１０５を切り換えて、読み出しポインタで指定される、再生データバッファ１０９の読み出し位置から、音声データを取得する。
【０２８３】
ステップＳ１１４において、IEC60958エンコードプログラム１０６は、再生データバッファ１０９に読み出しポインタをインクリメントさせる。
【０２８４】
ステップＳ１１５において、IEC60958エンコードプログラム１０６は、ステップＳ１１３の処理で取得された音声データを、IEC60958方式にエンコードし、音声データのピーク値を計算し、手続は、ステップＳ１１７に進む。
【０２８５】
すなわち、ステップＳ１１５において、IEC60958エンコードプログラム１０６は、再生データバッファ１０９から読み出した音声データのヘッダ部に含まれる制御情報を抽出し、抽出した制御情報を基に、コンテンツである音声データを処理する。
【０２８６】
ステップＳ１１２において、再生データバッファ１０９に新たな音声データが格納されていないと判定された場合、ステップＳ１１６に進み、IEC60958エンコードプログラム１０６は、スイッチ１０５を切り換えて、ゼロデータ生成プログラム１１０から供給されたゼロデータを、IEC60958方式にエンコードし、音声データのピーク値（すなわち、ゼロ）を計算し、手続は、ステップＳ１１７に進む。
【０２８７】
ステップＳ１１１において、再生データバッファ１０９が選択されていないと判定された場合、再生データバッファ１０９に格納されている音声データを処理する必要がないので、ステップＳ１１２乃至ステップＳ１１６の処理はスキップされ、手続は、ステップＳ１１７に進む。
【０２８８】
ステップＳ１１７において、IEC60958エンコードプログラム１０６は、録音データバッファ１０４が選択された、すなわち、録音データバッファ１０４に格納されている音声データを書き込みデータバッファ１１１に書き込むか否かを判定し、録音データバッファ１０４が選択されたと判定された場合、ステップＳ１１８に進み、録音データバッファ１０４に新たな音声データが格納されたか否かを判定する。
【０２８９】
ステップＳ１１８において、録音データバッファ１０４に新たな音声データが格納されたと判定された場合、ステップＳ１１９に進み、IEC60958エンコードプログラム１０６は、スイッチ１０５を切り換えて、再生データバッファ１０９から、音声データを取得する。
【０２９０】
ステップＳ１２０において、IEC60958エンコードプログラム１０６は、ステップＳ１１９の処理で取得された音声データを、IEC60958方式にエンコードし、音声データのピーク値を計算し、手続は、ステップＳ１２２に進む。
【０２９１】
ステップＳ１１８において、録音データバッファ１０４に新たな音声データが格納されていないと判定された場合、ステップＳ１２１に進み、IEC60958エンコードプログラム１０６は、スイッチ１０５を切り換えて、ゼロデータ生成プログラム１１０から供給されたゼロデータを、IEC60958方式にエンコードし、音声データのピーク値（すなわち、ゼロ）を計算し、手続は、ステップＳ１２２に進む。
【０２９２】
ステップＳ１１７において、録音データバッファ１０４が選択されていないと判定された場合、録音データバッファ１０４に格納されている音声データを処理する必要がないので、ステップＳ１１８乃至ステップＳ１２１の処理はスキップされ、手続は、ステップＳ１２２に進む。
【０２９３】
ステップＳ１２２において、IEC60958エンコードプログラム１０６は、録音データバッファ１０４および再生データバッファ１０９のいずれも選択されていないか否かを判定し、録音データバッファ１０４および再生データバッファ１０９のいずれも選択されていないと判定された場合、ステップＳ１２３に進み、スイッチ１０５を切り換えて、ゼロデータ生成プログラム１１０から供給されたゼロデータを、IEC60958方式にエンコードし、音声データのピーク値（すなわち、ゼロ）を計算し、手続は、ステップＳ１２４に進む。
【０２９４】
ステップＳ１２２において、録音データバッファ１０４または再生データバッファ１０９のいずれかが選択されていると判定された場合、IEC60958方式にエンコードされた音声データがすでに取得されているので、ステップＳ１２３の処理はスキップされ、手続は、ステップＳ１２４に進む。
【０２９５】
ステップＳ１２４において、IEC60958エンコードプログラム１０６は、書き込みデータバッファ１１１の書き込みポインタが指す位置に、IEC60958方式にエンコードされた音声データを書き込む。
【０２９６】
ステップＳ１２５において、IEC60958エンコードプログラム１０６は、書き込みデータバッファ１１１の書き込みポインタをインクリメントする。
【０２９７】
ステップＳ１２６において、書き込み制御プログラム１１２は、書き込みデータバッファ１１１の読み出しポインタが指す位置の音声データをサウンドカード１８に書き込む。より詳細には、書き込み制御プログラム１１２は、システムコールにより、カーネル８２にサウンドカード１８への音声データの書き込みを要求し、書き込みデータバッファ１１１の読み出しポインタが指す位置の音声データをカーネル８２に供給する。カーネル８２は、デバイスドライバ８１に、サウンドカード１８への、供給された音声データの書き込みを実行させる。サウンドカード１８に供給された音声データは、ストリームとして出力される。
【０２９８】
ステップＳ１２７において、書き込み制御プログラム１１２は、書き込み制御プログラム１１２は、書き込みデータバッファ１１１の読み出しポインタが指す位置の音声データの再生情報を読み出す。
【０２９９】
ステップＳ１２８において、書き込み制御プログラム１１２は、書き込みデータバッファ１１１の読み出しポインタをインクリメントし、ステップＳ１０１に戻り、処理を繰り返す。
【０３００】
ステップＳ１０１において、停止が要求されていると判定された場合、処理は終了する。
【０３０１】
オーディオデータ解析フィルタプログラム１０３およびIEC60958エンコードプログラム１０６による、音声データの解析および加工の処理においては、読み出しデータバッファ１０２、録音データバッファ１０４、再生データバッファ１０９、および書き込みデータバッファ１１１に格納されている音声データが転送される。
【０３０２】
ステップＳ１０４の処理、ステップＳ１１５の処理、ステップＳ１１６の処理、ステップＳ１２０の処理、ステップＳ１２１の処理、およびステップＳ１２３の処理が適切な順番で実行されるので、音声データの処理がより短時間でできるようになる。
【０３０３】
また、録音データバッファ１０４に格納されている音声データを、書き込みデータバッファ１１１に格納するようにした場合、記録しようとする音声データをストリームとして出力することができ、記録と同時に再生することができる。
【０３０４】
次に、送信制御プログラム１０７による、録音アプリケーションプログラム８５への、録音データバッファ１０４に格納されている音声データの送信の処理を図２５のフローチャートを参照して説明する。
【０３０５】
ステップＳ１５１において、送信制御プログラム１０７は、カーネル８２から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、手続は、ステップＳ１５２に進む。
【０３０６】
ステップＳ１５２において、送信制御プログラム１０７は、録音アプリケーションプログラム８５から、ソケット接続要求があるか否かを判定し、ソケット接続要求がないと判定された場合、ソケットの接続の要求がされるまで、ステップＳ１５２に戻り、判定の処理を繰り返す。
【０３０７】
ステップＳ１５２において、ソケット接続要求があると判定された場合、送信制御プログラム１０７は、ソケットを確立させ、ステップＳ１５３に進み、送信制御プログラム１０７は、メッセージの交換に使用されるソケットを介して送信されたメッセージを基に、録音アプリケーションプログラム８５から録音の開始が要求されたか否かを判定する。
【０３０８】
ソケットを確立する処理を、より詳細に説明すると、送信制御プログラム１０７は、カーネル８２に、録音アプリケーションプログラム８５とのソケットの確立を要求する。カーネル８２は、オーディオデータ処理プログラム８３と録音アプリケーションプログラム８５とのソケットを確立させる。
【０３０９】
ステップＳ１５３において、録音アプリケーションプログラム８５から録音の開始が要求されたと判定された場合、ステップＳ１５４に進み、送信制御プログラム１０７は、録音データバッファ１０４の読み出しポインタを設定し録音開始位置を決定する。送信制御プログラム１０７は、録音データバッファ１０４の読み出しポインタを基に、録音アプリケーションプログラム８５に渡す音声データがあるか否かを判定し、録音アプリケーションプログラム８５に渡す音声データがあると判定された場合、ステップＳ１５５に進み、録音データバッファ１０４の読み出しポインタが指す位置の音声データを読み出す。
【０３１０】
ステップＳ１５６において、送信制御プログラム１０７は、読み出した音声データを、ソケットサービスプログラム８４−１により確立された、オーディオデータ処理プログラム８３を入力側とし、録音アプリケーションプログラム８５を出力側とし、音声データを転送するためのソケットに書き込む。
【０３１１】
例えば、送信制御プログラム１０７は、録音アプリケーションプログラム８５に対応するポート番号を指定して、ソケットオブジェクトのsendメソッドを呼び出することにより、音声データをソケットに書き込む。送信制御プログラム１０７がソケットオブジェクトのsendメソッドを呼び出すと、カーネル８２によりソケットサービスプログラム８４−１が起動され、ソケットサービスプログラム８４−１は、送信制御プログラム１０７から書き込まれた音声データを受け取り、所定のバッファに格納する。
【０３１２】
ここで、ターンアラウンドタイムが保証されておらず、イベントドリブンなマルチタスクオペレーティングシステムを利用した処理系における、録音データバッファ１０４、およびソケットを使用した音声データの転送についてより詳細に説明する。
【０３１３】
録音データバッファ１０４は、記録に必要な大きさ以上の大きさの音声データをスプールし、録音データバッファ１０４に格納されている音声データが録音アプリケーションプログラム８５に送信されるので、録音アプリケーションプログラム８５において、記録している音声のデータが途切れてしまうことが防止される。
【０３１４】
次に、イベントドリブンなマルチタスクオペレーティングシステムにおいて、問題となるのは、録音または再生を行う音声データのアップデートができたことを相手に通知することである。
【０３１５】
例えば、44.1KHzでサンプリングされた音声データ4096バイトを１単位として、オーディオデータ処理プログラム８３から録音アプリケーションプログラム８５に送信するとき、23.22m秒毎に、オーディオデータ処理プログラム８３は、録音アプリケーションプログラム８５に音声データがアップデートできたことを通知しなければならない。
【０３１６】
ソケットを利用しない場合の処理の例を図２６に示す。
【０３１７】
ソケットを利用しない場合において、音声データがアップデートできたことを通知する処理がオーバーヘッドとなる。従来、ソケットを利用せずにプロセス間の通知を行うには、アプリケーションプログラムにシグナルを送るか、またはプロセス間通信用のメッセージキューを利用していた。
【０３１８】
図２６において、Ａで示す矢印は、オーディオデータ処理プログラム８３から、録音アプリケーションプログラム８５への通知を示す。図２６において、Ｂで示す星印は、通知に対応する録音アプリケーションプログラム８５の応答の処理を示す。
【０３１９】
アプリケーションプログラムにシグナルを送るか、またはプロセス間通信用のメッセージキューを利用すると、処理のプライオリティが低く、オペレーティングシステムのプロセススケジューリングの問題以外に、通知を受ける方のプログラムの応答時間が一定しないという問題が生じる。
【０３２０】
同様に、シェアードメモリを利用した場合、通知に時間がかかる。
【０３２１】
また、例えば、１つのスレッドにおいて実行されるポーリングの処理においては、10m秒毎に一定のデータを処理するように設定したとしても、システムの状態により、その間隔が20m秒になる場合がありえる。
【０３２２】
図２６において、Ｃで示すように、オーディオデータ処理プログラム８３から、録音アプリケーションプログラム８５への通知がなされてから、23.22m秒以内に、録音アプリケーションプログラム８５が、応答の処理が実行できない場合が生じ得る。このような場合には、音声データが欠落してしまうことになる。
【０３２３】
これに対して、ソケットを利用したとき、ソケットは、プロセス（アプリケーションプログラム）とプロセスとを結ぶデータのパイプの役割を果たす。
【０３２４】
ソケットを介して音声データを送るプロセスは、ソケットが音声データで一杯であるか否かを知ることができ、音声データで一杯でないとき、音声データが一杯になるまで音声データを送ることができる。ソケットを介して音声データを送るプロセスは、ソケットの状態のみに依存し、他のアプリケーションプログラムの状態に依存しない。
【０３２５】
ソケットを介して音声データを受け取るプロセスは、ソケットに音声データがあればそれを取得することができ、ソケットに音声データがなければ読み出しが待たされる（他の処理が実行される）。ソケットを介して音声データを受け取るプロセスは、ソケットがエンプティであるか否かを知ることができ、ソケットがエンプティになるまで、音声データを取得することができる。
【０３２６】
すなわち、オーディオデータ処理プログラム８３側から見れば、ソケットを利用することにより、再生または記録において、音声データが途切れないように、録音アプリケーションプログラム８５または再生アプリケーションプログラム８６に対して、音声データの送信のイニシアティブを取ることができるようになる。
【０３２７】
ここで、ソケットについて、さらにより詳細に説明する。
【０３２８】
多くのプロセス間通信のほとんどは、１台のコンピュータ上で共有リソースを使用することを前提としている。つまり、使用されるリソースは、ファイルシステム空間、共有メモリ、またはメッセージキューなど、それぞれの方法ごとに異なるが、そのコンピュータで実行中の１つのプロセスだけが、リソースを使用できる点は共通する。
【０３２９】
オペレーティングシステムの一例であるUNIX（登録商標）では、プロセス間通信の１つであるパイプと呼ばれる機構を拡張したソケットインターフェースと呼ばれる通信手段が導入された。ソケットは、ネットワークを介した通信も扱うことができるように設計され、ソケットの１つの特徴は、高い汎用性にある。
【０３３０】
具体的には、あるコンピュータ上のプロセスと他のコンピュータのプロセスとは、ソケットを使い、互いに通信できる。ソケットを利用してクライアントサーバシステムをネットワーク上に分散して構築することができる。また、UNIX（登録商標）に限らず、Windows（登録商標）においても、ソケットの仕様が公開され、利用可能である。したがって、ネットワークを介して、異なるオペレーティングシステム間で通信ができる。
【０３３１】
図２７に示すように、ソケットは、１台のマシン上でローカルなクライアントサーバシステムや、ネットワークを介したクライアントサーバシステムの開発を可能にする通信機構である。UNIX（登録商標）が提供する印刷などの機能、リモートログイン機能、またはFTP（File Transfer Protocol）サービスとネットワークユーティリティの通信機能は、ソケットを使って実現されている。
【０３３２】
ソケットの動作は、会社などにかかってくる電話にたとえて説明されることが多い。つまり、会社にかかってきた電話は、受け付けによって適切な部署にまわされ（サーバープロセス）、さらに、そこから適切な担当者（サーバーソケット）へと転送される。この時点で、かかってきた電話（クライアント）と適切な通話先（エンドポイント）とが結びつけられたことになり、間に介在するオペレータ役は、他の電話を受けることができるようになる。
【０３３３】
UNIX（登録商標）において、こうしたソケットの接続は、以下の要領で行われる。まず、サーバーアプリケーションは、ソケットを作成する。ソケットは、サーバープロセスに割り当てられるオペレーティングシステムのリソースである。サーバーがソケット作成した時点では、ほかのプロセスは、まだソケットにアクセスできない。
【０３３４】
次に、サーバープロセスがソケットに名前をつける。ローカルな通信をおこなう場合、ソケットの名前には、ファイルシステム上のファイル名が与えられる。一方、ネットワークソケットの場合、クライアントからの接続可能な特定のネットワークに応じたサービス識別子（ポート番号・アクセスポイント）が、ソケットの名前となる。
【０３３５】
サーバープロセスは、名前のついたソケットにクライアントが接続してくるのを待つ。サーバーがクライアントからの接続を許諾すると、名前のついたソケットとは別の新しいソケットが作成され、以降、この新しいソケットが、クライアントとサーバーとの通信に用いられ、名前のついたソケットは、他のクライアントからの接続要求を待つために再利用される。
【０３３６】
ソケットは、ドメイン・タイプ・プロトコルという３つの属性によって特徴づけられる。また、ソケットはアドレスを持ち、このアドレスがソケットの名前として使われる。アドレスの形式はドメインによって異なる。
【０３３７】
ソケットのドメインは、ソケットの通信で使用されるネットワークを指定するものである。最もよく使われるソケットのドメインは、インターネットネットワークである。インターネットネットワークは多くのUNIX（登録商標）のLAN（Local Area Network）環境やインターネットで用いられている。インターネットネットワークを支えているプロトコル（IP（Internet Protocol））においては、１つのアドレスファミリであるIPアドレスを用いて通信が行われる。ほとんどの場合、インターネット上のマシンを特定するには名前を使うが、これらの名前は実際に通信をおこなう前に低水準のIPアドレスに変換される。クライアントがネットワーク上でソケットを介してサーバーと接続するには、サーバーコンピュータのIPアドレスを知っている、もしくは探せる必要がある。
【０３３８】
一方、サーバー上では複数のサービスが提供されている可能性がある。そこで、クライアントは、IPアドレスに付随するIPポートを使って接続先のマシンの特定のサービスを指定する。システム内部では、一意のポート番号によってポートが識別される。外部との間ではIPアドレスとポート番号との組み合わせにより接続先が特定される。ソケットは、通信の端点（エンドポイント）であり、実際に通信をおこなう前にソケットをポートに結びつける必要がある。
【０３３９】
サーバー側では、特定のポートへの接続を待つ。よく知られたサービスにはあらかじめ決められたポート番号が割り当てられている。例えば、FTP（File Transfer Protocol）などは２１、HTTP（Hypertext Transfer Protocol）は８０などである。
【０３４０】
また、ソケットのタイプというものがある。これは１つのドメインには、それぞれの特徴の異なる様々な通信手段が用意されていることが多いためである。UNIX（登録商標）ドメインと呼ばれるドメインソケットでは信頼性の高い双方向通信経路が利用できる。ネットワークドメインの場合には、ネットワークの特性に注意する必要がある。インターネットプロトコルではストリームとデータグラムという二つの異なるレベルのサービスが存在する。このうちストリームソケットでは、信頼性の高い順次双方向のバイトストリームに基づく接続が利用でき、送信されたデータが喪失したり、重複したり、順番入れ替わったりしないことが保証されている。もう１つのサービスであるデータグラムソケットにおいては、接続の確立および維持は行われない。データグラムソケットは、情報に対する一回のみに問い合わせ、ステータス情報の定期的な提供、またはプライオリティが低いログの収集などに適している。
【０３４１】
音声データの転送には、ストリームソケットが使用される。
【０３４２】
次に、本発明に係る記録再生装置におけるソケットの動作について、説明する。
【０３４３】
図２８は、オーディオデータ処理プログラム８３が、録音アプリケーションプログラム８５に送信すべき音声データを有する場合の処理を説明する図である。
【０３４４】
録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３から音声データを受け取るために、ソケットサービスプログラム８４−１による確立される、オーディオデータ処理プログラム８３から録音アプリケーションプログラム８５に音声データを転送するためのソケットから、所定の大きさの音声データを読み出す処理を繰り返す。
【０３４５】
録音アプリケーションプログラム８５は、ソケットに音声データが読み出されているとき、所定の大きさの音声データをソケットから取得し、ソケットから音声データを取得した後、即座に、次の処理を実行する。録音アプリケーションプログラム８５は、ソケットに音声データが読み出されていないとき、音声データをソケットから読み出そうとするが、ソケットに音声データがないので、即座に、次の処理を実行する。
【０３４６】
録音アプリケーションプログラム８５による、ソケットから音声データを読み出す処理は、ソケットに音声データが読み出されているときであっても、ソケットに音声データが読み出されていないときであっても、即座に実行されて、終了し、次の処理が実行される。
【０３４７】
言い換えれば、録音アプリケーションプログラム８５による、ソケットから音声データを読み出す処理（プロセス）は、音声データを読み出す処理に要する時間だけで常に終了する。従って、録音アプリケーションプログラム８５による、ソケットから音声データを読み出す処理は、他のプロセスの状態の変化を待つことがなく、音声データを読み出す処理に要する時間以上に、記録再生装置のリソースを占有することがない。
【０３４８】
録音データバッファ１０４に、録音アプリケーションプログラム８５に送信すべき音声データが格納されているとき、オーディオデータ処理プログラム８３は、ソケットサービスプログラム８４−１による確立される、オーディオデータ処理プログラム８３から録音アプリケーションプログラム８５に音声データを転送するためのソケットに書き出す。
【０３４９】
ソケットに音声データが書き出されたとき、録音アプリケーションプログラム８５は、あらかじめ読み出しの準備が整っているので、ソケットに音声データが到着し次第すぐに音声データを読み出す。
【０３５０】
録音データバッファ１０４に、録音アプリケーションプログラム８５に送信すべき音声データが格納されていないとき、図２９に示すように、オーディオデータ処理プログラム８３は、ソケットに音声データを書き出さない。録音アプリケーションプログラム８５は、ソケットに音声データがある限り、音声データの読み出しの処理を実行し、ソケットに音声データがないとき、音声データの読み出しの処理を実行しない。
【０３５１】
このように、ステップＳ１５６の処理は、無用にリソースを占有することなく、音声データをソケットに書き出すのに必要な期間で終了する。
【０３５２】
図２５に戻り、ステップＳ１５７において、図１１のフローチャートを参照して説明したように、録音アプリケーションプログラム８５が、ACKまたはNACKを格納したメッセージを送信してくるので、送信制御プログラム１０７は、オーディオデータ処理プログラム８３と録音アプリケーションプログラム８５とのメッセージの交換に使用されるソケットから、ACKまたはNACKを格納したメッセージを読み出す。
【０３５３】
ステップＳ１５８において、送信制御プログラム１０７は、メッセージからACKまたはNACKを抽出して、NACKが受信されたか否かを判定し、NACKが受信されたと判定された場合、ステップＳ１５９に進み、ステップＳ１５５の処理で読み出した音声データを、再送する。すなわち、送信制御プログラム１０７は、ソケットサービスプログラム８４−１により確立された、オーディオデータ処理プログラム８３を入力側とし、録音アプリケーションプログラム８５を出力側とし、音声データを転送するためのソケットに、音声データを再度書き込み、ステップＳ１６０に進む。
【０３５４】
ステップＳ１５８において、ACKが受信されたと判定された場合、録音アプリケーションプログラム８５において、受信された音声データの欠落が発生していないので、音声データを再送する処理は不要であるから、ステップＳ１５９の処理はスキップされ、手続は、ステップＳ１６０に進む。
【０３５５】
ステップＳ１６０において、送信制御プログラム１０７は、録音データバッファ１０４の読み出しポインタをインクリメントし、ステップＳ１５３に戻り、ソケットを介した音声データの送信の処理を繰り返す。
【０３５６】
ステップＳ１５４において、録音アプリケーションプログラム８５に渡す音声データがないと判定された場合、録音アプリケーションプログラム８５に音声データを送信する処理を実行する必要がないので、ステップＳ１５３に戻り、録音開始が要求されたか否かの判定を繰り返す。
【０３５７】
ステップＳ１５３において、録音の開始が要求されていないと判定された場合、ステップＳ１６１に進み、送信制御プログラム１０７は、メッセージの交換に使用されるソケットを介して送信されたメッセージを基に、録音アプリケーションプログラム８５から録音の停止が要求されたか否かを判定する。
【０３５８】
ステップＳ１６１において、録音の停止が要求されたと判定された場合、ステップＳ１６２に進み、送信制御プログラム１０７は、録音データバッファ１０４の読み出しポインタおよび書き込みポインタを基に、録音アプリケーションプログラム８５に渡す音声データがあるか否かを判定し、録音アプリケーションプログラム８５に渡す音声データがあると判定された場合、最後まで音声データを録音アプリケーションプログラム８５に送信する必要があるので、ステップＳ１５５に進み、音声データの送信の処理を実行する。
【０３５９】
録音データバッファ１０４に録音アプリケーションプログラム８５に渡す音声データがあるか否かは、録音データバッファ１０４の読み出しポインタの値と、録音データバッファ１０４の書き込みポインタの値とが一致するか否かにより判断することができる。
【０３６０】
ステップＳ１６２において、録音アプリケーションプログラム８５に渡す音声データがないと判定された場合、ステップＳ１６３に進み、終了を示すパターンをソケットに書き込んで、ステップＳ１５１に戻り、処理を繰り返す。
【０３６１】
ステップＳ１６３における、再生の終了を示すパターンとは、図２１に示される構造化された音声データのヘッダ部に設定されるパターンである。再生の終了を示すパターンは、例えば、図３０に示すように、通常のヘッダ部に現れない、０と１とが交互に現れるパターンである。
【０３６２】
ステップＳ１５１において、停止が要求されたと判定された場合、処理は終了する。
【０３６３】
次に、録音アプリケーションプログラム８５の録音の処理について説明する。
【０３６４】
本発明に係る記録再生装置における録音アプリケーションプログラム８５の処理を対比により、より明確にするために、図３１に従来の録音の処理を説明するフローチャートを示す。
【０３６５】
すなわち、ステップＳ１８１において、従来の記録再生装置は、録音データバッファに音声データがあるか否かを判定し、録音データバッファに音声データがないと判定された場合、ステップＳ１８１に戻り、録音データバッファに音声データが格納されるまで、処理を繰り返す。
【０３６６】
ステップＳ１８１において、録音データバッファに音声データがあると判定された場合、ステップＳ１８２に進み、記録再生装置は、録音データバッファから音声データを取得する。
【０３６７】
ステップＳ１８３において、記録再生装置は、取得した音声データを記録し、ステップＳ１８１に戻り、録音の処理を繰り返す。
【０３６８】
以上のような、従来の録音の処理においては、ステップＳ１８１において、プロセスに割り当てられた最大時間の間、録音データバッファに音声データが格納されるまで判定の処理が繰り返されることになり、判定の処理が繰り返される間、記録再生装置のリソースは、判定の処理によって継続的に占有されることになる。
【０３６９】
この間、他のプロセスは、録音データバッファを利用することができず、例えば、サウンドカードから読み出した音声データを録音データバッファに書き込むことはできない。
【０３７０】
従って、従来の録音の処理における、ステップＳ１８１において、録音データバッファに音声データが格納されるまで判定の処理が繰り返されることにより、他のプロセスに遅延が生じることになる。他のプロセスの遅延は、録音の処理のプロセスに影響を与え、録音の処理のプロセスに遅延を生じさせることになる。
【０３７１】
図３２は、本発明に係る記録再生装置における録音アプリケーションプログラム８５による録音の処理を説明するフローチャートである。
【０３７２】
ステップＳ２０１において、録音アプリケーションプログラム８５は、ソケットサービスプログラム８４−１により確立される、オーディオデータ処理プログラム８３から録音アプリケーションプログラム８５に音声データを転送するためのソケットから、音声データを取得する。
【０３７３】
ステップＳ２０１の処理において、ソケットに音声データがあるとき、録音アプリケーションプログラム８５は、ソケットから音声データを即座に取得して、ステップＳ２０１の処理を終了する。
【０３７４】
ステップＳ２０１の処理において、ソケットに音声データがないとき、録音アプリケーションプログラム８５は、ソケットから音声データを取得しないで、即座にステップＳ２０１の処理を終了する。
【０３７５】
例えば、録音アプリケーションプログラム８５は、ソケットオブジェクトにreceiveメッセージを送る。これにより、制御がソケットサービスプログラム８４−１に移行する。ソケットサービスプログラム８４−１は、受け取った音声データに対応するポート番号と、カーネル８２に記憶されている録音アプリケーションプログラム８５に対応するポート番号とを基に、音声データを録音アプリケーションプログラム８５の受信用バッファ（受信用パケットオブジェクト）に転送し、制御を録音アプリケーションプログラム８５に戻す。これにより、録音アプリケーションプログラム８５からは、ソケットオブジェクトにreceiveメッセージを送ると、受信バッファに音声データが入ってくるように見える。
【０３７６】
ステップＳ２０２において、録音アプリケーションプログラム８５は、取得した音声データを記録し、ステップＳ２０１に戻り、録音の処理を繰り返す。
【０３７７】
より詳細には、ステップＳ２０２において、録音アプリケーションプログラム８５は、カーネル８２に、HDD１４への音声データの記録を要求すると共に、カーネル８２に音声データを供給する。カーネル８２は、デバイスドライバ８１に、音声データをHDD１４に記録させる。
【０３７８】
次に、図２５のステップＳ１５６の処理に対応して実行される、プロセスにおける、ソケットサービスプログラム８４−１による、音声データの受け取りの処理を図３３のフローチャートを参照して説明する。
【０３７９】
ステップＳ２１１において、ソケットサービスプログラム８４−１は、ステップＳ１５６の処理により送信制御プログラム１０７から書き込まれた音声データを受け取り、処理は終了する。受け取られた音声データは、例えば、ソケットサービスプログラム８４−１内の所定のバッファに格納される。
【０３８０】
図３４は、図３２のステップＳ２０１の処理に対応して実行される、プロセスにおける、ソケットサービスプログラム８４−１による、音声データの転送の処理を説明するフローチャートである。
【０３８１】
ステップＳ２２１において、ソケットサービスプログラム８４−１は、録音アプリケーションプログラム８５に転送すべき音声データがあるか否かを判定し、転送すべき音声データがあると判定された場合、ステップＳ２２２に進み、音声データを録音アプリケーションプログラム８５に転送し、処理は終了する。
【０３８２】
ステップＳ２２１において、転送すべき音声データがないと判定された場合、ステップＳ２２２の処理はスキップされ、即座に処理は終了する。
【０３８３】
このように、本発明の録音の処理においては、録音アプリケーションプログラム８５が音声データを取得する処理に要する時間は、常に、ソケットから音声データを読み出す時間に要する時間を越えることがない。すなわち、録音データバッファ１０４等のリソースが実行時間の長いプロセスで占有されることがない。
【０３８４】
従って、録音の処理が、サウンドカード１８から音声データを読み出す処理に影響を与えることはない。
【０３８５】
その結果、オーディオデータ処理プログラム８３から録音アプリケーションプログラム８５に供給される音声データに遅延が生じることがなく、外部から供給された音声データを記録するとき、音声データに欠落を生じることがない。
【０３８６】
このように、ストリームとして供給されるコンテンツを受信し、受信したコンテンツのコンテンツ記録媒体への記録を制御するようにした場合には、コンテンツを記録することができる。
【０３８７】
また、マルチタスクオペレーティングシステム上で実行される第１のプログラムにより、ストリームとして供給されたコンテンツの受信を制御し、マルチタスクオペレーティングシステム上で実行される第２のプログラムにより、コンテンツのコンテンツ記録媒体への記録を制御し、マルチタスクオペレーティングシステム上で実行される第３のプログラムにより、第１のプロセスにおいて、転送先を第２のプログラムとしたコンテンツを第１のプログラムから受け取り、第２のプロセスにおいて、転送すべきコンテンツがない場合、第２のプロセスを即座に終了し、転送すべきコンテンツがある場合、コンテンツを第２のプログラムに転送して、第２のプロセスを終了するようにした場合には、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、ストリームとして供給されるコンテンツを記録することができる。
【０３８８】
次に、録音アプリケーションプログラム８５が録音経過時間を取得する方法について説明する。
【０３８９】
図３５は、録音アプリケーションプログラム８５が録音経過時間を取得する処理を説明する図である。
【０３９０】
図３５においてＡで示す矢印は、オーディオデータ処理プログラム８３が、サウンドカード１８から音声データを読み出すタイミングを示す。図３５においてＢで示す矢印は、録音アプリケーションプログラム８５が、オーディオデータ処理プログラム８３から音声データを取得するタイミングを示す。
【０３９１】
オーディオデータ処理プログラム８３の内部には、読み出しデータバッファ１０２および録音データバッファ１０４が設けられているので、オーディオデータ処理プログラム８３が使用されると、録音アプリケーションプログラム８５は、受信した音声データの量のみから、正確な録音経過時間を知ることができない。すなわち、録音アプリケーションプログラム８５がオーディオデータ処理プログラム８３から取得した音声データは、その時点でサウンドカード１８に入力されている音声データに比較して、過去の音声データであるからである。
【０３９２】
そこで、まず始めに、録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３へ録音開始を通知する。この通知を受けたオーディオデータ処理プログラム８３は、図２２に示すヘッダ部の通し番号に、０から順に番号を付する。録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３がサウンドカード１８から読み出した音声データに付した通し番号を、オーディオデータ処理プログラム８３から、ポーリング等おこなって定期的に読み出す。録音データバッファ１０４に格納される音声データのオーディオデータ部に格納されるサンプルの数は固定なので、原則として、通し番号およびサンプルの数から経過時間が算出される。
【０３９３】
一方、トラックチェンジがあったときは、次のように経過時間が算出される。
【０３９４】
録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３から音声データを受け取り、その受け取った音声データのヘッダ部のトラックチェンジフラグ（図２２に示す）を基に、曲が変わったか否かを判定する。録音アプリケーションプログラム８５は、曲が変わったと判定されたときにおける、ポーリング動作でオーディオデータ処理プログラム８３から得られた通し番号と、転送により受け取った音声データに格納されている通し番号とを控えておく。
【０３９５】
曲（曲番）が変わってからの録音経過時間は、（ポーリングで得られた通し番号−転送し受け取った通し番号）を基に、計算で算出される。
【０３９６】
例えば、転送により受け取った音声データの通し番号が、４である場合に、トラックチェンジフラグから曲が変わったことを検出したとき、録音アプリケーションプログラム８５は、ポーリングで得られた通し番号が６であるとき、ポーリングで得られた通し番号である６から４を減算し、減算の結果である２から録音経過時間を算出する。
【０３９７】
同様に、録音アプリケーションプログラム８５は、ポーリングで得られた通し番号が８であるとき、ポーリングで得られた通し番号である８から４を減算し、減算の結果である４から録音経過時間を算出する。録音アプリケーションプログラム８５は、ポーリングで得られた通し番号が１０であるとき、ポーリングで得られた通し番号である１０から４を減算し、減算の結果である６から録音経過時間を算出する。
【０３９８】
このようにすることで、録音を実行中に、曲が変わっても（トラックチェンジがあっても）、曲の先頭からの録音の経過時間を正確に求めることができる。
【０３９９】
次に、図３６のフローチャートを参照して、オーディオデータ処理プログラム８３による、再生アプリケーションプログラム８６からの音声データの受信の処理について説明する。
【０４００】
ステップＳ２３１において、受信制御プログラム１０８は、カーネル８２から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップＳ２３２に進み、再生アプリケーションプログラム８６から、ソケット接続要求があるか否かを判定する。
【０４０１】
ステップＳ２３２において、ソケット接続要求がないと判定された場合、ソケットの接続の要求がされるまで、ステップＳ２３２に戻り、判定の処理を繰り返す。
【０４０２】
ステップＳ２３２において、ソケット接続要求があると判定された場合、ステップＳ２３３に進み、受信制御プログラム１０８は、ソケットを確立させ、ソケットから音声データを読み出す。
【０４０３】
より詳細には、受信制御プログラム１０８は、カーネル８２に、再生アプリケーションプログラム８６とのソケットの確立を要求する。カーネル８２は、受信制御プログラム１０８と再生アプリケーションプログラム８６とのソケットを確立させる。
【０４０４】
受信制御プログラム１０８は、再生アプリケーションプログラム８６からソケットに書き込まれた音声データを、ソケットから読み出す。
【０４０５】
ステップＳ２３４において、受信制御プログラム１０８は、予め記憶している音声データの大きさを示すデータ、および受信された音声データの大きさ（例えば、バイト数）を基に、音声データに欠落があるか否かを判定し、音声データに欠落があると判定された場合、ステップＳ２３５に進み、メッセージを交換するためのソケットを介して、再生アプリケーションプログラム８６にNACKを送信する。
【０４０６】
ステップＳ２３６において、受信制御プログラム１０８は、再生アプリケーションプログラム８６から再送されてきた音声データをソケットから読み出して、手続は、ステップＳ２３８に進む。
【０４０７】
ステップＳ２３４において、音声データに欠落がないと判定された場合、音声データの再送を要求する必要がないので、ステップＳ２３７に進み、受信制御プログラム１０８は、メッセージを交換するためのソケットを介して、再生アプリケーションプログラム８６にACKを送信し、手続は、ステップＳ２３８に進む。
【０４０８】
ステップＳ２３８において、受信制御プログラム１０８は、ソケットから読み出された音声データのヘッダ部のパターンが、例えば、図３０に示す、再生終了パターンであるか否かを判定し、再生終了パターンでないと判定された場合、受信の処理が継続されるので、ステップＳ２３９に進み、ソケットから読み出した音声データを、再生データバッファ１０９の書き込みポインタが指す位置に書き込む。
【０４０９】
ステップＳ２４０において、受信制御プログラム１０８は、再生データバッファ１０９の書き込みポインタをインクリメントする。
【０４１０】
ステップＳ２４１において、受信制御プログラム１０８は、再生データバッファの書き込みポインタおよび読み出しポインタの値から、再生データバッファ１０９に空きがあるか否かを判定し、再生データバッファ１０９に空きがないと判定された場合、再生データバッファ１０９に空きができるまで、ステップＳ２４１の判定の処理を繰り返す。
【０４１１】
ステップＳ２４１において、再生データバッファ１０９に空きがあると判定された場合、ステップＳ２３３に戻り、音声データの受信の処理を繰り返す。
【０４１２】
ここで、再生アプリケーションプログラム８６からオーディオデータ処理プログラム８３へのソケットを介した音声データの送信の処理を説明する。
【０４１３】
図３７は、再生データバッファ１０９に空きがある場合の処理を説明する図である。
【０４１４】
再生アプリケーションプログラム８６は、送信すべき音声データがあるとき、オーディオデータ処理プログラム８３に音声データを送信するために、ソケットサービスプログラム８４−２による確立される、再生アプリケーションプログラム８６からオーディオデータ処理プログラム８３に音声データを転送するためのソケットへの音声データの書き込みの処理を実行し、送信すべき音声データがないとき、ソケットへの音声データの書き込みの処理を実行しない。
【０４１５】
再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３に送信すべき音声データがあるとき、所定の大きさの音声データをソケットに書き込み、即座に、次の処理を実行する。再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３に送信すべき音声データがないとき、音声データがないので、即座に、次の処理を実行する。
【０４１６】
再生アプリケーションプログラム８６による、ソケットに音声データを書き込む処理は、ソケットに音声データが書き込まれたときであっても、ソケットに音声データが書き込まれないときであっても、即座に実行されて、終了し、次の処理が実行される。
【０４１７】
言い換えれば、再生アプリケーションプログラム８６による、ソケットへの音声データを書き込む処理は、音声データを書き込む処理に要する時間だけで常に終了する。従って、再生アプリケーションプログラム８６による、ソケットに音声データを書き込む処理は、他のプロセスの状態の変化を待つことがなく、音声データを書き込む処理に要する時間以上に、記録再生装置のリソースを占有することがない。
【０４１８】
オーディオデータ処理プログラム８３は、再生データバッファ１０９に空きがあるとき、再生アプリケーションプログラム８６から音声データを受け取るために、ソケットサービスプログラム８４−２による確立される、再生アプリケーションプログラム８６からオーディオデータ処理プログラム８３に音声データを転送するためのソケットから、所定の大きさの音声データを読み出す。
【０４１９】
再生データバッファ１０９に空きがないとき、図３８に示すように、オーディオデータ処理プログラム８３は、ソケットから音声データを読み出さない。再生データバッファ１０９に空きがあるなしにかかわらず、再生アプリケーションプログラム８６は、送信すべき音声データがあるとき、ソケットへの音声データの書き込みの処理を実行し、送信すべき音声データがないとき、ソケットへの音声データの書き込みの処理を実行しない。
【０４２０】
ステップＳ２３８において、再生終了パターンであると判定された場合、再生アプリケーションプログラム８６から音声データの終了が通知されているので、ステップＳ２３１に戻り、停止要求の判定の処理を実行する。
【０４２１】
ステップＳ２３１において、停止が要求されていると判定された場合、処理は終了する。
【０４２２】
図３９は、再生アプリケーションプログラム８６による音声データの読み出しの処理を説明するフローチャートである。
【０４２３】
ステップＳ２６１において、再生アプリケーションプログラム８６は、再生すべき音声データをCD９１から取得する。
【０４２４】
より詳細には、ステップＳ２６１において、再生アプリケーションプログラム８６は、カーネル８２に、CD９１からの音声データの読み出しを要求する。カーネル８２は、デバイスドライバ８１に、CD-ROMドライブ１５を制御させ、CD９１に記録されている音声データを読み出させる、読み出した音声データを再生アプリケーションプログラム８６に供給する。
【０４２５】
なお、再生アプリケーションプログラム８６による、HDD１４からの音声データの読み出しも同様に実行される。
【０４２６】
ステップＳ２６２において、再生アプリケーションプログラム８６は、ソケットサービスプログラム８４−２により確立される、再生アプリケーションプログラム８６からオーディオデータ処理プログラム８３に音声データを転送するためのソケットに、音声データを供給し、ステップＳ２６１に戻り、再生の処理を繰り返す。
【０４２７】
ステップＳ２６２の処理において、オーディオデータ処理プログラム８３に供給すべき音声データがあるとき、再生アプリケーションプログラム８６は、ソケットに音声データを即座に供給して、ステップＳ２６２の処理を終了する。
【０４２８】
ステップＳ２６２の処理において、オーディオデータ処理プログラム８３に供給すべき音声データがないとき、再生アプリケーションプログラム８６は、ソケットに音声データを供給しないで、即座にステップＳ２６２の処理を終了する。
【０４２９】
ソケットサービスプログラム８４−２が再生アプリケーションプログラム８６から音声データを受け取る処理は、図３３のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
【０４３０】
ソケットサービスプログラム８４−２がオーディオデータ処理プログラム８３に音声データを転送する処理は、図３４のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
【０４３１】
このように、本発明の再生の処理においては、再生アプリケーションプログラム８６が音声データを供給する処理に要する時間は、常に、ソケットに音声データを書き込む時間に要する時間を越えることがない。従って、再生データバッファ１０９等のリソースが実行時間の長いプロセスで占有されることがない。
【０４３２】
従って、再生の処理が、サウンドカード１８に音声データを書き込む処理に影響を与えることはない。
【０４３３】
その結果、再生アプリケーションプログラム８６からオーディオデータ処理プログラム８３に供給される音声データに遅延が生じることがなく、外部に音声データを出力するとき、音声データに欠落を生じることがない。
【０４３４】
このように、本発明に係る記録再生装置は、プロセスの実行のタイミングが保証されないマルチタスクオペレーティングシステムにより制御されていても、オーディオ装置として当然の要求である、音切れまたは音飛びを生じない、安定した再生および録音を行うことができる。
【０４３５】
このように、コンテンツを記録媒体から読み出して、ストリームとして送信するようにした場合、コンテンツを再生することができる。
【０４３６】
また、マルチタスクオペレーティングシステム上で実行される第１のプログラムにより、コンテンツ記録媒体に記録されているコンテンツの読み出しを制御し、マルチタスクオペレーティングシステム上で実行される第２のプログラムにより、バッファに格納されているコンテンツのストリームとしての送信を制御し、マルチタスクオペレーティングシステム上で実行される第３のプログラムにより、第１のプロセスにおいて、転送先を第２のプログラムとしたコンテンツを第１のプログラムから受け取り、バッファに空きがある場合、第２のプロセスにおいて、転送すべきコンテンツがないとき、第２のプロセスを即座に終了し、転送すべきコンテンツがあるとき、コンテンツをバッファに転送して、第２のプロセスを終了するようにした場合、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、コンテンツをストリームとして再生することができる。
【０４３７】
次に、再生アプリケーションプログラム８６が再生経過時間を取得する方法について説明する。
【０４３８】
図４０は、再生アプリケーションプログラム８６が再生経過時間を取得する処理を説明する図である。図４０においてＣで示す矢印は、再生アプリケーションプログラム８６がオーディオデータ処理プログラム８３に音声データを送信するタイミングを示す。図４０においてＤで示す矢印は、オーディオデータ処理プログラム８３がサウンドカード１８に音声データを供給するタイミングを示す。
【０４３９】
オーディオデータ処理プログラム８３の内部には、再生データバッファ１０９および書き込みデータバッファ１１１が設けられているので、オーディオデータ処理プログラム８３が使用されると、再生アプリケーションプログラム８６は、送信した音声データのみから、正確な再生経過時間を知ることができない。すなわち、再生アプリケーションプログラム８６がオーディオデータ処理プログラム８３に供給した音声データは、その時点でサウンドカード１８から出力されている音声データに比較して、未来の音声データであるからである。
【０４４０】
再生アプリケーションプログラム８６は、オーディオデータ処理プログラム８３に出力に音声データを転送するときに、図２１のヘッダ部の再生情報（図２２）にメモを書き込む。再生情報の内容は、再生を目的とするプロセスごとに自由であるが、例えば、再生アプリケーションプログラム８６は、あとで再生時間がわかるように再生の経過時間を示す時間情報などを書き込んでおく。
【０４４１】
再生アプリケーションプログラム８６は、ポーリング等の処理で、オーディオデータ処理プログラム８３から、サウンドカード１８に書き込もうとする音声データ（書き込む直前の音声データ）に付加されている再生情報（メモ）を取得する。
【０４４２】
再生アプリケーションプログラム８６は、取得した再生情報に含まれる再生の経過時間を示す時間情報を基に、再生経過時間を表示する。
【０４４３】
このようにすることで、再生アプリケーションプログラム８６は、現在聞こえている（出力されている）曲の再生経過時間と等しい、再生経過時間を表示することができる。
【０４４４】
以上のように、本発明によれば、オーディオデータ処理プログラム８３により、サウンドカード１８またはHDD１４などのオーディオ用ハードウェアの制御がブラックボックス化されるので、録音アプリケーションプログラム８５または再生アプリケーションプログラム８６は、それぞれ独自にオーディオ用ハードウェアを制御する必要がない。
【０４４５】
また、オーディオデータ処理プログラム８３が音声データに関する特有の処理、例えば、IEC60958の規格に準拠する処理を実行するようにしたので、音声データを記録する録音アプリケーションプログラム８５、または音声データを再生する再生アプリケーションプログラム８６をにおいて、音声データに関する特有の処理を実行させる必要がない。また、オーディオデータ処理プログラム８３は、IEC60958の規格に準拠する音声データに含まれる情報を解析して、解析した結果を構造化された音声データに格納し、構造化された音声データを録音アプリケーションプログラム８５に供給するようにしたので、録音アプリケーションプログラム８５は、より簡単に実現できるようになる。
【０４４６】
例えば、CDから読み出された音声データを記録しているとき、音声データに含まれるサブコードＱを解析して、曲間を検出することは、経験的なノウハウが必要であり、高い精度で曲間を検出できるようにすることは困難である。オーディオデータ処理プログラム８３を利用することにより、このようなノウハウがなくとも、確実に、かつ容易に、曲間を知ることができるようなる。
【０４４７】
また、オーディオデータ処理プログラム８３が、再生アプリケーションプログラム８６から供給された音声データを、IEC60958の規格に準拠する音声データに変換するようにしたので、再生アプリケーションプログラム８６は、音声データのうち、オーディオサンプルワード以外の情報、例えば、プリアンブル、Ｖビット、またはＣビットなどの設定の処理を実行する必要がない。
【０４４８】
すなわち、オーディオデータ処理プログラム８３がIEC60958の規格に準拠する音声データの解析および演算を一手に引き受けて、著作権の保護やデジタルオーディオ機器として当然の決まりごとに対応する処理を録音アプリケーションプログラム８５および再生アプリケーションプログラム８６に提供するようにしたので、録音アプリケーションプログラム８５および再生アプリケーションプログラム８６を短時間で容易に開発できるようになる。
【０４４９】
録音アプリケーションプログラム８５または再生アプリケーションプログラム８６は、構造化されている音声データに含まれる情報を使用して、録音時間または再生時間を得ることができる。
【０４５０】
オーディオデータ処理プログラム８３は、サウンドカード１８から音声データを読み出すための読み出しデータバッファ１０２とは別に、録音アプリケーションプログラム８５に音声データを送信するための録音データバッファ１０４を有するので、録音時の音切れをより少なくすることができる。また、オーディオデータ処理プログラム８３は、サウンドカード１８に音声データを供給するための書き込みデータバッファ１１１とは別に、再生アプリケーションプログラム８６から音声データを受信するための再生データバッファ１０９を有するので、再生時の音飛びをより少なくすることができる。
【０４５１】
再生アプリケーションプログラム８６または録音アプリケーションプログラム８５は、オーディオデータ処理プログラム８３に対して、録音または再生時に、開始、終了、または一時停止などの制御することができ、細かな録音再生の制御をすることができる。
【０４５２】
オーディオデータ処理プログラム８３は、１つの録音アプリケーションプログラム８５を登録して、登録した録音アプリケーションプログラム８５にのみ、音声データを供給するので、複数のプロセスが起動していても、音声データが横取りされて、録音時に音切れを発生させることがない。同様に、オーディオデータ処理プログラム８３は、１つの再生アプリケーションプログラム８６を登録して、登録した再生アプリケーションプログラム８６からのみ、音声データを受信するので、複数のプロセスが起動していても、異なる音声データが割り込んで、再生時に音飛びを発生させることがない。
【０４５３】
なお、本発明に係る記録再生装置が、オーディオデータ処理プログラム８３、録音アプリケーションプログラム８５、および再生アプリケーションプログラム８６を実行すると説明したが、複数の装置が、個々に、オーディオデータ処理プログラム８３、録音アプリケーションプログラム８５、または再生アプリケーションプログラム８６のいずれか１つを実行するようにしてもよい。この場合において、音声データは、ネットワークを介して送信される。
【０４５４】
また、オーディオデータ処理プログラム８３は、ソケットを介して、他のプログラムとメッセージを交換できるので、例えば、開発時または販売された後であっても、何らかの不具合が発生した場合、ネットワークを介して、アップデートするようにしてもよい。
【０４５５】
なお、音声データを記録するコンテンツ記録媒体の例として、HDD１４およびCD９１を一例としてあげたが、HDD１４およびCD９１に限らず、磁気ディスク３１、光ディスク３２、光磁気ディスク３３、または半導体メモリ３４などのコンテンツ記録媒体にコンテンツを記録し、磁気ディスク３１、光ディスク３２、光磁気ディスク３３、または半導体メモリ３４などのコンテンツ記録媒体に記録されているコンテンツを再生するようにしてもよい。
【０４５６】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０４５７】
この記録媒体は、図１に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク３１（フレキシブルディスクを含む）、光ディスク３２（CD-ROM(Compact Disc-Read Only Memory)、ＤＶＤ(Digital Versatile Disc)を含む）、光磁気ディスク３３（ＭＤ(Mini-Disc)（商標）を含む）、若しくは半導体メモリ３４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されている図示せぬROMや、HDD１４などで構成される。
【０４５８】
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインターフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
【０４５９】
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０４６０】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０４６１】
【図１】本発明に係る記録再生装置の一実施の形態の構成を示す図である。
【図２】記録再生装置における音声データの流れの概要を説明する図である。
【図３】CPU１１が実行するプログラムの機能の構成を説明するブロック図である。
【図４】オーディオデータ処理プログラム８３、アプリケーションプログラム、およびソケットの関係の例を示す図である。
【図５】オーディオデータ処理プログラム８３に含まれるプログラムおよび機能を説明するブロック図である。
【図６】再生アプリケーションプログラム８６の登録の処理を説明するフローチャートである。
【図７】メッセージに格納されている登録IDの確認の処理を説明するフローチャートである。
【図８】メッセージに格納されているコマンドに対応する処理を実行する処理を説明するフローチャートである。
【図９】メッセージの構成を説明する図である。
【図１０】再生アプリケーションプログラム８６からオーディオデータ処理プログラム８３に音声データを送信する処理の概要を説明するフローチャートである。
【図１１】オーディオデータ処理プログラム８３から録音アプリケーションプログラム８５に音声データを送信する処理の概要を説明するフローチャートである。
【図１２】オーディオデータ処理プログラム８３の起動の処理を説明するフローチャートである。
【図１３】メッセージの処理を説明するフローチャートである。
【図１４】サウンドカード１８から音声データを読み出す処理を説明するフローチャートである。
【図１５】サウンドカード１８から読み出される音声データの方式を説明する図である。
【図１６】読み出しデータバッファ１０２への音声データの格納を説明する図である。
【図１７】読み出しデータバッファ１０２への音声データの格納を説明する図である。
【図１８】音声データの解析および加工の処理を説明するフローチャートである。
【図１９】音声データの解析および加工の処理を説明するフローチャートである。
【図２０】音声データの解析および加工の処理を説明するフローチャートである。
【図２１】録音データバッファ１０４または再生データバッファ１０９に格納される音声データの構造を説明する図である。
【図２２】録音データバッファ１０４または再生データバッファ１０９に格納される音声データのヘッダ部の構造を説明する図である。
【図２３】カテゴリがCDであるときのサブコードＱの構造を示す図である。
【図２４】カテゴリがMDであるときのサブコードＱの構造を示す図である。
【図２５】録音データバッファ１０４に格納されている音声データの送信の処理を説明するフローチャートである。
【図２６】ソケットを利用しない場合の処理の例を示す図である。
【図２７】ソケットの動作を説明する図である。
【図２８】ソケットの動作を説明する図である。
【図２９】ソケットの動作を説明する図である。
【図３０】再生の終了を示すパターンの例を示す図である。
【図３１】従来の録音の処理を説明するフローチャートである。
【図３２】録音アプリケーションプログラム８５による録音の処理を説明するフローチャートである。
【図３３】ソケットサービスプログラム８４−１による、音声データの受け取りの処理を説明するフローチャートである。
【図３４】ソケットサービスプログラム８４−１による、音声データの転送の処理を説明するフローチャートである。
【図３５】録音経過時間を取得する処理を説明する図である。
【図３６】再生アプリケーションプログラム８６からの音声データの受信の処理を説明するフローチャートである。
【図３７】ソケットの動作を説明する図である。
【図３８】ソケットの動作を説明する図である。
【図３９】再生アプリケーションプログラム８６による音声データの読み出しの処理を説明するフローチャートである。
【図４０】再生経過時間を取得する処理を説明する図である。
【符号の説明】
【０４６２】
CPU  １１，  １２  SDRAM，  １４  HDD，  １５  CD-ROMドライブ，  １８  サウンドカード，  １９  ドライブ，  ３１  磁気ディスク，  ３２  光ディスク，  ３３  光磁気ディスク，  ３４  半導体メモリ，  ８１  デバイスドライバ，  ８２  カーネル，  ８３  オーディオデータ処理プログラム，  ８４−１および８４−２  ソケットサービスプログラム，  ８５  録音アプリケーションプログラム，  ８６  再生アプリケーションプログラム，  ９１  CD，  １０１  読み出し制御プログラム，  １０２  読み出しデータバッファ，  １０３  オーディオデータ解析フィルタプログラム，  １０４  録音データバッファ，  １０５  スイッチ，  １０６  IEC60958エンコードプログラム，  １０７  送信制御プログラム，  １０８  受信制御プログラム，  １０９  再生データバッファ，  １１０  ゼロデータ生成プログラム，  １１１  書き込みデータバッファ，  １１２  書き込み制御プログラム
【図１】
2008117517.tif 000003
【図２】
2008117517.tif 000004
【図３】
2008117517.tif 000005
【図４】
2008117517.tif 000006
【図５】
2008117517.tif 000007
【図６】
2008117517.tif 000008
【図７】
2008117517.tif 000009
【図８】
2008117517.tif 000010
【図９】
2008117517.tif 000011
【図１０】
2008117517.tif 000012
【図１１】
2008117517.tif 000013
【図１２】
2008117517.tif 000014
【図１３】
2008117517.tif 000015
【図１４】
2008117517.tif 000016
【図１５】
2008117517.tif 000017
【図１６】
2008117517.tif 000018
【図１７】
2008117517.tif 000019
【図１８】
2008117517.tif 000020
【図１９】
2008117517.tif 000021
【図２０】
2008117517.tif 000022
【図２１】
2008117517.tif 000023
【図２２】
2008117517.tif 000024
【図２３】
2008117517.tif 000025
【図２４】
2008117517.tif 000026
【図２５】
2008117517.tif 000027
【図２６】
2008117517.tif 000028
【図２７】
2008117517.tif 000029
【図２８】
2008117517.tif 000030
【図２９】
2008117517.tif 000031
【図３０】
2008117517.tif 000032
【図３１】
2008117517.tif 000033
【図３２】
2008117517.tif 000034
【図３３】
2008117517.tif 000035
【図３４】
2008117517.tif 000036
【図３５】
2008117517.tif 000037
【図３６】
2008117517.tif 000038
【図３７】
2008117517.tif 000039
【図３８】
2008117517.tif 000040
【図３９】
2008117517.tif 000041
【図４０】
2008117517.tif 000042