スポンサーリンク

DTM 技術情報
08.WAVファイルフォーマット

ファイル構造

*.wav 形式のファイルフォーマットについての解説。

全体はRIFF形式となっている。[fmt ]チャンクと[data]チャンクは必須。

その他のチャンクはオプショナルであり、アプリケーションは未知のチャンクは無視しなくてはならない。

数値はリトルエンディアンで扱われる。

フィールド 長さ
RIFFヘッダー RiffID 0x52 0x49 0x46 0x46 4バイト Riffファイルである事を示すID。”RIFF”固定バイト
FileSize 4バイト RiffID+FileSizeを除くファイル全体の長さ。リトルエンディアン
Format 0x57 0x41 0x56 0x45 4バイト Wavファイルである事を示すID。”WAVE”に固定
fmt チャンク ChunkID 0x66 0x6D 0x74 0x20 4バイト fmtチャンクヘッダー。”fmt “
ChunkSize 0x00000010 4バイト ChunkID+ChunkSizeを除くチャンクのサイズ。PCMの場合は通常16
wFormatTag 0x0001 2バイト
  • 0: Unknown
  • 1: PCM
  • 2: Microsoft-ADPCM
  • 3: IEEE Float
  • 6: G.711 A-law
  • 7: G.711 µ-law
  • 0x11: IMA-ADPCM
  • 0x16: G.723 ADPCM(Yamaha)
  • 0x31: GSM 6.10
  • 0x40: G.721 ADPCM
  • 0x50: MPEG
  • 0xFFFF: Experimental
nChannels 0x0002 2バイト チャンネル数。1=モノラル、2=ステレオ
nSamplesPerSec 0x0000ac44 4バイト サンプリングレート。0xac44=44.1KHz
nAvgBytesPerSec 0x0002b110 4バイト 平均バイトレート。nSamplesPerSec*nBlockAlign
nBlockAlign 0x0004 2バイト 1ブロックのバイト数。PCMの場合はnChannels*wBitsPerSample/8
wBitsPerSample 0x0010 2バイト 1サンプルのビット数。8/16/24/32など。
(cbSize) 0x0000 2バイト 追加情報のサイズ。PCMフォーマットではcbSizeおよび追加情報はなくても良い。
(追加情報) cbSize 追加情報。
factチャンク
(PCMフォーマットではオプショナル)
ChunkID 0x66 0x61 0x63 0x74 4バイト factチャンクヘッダー。”fact”
ChunkSize 0x00000004 4バイト ChunkID+ChunkSizeを除くチャンクのサイズ
dwSampleLength 4バイト dataチャンクに記録されている1チャンネル当たりのサンプル数
PEAKチャンク
(オプショナル)
ファイル中の信号のピークを記録
ChunkID 0x50 0x45 0x41 0x4B 4バイト PEAKチャンクヘッダー。”PEAK”
ChunkSize 0x00000018 4バイト ChunkID+ChunkSizeを除くチャンクのサイズ
version 0x00000001 4バイト PEAKチャンクのバージョン。今の所1となっている。
timeStamp 0x5190B5CF 4バイト PEAKチャンクが作られた時刻。1970/01/01からの秒数
PositionPeak 0x3F356806
0x000165D5
0x3F13D772
0x00023058
8*nChannels
バイト
ピーク値/サンプル位置の組をチャンネル数分並べる。ピーク値は1.0を0dBFSとする符号付float値。サンプル位置はバイト位置ではなく、サンプルの番号
dataチャンク ChunkID 0x64 0x61 0x74 0x61 4バイト dataチャンクヘッダー。”data”
ChunkSize 4バイト ChunkID+ChunkSize+パディングを除くチャンクのサイズ。
サンプルデータ ChunkSize サンプルデータ

  • チャンネルはインターリブする。ステレオならL/Rの順
  • PCM 8bit: 符号なし。無信号時128、0~255
  • PCM16bit: 符号あり。無信号時0、-32768~+32767
  • IEEE Float:無信号時0、-1~+1の範囲
(パディング) 0 1バイト ChunkSizeが奇数の場合のみ追加される
スポンサーリンク