WAVE 파일은 RIFF / FMT / DATA chunk로 구성된다.
chunk는 데이터 덩어리 혹은 패킷이라고 생각하면 될 듯 하다.

아무튼 각 chunk에는 식별을 위한 MAGIC WORD가 있으나, 몇개의 파일만 확인해서
저 순서가 아닌 다른 순서로도 있는지는 확인하지 못하였다.
그냥 순서대로 읽어오면 된다.

typedef struct _RIFF_HEADER_
{
	unsigned char magic_RIFF[4];
	unsigned int file_length;
	unsigned char magic_WAVE[4];
} RIFF_HEADER;

typedef struct _FMT_CHUNK_
{
	unsigned char magic_FMT[4];
	unsigned int fmt_length;
	unsigned short format;
	unsigned short channels;
	unsigned int khz;	// sample rate
	unsigned int bps;	// bytes per second
	unsigned short blockalign;
	unsigned short depth;	// bits per sample
} FMT_CHUNK;

typedef struct _DATA_CHUNK_
{
	unsigned char magic_DATA[4];
	unsigned int data_length;
	unsigned char *data;
} DATA_CHUNK;

'모종의 음모 > noise cancelling' 카테고리의 다른 글

wave multi channel order  (0) 2010.05.01
파형 뒤집어 플레이 하기  (6) 2009.08.12
Active Noise Control - ANC  (0) 2009.08.12
WAVEFORMATEX structure  (0) 2009.04.01
음속  (0) 2009.03.30
Posted by 구차니