RSS Twitter Facebook
g200kg > DTM技術情報 > 7.WAVファイルフォーマット

DTM技術情報

2013/05/13

7.WAVファイルフォーマット



ファイル構造

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

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

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

フィールド長さ
RIFFヘッダーRiffID0x52 0x49 0x46 0x464バイトRiffファイルである事を示すID。"RIFF"固定バイト
FileSize4バイトRiffID+FileSizeを除くファイル全体の長さ。リトルエンディアン
Format0x57 0x41 0x56 0x454バイトWavファイルである事を示すID。"WAVE"に固定
fmt チャンクChunkID0x66 0x6D 0x74 0x204バイトfmtチャンクヘッダー。"fmt "
ChunkSize0x000000104バイトChunkID+ChunkSizeを除くチャンクのサイズ。PCMの場合は通常16
wFormatTag0x00012バイト
  • 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
nChannels0x00022バイトチャンネル数。1=モノラル、2=ステレオ
nSamplesPerSec0x0000ac444バイトサンプリングレート。0xac44=44.1KHz
nAvgBytesPerSec0x0002b1104バイト平均バイトレート。nSamplesPerSec*nBlockAlign
nBlockAlign0x00042バイト1ブロックのバイト数。PCMの場合はnChannels*wBitsPerSample/8
wBitsPerSample0x00102バイト1サンプルのビット数。8/16/24/32など。
(cbSize)0x00002バイト追加情報のサイズ。PCMフォーマットではcbSizeおよび追加情報はなくても良い。
(追加情報)cbSize追加情報。
factチャンク
(PCMフォーマットではオプショナル)
ChunkID0x66 0x61 0x63 0x744バイトfactチャンクヘッダー。"fact"
ChunkSize0x000000044バイトChunkID+ChunkSizeを除くチャンクのサイズ
dwSampleLength4バイトdataチャンクに記録されている1チャンネル当たりのサンプル数
PEAKチャンク
(オプショナル)
ファイル中の信号のピークを記録
ChunkID0x50 0x45 0x41 0x4B4バイトPEAKチャンクヘッダー。"PEAK"
ChunkSize0x000000184バイトChunkID+ChunkSizeを除くチャンクのサイズ
version0x000000014バイトPEAKチャンクのバージョン。今の所1となっている。
timeStamp0x5190B5CF4バイトPEAKチャンクが作られた時刻。1970/01/01からの秒数
PositionPeak0x3F356806
0x000165D5
0x3F13D772
0x00023058
8*nChannels
バイト
ピーク値/サンプル位置の組をチャンネル数分並べる。ピーク値は1.0を0dBFSとする符号付float値。サンプル位置はバイト位置ではなく、サンプルの番号
dataチャンクChunkID0x64 0x61 0x74 0x614バイトdataチャンクヘッダー。"data"
ChunkSize4バイトChunkID+ChunkSize+パディングを除くチャンクのサイズ。
サンプルデータChunkSizeサンプルデータ
  • チャンネルはインターリブする。ステレオならL/Rの順
  • PCM 8bit: 符号なし。無信号時128、0~255
  • PCM16bit: 符号あり。無信号時0、-32768~+32767
  • IEEE Float:無信号時0、-1~+1の範囲
(パディング)01バイトChunkSizeが奇数の場合のみ追加される



g200kg