Anda di halaman 1dari 68

KOMPRESI FILE AUDIO WAV MENGGUNAKAN

ALGORITMA HUFFMAN

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh


ijazah Sarjana Teknologi Informasi

WHYDIA NANDA SARI


091402031

PROGRAM STUDI TEKNOLOGI INFORMASI


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

ABSTRAK

Ukuran file audio khususnya berformat .wav relatif besar dibandingkan file
dengan format teks, yang membutuhkan memori yang besar dalam melakukan
penyimpanan maupun dalam hal transmisi (pengiriman) melalui media komunikasi.
Hal ini sangat mempengaruhi ketersediaan tempat (space) maupun pengolahan data
khususnya data audio. Untuk itu perlu dikembangkan aplikasi untuk kompresi data
yang bertujuan untuk minimalisasi memori menggunakan algoritma Huffman.
Algoritma atau encoding Huffman sebenarnya merupakan algoritma kompresi yang
dapat diterapkan pada semua jenis baik untuk file biner maupun file teks. Algoritma
ini efektif jika terdapat banyak redundancy data atau perulangan data yang sama pada
file. Pada algoritma ini, kompresi file audio dilakukan pada data sampel audio yang
redundancy. Hasil kompresi file wav dengan algoritma Huffman Coding dapat
memberikan ukuran file yang lebih kecil yaitu rata-rata rasio kompresi sebesar 24.43
%.
Keyword: Audio Wav, Compression, Huffman Coding.

WAV AUDIO FILES COMPRESSED USING HUFFMAN ALGORITHM


ABSTRACT
The size of the audio file in particular format . Wav files are relatively large compared
to the text format , which requires a large memory to perform in terms of storage and
transmission ( delivery ) through the medium of communication . This greatly affects
the availability of a place ( space ) as well as audio data , especially data processing .
For it is necessary to develop applications for data compression that aims to minimize
memory use Huffman algorithm . Algorithm or Huffman encoding is actually a
compression algorithm that can be applied to all kinds of good for binary files and text
files . This algorithm is effective when there is a lot of data redundancy or looping the
same data in the file . In this algorithm , compressed audio files is done on the audio
sample data redundancy . Wav file compression Results with Huffman coding
algorithm can provide smaller file sizes with an average compression ratio of 24.43 %
.
Keyword : Audio Wav , Compression , Huffman Coding .

DAFTAR ISI

Halaman
ABSTRAK
ABSTRAC
DAFTAR ISI
DAFTAR TABEL
DAFTAR GAMBAR

ii
iii
iv
v
vi

BAB 1 PENDAHULUAN
1.1 Latar Belakang
1.2 Rumusan Masalah
1.3 Batasan Masalah
1.4 Tujuan Penelitian
1.5 Manfaat Penelitian
1.6 Metodologi Penelitian
1.7 Sistematika Penulisan

1
1
3
3
3
3
3
6

BAB 2 LANDASAN TEORI


2.1 Pengertian Audio Digital
2.2 Kelebihan Audio Digital
2.3 Istilah dalam Audio Digital
2.1.1 Jumlah Kanal (Channel)
2.1.2 Laju Pencuplikan (Sampling Rate)
2.1.3 Bandwidth
2.1.4 Banyaknya Bit Dalam Satu Sampel (Bit Per Sample)
2.1.5 Laju Bit (Bit Rate)
2.2 Data Audio
2.3 Struktur File Wave
2.3.1 Header File Wave
2.3.2 Chunk File WAVE
2.3.3 Chunk Format
2.3.4 Chunk Data
2.3.5 Format Wave PCM

7
7
9
9
9
9
10
10
11
13
14
16
16
17
20
21

2.4 Hubungan Multimedia dengan Aplikasi Windows


2.5 Binary Tree dengan menyimpan Pohon Biner
2.6 Kompresi Data
2.6.1 Teori Kompresi Data
2.6.2 Algoritma Kompresi Huffman
BAB 3 ANALISIS DAN PERANCANGAN
3.1 Analisis
3.1.1 Sampel Audio WAV
3.1.2 Encoding Huffman
3.1.3 Algoritma Kompresi Huffman
3.1.4 Algoritma Dekompresi Huffman
3.2 Perancangan
3.2.1 Perancangan Program

25
26
29
29
30
35
35
37
37
38
43
45
45

3.2.2
3.2.3
3.2.4
3.2.5

Perancangan Form Utama


Rancangan Kompresi
Rancangan Help
Rancangan About

48
49
50
50

BAB 4 IMPLEMENTASI DAN PENGUJIAN


4.1 Implementasi
4.1.1 Tampilan Menu Utama
4.1.2 Tampilan Kompresi
4.1.3 Tampilan Help
4.1.4 Tampilan About
4.2 Pengujian Sistem
4.2.1 Tampilan Hasil Pengujian Kompresi
4.2.2 Tampilan Hasil Pengujian Dekompresi

52
52
52
53
53
54
55
55
55

BAB 5 KESIMPULAN DAN SARAN


5.1 Kesimpulan
5.2 Saran

56
56
56

DAFTAR PUSTAKA
LAMPIRAN PROGRAM

58
59

DAFTAR TABEL

Halaman
Tabel 2.1 Frekuensi Sampling dan Kualitas Suara yang Dihasilkan
Tabel 2.2 Penyimpanan Berbagai Konfigurasi Audio Digital
Tabel 2.3 Nilai Jenis Chunk RIFF
Tabel 2.4 Format Chunk RIFF
Tabel 2.5 Chunk Format File Wav
Tabel 2.6 Kode Kompresi Wav
Tabel 2.7 Format Data Chunk
Tabel 2.8 Penjelasan Struktur File Wav
Tabel 2.9 Penambahan Chunk Lain Pada File Wav
Tabel 2.10 Penelitian terdahulu
Tabel 3.1 Frekuensi setiap simbol data
Tabel 3.2 Frekuensi setiap simbol data
Tabel 4.1 Tampilan hasil pengujian kompresi
Tabel 4.2 Tampilan pengujian hasil dekompresi

8
10
14
14
15
16
18
20
22
33
38
41
55
55

DAFTAR GAMBAR

Gambar 2.1 Konversi Sinyal Analog ke Digital


Gambar 2.2 Konversi Sinyal Digital ke Analog
Gambar 2.3 Layout File Wav
Gambar 2.4 Diagram Format File Wav
Gambar 2.5 Interpretasi Tiap Byte pada File Wav
Gambar 2.6 Lapisan-Lapisan Multimedia dengan Windows
Gambar 2.7 Contoh Binary Tree
Gambar 2.8 Contoh Completely Binary Tree
Gambar 2.9 Contoh Perfect Binary Tree
Gambar 2.10 Penyimpanan Pohon Biner Dengan Array
Gambar 2.11 Claude E. Shannon
Gambar 2.12 Penggabungan dua node terkecil
Gambar 2.13 Pengurutan Frekuensi secara menaik
Gambar 2.14 Penggabungan dua node terkecil kembali
Gambar 2.15 Pengurutan Frekuensi secara menaik kembali
Gambar 2.16 Penggabungan dua node terakhir membentuk pohon tunggal
Gambar 2.17 Pemberian label bit
Gambar 3.1 Data Audio Wav dalam Hexa
Gambar 3.2 Urutan Data secara Ascending
Gambar 3.3 Gabungan dua buah simpul yang mempunyai frekuensi terkecil
Gambar 3.4 Pengurutan kembali data berdasarkan frekuensi terkecil
Gambar 3.5 Penggabungan serta pengurutan kembali data berdasarkan
frekuensi terkecil
Gambar 3.6 Pengulangan Pengurutan kembali data berdasarkan frekuensi
terkecil
Gambar 3.7 Penggabungan serta pengurutan kembali data berdasarkan
frekuensi terkecil
Gambar 3.8 Pemberian label dari akar ke daun
Gambar 3.9 Flow Chart Kompresi
Gambar 3.10 Flow Chart Pembentukan Pohon Huffman
Gambar 3.11 Rancangan Menu Utama
Gambar 3.12 Rancangan Kompresi
Gambar 3.13 Rancangan Help
Gambar 3.14 Rancangan About
Gambar 4.1 Tampilan Menu Utama
Gambar 4.2 Tampilan Kompresi
Gambar 4.3 Tampilan Help
Gambar 4.7 Tampilan About
Gambar 4.8 Tampilan Grafik Kompresi Size dengan Waktu
Gambar 4.9 Tampilan Grafik Kompresi Size dengan Rasio

6
6
13
19
21
23
24
25
25
26
27
29
29
30
30
31
31
35
38
39
39
39
40
40
41
45
46
47
48
49
50
51
52
53
53
55
56

ABSTRAK

Ukuran file audio khususnya berformat .wav relatif besar dibandingkan file
dengan format teks, yang membutuhkan memori yang besar dalam melakukan
penyimpanan maupun dalam hal transmisi (pengiriman) melalui media komunikasi.
Hal ini sangat mempengaruhi ketersediaan tempat (space) maupun pengolahan data
khususnya data audio. Untuk itu perlu dikembangkan aplikasi untuk kompresi data
yang bertujuan untuk minimalisasi memori menggunakan algoritma Huffman.
Algoritma atau encoding Huffman sebenarnya merupakan algoritma kompresi yang
dapat diterapkan pada semua jenis baik untuk file biner maupun file teks. Algoritma
ini efektif jika terdapat banyak redundancy data atau perulangan data yang sama pada
file. Pada algoritma ini, kompresi file audio dilakukan pada data sampel audio yang
redundancy. Hasil kompresi file wav dengan algoritma Huffman Coding dapat
memberikan ukuran file yang lebih kecil yaitu rata-rata rasio kompresi sebesar 24.43
%.
Keyword: Audio Wav, Compression, Huffman Coding.

WAV AUDIO FILES COMPRESSED USING HUFFMAN ALGORITHM


ABSTRACT
The size of the audio file in particular format . Wav files are relatively large compared
to the text format , which requires a large memory to perform in terms of storage and
transmission ( delivery ) through the medium of communication . This greatly affects
the availability of a place ( space ) as well as audio data , especially data processing .
For it is necessary to develop applications for data compression that aims to minimize
memory use Huffman algorithm . Algorithm or Huffman encoding is actually a
compression algorithm that can be applied to all kinds of good for binary files and text
files . This algorithm is effective when there is a lot of data redundancy or looping the
same data in the file . In this algorithm , compressed audio files is done on the audio
sample data redundancy . Wav file compression Results with Huffman coding
algorithm can provide smaller file sizes with an average compression ratio of 24.43 %
.
Keyword : Audio Wav , Compression , Huffman Coding .

BAB 1
PENDAHULUAN

1.1 Latar Belakang


Perkembangan teknologi informasi yang pesat telah menjadi peran yang sangat
penting untuk pertukaran informasi yang cepat. Kecepatan pengiriman informasi
dalam bentuk perpaduan teks, audio maupun citra secara nyata akan menjadi bagian
utama dalam pertukaran informasi. Kecepatan pengiriman ini sangat bergantung
kepada ukuran dari informasi tersebut. Salah satu solusi untuk masalah di atas adalah
dengan melakukan kompresi data sebelum ditransmisikan dan kemudian penerima
akan melakukan dekompresi yaitu merekonstruksinya kembali menjadi data aslinya.
Pada umumnya file audio digital memiliki ukuran (size) yang lebih besar
dibandingkan dengan file teks. Jadi untuk mengurangi ukurannya dapat dilakukan
dengan cara kompresi. File audio dengan format WAV memiliki data yang tidak
terkompres sehingga seluruh sampel audio disimpan semuanya di harddisk. File audio
ini jarang sekali digunakan di internet karena ukurannya yang relatif besar dengan
batasan maksimal untuk file WAV adalah 2GB.
Teknik kompresi diperlukan karena ukuran dari data semakin lama semakin
besar, tetapi belum optimal karena tidak didukung oleh perkembangan dari teknologi
bandwidth (untuk kecepatan download data dari internet) yang seimbang. Jadi
diperlukan kualitas kompresi yang baik yaitu ukuran yang minimum dengan tidak
mengurangi

kualitas

data

tersebut.

Melihat

masalah-masalah

tadi,

maka

pemecahannya adalah maksimalisasi kompresi yaitu mengurangi ukuran data.


Metode Static Huffman Coding mengharuskan kita mengetahui terlebih
dahulu frekuensi masing-masing karakter sebelum dilakukan proses pengkodean.
Metode Adaptive Huffman Coding merupakan pengembangan dari Static Huffman
Coding dimana proses penghitungan frekuensi karakter dan pembuatan
Huffman dibuat secara dinamis pada saat membaca data.

pohon

Algoritma Huffman tepat bila dipergunakan pada informasi yang bersifat


statis. Sedangkan untuk multimedia application, dimana data yang akan datang belum
dapat dipastikan kedatangannya (audio dan video streaming) dapat digunakan
algoritma Adaptive Huffman (Wibowo, 2012).
Algoritma Huffman merupakan algoritma yang paling terkenal untuk
mengompres data. Terdapat tiga fase dalam menggunakan algoritma Huffman untuk
mengompres sebuah data, pertama adalah fase pembentukan pohon Huffman, kedua
adalah fase encoding dan ketiga fase decoding. Prinsip yang digunakan oleh
algoritma Huffman adalah karakter yang sering muncul di-encoding dengan
rangkaian bit yang pendek dan karakter yang jarang muncul di-encoding dengan
rangkaian bit yang lebih panjang. Teknik kompresi algoritma Huffman mampu
memberikan penghematan pemakaian memori sampai 30% (Putra, 2010).
Berdasarkan hal yang telah diuraikan diatas maka penulis berniat membuat
skripsi dengan judul Kompresi File Audio WAV Menggunakan Algoritma Huffman.

1.2 Rumusan Masalah


Rumusan masalah dalam penelitian ini adalah bagaimana mengkompresi file audio
agar ukurannya dapat diperkecil.

1.3 Batasan Masalah


Adapun yang menjadi batasan masalah dalam penelitian ini adalah:
1.

File audio yang dikompresi adalah berformat WAV.

2.

Algoritma yang digunakan adalah Static Huffman.

3.

Tools pemrograman yang digunakan adalah Visual Basic .NET 2010.

4.

Parameter yang digunakan adalah rasio serta kecepatan kompresi.

1.4 Tujuan Penelitian


Tujuan dari penelitian ini adalah mengkompresi file atau memperkecil ukuran file
menggunakan algoritma Huffman.

1.5 Manfaat Penelitian


Manfaat yang diharapkan dari penelitian ini adalah:
1.

Untuk menghasilkan sebuah perangkat lunak yang mampu melakukan kompresi


file audio dengan Algoritma Huffman.

2.

Sebagai bahan referensi mengenai algoritma Huffman pada proses kompresi file
audio.

1.6 Metodologi Penelitian


Adapun tahapan-tahapan yang dilakukan dalam merancang dan mengembangkan
perangkat lunak ini adalah sebagai berikut:
a. Studi Literatur
Mempelajari teori tentang audio digital WAV dan kompresidata dengan algoritma
Huffman . Dalam tahap ini juga dikumpulkan teori kompresi file audio dengan
algoritma Huffman.
b. Analisis dan Perancangan
Pada tahap ini dilakukan untuk menganalisa proses kerja kompresi file audio
WAV menggunakan algoritma Huffman dan selanjutnya dilakukan pembuatan
flow chart proses kompresi serta perancangan interface.
c. Implementasi
Tahap ini digunakan mengimplementasikan hasil analisis dan perancangan system
ke dalam bahasa pemrograman agar bias digunakan untuk kompresi file WAV.
d. Pengujian
Tahap ini digunakan untuk menguji coba system yang dibuat untuk mengetahui
sudah berjalan sesuai dengan tujian penelitian atau tidak, serta kelebihan dan
kelemahannya.
e. Dokumentasi
Tahap ini digunkan untuk menuangkan hasil penelitian tersebut ke dalam sebuah
skripsi.

1.7 Sistematika Penulisan

Sistematika penulisan skripsi ini adalah sebagai berikut:

BAB 1 PENDAHULUAN membahas latar belakang, rumusan masalah, batasan


masalah, tujuan penelitian, manfaat penelitian serta sistematika penulisan.

BAB 2 LANDASAN TEORI membahas tentang landasan teori tentang audio wav,
kompresi data, algoritma Huffman serta flow chart.

BAB 3 ANALISIS DAN PERANCANGAN pembahasan mengenai kompresi file wav


dengan algoritma Huffman, flow chart sistem serta perancangan antar muka
aplikasi.

BAB 4 IMPLEMENTASI DAN PENGUJIAN membahas tentang implementasi dari


perancangan sistem yang dirancang pada BAB 3.

BAB 5 KESIMPULAN DAN SARAN merupakan kesimpulan dari semua


pembahasan yang ada dengan saran-saran yang ditujukan bagi para pembaca
atau pengembang.

BAB 2
LANDASAN TEORI

2.1 Pengertian Audio Digital


Suara yang kita dengar sehari-hari adalah merupakan gelombang analog. Gelombang
ini berasal dari tekanan udara yang ada di sekeliling kita, yang dapat kita dengar
dengan bantuan gendang telinga. Gendang telinga ini bergetar, dan getaran ini dikirim
dan diterjemahkan menjadi informasi suara yang dikirimkan ke otak, sehingga kita
dapat mendengarkan suara. Suara yang kita hasilkan sewaktu berbicara berbentuk
tekanan suara yang dihasilkan oleh pita suara. Pita suara ini akan bergetar, dan getaran
ini menyebabkan perubahan tekanan udara, sehingga kita dapat mengeluarkan suara
(Binanto, 2010).
Komputer hanya mampu mengenal sinyal dalam bentuk digital. Bentuk digital
yang dimaksud adalah tegangan yang diterjemahkan dalam angka 0 dan 1, yang
juga disebut dengan istilah bit. Tegangan ini berkisar 5 volt bagi angka 1 dan
mendekati 0 volt bagi angka 0. Dengan kecepatan perhitungan yang dimiliki
komputer, komputer mampu melihat angka 0 dan 1 ini menjadi kumpulan bit-bit
dan menerjemahkan kumpulan bit-bit tersebut menjadi sebuah informasi yang
bernilai.
Cara untuk memasukkan suara analog ini sehingga dapat dimanipulasi oleh
peralatan elektronik adalah transducer. Dalam hal ini, transducer adalah istilah untuk
menyebut sebuah peralatan yang dapat mengubah tekanan udara (yang kita dengar
sebagai suara) ke dalam tegangan elektrik yang dapat dimengerti oleh perangkat
elektronik, serta sebaliknya. Contoh transducer adalah mikrofon dan speaker.
Mikrofon dapat mengubah tekanan udara menjadi tegangan elektrik, sementara
speaker melakukan pekerjaan sebaliknya (Binanto, 2010).
Tegangan elektrik diproses menjadi sinyal digital oleh sound card. Ketika
Anda merekam suara atau musik ke dalam komputer, sound card akan mengubah
gelombang suara (bisa dari mikrofon atau stereo set) menjadi data digital, dan ketika
suara itu dimainkan kembali, sound card akan mengubah data digital menjadi suara
yang kita dengar (melalui speaker), dalam hal ini gelombang analog. Proses
pengubahan gelombang suara menjadi data digital ini dinamakan Analog-to-Digital

Conversion (ADC), dan kebalikannya, pengubahan data digital menjadi gelombang


suara dinamakan Digital-to-Analog Conversion (DAC).
Proses pengubahan dari tegangan analog ke data digital ini terdiri atas
beberapa tahap yang ditunjukkan pada Gambar 2.1, yaitu:
1. Membatasi frekuensi sinyal yang akan diproses dengan Low Pass Filter.
2. Mencuplik sinyal analog ini (melakukan sampling) menjadi beberapa
potongan waktu.
3. Cuplikan-cuplikan ini diberi nilai eksak, dan nilai ini diberikan dalam
bentuk data digital.

Gambar 2.1 Konversi Sinyal Analog ke Digital (Binanto, 2010).

Proses sebaliknya, yaitu pengubahan dari data digital menjadi tegangan analog
juga terdiri atas beberapa tahap, yang ditunjukkan pada Gambar 2.2, yaitu:
1. Menghitung data digital menjadi amplitudo-amplitudo analog.
2. Menyambung amplitudo analog ini menjadi sinyal analog.
3. Memfilter keluaran dengan Low Pass Filter sehingga bentuk gelombang
keluaran menjadi lebih mulus.

Gambar 2.2 Konversi Sinyal Digital ke Analog (Binanto, 2010).

Proses pengubahan sinyal analog menjadi digital harus memenuhi sebuah


kriteria, yaitu kriteria Nyquist. Kriteria ini mengatakan bahwa untuk mencuplik
sebuah sinyal yang memiliki frekuensi X Hertz, maka harus mencupliknya minimal

dua kali lebih rapat, atau 2X Hertz. Jika tidak, sinyal tidak akan dapat dikembalikan
ke dalam bentuk semula.

2.2 Kelebihan Audio Digital


Kelebihan audio digital adalah kualitas reproduksi yang sempurna. Kualitas
reproduksi

yang

sempurna

yang

dimaksud

adalah

kemampuannya

untuk

menggandakan sinyal audio secara berulang-ulang tanpa mengalami penurunan


kualitas suara (Adhitama, 2009).
Kelebihan lain dari audio digital adalah ketahanan terhadap noise (sinyal yang
tidak diinginkan). Pada saat transmisi data dan pemrosesan dengan komponenkomponen elektrik, pada sinyal analog sangat mudah sekali terjadi gangguangangguan berupa noise. Suara desis pada kaset rekaman merupakan salah satu contoh
terjadinya noise berupa gangguan pada frekuensi tinggi.
Audio digital akan mempermudah pemrosesan sinyal, karena proses-proses
pengolahan sinyal digital dapat dilakukan dengan menggunakan operasi-operasi
matematis yang diimplementasikan dalam bentuk digital signal processor atau
melalui software. Operasi-operasi tersebut antara lain meliputi mixing, filtering,
volume control, equalizing, noise reduction, high frequency rebirth, DC offset
correction, pengaturan tempo, penambahan efek dan sebagainya.

2.3 Istilah dalam Audio Digital


Dalam dunia audio digital, ada beberapa istilah yaitu channel (jumlah kanal),
sampling rate (laju pencuplikan), bandwidth, bit per sample (banyaknya bit dalam
satu sample), bit rate (laju bit) (Adhitama, 2009).

2.3.1 Jumlah Kanal (Channel)


Jumlah kanal menentukan banyaknya kanal audio yang digunakan. Audio satu kanal
dikenal dengan mono, sedangkan audio dua kanal dikenal dengan strereo. Saat ini
untuk audio digital standar, biasanya digunakan dua kanal, yaitu kanal kiri dan kanal
kanan. Audio untuk penggunaan theater digital menggunakan lebih banyak kanal. Ada
yang menggunakan tiga kanal, yaitu 2 kanal depan dan surround. Ada yang
menggunakan 6 kanal (dikenal dengan format audio 5.1) yaitu terdiri dari 2 kanal

depan dan 2 kanal surround, 1 kanal tengah dan 1 kanal subwoofer. Bahkan ada yang
menggunakan 8 kanal (format audio 7.1) yaitu terdiri dari 2 kanal depan dan 2 kanal
surround, 1 kanal tengah dan 1 kanal subwoofer dan ditambah 2 buah speaker EX
(Environmental Extended) untuk menghasilkan suara dari belakang.

2.3.2 Laju Pencuplikan (Sampling Rate)


Ketika sound card mengubah audio menjadi data digital, sound card akan memecah
suara tadi menurut nilai menjadi potongan-potongan sinyal dengan nilai tertentu.
Proses sinyal ini bisa terjadi ribuan kali dalam satuan waktu. Banyak pemotongan
dalam satu satuan waktu ini dinamakan sampling rate (laju pencuplikan). Satuan
sampling rate yang biasa digunakan adalah KHz (kilo Hertz).
Kerapatan laju pencuplikan ini menentukan kualitas sinyal analog yang akan
diubah menjadi data digital. Makin rapat laju pencuplikan ini, kualitas suara yang
dihasilkan akan makin mendekati suara aslinya. Sebagai contoh, lagu yang disimpan
dalam Compact Disc Audio (CDA) memiliki sampling rate 44.1 KHz, yang berarti
lagu ini dicuplik sebanyak 44100 kali dalam satu detik untuk memastikan kualitas
suara yang hampir sama persis dengan aslinya. Sebagaimana dapat dilihat pada table
2.1

Tabel 2.1 Frekuensi Sampling dan Kualitas Suara yang Dihasilkan


(Gunawan, 2005)
Sampling Rate (KHZ)

Aplikasi

Telepon

11,025

Radio AM

16

Kompromi antara 11,025 dan 22,025 KHz

22,025

Mendekati Radio FM

32,075

Lebih baik dari Radio FM

44,1

Compact Disc Audio (CDA)

48

Digital Audio Tape (DAT)

Sampling rate yang umumnya digunakan antara lain 8 KHz, 11 KHz, 16 KHz,
22 KHz, 24 KHz, 44 KHz, 88 KHz. Makin tinggi sampling rate, semakin baik kualitas
audio. Teori Nyquist menyatakan bahwa sampling rate yang diperlukan minimal 2

kali bandwidth sinyal. Hal ini berkaitan dengan kemampuan untuk merekonstruksi
ulang sinyal audio.

2.3.3 Bandwidth
Bandwitdth adalah selisih antara frekuensi tertinggi dan frekuensi terendah yang akan
diolah. Misalnya sinyal audio pada telepon yang digunakan untuk menyampaikan
sinyal dengan frekuensi 300 3400 Hz (ucapan manusia), berarti bandwidth-nya
adalah 3100 Hz (3400 dikurangi 300). Maka sampling rate minimum yang diperlukan
adalah 2 kali yaitu 6,2 KHz. Demikian pula dengan frekuensi suara secara umum,
frekuensi yang dapat didengar manusia adalah 20 20.000 Hz, dengan bandwidth
19.980. Berarti sampling rate minimum yang digunakan adalah 39.960 Hz. Jadi
frekuensi sampling yang mencukupi adalah 44.100 Hz (Gunawan, 2005).

2.3.4 Banyaknya Bit dalam Satu Sampel (Bit Per Sample)


Bit per sample menyatakan seberapa banyak bit yang diperlukan untuk menyatakan
hasil sample tersebut, hal ini berkaitan dengan proses kuantisasi. Bit rate yang
digunakan adalah 8 bit per sample atau 16 bit per sample. Proses kuantisasi akan
mengubah amplitudo sinyal audio menjadi suatu level sinyal tertentu. Dengan 8 bit
per sample akan ada 256 level pilihan sedangkan 16 bit per sample akan ada 65.536
level pilihan. Makin tinggi bit per sample makin teliti proses kuantisasi. Dalam contoh
ini, penggunaan 16 bit per sample dibandingkan penggunaan 8 bit per sample akan
mempertinggi ketelitian kualitas kuantisasi sebanyak 256 kali.

2.3.5 Bit Rate (Laju Bit )


Istilah bit rate merupakan gabungan dari istilah sampling rate dan bit per sample. Bit
rate menyatakan banyaknya bit yang diperlukan untuk menyimpan audio selama satu
detik, satuannya adalah bit per detik. Bit rate (dengan satuan bit per detik) diperoleh
dengan rumus yang sederhana yaitu perkalian antara jumlah kanal, sampling rate
(dengan satuan Hertz) dan bit per sample (dengan satuan bit). Sebagaimana dapat
dilihat pada table 2.2

Tabel 2.2 Tabel Penyimpanan Berbagai Konfigurasi Audio Digital


(Gunawan, 2005)

Sampling

Bit per

Jumlah

rate

sample

kanal

12 kHz

12 kHz

12 kHz

Bit rate

Byte rate (1

Byte rate

byte = 8 bit)

per menit

96.000

12.000

720 KB

192.000

24.000

1,44 MB

16

192.000

24.000

1,44 MB

12 kHz

16

348.000

48.000

2,88 MB

24 kHz

192.000

24.000

1,44 MB

24 kHz

348.000

48.000

2,88 MB

24 kHz

16

348.000

48.000

2,88 MB

24 kHz

16

768.000

96.000

5,76 MB

44.1 kHz

352.800

44.100

2,646 MB

44.1 kHz

705.600

88.200

5,292 MB

44.1 kHz

16

705.600

88.200

5,292 MB

44.1 kHz

16

1.411.200

176.400

10,584 MB

Audio sekualitas CD Audio menggunakan sampling rate 44,1 kHz, 16 bit per
sample, 2 kanal. Total media yang diperlukan untuk menyimpan data audio ini
perdetik adalah 176.400 byte, untuk durasi 1 menit diperlukan 10,584 MB. Jika ratarata durasi satu lagu selama 5 menit, maka dibutuhkan tempat lebih dari 50 MB untuk
menyimpan data audio lagu tersebut jika diasumsikan 1 KB = 1.000 byte dan 1 MB =
1.000 KB = 1.000.000 byte.

2.4 Data Audio


Salah satu tipe data multimedia adalah audio yang berupa suara ataupun bunyi, data
audio sendiri telah mengalami perkembangan yang cukup pesat seiring dengan
semakin umumnya orang dengan perangkat multimedia. Tentunya yang merupakan
syarat utama supaya komputer mampu menjalankan tipe data tersebut adalah adanya
speaker yang merupakan output untuk suara yang dihasilkan dan untuk menghasilkan
maupun mengolah data suara yang lebih kompleks seperti *.WAV, *.MIDI tersebut
tentunya sudah diperlukan perangkat yang lebih canggih lagi yaitu sound card
(Gunawan, 2005).

Tipe dari pelayanan audio memerlukan format yang berbeda untuk informasi
audio dan teknologi yang berbeda untuk menghasilkan suara. Windows menawarkan
beberapa tipe dari pelayanan audio :
1.

Pelayanan audio Wavform menyediakan playback dan recording untuk


perangkat keras digital audio. Waveform digunakan untuk menghasilkan nonmusikal audio seperti efek suara dan suara narasi. Audio ini mempunyai
keperluan penyimpanan yang sedang dan keperluan untuk tingkat transfer paling
kecil yaitu 11 K/detik.

2.

Midi Audio, menyediakan pelayanan file MIDI dan MIDI playback melalui
synthesizer internal maupun eksternal dan perekaman MIDI. MIDI digunakan
untuk aplikasi yang berhubungan dengan musik seperti komposisi musik dan
program MIDI sequencer. Karena memerlukan tempat penyimpanan lebih kecil
dan tingkat transfer yang lebih kecil daripada Waveform audio, maka sering
digunakan untuk keperluan background.

3.

Compact Disc Audio (CDA) menyediakan pelayanan untuk playback informasi


Red Book Audio dalam CD dengan drive CD-ROM pada komputer multimedia.
CD menawarkan kualitas suara tertinggi, namun juga memerlukan daya
penyimpanan yang paling besar pula, sekitar 176 KB/detik.

4.

Wav Audio merupakan kreasi perusahaan raksasa perangkat lunak Microsoft


yang berasal dari standar RIFF (Resource Interchange File Format). Wav audio
ini telah menjadi standar format file audio komputer dari suara sistem dan
games sampai CD Audio. File Wav diidentifikasikan dengan nama yang
berekstensi *.WAV. Format asli dari tipe file tersebut sebenarnya berasal dari
bahasa C.

2.5 Struktur File Wav


Aplikasi multimedia seperti diketahui memerlukan manajemen penyimpanan dari
sejumlah jenis data yang bervariasi, termasuk bitmap, data audio, data video,
informasi mengenai kontrol device periperal. Rule Interchange File Format (RIFF)
menyediakan suatu cara untuk menyimpan semua jenis data tersebut. Tipe data pada
sebuah file RIFF dapat diketahui dari ekstensi filenya (Gunawan, 2005). Sebagai
contoh jenis-jenis file yang disimpan dalam bentuk format RIFF adalah sebagai
berikut:

1. Audio/visual interleaved data (.AVI)


2. Wavform data (.WAV)
3. Bitmapped data (.RDI)
4. MIDI information (.RMI)
5. Color palette (.PAL)
6. Multimedia Movie (.RMN)
7. Animated cursor (.ANI)

Pada saat ini, file *.AVI merupakan satu-satunya jenis file RIFF yang telah
secara penuh diimplementasikan menggunakan spesifikasi RIFF. Meskipun file
*.WAV juga menggunakan spesifikasi RIFF, karena struktur file *.WAV ini begitu
sederhana maka banyak perusahaan lain yang mengembangkan spesifikasi dan standar
mereka masing-masing.
Format file WAV seperti yang diketahui, merupakan bagian dari spesifikasi
RIFF Microsoft yang digunakan sebagai penyimpan data digital audio. Format file ini
merupakan salah satu format file audio pada PC. Seiring dengan popularitas Windows
maka banyak aplikasi yang mendukung format file ini. Karena bekerja pada
lingkungan Windows yang menggunakan prosesor Intel, maka format data dari file
WAV disimpan dalam format urutan little-endian (least significant byte) dan sebagian
dalam urutan big-endian.
File WAV menggunakan struktur standar RIFF yang mengelompokkan isi file
(sampel format, sampel digital audio, dan lain sebagainya) menjadi chunk yang
terpisah, setiap bagian mempunyai header dan byte data masing-masing. Header
chunck menetapkan jenis dan ukuran dari byte data chunk. Dengan metoda pengaturan
seperti ini maka program yang tidak mengenali jenis chunk yang khusus dapat dengan
mudah melewati bagian chunk ini dan melanjutkan langkah memproses chunk yang
dikenalnya. Jenis chunk tertentu mungkin terdiri atas sub-chunk. Sebagai contoh, pada
gambar 2.3 dapat dilihat chunk fmt dan data sebenarnya merupakan sub-chunk
dari chunk RIFF.

Chunk pada file RIFF merupakan suatu string yang harus diatur untuk tiap
kata. Ini berarti ukuran total dari chunk harus merupakan kelipatan dari 2 byte (seperti
2, 4, 6, 8 dan seterusnya). Jika suatu chunk terdiri atas jumlah byte yang ganjil maka

harus dilakukan penambahan byte (extra padding byte) dengan menambahkan sebuah
nilai nol pada byte data terakhir. Extra padding byte ini tidak ikut dihitung pada
ukuran chunk. Oleh karena itu sebuah program harus selalu melakukan pengaturan
kata untuk menentukan ukuran nilai dari header sebuah chunk untuk mengkalkulasi
offset dari chunk berikutnya. Sebagaimana dapat dilihat pada gambar 2.3

Gambar 2.3 Layout File Wav (Gunawan, 2005)

2.5.1 Header File Wav


Header file Wav mengikuti struktur format file RIFF standar. Delapan byte pertama
dalam file adalah header chunk RIFF standar yang mempunyai chunk ID RIFF dan
ukuran chunk didapat dengan mengurangkan ukuran file dengan 8 byte yang
digunakan sebagai header. Empat byte data yaitu kata RIFF menunjukkan bahwa
file tersebut merupakan file RIFF. File Wav selalu menggunakan kata WAV untuk
membedakannya dengan jenis file RIFF lainnya sekaligus digunakan untuk
mendefinisikan bahwa file tersebut merupakan file audio wavform. Sebagaimana dapat
dilihat pada table 2.3

Tabel 2.3 Nilai Jenis Chunk RIFF (Gunawan, 2005)


Offset Ukuran Deskripsi

Nilai

0x00

Chunk ID

"RIFF" (0x52494646)

0x04

Ukuran Data Chunk (ukuran file) - 8

0x08

Jenis RIFF

0x10

"WAV" (0x57415645)

Chunk WAV

2.5.2 Chunk File WAV


Ada beberapa jenis chunk untuk menyatakan file Wav. Kebanyakan file Wav hanya
terdiri atas 2 buah chunk, yaitu Chunk Format dan Chunk Data. Dua jenis chunk ini
diperlukan untuk menggambarkan format dari sampel digital audio. Meskipun tidak
diperlukan untuk spesifikasi file Wav yang resmi, lebih baik menempatkan Chunk
Format sebelum Chunk Data. Kebanyakan program membaca chunk tersebut dengan
urutan di atas dan jauh lebih mudah dilakukan streaming digital audio dari sumber
yang membacanya secara lambat dan linear seperti Internet. Jika Chunk Format lebih
dulu ditempatkan sebelum Chunk Data maka semua data dan format harus di-stream
terlebih dahulu sebelum dilakukan playback. Sebagaimana dapat dilihat pada table 2.4

Tabel 2.4 Format Chunk RIFF (Gunawan, 2005)


Offset Ukuran* Deskripsi
0x00

Chunk ID

0x04

Ukuran Data Chunk

0x08

Byte Data Chunk


* dalam satuan byte

2.5.3 Chunk Format

Chunk format terdiri atas informasi tentang bagaimana suatu data wavform disimpan
dan cara untuk dimainkan kembali, termasuk jenis kompresi yang digunakan, jumlah
kanal, laju pencuplikan (sampling rate), jumlah bit tiap sampel dan atribut lainnya.
Chunk format ini ditandai dengan chunnk ID fmt . Sebagaimana dapat dilihat pada
table 2.5

Tabel 2.5 Nilai-Nilai Chunk Format File Wav (Gunawan, 2005)


Offset Ukuran Deskripsi

Nilai

0x00

Chunk ID

"fmt " (0x666D7420)

0x04

Ukuran Data Chunk

16 + extra format bytes

0x08

Kode Kompresi

1 - 65,535

0x0a

Jumlah Kanal

1 - 65,535

0x0c

Laju Pencuplikan

1 - 0xFFFFFFFF

0x10

Jumlah rata-rata byte tiap detik 1 - 0xFFFFFFFF

0x14

Block align

1 - 65,535

0x16

Bit Significant tiap sampel

2 - 65,535

0x18

Extra format bytes

0 - 65,535

0x1a

Extra format bytes

A. Chunk ID dan Ukuran Data


Chunk ID selalu ditandai dengan kata fmt

(0x666D7420) dan ukurannya

sebesar data format Wav (16 byte) ditambah dengan extra format byte yang
diperlukan untuk format Wav khusus, jika tidak terdiri atas data PCM tidak
terkompresi. Sebagai catatan string chunk ID ini selalu diakhir dengan karakter
spasi (0x20). Chunk ID fmt digunakan sebagai informasi file Wav, informasi ini
berupa: Compression Code, Number of Channels, Sample Rate, Average Bytes per
Second, Block Align, Significant Bits per Sample, Extra Format Bytes.

B. Kode Kompresi (Compression Code)


Setelah chunk ID dan ukuran data chunk maka bagian pertama dari format data
file Wav menyatakan jenis kompresi yang digunakan pada data Wav. Daftar kode
kompresi yang digunakan dapat dilihat pada table 2.6

Tabel 2.6 Kode Kompresi Wav (Gunawan, 2005)


Kode

Deskripsi

0 (0x0000)

Tidak Diketahui

1 (0x0001)

PCM / Tidak Terkompresi

2 (0x0002)

Microsoft ADPCM

6 (0x0006)

ITU G.711 a-law

7 (0x0007)

ITU G.711 -law

17 (0x0011)

IMA ADPCM

20 (0x0016)

ITU G.723 ADPCM (Yamaha)

49 (0x0031)

GSM 6.10

64 (0x0040)

ITU G.721 ADPCM

80 (0x0050)

MPEG

65,536 (0xFFFF) Tahap Uji Coba

C. Jumlah Kanal (Number of Channels)


Jumlah kanal menyatakan berapa banyak signal audio terpisah yang di-encode
dalam chunk data Wav. Nilai 1 (satu) berarti merupakan signal mono, nilai 2 (dua)
berarti signal stereo dan seterusnya.

D. Laju Pencuplikan (Sampling Rate)

Menyatakan jumlah potongan sampel tiap detik. Nilai ini tidak dipengaruhi oleh
jumlah kanal.
E. Jumlah Rata-Rata Byte Tiap Detik (Average Bytes Per Second)
Nilai ini mengindikasikan berapa besar byte data Wav harus di-stream ke
konverter D/A (Digital Audio) tiap detik sewaktu suatu file Wav dimainkan.
Informasi ini berguna ketika terjadi pengecekan apakah data dapat di-stream
cukup cepat dari suatu sumber agar sewaktu playback pembacaan data tidak
terhenti. Nilai ini dapat dihitung dengan menggunakan rumus di bawah ini:
.............................................................. (2.1)

AvgBytesPerSec = SampleRate * BlockAlign

F. Block Align
Menyatakan jumlah byte tiap potongan sampel. Nilai ini tidak dipengaruhi oleh
jumlah kanal dan dapat dikalkulasi dengan rumus di bawah ini:
.................. (2.2)
BlockAlign = SignificantBitsPerSample / 8 * NumChannels
G. Bit Signifikan Tiap Sampel (Significant Bits Per Sample)
Nilai ini menyatakan jumlah bit yang digunakan untuk mendefinisikan tiap
sampel. Nilai ini biasanya berupa 8, 16, 24 atau 32 (merupakan kelipatan 8). Jika
jumlah bit tidak merupakan kelipatan 8 maka jumlah byte yang digunakan tiap
sampel akan dibulatkan ke ukuran byte paling dekat dan byte yang tidak digunakan
akan diset 0 (nol) dan diabaikan.
H. Extra Format Byte
Nilai ini menyatakan berapa banyak format byte tambahan. Nilai ini tidak ada jika
kode kompresi adalah 0 (file PCM yang tidak terkompresi). Jika terdapat suatu
nilai pada bagian ini maka ini digunakan untuk menentukan jenis file Wav yang
memiliki kompresi dan ini memberikan informasi mengenai jenis kompresi apa
yang diperlukan untuk men-decode data Wav. Jika nilai ini tidak dilakukan word
aligned (merupakan kelipatan 2), penambahan byte (padding) pada bagian akhir
data ini harus dilakukan.

2.5.4 Chunk Data

Chunk ini ditandai dengan adanya string data. Chunk Data pada file Wav terdiri atas
sampel digital audio yang mana dapat didecode kembali menggunakan metoda
kompresi atau format biasa yang dinyatakan dalam chunk format Wav. Jika kode
kompresinya adalah 1 (jenis PCM tidak terkompresi), maka Data Wav terdiri atas
nilai sampel mentah (raw sample value). Sebagaimana dapat dilihat padatabel 2.7

Tabel 2.7 Format Data Chunk (Gunawan, 2005)


Offset Ukuran Tipe

Deskripsi

Nilai

0x00

char[4] chunk ID

0x04

dword Ukuran chunk

0x08

"data" (0x64617461)
Tergantung pada panjang sampel dan jenis
kompresi

Sampel data

Sampel digital audio multi-channel disimpan dalam bentuk Data Wav


Interlaced. File Wav multi-channel (seperti stereo dan surround) disimpan dengan
mensiklus tiap kanal sampel audio sebelum melakukan pembacaan lagi untuk tiap
waktu cuplik berikutnya. Dengan cara seperti ini maka file audio tersebut dapat
dimainkan atau di-stream tanpa harus membaca seluruh isi file. Lebih praktis dengan
cara seperti ini ketika sebuah file Wav dengan ukuran yang besar dimainkan dari disk
(mungkin tidak dapat dimuat seluruhnya ke dalam memori) atau ketika melakukan
streaming sebuah file Wav melalui jaringan Internet.
Seperti dikemukan di atas, semua chunk pada RIFF (termasuk chunk Wav
data) harus di-word align. Jika data sampel menggunakan byte angka ganjil, maka
dilakukan penambahan sebuah byte dengan nilai nol yang ditempatkan pada bagian
akhir sampel data. Ukuran Header chunk data tidak termasuk byte ini.

2.5.5 Format Wav PCM


Jenis format Wav ini merupakan jenis file Wav yang paling umum dan hampir dikenal
oleh setiap program. Format Wav PCM (Pulse Code Modulation) adalah file wav yang

tidak terkompresi, akibatnya ukuran file sangat besar jika file mempunyai durasi yang
panjang. Format file Wav PCM (Gunawan, 2005) dapat dilihat pada gambar 2.4

Gambar 2.4 Diagram Format File Wav

Penjelasan mengenai struktur file Wav yang dimulai dengan header RIFF
dapat dilihat pada table 2.8

Tabel 2.8 Penjelasan Struktur File Wav (Gunawan, 2005)


Offset
0

Size
4

Nama Field

Deskripsi

ChunkID

Terdiri atas kata RIFF dalam bentuk ASCII


(0x52494646 dalam bentuk big-endian).

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

Format

Terdiri atas kata WAV (0x57415645 dalam


bentuk big-endian).

12

SubChunk1ID

Terdiri atas kata fmt (0x666d7420 dalam bentuk


big-endian).

16

SubChunk1Size

16 untuk jenis PCM.

20

AudioFormat

PCM = 1 (Linear quantization). Nilai lebih dari 1


mengindikasikan file Wav kompresi.

22

NumChannels

Mono = 1, Stereo = 2 dan seterusnya

24

SampleRate

8000, 44100, dan seterusnya dalam satuan Hz

28

ByteRate

= SampleRate * NumChannels * BitsPerSample / 8

32

BlockAlign

= NumChannels * BitsPerSample / 8
Jumlah byte untuk satu sampel termasuk semua
channel.

34

BitsPerSample

8 bits = 8, 16 bits = 16, dan seterusnya.

36

SubChunk2ID

Terdiri atas kata data (0x64617461 dalam bentuk


big-endian).

40

SubChunk2Size

= NumSamples * NumChannels * BitsPerSample / 8

44

Data

Data Sound sebenarnya.

Keterangan:

Format WAV 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 Wav
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 Wav di atas:

Gambar 2.5 Interpretasi Tiap Byte pada File Wav

Selain bentuk standar dari file Wav di atas, seperti yang dikemukakan sebelumnya file
Wav dapat ditambahkan chunk-chunk lain. Penambahan ini tidak berpengaruh sebab
suatu program yang membaca file Wav jika tidak memerlukan informasi pada chunk
ini akan mengabaikannya dan mencari chunk lain yang diperlukannya. Sebuah file
Wav dengan penambah chunk rgad dapat dilihat pada table 2.9.

Tabel 2.9 Penambahan Chunk Lain Pada File Wav (Binanto, 2010)
Start

Chunk Chunk

Field Name

contents

Byte
0

contents

bytes format

(HEX)
RIFF

name

"RIFF" 52 49 46 46

ASCII

size

176444 3C B1 02 00

uInt32

"WAV" 57 41 56 45

ASCII

WAV

name

12

Fmt

name

"fmt "

66 6D 74 20

ASCII

16

size

16

10 00 00 00

uInt32

20

wFormatTag

01 00

uInt16

22

nChannels

02 00

uInt16

24

nSamplesPerSec

44100 44 AC 00 00

uInt32

28

nAvgBytesPerSec

176400 10 B1 02 00

uInt32

32

nBlockAlign

04 00

uInt16

34

nBitsPerSample

16

10 00

uInt16

name

"rgad"

72 67 61 64

ASCII

40

size

08 00 00 00

uInt32

44

fPeakAmplitude

00 00 80 3F

float32

48

nRadioRgAdjust

10822

46 2A

uInt16

nAudiophileRgAdjust 18999

37 4A

uInt16

64 61 74 61

ASCII

176400 10 B1 02 00

uInt32

36

Rgad

50
52

Data

name

56

size

60

wavform data

"data"

.....

.....

176400 Int16

2.6 Hubungan Multimedia dengan Aplikasi Windows


Arsitektur dari pelayanan multimedia dirancang berdasarkan konsep dari extensibilitas
(ekstensibility) dan device independence (kebebasan alat). Berdasarkan kata

multimedia dapat diasumsikan bahwa multimedia merupakan suatu wadah atau


penyatuan beberapa media menjadi satu (Gunawan, 2005).
Elemen-elemen dalam pembentukan aplikasi multimedia adalah teks, gambar,
suara dan video. Untuk itu ekstensibilitas memungkinkan arsitektur perangkat lunak
dengan mudah mengakomodasikan lebih canggih dalam teknologi tanpa perubahan
pada arsitektur itu sendiri. Kebebasan alat memungkinkan aplikasi multimedia
menjadi lebih mudah dikembangkan yang akan berjalan pada perangkat keras yang
berbeda-beda. 3 (tiga) elemen desain dari perangkat lunak sistem mendukung
ekstensibilitas dan kebebasan alat yaitu:

1. Lapisan translasi (MMSystem) yang mengisolasikan aplikasi dari driver peralatan


dan memusatkan pada kode kebebasan alat.
2. Hubungan run-time yang memungkinkan lapisan translasi untuk menghubungkan
dengan driver yang dibutuhkan.
3. Suatu bentuk yang diatur sesuai dan driver konsisten interface yang
meminimalkan kode khusus dan membuat instalasi dan meningkatkan proses
menjadi lebih mudah.
Untuk lebih jelasnya maka digambarkan bagaimana lapisan translasi
menterjemahkan sebuah fungsi multimedia menjadi panggilan kepada driver alat
audio:

Level
Level Translasi

Level Device
Gambar 2.6 Lapisan-Lapisan Multimedia dengan Windows

2.7

Binary Tree

Suatu binary tree memiliki tipikal sebagai berikut (Zakaria, 2005):


a. Sebuah root
b. Terdapat node yang disebut sebagai parent atau child

c. Parent masing-masing memiliki maksimum 2 buah child


d. Node yang tidak memiliki child disebut dengan leaf
Untuk lebih jelasnya tipikal dari binary tree diperlihatkan pada Gambar 2.7
berikut ini.
Root

Parent

Parent

child

child

leaf

leaf

leaf

leaf

leaf

leaf

Gambar 2.7 Contoh Binary Tree (Zakaria, 2005)

Child dari A: {B, C}


Descendant dari A: {B, C, D, E, F, G, H, I, J, K}
Child dari B: {D, E}
Descendant dari B: {D, E, H, I, J, K}
Child dari C: {F, G}
Child dari D: {H, I}
Child dari E: {J, K}

Dilihat dari kepemilikan node pada masing-masing parent dan tinggi tree,
maka pohon biner (binary tree) dibedakan menjadi dua yaitu pohon biner lengkap dan
pohon biner sempurna. Pohon biner lengkap (completely binary tree), yakni masingmasing node memiliki 2 buah anak atau tidak memiliki anak sama sekali (Gambar
2.8).

Gambar 2.8 Contoh Completely Binary Tree (Zakaria, 2005)

Sebuah pohon biner sempurna (perfect binary tree) adalah pohon biner yang
lengkap yang masing-masing node memiliki 2 buah anak dan mempunyai kedalaman
yang sama (jarak dari akar atau biasanya disebut juga dengan height). Gambar 2.9
memperlihatkan contoh dari pohon biner sempurna.
A

Gambar 2.9 Contoh Perfect Binary Tree (Zakaria, 2005)

2.7.1 Metode Untuk Menyimpan Pohon Biner


Pohon biner dapat dikonstruksi dari bahasa pemrograman primitif dengan beberapa
cara. Pada suatu bahasa dengan record dan referensi, pohon biner secara tipikal
dikonstruksi dengan sebuah struktur pohon node yang terdiri dari beberapa data dan
referensi pada node anak sisi kiri dan node anak sisi kanan. Kadang-kadang juga

terdiri atas sebuah referensi pada parent-nya yang unik. Jika suatu node mempunyai
lebih dari dua anak, beberapa pointer dari anak mungkin diset ke suatu nilai null
khusus, atau ke node sentinel khusus (Zakaria, 2005).
Pohon biner juga dapat disimpan dengan array, dan jika pohon merupakan
suatu pohon biner lengkap, metode ini tidak memborosokan ruang penyimpanan.
Dengan pengaturan kompak tersebut, jika suatu node yang mempunyai indeks i, anakanaknya dapat ditemukan pada indeks (2i + 1) ke sisi kiri dan (2i + 2) ke sisi kanan,
sementara parent-nya ditemukan pada indeks floor ((i1)/2) dengan asumsi akar
mempunyai indeks nol. Metode ini menguntungkan sebab lebih kompak dari segi
penyimpanan dan referensi lokasi yang lebih baik, terutama selama pemindahan pada
urutan awal. Bagaimanapun juga, ini memerlukan memori yang saling berdampingan,
sulit bertambah, dan menghabiskan ruang proporsional sebesar 2h n untuk sebuah
pohon dengan height (h) dan node (n).
Array disusun atau ditempatkan secara level order traversal seperti terlihat
pada Gambar 2.10 berikut ini.
A

2.8

Kompresi Data

Kompresi data dilakukan untuk mereduksi ukuran data atau file. Dengan melakukan
kompresi atau pemadatan data maka ukuran file atau data akan lebih kecil sehingga
dapat mengurangi waktu transmisi sewaktu data dikirim dan tidak banyak banyak
menghabiskan ruang media penyimpan.

2.8.1 Teori Kompresi Data


Dalam makalahnya di tahun 1948, A Mathematical Theory of Communication,
Claude E. Shannon merumuskan teori kompresi data. Shannon membuktikan adanya
batas dasar (fundamental limit) pada kompresi data jenis lossless. Batas ini, disebut
dengan entropy rate dan dinyatakan dengan simbol H. Nilai eksak dari H bergantung
pada informasi data sumber, lebih terperinci lagi, tergantung pada statistikal alami
dari data sumber. Adalah mungkin untuk mengkompresi data sumber dalam suatu
bentuk lossless, dengan laju kompresi (compression rate) mendekati H. Perhitungan
secara matematis memungkinkagambar 2.11

Gambar 2.11 Claude E. Shannon

Shannon juga mengembangkan teori mengenai kompresi data lossy. Ini lebih
dikenal sebagai rate-distortion theory. Pada kompresi data lossy, proses dekompresi
data tidak menghasilkan data yang sama persis dengan data aslinya. Selain itu, jumlah
distorsi atau nilai D dapat ditoleransi. Shannon menunjukkan bahwa, untuk data
sumber (dengan semua properti statistikal yang diketahui) dengan memberikan
pengukuran distorsi, terdapat sebuah fungsi R(D) yang disebut dengan rate-distortion

function. Pada teori ini dikemukakan jika D bersifat toleransi terhadap jumlah distorsi,
maka R(D) adalah kemungkinan terbaik dari laju kompresi.
Ketika kompresi lossless (berarti tidak terdapat distorsi atau D = 0),
kemungkinan laju kompresi terbaik adalah R(0) = H (untuk sumber alphabet yang
terbatas). Dengan kata lain, laju kompresi terbaik yang mungkin adalah entropy rate.
Dalam pengertian ini, teori rate-distortion adalah suatu penyamarataan dari teori
kompresi data lossless, dimana dimulai dari tidak ada distorsi (D = 0) hingga terdapat
beberapa distorsi (D > 0).
Teori kompresi data lossless dan teori rate-distortion dikenal secara kolektif
sebagai teori pengkodean sumber (source coding theory). Teori pengkodean sumber
menyatakan batas fundamental pada unjuk kerja dari seluruh algoritma kompresi data.
Teori tersebut sendiri tidak dinyatakan secara tepat bagaimana merancang dan
mengimplementasikan algoritma tersebut. Bagaimana pun juga algoritma tersebut
menyediakan beberapa petunjuk dan panduan untuk memperoleh unjuk kerja yang
optimal. Dalam bagian ini, akan dijelaskan bagaimana Shannon membuat model dari
sumber informasi dalam istilah yang disebut dengan proses acak (random process).
Di bagian selanjutnya akan dijelaskan mengenai teorema pengkodean sumber lossless
Shannon, dan teori Shannon mengenai rate-distortion. Latar belakang mengenai teori
probabilitas diperlukan untuk menjelaskan teori tersebut.

2.8.2 Algoritma Kompresi Huffman


Algoritma kompresi Huffman dinamakan sesuai dengan nama penemunya yaitu David
Huffman, seorang profesor di MIT (Massachusets Instuate of Technology). Kompresi
Huffman merupakan algoritma kompresi lossless dan ideal untuk mengkompresi teks
atau file program. Ini yang menyebabkan mengapa algoritma ini banyak dipakai dalam
program kompresi (Wibowo, 2012).
Kompresi Huffman termasuk dalam algoritma keluarga dengan variable
codeword length. Ini berarti simbol individual (karakter dalam sebuah file teks sebagai
contoh) digantikan oleh urutan bit yang mempunyai suatu panjang yang nyata (distinct
length). Jadi simbol yang muncul cukup banyak dalam file akan memberikan urutan
yang pendek sementara simbol yang jarang dipakai akan mempunyai urutan bit yang
lebih panjang. Contoh praktis berikut ini menunjukkan cara kerja dari algoritma
Huffman. Misalkan akan dikompresi potongan data seperti berikut ini:

ACDABA
Distribusi frekuensi untuk karakter di atas seperti berikut ini:
Karakter

A B C D

Frekuensi

Selanjutnya dibentuk node seperti bentuk berikut ini berdasarkan frekuensi di


atas, disusun mulai dari frekuensi terbesar hingga terkecil. Kemudian dibentuk pohon
Huffman agar didapat kode simbol atau kode pengganti untuk karakter-karakter di
atas.
B
1

A
3

C
1

D
1

Kemudian diurutkan dari node dengan frekuensi terkecil hingga terbesar


B

Selanjutnya dua buah node terkecil digabung membentuk satu node baru
dimana frekuensinya merupakan penjumlahan dari keduanya seperti pada Gambar
2.12.
2
B

Gambar 2.12 Penggabungan dua node terkecil


Setelah itu diurutkan kembali berdasarkan frekuensi tiap node secara urutan
menaik seperti pada Gambar 2.13.
.
A

D
1

2
B
1

3
C
1

Gambar 2.13 Pengurutan Frekuensi secara menaik

Kemudian dua buah node terkecil digabung menjadi satu kembali untuk
membentuk node baru seperti pada Gambar 2.14.
A
3

D
1

2
B
1

C
1

Gambar 2.14 Penggabungan dua node terkecil kembali

Setelah itu diurutkan kembali berdasarkan frekuensi tiap node secara urutan
menaik seperti pada Gambar 2.15.

A
3

D
1

2
B
1

C
1

Gambar 2.15 Pengurutan Frekuensi secara menaik kembali


Kemudian dua node terakhir ini digabung membentuk satu pohon tunggal yang
disebut dengan pohon Huffman dengan node paling atas merupakan root seperti pada
Gambar 2.16.

6
A
3

D
1

2
B
1

C
1

Gambar 2.16 Penggabungan dua node terakhir membentuk pohon tunggal

Langkah terakhir adalah memberikan label bit 0 untuk setiap sisi kiri dari
pohon dan label bit 1 untuk setiap sisi kanan dari pohon seperti pada Gambar 2.17.
.
6
0

A
3

D
1

2
0

B
1

C
1

Gambar 2.17 Pemberian label bit

Karena potongan data tersebut terdiri atas 6 karakter, maka teks tersebut terdiri
atas 6 byte atau 48 bit. Dengan Huffman encoding, akan dicari simbol yang paling
sering muncul (dalam kasus ini adalah karakter A muncul sebanyak 3 kali). dan
kemudian sebuah pohon (tree) akan dibentuk untuk menggantikan simbol dengan
urutan bit yang lebih pendek. Pada kasus khusus ini, algoritma akan menggunakan
tabel pengganti sebagai berikut: A = 1, B = 010, C = 011, D = 00. Jika code word

dipakai untuk mengkompresi file, maka data yang telah dikompresi akan terlihat
seperti berikut ini. ACDABA.
10110010101
Ini berarti hanya 11 bit yang dipakai selain 48 bit, berarti rasio kompresi
adalah 4 : 1 untuk file tersebut.
Huffman encoding dapat dioptimalkan dengan dua cara yang berbeda yaitu
sebagai berikut:
1.

Adaptive Huffman Code secara dinamis mengubah code word menurut


perubahan dari probabilitas dari simbol.

2.

Extended Huffman Compression dapat meng-encode grup dari simbol daripada


pada melakukan encode pada simbol tunggal.

Algoritma kompresi Huffman secara umum efisien dalam mengkompresi teks


atau file program. Untuk file image biasanya dipakai algoritma yang lain. Kompresi
Huffman secara umum dipakai dalam program kompresi seperti PKZip, LHA, GZ,
ZOO, dan ARJ. Algoritma ini juga dipakai dalam kompresi JPEG dan MPEG.
Adapun bentuk algoritma dari Huffman dalam membentuk sebuah pohon biner
adalah sebagai berikut:
1.

Dimulai dengan penyusunan frekuensi simbol sebagai frekuensi dari pohon

2.

Jika terdapat lebih dari satu pohon:


a.

Carilah dua pohon dengan jumlah weight yang paling kecil

b.

Gabungkan dua pohon tersebut menjadi satu dan mempunyai nilai setara
dengan jumlah keduanya, atur salah satunya yang bernilai paling kecil
sebagai child sisi kiri dan yang lainnya sebagai child sisi kanan

3.

Lakukan langkah di atas hingga membentuk satu pohon biner tunggal

4.

Untuk setiap child sisi kiri beri simbol 0 dan beri simbol 1 untuk
merepresentasi child sisi kanan.

2.9 Penelitian Terdahulu

Penelitian terdahulu tentang algoritma Huffman juga telah dilakukan. Penelitian ini
berfungsi sebagai bahan referensi dalam pengompresan file audi WAV agar lebih
optimal. Berbagai penelitian terdahulu dapat dilihat pada table 2.10.

Tabel 2.10 Penelitian Terdahulu


No

Judul

Pengarang

Tahun

Kelebihan

1.

Kompresi teks

Ahmadu Malik Dana

2010

Untuk menghemat biaya

menggunakan metode

Logistia

2.

pemakaian sms. Dengan

Huffman untuk

menggunakan aplikasi

menghemat karakter

kompresi SMS dan

pada short message

menghemat biaya

service(SMS)

pemakain samapi 35%

Aplikasi kompresi

Dyah Kusuma

citra dengan

Ningrum

2010

Untuk
mengimplementasikan

algoritma Huffman

algoritma Huffman

menggunakan

pada proses kompresi

borland delphi 7

dan dekompresi data


yang berupa citra
kedalam program
aplikasi

3.

Perbandingan

Danny Dinas

algoritma Huffman

Sulistio

2010

Waktu iterasi yang


diperlukan oleh

Static dengan

alggoritma Huffman

algoritma Huffman

Static untuk

Adaptif pada

melakukan kompresi

kompresi data teks

dan dekompresi adalah


cenderung lebih kecil
dibanding algoritma
Huffman Adaptif

BAB 3
ANALISIS DAN PERANCANGAN

3.1 Analisis
Kompresi data atau dikenal juga sebagai pemadatan data mempunyai tujuan
memperkecil ukuran data sehingga selain dapat menghemat media penyimpanan dan
memudahkan transfer data dalam jaringan seperti internet. Dalam masalah transfer
data, ukuran file yang kecil akan mempercepat waktu transmisi. File merupakan data
digital yang berupa representasi atas bit 0 dan 1. Seringkali dalam sebuah file
terjadi perulangan data atau redundancy. Umumnya metode kompresi melakukan
pemadatan terhadap data berulang tersebut. Seperti diketahui jenis algoritma kompresi
terbagi atas lossless compression dan lossy compression. Algoritma lossy compression
membuang bagian-bagian data yang sebenarnya tidak berguna seperti data yang tidak
dapat dilihat maupun didengar oleh manusia sehingga data asli tidak dapat
dikembalikan seperti semula, sedangkan algoritma lossless adalah tidak ada
kehilangan data atau informasi dimana data asli dapat direkonstruksi kembali sama
persis dari data yang telah dikompresi.

3.1.4 Sampel Audio WAV


File audio yang akan dikompresi pada penelitian ini adalah berformat WAV, yang
terlebih dahulu dilakukan pembacaan file audio untuk mendapatkan data berupa
header dalam bentuk pasangan bilangan heksadesimal. File audio adalah file hasil
perekaman yang belum terkompresi yang terdiri dari header-header yang berisi
informasi. Sebagai contoh diberikan data header yang terdapat pada file audio seperti
pada Gambar 3.1.

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 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 2F 2F 2F
2F 2F 2F 2F 2F 42 42 42 42 42 42 1A 1A 1A 1A 1A 4C 4C 34 e7 0 0 0 0 24 f2 0 0 0
0 00 7f 11 00 22 07 3d 3d 0 3d 0 2 9a 2a 4f 3e 3d 00 10 10 10 03 3d 10 10 2 f 10 10
12 00 12 10 25 23 13 00 04 11 23 00 00 12 11 32 2a 2a 9f 25 10 -10 02 12 10 53 13

00 a6 11 12 23 00 0f 10 10 10 12 10 5d 23 13 70 11 26 23 00 01 13 9a 2a 2f 10 10
10 12 10 53 90 56 11 23 00 01 13 0e 22 529a 2a 10 3d 10 02 2f 10 10 10 12 -10 11 33
13 00 07 3d 10 02 3f 10 10 12 12 53 13 30 30 37 07 13 3d 10 02 f 0 10 10 12 -10 53
14 13 00 07 3d 10 02 f 0 10 00 12 26 25
Gambar 3.1 Data Audio Wav dalam Hexa
Keterangan:
a. Empat byte pertama selalu berisi 52 49 46 46 (hexa) yang jika di konvensi
mempunyai arti R =52, I =49, F= 46, F = 46 sama dengan RIFF.
b. Empat byte berikutnya berisi 24 08 00 00 menyatakan ukuran file audio yaitu
24=36, 08=8, 00=0, 00=0 yang sama dengan 36800, maka ukuran filenya
adalah 36800 kb 1 kb = 36799 kb.
c. Empat byte berikutnya 57 41 56 45 menyatakan jenis file: 57=W, 41=A, 56=V,
45=E
d. Empat byte berikutnya adalah 66 6d 74 20 menyatakan ID fmt, 66=f, 6d=m,
74=t dan 20=spasi kosong.
e. Empat byte berikutnya adalah 10 00 00 00 yang menyatakan panjang
informasi, 10 = 16, 00=0, 00=0, 00=0 semuanya bernilai 16.
f. Empat byte berikutnya adalah 01 00 02 00 yang bernilai 1 dan 2 channel
(stereo).
g. Empat byte berikutnya adalah 22 56 00 00 yang menyatakan sample rate
dengan nilai 22=, 56=V, 00=0, 00=0.
h. Empat byte berikutnya adalah 88 58 01 00 yang menyatakan byte rate dengan
nilai 88=X, 58=:, 01=1, 00=0.
i.

Dua byte berikutnya adalah BlockAlign yang bernilai 04 00 yang menyatakan


ukuran data untuk satu sample penuh dalam byte. Yang dimaksud dengan satu
sample penuh adalah satu sample yang mewakili nilai dari sample pada semua
channel pada suatu waktu.

j.

Dua byte berikutnya adalah nilai bit per sampel (BitsPerSample) yang bernilai
10 00 adalah 16 dan 00 = 16 bit per sampel untuk sampel right channel
maupun untuk sampel left channel.

k. Empat byte berikutnya adalah 64 61 74 61 yang menyatakan ID dengan nilai


64=d, 61=a, 74=t, 61=a dengan arti data yang menyatakan data sampel
digital audio.

l.

Enam belas (16) byte berikutnya adalah sampel audio right channel sampel 1
sampai sampel ke 4 dengan nilai 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 2F 2F 2F
2F 2F 2F 2F 2F 42 42 42 42 42 42 1A 1A 1A 1A 1A 4C 4C.

m. Lanjutkan sampai semua data sampel audio diperoleh.

3.1.5 Encoding Huffman


Algoritma kompresi Huffman atau disebut dengan encoding Huffman adalah
algoritma yang dipakai untuk mengkompresi file. Teknik kompresi ini dengan
menggantikan kode yang lebih kecil pada karakter yang sering dipakai dan code yang
lebih panjang untuk karakter yang tidak begitu sering dipakai. Code dalam hal ini
adalah urutan bit berupa nilai 0 dan 1 yang secara unik merepresentasikan sebuah
karakter.
Ide dasar dari encoding Huffman adalah mencocokkan code word yang pendek
pada blok input dengan kemungkinan yang terbesar dan code word yang panjang
dengan kemungkinan terkecil. Konsep ini mirip dengan Morse Code. Suatu file
merupakan kumpulan dari karakter-karakter. Dalam suatu file tertentu suatu karakter
dipakai lebih banyak daripada yang lain. Jumlah bit yang diperlukan untuk
merepresentasikan tiap karakter bergantung pada jumlah karakter yang harus
direpresentasikan. Dengan menggunakan satu bit maka dapat merepresentasikan dua
buah karakter. Sebagai contoh 0 merepresentasikan karakter pertama dan 1
merepresentasikan karakter kedua. Dengan menggunakan dua bit maka dapat
merepresentasikan 22 atau 4 buah karakter.
00 karakter pertama
01 karakter kedua
10 karakter ketiga
11 karakter keempat
Secara umum jika ingin merepresentasikan n buah karakter maka diperlukan 2n
bit untuk merepresentasikan satu karakter. Kode ASCII (American Standar Code for
Information Interchange) menggunakan 7 bit untuk merepresentasikan sebuah
karakter. Oleh karena 27 = 128 bit maka direpresentasikan dengan menggunakan kode
ASCII.

Kode

ASCII

dan kode

yang

disebutkan

di

bagian

atas

untuk

merepresentasikan karakter-karakter dikenal sebagai fixed length codes. Ini

dikarenakan tiap karakter mempunyai panjang bit yang sama atau dengan kata lain
jumlah bit yang diperlukan untuk merepresentasi tiap karakter sama. Pada kode ASCII
setiap karakter memerlukan 7 bit. Dengan menggunakan variable length codes untuk
tiap karakter maka dapat direduksi ukuran dari suatu file. Dengan menggantikan code
yang lebih kecil untuk karakter-karakter yang lebih sering dipakai dan code yang
lebih besar untuk karakter yang tidak sering dipakai, maka sebuah file dapat
dikompresi.

3.1.6 Algoritma Kompresi Huffman


Secara umum urutan langkah yang dilakukan untuk kompresi file audio dengan
algoritma Huffman adalah sebagai berikut:
1. Baca data sampel audio masukan.
2. Tentukan frekuensi kemunculan masing-masing simbol pada sampel audio.
3. Urutkan secara menaik (ascending order) simbol sampel audio berdasarkan
frekuensi kemunculannya (dari yang terkecil ke yang terbesar). Masingmasing simbol direpresentasikan sebagai sebuah simpul.
4. Gabung dua simpul bebas yang mempunyai frekuensi kemunculan paling kecil
pada kumpulan simpul. Kemudian dibuat simpul pertama pada pohon Huffman
(parent node) dimana simpul tersebut mempunyai frekuensi yang merupakan
hasil penjumlahan dari dua simpul penyusunnya.
5. Masukkan simpul pertama (parent node) ke dalam kumpulan simpul dan
urutkan kembali berdasarkan frekuensi kemunculannya, dari yang terkecil ke
yang terbesar. Kemudian hapus simpul tersebut dari kumpulan simpul.
6. Ulangi langkah 3-5 sampai tersisa hanya satu pohon biner. Agar pemilihan dua
pohon yang akan digabungkan berlangsung cepat, maka semua pohon yang
ada selalu terurut menaik berdasarkan frekuensi.
7. Beri label setiap sisi pada pohon biner dengan cara sisi kiri pohon diberi label
0 dan sisi kanan pohon diberi label 1.
8. Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar ke
daun menyatakan kode Huffman untuk simbol yang bersesuaian.
Sebagai contoh misalkan sebuah sampel audio terdiri atas data berikut ini.

3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 2F 2F 2F 2F 2F 2F 2F 2F 42 42 42 42 42 42 1A 1A
1A 1A 1A 4C 4C. Maka cara mengkompresi citra tersebut menggunakan algoritma
Huffman sebagai berikut:
a.

Hitung frekuensi atau banyaknya sebuah data muncul pada sampel audio adalah
sebagai berikut.
Frekuensi dari 3E adalah 10
Frekuensi dari 2F adalah 8
Frekuensi dari 42 adalah 6
Frekuensi dari 1A adalah 5
Frekuensi dari 4C adalah 2

Frekuensi setiap simbol atau data diatas dimasukkan pada Tabel 3.1 sebagai berikut:
Tabel 3.1 Frekuensi setiap simbol data
Simbol

b.

Frekuensi

3E

10

2F

42

1A

4C

Urutkan data secara menaik (ascending order) dari yang frekuensinya terkecil ke
frekuensinya terbesar masing-masing simbol data direpresentasikan sebagai
sebuah simpul. Urutkan data secara menaik (ascending order) dapat dilihat
seperti pada Gambar 4.1.

c.

4C:2

1A:5

42:6

2F:8

3E:10

Gambar 3.1 Urutan Data secara Asending


d.

Gabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil


seperti yang dapat dilihat pada Gambar 3.2.

4C,1A:7

42:6

2F:8

3E:10

4C:2

1A:5

Gambar 3.2 Gabungan dua buah simpul yang mempunyai frekuensi terkecil

Dara gabungan dua buah simpul diatas, urutkan kembali berdasarkan frekuensi
kemunculannya seperti yang terlihat pada Gambar 3.3.

42:6

4C,1A:7

4C:2

2F:8

3E:10

1A:5

Gambar 3.3 Pengurutan kembali data berdasarkan frekuensi terkecil

e.

Ulangi langkah 2 dan 3 sampai tersisa hanya satu pohon biner, sebagai berikut:

Gabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil,


kemudian diurutkan kembali seperti yang terlihat pada Gambar 3.4.

3E:10

4C,1A:7

4C:2

1A:5

42,2F:14

42:6

2F:8

Gambar 3.4 Penggabungan serta pengurutan kembali data berdasarkan frekuensi


terkecil

Gabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil,


kemudian diurutkan kembali seperti yang terlihat pada Gambar 3.5.

4C,1A,3E:17

4C:2

42,2F:14

42:6

2F:8

1A,3E:15

3E:10

1A:5

Gambar 3.5 Pengulangan Pengurutan kembali data berdasarkan frekuensi terkecil

Gabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil,


kemudian diurutkan kembali seperti yang terlihat pada Gambar 3.6.

4C,1A, 42,2F,3E:31

4C,1A:7

42,2F,3E:24

42,2F:14

3E:10

42:6

2F:8

Gambar 3.6 Penggabungan serta pengurutan kembali data berdasarkan frekuensi


terkecil
f.

Beri label dari akar ke daun, sebelah kiri = 0, kanan = 1 seperti yang terlihat pada
Gambar 3.7.

4C,1A, 42,2F,3E:31
0

4C,1A:7

42,2F,3E:24

4C:2

3E:10

1A:5

42,2F:14
0

42:6

2F:8

Gambar 3.7 Pemberian label dari akar ke daun

g. Penelusuran dari akar ke daun (dari atas ke bawah) menghasilkan kode Huffman

seperti pada Tabel 3.2.

Tabel 3.2 Frekuensi setiap simbol data


Simbol

Frekuensi

Kode
Huffman

3E

10

10 (2 bit)

2F

111 (3 bit)

42

110 (3 bit)

1A

01 (2 bit)

4C

00 (2 bit)

Total

31 byte

12 bit

h. Gantikan simbol data dengan kode Huffman, menjadi:

Ganti 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 2F 2F 2F 2F 2F 2F 2F 2F 42 42 42 42 42
42 1A 1A 1A 1A 1A 4C 4C menjadi:
10 10 10 10 10 10 10 10 10 10 111 111 111 111 111 111 111 111 110 110 110 110
110 110 01 01 01 01 01 00 00

Sebelum dilakukan kompresi maka ukuran data file audio adalah 31 byte, diperoleh
dari total frekuensi kemunculan simbol dikalikan dengan 1 byte. Sedangkan ukuran
audio setelah dikompresi (dalam kode Huffman): (10 x 2 bit) + (8 x 3 bit) + (6 x 3 bit)
+ (5 x 2 bit) + (2 x 2 bit) adalah: 76 bit setara dengan 9.5 byte.
Rasio kompresinya: 100 % -(

x 100 %) = 69.35 %, yang artinya 69,35 % dari file

audio semula telah berhasil dikompresi.

3.2.4 Algoritma Dekompresi Huffman


Sebelum melakukan dekompresi file, maka harus dibentuk kembali pohon Huffman
berdasarkan informasi yang ada pada tabel yang disimpan dengan file yang
dikompresi. Untuk melakukan ini dapat dilakukan dengan algoritma pembentukan
pohon Huffman berikut ini:

1.

Menginisialisasi sebuah array dengan 511 elemen dan diset dengan nilai 0.

2.

Mengambil satu elemen dari array untuk dijadikan sebagai node akar (root node).
Root node merupakan bagian awal dari node.

3.

Berikutnya membaca bit ke-i dari code untuk karakter ke-j pada tabel.

4.

Jika bit ke-i dari code bernilai 1, diambil elemen yang lain dari array dan
membuatnya sebagai node anak sisi kanan dari node sekarang. Jika bernilai 0
maka node dibuat di sisi kiri dari child node dari node saat ini. Jika node saat ini
telah mempunyai sebuah node akan baik di sisi kiri atau kanan maka langkah ini
diabaikan.

5.

Jika bit yang baru dibaca saat ini merupakan bit terakhir dari code maka node
tersebut menyimpan karakter yang direpresentasikan oleh code.

6.

Node ini kemudian dibuat sebagai node saat ini.

7.

Nilai i ditambah

8.

Langkah ke-3 dan ke-5 diulang hingga semua bit yang code untuk karakter ke-j
dibaca.

9.

Node saat ini diset ulang ke node akar.

10. j ditambah dan i diset ulang menjadi 0


11. Langkah ke-3 dan ke-10 diulang hingga code untuk semua karakter dibaca.

Setelah proses selesai akan diperoleh pohon Huffman yang lengkap dan dapat
dipakai untuk mengkompresi file. Pohon ini dipakai untuk mencari karakter yang
direpresentasikan oleh code pada file yang dikompresi. Setelah pohon Huffman
dibentuk kembali maka proses dekompresi dapat dilakukan dengan algoritma berikut
ini:
1.

Node saat ini diset menjadi root node.

2.

Suatu urutan nilai 0 dan 1 dibaca dari file yang terkompresi. Untuk setiap nilai
0 yang dibaca maka pindah ke node anak sisi kiri dari node saat ini dan setiap
nilai 1 yang dibaca maka pindah ke node anak sisi kanan dari node saat ini dan
diset sebagai node saat ini.

3.

Jika node saat ini merupakan sebuah daun akan cetak karakter yang
direpresentasikan oleh node ini. Node saat ini diset ulang ke node akar.

4.

Langkah ke-2 dan ke-3 diulang hingga semua byte dalam file selesai dibaca.
Setelah proses selesai maka file output terdiri dari data yang dikompresi.

Untuk mengembalikan audio terkompresi menjadi audio aslinya, maka diperlukan


proses dekompresi. Dan berdasarkan hasil pengkodean contoh data sampel audio
diatas didapat string biner sebagai masukan adalah 10 10 10 10 10 10 10 10 10 10
111 111 111 111 111 111 111 111 110 110 110 110 110 110 01 01 01 01 01 00 00.
Baca bit pertama dari string biner tersebut adalah 1 karena bit yang dibaca adalah 1
maka akan dilakukan penelusuran terhadap pohon Huffman ke arah simpul yang
terletak disebelah kanan terlebih dahulu. Kemudian dilakukan penelusuran kembali
jika 1 tidak mewakili simbol data maka akan dibaca bit berikutnya sehingga bit yang
dibaca manjadi 10. Dan karena 10 mewakili simbol data yang bersesuaian dan
berakhir pada sebuah daun maka dinyatakan bahwa 10 mewakili simbol 3E. Setelah
itu dibaca kembali bit berikutnya dan lakukan penelusuran kembali terhadap pohon
Huffman sehingga didapat bit-bit yang mewakili sebuah simbol data yang
bersesuaian.

3.3 Perancangan
Pada bagian perancangan ini akan dijelaskan proses perancangan program beserta
dengan perancangan form sebagai user interface dari program.

3.2.1 Perancangan Program


Algoritma atau encoding Huffman sebenarnya merupakan algoritma kompresi yang
dapat diterapkan pada semua jenis baik untuk file biner maupun file teks. Algoritma
ini efektif dengan rasio kompresi yang rendah jika terdapat banyak redundancy data
atau perulangan data yang sama pada file. Pada program ini dibuat hanya untuk
kompresi dan dekompresi file audio berjenis Wav dan mempunyai audio format
berjenis PCM (Pulse Code Modulation) dan hanya mendukung jumlah kanal
maksimum 2 buah kanal (mono dan stereo).
File Wav tersebut biasanya selalu berukuran besar untuk durasi waktu main
yang lama. Sebagai contoh untuk jenis sample rate 44.100 Hz dengan jumlah kanal
stereo dan bits per sample 16 bit untuk durasi selama 1 detik saja memerlukan
kapasitas sebesar 44.100 2 16 = 1.411.200 bit per detik = 176.400 byte per detik.
Jadi untuk durasi lagu yang rata-rata 4 menit memerlukan kapasitas 176.400 4 60
= 42.336.000 byte.
Bagian yang dikompresi dan didekompresi pada file Wav adalah bagian chunk
data selain itu file output hasil kompresi akan diberi nilai 88 pada sub chunk audio
format untuk membedakan file tersebut dengan file tidak terkompresi yang biasanya
bernilai 1 pada bagian audio format-nya. Untuk lebih jelasnya dapat dilihat pada
skema berikut bagian dari file Wave yang diproses.
Berikut ini merupakan flow chart dari program kompresi dan dekompresi file
Wave. Gambar 3.8 adalah Flow chart memperlihatkan proses kompresifile audio
WAV.

Mulai

Input File Audio

Baca Sampel Audio

Pembentukan Pohon
Huffman

Sorting Data Sampel


secara Asending

Bentuk Kode Huffman


Left=0, right=1

Kode Huffman

Selesai

Gambar 3.8 Flow Chart Kompresi

Flow chart kedua adalah proses pembentukan pohon Huffman seperti yang terlihat
pada Gambar 3.9.

Mulai

Input File Audio

Buat daftar simpul dari hasil


sorting setiap simpul

Ambil dua simpul baru


dengan frekuensi terkecil
dan hapus dari daftar

Buat simpul baru dengan


frekuensi hasil penjumlahan
dua frekuensi terkecil
Masukkan simpul Baru
dalam daftar simpul

Semua simpul
sudah digunakan
untuk membuat
pohon ?

No

Yes
Pohon Huffman

Selesai

Gambar 3.9 Flow Chart Pembentukan Pohon Huffman


3.2.2 Perancangan Form Utama

Rancangan Menu Utama terdiri dari menu Kompresi, Help, About dan Quit. Pada
bagian atas menu Utama terdapat empat menu, yaitu menu:
a. Kompresi

b. Help
c. About
d. Quit

Rancangan Menu Utama dapat dilihat pada Gambar 3.10 berikut ini.

Kompresi

Help

About

Quit

TAMPILAN JUDUL PENELITIAN

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX

Gambar 3.10 Rancangan Menu Utama

Keterangan :
1. Menu File yang memanggil program Kompresi dan Dekompresi
2. Menu About untuk membuka halaman About
3. Menu Help untuk membuka halaman Help
4. Menu Quit untuk menjalankan program Quit
5. Label tempat menampilkan judul skripsi

3.2.3 Rancangan Kompresi

Rancangan Kompresi berfungsi untuk melakukan kompresi serta dekompresi file


audio dengan algoritma Huffman Coding. Rancangan Kompresi dapat dilihat pada
Gambar 3.11.

Proses

xxxxxxxxx

File Asal

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Size

999

File Tujuan

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Size

999

Password

999

999

Ratio

10

Load

File Save

Tampilan Hasil Kompresi


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx

999

Lama

11
Proses

12

13

Bersih

Keluar

Gambar 3.11 Rancangan Kompresi


Keterangan :
1. Combo Box untuk menampilkan pilihan kompresi atau dekompresi.
2. Text Box untuk menampilkan nama file audio yang akan diproses.
3. Text Box untuk menampilkan ukuran awal file audio.
4. Botton untuk menampilkan nama file hasil kompresi
5. Text Box untuk menampilkan ukuran sesudah kompresi.
6. Text Box untuk menampilkan nama file hasil dekompresi
7. Text Box untuk menampilkan progres waktu proses kompresi / dekompresi
8. Text Box untuk menampilkan rasio proses
9. Text Box untuk menampilkan waktu proses
10. Botton untuk menampilkan nama file audio sebelum proses.
11. Button untuk tombol pemrosesan file.
12. Button untuk tombol untuk pembersihan tampilan layar
13. Button untuk tombol untuk menutup halaman kompresi.

3.2.4 Rancangan Help

Rancangan Help berfungsi untuk menampilkan informasi Judul Skripsi dan Proses
yang terjadi pada kompresi dan Dekompresi file Audio. Rancangan Help dapat dilihat
pada Gambar 3.12.

XXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX

Gambar 3.12 Rancangan Help


Keterangan :
1. Label untuk menampilkan Judul Skripsi
2. Label untuk menampilkan Proses kompresi/dekompres file audio.

3.2.5 Rancangan About

Rancangan About berfungsi untuk menampilkan informasi judul skripsi, logo


perguruan tinggi penulis, foto penulis, nama penulis, NIM, dan nama perguruan tinggi
penulis. Rancangan About dapat dilihat pada Gambar 3.13.

XXXXXXXXXXXXXXXXXX
Logo USU
XXXXXXXXXXXXXXXXX
2
3

XXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXX

Gambar 3.13 Rancangan About

Keterangan :
1. Label untuk menampilkan Judul Skripsi
2. Logo Fakultas.
3. Foto Penulis.
4. Label untuk menampilkan nama penulis
5. Label untuk menampilkan NIM penulis

BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.3 Implementasi

Implementasi perangkat lunak adalah tampilan hasil rancangan dari penulisan kode
program dimulai dari program Menu Utama, Kompresi, Help, About serta Exit.

4.3.1 Tampilan Menu Utama

Tampilan Menu Utama merupakan tampilan yang muncul setelah menjalankan


program Utama. Tampilan ini berisi judul skripsi, gambar latar serta tampilan menu.
Tampilan Menu Kompresi yaitu program kompresi dengan algoritma Huffman, Help,
About serta Exit. Tampilan Menu Utama dapat dilihat pada Gambar 4.1.

Gambar 4.1 Tampilan Menu Utama

4.3.2 Tampilan Kompresi

Tampilan Kompresi merupakan tampilan berguna untuk melakukan kompresi file


audio dengan algoritma Huffman. Tampilan Kompresi dapat dilihat pada Gambar 4.2.

Gambar 4.2 Tampilan Kompresi

Pada Gambar 4.2 diatas terlihat file audio asli wav ding.wav dengan ukuran 70.060
bytes dikompresi menjadi file DING.huf yang berukuran 53.176 bytes dengan rasio
kompresi 24.09 % lama kompresi adalah 2 detik.

4.3.3 Tampilan Help

Tampilan Help berfungsi untuk menampilkan penjelasan proses-proses yang terjadi


pada proses kompresi/dekompresi file audio. Tampilan Help dapat dilihat pada
Gambar 4.3.

Gambar 4.3 Tampilan Help

4.3.4 Tampilan About

Tampilan About berfungsi untuk menampilkan keterangan tentang penulis skripsi


Kompresi file audio dengan Algoritma Huffman. Tampilan About dapat dilihat pada
Gambar 4.4.

Gambar 4.7 Tampilan About

4.4 Pengujian Sistem

Pengujian sistem adalah pengumpulan data hasil perbandingan proses kompresi dan
dekompresi file audio dengan algoritma Algoritma Huffman serta menampilkan waktu
dan rasio kompresi. Tampilan Hasil Kompresi / Dekompresi adalah sebagai berikut:

4.4.1 Tampilan Hasil Pengujian Kompresi

Tampilan Hasil Pengujian Kompresi berfungsi untuk menampilkan informasi hasil


pengujian kompresi file audio. Rancangan Hasil Pengujian Kompresi Algoritma
Huffman dapat dilihat pada Tabel 4.1.

Tabel 4.1 Tampilan Hasil Pengujian Kompresi


HASIL PENGUJIAN KOMPRESI
No

File Audio
(.wav)

Ukuran
(bytes)

1
2
3
4
5
6
7
8
9
10

Chimes
Ding
Music
Notify
PIENSO
Ringout
Startup
Telepone-ring
Toques Para
You belong

216.364
70.060
3.376.060
228.396
1.412.690
88.236
424.644
958.536
2.562.742
1.711.604

File Hasil
Kompresi
(.huf)
Chime
Ding
Music
Notify
PIENSO
Ringout
Startup
Telepone-ring
Toques Para
You belong

Ukuran
(Bytes)

Rasio
(%)

Waktu
(Det)

Status

168.869
53.176
3.213.925
177.612
1.325.353
78.442
376.822
687.192
2.423.529
1.665.288

21.95
24.09
4.80
22.23
6.18
11.09
11.26
28.30
5.43
2.7

2
1
3
2
3
1
1
46
4
1

Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok

Rata-rata Rasio Kompresi: 13.80 %

4.4.2 Tampilan Hasil Pengujian Dekompresi

Tampilan Hasil Pengujian Dekompresi berfungsi untuk menampilkan informasi hasil


pengujian dekompresi file audio. Tampilan Hasil Pengujian Dekompresi Algoritma
Huffman dapat dilihat pada Tabel 4.2.

Tabel 4.2 Tampilan Pengujian Dekompresi


HASIL PENGUJIAN DEKOMPRESI
No

1
2
3
4
5
6
7
8
9
10

File Hasil
Kompresi
(.huf)
Chimes
Ding
Music
Notify
PIENSO
Ringout
Startup
Telepone-ring
Toques Para
You belong

Ukuran
(bytes)
168.869
53.176
3.213.925
177.612
1.325.353
78.442
376.822
687.192
2.423.529
1.665.288

File
Hasil
Dekompresi
(.wav)
Chimes
Ding
Music
Notify
PIENSO
Ringout
Startup
Telepone-ring
Toques Para
You belong

Rata-rata Rasio Dekompresi: 13.80 %

Ukuran
(Bytes)

Rasio
(%)

Waktu
(Det)

Status

216.364
70.060
3.376.060
228.396
1.412.690
88.236
424.644
958.536
2.562.742
1.711.604

21.95
24.09
4.80
22.23
6.18
11.09
11.26
28.30
5.43
2.7

2
1
3
2
3
1
1
46
4
1

Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok

4.4.3 Grafik Hasil Kompresi Size Terhadap Waktu Proses

Grafik Hasil Kompresi Size Terhadap Waktu adalah informasi besar ukuran file audio
dengan waktu proses kompresi seperti pada Gambar 4.8.

Gambar 4.8 Tampilan Grafik Kompresi Size dengan Waktu

Berdasarkan Gambar 4.8 di atas, maka waktu kompresi yang tercepat (1 detik) pada
saat mengkompresi file dengan size 53 kb, 78 kb, 376 kb dan 1.6 mb.

4.4.4 Grafik Hasil Kompresi Size Terhadap Rasio

Grafik Hasil Kompresi Size Terhadap Rasio adalah informasi besar ukuran file audio
dengan rasio kompresi seperti pada Gambar 4.9.

Gambar 4.9 Tampilan Grafik Kompresi Size dengan Rasio

Berdasarkan Gambar 4.9 di atas, maka rasio kompresi yang terbesar pada
mengkompresi file dengan size 958.536 kb, 70.060 kb dan 216.364 mb.

BAB 5
KESIMPULAN DAN SARAN

5.1

Kesimpulan

Berdasarkan pembahasan dari bab-bab sebelumnya yang telah dilakukan maka dapat
diambil beberapa kesimpulan sebagai berikut:
1.

Reduksi ukuran file yang diperoleh dengan algoritma Huffman ini berkisar dari
range 15 % hingga 36 %. Jadi dapat dikatakan dengan rasio kompresi ini
algoritma Huffman sudah dikatakan baik dalam hal mengkompresi

file

khususnya file Wav.


2.

Tingkat kompresi dipengaruhi oleh banyaknya data sampel yang sama dalam file
Wave.

3.

Kecepatan proses tidak bergantung pada data yang diproses tetapi berbanding
lurus dengan ukuran file Wav, artinya semakin besar ukuran file Wav yang
diproses maka semakin lama waktu prosesnya.

4.

Untuk dapat memutar file audio hasil kompresi, maka harus dilakukan proses
dekompresi terlebih dahulu.

5.2

Saran

Untuk pengembangan lebih lanjut program kompresi pada file Wave ini, maka dapat
diberikan beberapa saran sebagai berikut:
1.

Untuk meningkatkan rasio kompresi maka algoritma kompresi Huffman dapat


digabungkan dengan rasio kompresi yang lain seperti LZW.

2.

Untuk pengembangan lebih lanjut dapat dilakukan dengan algoritma turunan


Huffman antara lain Huffman Adaptif.

DAFTAR PUSTAKA

Adhitama, G. 2009. Perbandingan Algoritma Huffman dengan Algoritma


Shannon-Fano. Bandung: Institut Teknologi Bandung.
Binanto, I. 2010. Multimedia Digital, Dasar Teori + Pengembangan, Yogyakarta:
ANDI.
Gozali, F., & Mervyn. 2004. Analisis perbandingan kompresi data Dengan teknik
Arithmetic Coding dan Run Length Encoding. Jurnal ilmiah Universitas
Trisaksi.
Hasibuan, N.S, 2008. Studi Perbandingan Algoritma Huffman Dan Shannon
Fano Dalam Pemampatan File Teks. Tugas Akhir. Medan. Indonesia.
Jurusan Ilmu Komputer. Universitas Sumatera Utara.
Merdiyan, M. & Indarto, W. 2007, Implementasi Algoritma Run Length, Half
Byte
dan
Arithmetic
untuk
Kompresi
File,
http://journal.uii.ac.id/index.php/
Snati/article/view/1391/1171.
14
Pebruari 2012.
Santi, R. 2010. Perancangan Perangkat Lunak Kompresi File Citra Dengan
Menggunakan Algoritma Run Length Encoding (RLE). Tugas Akhir.
Medan. Indonesia. Jurusan Ilmu Komputer. Universitas Sumatera Utara.
Wiryadinata, R. 2007. Data Compression Coding Using Static and Dynamic
Method of Shannon-Fano Algorithm. Jurnal ilmiah Universitas Gadjah
Mada, Yogyakarta.
Kodituwakku, S.R. et al. 2010. Comparison Of Lossless Data Compression
Algorithms for text data. Indian Journal of Computer Science and
Engineering Vol 1 No 4 416-425.
Sitorus, L. 2008. Kompresi Teks Menggunakan Algoritma Huffman. Jurnal Media
Unika No.71 Edisi ke-2.
Putra, D., 2010. Pengolahan Citra Digital. Penerbit ANDI. Yogyakarta.
Gunawan, I. & Gunadi, K. 2005. Pembuatan perangkat lunak wave manipulator
untuk Memanipulasi file wav. Jurnal Informatika vol. 6, no. 1, Mei 2005:
41 50. Fakultas Teknologi Industri, Jurusan Teknik Informatika,
Universitas Kristen Petra. Surabaya.
Wibowo, A, 2012. Kompresi Data Menggunakan Metode Huffman.Seminar
Nasional Teknologi Informasi & Komunikasi Terapan 2012 (Semantik
2012 Semarang, 23 Juni 2012.

Zakaria, T.M & Prijono, A. 2005. Konsep dan Implementasi Struktur Data,
Bandung. Penerbit: Informatika.