Analisis Perbandingan Algoritma Huffman dan Run Length Encoding Pada Kompresi File Audio

(1)

LISTING PROGRAM

Algoritma Huffman 'Buttom Huffman

Private Sub btn_Huffman_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Huffman.Click

pnl_Huffman.Visible = True pnl_RLE.Visible = False pnl_Info.Visible = False alg = "Huffman"

End Sub

Module HuffmanCoding

Private Class bitsarray

Public BytesUsed As Integer Public BytesArray() As Byte Public ByteBuffer As Integer Public ByteBufferUsed As Integer Public Sub New()

BytesUsed = 0 ByteBufferUsed = 0

ReDim BytesArray(0 To 1023) End Sub

‘BYTE ARRAY

Public Sub SetArray(ByVal A() As Byte) BytesArray = A

BytesUsed = 0

ByteBufferUsed = -1 End Sub

'Menambah bit 1 ke buffer

Public Sub AddBit(ByVal BitValue As Integer) ByteBufferUsed = ByteBufferUsed + 1 BitValue = BitValue Mod 2

ByteBuffer = ByteBuffer Or (BitValue*Math.Pow(2, ByteBufferUsed- 1))

If ByteBufferUsed = 8 Then

BytesArray(BytesUsed) = ByteBuffer BytesUsed = BytesUsed + 1

ByteBuffer = 0 ByteBufferUsed = 0


(2)

ReDim Preserve BytesArray(0 To BytesUsed + 1023) End If

End If End Sub

'Membaca bit 1 dari buffer

Public Function ReadBit() As Integer If ByteBufferUsed = -1 Then

ByteBuffer = BytesArray(0) BytesUsed = 0

ByteBufferUsed = 0 End If

If ByteBufferUsed = 8 Then BytesUsed = BytesUsed + 1

ByteBuffer = BytesArray(BytesUsed) ByteBufferUsed = 0

End If

Dim Bit As Integer Bit = ByteBuffer Mod 2 ByteBuffer = ByteBuffer \ 2

ByteBufferUsed = ByteBufferUsed + 1 Return Bit

End Function

Public Function ReadBits(ByVal Bits As Integer) As Integer Dim V As Integer

Dim K As Integer V = 0

For K = 0 To Bits - 1

V = V + (Math.Pow(2, K) * ReadBit()) Next

Return V End Function

'Menambah bit ke array

Public Sub AddBits(ByVal Value As Integer, ByVal Bits As Integer)

Dim I As Integer For I = 1 To Bits

AddBit(Value Mod 2) Value = Value \ 2 Next

End Sub

‘Menyimpan bit


(3)

Do While ByteBufferUsed <> 0 AddBit(0)

Loop End Sub

'Memanggil bit array

Public Function GetBitsArray() As Byte() Dim B() As Byte

Dim I As Integer

ReDim B(0 To BytesUsed - 1) For I = 0 To BytesUsed - 1

B(I) = BytesArray(I) Next

Return B End Function End Class

'Pohon Huffman

Private Class BinaryTreeNode

Public Probability As Long

Public RightNode As BinaryTreeNode

Public LeftNode As BinaryTreeNode

Public Symbol As Integer End Class

'Menemukan kemungkinan sampel yang sering muncul

Private Function FindProbabilitiesForSymbols(ByVal Data()As Byte) As Long()

Dim B(0 To 255) As Long Dim I As Integer

'set probabilities to zero For I = 0 To 255

B(I) = 0 Next

'compute peluang

For I = 0 To Data.Length - 1 B(Data(I)) += 1

Next Return B End Function

Private Function GetSymbolCodes(ByVal N As BinaryTreeNode, ByVal Prefix As String) As Collection

If N.LeftNode Is Nothing And N.RightNode Is Nothing Then Dim C As New Collection


(4)

C.Add(Prefix) Return C End If

Dim C1 As Collection

Dim C2 As Collection

Dim C3 As New Collection

If Not N.LeftNode Is Nothing Then

C1 = GetSymbolCodes(N.LeftNode, Prefix & "0") Else

C1 = New Collection

End If

If Not N.RightNode Is Nothing Then

C2 = GetSymbolCodes(N.RightNode, Prefix & "1") Else

C2 = New Collection

End If

Dim I As Integer For I = 1 To C1.Count

C3.Add(C1(I)) Next

For I = 1 To C2.Count C3.Add(C2(I)) Next

Return C3 End Function

'Menyimpan pohon huffman

Private Sub StoreTree(ByVal Node As BinaryTreeNode, ByRef BA As bitsarray)

If Node Is Nothing Then Exit Sub

End If

If Node.Symbol <> -1 Then BA.AddBits(3, 2)

BA.AddBits(Node.Symbol, 8) Exit Sub

End If

If Not Node.LeftNode Is Nothing Then BA.AddBits(0, 2)

StoreTree(Node.LeftNode, BA) Else


(5)

BA.AddBits(2, 2) End If

If Not Node.RightNode Is Nothing Then BA.AddBits(1, 2) StoreTree(Node.RightNode, BA) Else BA.AddBits(2, 2) End If End Sub

'Membaca pohon Huffman bits array

Private Sub LoadTree(ByRef Node As BinaryTreeNode, ByVal BA As bitsarray)

Dim CMD As Integer Dim K1 As Integer Dim K2 As Integer CMD = BA.ReadBits(2) If CMD = 3 Then

Node.Symbol = BA.ReadBits(8) Return

End If

If CMD = 0 Then

Node.LeftNode = New BinaryTreeNode

LoadTree(Node.LeftNode, BA) Else

K1 = 0 End If

CMD = BA.ReadBits(2) If CMD = 1 Then

Node.RightNode = New BinaryTreeNode

LoadTree(Node.RightNode, BA) Else

K2 = 0 End If End Sub

'Fungsi Kompresi Algoritma Huffman

Public Function CompressByteArray(ByVal Data() As Byte) As Byte()

Dim P() As Long = FindProbabilitiesForSymbols(Data) Dim NodeList(0 To 255) As BinaryTreeNode

Dim NodeListUsed As Integer = 0 Dim Node As BinaryTreeNode


(6)

For I = 0 To 255 If P(I) > 0 Then

'Membuat sebuah node Node = New BinaryTreeNode

Node.Symbol = I

Node.Probability = P(I) 'Salin peluang Node.RightNode = Nothing

Node.LeftNode = Nothing

NodeList(NodeListUsed) = Node'Menambah node baru NodeListUsed += 1 'Mengupdate node baru End If

Next

Do While NodeListUsed > 1

'kemungkinan muncul node minimum Dim MinLoc1 As Integer

Dim MinLoc2 As Integer Dim N1 As BinaryTreeNode

Dim N2 As BinaryTreeNode

'Menemukan node pertama paling minimum MinLoc1 = 0

For I = 1 To NodeListUsed - 1 If NodeList(I).Probability < NodeList(MinLoc1).Probability Then

MinLoc1 = I End If

Next

'Hapus item

N1 = NodeList(MinLoc1)

For I = MinLoc1 To NodeListUsed - 2 NodeList(I) = NodeList(I + 1) Next

NodeListUsed -= 1

'Menemukan node kedua paling minimum MinLoc2 = 0

For I = 1 To NodeListUsed - 1 If NodeList(I).Probability < NodeList(MinLoc2).Probability Then

MinLoc2 = I End If


(7)

'Hapus item

N2 = NodeList(MinLoc2)

For I = MinLoc2 To NodeListUsed - 2 NodeList(I) = NodeList(I + 1) Next

NodeListUsed -= 1 'Menset parent node

Node = New BinaryTreeNode

Node.Probability = N1.Probability + N2.Probability Node.LeftNode = N1

Node.RightNode = N2 Node.Symbol = -1

'Menambah node ke daftar NodeList(NodeListUsed) = Node NodeListUsed += 1

Loop

'Sekarang sudah menghasilkan pohon huffman Dim SymbolCodes As Collection =

GetSymbolCodes(NodeList(0), "") Dim SYM(0 To 255) As String Dim I2 As Integer

For I = 0 To 255

For I2 = 1 To SymbolCodes.Count Step 2 If SymbolCodes(I2) = I Then

SYM(I) = SymbolCodes(I2 + 1) End If

Next Next

Dim BA As New bitsarray

'Simpan pohon struktur Node = NodeList(0) I = 0

BA.AddBits(Data.Length, 32) 'Panjang node

BA.AddBits(SymbolCodes.Count \ 2, 8) 'Nomor setiap simbol StoreTree(Node, BA) 'Simpan Pohon

'Saat menyimpan simbol

For I = 0 To Data.Length - 1

For I2 = 0 To SYM(Data(I)).Length - 1

BA.AddBit(SYM(Data(I)).Substring(I2, 1)) Next


(8)

BA.FlushBuffer()

Return BA.GetBitsArray End Function

'Fungsi Dekompresi Algoritma Huffman

Public Function DecompressByteArray(ByVal Data() As Byte) As Byte()

Dim BA As New bitsarray

BA.SetArray(Data)

Dim Length As Long = BA.ReadBits(32) Dim NoOfSymbols = BA.ReadBits(8) Dim Node As New BinaryTreeNode

Node.Symbol = -1 LoadTree(Node, BA)

'Sekarang sudah menghasilkan pohon huffman

Dim SymbolCodes As Collection = GetSymbolCodes(Node, "") Dim SYM(0 To 255) As String

Dim I2 As Integer For I = 0 To 255

For I2 = 1 To SymbolCodes.Count Step 2 If SymbolCodes(I2) = I Then

SYM(I) = SymbolCodes(I2 + 1) End If

Next Next

Dim Result(0 To Length - 1) As Byte Dim Bt As String = ""

Dim RC As Long = 0 Dim FLG As Boolean Do While RC < Length

FLG = False

'Cek jika bit ada dalam tabel For i = 0 To 255

If SYM(i) = Bt And bt <> "" Then Result(RC) = i

RC = RC + 1 Bt = ""

FLG = True Exit For End If

Next


(9)

'Menambah sebuah a bit Bt = Bt & BA.ReadBit End If

Loop

Return Result End Function End Module

Algoritma RLE (Run Length Encoding) 'Buttom RLE

Private Sub btn_RLE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_RLE.Click

pnl_RLE.Visible = True pnl_Huffman.Visible = False pnl_Info.Visible = False alg = "RLE"

End Sub

'Fungsi Kompresi Algoritma RLE

Function RLEEncode(ByVal Bytes As Byte()) As Byte() Dim PreviousByte As Byte = Bytes(0)

Dim ByteCount As Byte = 0 Dim OutputBytes As New

System.Collections.Generic.Queue(Of Byte)

For CurrentByte As Integer = 1 To Bytes.Length - 1 If Bytes(CurrentByte) = PreviousByte And ByteCount < 255 Then

ByteCount = CByte(ByteCount + 1) Else

OutputBytes.Enqueue(ByteCount) OutputBytes.Enqueue(PreviousByte) PreviousByte = Bytes(CurrentByte) ByteCount = 0

End If Next OutputBytes.Enqueue(ByteCount) OutputBytes.Enqueue(PreviousByte) Return OutputBytes.ToArray End Function

'Fungsi Dekompresi Algoritma RLE

Function RLEDecode(ByVal Bytes As Byte()) As Byte() Dim OutputBytes As New

System.Collections.Generic.Queue(Of Byte)


(10)

For I As Integer = 0 To Bytes(CurrentByte) OutputBytes.Enqueue(Bytes(CurrentByte + 1)) Next

Next

Return OutputBytes.ToArray End Function

'Menentukan Running Time kedua Algoritma

Private Sub Proses_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Proses.Tick

If alg = "RLE" Then ProB_R.Increment(1)

If ProB_R.Value = ProB_R.Maximum Then Proses.Stop()

lbl_Kompleksitas_R.Text =

waktuS.Elapsed.TotalMilliseconds.ToString() & " ms"

End If

ElseIf alg = "Huffman" Then ProB_H.Increment(1)

If ProB_H.Value = ProB_H.Maximum Then Proses.Stop()

lbl_Kompleksitas_H.Text = waktuS.Elapsed.Milliseconds.ToString() & " ms"

End If End If End Sub End Class


(11)

(12)

DAFTAR PUSTAKA

Adhitama, G. 2009. Perbandingan Algoritma Huffman dengan Algoritma Shannon

Fano. Skripsi. Institut Teknologi Bandung.

Faradisa, S. I. & Budiono, F. B. 2011. Implementasi Metode HUFFMAN Sebagai

Teknik Kompresi Citra. Jurnal Ilmiah. Institut Teknologi Nasional

Malang.

Ferrianto, G. & Mervyn. 2004. Analisis Perbandingan Kompresi Data Dengan Teknik

Arithmatic Coding dengan Run Length Encoding. Jurnal. Universitas

Trisakti.

Hanif, Irfan. Kompresi Teks Menggunakan Algoritma Dan Pohon Huffman. Jurnal. Institut Teknologi Bandung.

Hasibuan, N. S. 2008. Studi Perbandingan Algoritma Huffman dan Shannon Fano

Dalam Pemampatan File Teks. Skripsi .Universitas Sumatera Utara.

Kurniawan, Erick. 2010. Cepat Mahir Visual Basic 2010. Yogyakarta: Andi.

Merdiyan, M. & Indarto, W. 2007. Implementasi Algoritma Run Length, Half Byte

dan Arithmetic untuk Kompresi File. http://journal.uii.ac.id/index.php/ Snati/article/view/1391/1171. 23 Juni 2015.

Munir, Rinaldi. 2004. Pengolahan Citra Digital dengan Pendekatan Algoritmik. Bandung: Informatika.

Nugroho, A. S & Wirayuda, B. A. T. 2013. Analisis Dan Implementasi Penggunaan

Algoritma Huffman Pada Kompresi File Wav. Skripsi. Universitas

Telkom.

Rahandi, Aditya. 2009. Analisis dan Implementasi Kompresi File Audio Dengan

Menggunakan Algoritma Run Length Encoding (RLE). Jurnal. Universitas

Sumatera Utara.

Rajagukguk. M. D. 2014. Analisis Perbandingan Algoritma Huffman Dengan

Algoritma (Lempel-Zip-Welch) Pada Kompresi Gambar Menggunakan Metode Exponensial. Jurnal. STMIK Budidarma. Medan.


(13)

Roslin, Maria 2013. Perbandingan Algoritma Kompresi Terhadap Objek Citra

Menggunakan JAVA. Seminar Nasional Teknologi Informasi &

Komunikasi Terapan 2013 (SEMANTIK 2013). Semarang, 16 November 2013.

Ruckert, Martin. 2005. Understanding MP3 syntax, semantics, mathematics, and

algorithms. Birkhauser.

Sari, N. W. 2009. Kompresi File Audio Wav Menggunakan Algoritma Huffman. Skripsi. Universitas Sumatera Utara.

Suarga, 2012. Algoritma dan Pemrograman. Penerbit: Andi, Yogyakarta.

Suyantoro, S. F. I. 2012. Visual Basic 2010 Programming. Yogyakarta: Andi.

Triajiwati, F. D. 2014. Analisis Perbandingan Algoritma Zero Compresion Dengan

Difference Coding Pada Kompresi File Audio. Skripsi. Universitas

Sumatera Utara.

Wibowo, A. 2012. Kompresi Data Menggunakan Metode Huffman. Skripsi. Politeknik Negeri Batam.


(14)

ANALISIS DAN PERANCANGAN SISTEM

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

3.1. Analisa Sistem

Analisa dilakukan untuk memberikan gambaran secara umum terhadap implementasi yang akan dibuat. Hasil analisa akan menjadi dasar untuk melakukan perancangan atau desain program sesuai dengan rancangan sistem.

Yang menjadi tujuan penelitian ini adalah untuk mengkompresi dan juga mendekompresi file audio menggunakan Algoritma Huffman dan Run Length Encoding, dan bagaimana hasil perbandingan antara kedua algoritma tersebut. Dengan penelitian ini user bisa mengalami manfaatnya khususnya penggunaan file audio *.mp3 dan *.wav.

3.2. Analisa Proses

Dalam kompresi dan dekompresi file audio seperti dalam penelitian ini menggunakan algoritma Huffman dan Run Length Encoding. Untuk mengetahui bagaimana langkah-langkah kedua algoritma tersebut, berikut adalah penjelasannya.


(15)

3.2.1. Analisa Kompresi Huffman

Kode Huffman adalah angka-angka biner yang akan digunakan untuk mengkodekan setiap karakter dalam file. Pohon Huffman (Huffman Tree) adalah karakter-karakter yang akan direpresentasikan dalam biner, dipisahkan ke dalam cabang pohon biner dan diberi frekuensinya. Cabang sebelah kiri diberi bit 0 dan bit kanan diberi angka 1 sebagai identitas (Fardisa dan Budiono, 2011). Jadi, bit ini akan dibaca dari akar sampai ke daun sehingga terbentuk angka biner sebagai identitas setiap karakter.

Adapun langkah-langkah untuk membentuk pohon Huffman adalah sebagai berikut.

1. Baca semua data untuk menentukan frekuensi kemunculan masing-masing simbol pada sampel file audio.

2. Urutkan simbol sampel audio berdasarkan frekuensi kemunculannya (dari yang terkecil ke yang terbesar).

3. Gabung dua simpul bebas yang mempunyai frekuensi kemunculan paling kecil pada kumpulan simpul. Kemudian dibuat simpul pertama pada pohon Huffman dimana simpul tersebut mempunyai frekuensi yang merupakan hasil penjumlahan dari dua simpul penyusunnya.

4. Masukkan simpul pertama ke dalam kumpulan simpul dan urutkan kembali berdasarkan frekuensi kemunculannya, dari yang terkecil ke yang terbesar. 5. Ulangi langkah 2-4 sampai tersisa hanya satu pohon biner. Agar pemilihan

dua pohon yang akan digabungkan berlangsung cepat, maka semua pohon yang ada selalu terurut menaik berdasarkan frekuensi.

6. Beri label setiap sisi pada pohon biner dengan cara sisi kiri pohon diberi label 0 dan sisi kanan pohon diberi label 1.

7. Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar kedaun menyatakan kode Huffman untuk simbol yang bersesuaian.

Berikut ini adalah contoh untuk memperjelas langkah-langkah membentuk pohon Huffman. Misalnya ada sampel audio seperti berikut.

A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A2 A2 A2


(16)

C3 C3 C3 C3 C3 C3 D4 D4 D4 D4 D4 E5 E5

Dari data diatas berikut adalah langkah-langkah sampai terbentuk pohon Huffman.

a. Menentukan frekuensi atau banyaknya sampel audio yang muncul, misalnya frekuensi dari setiap sampel audio seperti pada tabel 3.1 berikut.

Tabel 3.1. Frekuensi sampel audio Sampel audio Frekuensi

A1 10

A2 8

C3 6

D4 5

E5 2

b. Setelah frekuensi dari sampel audio diketahui maka urutkan data dengan frekuensi terkecil ke terbesar, dengan masing-masing sampel sebagai simpul seperti pada gambar 3.1 berikut.

Gambar 3.1. Urutan sampel secara ascending

c. Dari gambar 3.1 sudah menunjukan sampel secara berurutan sesuai dengan frekuensi terkecil ke terbesar. Maka langkah selanjutnya adalah penggabungan dua buah simpul yang mempunyai frekuensi terkecil, seperti pada gambar 3.2 berikut.


(17)

d. Dari gambar 3.2 sudah menunjukan penggabungan dua buah simpul dengan frekuensi terkecil. Maka langkah selanjutnya adalah mengurutkan kembali seperti pada gambar 3.1 secara ascending lalu penggabungan dua buah simpul yang mempunyai frekuensi terkecil sedangkan gambar 3.2 tidak perlu diperbaharui lagi, maka seperti pada gambar 3.3 berikut.

Gambar 3.3. Pemindahan dua buah simpul urutan sampel secara ascending

e. Ulangi langkah-langkah sebelumnya sampai hanya ada satu tersisa pohon biner. Seperti pada gambar 3.4 berikut adalah penggabungan dua buah simpul terkecil.

Gambar 3.4. Penggabungan dua buah simpul

Karena ketiga simpul masih belum sesuai dengan frekunesi dari yang terkecil ke yang terbesar, maka dilakukan pemindahan sehingga kembali ascending, seperti pada gambar 3.5 berikut.


(18)

f. Langkah selanjutnya adalah menggabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil, kemudian diurutkan kembali seperti pada gambar 3.6 berikut.

Gambar 3.6. Penggabungan dua buah simpul

g. Langkah selanjutnya adalah menggabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil, sehingga hanya memiliki satu simpul seperti pada gambar 3.7 berikut.

Gambar 3.7. Penggabungan dua buah simpul

h. Maka langkah akhir pembentukan pohon Huffman adalah memberi bit 0 di sebelah kiri dan bit 1 di sebelah kanan setiap akar ke daun, seperti pada gambar 3.8 berikut.


(19)

Gambar 3.8. Pemberian bit 0 dan bit 1

Setelah melihat hasil dari pohon Huffman, dapat membuat sebuah tabel yang berisi identitas dari tiap-tiap sampel audio berdasarkan biner. Dalam proses encoding ini, prosesnya adalah baca urutan biner tiap sampel sampai edge dari pohon yang berisi sampel yang dicari. Misalnya, sampel yang dicari adalah A1, maka akan dibaca urutan sampel dari akar sampai ke A1 dengan kode biner 10. Maka gantikan sampel

audio sebelum di kompresi atau encoding menjadi kode biner seperti berikut.

A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 10 10 10 10 10 10 10 10 10 10 A2 A2 A2 A2 A2 A2 A2 A2 111 111 111 111 111 111 111 111 C3 C3 C3 C3 C3 C3

110 110 110 110 110 110 D4 D4 D4 D4 D4

0101010101 E5 E5 0000


(20)

Demikian untuk seluruh sampel-sampel seterusnya, seperti pada tabel 3.2 berikut.

Tabel 3.2. Hasil Kompresi Huffman

Sampel audio Frekuensi Kode Huffman Dalam Binary

A1 10 10

A2 8 111

C3 6 110

D4 5 01

E5 2 00

Total 31 byte 12 bit

Sebelum dilakukan kompresi maka ukuran data file audio adalah 31 byte, diperoleh dari total frekuensi kemunculan sampel dikalikan dengan 1 byte.

= + + + + + … +

Dimana:

T = Total Frekuensi ( ) f = Frekuensi setiap sampel

Cara menghitung Total frekuensi adalah:

= + + + +

= 10 + 8 + 6 + 5 + 2 = 31

Sedangkan ukuran audio setelah dikompresi menggunakan algoritma Huffman adalah sebagai berikut.

= ℎ + ℎ + ℎ + ℎ + ℎ + … + ℎ Dimana:

H = Total Kode Huffman (bit) h = bit length (bit)


(21)

Cara menghitung jumlah bit hasil kompresi algoritma Huffman. = ℎ + ℎ + ℎ + ℎ + ℎ + … + ℎ

= (2 10) + (3 8) + (3 6) + (2 5) + (2 2) = 76

= 9.5

Jadi sampel file audio yang setelah dilakukan kompresi atau decoding adalah 31 byte menjadi 9.5 byte.

3.2.2. Analisa Dekompresi Huffman

Decoding adalah kebalikan dari kompresi atau encoding, yaitu penyusunan kembali

sampel audio yang telah dikompresi menjadi sampel semula. Sebelum melakukan dekompresi file, maka harus dibentuk kembali pohon Huffman berdasarkan informasi yang disimpan dengan file yang dikompresi. Proses dekompresi dapat dilakukan dengan dua cara, yang pertama adalah dengan pohon Huffman dan yang kedua menggunakan tabel kode Huffman. Seperti pada contoh kompresi Huffman atau encoding sebelumnya. Untuk melakukan dekompresi atau decoding dapat dilakukan dengan pohon Huffman sebagai berikut.

1. Proses pembacaan simpul dimulai dari akar pohon Huffman, dengan membaca sebuah bit.

2. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian.

3. Lakukan pengulangan langkah 1 dan 2 sampai cabang yang bersesuaian ketemu setiap bagian simpul mana sampel itu berada.

4. Lakukan pengulangan langkah 1 sampai seluruh sampel audio tersebut di dekompresi.

Sebagai contoh akan men-decoding biner yang bernilai 110. Maka pohon Huffman-nya adalah seperti gambar 3.9 berikut.


(22)

Gambar 3.9. Proses Decoding dengan pohon Huffman

Pada gambar 3.9 dimulai dari akar sampai sampel yang ingin ditemukan adalah C3 dengan kode Huffman 110. Cara yang kedua adalah dengan menggunakan tabel kode Huffman, seperti pada tabel 3.2, dengan menggunakan tabel 3.2 kode biner sebagai masukan adalah sebagai berikut.

10 10 10 10 10 10 10 10 10 10 111 111 111 111 111 111 111 111 110 110 110 110 110 110

01 01 01 01 01 00 00

Saat membaca kode biner pertama adalah dari 1, karena bit yang dibaca adalah 1 maka akan dilakukan penelusuran terhadap pohon Huffman ke arah simpul sebelah kanan terlebih dahulu. Kemudian dilakukan penelusuran kembali jika 1 belum mewakili sampel maka akan dibaca bit berikutnya sehingga bit yang dibaca menjadi 10. Dan karena 10 mewakili simbol data yang bersesuaian dan berakhir pada daun maka dinyatakan bahwa 10 mewakili simbol A1.


(23)

Setelah itu dibaca kembali bit berikutnya dan lakukan penelusuran kembali terhadap pohon Huffman sehingga didapat bit-bit yang mewakili sebuah simbol data yang bersesuaian sehingga semua sampel terdekompresi seperti sampel sebelum dikompresi.

3.2.3. Analisa Kompresi Run Length Encoding

Kompresi dengan RLE adalah penjumlahkan pengulangan byte yang sama secara berturut dan jika ada byte yang tidak terjadi pengulangan maka byte tersebut tidak dikompresi. Seperti contoh pada algoritma kompresi Huffman, akan menggunakan contoh yang sama juga pada algoritma kompresi RLE, adapun langkah-langkah proses kompresi dengan algoritma Run Length Encoding sebagai berikut.

1. Pembacaan sampel audio

2. Kompresi data nilai jika ditemukan data nilai sampel yang sama secara berurutan lebih dari dua dengan cara:

a. Berikan bit penanda # pada data kompresi,

b. Tambahkan deretan bit untuk menyatakan jumlah nilai data yang sama berurutan.

c. Tambahkan deretan bit yang menyatakan sampel yang berulang. d. Konversikan semua data kompresi ke dalam hexa.

3. Simpan file audio

Berikut adalah contoh untuk memperjelas langkah-langkah kompresi dengan algoritma Run Length Encoding, misalnya ada sampel audio seperti berikut.

A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A2 A2 A2

C3 C3 C3 C3 C3 C3 D4 D4 D4 D4 D4 E5 E5

Dari sampel tersebut semua sampel mengalami pengulangan byte, seperti A1 sebanyak 10 kali, A2 sebanyak 8 kali, C3 sebanyak 6 kali, D4 sebanyak 5 kali, dan E5


(24)

sebanyak 2 kali. Jadi sampel tersebut setelah dikompresi menjadi A110A28C36D45E52. Dapat diperhatikan pada tabel 3.3 berikut.

Tabel 3.3. Hasil Kompresi RLE

Sampel Masuk Sampel

Keluar Frekuensi

Kode RLE hasil Kompresi

A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 10 A110

A2 A2 A2 A2 A2 A2 A2 A2 A2 8 A28

C3 C3 C3 C3 C3 C3 C3 6 C36

D4 D4 D4 D4 D4 D4 5 D45

E5 E5 E5 2 E52

Total 31 byte 10 byte

Seperti pada tabel 3.3 tersebut, sampel sebelum dikompresi adalah 31 byte kemudian setelah dilakukan kompresi menjadi 10 byte.

3.2.4. Analisa Deompresi Run Length Encoding

Dekompresi atau decoding RLE adalah dengan menguraikan nilai sampel yang diikuti oleh nilai sebanyak nilai sampel tersebut. Berikut adalah langkah dalam proses dekompresi algoritma Run Length Encoding.

1. Buka file audio untuk membaca header-header dan sample audio. 2. Baca file audio untuk mendapatkan data sample.

3. Ambil nilai sample audio ke 1 sampai ke n.

4. Lihat data pada hasil kompresi satu persatu dari awal sampai akhir, jika ditemukan byte penanda (#), lakukan proses pengembalian.

5. Baca posisi penanda setelah byte penanda, konversikan ke bilangan desimal untuk menentukan jumlah karakter yang berurutan.

6. Lihat data berikutnya, kemudian lakukan penulisan karakter tersebut sebanyak bilangan yang telah diperoleh pada data sebelumnya (point 5).

7. Ulangi langkah 4, 5 dan 6 sampai karakter terakhir.

Berikut adalah contoh dekompresi RLE, misalnya seperti hasil dari kompresi RLE adalah A110A28C36D45E52, dimana nilai 10 menyatakan sampel A1 yang diulang, sehingga setelah menlakukan dekompresi menjadi A1A1A1A1A1A1A1


(25)

A1A1A1A28C36D45E52, demikian seterusnya sampai sampel audio menjadi seperti semula. Dapat diperhatikan pada tabel 3.4 berikut.

Tabel 3.4. Hasil dekompresi RLE Kode RLE

hasil Kompresi

Sampel

Masuk Frekuensi Kode RLE hasil Dekompresi

A110 A1 10 A1 A1 A1 A1 A1 A1 A1 A1 A1

A1

A28 A2 8 A2 A2 A2 A2 A2 A2 A2 A2

C36 C3 6 C3 C3 C3 C3 C3 C3

D45 D4 5 D4 D4 D4 D4 D4

E52 E5 2 E5 E5

10 byte 31 byte

Seperti pada tabel 3.4 tersebut, sampel setelah dikompresi adalah 10 byte kemudian setelah dilakukan dekompresi menjadi 31 byte kembali seperti sampel semula.

3.3. Perancangan Sistem

Perancangan sistem merupakan pelengkap penyelesaian masalah, seperti pada analisa sistem yang telah dibahas sebelumnya. Termasuk penambahan, penghapusan, pengubahan yang berhubungan dengan sistem.

Dalam merancang sistem untuk kompresi dan dekompresi file audio seperti dalam penelitian ini menggunakan algoritma Huffman dan Run Length Encoding bisa dilakukan dengan flowchart untuk mempermudah dalam perancangan sistem. Pada perancangan sistem akan tampak sesuai dengan rancangan, yang akan dibahas pada bab empat pada penelitian ini.


(26)

3.3.1. Flowchart Huffman

Algoritma Huffman memiliki tiga tahapan untuk mengkompres data, yaitu pembentukan pohon, encoding dan decoding. Pada gambar 3.10 berikut menjelaskan langkah-langkah untuk membentuk pohon Huffman. Berikut adalah flowchart pohon Huffman seperti pada gambar 3.10 berikut.


(27)

Pada gambar 3.11 yaitu flowchart kompresi algoritma Huffman menjelaskan langkah-langkah kompresi file yang pertama sekali adalah membaca semua data untuk menentukan frekuensi kemunculan masing-masing simbol pada sampel file audio. Kemudian mengurutkan simbol sampel audio berdasarkan frekuanesi (dari yang terkecil ke yang terbesar). Untuk kedua simpul yang mempunyai frekuensi kemunculan paling kecil dilakukan penjumlahan dan demikian seterusnya hingga terurut menaik berdasarkan frekuensi dari terkecil ke yang terbesar.


(28)

Sebelum melakukan dekompresi file, maka harus dibentuk kembali pohon Huffman berdasarkan informasi yang disimpan dengan file yang dikompresi. Untuk melakukan dekompresi atau decoding dapat dilakukan dengan pohon Huffman seperti pada gambar 3.12 pada flowchart dekompresi Huffman berikut.


(29)

Seperti yang telah dibahas pada gambar 3.10, gambar 3.11 dan gambar 3.12 berikut adalah flowchart Algoritma Huffman yaitu langkah-langkah dari pembentukan pohon Huffman, proses kompresi, proses dekompresi dan penyimpanan file hasil kompresi dan dekompresi. Berikut adalah gambar 3.13, flowchart algoritma Huffman.


(30)

3.3.2. Flowchart Run Length Encoding

Algoritma RLE merupakan algoritma yang diterapkan untuk kompresi. Metode kompresi ini sangat sederhana, yaitu hanya memindahkan pengulangan byte yang sama berturut-turut secara terus-menerus (Rahandi, 2009). Adapun langkah-langkah proses kompresi dengan algoritma Run Length Encoding yaitu melakukan pembacaan sampel inputan audio, temukan nilai sampel yang sama secara berurutan lebih dari dua kemudian beri bit penanda # pada data kompresi, tambahkan deretan bit untuk menyatakan jumlah nilai data yang sama secara berurutan kemudian simpan file hasil kompresi. Seperti pada gambar 3.14 berikut.


(31)

Berikut adalah langkah-langkah proses dekompresi dengan algoritma Run Length Encoding yaitu melakukan pembacaan sampel inputan audio, temukan sampel hasil kompresi satu per satu, jika ditemukan byte penanda (#), maka lakukan proses pengembalian dan konersikan ke bilangan decimal untuk menentukan jumlah karakter yang berurutan, hingga ke karakter terakhir kemudian simpan file hasil dekompresi. Seperti pada gambar 3.15 berikut.


(32)

Berikut adalah flowchart Algoritma Run Length Encoding yaitu langkah-langkah dari proses kompresi, proses dekompresi dan penyimpanan file hasil kompresi dan dekompresi. Berikut adalah gambar 3.16, flowchart algoritma Run Length Encoding.


(33)

3.4. Rancangan Antar Rancangan antar muka aplikasi suatu sistem di dan sistem yang telah Encoding dibuat mengg

a. Halaman Utama S Pada saat sistem pertam pertama tampil. Pada

Label, satu buah picture

dan satu buah Timer. berikut.

Ga Keterangan:

1. Button 1 adalah tom 2. Button 2 adalah tom 3. Button 3 adalah tom

ntar Muka Sistem

uka sistem merupakan hal yang terpenting dalam dikarenakan antar muka sistem merupakan int ah dirancang. Implementasi algoritma Huffma nggunakan bahasa pemrograman Visual Basic 2010.

a Sistem

tama kali dijalankan maka halaman ini merupa da halaman ini terdiri dari enam buah Control

cture box, satu buah OpenFileDialog, satu bua er. Rancangan halaman utama sistem seperti

Gambar 3.17. Rancangan Halaman Utama

h tombol Huffman yaitu untuk menampilkan hala h tombol RLE yaitu untuk menampilkan halaman R h tombol Info yaitu untuk menampilkan halaman

lam pembuatan suatu n interaksi antara user man dan Run Length

c 2010.

upakan halaman yang

rol Button, tiga buah

buah SaveFileDialog, ti pada gambar 3.17

a

n halaman Huffman. an RLE.


(34)

4. Button 4 adalah tom 5. Button 5 adalah tom 6. Button 6 adalah tom

dikembalikan ke fil 7. Label 1 adalah kete 8. Label 2 adalah menunj 9. Label 3 adalah nam

b. Rancangan Halam Pada halaman algoritm yaitu *.mp3 atau *.wav

Button yaitu antara kom

buah Control Button, e buah ProgressBox, sat buah Timer. Rancang berikut.

Gambar 3.18. R

h tombol Exit yaitu untuk keluar dari sistem. h tombol Kompres untuk memproses file audio ya

h tombol Dekompres untuk memproses file hasi file asli.

h keterangan judul penelitian. enunjukkan waktu atau jam. h nama pembuat sistem tersebut.

laman Algoritma Huffman

itma Huffman ini user dapat menginput file audi av mauapun file *.huf. Karena pada halaman kompresi dan dekompresi. Pada halaman ini te

on, enam buah Label, satu buah Panel, dua bua

satu buah OpenFileDialog, satu buah SaveFi ngan halaman Algoritma Huffman seperti pa

ar 3.18. Rancangan Halaman Algoritma Huf

o yang sudah dipilih. hasil kompresi untuk

audio sesuai pilihan

an ini ada dua pilihan ni terdiri dari sembilan buah GroupBox, satu

FileDialog, dan satu

i pada gambar 3.18


(35)

Keterangan:

1. Button 1 adalah tombol Huffman yaitu untuk menampilkan halaman Huffman.

2. Button 2 adalah tombol RLE yaitu untuk menampilkan halaman RLE.

3. Button 3 adalah tombol Info yaitu untuk menampilkan halaman Info.

4. Button 4 adalah tombol Exit yaitu untuk keluar dari sistem.

5. Button 5 adalah tombol Kompres Huffman untuk memproses file audio yang

sudah dipilih.

6. Button 6 adalah tombol Dekompres Huffman untuk memproses file hasil

kompresi untuk dikembalikan ke file asli. 7. Button 7 adalah tombol open file audio.

8. Button 8 adalah tombol hapus isi dari TextBox 1 dan 2 atau alamat penyimpanan

file audio.

9. Button 9 adalah tombol save file audio.

10. Label 1 adalah keterangan untuk ProgressBar.

11. Label 2 adalah keterangan untuk TextBox 1.

12. Label 3 adalah keterangan untuk TextBox 2.

13. Label 4 adalah keterangan untuk kecepatan waktu proses kompresi maupun

dekompresi.

14. Label 5 adalah menunjukkan waktu atau jam.

15. Label 6 adalah nama pembuat sistem tersebut.

c. Rancangan Halaman Algoritma Run Length Encoding

Pada halaman algoritma Run length Encoding ini user dapat menginput file audio sesuai pilihan yaitu *.mp3 atau *.wav mauapun file *.rle. Karena pada halaman ini ada dua pilihan Button yaitu antara kompresi dan dekompresi. Pada halaman ini terdiri dari Sembilan buah Control Button, enam buah Label, satu buah Panel, dua buah

GroupBox, satu buah ProgressBox, satu buah OpenFileDialog, satu buah SaveFileDialog, dan satu buah Timer. Rancangan halaman Algoritma Run Length


(36)

Gambar 3.19. R

Keterangan:

1. Button 1 adalah tom

2. Button 2 adalah tom

3. Button 3 adalah tom

4. Button 4 adalah tom

5. Button 5 adalah audio yang sudah di

6. Button 6 adalah t

hasil kompresi unt 7. Button 7 adalah tom

8. Button 8 adalah t file audio.

9. Button 9 adalah tom

10. Label 1 adalah ke

11. Label 2 adalah ke

3.19. Rancangan Halaman Algoritma Run Lengt

h tombol Huffman yaitu untuk menampilkan ha h tombol RLE yaitu untuk menampilkan halama h tombol Info yaitu untuk menampilkan halama h tombol Exit yaitu untuk keluar dari sistem.

h tombol Kompres Run Length Encoding unt ah dipilih.

h tombol Dekompres Run Length Encoding unt untuk dikembalikan ke file asli.

h tombol open file audio.

h tombol hapus isi dari TextBox 1 dan 2 atau al

h tombol save file audio.

h keterangan untuk ProgressBar. h keterangan untuk TextBox 1.

ngth Encoding

halaman Huffman. man RLE.

man Info.

untuk memproses file

untuk memproses file


(37)

12. Label 3 adalah ke

13. Label 4 adalah

dekompresi. 14. Label 5 adalah m

15. Label 6 adalah na

d. Rancangan Halam Pada halaman info ini dari tiga buah Control

PictureBox, dan satu bua

G

h keterangan untuk TextBox 2.

h keterangan untuk kecepatan waktu proses

h menunjukkan waktu atau jam. h nama pembuat sistem tersebut.

laman Info

ini sebagai petunjuk penggunaan sistem. Pada

ontrol Button, lima buah Label, satu buah

u buah Timer. Rancangan halaman info seperti pa

Gambar 3.20. Rancangan Halaman Info

oses kompresi maupun

da halaman ini terdiri h Panel, tiga buah ti pada gambar.


(38)

Keterangan:

1. Button 1 adalah tombol Huffman yaitu untuk menampilkan halaman Huffman.

2. Button 2 adalah tombol RLE yaitu untuk menampilkan halaman RLE.

3. Button 3 adalah tombol Info yaitu untuk menampilkan halaman Info.

4. Button 4 adalah tombol Exit yaitu untuk keluar dari sistem.

5. Label 1 adalah keterangan untuk menu Algoritma Huffman.

6. Label 2 adalah keterangan untuk menu Algoritma Run Length Encoding.

7. Label 3 adalah keterangan untuk menu Exit.

8. Label 4 adalah menunjukkan waktu atau jam.

9. Label 5 adalah nama pembuat sistem tersebut.

10. PictureBox 1 adalah gambar untuk menu algoritma Huffman.

11. PictureBox 2 adalah gambar untuk menu algoritma Run Length Encoding.


(39)

IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi Sistem

Setelah melakukan perancangan dan analisis terhadap sistem maka selanjutnya yang harus dilakukan adalah mengimplementasikan aplikasi ke dalam bentuk program komputer. Dalam bab ini akan membahas bagaimana implementasi aplikasinya. Pada aplikasi ini penulis membangun aplikasi dengan menggunakan bahasa pemrograman Microsoft Visual Basic 2010. Implementasi ini menggunakan 2 algoritma yaitu algortima Huffman dan Run Length Encoding. Berikut ini adalah penjelasan setiap halaman atau tampilan sistem yang sudah dirancang.

4.1.1. Halaman Utama Sistem

Halaman utama adalah halaman yang pertama kali tampil ketika sistem dijalankan. Pada halaman utama terdapat empat menu yaitu menu algoritma Huffman dan menu algoritma RLE (Run Length Encoding), menu Home, menu About dan Exit. Pada halaman utama sistem terdapat juga nama penulis, waktu, dan judul penelitian. Tampilan halaman utama dapat dilihat pada gambar 4.1 berikut.


(40)

(41)

(42)

(43)

(44)

(45)

=


(46)

Dari persamaan diatas, berikut merupakan table 4.1 hasil dari lima percobaan proses kompresi file audio berformat *.mp3 menggunakan algoritma Huffman dan Run Length Encoding.

Tabel 4.1. Perbandingan Kompresi File Audio (*.mp3) menggunakan Algoritma Huffman dan RLE

No Nama File Ukuran Asli

Metode Rasio (%)

Huffman RLE Huffman RLE

1 Test1.mp3 1.39 Mb 1.38 Mb 2.76 Mb 0.72 % -98 %

2 Test2.mp3 144 Kb 143 Kb 278 Kb 0.69 % -93 %

3 Test3.mp3 1.26 Mb 1.26 Mb 2.51 Mb 0 % -99.2 % 4 Test4.mp3 1.04 Mb 989 Kb 1.80 Mb 4.9 % -82 % 5 Test5.mp3 1.22 Mb 1.21 Mb 2.44 Mb 0.82 % -100 %

Rata-rata Rasio Kompresi 1.426 % -94.44 %

Berikut merupakan tabel 4.2 hasil dari lima percobaan proses kompresi file

audio berformat *.wav menggunakan algoritma Huffman dan Run Length Encoding.

Tabel 4.2. Perbandingan Kompresi File Audio (*.wav) menggunakan Algoritma Huffman dan RLE

No Nama File Ukuran Asli

Metode Rasio (%)

Huffman RLE Huffman RLE

1 Test1.wav 21.8 Kb 6.8 Kb 16.9 Kb 66.8 % 77.52 % 2 Test2.wav 137 Kb 117 Kb 242 Kb 14.59 % -76.64 % 3 Test3.wav 106 Kb 71.9 Kb 179 Kb 32.16 % -68.86 % 4 Test4.wav 172 Kb 138 Kb 320 Kb 19.77 % -86.04 % 5 Test5.wav 131 Kb 116 Kb 230 Kb 11.45 % -75.57 %

Rata-rata Rasio Kompresi 28.954 % -45.91 %

Dari percobaan pada tabel 4.1 yang menjadi kesimpulan untuk rata-rata rasio kompresi algoritma Huffman pada file *.mp3 adalah 1.426 % sedangkan algoritma RLE adalah -94.44 %. Sedangkan dari percobaan pada tabel 4.2 yang menjadi


(47)

a.mp3 b.mp3 c.mp3 d.mp3 e.mp3 Huffman 0.72% 0.69% 0% 3.79% 0.82% RLE -98% -93% -99.20% -82% -100%

-120.00% -100.00% -80.00% -60.00% -40.00% -20.00% 0.00% Pe rs en ta se

a.wav b.wav c.wav d.wav e.wav Huffman 66.80% 14.59% 32.16% 19.77% 11.45% RLE 77.52% -76.64% -68.86% -86.04% -75.57% -100.00% -80.00% -60.00% -40.00% -20.00% 0.00% 20.00% 40.00% 60.00% 80.00% 100.00% Pe rs en ta se

Grafik Rasio Kompresi File .wav

Nama File


(48)

4.3. Perhitungan Kompleksitas Waktu

Perhitungan Kompleksitas waktu dieperlukan untuk melihat waktu yang diperlukan komputer untuk memproses data.

4.3.1. Perhitungan Kompleksitas Waktu Algoritma Huffman

Berikut adalah tabel perhitungan kompleksitas waktu untuk algoritma Huffman dapat dilihat pada tabel 4.3. berikut.

Tabel 4.3. Perhitungan Kompleksitas Waktu Algoritma Huffman a. Kompresi

No Code C # C*#

1. As BytePublic Function) As Byte() CompressByteArray(ByVal Data() C1 1 C1n

2. FindProbabilitiesForSymbols(Data)Dim P() As Long = C2 n C2n 3. Dim NodeList(0 To 255) As BinaryTreeNode C2 n C2n

4. Dim NodeListUsed As Integer = 0 C2 n C2n

5. Dim Node As BinaryTreeNode C2 n C2n

6. Dim I As Integer C2 n C2n

7. For I = 0 To 255 C3 n C3n

8. If P(I) > 0 Then C4 n C4n

9. Node = New BinaryTreeNode C5 n C5n

10. Node.Symbol = I C5 n C5n

11. Node.Probability = P(I) C5 n C5n

12. Node.RightNode = Nothing C5 n C5n

13. Node.LeftNode = Nothing C5 n C5n

14. NodeList(NodeListUsed) = Node C5 n C5n

15.

NodeListUsed += 1

End If

Next C5 n C5n

16. Do While NodeListUsed > 1 C6 n C6n

17. Dim MinLoc1 As Integer C2 n C2n

18. Dim MinLoc2 As Integer C2 n C2n

19. Dim N1 As BinaryTreeNode C2 n C2n

20. Dim N2 As BinaryTreeNode C2 n C2n

21. MinLoc1 = 0 C5 n C5n

22. For I = 1 To NodeListUsed - 1 C3 n C3n


(49)

24.

MinLoc1 = I

End If

Next C5 n C5n

25. N1 = NodeList(MinLoc1) C5 n C5n

26. For I = MinLoc1 To NodeListUsed - 2 C3 n C3n

27. NextNodeList(I) = NodeList(I + 1) C5 n C5n

28. NodeListUsed -= 1 C5 n C5n

29. MinLoc2 = 0 C5 n C5n

30. For I = 1 To NodeListUsed - 1 C3 n C3n

31. NodeList(MinLoc2).ProbabilityIf NodeList(I).Probability <Then C4 n C4n 32.

MinLoc2 = I

End If

Next C5 n C5n

33. N2 = NodeList(MinLoc2) C5 n C5n

34. For I = MinLoc2 To NodeListUsed - 2 C3 n C3n

35.

NodeList(I) = NodeList(I + 1)

Next

NodeListUsed -= 1

Node = New BinaryTreeNode

Node.Probability = N1.Probability + N2.Probability

Node.LeftNode = N1 Node.RightNode = N2 Node.Symbol = -1

NodeList(NodeListUsed) = Node NodeListUsed += 1

Loop

C5 n C5n

36. GetSymbolCodes(NodeList(0),Dim SymbolCodes As Collection"") = C2 n C2n

37. Dim SYM(0 To 255) As String C2 n C2n

38. Dim I2 As Integer C2 n C2n

39. For I = 0 To 255 C3 n C3n

40. For I2 = 1 To SymbolCodes.Count Step 2 C3 n C3n

41.

If SymbolCodes(I2) = I Then

SYM(I) = SymbolCodes(I2 + 1)

End If Next Next

C4 n C4n

42. Dim BA As New bitsarray C2 n C2n

43. Node = NodeList(0) C5 n C5n


(50)

45.

BA.AddBits(Data.Length, 32)

BA.AddBits(SymbolCodes.Count \ 2, 8)

StoreTree(Node, BA) C6 n C6n

46. For I = 0 To Data.Length - 1 C3 n C3n

47. For I2 = 0 To SYM(Data(I)).Length - 1 C3 n C3n

48.

BA.AddBit(SYM(Data(I)).Substring(I2, 1))

Next

Next C6 n C6n

49.

BA.FlushBuffer()

Return BA.GetBitsArray

End Function C6 n C6n

b. Dekompresi

50. Data()Public FunctionAs Byte) As ByteDecompressByteArray(() ByVal C1 1 C1

51. Dim BA As New bitsarray C2 n C2n

52. BA.SetArray(Data) C6 n C6n

53. Dim Length As Long = BA.ReadBits(32) C2 n C2n

54. Dim NoOfSymbols = BA.ReadBits(8) C2 n C2n

55. Dim Node As New BinaryTreeNode C2 n C2n

56. Node.Symbol = -1 C5 n C5n

57. LoadTree(Node, BA) C6 n C6n

58. GetSymbolCodes(Node,Dim SymbolCodes"")As Collection = C2 n C2n

59. Dim SYM(0 To 255) As String C2 n C2n

60. Dim I2 As Integer C2 n C2n

61. For I = 0 To 255 C3 n C3n

62. For I2 = 1 To SymbolCodes.Count Step 2 C3 n C3n

63. If SymbolCodes(I2) = I Then C4 n C4n

64.

SYM(I) = SymbolCodes(I2 + 1)

End If Next Next

C5 n C5n

65. Dim Result(0 To Length - 1) As Byte C2 n C2n

66. Dim Bt As String = "" C2 n C2n

67. Dim RC As Long = 0 C2 n C2n

68. Dim FLG As Boolean C2 n C2n

69. Do WhileFLG =RC < LengthFalse C6 n C6n


(51)

71.

If SYM(i) = Bt And bt <> "" Then

Result(RC) = i RC = RC + 1

Bt = ""

FLG = True Exit For End If Next

C4 n C4n

72.

If Not FLG Then

Bt = Bt & BA.ReadBit

End If Loop

Return Result

End Function End Module

C4 n C4n

T(|n|) = (C1) n0+ (24C2+12C3+ 7C4+ 21C5+7C6) n1

=θn Log n

Sesuai dengan penghitungan ang menjadi kompleksitas algoritma Huffman adalah

T(|n|) = θ n Log n. Misalnya nilai n=1.000.000 maka nilai kompleksitas T(|n|) = θ n Log n adalah T(|n|) = 1.000.0000 Log 1.000.000 = 6.000.000.

4.3.2. Perhitungan Kompleksitas Waktu Algoritma Run Length Encoding

Berikut adalah tabel perhitungan kompleksitas waktu untuk algoritma Huffman dapat dilihat pada tabel 4.5. berikut.

Tabel 4.4. Perhitungan Kompleksitas Waktu Algoritma RLE a. Kompresi

No Code C # C*#

1. ByteFunction() RLEEncode(ByVal Bytes As Byte()) As C1 1 C1

2. Dim PreviousByte As Byte = Bytes(0) C2 1 C2

3. Dim ByteCount As Byte = 0 C2 1 C2

4. System.Collections.Generic.Dim OutputBytes As NewQueue(Of Byte) C2 1 C2 5. Bytes.Length – 1For CurrentByte As Integer = 1 To C3 n C3n 6. ByteCount < 255If Bytes(CurrentByte) = PreviousByteThen And C4 n C4n


(52)

8. Else

C6 n C6n

9. OutputBytes.Enqueue(ByteCount) n C6n

10. OutputBytes.Enqueue(PreviousByte) C6 n C6n

11. PreviousByte = Bytes(CurrentByte) C6 n C6n

12. ByteCount = 0

End If

Next C6 n C6n

13. 14.

15. OutputBytes.Enqueue(ByteCount) C6 n C6n

16. OutputBytes.Enqueue(PreviousByte) C6 n C6n

17. End FunctionReturn OutputBytes.ToArray C7 n C7n

b. Dekompresi

19. Function RLEDecode(ByVal Bytes As Byte()) As

Byte() C1 1 C1

20. Dim OutputBytes As New

System.Collections.Generic.Queue(Of Byte) C2 1 C2 21. For CurrentByte As Integer = 0 To

Bytes.Length - 1 Step 2 C3 n C3n

22. For I As Integer = 0 To

Bytes(CurrentByte) C3 n C3n

23.

OutputBytes.Enqueue(Bytes(CurrentByte + 1))

Next Next

C6 n C6n

24. Return OutputBytes.ToArray

End Function C7 n C7n

T(|n|) = (C1+ C2) n0+ (3C3+ C4+ C5+ 8C6+ 2C7) n1

=θ(n)

Sesuai dengan penghitungan ang menjadi kompleksitas algoritma Huffman adalah T(|n|) = θ (n). Misalnya nilai n=1.000.000 maka nilai kompleksitas T(|n|) = θ

(n) adalah T(|n|) = 1.000.00001= 1.000.000.

Maka dalam penghitungan kompleksitas algoritma Huffman dan Run Length Encoding yang lebih baik adalah Run Length Encoding.


(53)

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Percobaan kompresi file yang dilakukan sebanyak total sepuluh kali, menghasilkan kesimpulan sebagai berikut.

1. Pada file audio berformat *.wav dan *.mp3, algoritma Huffman dapat menghasilkan rasio kompresi dengan persentase yang lebih kecil dibandingkan dengan algoritma Run Length Encoding, karena rata-rata rasio kompresi nya adalah sebagai berikut.

a. Rata-rata rasio kompresi file *.mp3 dengan lima kali percobaan menggunakan algoritma Huffman adalah 1.426% sedangkan menggunakan algoritma RLE adalah -94.44%, dan

b. Rata-rata rasio kompresi file *.wav dengan lima kali percobaan menggunakan algoritma Huffman adalah 28.954% sedangkan menggunakan algoritma RLE adalah -45.91%.

Sehingga dapat disimpulkan bahwa algoritma Huffman lebih baik dari pada algoritma RLE dalam kompresi file audio *.mp3 maupun *.wav.

2. Penghitungan kompleksitas waktu algoritma Huffman adalah T(|n|) =θ n Log n sedangkan algoritma Run Length Encoding adalah T(|n|) =θ(n).

5.2. Saran

Berikut adalah beberapa saran yang diberikan penulis setelah melakukan penelitian untuk penelitian-penelitian selanjutnya.

1. Peneliatian ini dapat dikembangkan dengan menggunakan algoritma lain selain algoritma Huffman dan Run Length Encoding.


(54)

2. Penambahan kriteria untuk mendapatkan hasil yang lebih bervariasi dan akurat. 3. Sebaiknya user interface aplikasi lebih dikembangkan lagi agar lebih user

friendly.


(55)

LANDASAN TEORI

2.1. Kompresi File

Pada dasarnya semua data itu merupakan rangkaian bit 0 dan 1. Yang membedakan antara suatu data tertentu dengan data yang lain adalah ukuran dari rangkaian bit dan bagaimana 0 dan 1 itu ditempatkan dalam rangkaian bit tersebut. Misalnya data berupa audio, dalam data audio suatu rangkaian bit tertentu mewakili satu nada. Semakin kompleks suatu data, ukuran rangkaian bit yang diperlukan semakin panjang, dengan demikian ukuran keseluruhan data juga semakin besar. Dalam penyimpanan dan pengiriman data (transmisi), selain isi dari data tersebut parameter yang tidak kalah pentingnya adalah ukurannya (size). Sering kali data yang disimpan dalam suatu media penyimpanan berukuran sangat besar sehingga memerlukan tempat yang lebih banyak dan tidak efisien. Apalagi bila data tersebut akan dikirim, semakin besar ukurannya, waktu yang diperlukan untuk pengiriman akan lebih lama. Untuk itu, diperlukan kompresi data (data compression) untuk memperkecil ukuran suatu data tanpa merubah isi atau informasi yang terkandung dalam data tersebut (Munir, 2004).

Data tidak hanya disajikan dalam bentuk audio maupun video, tetapi juga dapat berupa teks dan gambar. Keempat macam data tersebut sering disebut dengan multimedia. Pada umumnya data digital membutuhkan memori yang besar, disisi lain kebanyakan data misalnya gambar mengandung duplikasi. Duplikasi ini dapat berarti dua hal yaitu pertama, besar kemungkinan suatu pixel dengan pixel lain tetangganya memiliki intensitas yang sama, sehingga penyimpanan setiap pixel memboroskan tempat. Kedua, gambar banyak mengandung bagian yang sama, sehingga bagian yang sama ini tidak perlu dikodekan berulang kali. Saat ini, kebanyakan aplikasi menginginkan representasi dengan memori yang lebih sedikit. Kompresi data (data


(56)

compression) bertujuan 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 semula.

Data yang telah dikompresi dapat dikembalikan ke bentuk data semula (dekompresi) dimana hal ini tergantung pada aplikasi software yang mendukung kompresi tersebut. Ketika suatu aplikasi mampu menghilangkan atau mengkompresi data yang tidak dibutuhkan maka aplikasi tersebut juga mampu mengembalikan data yang dihilangkan tersebut sehingga menjadi data semula.

Pengiriman data hasil kompresi dapat dilakukan jika pihak pengirim atau yang melakukan kompresi dan pihak penerima memiliki aturan yang sama dalam hal kompresi data. Pihak pengirim harus menggunakan algoritma kompresi data yang sudah baku dan pihak penerima juga menggunakan teknik dekompresi data yang sama dengan pengirim sehingga data yang diterima dapat dibaca/di-decode kembali dengan benar.

2.2. Jenis-Jenis Kompresi File

2.2.1. Lossy Compression

Kompresi Lossless memiliki batasan pada jumlah kompresi. Namun, dalam beberapa situasi, kita bisa mengorbankan akurasi untuk meningkatkan tingkat kompresi. Meskipun kita tidak mampu kehilangan informasi dalam kompresi teks, kita bisa membelinya ketika kita mengompresi gambar, video, dan audio. Misalnya, penglihatan manusia tidak dapat mendeteksi beberapa distorsi kecil yang dapat hasil dari kompresi lossy dari suatu gambar (Munir, 2004).

2.2.2. Lossless compression

Dalam Lossless compresion, integritas data sangat terjaga karena algoritma kompresi dan dekompresi invers tepat satu sama lain, tidak ada bagian dari data yang hilang


(57)

dalam proses. Metode kompresi lossless biasanya digunakan ketika kita tidak ingin kehilangan data apapun. Kompresi lossless juga diterapkan sebagai langkah terakhir dalam beberapa prosedur kompresi lossy untuk mengurangi ukuran data. Empat contoh metode kompresi lossless dalam bagian ini: Run Length Coding, Dictiinary Coding, Huffman Coding, dan Arithmatic Coding (Munir, 2004).

2.3. Jenis-Jenis File Audio

2.3.1. File *.wav

WAV adalah format audio standar Microsoft dan IBM untuk personal computer (PC), biasanya menggunakan coding PCM (Pulse Code Modulation). WAV adalah data tidak terkompres sehingga seluruh sampel audio disimpan semuanya di harddisk.

Software yang dapat menciptakan WAV dari analog sound misalnya adalah Windows Sound Recorder. File audio ini jarang sekali digunakan di internet karena ukurannya

yang relatif besar dengan batasan maksimal untuk file WAV adalah 2 GB (Nugroho, A. S & Wirayuda, 2013).

Parameter-parameter tersebut menyatakan setting yang digunakan oleh ADC

(Analog-to-Digital Converter) pada saat data audio direkam. Biasanya laju sampel

juga dinyatakan dengan satuan Hz atau kHz. Sebagai gambaran, data audio digital yang tersimpan dalam CD audio memiliki karakteristik laju sampel 44100 Hz, 16 bit per sampel, dan 2 kanal (stereo), yang berarti setiap satu detik suara tersusun dari 44100 sampel, dan setiap sampel tersimpan dalam data sebesar 16-bit atau 2 byte. Laju sampel selalu dinyatakan untuk setiap satu kanal. Jadi misalkan suatu data audio digital memiliki 2 kanal dengan laju sampel 8000 sampel/detik, maka sesungguhnya di dalam setiap detiknya akan terdapat 16000 sampel (Nugroho, A. S & Wirayuda, 2013).

2.3.2. File *.mp3

MPEG (Moving Picture Expert Group)-1 audio layer III atau yang lebih dikenal dengan mp3, adalah salah satu dari pengkodean dalam digital audio dan juga


(58)

merupakan format kompresi audio yang memiliki sifat “menghilangkan”. Istilah menghilangkan yang dimaksud adalah kompresi audio ke dalam format MP3 menghilangkan aspek-aspek yang tidak signifikan pada pendengaran manusia untuk mengurangi besarnya file audio (Ruckert, 2005).

Kompresi yang dilakukan oleh mp3 seperti yang telah disebutkan diatas, tidak mempertahankan bentuk asli dari sinyal input. Melainkan yang dilakukan adalah menghilangkan suara-suara yang keberadaannya kurang atau tidak signifikan bagi sistem pendengaran manusia. Proses yang dilakukan adalah menggunakan model dari sistem pendengaran manusia dan menentukan bagian yang terdengar bagi sistem pendengaran manusia. Setelah itu sinyal input yang memiliki domain waktu dibagi menjadi blok-blok dan ditransformasi menjadi domain frekuensi. Kemudian model dari sistem pendengaran manusia dibandingkan dengan sinyal input dan dilakukan proses penyaringan yang menghasilkan sinyal dengan range frekuensi yang signifikan bagi sistem pendengaran manusia. Proses diatas adalah proses konvolusi dua sinyal yaitu sinyal input dan sinyal model sistem pendengaran manusia.

Langkah terakhir adalah kuantisasi data, dimana data yang terkumpul setelah penyaringan akan dikumpulkan menjadi satu keluaran dan dilakukan pengkodean dengan hasil akhir file dengan format mp3. Kepopuleran dari mp3 yang sampai saat ini belum tersaingi disebabkan oleh beberapa hal. Pertama mp3 dapat didistribusikan dengan mudah dan hampir tanpa biaya, walaupun sebenarnya hak paten dari mp3 telah dimiliki dan penyebaran mp3 seharusnya dikenai biaya. Walaupun begitu, pemilik hak paten dari mp3 telah memberikan pernyataan bahwa penggunaan mp3 untuk keperluan perorangan tidak dikenai biaya. Keuntungan lainnya adalah kemudahaan akses mp3, dimana banyak software yang dapat menghasilkan file mp3.

Dalam mengkompresi file audio, ada beberapa metode atau algoritma yang bisa dipakai seperti algoritma Huffman dan algoritma Run Length Encoding.


(59)

2.4. Alat Bantu Perancangan Perangkat Lunak

Alat bantu yang digunakan dalam perancangan perangkat lunak ini adalah sebagai berikut.

Flowcharting adalah suatu teknik untuk menyusun rencana program yang telah

diperkenalkan dan telah dipergunakan oleh kalangan pemrogram komputer sebelum algoritma menjadi populer. Flowchart adalah untaian simbol gambar (chart) yang menunjukkan aliran (flow) dari proses terhadap data (Suarga, 2012).

Ada dua kategori simbol flowchart menurut Dr. Suarga (2012), yaitu program

flowchart dan sistem flowchart, yakni:

1. Program flowchart, yaitu simbol-simbol flowchart yang digunakan untuk menggambarkan logik dari pemrosesan terhadap data. Adapun simbol-simbol Program flowchart seperti pada Tabel 2.1 berikut.

Tabel 2.1. Simbol Program Flowchart

No Simbol Keterangan

1

Terminator, mulai atau selesai.

2

Proses, menyatakan proses terhadap data.

3

Input/Output, menerima atau menampilkan output


(60)

4

Seleksi/Pilihan, memilih aliran berdasarkan syarat.

5

Predefined-Data, definisi awal dari variabel atau

data.

6

Predefined-Process, lambang fungsi atau sub-program.

7

Connector, penghubung.

2. Sistem Flowchart, merupakan simbol-simbol peralatan sistem komputer yang digunakan untuk menyatakan proses pengolahan data.

Tabel 2.2. Simbol Sistem Flowchart

No Simbol Keterangan

1 Manual input, Keyboard

2 File/ Storage


(61)

4 Merge

5 Extract

6 Sorting

2.5. Algoritma

Beberapa definisi algoritma (Suarga, 2012), adalah sebagai berikut.

1. Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun secara logis dan sistematis.

2. Suatu prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkah-langkah tertentu dan terbatas jumlahnya.

3. Susunan langkah yang pasti, yang bila diikuti maka akan mentransformasi data input menjadi output yang berupa informasi.

Berikut adalah penjelasan algoritma yang digunakan pada penelitian kompresi file, yaitu.

2.5.1. Algoritma Huffman

Algoritma Huffman adalah salah satu algoritma kompresi tertua yang disusun oleh David Huffman pada tahun 1952. Algoritma tersebut digunakan untuk membuat kompresi jenis lossless compression, yaitu pemampatan data dimana tidak satu byte


(62)

pun hilang sehingga data tersebut utuh dan disimpan sesuai dengan aslinya. Pada dasarnya, algoritma Huffman ini bekerja seperti mesin sandi morse, dia membentuk suatu kode dari suatu karakter. Sehingga karakter tersebut memiliki rangkaian bit yang lebih pendek dibandingkan sebelumnya (Rajagukguk, 2014).

Pada awalnya David Huffman hanya meng-encoding karakter dengan hanya menggunakan pohon biner biasa, namun setelah itu David Huffman menemukan bahwa penggunaan algoritma greedy dapat membentuk kode prefiks yang optimal. Penggunaan algoritma greedy pada algoritma Huffman adalah pada saat pemilihan dua pohon dengan frekuensi terkecil dalam membuat pohon Huffman. Algoritma greedy ini digunakan pada pembentukan pohon Huffman agar meminimumkan total cost yang dibutuhkan. Cost yang digunakan untuk menggabungkan dua buah pohon pada akar setara dengan jumlah frekuensi dua buah pohon yang digabungkan, oleh karena itu total cost pembentukan pohon Huffman adalah jumlah total seluruh penggabungan. penggabungan dua buah pohon dilakukan setiap langkah dan algoritma Huffman selalu memilih dua buah pohon yang mempunyai frekuensi terkecil untuk meminimumkan total cost (Wardoyo, Irwan et al, 2003).

Adapun tahapan dari algoritma Huffman adalah yang pertama membuat sebuah pohon berupa simpul daun dan anak-anaknya yang memiliki probabilitas dari seringnya munculnya karakter. Proses kedua adalah proses encoding, dari pohon tersebut, tiap karakternya akan memiliki identitas berupa bilangan biner untuk disimpan pada memori. Proses pembentukan dari karakter menjadi biner inilah yang disebut dengan proses encoding. Untuk lebih jelasnya bagaimana encoding itu akan diperjelas ketika pohon telah dibuat. Proses ketiga yaitu proses decoding adalah proses kebalikan dari encoding, yaitu mengembalikan dari angaka-angka biner yang pendek diubah lagi menjadi karakter yang panjang lagi dan tanpa ada kehilangan data dari data asli.


(63)

2.5.2. Algoritma RLE (Run Length Encoding)

Teknik run length ini bekerja berdasarkan sederetan karakter yang berurutan. Run Length Encoding adalah suatu algoritma kompresi data yang bersifat lossless. Algoritma ini mungkin merupakan algoritma yang mudah untuk dipahami dan diterapkan untuk kompresi. Metode kompresi ini sangat sederhana, yaitu hanya memindahkan pengulangan byte yang sama berturut-turut secara terus-menerus (Rahandi, 2009).

2.6. Rasio Kompresi

Menurut David Salomon (2007), tingkat pengurangan data yang dicapai sebagai hasil dari proses kompresi disebut rasio kompresi. Rasio ini merupakan perbandingan antara panjang data asli dengan panjang data yang sudah dikompresi, seperti dituliskan dalam persamaan berikut.

=

Jika dinyatakan dalam persentase maka dituliskan dalam persamaan berikut.

= − %

Yang berarti ukuran file berkurang sebesar P (dalam persentase) dari ukuran semula. Semakin tinggi rasio tingkat suatu teknik kompresi data maka semakin efektif teknik kompresi tersebut.

2.7. Kompleksitas Waktu

Perhitungan Kompleksitas waktu merupakan waktu yang dibutuhkan oleh sebuah sistem untuk menginput file audio yang akan dikompresi sampai dengan selesainya proses kompresi dan dekompresi.


(64)

PENDAHULUAN

1.1. Latar Belakang Masalah

Dalam perkembangan teknologi saat ini, komputer digunakan untuk membantu dan mempercepat kinerja manusia. Dalam hal komunikasi data, pesan yang dikirim seringkali ukurannya sangat besar sehingga waktu pengirimannya lama. Begitu juga dalam penyimpanan data, arsip atau file yang berukuran besar membutuhkan ruang penyimpanan yang besar. Kedua masalah tersebut dapat diatasi dengan mengkodekan pesan atau isi arsip sesingkat mungkin, sehingga waktu pengiriman data juga relatif cepat, dan ruang penyimpanan yang dibutuhkan juga sedikit. Cara pengkodean seperti ini disebut pemampatan atau kompresi data.

Pada umumnya file audio memiliki ukuran yang lebih besar dibandingkan file teks, file gambar sehingga untuk mengurangi ukurannya dapat dilakukan kompresi. Seperti teknik kompresi pada umumnya ada dua jenis kompresi data yaitu lossy dan

lossless. Kompresi lossless adalah kompresi file, file dikembalikan seperti data asli tanpa

mengalami perubahan atau data tidak ada yang hilang. Maka salah satu solusi untuk masalah di atas adalah melakukan kompresi data sebelum ditransmisikan dan kemudian si penerima akan melakukan dekompresi dengan mengubahnya kembali secara sempurna tanpa terjadi kehilangan informasi dari data asli.

Algoritma Huffman merupakan algortima yang terkenal untuk kompresi data atau

file bersifat lossless. Algoritma Huffman memiliki tiga tahapan untuk mengkompres data,


(65)

yang berkerja berdasarkan karakter per karakter, sedangkan algoritma Run Length Encoding bekerja sederetan karakter yang berurutan. Algoritma Run Length Encoding adalah algoritma kompresi data bersifat lossless juga.

Dalam analisis perbandingan kompresi file audio menggunakan algoritma Huffman dan Run Length Encoding yang mana paling ideal sehingga melakukan penelitian yang berjudul: “Analisis Perbandingan Algoritma Huffman Dan Run Length Encoding Pada Kompresi File Audio”.

1.2. Rumusan Masalah

Berdasarkan latar belakang yang sudah dipaparkan sebelumnya yang akan dibahas pada penelitian ini adalah bagaimana hasil perbandingan menggunakan Algoritma Huffman dan Run Length Encoding pada kompresi file audio?

1.3. Batasan Masalah

Yang menjadi batasan masalah dalam penelitian ini adalah sebagai berikut: 1. File audio yang dikompresi adalah format *.wav, *.mp3.

2. Penelitian ini hanya membahas tentang Algoritma Huffman dan Run Length Encoding untuk kompresi file audio.

3. Aplikasi ini membandingkan hasil algoritma Huffman dan Run Length Encoding. 4. Parameter yang digunakan adalah rasio kompresi dan kompleksitas waktu.

5. Bahasa pemrograman yang digunakan adalah Visual Basic .Net 2010.

1.4. Tujuan Penelitian

Tujuan penelitian ini adalah untuk menganalisis dan memahami perbandingan Algoritma Huffman dan Run Length Encoding dalam mengkompresi file audio (*.wav dan *.mp3).


(66)

1.5. Manfaat Penelitian

Manfaat penelitian ini adalah untuk menentukan algoritmana yang paling ideal dalam pengkompresian file audio, lebih efisien dalam penyimpanan dan proses transmisi tanpa mengurangi kualitasnya, dan lebih memahami teknik kompresi file audio.

1.6. Metodologi Penelitian

Metode penelitian yang digunakan dalam penulisan tugas akhir ini adalah sebagai berikut: 1. Studi Literatur

Pada tahap ini melakukan studi kepustakaan dengan mengumpulkan data yang diperlukan melalui buku, skripsi, makalah, jurnal dan sumber lain yang menunjang penulisan skripsi ini baik studi tentang audio, teknik kompresi dan dekompresi, dan algoritma Huffman dan Run Length Encoding.

2. Analisis

Pada tahap ini digunakan untuk mengolah data yang sudah ada melalui hasil studi literatur yang sudah diperoleh, contoh: memahami cara kerja algoritma, menganalisis dan membaut laporan tentang hasil analisis algoritma, menggambarkan sistem dengan menggunakan flowchart, sehingga menjadi suatu informasi.

3. Perancangan Perangkat Lunak

Pada tahap ini melakukan perancangan perangkat lunak dari seluruh hasil analisa dan hasil studi literatur. Termasuk didalamnya yaitu perancangan flowchart, user

interface untuk memudahkan dalam penulisan kode program.

4. Pengujian Sistem

Pada tahap ini dilakukan input data dan melaukan proses untuk menghasilkan


(67)

5. Implementasi

Pada tahap ini dilakukan dengan mengimplementasi rancangan sistem pada proses kompresi file audio (*.wav dan *.mp3).

6. Penyusunan laporan dan kesimpulan akhir

Pada tahap ini dilakukan pembuatan laporan hasil analisa dan perancangan ke dalam format penulisan skripsi.

1.7. Sistematika Penulisan

Sistematika penulisan tugas akhir ini dibagi menjadi lima bab, yaitu sebagai berikut:

BAB 1 PENDAHULUAN

Bab ini berisikan penjelasan tentang Latar Belakang, Rumusan Masalah, Batasan Masalah, Tujuan Penelitian, Manfaat Penelitian, dan Metodologi Penelitian.

BAB 2 LANDASAN TEORI

Bab ini akan membahas teori-teori yang berkaitan dengan kompresi file, algoritma Huffman dan Run Length Encoding.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisi proses pembuatan algoritma program, flowchart sistem, dan pembuatan user interface aplikasi.

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Bab ini membahas bagaimana penerapan algoritma Huffman dan Run Length Encoding dan pengujian terhadap program dengan menggunakan Microsoft Visual Basic 2010.


(68)

BAB 5 KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dari seluruh pembahasan yang ada pada bab sebelumnya dan saran yang berguna untuk melakukan perbaikan dan pengembangan penelitian ini.


(69)

ANALISIS PERBANDINGAN ALGORITMA HUFFMAN DAN RUN LENGTH ENCODING PADA

KOMPRESI FILE AUDIO

ABSTRAK

Penelitian ini dilakukan untuk menganalisis perbandingan hasil kompresi dan dekompresi file audio *.mp3 (Moving Picture Expert Group) -1 audio layer III) dan *.wav. Kompresi dilakukan dengan mengurangi jumlah bit yang diperlukan untuk menyimpan atau mengirim file tersebut. Pada penelitian ini penulis menggunakan algoritma Huffman dan Run Length Encoding yang merupakan salah satu teknik kompresi yang bersifat lossless. Algoritma Huffman memiliki tiga tahapan untuk mengkompres data, yaitu pembentukan pohon, encoding dan decoding dan berkerja berdasarkan karakter per karakter. Sedangkan teknik run length ini bekerja berdasarkan sederetan karakter yang berurutan, yaitu hanya memindahkan pengulangan byte yang sama berturut-turut secara terus-menerus. Parameter yang digunakan untuk mengukur kinerja algoritma ini adalah rasio kompresi, kompleksitas yang dihasilkan. Rasio kompresi file audio *.mp3 menggunakan Algoritma Huffman memiliki rata-rata 1.426% sedangkan RLE -94.44%, dan rasio kompresi file audio *.wav memiliki rata-rata 28.954 % sedangkan RLE -45.91%, kompleksitas waktu algoritma Huffman adalahθnLog n sedangkan algoritma Run Length Encoding adalah

θ(n).

Kata Kunci: kompresi, dekompresi, mp3, wav, Huffman, Run Length Encoding,


(70)

COMPARATIVE ANALYSIS ALGORITHM HUFFMAN AND RUN LENGTH ENCODING IN

FILE COMPRESSION AUDIO ABSTRACT

This study was conducted to analyze the comparison of compression and decompression of audio files * .mp3 (Moving Picture Expert Group) -1 audio layer III) and * .wav. Compression is done by reducing the number of bits required to store or send the file. In this study the author uses Huffman and Run Length Encoding, which is one that is lossless compression technique. Huffman has three stages to compress the data, namely the establishment of the tree, encoding and decoding, and work is based on a character-by-character. While the technique of run length work based on a series of consecutive characters, namely just move repetition of the same byte row continuously. The parameters used to measure the performance of the algorithm is the compression ratio, the resulting complexity. The compression ratio * .mp3 audio files using Huffman algorithm has an average of 1,426%, while RLE 94.44%, and the compression ratio * .wav audio file has an average of 28 954% and

-45.91% RLE, Huffman algorithm time complexity is θnLog n while Run Length Encoding algorithm is θ (n).

Keywords: compression, decompression, mp3, wav, Huffman, Run Length Encoding, lossless, lossy.


(71)

KOM

PROGRA

FAKULTAS ILMU KOM

UNIVER

KOMPRESI FILE AUDIO

SKRIPSI

HELBERT SINAGA

131421097

OGRAM STUDI S1 ILMU KOMPUTER

KOMPUTER DAN TEKNOLOGI IN

IVERSITAS SUMATERA UTARA

MEDAN

2016

TER


(72)

ANALISIS P

DAN

Diajukan untuk melen

PR FAKULTAS IL

U

PERBANDINGAN ALGORITMA HU

AN RUN LENGTH ENCODING PADA

KOMPRESI FILE AUDIO

SKRIPSI

lengkapi tugas dan memenuhi syarat memperol Ilmu Komputer

HELBERT SINAGA 131421097

PROGRAM STUDI S1 ILMU KOMPUTER ILMU KOMPUTER DAN TEKNOLOGI IN

UNIVERSITAS SUMATERA UTARA MEDAN

2016

HUFFMAN

DA

roleh ijazah Sarjana

R


(73)

PERSETUJUAN

Judul : ANALISIS PERBANDINGAN ALGORITMA

HUFFMAN DAN RUN LENGTH ENCODING PADA KOMPRESI FILE AUDIO

Kategori : SKRIPSI

Nama : HELBERT SINAGA

Nomor Induk Mahasiswa : 131421097

Program Studi : S1 ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, Juli 2016

Komisi Pembimbing:

Pembimbing 2 Pembimbing 1

Handrizal, S. Si, M. Comp. Sc Dr. Poltak Sihombing, M.Kom

NIP. NIP. 19620317 199103 1 001

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001


(74)

PERNYATAAN

ANALISIS PERBANDINGAN ALGORITMA HUFFMAN

DAN RUN LENGTH ENCODING PADA

KOMPRESI FILE AUDIO

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2016

Helbert Sinaga NIM. 131421097


(75)

PENGHARGAAN

Puji syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa atas segala berkat-Nya sehingga dengan usaha yang maksimal akhirnya dapat dilaksanakan

penelitian serta penyusunan skripsi ini yang berjudul: “ANALISIS PERBANDINGAN ALGORITMA HUFFMAN DAN RUN LENGTH ENCODING PADA KOMPRESI FILE AUDIO”. Tulisan ini masih jauh dari sempurna, hal ini disebabkan oleh keterbatasan dan kemampuan penulis.

Penulis mengucapkan terimakasih kepada pihak yang memberikan doa, bimbingan, bantuan dan dorongan sampai selesainya skripsi ini. Dalam kesempatan ini penulis menyampaikan terimakasih yang sebesar-besarnya kepada:

1. Bapak Prof. Dr. Runtung Sitepu, SH., M.Hum selaku Rektor Unversitas Sumatera Utara.

2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara dan selaku Dosen Pembimbing I yang telah memberikan masukan kepada penulis dalam pengerjaan skripsi ini. 4. Bapak Handrizal, S.Si, M.Comp.Sc selaku Dosen Pembimbing II yang telah

memberikan ilmu, bimbingan, saran, dan masukan kepada penulis dalam pengerjaan skripsi ini.

5. Bapak Drs. Agus Salim Harahap, M.Si selaku Dosen Pembanding I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

6. Bapak Drs. Dahlan Sitompul, M.Eng, selaku Dosen Pembanding II yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

7. Semua dosen dan semua pegawai di Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.


(76)

8. Ibunda Desmi N. Girsang dan Ayahanda Pariaman Sinaga yang telah memberikan dukungan secara material dan spiritual kepada Penulis. Untuk abangku Ardy Bernard Sinaga dan adik-adikku Rizal Fernando Sinaga dan Yuni Lestari Sinaga yang selalu memberi dorongan semangat dan motivasi bagi penulis.

9. Teman-teman Ekstensi S1-Ilmu Komputer stambuk 2013 dan teman-teman PD/PA Filipi yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.

10. Semua pihak yang terlibat langsung maupun tidak langsung yang tidak dapat penulis sebutkan satu per satu.

Penulis menyadari bahwa skripsi ini masih terdapat kekurangan. Oleh karena itu, kepada pembaca agar kiranya memberikan kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini.

Medan, Juli 2016 Penulis,


(77)

ANALISIS PERBANDINGAN ALGORITMA HUFFMAN DAN RUN LENGTH ENCODING PADA

KOMPRESI FILE AUDIO

ABSTRAK

Penelitian ini dilakukan untuk menganalisis perbandingan hasil kompresi dan dekompresi file audio *.mp3 (Moving Picture Expert Group) -1 audio layer III) dan *.wav. Kompresi dilakukan dengan mengurangi jumlah bit yang diperlukan untuk menyimpan atau mengirim file tersebut. Pada penelitian ini penulis menggunakan algoritma Huffman dan Run Length Encoding yang merupakan salah satu teknik kompresi yang bersifat lossless. Algoritma Huffman memiliki tiga tahapan untuk mengkompres data, yaitu pembentukan pohon, encoding dan decoding dan berkerja berdasarkan karakter per karakter. Sedangkan teknik run length ini bekerja berdasarkan sederetan karakter yang berurutan, yaitu hanya memindahkan pengulangan byte yang sama berturut-turut secara terus-menerus. Parameter yang digunakan untuk mengukur kinerja algoritma ini adalah rasio kompresi, kompleksitas yang dihasilkan. Rasio kompresi file audio *.mp3 menggunakan Algoritma Huffman memiliki rata-rata 1.426% sedangkan RLE -94.44%, dan rasio kompresi file audio *.wav memiliki rata-rata 28.954 % sedangkan RLE -45.91%, kompleksitas waktu algoritma Huffman adalahθnLog n sedangkan algoritma Run Length Encoding adalah

θ(n).

Kata Kunci: kompresi, dekompresi, mp3, wav, Huffman, Run Length Encoding,


(1)

vii

ANALISIS PERBANDINGAN ALGORITMA HUFFMAN DAN RUN LENGTH ENCODING PADA

KOMPRESI FILE AUDIO ABSTRAK

Penelitian ini dilakukan untuk menganalisis perbandingan hasil kompresi dan dekompresi file audio *.mp3 (Moving Picture Expert Group) -1 audio layer III) dan *.wav. Kompresi dilakukan dengan mengurangi jumlah bit yang diperlukan untuk menyimpan atau mengirim file tersebut. Pada penelitian ini penulis menggunakan algoritma Huffman dan Run Length Encoding yang merupakan salah satu teknik kompresi yang bersifat lossless. Algoritma Huffman memiliki tiga tahapan untuk mengkompres data, yaitu pembentukan pohon, encoding dan decoding dan berkerja berdasarkan karakter per karakter. Sedangkan teknik run length ini bekerja berdasarkan sederetan karakter yang berurutan, yaitu hanya memindahkan pengulangan byte yang sama berturut-turut secara terus-menerus. Parameter yang digunakan untuk mengukur kinerja algoritma ini adalah rasio kompresi, kompleksitas yang dihasilkan. Rasio kompresi file audio *.mp3 menggunakan Algoritma Huffman memiliki rata-rata 1.426% sedangkan RLE -94.44%, dan rasio kompresi file audio *.wav memiliki rata-rata 28.954 % sedangkan RLE -45.91%, kompleksitas waktu algoritma Huffman adalahθnLog n sedangkan algoritma Run Length Encoding adalah

θ(n).

Kata Kunci: kompresi, dekompresi, mp3, wav, Huffman, Run Length Encoding, lossless, lossy.


(2)

COMPARATIVE ANALYSIS ALGORITHM HUFFMAN AND RUN LENGTH ENCODING IN

FILE COMPRESSION AUDIO ABSTRACT

This study was conducted to analyze the comparison of compression and decompression of audio files * .mp3 (Moving Picture Expert Group) -1 audio layer III) and * .wav. Compression is done by reducing the number of bits required to store or send the file. In this study the author uses Huffman and Run Length Encoding, which is one that is lossless compression technique. Huffman has three stages to compress the data, namely the establishment of the tree, encoding and decoding, and work is based on a character-by-character. While the technique of run length work based on a series of consecutive characters, namely just move repetition of the same byte row continuously. The parameters used to measure the performance of the algorithm is the compression ratio, the resulting complexity. The compression ratio * .mp3 audio files using Huffman algorithm has an average of 1,426%, while RLE 94.44%, and the compression ratio * .wav audio file has an average of 28 954% and

-45.91% RLE, Huffman algorithm time complexity is θnLog n while Run Length Encoding algorithm is θ (n).

Keywords: compression, decompression, mp3, wav, Huffman, Run Length Encoding,


(3)

ix

DAFTAR ISI

Halaman

PERSETUJUAN ii

PERNYATAAN iii

PENGHARGAAN iv

ABSTRAK vii

ABSTRACT viii

DAFTAR ISI ix

DAFTAR TABEL xi

DAFTAR GAMBAR xii

BAB 1 PENDAHULUAN

1.1. Latar Belakang 1

1.2. Rumusan Masalah 2

1.3. Batasan Masalah 2

1.4. Tujuan Penelitian 3

1.5. Manfaat Penelitian 3

1.6. Metodologi Penelitian 3

1.7. Sistematika Penulisan 4

BAB 2 LANDASAN TEORI 6

2.1. Pengertian Kompresi 6

2.2. Jenis-jenis Kompresi Data 7

2.2.1. Lossy Compression 7

2.2.2. Lossless Compression 7

2.3. Jenis-Jenis File Audio 8

2.3.1. File Audio *.wav 8

2.3.2. File Audio *.mp3 8

2.4. Alat Bantu Perancangan Perangkat Lunak 10


(4)

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisa Sistem 15

3.2. Analisa Proses 15

3.2.1. Analisa Kompresi Huffman 16

3.2.2. Analisa Dekompresi Huffman 22

3.2.3. Analisa Kompresi Run Length Encoding 24

3.2.4. Analisa Dekompresi Run Length Encoding 25

3.3. Perancangan Sistem 26

3.3.1. Flowchart Huffman 27

3.3.2. Flowchart Run Lenth Encoding 31

3.4. Perancangan Interface 34

BAB 4 IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi Sistem 40

4.1.1. Halaman Utama Sistem 40

4.1.2. Halaman Menu Huffman 41

4.1.3. Halaman Menu Run Length Encoding 43

4.2. Perbandingan Rasio Kompresi File Audio Menggunakan Algoritma Huffman

dan Run Length Encoding 46

4.3. Perhitungan Kompleksitas Waktu 47

4.3.1. Perhitungan Kompleksitas Waktu Algoritma Huffman 48 4.3.2. Perhitungan Kompleksitas Waktu Algoritma Run Length Encoding 51

BAB 5 KESIMPULAN DAN SARAN

5.1. Kesimpulan 53

5.2. Saran 53


(5)

xi

DAFTAR TABEL

Halaman

Tabel 2.1. Simbol Program Flowchart 10

Tabel 2.2. Simbol Sistem Flowchart 11

Tabel 3.1. Frekuensi Sampel Audio 17

Tabel 3.2. Hasil Kompresi Huffman 21

Tabel 3.3. Hasil Kompresi RLE 25

Tabel 3.4. Hasil Dekompresi RLE 26

Tabel 4.1. Perbandingan Kompresi File Audio (*.mp3) mmenggunakan

Algoritma Huffman dan RLE 47

Tabel 4.2. Perbandingan Kompresi File Audio (*.wav) menggunakan

Algoritma Huffman dan RLE 47

Tabel 4.3. Perhitungan Kompleksitas Waktu Algoritma Huffman 48 Tabel 4.4. Perhitungan Kompleksitas Waktu Algoritma Run Length Encoding 51


(6)

DAFTAR GAMBAR

Halaman

Gambar 3.1. Urutan sampel secara ascending 17

Gambar 3.2. Penggabungan dua buah simpul 17

Gambar 3.3. Pemindahan dua buah simpul urutan sampel secara ascending 18

Gambar 3.4. Penggabungan dua buah simpul 18

Gambar 3.5. Pemindahan dua buah simpul urutan sampel secara ascending 18

Gambar 3.6. Penggabungan dua buah simpul 19

Gambar 3.7. Penggabungan dua buah simpul 19

Gambar 3.8. Pemberian bit 0 dan bit 1 20

Gambar 3.9. Proses Decoding dengan pohon Huffman 23

Gambar 3.10. Flowchart pembuatan pohon Huffman 27

Gambar 3.11. Flowchart Algoritma Kompresi Huffman 28

Gambar 3.12. Flowchart Algoritma Dekompresi Huffman 29

Gambar 3.13. Flowchart Algoritma Huffman 30

Gambar 3.14. Flowchart Algoritma Kompresi RLE 31

Gambar 3.15. Flowchart Algoritma Dekompresi RLE 32

Gambar 3.16. Flowchart Algoritma RLE 33

Gambar 3.17. Rancangan Halaman Utama 34

Gambar 3.18. Rancangan Halaman Algoritma Huffman 35

Gambar 3.19. Rancangan Halaman Algoritma Run Length Encoding 37

Gambar 3.20. Rancangan Halaman Info 38

Gambar 4.1. Halaman Utama Sistem 41

Gambar 4.2. Halaman Proses Kompresi pada Menu Huffman 42 Gambar 4.3. Halaman Proses Dekompresi pada Menu Huffman 43 Gambar 4.4. Halaman Menu Kompresi pada Run Length Encoding 44 Gambar 4.5. Halaman Menu Dekompresi pada Run Length Encoding 45

Gambar 4.6. Rancangan Halaman Info 46

Grafik 4.1. Grafik Rasio Kompresi File *.mp3 48