Analisa Sistem Analisa Proses

BAB 3 ANALISIS DAN PERANCANGAN SISTEM Dalam bab ini akan membahas tentang analisis dan perancangan sistem analisis perbandingan algoritma Huffman dan Run Length Encoding pada kompresi file audio, membahas alur kerja algoritma Huffman dan Run Length Encoding begitu juga perancangan interface aplikasi.

3.1. Analisa Sistem

Analisa dilakukan untuk memberikan gambaran secara umum terhadap implementasi yang akan dibuat. Hasil analisa akan menjadi dasar untuk melakukan perancangan atau desain program sesuai dengan rancangan sistem. Yang menjadi tujuan penelitian ini adalah untuk mengkompresi dan juga mendekompresi file audio menggunakan Algoritma Huffman dan Run Length Encoding, dan bagaimana hasil perbandingan antara kedua algoritma tersebut. Dengan penelitian ini user bisa mengalami manfaatnya khususnya penggunaan file audio .mp3 dan .wav.

3.2. Analisa Proses

Dalam kompresi dan dekompresi file audio seperti dalam penelitian ini menggunakan algoritma Huffman dan Run Length Encoding. Untuk mengetahui bagaimana langkah- langkah kedua algoritma tersebut, berikut adalah penjelasannya. Universitas Sumatera Utara 3.2.1. Analisa Kompresi Huffman Kode Huffman adalah angka-angka biner yang akan digunakan untuk mengkodekan setiap karakter dalam file. Pohon Huffman Huffman Tree adalah karakter-karakter yang akan direpresentasikan dalam biner, dipisahkan ke dalam cabang pohon biner dan diberi frekuensinya. Cabang sebelah kiri diberi bit 0 dan bit kanan diberi angka 1 sebagai identitas Fardisa dan Budiono, 2011. Jadi, bit ini akan dibaca dari akar sampai ke daun sehingga terbentuk angka biner sebagai identitas setiap karakter. Adapun langkah-langkah untuk membentuk pohon Huffman adalah sebagai berikut. 1. Baca semua data untuk menentukan frekuensi kemunculan masing-masing simbol pada sampel file audio. 2. Urutkan simbol sampel audio berdasarkan frekuensi kemunculannya dari yang terkecil ke yang terbesar. 3. Gabung dua simpul bebas yang mempunyai frekuensi kemunculan paling kecil pada kumpulan simpul. Kemudian dibuat simpul pertama pada pohon Huffman dimana simpul tersebut mempunyai frekuensi yang merupakan hasil penjumlahan dari dua simpul penyusunnya. 4. Masukkan simpul pertama ke dalam kumpulan simpul dan urutkan kembali berdasarkan frekuensi kemunculannya, dari yang terkecil ke yang terbesar. 5. Ulangi langkah 2-4 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. 6. Beri label setiap sisi pada pohon biner dengan cara sisi kiri pohon diberi label 0 dan sisi kanan pohon diberi label 1. 7. Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar kedaun menyatakan kode Huffman untuk simbol yang bersesuaian. Berikut ini adalah contoh untuk memperjelas langkah-langkah membentuk pohon Huffman. Misalnya ada sampel audio seperti berikut. A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A2 A2 A2 Universitas Sumatera Utara C3 C3 C3 C3 C3 C3 D4 D4 D4 D4 D4 E5 E5 Dari data diatas berikut adalah langkah-langkah sampai terbentuk pohon Huffman. a. Menentukan frekuensi atau banyaknya sampel audio yang muncul, misalnya frekuensi dari setiap sampel audio seperti pada tabel 3.1 berikut. Tabel 3.1. Frekuensi sampel audio Sampel audio Frekuensi A1 10 A2 8 C3 6 D4 5 E5 2 b. Setelah frekuensi dari sampel audio diketahui maka urutkan data dengan frekuensi terkecil ke terbesar, dengan masing-masing sampel sebagai simpul seperti pada gambar 3.1 berikut. Gambar 3.1. Urutan sampel secara ascending c. Dari gambar 3.1 sudah menunjukan sampel secara berurutan sesuai dengan frekuensi terkecil ke terbesar. Maka langkah selanjutnya adalah penggabungan dua buah simpul yang mempunyai frekuensi terkecil, seperti pada gambar 3.2 berikut. Gambar 3.2. Penggabungan dua buah simpul Universitas Sumatera Utara d. Dari gambar 3.2 sudah menunjukan penggabungan dua buah simpul dengan frekuensi terkecil. Maka langkah selanjutnya adalah mengurutkan kembali seperti pada gambar 3.1 secara ascending lalu penggabungan dua buah simpul yang mempunyai frekuensi terkecil sedangkan gambar 3.2 tidak perlu diperbaharui lagi, maka seperti pada gambar 3.3 berikut. Gambar 3.3. Pemindahan dua buah simpul urutan sampel secara ascending e. Ulangi langkah-langkah sebelumnya sampai hanya ada satu tersisa pohon biner. Seperti pada gambar 3.4 berikut adalah penggabungan dua buah simpul terkecil. Gambar 3.4. Penggabungan dua buah simpul Karena ketiga simpul masih belum sesuai dengan frekunesi dari yang terkecil ke yang terbesar, maka dilakukan pemindahan sehingga kembali ascending, seperti pada gambar 3.5 berikut. Gambar 3.5. Pemindahan dua buah simpul urutan sampel secara ascending Universitas Sumatera Utara f. Langkah selanjutnya adalah menggabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil, kemudian diurutkan kembali seperti pada gambar 3.6 berikut. Gambar 3.6. Penggabungan dua buah simpul g. Langkah selanjutnya adalah menggabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil, sehingga hanya memiliki satu simpul seperti pada gambar 3.7 berikut. Gambar 3.7. Penggabungan dua buah simpul h. Maka langkah akhir pembentukan pohon Huffman adalah memberi bit 0 di sebelah kiri dan bit 1 di sebelah kanan setiap akar ke daun, seperti pada gambar 3.8 berikut. Universitas Sumatera Utara Gambar 3.8. Pemberian bit 0 dan bit 1 Setelah melihat hasil dari pohon Huffman, dapat membuat sebuah tabel yang berisi identitas dari tiap-tiap sampel audio berdasarkan biner. Dalam proses encoding ini, prosesnya adalah baca urutan biner tiap sampel sampai edge dari pohon yang berisi sampel yang dicari. Misalnya, sampel yang dicari adalah A1, maka akan dibaca urutan sampel dari akar sampai ke A1 dengan kode biner 10. Maka gantikan sampel audio sebelum di kompresi atau encoding menjadi kode biner seperti berikut. A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 10 10 10 10 10 10 10 10 10 10 A2 A2 A2 A2 A2 A2 A2 A2 111 111 111 111 111 111 111 111 C3 C3 C3 C3 C3 C3 110 110 110 110 110 110 D4 D4 D4 D4 D4 0101010101 E5 E5 0000 Universitas Sumatera Utara Demikian untuk seluruh sampel-sampel seterusnya, seperti pada tabel 3.2 berikut. Tabel 3.2. Hasil Kompresi Huffman Sampel audio Frekuensi Kode Huffman Dalam Binary A1 10 10 A2 8 111 C3 6 110 D4 5 01 E5 2 00 Total 31 byte 12 bit Sebelum dilakukan kompresi maka ukuran data file audio adalah 31 byte, diperoleh dari total frekuensi kemunculan sampel dikalikan dengan 1 byte. = + + + + + … + Dimana: T = Total Frekuensi f = Frekuensi setiap sampel Cara menghitung Total frekuensi adalah: = + + + + = 10 + 8 + 6 + 5 + 2 = 31 Sedangkan ukuran audio setelah dikompresi menggunakan algoritma Huffman adalah sebagai berikut. = ℎ + ℎ + ℎ + ℎ + ℎ + … + ℎ Dimana: H = Total Kode Huffman bit h = bit length bit f = Frekuensi setiap sampel Universitas Sumatera Utara Cara menghitung jumlah bit hasil kompresi algoritma Huffman. = ℎ + ℎ + ℎ + ℎ + ℎ + … + ℎ = 2 10 + 3 8 + 3 6 + 2 5 + 2 2 = 76 = 9.5 Jadi sampel file audio yang setelah dilakukan kompresi atau decoding adalah 31 byte menjadi 9.5 byte. 3.2.2. Analisa Dekompresi Huffman Decoding adalah kebalikan dari kompresi atau encoding, yaitu penyusunan kembali sampel audio yang telah dikompresi menjadi sampel semula. Sebelum melakukan dekompresi file, maka harus dibentuk kembali pohon Huffman berdasarkan informasi yang disimpan dengan file yang dikompresi. Proses dekompresi dapat dilakukan dengan dua cara, yang pertama adalah dengan pohon Huffman dan yang kedua menggunakan tabel kode Huffman. Seperti pada contoh kompresi Huffman atau encoding sebelumnya. Untuk melakukan dekompresi atau decoding dapat dilakukan dengan pohon Huffman sebagai berikut. 1. Proses pembacaan simpul dimulai dari akar pohon Huffman, dengan membaca sebuah bit. 2. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian. 3. Lakukan pengulangan langkah 1 dan 2 sampai cabang yang bersesuaian ketemu setiap bagian simpul mana sampel itu berada. 4. Lakukan pengulangan langkah 1 sampai seluruh sampel audio tersebut di dekompresi. Sebagai contoh akan men-decoding biner yang bernilai 110. Maka pohon Huffman-nya adalah seperti gambar 3.9 berikut. Universitas Sumatera Utara Gambar 3.9. Proses Decoding dengan pohon Huffman Pada gambar 3.9 dimulai dari akar sampai sampel yang ingin ditemukan adalah C3 dengan kode Huffman 110. Cara yang kedua adalah dengan menggunakan tabel kode Huffman, seperti pada tabel 3.2, dengan menggunakan tabel 3.2 kode biner sebagai masukan adalah sebagai berikut. 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 Saat membaca kode biner pertama adalah dari 1, karena bit yang dibaca adalah 1 maka akan dilakukan penelusuran terhadap pohon Huffman ke arah simpul sebelah kanan terlebih dahulu. Kemudian dilakukan penelusuran kembali jika 1 belum mewakili sampel maka akan dibaca bit berikutnya sehingga bit yang dibaca menjadi 10. Dan karena 10 mewakili simbol data yang bersesuaian dan berakhir pada daun maka dinyatakan bahwa 10 mewakili simbol A1. Universitas Sumatera Utara Setelah itu dibaca kembali bit berikutnya dan lakukan penelusuran kembali terhadap pohon Huffman sehingga didapat bit-bit yang mewakili sebuah simbol data yang bersesuaian sehingga semua sampel terdekompresi seperti sampel sebelum dikompresi. 3.2.3. Analisa Kompresi Run Length Encoding Kompresi dengan RLE adalah penjumlahkan pengulangan byte yang sama secara berturut dan jika ada byte yang tidak terjadi pengulangan maka byte tersebut tidak dikompresi. Seperti contoh pada algoritma kompresi Huffman, akan menggunakan contoh yang sama juga pada algoritma kompresi RLE, adapun langkah-langkah proses kompresi dengan algoritma Run Length Encoding sebagai berikut. 1. Pembacaan sampel audio 2. Kompresi data nilai jika ditemukan data nilai sampel yang sama secara berurutan lebih dari dua dengan cara: a. Berikan bit penanda pada data kompresi, b. Tambahkan deretan bit untuk menyatakan jumlah nilai data yang sama berurutan. c. Tambahkan deretan bit yang menyatakan sampel yang berulang. d. Konversikan semua data kompresi ke dalam hexa. 3. Simpan file audio Berikut adalah contoh untuk memperjelas langkah-langkah kompresi dengan algoritma Run Length Encoding, misalnya ada sampel audio seperti berikut. A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A2 A2 A2 C3 C3 C3 C3 C3 C3 D4 D4 D4 D4 D4 E5 E5 Dari sampel tersebut semua sampel mengalami pengulangan byte, seperti A1 sebanyak 10 kali, A2 sebanyak 8 kali, C3 sebanyak 6 kali, D4 sebanyak 5 kali, dan E5 Universitas Sumatera Utara sebanyak 2 kali. Jadi sampel tersebut setelah dikompresi menjadi A110A28C36D45E52. Dapat diperhatikan pada tabel 3.3 berikut. Tabel 3.3. Hasil Kompresi RLE Sampel Masuk Sampel Keluar Frekuensi Kode RLE hasil Kompresi A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 10 A110 A2 A2 A2 A2 A2 A2 A2 A2 A2 8 A28 C3 C3 C3 C3 C3 C3 C3 6 C36 D4 D4 D4 D4 D4 D4 5 D45 E5 E5 E5 2 E52 Total 31 byte 10 byte Seperti pada tabel 3.3 tersebut, sampel sebelum dikompresi adalah 31 byte kemudian setelah dilakukan kompresi menjadi 10 byte. 3.2.4. Analisa Deompresi Run Length Encoding Dekompresi atau decoding RLE adalah dengan menguraikan nilai sampel yang diikuti oleh nilai sebanyak nilai sampel tersebut. Berikut adalah langkah dalam proses dekompresi algoritma Run Length Encoding. 1. Buka file audio untuk membaca header-header dan sample audio. 2. Baca file audio untuk mendapatkan data sample. 3. Ambil nilai sample audio ke 1 sampai ke n. 4. Lihat data pada hasil kompresi satu persatu dari awal sampai akhir, jika ditemukan byte penanda , lakukan proses pengembalian. 5. Baca posisi penanda setelah byte penanda, konversikan ke bilangan desimal untuk menentukan jumlah karakter yang berurutan. 6. Lihat data berikutnya, kemudian lakukan penulisan karakter tersebut sebanyak bilangan yang telah diperoleh pada data sebelumnya point 5. 7. Ulangi langkah 4, 5 dan 6 sampai karakter terakhir. Berikut adalah contoh dekompresi RLE, misalnya seperti hasil dari kompresi RLE adalah A110A28C36D45E52, dimana nilai 10 menyatakan sampel A1 yang diulang, sehingga setelah menlakukan dekompresi menjadi A1A1A1A1A1A1A1 Universitas Sumatera Utara A1A1A1A28C36D45E52, demikian seterusnya sampai sampel audio menjadi seperti semula. Dapat diperhatikan pada tabel 3.4 berikut. Tabel 3.4. Hasil dekompresi RLE Kode RLE hasil Kompresi Sampel Masuk Frekuensi Kode RLE hasil Dekompresi A110 A1 10 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A28 A2 8 A2 A2 A2 A2 A2 A2 A2 A2 C36 C3 6 C3 C3 C3 C3 C3 C3 D45 D4 5 D4 D4 D4 D4 D4 E52 E5 2 E5 E5 10 byte 31 byte Seperti pada tabel 3.4 tersebut, sampel setelah dikompresi adalah 10 byte kemudian setelah dilakukan dekompresi menjadi 31 byte kembali seperti sampel semula.

3.3. Perancangan Sistem