Format Wave PCM


Jenis format Wave ini merupakan jenis file Wave yang paling umum dan hampir dikenal oleh setiap program. Format Wave PCM (Pulse Code Modulation) adalah file wave yang tidak terkompresi, akibatnya ukuran file sangat besar jika file mempunyai durasi yang panjang. Berikut ini diagram (Gambar 2.4) yang menggambarkan format file Wave PCM.
Gambar 2.4  Diagram Format File Wave
            Berikut ini penjelasan mengenai struktur file Wave yang dimulai dengan header RIFF:
Tabel 2.8   Penjelasan Struktur  File Wave
Offset
Size
Nama Field
Deskripsi
0
4

ChunkID
Terdiri atas kata “RIFF” dalam bentuk ASCII (0x52494646 dalam bentuk big-endian).
4
4
Chunksize
36 + SubChunk2Size atau lebih tepatnya:
4 + (8 + SubChunk1Size) + (8 + SubChunk2Size).
Ini adalah besar seluruh file dalam byte dikurangi 8 byte untuk 2 field yang tidak termasuk dalam hitungan: ChunkID dan ChunkSize
8
4
Format
Terdiri atas kata “WAVE” (0x57415645 dalam bentuk big-endian).
12
4
SubChunk1ID
Terdiri atas kata “fmt “ (0x666d7420 dalam bentuk big-endian).
16
4
SubChunk1Size
16 untuk jenis PCM.
20
2
AudioFormat
PCM = 1 (Linear quantization). Nilai lebih dari 1 mengindikasikan file Wave kompresi.
22
2
NumChannels
Mono = 1, Stereo = 2 dan seterusnya
24
4
SampleRate
8000, 44100, dan seterusnya dalam satuan Hz
28
4
ByteRate
=  SampleRate * NumChannels * BitsPerSample / 8
32
2
BlockAlign
=  NumChannels * BitsPerSample / 8
Jumlah byte untuk satu sampel termasuk semua channel.
34
2
BitsPerSample
8 bits = 8, 16 bits = 16, dan seterusnya.
36
4
SubChunk2ID
Terdiri atas kata “data” (0x64617461 dalam bentuk big-endian).
40
4
SubChunk2Size
= NumSamples * NumChannels * BitsPerSample / 8
44
*
Data
Data Sound sebenarnya.

Keterangan:      Format “WAVE” terdiri atas 2 buah SubChunk2: “fmt ”  dan “data”.
                        SubChunk “fmt “ menggambarkan format data sound.
                        SubChunk “data” terdiri atas ukuran besar data dan data sound sebenarnya.
           
            Sebagai contoh, berikut ini merupakan 72 byte pertama dari sebuah file Wave yang ditampilkan dalam heksadesimal:
52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00 
22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00 
24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d

Berikut ini (Gambar 2.5) interpretasi dari tiap byte pada  file Wave di atas:

Gambar 2.5  Interpretasi Tiap Byte pada File Wave
            Selain bentuk standar dari file Wave di atas, seperti yang dikemukakan  sebelumnya file Wave dapat ditambahkan chunk-chunk lain. Penambahan ini tidak berpengaruh sebab suatu program yang membaca file Wave jika tidak memerlukan informasi pada chunk ini akan mengabaikannya dan mencari chunk lain yang diperlukannya. Sebagai contoh berikut ini ditampilkan suatu tabel sebuah file Wave dengan penambah chunk “rgad”.
Tabel 2.9  Penambahan Chunk Lain Pada File Wave
Start Byte
Chunk
Chunk
Field Name
contents
contents (HEX)
bytes
format
0
RIFF
 
name
"RIFF"
52 49 46 46
4
ASCII
4
 
size
176444
3C B1 02 00
4
uInt32
8
WAVE
name
"WAVE"
57 41 56 45
4
ASCII
12
Fmt
name
"fmt "
66 6D 74 20
4
ASCII
16
size
16
10 00 00 00
4
uInt32
20
wFormatTag
1
01 00
2
uInt16
22
nChannels
2
02 00
2
uInt16
24
nSamplesPerSec
44100
44 AC 00 00
4
uInt32
28
nAvgBytesPerSec
176400
10 B1 02 00
4
uInt32
32
nBlockAlign
4
04 00
2
uInt16
34
nBitsPerSample
16
10 00
2
uInt16
36
Rgad
name
"rgad"
72 67 61 64
4
ASCII
40
size
8
08 00 00 00
4
uInt32
44
fPeakAmplitude
1
00 00 80 3F
4
float32
48
nRadioRgAdjust
10822
46 2A
2
uInt16
50
nAudiophileRgAdjust
18999
37 4A
2
uInt16
52
Data
name
"data"
64 61 74 61
4
ASCII
56
size
176400
10 B1 02 00
4
uInt32
60
waveform data
.....
.....
176400
Int16


Popular posts from this blog

Cara Mengukur Trimpot

Cara Mengatasi E31 Canon MP258

Bagian-bagian Laptop Assus