IMPLEMENTASI ALGORITMA HUFFMAN PADA KOMPRESI FILE WAVEDENGAN MENGGUNAKAN BORLAND DELPHI
H. Akik Hidayat
Prodi Teknik Informatika, Departement Ilmu Komputer Fakultas MIPA UNPAD
Jl. Raya Bandung Sumedang KM 21 Jatinangor Sumedang 45363 E-mail: [email protected]
ABSTRACT
One sound file format that is widely used in the Windows operating system is the Wave format (*. WAV). Wave is a coarse file format (raw format) where the direct sound signal recorded and quantized into digital data. So a recorded track CD -quality audio it will require the storage media is large enough, and therefore we need a software that can reduce the file in order to save storage media.
The aim in this paper is to determine how the Huffman algorithm used in the compression wave files, and can generate a software that can compress a wave file, which saves storage capacity.
The steps taken in this are problem solvers library research or library research, to gather a variety of information related to the structure of the wave file and Huffman algorithms, and so designing a program interface.
File wave which has a large capacity can be compressed with the Huffman algorithm can generate a range ratio ranged from 20 % to 40 %. So it can be said with a compression ratio of Huffman's algorithm has been said to be good in terms of compressing files, especially files Wave.
Keyword : Sound, Wave, Huffman's Algorithm.
I. PENDAHULUAN
File wave merupakan file audio yang banyak ditemukan dalam kegiatan kita sehari-hari terutama dalam perangkat-perangkat multimedia, sebagai contoh untuk keperluan game, back sound dalam sistem operasi atau dalam aplikasi-aplikasi lainya yang menggunakan format file tersebut.
Format file Wave merupakan format kasar, karena format tersebut merupakan signal suara yang langsung dan dijadikan langsung data digital, yang mana format tersebut mempunyai format dasar yang dikenal dengan istilah PCM (Pulse Code Modulation). Sebagai contoh jika suatu lagu di rekam sekualitas CD Audio dengan
menggunakan sampling rate 44,1 kHz, 16 bit per sample, 2 kanal (stereo), maka ukurannya akan berkisar kurang lebih 176.400 byte sehingga untuk durasi 1 menit diperlukan 10,584 MB dan itu berarti membutuhkan media penyimpanan daya yang cukup besar karena untuk 5 menit saja akan membutuhkan sekitar 50 MB. Maka dari itu harus ada suatu program yang dapat mengecilkan file tersebut.
Supaya bisa menghemat media
penyimpanan data.
Maka dari masalah tersebut maka dibutuhkan sebuah perangkat lunak yang dapat melakukan kompresi pada file Wave sekaligus mampu memainkan kembali file Wave terkompresi tersebut. Maka dalam
Tugas Akhir ini penulis mengambil judul “Implementasi Algoritma Huffman Pada
Kompresi File Wave Dengan Menggunakan Borland Delphi 7”
II. LANDASAN TEORI
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.
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.
Bagaimana caranya memasukkan suara analog ini sehingga dapat dimanipulasi oleh peralatan elektronik yang ada? Alat yang diperlukan untuk melakukan ini 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.
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 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 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.
III. PERANCANGAN SISTEM
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 hanya akan dibuat khusus untuk file audio berjenis Wave dan mempunyai audio format berjenis PCM (Pulse Code Modulation) dan hanya mendukung jumlah kanal maksimum 2
buah kanal (mono dan stereo). Untuk jenis Wave dengan Multi Channel tidak dapat dilakukan proses kompresi.
File Wave 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.
Seperti halnya dengan struktur file yang lain, file Wave juga mempunyai struktur tersendiri. Struktur file Wave mengikuti standar RIFF dengan pengelompokkan informasi file atas chunk-chunk. Secara umum bagian dari file Wave dibagi atas bagian header dan bagian data. Bagian data menyimpan data Wave yang dapat di-playback kembali. Sedangkan bagian header berisi informasi mengenai
jenis file Wave, audio format, sample rate, byte rate, jumlah kanal, block align, bits per sample, dan lain-lain.
Berikut ini merupakan diagram alir dari program kompresi dan dekompresi file
Wave. Diagram pertama memperlihatkan proses pembacaan file untuk mendapatkan informasi file Wave. Diagram kedua berupa diagram untuk proses kompresi dan dekompresi.
End
Begin
Load File
Wave
Get File Wave
Header
RIFF And
WAVE ?
Add To List
Yes
No
Langkah pertama sebelum file Wave yang dimasukkan ke dalam list, maka terlebih dahulu file Wave di-load dan dibuka. Setelah itu lakukan pembacaan pada header file Wave. Selanjutnya pengecekan apakah merupakan string
“RIFF”, berikutnya adalah pengecekan apakah merupakan string “WAVE”. Jika keduanya benar maka file tersebut merupakan file Wave dan langsung ditambahkan di bagian list, jika tidak lakukan loading file berikutnya.
Begin
Checked ?
Get File Wave Audio Format
Audio Format = 1 (PCM) ? Yes
Yes Get File Wave
Chunk Data Audio Format = 88 ? No Yes Compress Chunk Data Wave Decompress Chunk Data Wave
Set Audio Format = 88 Calculate ChunkSize and SubChunk2Size
Set Audio Format = 1 Calculate ChunkSize and SubChunk2Size
Write To Output File Save File Wave
Information
End Last File in
List ? Process Next File
Yes No
No
No
Sebelum melakukan proses
kompresi file Wave maka pertama sekali adalah mengecek apakah file yang diproses tersebut ditandai pada bagian list. Jika tidak ada satu pun file yang ditandai maka proses kompresi tidak dilakukan. Sebaliknya jika terdapat satu atau beberapa file yang ditandai maka proses
dilakukan pada file pertama yang ditandai. File dibaca untuk mengambil nilai Audio Format, seluruh header file dan chunk data yang merupakan data audio. Jika bernilai 1 berarti file belum dikompresi maka dapat dilakukan proses kompresi. Kompresi dilakukan hanya pada bagian chunk data dengan algoritma Huffman. Hasil kompresi
berupa data yang dikompresi berikut pohon Huffman disimpan sekaligus akan ditulis ke file output. Setelah proses kompresi selesai informasi file yang diproses ditulis kembali ke file output berikut dengan pohon Huffman dan data hasil kompresi. Setelah itu lakukan perhitungan kembali nilai chunk size yaitu ukuran file output dikurangi dengan 8 byte dan perhitungan subchunk2 size yaitu ukuran data hasil kompresi berikut dengan pohon Huffman dalam satuan byte.
Untuk nilai audio format selain 1 dan 88 tidak akan diproses oleh program dan akan dilewatkan. Selanjutnya bila file tersebut selesai diproses maka akan dilanjutkan ke file berikutnya yang ditandai hingga file terakhir pada list.
Program dirancang mampu
memainkan file Wave. Fungsi untuk memainkan file Wave diproses dengan menggunakan fungsi API (Application Programming Interface) Multimedia Windows. Untuk memainkan file Wave terlebih dahulu file tersebut di-load dan dilakukan pengecekan terhadap nilai audio format. Bila bernilai 1 maka file akan langsung dimainkan, bila bernilai 88 maka program akan melakukan dekompresi ke memori sistem terlebih dahulu file tersebut baru kemudian dimainkan.
Program akan terus memonitor status dari file Wave yang dimainkan, bila
telah mencapai akhir file berarti proses playing akan selesai dan akan dilanjutkan memainkan file selanjutnya dari list hingga file terakhir dalam list.
Bila pada saat file Wave sedang dimainkan user menekan tombol “Pause” maka file tersebut akan dihentikan sejenak dan posisi playing diset ke posisi sekarang. Bila user menekan kembali tombol “Play” maka file akan dimainkan pada posisi terakhir sewaktu file di-pause. Sedangkan bila pada saat file dimainkan user menekan tombol “Stop” maka program akan menghentikan file Wave yang dimainkan.
IV. PEMBAHASAN
Program ini tidak memerlukan cara instalasi yang khusus, dengan alasan bahwa semua file yang dibutuhkan oleh aplikasi ini dapat dikompilasi menjadi satu file executeable. Jadi untuk instalasi program ini cukup dengan
meng-copyfileexecuteable-nya (Wave
Compressor.EXE) ke dalam lokasi folder yang dipilih pada harddisk. Jika program tidak dapat dijalankan lakukanlah instalasi dengan menjalankan file SETUP.EXE.
Untuk menjalankan program ini dapat dilakukan dengan mengklik pada fileWave Compressor.EXE. Setelah program di-load maka akan terlihat bentuk tampilan seperti gambar di bawah ini.
Langkah pertama yang dilakukan
untuk mengkompresi atau
mengdekompresi sebuah atau beberapa fileWave adalah me-load fileWave tersebut terlebih dahulu ke dalam list. Ini dapat dilakukan dengan mengklik pada tombol “Add File” untuk memilih sebuah file
tunggal dengan memunculkan sebuah kotak dialog untuk memilih satu buah fileWave. Sedangkan untuk memilih semua fileWave yang terdapat pada folder tertentu dapat dengan mengklik pada “Add Folder”.
Sebelum ditempatkan ke dalam list semua fileWave tersebut akan dicek dahulu apakah memang file tersebut merupakan jenis Wave. Pengecekan tidak dilakukan dengan mengecek ekstensi file saja tetapi dengan mengecek header dari fileWave tersebut. Jika header dari file tersebut bertanda “RIFF” dan “WAVE” maka file tersebut adalah fileWave. Jika ada file yang tidak mempunyai header seperti di atas maka file tersebut tidak akan ditambahkan ke list dan dimunculkan sebuah pesan kesalahan.
Selanjutnya adalah mengecek informasi dari tiap fileWave seperti tanggal pembuatan file, ukuran file asli, attribut file, audio format, jumlah kanal (number of channels), block align, sampling rate, byte
rate, bits per sample, dan durasi fileWave. Informasi tersebut secara otomatis akan ditampilkan ke dalam list untuk tiap-tiap file. Informasi-informasi tersebut berguna nantinya dalam proses kompresi dan dekompresi fileWave.
Setelah semua proses ini maka file akan didaftar seperti terlihat pada gambar di bawah ini. File dalam list ini akan diurutkan secara urutan menaik (ascending) sesuai dengan nama file. Jika user menginginkan pengurutan dengan urutan menurun (descending) maka dapat dilakukan dengan mengklik pada bagian column header “File Name”. Hal yang sama juga dapat dilakukan pada column header yang lain.
Sebelum memproses fileWave untuk dikompresi atau didekompresi maka file yang akan diproses harus dipilih dahulu dengan memberikan tanda cek pada file tersebut. Untuk memilih semua file sekaligus dapat dengan menekan tombol “Select All” sedangkan untuk meniadakan semua pilihan pada file dapat dengan menekan tombol “Deselect All”. Untuk menghilangkan file dari list maka file yang telah diberi tanda cek dapat dihapus dari list dengan menekan tombol “Remove”. Penekanan pada tombol “Remove All” akan menghapus semua file dari list.
Selanjutnya adalah memilih path output sebagai path keluar file yang diproses. Bila user menggunakan path yang sama dengan path fileWave sumber maka file hasil akan menimpa file sumber tanpa memberikan konfirmasi kepada user terlebih dahulu. Untuk lebih amannya sebaliknya path output dibuat berlainan dengan path file sumber. Untuk memilih path output dapat dengan menekan
tombol bergambar maka akan
Setelah itu user dapat menekan tombol “Compress” untuk melakukan proses kompresi pada fileWave. Semua file yang ditandai pada list akan diproses satu persatu. Setelah file selesai diproses maka status file berubah menjadi “Proceed” menandaikan file telah berhasil diproses. Jika file yang diproses ternyata telah pernah dikompresi maka program akan melewatkan (bypass) file tersebut. Semua ketentuan dalam mendekompresi fileWave
juga berlaku sepertinya pada proses kompresi. File yang tidak terkompresi akan dilaporkan melalui sebuah pesan kesalahan dan file tersebut akan dilewatkan. Untuk melalukan prose dekompresi fileWave
dapat dengan menekan tombol
“Uncompress”. Setelah proses selesai maka akan dimunculkan sebuah pesan bahwa proses telah selesai dilakukan, seperti terlihat pada gambar berikut ini .
Setelah ditekan tombol OK maka akan dimunculkan sebuah form yang memuat frekuensi karakter yang terdapat
pada data file Wave seperti terlihat pada gambar berikut ini.
File Wave yang ada di list baik yang terkompresi atau tidak dapat dimainkan secara langsung. Untuk melalukan ini user dapat mengaksesnya melalui tombol audio seperti “Play” untuk memainkan fileWave.
Tombol “Pause” untuk menghentikan fileWave yang sedang dimainkan sejenak, dan terakhir tombol “Stop” untuk menghentikan fileWave yang sedang dimainkan.
V. KESIMPULAN
1. Algoritma huffman bisa diartikan sebagai sebuah teknik kompresi dokumen yang menggunakan jumlah kemunculan relatif simbol-simbol karakter untuk menghasilkan presentasi jumlah biner dengan jumlah tertentu untuk tiap karakter;
2. Reduksi ukuran file yang diperoleh dengan algoritma Huffman ini berkisar dari range 20% hingga 40%. Jadi dapat dikatakan dengan rasio kompresi ini algoritma Huffman sudah dikatakan baik dalam hal mengkompresi file khususnya fileWave;
3. Tingkat kompresi dipengaruhi oleh banyaknya nada yang sama dalam file Wave;
4. Kecepatan proses tidak bergantung pada data yang diproses tetapi berbanding lurus dengan ukuran fileWave, artinya semakin besar ukuran fileWave yang diproses maka semakin lama waktu prosesnya;
5. File Wave yang telah dikompresi tersebut hanya dapat dimainkan dari program ini.
VI. DAFTAR PUSTAKA
Rosa, M. Salahudin, Struktur Data, Modula, Bandung, 2010;
Rosa, M. Salahudin, Algoritma Dan
Pemrograman, Modula, Bandung, 2010; Visual Basic 2010 Source Code, Wahana
Komputer 1010;
Basalamah, Affah, Teknologi Multimedia
MP3, PT. Elex Media Komputindo, Jakarta,
2001;
Hadi R, Pemrograman Windows API
dengan Microsoft Visual Basic, PT. Elex
Media Komputindo, Jakarta, 2001;
Halvorson M, Microsoft Visual Basic 6.0
Professional, Step by Step, PT. Elex Media
Komputindo, Jakarta, 2000;
Microsoft Developer Network (MSDN) Library Visual Studio 6.0, Microsoft
Corporation, 1998;
Shannon, C. E., A Mathematical Theory of
Communication, The Bell System Technical
Journal, Vol. 27;