« Ver.1.2.1-RC2 リリース | トップページ | Qt 5.5.1 と Android 6.0 »

2016年1月29日 (金)

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を生成するようにしました。

« Ver.1.2.1-RC2 リリース | トップページ | Qt 5.5.1 と Android 6.0 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: wavファイルを作ろう:

« Ver.1.2.1-RC2 リリース | トップページ | Qt 5.5.1 と Android 6.0 »