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 hanya akan dibuat kompresi dan dekompresi khusus hanya pada 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.
            Bagian yang dikompresi dan didekompresi pada file Wave 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.
Gambar 3.17  Skema Struktur Wave Yang Diproses
            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. Diagram ketiga mengenai cara memainkan file Wave dalam program.
Gambar 3.18  Diagram Alir Pembacaan File Wave
            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 untuk  44 byte pertama. Selanjutnya lakukan pengambilan nilai 4 byte pertama lakukan pengecekan apakah merupakan string “RIFF”, berikutnya adalah pengambilan dari byte ke-8 hingga byte ke-12 dan lakukan 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.
Gambar 3.19  Diagram Alir Proses Kompresi Dan Dekompresi File Wave
            Sebelum melakukan proses kompresi atau dekompresi 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 atau dekompresi 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 proses dekompresi kembali seperti halnya dengan proses kompresi. Chunk data file Wave dan informasi header file diambil dan dicek nilai audio format apakah bernilai 88, jika ya maka dilakukan proses dekompresi yang merupakan kebalikan dari proses kompresi. Prosesnya dengan membaca dan membentuk pohon Huffman kembali dimulai dari byte ke-45 file Wave, setelah itu seluruh data hasil kompresi dikembalikan ke nilai semula berdasarkan pohon Huffman tersebut. Selanjutnya informasi pada file Wave ditulis pada file output dan hasil dekompresi ditulis kembali juga dan dilakukan kembali perhitungan nilai chunk size dan nilai subchunk2 size.
            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.
            Diagram untuk seluruh rangkaian proses memainkan file Wave dapat dilihat pada gambar berikut ini.
Gambar 3.20  Diagram Alir Memainkan File Wave

Popular posts from this blog

Kode Singkatan Komponen Listrik Dan Elektronik

Cara Mengatasi E31 Canon MP258

Cara Mengukur Trimpot