SND 07 - Sound Manager 経由で圧縮されていない WAVE ファイルを再生する (96 年 9 月 27 日)
Q: Sound Manager を介して圧縮されていない WAVE ファイルを再生することは可能なのですか。
A: 簡単に再生できます。サウンドのヘッダをパースして、Sound Manager のバッファに適切にフォーマットされた再生データを渡すだけです。
AIFF および WAVE ファイルのフォーマットは非常によく似ており、両方のファイルのデータはほぼ同じ方法で格納されています。WAVE のヘッダをパースすることは、AIFF ヘッダのパース以上にむずかしいものではありません。Microsoft は、『Multimedia Programming Interface and Data Specification v1.0』の中で、このフォーマットの詳細な説明を行っています。また、SndPlayDoubleBuffer サンプルコード (Developer ToolChest CD) の中には、WAVE ヘッダをパースする方法を具体的に示した簡単なコードが含まれています。
WAVE ヘッダのパースが終了したら、AIFF データの再生とほぼ同じ方法でデータを再生することができます。ただし、WAVE ファイルのデータは little-endian で格納されています。とはいえ、8 ビット (モノラルまたはステレオ) サウンドの場合、little-endian のバイトは big-endian のバイトと同じです。しかし、16 ビットサウンド (モノラルまたはステレオ) サウンドを使用する場合は、サウンドを再生する前に、endian の変換を実行する必要があります。バージョン 3.1 以降の Sound Manager には、'sowt' ("twos" を逆に書いたもの) デコンプレッサが用意されています。このデコンプレッサはサウンドの圧縮を解除するものではなく、必要とされる endian の変換を行います。簡単に言ってしまえば、WAVE ファイルのデータはこのコンプレッサを使って圧縮され、Sound Manager はこのデコンプレッサを使って問題なくデータを再生するということです。
圧縮された WAVE ファイルの再生については、「Q&A SND-08」を参照してください。
[ Technical Q&A's : Graphics & Media : QuickTime : Sound : SND07 ]
|