wavファイルを作ろう
受信したサウンドデータをデバッグ用にファイルへ落とすようにしているのですが生のPCMファイルだと扱いにくいので困ります。
サウンド関係のデバッグ中はcygwinに含まれるsoxを使って手作業で変換してました。
sox -r 48000 -b 16 -c 2 -e signed-integer -t raw test.pcm test.wav
毎回これを手作業でやるのって非効率的ですよね。結局のところ生のPCMデータの先頭に必要な情報を記録したヘッダーを"ちょん"とつけているだけのはずですし。
ということで終了時に.wavファイルをついでに作ってやればすぐに試聴できてよさそうです。
google先生に"wav フォーマット"という感じで訊いてみると日本語のページが沢山出てきます。
例えば以下の様なページが見つかりました。
http://www.web-sky.org/program/other/wave.php
リニアPCMのために必要な情報だけをヘッダー(44バイト)として付加すれば良さそうです。
RiffHeader: riff = 1179011410 : 'RIFF'
RiffHeader: size = 8321316
RiffHeader: type = 1163280727 : 'WAVE'
FormatChunk: formatChunk.id = 544501094 : 'fmt '
FormatChunk: formatChunk.size = 16
FormatChunk: formatChunk.format = 1
FormatChunk: formatChunk.channels = 2
FormatChunk: formatChunk.samplerate = 48000
FormatChunk: formatChunk.bytepersec = 192000
FormatChunk: formatChunk.blockalign = 4
FormatChunk: formatChunk.bitswidth = 16
DataChunk: dataChunk.id = 1635017060 : 'data'
DataChunk: dataChunk.size = 8321280
途中で音質を変更するとサンプリングレートが変わってしまうのでデータが混ざってしまわないように注意が必要ですね。とりあえず途中で音質を変更しなかった場合のみ.wavを生成するようにしました。
最近のコメント