カクタスソフトウェア
カクタスソフトウェア
サウンド MIDI マルチメディア アプリケーション

録音と再生の同期

全二重処理はデータ転送の都合から、録音と再生、両サンプリング周波数が完全に一致していることが前提です。しかし、サウンドカードのサンプリング周波数とは公称であって、発信器が厳密にチューニングされているわけではありません。一般に任意の録音デバイスと再生デバイスのサンプリング周波数には、微妙な差異が存在します。

ここで「録音側から再生側へのデータ転送」で紹介した図を再掲します。

もし、再生側の周波数が録音側より高いと、何が起こるでしょう?再生時刻が録音時刻に近づき、転送可能領域はしだいに小さくなって行きます。安全な転送領域が確保できなくなった時点でシステムは破綻します。逆に再生側の周波数が録音側より低いと、レイテンシーがしだいに大きくなって行きます。そしてバッファが一周すると録音データを保存しきれなくなり、やはり破綻します。

プログラミングの勉強など、動作確認だけが目的なら問題ないかも知れません。しかし長時間運用する実用的なアプリケーションでは、録音・再生の同期について対策しなければなりません。

同じサウンドカードに実装されている録音デバイス・再生デバイスの組では、サンプリング周波数が一致している場合があります。この条件が確認できれば安全に運用できるでしょう。

同期の方法ですが、転送データサイズが一定になるよう以下の処理を行います。

ダイレクトサウンドは全二重の同期について支援していないため、ユーザー側で同期システムを構築する必要があります。

同期の件について、本技術文書ではこれ以上の記述は致しません。もしDirectSoundに拘らなければ、代わりとしてDirectShowの利用をお勧めします。DirectShowは、システムが録音・再生の同期を支援しているので、より簡便にアプリケーションを作成できます。筆者もDirectSoundでの同期にチャレンジしたことがありますが、安定に運用するのはかなり大変で、DirectShowの利用へ方針転換しました。詳しくは、DirectShowの項目をご覧ください。

ドキュメントの先頭へ

カクタスソフトウェア 技術協力 資料室 資料室の広場 SourceForge.jp お問い合わせ