Implementasi Algoritma Shannon-Fano Pada Kompresi Audio
PADA KOMPRESI AUDIO
SKRIPSI
MUTIARA NOVELIA RAJAGUKGUK
081402068
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2014
(2)
PADA KOMPRESI AUDIO
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi
MUTIARA NOVELIA RAJAGUKGUK 081402068
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2014
(3)
PERSETUJUAN
Judul : IMPLEMENTASI ALGORITMA
SHANNON-FANO PADA KOMPRESI AUDIO
Kategori : SKRIPSI
Nama : MUTIARA NOVELIA RAJAGUKGUK
Nomor Induk Mahasiswa : 081402068
Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI Departemen : TEKNOLOGI INFORMASI
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI (FASILKOM-TI) UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan, 2014
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dedy Arisandi,ST.,M.Kom M.Fadly Syahputra,B.Sc.,M.Sc.IT NIP 19610817 198701 1 001 NIP 19830226 201012 2 003
Diketahui/Disetujui oleh
Program Studi S1 Teknologi Informasi Ketua,
Prof. Dr. Opim Salim Sitompul, M.Sc. NIP196108171987011001
(4)
PERNYATAAN
IMPLEMENTASI ALGORITMA SHANNON-FANO PADA KOMPRESI AUDIO
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, April 2014
Mutiara Novelia Rajagukguk 081402068
(5)
UCAPAN TERIMA KASIH
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Teknologi Informasi, Program Studi S1 Teknologi Informasi Departemen Teknologi Informasi Universitas Sumatera Utara.
Ucapan terima kasih penulis sampaikan kepada kedua dosen pembimbing yaitu M.Fadly Syahputra,B.Sc.,M.Sc.IT dan Dedy Arisandi,ST.,M.Kom yang telah bersedia meluangkan waktunya untuk memberikan panduan dan masukan kepada penulis dalam menyelesaikan skripsi ini. Ucapan terima kasih juga ditujukan kepada Bapak Baihaqi Siregar, S.Si.M.T dan Bapak Drs. Sawaluddin, M.IT yang telah bersedia menjadi dosen pembanding. Ucapan terima kasih juga penulis tujukan kepada Ketua dan Sekretaris Program Studi Teknologi Informasi, Prof. Dr. Opim Salim Sitompul, M.Sc. dan Drs. Sawaluddin, M.IT, Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, semua dosen serta pegawai di Program Studi S1 Teknologi Informasi.
Skripsi ini penulis persembahkan kepada kedua orang tua penulis Ayah M. Rajagukguk dan Ibu K. L.Tobing dan juga kepada saudara saudara penulis yang senantiasa memberikan dukungan, doa dan semangat kepada penulis. Kepada Desfi Rahmadani, Ester Hannita, Fanny Devina, Ika Hasnita, Lia Hartati, Umi Hani, Fadhly Sani, Siska dan seluruh angkatan 08 serta teman-teman mahasiswa Teknologi Informasi penulis ucapkan banyak terima kasih atas doa dan dukungan yang telah diberikan.
Penulis menyadari bahwa masih terdapat banyak kekurangan dalam penyusunan skripsi ini. Karena itu penulis mengaharapkan saran-saran yang bersifat membangun dari semua pihak untuk kesempurnaan skripsi ini. Akhir kata penulis mengharapkan semoga skripsi ini dapat memberikan manfaat bagi semua pihak.
(6)
ABSTRAK
Besarnya ukuran file audio membuat pengiriman data menjadi lama dan dapat menyebabkan pemborosan media penyimpanan. Oleh karena itu dilakukan kompresi untuk memadatkan isi file dengan cara menghilangkan berbagai redundansi dan menemukan sumber redundansi disetiap data sehingga ukuran audio menjadi lebih kecil. Salah satu metode kompresi adalah metode lossless yaitu metode kompresi dimana pada audio hasil kompresi dapat dikembalikan ke data semula tanpa menghilangkan informasi pada data. Penelitian ini menggunakan algoritma Shannon-Fano pada audio berjenis mp3 untuk melakukan kompresi dan memainkan kembali audio hasil kompresi. Algoritma Shannon-Fano merupakan algoritma metode lossless yang didasarkan pada variable-length code yang berarti beberapa karakter pada data yang dikodekan direpresentasikan dengan kode yang lebih pendek. Perbandingan antara ukuran audio hasil kompresi dan ukuran audio asli dihitung dengan menggunakan rumus rasio kompresi. Dari hasil pengujian proses kompresi didapat bahwa rasio kompresi untuk 20 file audio mempunyai range antara 25% untuk nilai terendah dan tertinggi 48.86% dengan hasil rata rata rasio kompresi sebesar 41.49% serta menunjukkan bahwa audio hasil kompresi dapat dimainkan kembali tanpa harus melakukan proses dekompresi.
Kata kunci: kompresi, dekompresi, redundansi, metode lossless, Shannon-Fano, variable-length code, mp3.
(7)
IMPLEMENTATION OF SHANNON-FANO ALGORITHM FOR AUDIO COMPRESSION
ABSTRACT
The large size of audio increasing time to transferring and also takes space for storage media. To solve this problem is used compression to compresss data for reducing size of audio which eliminating the redundancy in data and find the source of redundancy in each type of data. One of compression method is lossless method which reconstruct the original data from the compressed file without any loss of data. In this study Shannon-Fano algorithm is used for compressing mp3 audio and playing audio compress. Shannon-Fano algorithm is lossless method based on variable-length code where some characters in data encoding are represented by short code. Comparison of audio compress and original audio measured by compression ratio. The result of testing for 20 audio total show average compression ratio amounts 41.49%, range between 25% for low percentage and 48.86% for high percentage, it also show the audio compress can be playback without decompressing.
Keyword: kompresi, dekompresi, redundansi, metode lossless, Shannon-Fano, variable-length code, mp3.
(8)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Ucapan Terima Kasih iv
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel ix
Daftar Gambar x
Bab 1 Pendahuluan 1
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metode Penelitian 4
1.7 Sistematika Penulisan 5
Bab 2 Landasan Teori 7
2.1 Kompresi 7
2.1.1 Metode kompresi 8
2.1.2 Compression Ratio 9
2.1.3 Redundansi 9
2.2 Pengertian Audio 9
2.2.1 Representasi Audio Digital 10
2.2.2 Kelebihan Audio Digital 11
2.2.3 Sampling Rate 12
2.2.4 Bit per Sample 12
2.2.5 Bit Rate 13
2.2.6 MP3 (MPEG-1 Layer 3) 13
2.3 Penelitian Sebelumnya 17
2.4 Algoritma Shannon-Fano 19
2.5 Binary Tree 20
Bab 3 Analisis Dan Perancangan 28
3.1 Analisis Algoritma 28
3.1.1 Deskripsi Kompresi Algoritma Shannon-Fano 30 3.1.2 Deskripsi Dekompresi Algoritma Shannon-Fano 31
3.2 Perancangan Aplikasi 31
(9)
3.2.2 Activity Diagram 34
3.2.3 Sequence Diagram 37
3.3 Perancangan Antarmuka 39
3.3.1 Menu Utama 39
3.3.2 Sub Menu Kompresi 40
3.3.3 Sub Menu Dekompresi 40
3.3.4 Sub Menu Play 41
3.3.5 Sub Menu Bantuan 42
Bab 4 Implementasi Dan Perancangan 44
4.1 Implementasi Perancangan Antarmuka Aplikasi 44
4.1.1 Tampilan Sub Menu Kompresi 45
4.1.2 Tampilan Sub Menu Dekompresi 49
4.1.3 Tampilan Sub Menu Play 52
4.1.4 Tampilan Sub Menu Bantuan 54
4.2 Pengujian Sistem 54
4.2.1 Skenario Pengujian 55
4.2.2 Analisis Data Hasil Pengujian 56
4.2.2.1 Analisis Kompresi Audio 56
4.2.2.2 Analisis Dekompresi Audio 60
Bab 5 Kesimpulan Dan Saran 63
5.1 Kesimpulan 63
5.2 Saran 64
Daftar Pustaka 65
(10)
DAFTAR TABEL
Halaman Tabel 2.1 Tabel Frekuensi Sampling dan Kualitas Suara yang Dihasilkan 12 Tabel 2.2 Tabel Penyimpanan Berbagai Konfigurasi Audio Digital 13
Tabel 2.3 Tabel Keterangan Header Mp3 15
Tabel 2.4 Tabel Distribusi Frekuensi 22
Tabel 2.5 Tabel Hasil Kode Shannon-Fano 25
Tabel 2.6 Tabel Pengubahan Heksadesimal ke Biner 26
Tabel 2.7 Tabel Kode Shannon-Fano 27
Tabel 3.1 Tabel Dokumentasi Naratif Usecase Pilih Kompresi 33 Tabel 3.2 Tabel Dokumentasi Naratif Usecase Pilih Dekompresi 33 Tabel 3.3 Tabel Dokumentasi Naratif Usecase Pilih Play 34
Tabel 4.1 Tabel File Audio Yang Diuji 55
Tabel 4.2 Tabel Hasil Pengujian Proses Kompresi 57 Tabel 4.3 Hasil Pengujian Proses Dekompresi 60
(11)
DAFTAR GAMBAR
Halaman Gambar 2.1 Proses Kompresi Dan Dekompresi (Pu, 2006) 8 Gambar 2.2 Alur Gelombang Suara (Mukhlis, 2012) 10
Gambar 2.3 Proses Digitasi (Mukhlis, 2012) 11
Gambar 2.4 Struktur File Mp3 14
Gambar 2.5 Header Mp3 (Raissi, 2002) 14
Gambar 2.6 Contoh Binary Tree 21
Gambar 2.7 Contoh Completely Binary Tree 21
Gambar 2.8 Contoh Perfect Binary Tree 22
Gambar 2.9 Contoh Pengurutan Frekuensi Secara Descending 23 Gambar 2.10 Contoh Pembagian Menjadi Dua Node 23 Gambar 2.11 Contoh Pembagian Menjadi Dua Node Kedua 23 Gambar 2.12 Contoh Pembagian Menjadi Dua Node Ketiga 24 Gambar 2.13 Contoh Pembagian Menjadi Dua Node Keempat 24 Gambar 2.14 Contoh Pembagian Menjadi Dua Node Kelima 24 Gambar 2.15 Contoh Pembagian Menjadi Dua Node Keenam 25 Gambar 3.1 Proses Kompresi Algoritma Shannon-Fano 29 Gambar 3.2 Usecase Diagram Aplikasi Kompresi Audio 32
Gambar 3.3 Activity Diagram Menu Utama 35
Gambar 3.4 Activity Diagram Submenu Kompresi 35 Gambar 3.5 Activity Diagram Submenu Dekompresi 36
Gambar 3.6 Activity Diagram Submenu Play 36
Gambar 3.7 Sequence Diagram Kompresi Audio 37
Gambar 3.8 Sequence Diagram Dekompresi Audio 38
Gambar 3.9 Sequence Diagram Play Audio 39
Gambar 3.10 Rancangan Antarmuka Menu Utama 39
Gambar 3.11 Rancangan Antarmuka Sub Menu Kompresi 40
Gambar 3.12 Rancangan Antarmuka Sub Menu Dekompresi 41
Gambar 3.13 Rancangan Antarmuka Sub Menu Play 42
Gambar 3.14 Rancangan Antarmuka Sub Menu Bantuan 43
Gambar 4.1 Tampilan Antarmuka Menu Utama Aplikasi 44
Gambar 4.2 Tampilan Antarmuka Sub Menu Aplikasi 45
Gambar 4.3 Tampilan Sub Menu Kompresi 46
Gambar 4.4 Tampilan Buka File Sub Menu Kompresi 46
Gambar 4.5 Tampilan Hasil Buka File Sub Menu Kompresi 47
Gambar 4.6 Tampilan Proses Kompresi 48
Gambar 4.7 Tampilan Hasil Proses Kompresi 48
Gambar 4.8 Tampilan Sub Menu Dekompresi 49
Gambar 4.9 Tampilan Buka File Sub Menu Dekompresi 50
Gambar 4.10 Tampilan Hasil Buka File Sub Menu Dekompresi 50
Gambar 4.11 Tampilan Proses Dekompresi 51
(12)
Gambar 4.13 Tampilan Sub Menu Play 52
Gambar 4.14 Tampilan Buka File Sub Menu Play 53
Gambar 4.15 Tampilan Memainkan Audio 53
Gambar 4.16 Sub Menu Bantuan 54
(13)
ABSTRAK
Besarnya ukuran file audio membuat pengiriman data menjadi lama dan dapat menyebabkan pemborosan media penyimpanan. Oleh karena itu dilakukan kompresi untuk memadatkan isi file dengan cara menghilangkan berbagai redundansi dan menemukan sumber redundansi disetiap data sehingga ukuran audio menjadi lebih kecil. Salah satu metode kompresi adalah metode lossless yaitu metode kompresi dimana pada audio hasil kompresi dapat dikembalikan ke data semula tanpa menghilangkan informasi pada data. Penelitian ini menggunakan algoritma Shannon-Fano pada audio berjenis mp3 untuk melakukan kompresi dan memainkan kembali audio hasil kompresi. Algoritma Shannon-Fano merupakan algoritma metode lossless yang didasarkan pada variable-length code yang berarti beberapa karakter pada data yang dikodekan direpresentasikan dengan kode yang lebih pendek. Perbandingan antara ukuran audio hasil kompresi dan ukuran audio asli dihitung dengan menggunakan rumus rasio kompresi. Dari hasil pengujian proses kompresi didapat bahwa rasio kompresi untuk 20 file audio mempunyai range antara 25% untuk nilai terendah dan tertinggi 48.86% dengan hasil rata rata rasio kompresi sebesar 41.49% serta menunjukkan bahwa audio hasil kompresi dapat dimainkan kembali tanpa harus melakukan proses dekompresi.
Kata kunci: kompresi, dekompresi, redundansi, metode lossless, Shannon-Fano, variable-length code, mp3.
(14)
IMPLEMENTATION OF SHANNON-FANO ALGORITHM FOR AUDIO COMPRESSION
ABSTRACT
The large size of audio increasing time to transferring and also takes space for storage media. To solve this problem is used compression to compresss data for reducing size of audio which eliminating the redundancy in data and find the source of redundancy in each type of data. One of compression method is lossless method which reconstruct the original data from the compressed file without any loss of data. In this study Shannon-Fano algorithm is used for compressing mp3 audio and playing audio compress. Shannon-Fano algorithm is lossless method based on variable-length code where some characters in data encoding are represented by short code. Comparison of audio compress and original audio measured by compression ratio. The result of testing for 20 audio total show average compression ratio amounts 41.49%, range between 25% for low percentage and 48.86% for high percentage, it also show the audio compress can be playback without decompressing.
Keyword: kompresi, dekompresi, redundansi, metode lossless, Shannon-Fano, variable-length code, mp3.
(15)
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Pada saat ini perkembangan dunia teknologi semakin pesat seiring dengan kebutuhan masyarakat dalam memperoleh informasi secara cepat. Berbagai macam fasilitas teknologi terus dikembangkan agar masyarakat dapat melakukan pertukaran informasi dalam bentuk teks, audio dan gambar dengan baik. Namun terkadang data seperti audio yang dihasilkan sangat besar sehingga pengiriman data tersebut relatif lama dan membutuhkan memori yang besar.
Misalkan, Jika direkam suatu lagu sekualitas CD audio menggunakan sampling rate 44100 Hz, 16 bit per sample, 2 kanal (stereo), maka total media yang diperlukan untuk menyimpan data audio ini per detik adalah 176.400 byte sehingga untuk durasi 1 menit diperlukan 10,584 MB. Jika rata-rata durasi satu lagu selama 4 menit, maka dibutuhkan tempat lebih dari 40 MB untuk menyimpan data audio lagu tersebut. Hal ini bisa menyebabkan pemborosan media penyimpanan seperti harddisk meskipun saat ini telah tersedia kapasitas hard disk yang besar. Masalah tersebut dapat diatasi bila audio tersebut dikompresi untuk mengurangi ukurannya.
Kompresi merupakan proses untuk menghilangkan berbagai redundansi dengan menemukan sumber redundansi disetiap data (Salomon, 2008). Kompresi audio dilakukan dengan cara memadatkan isi file sehingga ukurannya menjadi lebih kecil dengan tetap menjaga kualitas representasi dari file audio tersebut.
Kompresi audio dibagi mejadi dua metode yaitu lossless dan lossy. Metode lossless yaitu metode kompresi dimana audio hasil kompresi dapat dikembalikan ke data semula tanpa menghilangkan informasi pada data. Algoritma metode lossless yaitu Run-Length-Encoding, Shannon-Fano, Huffman Encoding, Arithmatic Coding
(16)
dan Lempel Ziv Welch. Berbeda dengan metode lossy dimana hasil kompresi menjadi lebih kecil ukurannya dibanding metode lossless tetapi menghilangkan beberapa informasi. Algoritma yang digunakan untuk metode ini adalah Transform Coding, Vector Quantisation, Fractal Coding, Discrete Cosine Transform dan Discrete Wavelet Transfrom.
Beberapa algoritma yang digunakan sebelumnya dalam kompresi audio yaitu Huffman (Sunarto, 2010), Arithmatic Coding (Siregar, 2011) dan algoritma Run Length Encoding (Rahandi, 2011). Dari ketiga penelitian diatas, hasil kompresi audio tidak bisa dimainkan kecuali jika melakukan proses dekompresi.
Algoritma Shannon-Fano merupakan metode lossless dimana hasil kompresinya tidak menghilangkan informasi pada file. Algoritma ini telah digunakan sebelumnya pada kompresi citra (Adriani, 2009) dan kompresi teks (Kodituwakku, 2006), (Saputri, 2011) dimana dari penelitian menunjukkan hasil rasio kompresi pada kompresi citra di atas 25% dan untuk kompresi teks diatas 45%.
Oleh karena itu, penulis menggunakan algoritma Shannon-Fano untuk mengetahui bagaimana kinerja kompresi jika digunakan pada file audio serta ingin membuat aplikasi yang mampu memainkan kembali file audio hasil kompresi tersebut, dimana file audio yang telah dikompres dapat dimainkankan kembali tanpa harus melakukan proses dekompresi.
1.2 Rumusan Masalah
Berbagai macam fasilitas teknologi terus dikembangkan agar masyarakat dapat melakukan pertukaran informasi dalam bentuk teks, gambar dan audio dengan baik. Namun terkadang data seperti audio yang dihasilkan berukuran sangat besar. Oleh karena itu muncullah berbagai kendala diantaranya adalah penggunaan memori yang besar. Permasalahan yang akan diuraikan dalam penelitian ini adalah bagaimana mengkompresi ukuran file audio untuk tujuan efisiensi media penyimpanan.
(17)
1.3 Batasan Masalah
Dalam penelitian ini dilakukan beberapa pembatasan masalah agar penelitian ini lebih terarah dan permasalahan pada penelitian ini tidak terlalu lebar yaitu:
1. Jenis file audio yang akan dikompresi adalah file berformat Mp3.
2. Analisis yang dilakukan berupa ukuran hasil audio saat dikompresi dan dekompresi serta penghitungan rasio kompresi, sedangkan lama proses kompresi dekompresi tidak diutamakan .
3. Algoritma yang digunakan dalam mengkompresi file audio tersebut yaitu algoritma Shannon-Fano
1.4 Tujuan Penelitian
Tujuan yang dilakukan dalam penelitian ini adalah sebagai berikut:
1. Membuat kompresi audio untuk mengurangi ukuran audio dengan menggunakan algoritma Shannon-Fano.
2. Menganalisa kinerja algoritma Shannon-Fano ditinjau dari ukuran file hasil kompresi dan dekompresi serta rasio kompresi dan mampu memainkan kembali file audio hasil kompresi tersebut tanpa melakukan proses dekompresi terlebih dahulu.
1.5 Manfaat Penelitian
Manfaat yang diharapkan dari penelitian ini adalah:
1. Mengetahui bagaimana pengimplementasian algoritma Shannon-Fano ke dalam bahasa pemograman komputer untuk kompresi audio berjenis mp3.
(18)
2. Mengetahui kemampuan algoritma Shannon-Fano dalam pengkompresian file audio berdasarkan hasil audio terkompresi untuk mengurangi pemakaian memori.
1.6 Metode Penelitian
Beberapa metodologi yang digunakan dalam pelaksanaan penelitian ini adalah sebagai berikut :
1. Studi Literatur
Pada tahap ini akan dilakukan studi kepustakaan yaitu proses pengumpulan bahan-bahan referensi baik dari buku, artikel, paper, jurnal, makalah, maupun situs internet mengenai pengolahan audio, kompresi audio, algoritma Shannon-Fano dan Microsoft Visual Basic.
2. Analisa
Pada tahap ini dilakukan analisa terhadap hasil studi literatur untuk mendapatkan pemahaman mengenai algoritma Shannon-Fano untuk proses kompresi dan dekompresi audio.
3. Perancangan
Pada tahap ini dilakukan perancangan aplikasi seperti pembuatan flowchart, pembuatan UML (Unified Modelling Language) meliputi usecase diagram, activity diagram serta sequence diagram dan rancangan untuk desain antarmuka aplikasi.
4. Implementasi
Pada tahap ini dilakukan proses implementasi pengkodean program dalam aplikasi komputer menggunakan bahasa pemrograman yang telah dipilih sesuai dengan analisis dan perancangan yang sudah dilakukan.
(19)
Pada tahap ini dilakukan proses pengujian dan percobaan terhadap aplikasi yang dibuat untuk mengetahui jika aplikasi sudah berjalan berdasarkan analisis dan rancangan yang dibuat atau sudah sesuai dengan yang diharapkan atau tidak.
6. Penyusunan Laporan
Pada tahap ini dilakukan dokumentasi penyusunan laporan atas hasil pengerjaan algoritma Shannon-Fano pada kompresi audio yang diperoleh.
1.7 Sistematika Penulisan
Adapun sistematika penulisan dalam skripsi ini terdiri dari beberapa bagian utama sebagai berikut:
BAB 1: PENDAHULUAN
Bab ini akan menjelaskan tentang latar belakang pemilihan judul, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.
BAB 2: LANDASAN TEORI
Pada tahap ini akan dilakukan studi tentang segala sesuatu yang berkaitan dengan kompresi, audio serta algoritma yang digunakan baik yang berasal dari buku, artikel, jurnal, maupun dari internet.
BAB 3: ANALISA DAN PERANCANGAN
Pada tahap ini akan dilakukan analisa perancangan aplikasi mengenai skripsi ini, seperti menggambar flowchart dan pembuatan UML yang meliputi usecase diagram, activity diagram serta sequence diagram dan perancangan desain antarmuka (interface).
BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada tahap ini dilakukan proses implementasi pengkodean program dalam aplikasi komputer menggunakan bahasa pemrograman yang telah dipilih sesuai dengan analisis dan perancangan yang sudah dilakukan
(20)
BAB 5: KESIMPULAN DAN SARAN
Pada bab ini memuat kesimpulan dari hasil keseluruhan uraian bab-bab sebelumnya dan saran-saran yang diajukan untuk pengembangan lebih lanjut tentang topik terkait pada skripsi.
(21)
BAB 2
LANDASAN TEORI
Bab ini membahas teori penunjang dan penelitian sebelumnya yang berhubungan dengan penerapan algoritma Shannon-Fano untuk kompresi file audio.
2.1 Kompresi
Data tidak hanya disajikan dalam bentuk teks ataupun citra, tetapi juga dapat berupa audio (bunyi, suara, musik) dan video. Keempat macam data tersebut sering disebut dengan multimedia. Pada umumnya representasi data digital membutuhkan memori yang besar, di sisi lain kebanyakan data mengandung duplikasi atau redundansi.
Duplikasi (redundansi) ini dapat berarti suatu data mengandung bagian yang sama sehingga setiap bagian yang sama ini tidak perlu dikodekan berulang kali. Kompresi dapat dikatakan sebagai proses untuk menghilangkan berbagai redundansi, karena itu langkah pertama yang dilakukan adalah menemukan sumber redundansi pada setiap data (Salomon, 2008). Penghilangan redundansi pada data menggunakan algoritma.
Kompresi data bertujuan untuk meminimalkan kebutuhan memori untuk merepresentasikan data digital. Prinsip umum yang digunakan pada proses kompresi adalah mengurangi duplikasi data sehingga memori untuk merepresentasikan menjadi lebih sedikit dari pada representasi data digital semula. Data digital yang telah dikompres dapat dikembalikan ke bentuk data digital semula atau disebut dengan proses dekompresi, dimana hal ini tergantung pada aplikasi yang mendukung kompresi tersebut. Pada beberapa kasus, proses dekompresi data lebih sulit dibandingkan proses kompresi (Pu, 2006).
(22)
Algoritma Kompresi
Algoritma Dekompresi Input
File Asli
Output File Terkompresi
Input File Terkompresi
Output File Asli
Gambar 2.1 Proses Kompresi dan Dekompresi (Pu, 2006)
2.1.1 Metode kompresi
Metode kompresi data dapat dikelompokkan dalam dua kelompok besar yaitu metode lossless dan lossy (Sayood, 2005) seperti berikut ini:
1. Metode lossless
Metode lossless merupakan metode kompresi dimana data hasil kompresi dapat dikembalikan ke data semula tanpa menghilangkan informasi pada data. Algoritma metode lossless yaitu Run-Length-Encoding, Shannon-Fano, Huffman Encoding, Arithmatic Coding dan Lempel Ziv Welch.
2. Metode lossy
Metode lossy merupakan data hasil kompresi menjadi lebih kecil ukurannya dibanding dengan metode lossless tetapi menyebabkan hilangnya beberapa informasi pada file hasil kompresi. Hal ini dikarenakan cara kerja metode lossy adalah dengan mengeliminasi beberapa data pada suatu file. Namun data yang dieliminasikan biasanya adalah data yang kurang diperhatikan atau di luar jangkauan manusia, sehingga kemungkinan besar pengeliminasian data tidak mempengaruhi manusia yang berinteraksi dengan file tersebut. Misalnya pada kompresi audio,pada file audio akan dieliminasi frekuensi yang tinggi dan rendah yang berada di luar jangkauan manusia. Algoritma untuk metode lossy yaitu Transform Coding, Vector Quantisation, Fractal Coding, Discrete Cosine Transform dan Discrete Wavelet Transfrom.
(23)
2.1.2 Compression Ratio
Compression Ratio atau rasio kompresi adalah rasio atau perbandingan antara ukuran data yang dikompresi dengan ukuran data asli. Misalkan rasio kompresi suatu data adalah 30%, maka 30% data semula telah berhasil dikompres. Secara matematis rasio kompresi dapat ditulis sebagai berikut (Salomon, 2008) :
Rasio Kompresi = % − (Hasil KompresiAudio Asli x %) .
Sedangkan untuk menghitung laju dari data yang dikompresi (rate of compression) dapat dihitung :
Laju Kompresi = Rasio Kompresi .
2.1.3 Redundansi
Redundansi atau duplikasi merupakan suatu keadaan dimana representasi suatu elemen data tidak bernilai signifikan dalam merepresentasikan keseluruhan data. Keadaan ini menyebabkan data keseluruhan dapat direpresentasikan secara lebih kompak dengan cara menghilangkan representasi dari sebuah elemen data yang redundan.
2.2 Pengertian Audio
Audio adalah fenomena fisik yang dihasilkan oleh getaran suatu benda yang berupa sinyal analog dengan amplitudo yang berubah ubah secara kontinyu terhadap waktu yang disebut frekuensi. Selama bergetar, perbedaan tekanan terjadi di udara sekitarnya. Pola osilasi yang terjadi dinamakan sebagai gelombang. Gelombang mempunyai pola sama yang berulang pada interval tertentu yang disebut sebagai periode.
(24)
Benda
bergetar Melewati udara
(Gelombang) Perbedaan tekanan udara
Melewati udara
(gelombang) Pendengar
Gambar 2.2 Alur Gelombang Suara (Mukhlis, 2012)
2.2.1 Representasi Audio Digital
Setiap citra dilakukan proses digitasi dan diubah ke bentuk piksel-piksel, dimana tiap-tiap piksel merupakan gabungan dari angka. Sama seperti citra, audio juga dilakukan proses digitasi dan diubah ke dalam bentuk angka atau dikatakan dengan tahap kuantisasi (Salomon, et al, 2010).
Gelombang suara analog tidak dapat lansung direpresentasikan pada komputer. Komputer hanya mampu mengenal sinyal dalam bentuk digital. Bentuk digital yang dimaksud adalah tegangan yang diterjemahkan dalam angka 0 dan 1, yang disebut dengan istilah bit. Dengan kecepatan perhitungan yang dimiliki komputer, komputer mampu melihat angka 0 dan 1 ini menjadi kumpulan bit dan menerjemahkan bit-bit tersebut menjadi sebuah informasi yang bernilai.
Untuk memasukkan suara analog sehingga dapat dimanipulasi oleh peralatan elektronik yang ada menggunakan alat. Alat yang diperlukan untuk melakukan ini adalah transducer yaitu 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 dari transducer adalah mikrofon dan speaker. Mikrofon dapat mengubah tekanan udara menjadi tegangan elektrik, sementara speaker mengubah tegangan elektrik menjadi tekanan udara.
Tegangan elektrik ini akan diproses menjadi sinyal digital oleh sound card. Ketika suara direkam 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, atau disebut juga dengan 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 yaitu:
(25)
1. Membuang frekuensi tinggi dari sumber sinyal (Filtering). 2. Mengambil sampel pada interval waktu tertentu (Sampling).
3. Menyimpan amplitudo sampel dan mengubahnya ke dalam bentuk diskrit (kuantisasi).
4. Merubah bentuk menjadi data digital dengan nilai biner.
Band limiteng Filter
Sample-and-hold Quantizer
Sinyal Analog Suara
Terdigitasi
Analog to digital Converter Encoder
Gambar 2.3 Proses Digitasi (Mukhlis, 2012)
Proses pengubahan sinyal analog menjadi digital harus memenuhi sebuah kriteria, yaitu kriteria Nyquist (Salomon, et al, 2010). Kriteria ini mengatakan bahwa untuk memperoleh representasi akurat dari suatu sinyal analog secara lossless, amplitudonya harus diambil sampel setidaknya pada kecepatan (rate) sama atau lebih besar dari 2 kali komponen frekuensi maksimum yang akan didengar. Misalkan, jika frekuensi audio di atas 2000 Hz, maka sampel yang diambil harus lebih dari 4000 Hz.
2.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.
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. Dalam dunia audio digital,
(26)
ada beberapa istilah yaitu sampling rate (laju pencuplikan), bit per sample, bit rate (laju bit), channel (jumlah kanal).
2.2.3 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 Hz (Hertz).
Kerapatan laju pencuplikan ini menentukan kualitas sinyal analog yang akan diubah menjadi data digital. Makin rapat sampling rate ini, kualitas suara yang dihasilkan akan makin mendekati suara aslinya. Sebagai contoh, lagu yang disimpan dalam Compact Disc Audio (CDA) memiliki sampling rate 44100 Hz, yang berarti lagu ini dicuplik sebanyak 44100 kali dalam satu detik untuk memastikan kualitas suara yang hampir sama persis dengan aslinya.
Sampling rate yang umumnya digunakan antara lain 8000 Hz, 11000 Hz, 16000 Hz, 22000 Hz, 24000 Hz, 44000 Hz, 88000 Hz. 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.
Tabel 2.1 Tabel Frekuensi Sampling dan Kualitas Suara yang Dihasilkan
Sampling Rate Aplikasi
11,025 22,025 32,075 44,1
48
Radio AM Mendekati Radio FM Lebih baik dari Radio FM Compact Disc Audio (CDA)
Digital Audio Tape (DAT)
2.2.4 Bit per Sample
Bit per sample menyatakan seberapa banyak bit yang diperlukan untuk menyatakan hasil sampel 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
(27)
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.2.5 Bit Rate
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).
Tabel 2.2 Tabel Penyimpanan Berbagai Konfigurasi Audio Digital
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.2.6 MP3 (MPEG-1 Layer 3)
Sejarah Mp3 dimulai dari tahun 1991 saat proposal dari philips (Belanda), CCET (Perancis), dan Fur Rundfunktechnik (Jerman) memenangkan proyek untuk DAB
(28)
(Digital Audio Broadcast). Produk mereka Musicam (yang dikenal dengan Layer 2) terpilih karena kesederhanaan, ketahanan terhadap kesalahan, dan perhitungan komputasi yang sederhana untuk melakukan pengkodean yang menghasilkan keluaran yang memiliki kualitas tinggi. Pada akhirnya ide dan teknologi yang dikembangkan menjadi MPEG-1 Layer 3.
Mp3 merupakan salah satu format audio digital yang memiliki teknik kompresi sendiri yang bersifat lossy yaitu menghilangkan beberapa bagian audio yang tidak dapat dideteksi pendengaran manusia. Mp3 dibuat dengan mengambil data audio dari file Wav dan diproses dengan sebuah algoritma untuk mengurangi besarnya ukuran audio. Oleh karena itu, mp3 lebih popular dan banyak dipakai untuk perdagangan musik di internet dibanding file Wav yang berukuran besar.
Sebuah file Mp3 terdiri dari header dan audio data serta pada akhir dari file biasanya terdapat ID3 Tag yang berisi informasi judul lagu, artis, album, dan lain lain yang tidak diperlukan dalam proses encoding ataupun decoding, dapat dilihat seperti Gambar 2.4.
Header
Data
Audio
Side
Info
Gambar 2.4 Struktur File Mp3
Header Mp3 memegang peranan peranan penting dalam proses decoding. Header terdiri dari 32 bit, dimana bit-bit tersebut merupakan informasi dari tipe audio data.
(29)
Informasi yang dapat diperoleh dari header dan keterangan tiap-tiap bit dijelaskan pada Tabel 2.3.
Tabel 2.3 Tabel Keterangan Header Mp3 Panjang
(Bit)
Posisi (Bit)
Deskripsi
11 31-21 Bit untuk sinkronisasi frame 2 20-19 Versi MPEG audio
Bit Versi MPEG audio
00 MPEG versi 2.5
01 Cadangan
10 MPEG versi 2
11 MPEG versi 1
2 18-17 Deskripsi layer
Bit Deskripsi layer
00 Cadangan
01 Layer 3
10 Layer 2
11 Layer 1
1 16 Bit proteksi CRC 16 (nilai = terproteksi) 4 15-12 Index Bitrate
Bit Versi1, Layer1 Versi1, Layer2 Versi1, Layer3 Versi3, Layer1 Versi2, Layer2 Versi2, Layer3 0000 Free Free Free Free Free Free
0001 32 32 32 32 32 8
0010 64 48 40 64 48 16
0011 96 56 48 96 56 24
0100 128 64 56 128 64 32
0101 160 80 64 160 80 64
0110 192 96 80 192 96 80
0111 224 112 96 224 112 56
1000 256 128 112 256 128 64
1001 288 160 128 288 160 128
1010 320 192 160 320 192 160
1011 352 224 192 352 224 112
1100 384 256 224 384 256 128
1101 416 320 256 416 320 256
1110 448 384 320 448 384 320
(30)
Tabel 2.3 Tabel Keterangan Header Mp3 (Lanjutan) Panjang
(Bit)
Posisi (Bit)
Deskripsi
2 11-10 Index Sampling Frekuensi
Bit MPEG 1 MPEG 2 MPEG 2.5
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 Cadangan Cadangan Cadangan 1 9 Bit Padding (nilai 0 = frame tidak di pad)
1 8 Private bit
2 7-6 Mode Channel
Bit Channel
00 Stereo
01 Joint Stereo
10 Dual Channel (Stereo)
11 Single Channel (mono)
2 5-4 Mode ekstension (hanya pada mode joint Stereo)
Bit Intensity Stereo Ms Stereo
00 Off Off
01 On Off
10 Off On
11 On On
1 3 Copyright (nilai 0= audio tidak di copyright) 1 2 Original (nilai = copy dari media oriiginal)
2 1-0 Emphasis
Bit Value
00 None
01 50/15
10 Cadangan
11 CCIT J.17
Berikut ilustrasi contoh suatu header 32 bit pada file Mp3. Suatu sampel audio yang bernilai :
FF FB 90 04
Berarti nilai bitnya :
1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 Bit ke- 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
(31)
1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 Bit ke- 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Dari ilustrasi diatas maka bit ke- 31 sampai 21 adalah sinkronisasi frame. Bit 20 dan 19, keduanya bernilai 1 yang menunjukkan versi MPEG versi 1. Bit ke-18 dan ke-17 bernilai 0 dan 1 sehingga layernya adalah layer 3. Bit ke-16 bernilai 1 berarti tidak ada 16 bit CRC. Bit ke-15 sampai 12 bernilai 1001, menunjukkan bahwa bitrate-nya adalah 128 kbps. Bit ke-11 dan ke-10 bernilai 0 berarti frekuensi samplingnya adalah 44.1 kHz, bit ke-9 bernilai 0 menunjukkan bahwa tidak terdapat padding dan untuk bit ke-8 bernilai 0, untuk kepentingan pribadi serta untuk bit ke-7 dan 6 bernilai 0 berarti mode adalah stereo.
Bit ke-5 dan 4 bernilai 0 yang berarti intensitas stereo dan Ms stereo keduanya off, bit ke-3 bernilai 0 menunjukkan tidak di copyright dan bit ke-2 bernilai 1 berarti file tidak di copy dari media original sedangkan untuk bit ke-1 dan ke-0 bernilai 0 maka emphasis bernilai none.
2.3 Penelitian Sebelumnya
Algoritma Shannon-Fano banyak diterapkan untuk kompresi citra dan teks. Penelitian yang dilakukan sebelumnya untuk kompresi dengan menggunakan algoritma Shannon-Fano yaitu kompresi teks (Saputri, 2011). Saputri (2011) menggunakan algoritma Shannon-Fano untuk kompresi teks, dimana file teks dapat di kompresi dengan hasil rasio kompresi rata-rata mencapai 45% sehingga dikatakan algoritma Shannon-Fano sangat bagus digunakan untuk file teks.
Kompresi pada data teks dengan membandingkan semua algoritma metode lossless termasuk algoritma Shannon-Fano (Kodituwakku, 2006). Kodituwakku (2006) menggunakan algoritma Shannon-Fano untuk kompresi file teks dan membandingkannya dengan algoritma Huffman, Run Length Encoding, Arithmetic Coding dan Lempel Ziv Welch. Kelima algoritma ini membandingkan hasil kerja kompresi menurut rasio kompresi dan kecepatan proses kompresi dan dekompresi. Dari hasil yang didapat menunjukkan bahwa dari hal rasio kompresi, algoritma Lempel Ziv Welch lebih unggul dibandingkan algoritma yang lain dengan rasio
(32)
kompresi sebanyak 60%. Untuk pengujian algoritma Shannon-Fano memperoleh hasil rasio kompresi sebanyak 54%. Penelitian ini menunjukkan bahwa algoritma Shannon-Fano cocok digunakan untuk kompresi data teks .
Penggunaan algoritma Shannon-Fano pada kompresi citra (Adriani, 2009). Adriani (2009) menggunakan algoritma Shannon-Fano pada kompresi dan dekompresi citra digital dimana citra dapat dikompresi dengan hasil rasio kompresi rata-rata 27,12%. File citra yang telah dikompres tidak lagi berbentuk citra. Untuk mengembalikannya ke dalam bentuk citra dilakukan proses dekompresi.
Untuk kompresi audio, algoritma yang pernah digunakan adalah algoritma Huffman (Sunarto, 2010). Sunarto (2010) menggunakan algoritma Huffman untuk kompresi audio Wav dengan rasio kompresi rata-rata 19.07%. File hasil kompresi harus di dekompresi lagi untuk bisa memainkan file kembali.
Selain algoritma Huffman, algoritma yang pernah dipakai untuk kompresi audio adalah algoritma Arithmatic Coding (Siregar, 2011). Siregar (2011) menggunakan algoritma Arithmetic Coding untuk kompresi audio file Wav, Mp3 dan Midi. Rata rata rasio kompresi untuk file Wav adalah 15.34 %, Mp3 0.26 %, dan Midi sebesar 18.60 %. Sama seperti penelitian Sunarto (2010), file audio hasil kompresi tidak dapat dimainkan.
Penggunaan algoritma Shannon-Fano juga dipakai pada kompresi audio (Al-laham, et al, 2007). Peneliti ini menggunakan algoritma Shannon-Fano untuk melakukan kompresi pada semua jenis data seperti teks, citra, video dan audio dimana peneliti membandingkan semua algoritma untuk menentukan algoritma mana yang memiliki kualitas kompresi lebih bagus dari antara semua data.
Pada kompresi audio digunakan juga algoritma Run Length Encoding (Rahandi, 2011). Rahandi (2011) mengggunakan algoritma Run Length Encoding untuk kompresi file audio Wav dan Mp3. Rasio kompresi rata-rata untuk audio Wav sebesar 13.83% dan rasio kompresi rata-rata Mp3 sebesar 0.46%. Penelitian ini menunjukkan bahwa file hasil kompresi harus melalui proses dekompresi untuk bisa memainkan kembali audio tersebut.
Dari penelitian penelitian terdahulu menunjukkan bahwa algoritma Shannon-Fano merupakan algoritma yang maksimal dalam melakukan kompresi data seperti teks, citra dan audio. Oleh karena itu, penelitian ini memilih algoritma Shannon-Fano untuk kompresi audio serta dengan hasil kompresi audio yang dapat dimainkan
(33)
kembali oleh aplikasi yang dirancang sendiri maupun dengan menggunakan media player lain tanpa harus melalui proses dekompresi.
2.4 Algoritma Shannon-Fano
Algoritma Shannon-Fano ditemukan oleh Claude Shannon dan Robert Fano yang merupakan algoritma pertama yang diperkenalkan untuk kompresi sinyal digital pada
makalahnya yang berjudul “A Mathematical Theory of Communication” pada tahun 1948. Shannon dan Fano terus menerus mengembangkan algoritma ini yang menghasilkan kode biner (binary code) untuk setiap karakter yang terdapat pada data dengan redundansi minimum.
Algoritma Shannon-Fano didasarkan pada variable-length code yang berarti beberapa karakter pada data yang dikodekan direpresentasikan dengan kode yang lebih pendek dari karakter yang ada pada data. Jika frekuensi kemunculan karakter semakin tinggi maka kode semakin pendek. Dengan demikian kode yang yang dihasilkan tidak sama panjang sehingga kode tersebut bersifat unik.
Algoritma Shannon-Fano menggunakan struktur data yang sama dengan algoritma Huffman, yaitu struktur data string sebagai data masukan, struktur data binary tree sebagai pembentukan pohon biner dan array sebagai pendeklarasian variabel yang sama.
Langkah langkah algoritma kompresi Shannon-Fano pada audio adalah sebagai berikut (Pu, 2006):
1. Menghitung frekuensi kemunculan masing-masing simbol pada sampel data di audio.
2. Mengurutkan frekuensi kemunculan simbol, dari simbol yang terbesar sampai yang terkecil (secara topdown).
3. Membagi menjadi dua buah bagian, dengan jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama antara node yang satu dengan node yang lainnya.
(34)
4. Berilah label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.
5. Ulangi langkah 3 sampai node tidak dapat dibagi lagi.
6. Telusuri pohon biner dari akar sampai ke daun. Barisan label label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk symbol yang bersesuaian.
Jika ingin mengembalikan audio yang terkompresi menjadi audio ukuran asli maka harus dilakukan proses dekompresi.
Langkah-langkah dekompresi menggunakan algoritma Shannon-Fano adalah sebgai berikut:
1. Membaca bit pertama dari kode yang dihasilkan.
2. Jika bit pertama ada dalam tabel kode Shannon-Fano, maka bit tersebut diterjemahkan menjadi simbol yang sesuai dengan bit tersebut.
3. Jika bit tersebut tidak ada dalam tabel kode Shannon-Fano, gabungkan bit tersebut dengan bit selanjutya, kemudian cocokkan dengan tabel hasil pengkodean.
4. Ulangi langkah 3 sampai ada rangkaian bit yang cocok dengan tabel kode Shannon-Fano, terjemahkan rangkaian bit tersebut menjadi simbol yang sesuai. 5. Jika terdapat simbol yang sesuai, maka baca bit selanjutnya dan ulangi langkah 2,
3, dan 4 sampai rangkaian kode habis.
2.5 Binary Tree
Suatu binary tree memiliki ciri ciri sebagi berikut:
a. Sebuah root
b. Terdapat node yang disebut parent atau child
c. Parent masing-masing memiliki maksimum 2 buah child d. Node yang tidak memiliki child disebut leaf
(35)
Untuk lebih jelasnya pembuatan contoh binary tree dapat dilihat pada Gambar 2.6 berikut.
Root A
B C
E D
H I
Parent Parent
child child
K
F G
leaf leaf
leaf leaf
leaf leaf
J
Gambar 2.6 Contoh BinaryTree
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.
A
B C
E D
H I
F G
(36)
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).
A
B C
E
D F G
H I J K L M N O
Gambar 2.8 Contoh Perfect BinaryTree
Berikut ilustrasi untuk memperjelas cara kerja algoritma Shannon-Fano serta pembentukan pohon biner. Diambil suatu sampel data audio yang dinyatakan dalam bentuk heksadesimal.
1. Misalnya file audio dalam bentuk heksadesimal sebagai berikut: FE 3F 02 00 FE 3F 02 FF 7C 3F
2. Langkah awal adalah membentuk tabel distribusi frekuensi seperti terlihat pada Tabel 2.4.
Tabel 2.4 Tabel Distribusi Frekuensi
Karakter Frekuensi
3F 3
FE 2
02 2
00 1
FF 1
(37)
3. Kemudian dibentuk node pohon untuk tiap karakter beserta nilai frekuensinya masing-masing. Pengurutan dilakukan secara menurun (descending) dari nilai frekuensi terbesar hingga terkecil dan frekuensi yang sama didahulukan sesuai dengan urutan yang pertama muncul dapat dilihat pada Gambar 2.9.
3F 3 FE 2 02 2 00 1 FF 1 7C 1
Gambar 2.9 Contoh Pengurutan Frekuensi Secara Descending
4. Setelah itu, dibagi menjadi dua buah bagian node dengan jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama antara node yang satu dengan node yang lainnya seperti Gambar 2.10.
3F FE 5 02 00 FF 7C 5
Gambar 2.10 Contoh Pembagian Menjadi Dua Node
5. Berikutnya dengan mengulangi langkah 4, yaitu membagi menjadi dua buah node dengan jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama pada salah satu node di node sebelah kiri.
3F FE 5
3F 3 FE 2
02 00 FF 7C 5
Gambar 2.11 Contoh Pembagian Menjadi Dua Node Kedua
6. Untuk node yang di sebelah kiri, node tidak bisa lagi dibagi sehingga dilanjutkan pada node sebelah kanan. Pada node sebelah kanan, ulangi langkah 5 yaitu membagi jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama pada salah satu node dapat dilihat pada Gambar 2.12.
(38)
3F FE 5
3F 3 FE 2
02 00 FF 7C 5
02 2 00 FF 7C 3
Gambar 2.12 Contoh Pembagian Menjadi Dua Node Ketiga
7. Node sebelah kanan dapat dibagi lagi maka lakukan langkah seperti langkah 6, dapat dilihat pada Gambar 2.13.
3F FE 5
3F 3 FE 2
02 00 FF 7C 5
02 2 00 FF 7C 3
00 FF 2 7C 1
Gambar 2.13 Contoh Pembagian Menjadi Dua Node Keempat
8. Kemudian lakukan langkah langkah seperti diatas sampai semua node tidak dapat dibagi lagi. Hasil dari perulangan dapat dilihat pada Gambar 2.14.
3F FE 5
3F 3 FE 2
02 00 FF 7C 5
02 2 00 FF 7C 3
00 FF 2 7C 1
00 1 FF 1
(39)
9. Setelah semua node tidak dapat dibagi lagi dan membentuk pohon biner, maka tambahkan label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1. Kemudian telusuri pohon biner dari akar hingga ke daun. Barisan label label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk simbol yang bersesuaian dapat dilihat pada Gambar 2.15.
3F FE 5
3F 3 FE 2
02 00 FF 7C 5
02 2 00 FF 7C 3
00 FF 2 7C 1
00 1 FF 1
3F FE 02 00 FF 7C 10
0 1
1
0 0
0
0
1
1
1
Gambar 2.15 Contoh Pembagian Menjadi Dua Node Keenam
10. Pada Gambar 2.15 dapat dilihat tiap karakter telah memiliki kode Shannon-Fano Penelusuran dari akar ke daun (dari atas ke bawah) menghasilkan kode Shannon-Fano dengan kode bit untuk tiap karakter seperti pada Tabel 2.5.
Tabel 2.5 Tabel Hasil Kode Shannon-Fano
Simbol Frekuensi Kode Bit
3F 3 00 (2 bit)
FE 2 01 (2 bit)
02 2 10 (2 bit)
00 1 1100 (4 bit)
FF 1 1111 (4 bit)
(40)
11. Maka file audio untuk FE 3F 02 00 FE 3F 02 FF 7C 3F hasil kode bit adalah 0100101100100101110111100 dengan jumlah bit hasil kompresi 25 bit dan jumlah sebelum dikompresi yaitu jumlah karakter dalam byte 8 bit = 10 8 bit = 80 bit.
Jika ingin mengembalikan audio yang terkompresi menjadi audio ukuran asli maka harus dilakukan proses dekompresi.
Sebagai contoh untuk menulis kembali file audio asli dari bilangan heksa pengganti 4B 25 DE 00 maka hal pertama yang perlu dilakukan adalah mengubahnya kembali ke kode bit.
Tabel 2.6 Tabel Pengubahan Heksadesimal ke Biner Kode Heksadesimal Kode Biner
4B 01001011
25 00100101
DE 11011110
00 00000000
Setelah didapat kode bit pengganti seperti gambar di atas, kemudian diambil informasi dari header audio untuk mengecek apakah sebelumnya dilakukan penambahan bit. Jika dilakukan adanya penambahan bit, maka kode pengganti tersebut harus dikurangi sebanyak bit yang ditambah pada bit belakang. Misalkan sebelumnya kode bit 01001011001001011101111000000000 ditambah 7 bit maka kode bit ini juga harus dikurangi sebanyak tujuh bit dari belakang menjadi 0100101100100101110111100.
Setelah itu, dilakukan langkah langkah proses dekompresi dengan menggunakan tabel kode Shannon-Fano sebelumnya, dari tabel tersebut dibaca bit pertama dari kode yang dihasilkan 0100101100100101110111100.
(41)
Tabel 2.7 Tabel Kode Shannon-Fano
Simbol Frekuensi Kode Bit
3F 3 00 (2 bit)
FE 2 01 (2 bit)
02 2 10 (2 bit)
00 1 110 (3 bit)
FF 1 1110 (4 bit)
7C 1 1111 (4 bit)
Bit pertama adalah 0, dicocokkan pada tabel kode Shannon-Fano diatas. Jika tidak ada simbol yang bersesuaian maka baca bit selanjutnya yaitu 01 dimana terdapat pada tabel kode Shannon-Fano yang merupakan kode dari bilangan heksa FE. Begitu seterusnya sampai akhir rangkaian kode bit sehingga diperoleh kembali bahwa sampel audio semula adalah FF 3F 02 00 FE 3F 02 FF 7C 3F.
(42)
BAB 3
ANALISIS DAN PERANCANGAN
Bab ini secara garis besar membahas analisis algoritma Shannon-Fano untuk kompresi file audio dan tahap-tahap yang akan dilakukan dalam perancangan aplikasi yang akan dibangun.
3.1 Analisis Algoritma
Pada bab sebelumnya telah dijelaskan bahwa algoritma Shannon-Fano yang akan diterapkan untuk kompresi audio. Kompresi pada audio yang digunakan berjenis file mp3, dimana jenis audio ini sekarang lebih sering digunakan karena data yang disimpan menyerupai data yang asli pada saat direkam serta memiliki ukuran yang tidak terlalu besar dibandingkan format lain.
Algoritma Shannon-Fano menggunakan struktur data string sebagai data masukan serta struktur data binary tree sebagai pembentukan pohon biner. Pada proses kompresi algoritma Shannon-Fano audio, data yang akan dikompresi adalah sampel sampel audio yang berupa bilangan heksadesimal yang berada di bagian main data audio.
Algoritma Shannon-Fano bekerja dengan memperkecil bit untuk kata yang sering muncul dan memperbesar bit yang jarang muncul. Algoritma ini menggunakan metode lossless yaitu awalnya data akan dipecah menjadi ukuran yang lebih kecil dan pada akhirnya data disatukan kembali sehingga tidak ada informasi yang hilang. Adapun gambaran kompresi algoritma Shannon-Fano dapat dilihat pada Gambar 3.1.
(43)
Mulai
Input sampel audio
Menghitung frekuensi kemunculan simbol
Mengurutkan frekuensi simbol secara descending
Membagi menjadi dua bagian jumlah frekuensi simbol yang sama atau
hampir sama
Memberi label pada sisi kiri 0 dan sisi kanan 1
Simbol tidak dapat dibagi
Output kode shannon-fano
Selesai
Ya Tidak
(44)
3.1.1 Deskripsi Kompresi Algoritma Shannon-Fano
Langkah-langkah algoritma kompresi Shannon-Fano pada audio adalah sebagai berikut (Pu, 2006):
1. Menghitung frekuensi kemunculan masing-masing simbol pada sampel dalam audio.
2. Mengurutkan frekuensi kemunculan simbol dari simbol yang terbesar sampai yang terkecil (secara topdown).
3. Membagi menjadi dua buah bagian, dengan jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama antara node yang satu dengan node yang lainnya.
4. Berilah label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.
5. Ulangi langkah 3 sampai node tidak dapat dibagi lagi.
6. Telusuri pohon biner dari akar ke daun. Barisan label label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk simbol yang bersesuaian. Untuk lebih jelasnya langkah-langkah untuk kompresi algoritma Shannon-Fano dapat dilihat pada pseudocode berikut:
Input: A sorted list of n input symbols S = {s1,s2,…, sn}with frequencies
of occurrence F = {�1, �2,…, �n}, where �� ≤ � + ,�, ≤ � ≤ �
Output: n variable-length codewords C = {c(s�), c(s�),…,c(sn)}
1: c(s �) ,� , ≤ � ≤ n
2: Shannon-Fano-Split(S)
3: procedure Shannon-Fano-Split(S)
4: if |s| >1 then
5: split S to s1 and S2 with approximately the same sum of frequency
6: c(s1) c(s1)+ 0, s1 S1
(45)
8: Shannon-Fano-Split(S1)
9: Shannon-Fano-Split(S2)
10: end if
11: end procedure
3.1.2 Deskripsi Dekompresi Algoritma Shannon-Fano
Jika ingin mengembalikan audio yang terkompresi menjadi audio ukuran asli maka harus dilakukan proses dekompresi.
Langkah-langkah dekompresi menggunakan algoritma Shannon-Fano adalah sebgai berikut:
1. Membaca bit pertama dari kode yang dihasilkan.
2. Jika bit pertama ada dalam tabel kode Shannon-Fano, maka bit tersebut diterjemahkan menjadi simbol yang sesuai dengan bit tersebut.
3. Jika bit tersebut tidak ada dalam tabel kode Shannon-Fano, gabungkan bit tersebut dengan bit selanjutya, kemudian cocokkan dengan tabel hasil pengkodean.
4. Ulangi langkah 3 sampai ada rangkaian bit yang cocok dengan tabel kode Shannon-Fano, terjemahkan rangkaian bit tersebut menjadi simbol yang sesuai. 5. Jika terdapat simbol yang sesuai, maka baca bit selanjutnya dan ulangi langkah 2,
3, dan 4 sampai rangkaian kode habis.
3.2 Perancangan Aplikasi
Perancangan aplikasi kompresi audio dengan algoritma Shannon-Fano ini merupakan tahap dalam mengimplementasikan gambaran aplikasi yang akan dibangun dan akan mempermudah dalam pengerjaan aplikasi. Pada tahap perancangan aplikasi akan digunakan Unified Modelling Language (UML) yang berarti bahasa pemodelan standar, yang digunakan sebagai bahasa pemodelan untuk visualisasi dan rancangan aplikasi. Model UML yang akan digunakan untuk aplikasi ini adalah usecase diagram activity diagram dan sequence diagram.
(46)
3.2.1 Usecase Diagram
Usecase diagram menggambarkan fungsi tertentu dalam suatu sistem berupa komponen, kejadian atau kelas. Usecase diagram dapat juga diartikan sebagai urutan langkah langkah yang secara tindakan saling terkait (skenario), baik terotomatisasi maupun secara manual, untuk tujuan melengkapi satu tugas bisnis tunggal (Whitten, 2004). Komponen komponen untuk membentuk usecase diagram adalah :
1. Aktor, menggambarkan pihak pihak yang berperan dalam sistem. 2. Usecase, aktivitas/sarana yang disiapkan oleh bisnis/sistem. 3. Hubungan (link), aktor mana saja yang terlibat dalam usecase ini.
Berikut ini adalah usecase diagram untuk aplikasi kompresi pada audio dalam Gambar 3.2.
Pengguna
Sistem
Pilih Kompresi
Pilih Dekompresi
Pilih Play
Gambar 3.2 Usecase Diagram Aplikasi Kompresi Audio
Berdasarkan usecase diagram pada gambar tersebut, dokumentasi naratif pada proses kompresi audio yang terdapat dalam usecase diagram di atas dapat dilihat pada Tabel 3.1.
(47)
Tabel 3.1 Tabel Dokumentasi Naratif Usecase Pilih Kompresi
Dokumentasi naratif pada aplikasi kompresi audio dengan algoritma Shannon-Fano untuk usecase pilih dekompresi terdapat dalam Tabel 3.2.
Tabel 3.2 Tabel Dokumentasi Naratif Usecase Pilih Dekompresi Tipe Usecase Penjelasan
Nama Usecase Pilih Dekompresi
Aktor Pengguna
Brief Description
Usecase ini menggambarkan pengguna untuk memilih dekompresi audio
Pre-condition Pengguna masuk ke menu utama aplikasi kompresi audio Basic Flow -Pengguna masuk ke halaman dekompresi kemudian
memasukkan audio yang akan didekompresi.
- Sistem akan mengecek audio yang telah dimasukkan.
- Pengguna memilih dekompresi untuk melakukan dekompresi. - Sistem melakukan dekompresi dengan algoritma Shannon-Fano. Usecase ini berakhir ketika sistem telah selesai menampilkan hasil proses dekompresi.
Alternate Flow -
Post-condition Audio telah terdekompresi dengan algoritma Shannon-Fano Tipe Usecase Penjelasan
Nama Usecase Pilih Kompresi
Aktor Pengguna
Brief Description Usecase ini menggambarkan pengguna untuk memilih kompresi audio.
Pre-condition Pengguna masuk ke menu aplikasi kompresi audio
Basic Flow - Pengguna masuk ke halaman kompresi kemudian memasukkan audio mp3.
- Sistem akan mengecek audio yang dimasukkan. - Pengguna memilih kompresi untuk melakukan proses kompresi.
- Sistem melakukan kompresi dengan algoritma Shannon-Fano. Usecase ini berakhir ketika sistem telah selesai menampilkan hasil proses kompresi.
Alternate Flow -
(48)
Pada usecase pilih play dibuat dokumentasi naratif agar pengguna paham dengan sistem yang dibangun dan menjelaskan kegunaan usecase pilih play yang dibangun pada aplikasi kompresi audio dengan algoritma Shannon-Fano. Usecase pilih play dijelaskan dalam Tabel 3.3.
Tabel 3.3 Tabel Dokumentasi Naratif Usecase Pilih Play
Tipe Usecase Penjelasan Nama Usecase Pilih play
Aktor Pengguna
Brief Description Usecase ini menggambarkan pengguna memilih untuk play audio.
Pre-condition Pengguna masuk ke menu utama aplikasi kompresi audio. Basic Flow - Pengguna masuk ke halaman play kemudian
memasukkan audio yang akan dimainkan.
- Sistem akan mengecek audio yang dimasukkan. - Pengguna memilih play untuk memainkan audio yang telah rdimasukkan.
- Sistem akan memainkan audio yang telah dimasukkan, Usecase ini berakhir ketika sistem telah selesai memutar audio.
Alternate Flow -
Post-condition File audio terkompresi dimainkan.
3.2.2 Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir.
Sebuah aktivitas dapat direalisasikan oleh satu usecase atau lebih. Activity diagram menggambarkan proses yang berjalan, sementara usecase menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas. Pada Gambar 3.3 berikut ini akan mengilustrasikan activity diagram menggunakan menu utama.
(49)
Sistem Pengguna
Membuka Aplikasi
Pilih Kompresi Pilih Dekompresi Pilih Play Pilih Bantuan
Menampilkan main menu
Tampilan menu dipilih
Gambar 3.3 ActivityDiagram Menu Utama
Activity diagram untuk pilihan kompresi menjelaskan aliran aktifitas dalam proses kompresi dimulai dari pengguna memasukkan audio pada halaman kompresi dan sistem akan menunjukan hasil kompresi. Gambar 3.4 menunjukkan activity diagram submenu kompresi.
Sistem Pengguna
Menampilkan submenu kompresi
Menampilkan hasil kompresi Pilih audio
Menampilkan verifikasi audio
Proses kompresi Pilih kompresi
(50)
Untuk activity diagram pilihan dekompresi dapat dilihat pada Gambar 3.5 submenu dekompresi berikut. Activity diagram untuk pilihan dekompresi ini juga menjelaskan aliran aktifitas dalam melakukan aktivitas dekompresi yang dimulai dari pengguna memasukkan audio pada halaman dekompresi sampai sistem menunjukan hasil dekompresi.
Pengguna
Menampilkan submenu dekompresi
Menampilkan hasil dekompresi Pilih audio
Menampilkan verifikasi audio Pilih tombol dekompresi
Sistem
Proses dekompresi
Gambar 3.5 ActivityDiagram Submenu Dekompresi
Selain activity diagram kompresi dan dekompresi ada juga activity diagram untuk play. Untuk activity diagram pilihan play dapat dilihat pada Gambar 3.6. Activity diagram untuk pilihan play menjelaskan aliran aktifitas dalam melakukan aktivitas memainkan audio yang dimulai dari pengguna memasukkan audio pada halaman play sampai sistem memutar hasil audio tersebut.
Pengguna Sistem
Pilih audio
Pilih play Pilih pause Pilih stop
Menampilkan submenu play
Verifikasi audio
(51)
3.2.3 Sequence Diagram
Sequence diagram digunakan untuk menggambarkan interaksi antar objek di dalam dan di sekitar sistem. Interaksi tersebut berupa pesan yang digambarkan terhadap waktu. Sequence diagram terdiri dari dimensi horizontal (objek-objek) dan dimensi vertikal (waktu). Pada Gambar 3.7 berikut ini merupakan sequence diagram untuk kompresi audio akan memperlihatkan tahap demi tahap urutan kejadian proses yang terjadi. :Halaman Kompresi (Boundary) :Cek Audio (Process) :Hitung Frekuensi Sampel (Process) :Baca Sampel (Process) :Pengurutan Frekuensi sampel (Process) :Pohon Shannon-Fano (Process) :Ganti nilai Sampel (Process) :Hasil file Kompresi (Process) 2.File Mp3 7.Nilai dan Frekuensi
yang dihitung 8.Kode tiap sampel
9. Kode Shannon-Fano Pengguna
4. Pilih Kompres
10.Audio terkompres 5.Nilai Sampel 11.Informasi hasil Kompres 6.Frekuensi sampel 3.Informasi Audio 1.Masukkan Audio
Gambar 3.7 Sequence Diagram Kompresi Audio
Untuk sequence diagram dekompresi audio dapat dilihat pada gambar 3.8. Pada sequence diagram dekompresi audio ini terdapat pengguna dan 5 objek, yaitu halamn dekompresi, cek audio, pencocokan kode Shannon-Fano, penggantian nilai sampel, dan hasil file dekompresi. Pertama pengguna akan memasukkan file audio pada halaman dekompresi dan akan dilakukan pengecekan audio. Setelah dilakukan pengecekan maka akan tampil informasi mengenai audio, kemudian pengguna memilih dekompresi dan sistem akan melakukan dekompresi dengan mencocokkan kode Shannon-Fano dan hasil nilai pencocokan akan diganti menjadi nilai sampel. Setelah nilai sampel diganti maka audio akan terdekompresi dan informasi hasil dekompresi akan dikirim.
(52)
:Halaman Dekompresi (Process) :Cek Audio (Process) :Ganti Nilai Sampel (Process) :Pencocokan Kode Shannon (Process) Hasil File Dekompresi (Process) 7.Audio ter dekompresi Pengguna 5.Kode Shannon 8.Informasi hasil dekompresi 6.Sampel Hasil Pencocokan 3.Informasi Audio 1.Masukkan Audio
2. File Wav
4. Pilih Dekompresi
Gambar 3.8 SequenceDiagram Dekompresi Audio
Pada sequence diagram play audio terdapat pengguna dan 3 objek, yaitu halaman play, cek audio, objek play. Pertama pengguna akan memasukkan file audio yang dipilih pada halaman play dan akan dilakukan pengecekan audio. Setelah dilakukan pengecekan audio maka akan tampil informasi mengenai audio, kemudian pengguna memilih play dan sistem akan melakukan pemutaran audio dan mengirimkannya ke pengguna. Untuk sequence diagram play audio pada aplikasi ini dapat dilihat pada Gambar 3.9.
:Halaman Play (Boundary) :Cek Audio (Process) :Play (Process) 2.File Audio Pengguna
4. Pilih Play 5.Get
Header Audio 3.Informasi Audio 1.Masukkan Audio 6.Audio dimainkan
(53)
Gambar 3.9 SequenceDiagramPlay Audio 3.3 Perancangan Antarmuka
Perancangan antarmuka dibuat agar tampilan aplikasi lebih user friendly sehingga mudah dipahami dan digunakan oleh pengguna. Perancangan antarmuka aplikasi kompresi audio ini terdiri dari beberapa tampilan, yaitu menu utama, halaman untuk proses kompresi, halaman untuk proses dekompresi, play audio dan bantuan. Berikut ini adalah rancangan menu dan sub-sub menu antarmuka aplikasi.
3.3.1 Menu Utama
Rancangan menu utama merupakan tampilan pertama yang muncul saat aplikasi dijalankan, dapat dilihat pada Gambar 3.10. Setelah menu utama dijalankan, selanjutnya akan ada empat tampilan sub menu seperti :
a. sub menu kompresi, b. sub menu dekompresi, c. sub menu play dan d. sub menu bantuan.
x
Aplikasi Kompresi MP3
1
Ok
2
Gambar 3.10 Rancangan Antarmuka Menu Utama
Keterangan :
1. Label yang menampilkan judul aplikasi. 2. Tombol untuk masuk ke halaman sub menu.
(54)
3.3.2 Sub Menu Kompresi
Rancangan pada sub menu kompresi akan menampilkan halaman untuk melakukan proses kompresi audio. Rancangan sub menu kompresi dapat dilihat pada Gambar 3.11.
Kompresi Dekompresi Play Bantuan
Buka
Reset Kompres
Informasi Audio
x Aplikasi Kompresi Audio
1
2 3
4
5 6
7
Nama Path Ukuran Awal
File Hasil Ukuran Akhir
Rasio Lama Proses
Gambar 3.11 Rancangan Antarmuka Sub Menu Kompresi
Keterangan :
1. Halaman sub menu Kompresi untuk melakukan kompresi.
2. Tombol untuk membuka dan memilih file audio yang ingin dikompresi. 3. Text box untuk menampilkan audio yang telah dipilih.
4. Text box untuk menampilkan informasi tentang audio yang dipilih berupa nama audio, lokasi, ukuran awal, lokasi file setelah dikompres, ukuran akhir setelah dikompresi, rasio kompresi dan waktu yang dibutukan saat proses kompresi. 5. Tombol kompresi untuk memulai proses kompresi.
6. Tombol reset untuk mengulang ke pengaturan semula.
7. Textbox untuk menampilkan detail format audio yang ingin dikompres.
3.3.3 Sub Menu Dekompresi
Rancangan sub menu dekompresi merupakan halaman untuk melakukan proses dekompresi audio. Rancangan untuk sub menu dekompresi dapat dilihat pada Gambar 3.12.
(55)
Kompresi Dekompresi Play Bantuan
Buka
Reset Dekompres
Informasi Audio
x Aplikasi Kompresi Audio
1
2 3
4
5 6
7
Nama Path Ukuran Awal
File Hasil Ukuran Akhir
Rasio
Gambar 3.12 Rancangan Antarmuka Sub Menu Dekompresi
Keterangan :
1. Halaman sub menu Dekompresi untuk melakukan dekompresi atau mengembalikan audio ke bentuk semula.
2. Tombol untuk membuka dan memilih file audio yang ingin didekompresi. 3. Text box untuk menampilkan audio yang telah dipilih.
4. Text box untuk menampilkan informasi tentang audio yang dipilih berupa nama audio, lokasi audio, ukuran awal, lokasi file hasil audio yang telah didekompresi, ukuran akhir setelah didekompresi dan waktu yang dibutukan saat proses dekompresi.
5. Tombol dekompres untuk memulai proses dekompresi. 6. Tombol reset untuk mengulang ke pengaturan semula.
7. Textbox untuk menampilkan detail format audio yang ingin didekompresi.
3.3.4 Sub Menu Play
Rancangan sub menu play merupakan halaman aplikasi untuk memainkan audio yang telah di kompresi. Pada sub menu play terdiri tombol play, pause dan tombol keluar. Rancangan sub menu play dapat dilihat pada Gambar 3.13.
(56)
7 Kompresi Dekompresi Play Bantuan
Buka
Stop Play
Informasi Audio
x
Aplikasi Kompresi Audio
1
2 3
4
5 Nama
Path
Pause
7 6
Gambar 3.13 Rancangan Antarmuka Sub Menu Play
Keterangan :
1. Halaman sub menu Play untuk memainkan atau mendengarkan audio hasil kompresi.
2. Tombol untuk membuka dan memilih file audio yang ingin dimainkan atau didengarkan.
3. Text box untuk menampilkan audio yang telah dipilih.
4. Text box untuk menampilkan informasi tentang audio yang dipilih berupa nama file audio dan lokasi tempat audio.
5. Tombol play untuk memainkan audio.
6. Tombol pause untuk memberhentikan sejenak audio yang dimainkan. 7. Tombol stop untuk menghentikan audio.
3.3.5 Sub Menu Bantuan
Rancangan sub menu bantuan merupakan halaman panduan bagaimana cara menjalankan aplikasi. Sub menu bantuan ini ditujukan untuk pengguna agar mudah dalam menjalankan aplikasi. Rancangan sub menu bantuan dapat diliihat pada Gambar 3.14.
(57)
7
Kompresi Dekompresi Play Bantuan
x Aplikasi Kompresi Audio
1
Gambar 3.14 Rancangan Antarmuka Sub Menu Bantuan
Keterangan :
Halaman sub menu Bantuan untuk disediakan bagi penggguna yang belum mengerti cara pemakaian aplikasi.
(58)
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini akan dijelaskan tentang proses pengimplementasian algoritma Shannon-Fano pada aplikasi, sesuai dengan perancangan aplikasi yang telah dilakukan pada Bab 3 serta melakukan pengujian terhadap aplikasi yang dibangun.
4.1 Implementasi Perancangan Antarmuka Aplikasi
Tampilan menu utama pada aplikasi kompresi audio dapat dilihat pada Gambar 4.1. Menu utama ini merupakan tampilan pertama yang pertama kali muncul saat aplikasi dijalankan.
(59)
Tampilan aplikasi meliputi tampilan menu utama aplikasi dan beberapa sub menu yang ada di dalamnya. Tampilan ini dibuat sesuai dengan rancangan tampilan yang telah dibuat pada tahap perancangan sebelumnya.
Setelah menu utama dijalankan akan menampilkan judul aplikasi yang dibuat dan nama pembuat aplikasi, serta tombol Ok. Kemudian pengguna akan mengklik Ok dan akan muncul tampilan sub-sub menu. Tampilan sub–sub menu tersebut adalah sub menu kompresi untuk melakukan proses kompresi audio, sub menu dekompresi untuk mengembalikan audio ke bentuk semula, sub menu play untuk memainkan audio hasil kompresi serta sub menu bantuan untuk cara panduan aplikasi sehingga memudahkan pengguna dalam menjalankan aplikasi. Tampilan antarmuka salah satu sub menu aplikasi dapat dilihat pada Gambar 4.2.
Gambar 4.2 Tampilan Antarmuka Sub Menu Aplikasi
4.1.1 Tampilan Sub Menu Kompresi
Tampilan sub menu kompresi merupakan halaman untuk melakukan proses kompresi audio menggunakan algoritma Shannon-Fano. Tampilan sub menu kompresi dapat dilihat pada Gambar 4.3 berikut.
(1)
Me.TxtBukaTabKmprs.Clear() Me.TxtNamaTabKmprs.Clear() Me.TxtUkAkhrTabKmprs.Clear() Me.TxtRasioTabKmprs.Clear() Me.TxtUkAwalTabKmprs.Clear() Me.txtFileHasil.Clear() Me.TxtLamaTabKmprs.Clear() Me.txtSA1.Clear()
End Sub
Private Sub Dekompres()
ar = xShannonAudio(TxtNamaTabDkmprs.Text)
Dim fileName As String = TxtBukaTabDkmprs.Text + ".mp3" Dim size As Integer = ar.Milliseconds2Bytes(1000)
Dim len As Integer = ar.GetLengthInBytes()
Dim ac As AcmConverter = New AcmConverter(oldFormat, newFormat, False)
Dim fs As FileStream = New FileStream(fileName, FileMode.Create)
Dim ww As Mp3Writer = New Mp3Writer(fs) While y < len
Dim data As Byte() = ar.ReadDataInBytes(y, size) (ArrayToString(data))
y += data.Length
Dim newData As Byte() = xShanDekomp(data) ww.WriteData(newData)
End While
mbAkhir = fs.Length / (1024 * 1024) filehsl = fs.Name
ww.Close() ar.Close() End Sub
Private Sub BtnDekomprs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDekomprs.Click
Cursor = Cursors.WaitCursor proc = GetCurrentProcess() start_time = Now
pbConver2.Maximum = ar.GetLengthInBytes y = 0
BgWork2.RunWorkerAsync() Timer2.Start()
End Sub
Private Sub BgWork2_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BgWork2.DoWork Dekompres()
End Sub
Private Sub BgWork2_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BgWork2.RunWorkerCompleted
Cursor = Cursors.Default proc = GetCurrentProcess() stop_time = Now
Me.TxtUkAkhrTabDkmprs.Text = Math.Round(mbAkhir, 2) & " MB" Me.TxtLamaTabDkmprs.Text =
stop_time.Subtract(start_time).Seconds & " s" ratio = 100 - (mbAkhir / mbAwal) * 100 Dim infoReader As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(filehsl)
(2)
Me.txtFileHasil2.Text = infoReader.Name pbConver2.Value = 0
Timer2.Stop() End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
If y > pbConver2.Maximum Then pbConver2.Value = 0
Timer2.Stop() Exit Sub End If
pbConver2.Value = y End Sub
Private Sub BtnResetTabDkmprs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnResetTabDkmprs.Click
Me.TxtPathTabDkmprs.Clear() Me.TxtBukaTabDkmprs.Clear() Me.TxtNamaTabDkmprs.Clear() Me.TxtUkAkhrTabDkmprs.Clear() Me.TxtUkAwalTabDkmprs.Clear() Me.txtFileHasil2.Clear() Me.TxtLamaTabDkmprs.Clear() Me.txtSA2.Clear()
End Sub
Private Sub BtnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPlay.Click
If Len(Trim(TxtNamaTabPlay.Text)) <= 0 Then Exit Sub
End If
If axWP.playState = WMPLib.WMPPlayState.wmppsPaused Then axWP.Ctlcontrols.play()
Exit Sub End If
axWP.URL = Me.TxtBukaTabPlay.Text axWP.Ctlcontrols.play()
End Sub
Private Sub BtnPause_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPause.Click
If axWP.playState = WMPLib.WMPPlayState.wmppsPlaying Then axWP.Ctlcontrols.pause()
End If End Sub
Private Sub BtnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStop.Click
If axWP.playState = WMPLib.WMPPlayState.wmppsPlaying Or axWP.playState = WMPLib.WMPPlayState.wmppsPaused Then
axWP.Ctlcontrols.stop() End If
End Sub End Class
(3)
3. Class Shannon.vb
Imports Alvas.Audio Imports System.IO Module shanon
Dim str_asli As String
Public Function shanonKompres(ByVal str_asli As String) As Array Dim pohon As String
Dim susun As String Dim karArr() As String Dim jumlah() As Integer Dim shn_binary() As String Dim index As Integer
Dim dataX(str_asli.Length) As Byte If str_asli.Length <= 0 Then
Return dataX End If
Dim i, j As Integer susun = ""
For i = 0 To str_asli.Length - 1
If susun.Contains(str_asli(i)) = False Then susun &= str_asli(i)
Next
ReDim jumlah(susun.Length - 1) For i = 0 To susun.Length - 1 jumlah(i) = 0
For j = 0 To str_asli.Length - 1 If susun(i) = str_asli(j) Then jumlah(i) += 1
End If Next
Next
Dim tmpjlh() As Integer = jumlah Dim tmpsusun As String = susun Array.Sort(jumlah)
Array.Reverse(jumlah) susun = ""
For i = 0 To susun.Length - 1
index = Array.IndexOf(tmpjlh, jumlah(i)) susun &= tmpsusun.Substring(index, 1) Next
ReDim shn_binary(susun.Length - 1) For i = 0 To susun.Length - 1 shn_binary(i) = ""
Next index = 0
If susun.Length <= 0 Then Return dataX
End If Do
Dim kar As Char = susun(index) Dim s As String = susun
Dim l As Integer = s.Length Dim l1 As Integer = l
Dim s1 As String = "" Dim s2 As String = ""
(4)
Dim jl(), jl1(), jl2() As Integer Dim jb1, jb2 As Integer
Dim a, b As Integer ReDim jl(l)
For i = 0 To l - 1 jl(i) = jumlah(i) Next
Do
Dim idx As Integer = 0 jb1 = 0
i = 1 Do
jb1 += jl(i - 1) jb2 = 0
j = i
Do While j < l jb2 += jl(j) j += 1
Loop i += 1
Loop Until jb1 >= jb2 If jb1 > jb2 Then If i > 2 Then idx = i - 2 Else
idx = i - 1 End If
Else
idx = i - 1 End If
s1 = "" i = 0
Do While i < idx s1 &= s(i) i += 1 Loop
s2 = "" i = idx
Do While i < l s2 &= s(i) i += 1 Loop
ReDim jl1(s1.Length) a = 0
Do While a < s1.Length jl1(a) = jl(a) a += 1
Loop
ReDim jl2(s2.Length) a = 0
b = idx
Do While a < s2.Length jl2(a) = jl(b) a += 1
b += 1 Loop
If s1.Contains(kar) = True Then shn_binary(index) &= "0" l = s1.Length
(5)
ReDim jl(s1.Length) a = 0
Do While a < s1.Length jl(a) = jl1(a) a += 1
Loop Else
shn_binary(index) &= "1" l = s2.Length
s = s2
ReDim jl(s2.Length) b = 0
Do While b < s2.Length jl(b) = jl2(b) b += 1
Loop End If
Dim stemp As String = "" For i = 0 To s.Length - 1
stemp &= s(i).ToString.Trim Next
Loop While l > 1 index += 1
Loop While index < susun.Length ReDim karArr(susun.Length) i = 0
pohon = "" Do
karArr(i) = susun(i)
pohon &= shn_binary(i) & " " i += 1
Loop While i < susun.Length Dim total_memory As Integer = 0 Dim total_panjang As Integer = 0 For i = 0 To susun.Length - 1
total_memory += jumlah(i) * shn_binary(i).Length total_panjang += shn_binary(i).Length
Next
Dim dec As Integer = 0
For i = 0 To str_asli.Length - 1
index = susun.IndexOf(str_asli(i)) dec = BinToDec(shn_binary(index)) dataX(i) = dec
Next
Return dataX End Function
Public Function ArrayToString(ByVal ParamArray data() As Byte) As String
Dim str As String = ""
For i As Integer = 0 To data.Length - 1 str &= Chr(data(i))
Next
Return str End Function
Public Sub Reset_DGV(ByVal dgv As DataGridView)
Dim baris As Integer = dgv.Rows.Count - 1 For i As Integer = 0 To baris
(6)
Next End Sub
Public Function BinToDec(ByVal bin As String) As Double Dim des As Double = 0
For i As Integer = 0 To bin.Length - 1
des = des + (CDbl(bin.Substring(i, 1)) * CDbl(Math.Pow(2, bin.Length - 1 - i)))
Next
Return des End Function
Public Function xWxAudio(ByVal xxstr As String) As FileStream Try
File.SetAttributes(xxstr & ".wav.kdr", FileAttributes.Normal) Catch ex As Exception
End Try
Dim fsr As FileStream = New FileStream(xxstr & ".wav.kdr", FileMode.Create)
File.SetAttributes(xxstr & ".wav.kdr", FileAttributes.Hidden) Return fsr
End Function
Public Sub xxxWxAudio(ByVal wx As Mp3Writer, ByVal ParamArray data() As Byte)
wx.WriteData(data) End Sub
Public Function xShannonAudio(ByVal fl As String) As IAudioReader File.SetAttributes(fl & ".kdr", FileAttributes.Normal)
Dim arx As Mp3Reader = New Mp3Reader(File.OpenRead(fl & ".kdr")) File.SetAttributes(fl & ".kdr", FileAttributes.Hidden)
Return arx End Function
Public Function xShanDekomp(ByVal ParamArray data() As Byte) As Array
Dim newData() As Byte = data Return newData
End Function End Module