Implementasi Algoritma Shannon-Fano Pada Kompresi Audio

(1)

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