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
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 %.
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 % .
DAFTAR ISI Halaman ABSTRAK ii ABSTRAC iii DAFTAR ISI iv DAFTAR TABEL v DAFTAR GAMBAR vi BAB 1 PENDAHULUAN 1 1.1 Latar Belakang 1 1.2 Rumusan Masalah 3 1.3 Batasan Masalah 3 1.4 Tujuan Penelitian 3 1.5 Manfaat Penelitian 3 1.6 Metodologi Penelitian 3 1.7 Sistematika Penulisan 6 BAB 2 LANDASAN TEORI 7 2.1 Pengertian Audio Digital 7
2.2 Kelebihan Audio Digital 9
2.3 Istilah dalam Audio Digital 9
2.1.1 Jumlah Kanal (Channel) 9 2.1.2 Laju Pencuplikan (Sampling Rate) 9 2.1.3 Bandwidth 10 2.1.4 Banyaknya Bit Dalam Satu Sampel (Bit Per Sample) 10
2.1.5 Laju Bit (Bit Rate) 11 2.2 Data Audio 13 2.3 Struktur File Wave 14 2.3.1 Header File Wave 16 2.3.2 Chunk File WAVE 16 2.3.3 Chunk Format 17
2.3.4 Chunk Data 20 2.3.5 Format Wave PCM 21 2.4 Hubungan Multimedia dengan Aplikasi Windows 25 2.5 Binary Tree dengan menyimpan Pohon Biner 26
2.6 Kompresi Data 29 2.6.1 Teori Kompresi Data 29 2.6.2 Algoritma Kompresi Huffman 30
BAB 3 ANALISIS DAN PERANCANGAN 35 3.1 Analisis 35
3.1.1 Sampel Audio WAV 37 3.1.2 Encoding Huffman 37 3.1.3 Algoritma Kompresi Huffman 38
3.1.4 Algoritma Dekompresi Huffman 43 3.2 Perancangan 45 3.2.1 Perancangan Program 45
3.2.2 Perancangan Form Utama 48
3.2.3 Rancangan Kompresi 49
3.2.4 Rancangan Help 50
3.2.5 Rancangan About 50
BAB 4 IMPLEMENTASI DAN PENGUJIAN 52
4.1 Implementasi 52
4.1.1 Tampilan Menu Utama 52
4.1.2 Tampilan Kompresi 53
4.1.3 Tampilan Help 53
4.1.4 Tampilan About 54
4.2 Pengujian Sistem 55
4.2.1 Tampilan Hasil Pengujian Kompresi 55 4.2.2 Tampilan Hasil Pengujian Dekompresi 55
BAB 5 KESIMPULAN DAN SARAN 56
5.1 Kesimpulan 56
5.2 Saran 56
DAFTAR PUSTAKA 58
DAFTAR TABEL
Halaman
Tabel 2.1 Frekuensi Sampling dan Kualitas Suara yang Dihasilkan 8
Tabel 2.2 Penyimpanan Berbagai Konfigurasi Audio Digital 10
Tabel 2.3 Nilai Jenis Chunk RIFF 14
Tabel 2.4 Format Chunk RIFF 14
Tabel 2.5 Chunk Format File Wav 15
Tabel 2.6 Kode Kompresi Wav 16
Tabel 2.7 Format Data Chunk 18
Tabel 2.8 Penjelasan Struktur File Wav 20
Tabel 2.9 Penambahan Chunk Lain Pada File Wav 22
Tabel 2.10 Penelitian terdahulu 33 Tabel 3.1 Frekuensi setiap simbol data 38
Tabel 3.2 Frekuensi setiap simbol data 41
Tabel 4.1 Tampilan hasil pengujian kompresi 55
DAFTAR GAMBAR
Gambar 2.1 Konversi Sinyal Analog ke Digital 6
Gambar 2.2 Konversi Sinyal Digital ke Analog 6
Gambar 2.3 Layout File Wav 13
Gambar 2.4 Diagram Format File Wav 19
Gambar 2.5 Interpretasi Tiap Byte pada File Wav 21
Gambar 2.6 Lapisan-Lapisan Multimedia dengan Windows 23
Gambar 2.7 Contoh Binary Tree 24
Gambar 2.8 Contoh Completely Binary Tree 25
Gambar 2.9 Contoh Perfect Binary Tree 25
Gambar 2.10 Penyimpanan Pohon Biner Dengan Array 26
Gambar 2.11 Claude E. Shannon 27
Gambar 2.12 Penggabungan dua node terkecil 29
Gambar 2.13 Pengurutan Frekuensi secara menaik 29
Gambar 2.14 Penggabungan dua node terkecil kembali 30
Gambar 2.15 Pengurutan Frekuensi secara menaik kembali 30
Gambar 2.16 Penggabungan dua node terakhir membentuk pohon tunggal 31
Gambar 2.17 Pemberian label bit 31
Gambar 3.1 Data Audio Wav dalam Hexa 35
Gambar 3.2 Urutan Data secara Ascending 38
Gambar 3.3 Gabungan dua buah simpul yang mempunyai frekuensi terkecil 39
Gambar 3.4 Pengurutan kembali data berdasarkan frekuensi terkecil 39
Gambar 3.5 Penggabungan serta pengurutan kembali data berdasarkan 39
frekuensi terkecil Gambar 3.6 Pengulangan Pengurutan kembali data berdasarkan frekuensi 40
terkecil Gambar 3.7 Penggabungan serta pengurutan kembali data berdasarkan 40
frekuensi terkecil Gambar 3.8 Pemberian label dari akar ke daun 41
Gambar 3.9 Flow Chart Kompresi 45
Gambar 3.10 Flow Chart Pembentukan Pohon Huffman 46
Gambar 3.11 Rancangan Menu Utama 47
Gambar 3.12 Rancangan Kompresi 48
Gambar 3.13 Rancangan Help 49
Gambar 3.14 Rancangan About 50
Gambar 4.1 Tampilan Menu Utama 51
Gambar 4.2 Tampilan Kompresi 52
Gambar 4.3 Tampilan Help 53
Gambar 4.7 Tampilan About 53
Gambar 4.8 Tampilan Grafik Kompresi Size dengan Waktu 55
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 %.
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 % .
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 pohon Huffman dibuat secara dinamis pada saat membaca data.
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 komponen-komponen elektrik, pada sinyal analog sangat mudah sekali terjadi gangguan-gangguan 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
8 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 rate Bit per sample Jumlah kanal
Bit rate Byte rate (1 byte = 8 bit) Byte rate per menit 12 kHz 8 1 96.000 12.000 720 KB 12 kHz 8 2 192.000 24.000 1,44 MB 12 kHz 16 1 192.000 24.000 1,44 MB 12 kHz 16 2 348.000 48.000 2,88 MB 24 kHz 8 1 192.000 24.000 1,44 MB 24 kHz 8 2 348.000 48.000 2,88 MB 24 kHz 16 1 348.000 48.000 2,88 MB 24 kHz 16 2 768.000 96.000 5,76 MB 44.1 kHz 8 1 352.800 44.100 2,646 MB 44.1 kHz 8 2 705.600 88.200 5,292 MB 44.1 kHz 16 1 705.600 88.200 5,292 MB 44.1 kHz 16 2 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 rata-rata 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 non-musikal 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 4 Chunk ID "RIFF" (0x52494646)
0x04 4 Ukuran Data Chunk (ukuran file) - 8
0x08 4 Jenis RIFF "WAV" (0x57415645)
0x10 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 4 Chunk ID
0x04 4 Ukuran Data Chunk
0x08 Byte Data Chunk
* dalam satuan byte
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 4 Chunk ID "fmt " (0x666D7420)
0x04 4 Ukuran Data Chunk 16 + extra format bytes
0x08 2 Kode Kompresi 1 - 65,535
0x0a 2 Jumlah Kanal 1 - 65,535
0x0c 4 Laju Pencuplikan 1 - 0xFFFFFFFF
0x10 4 Jumlah rata-rata byte tiap detik 1 - 0xFFFFFFFF
0x14 2 Block align 1 - 65,535
0x16 2 Bit Significant tiap sampel 2 - 65,535
0x18 2 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.
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)
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)
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
AvgBytesPerSec = SampleRate * BlockAlign
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 4 char[4] chunk ID "data" (0x64617461)
0x04 4 dword Ukuran chunk Tergantung pada panjang sampel dan jenis kompresi
0x08 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
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 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 “WAV” (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 Wav 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 “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
Tabel 2.9 Penambahan Chunk Lain Pada File Wav (Binanto, 2010) 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 WAV name "WAV" 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 wavform 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:
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
Level
Level Translasi
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 A B C E D H I Parent Parent child child K F G leaf leaf leaf leaf leaf leaf J
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 masing-masing node memiliki 2 buah anak atau tidak memiliki anak sama sekali (Gambar 2.8).
A B C E D H I F G
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
B C
E
D F G
H I J K L M N O
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, anak-anaknya dapat ditemukan pada indeks (2i + 1) ke sisi kiri dan (2i + 2) ke sisi kanan, sementara parent-nya ditemukan pada indeks floor ((i−1)/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
B C
E
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 3 1 1 1
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. A 3 B 1 C 1 D 1
Kemudian diurutkan dari node dengan frekuensi terkecil hingga terbesar A 3 B 1 C 1 D 1
Selanjutnya dua buah node terkecil digabung membentuk satu node baru dimana frekuensinya merupakan penjumlahan dari keduanya seperti pada Gambar 2.12. D 1 A 3 C 1 B 1 2
Gambar 2.12 Penggabungan dua node terkecil
Setelah itu diurutkan kembali berdasarkan frekuensi tiap node secara urutan menaik seperti pada Gambar 2.13.
. D 1 A 3 C 1 B 1 2
Kemudian dua buah node terkecil digabung menjadi satu kembali untuk membentuk node baru seperti pada Gambar 2.14.
D 1 A 3 C 1 B 1 2 3
Gambar 2.14 Penggabungan dua node terkecil kembali
Setelah itu diurutkan kembali berdasarkan frekuensi tiap node secara urutan menaik seperti pada Gambar 2.15.
D 1 A 3 C 1 B 1 2 3
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.
D 1 A 3 C 1 B 1 2 3 6
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.
. D 1 A 3 C 1 B 1 2 3 6 0 0 0 1 1 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 menggunakan metode
Huffman untuk menghemat karakter
pada short message service(SMS)
Ahmadu Malik Dana Logistia
2010 Untuk menghemat biaya pemakaian sms. Dengan menggunakan aplikasi kompresi SMS dan menghemat biaya pemakain samapi 35% 2. Aplikasi kompresi citra dengan algoritma Huffman menggunakan borland delphi 7 Dyah Kusuma Ningrum 2010 Untuk mengimplementasikan algoritma Huffman pada proses kompresi
dan dekompresi data yang berupa citra kedalam program aplikasi 3. Perbandingan algoritma Huffman Static dengan algoritma Huffman Adaptif pada kompresi data teks
Danny Dinas Sulistio
2010 Waktu iterasi yang diperlukan oleh alggo ritma Huffman
Static untuk melakukan kompresi dan dekompresi adalah
cenderung lebih kecil dibanding algoritma
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). Masing-masing 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.
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 Frekuensi 3E 10 2F 8 42 6 1A 5 4C 2
b. 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.
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:2 1A:5 42:6 2F:8 3E:10
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.
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.
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:2 1A:5 4C,1A:7 42:6 2F:8 3E:10 4C:2 1A:5 42,2F:14 4C,1A:7 4C:2 1A:5 3E:10 42:6 2F:8 4C,1A,3E:17 42,2F:14 42:6 2F:8 4C:2
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.
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. 1A,3E:15 1A:5 3E:10 4C,1A, 42,2F,3E:31 4C,1A:7 42,2F,3E:24 42,2F:14 3E:10 42:6 2F:8 0 4C,1A, 42,2F,3E:31 4C,1A:7 42,2F,3E:24 1
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 8 111 (3 bit) 42 6 110 (3 bit) 1A 5 01 (2 bit) 4C 2 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 42,2F:14 3E:10 42:6 2F:8 1 0 0 1 4C:2 1A:5 0 1