2. Form Sub Menu - Implementasi Algoritma Shannon-Fano Pada Kompresi Audio

  

LAMPIRAN A: Listing Program

  1. Form Menu Utama

  Public Class MScreen Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Hide() Form1.Show() End Sub End Class

  2. Form Sub Menu

  Imports System Imports System.ComponentModel Imports System.Drawing Imports System.Data Imports System.Text Imports System.Windows.Forms Imports System.IO Imports System.Diagnostics.Process Imports MediaPlayer Imports Alvas.Audio Public Class Form1 Dim PicBuffer As System.IO.FileInfo Dim proc As Process Dim PicFileStream As System.IO.FileStream Dim start_time, stop_time As Date Dim ratio As Double Private ar As IAudioReader = Nothing Dim oldFormat, newFormat As IntPtr Dim y As Integer = 0 Dim mbAwal, mbAkhir As Double Dim filehsl As String Dim fsr As FileStream

  Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated

  End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser3.Navigate("D:\Mutiara Backup\SHANNONFANO\Aplikasi Kompresi Audio\Cara Pemakaian Aplikasi.pdf") ar = New Mp3Reader(File.OpenRead("test_shannon.mp3")) oldFormat = ar.ReadFormat

  End Sub Private Sub BtnBukaTabKmprs_Click(ByVal sender As

  System.Object, ByVal e As System.EventArgs) Handles BtnBukaTabKmprs.Click With OpenFileDialog1 .Title = "Browse Mp3" .Filter = "Mp3 (*.mp3) |*.mp3" .FileName = "" End With OpenFileDialog1.FileName = "" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName = "" Then

  Exit Sub End If Dim fd As FormatDetails Try ar = New Mp3Reader(File.OpenRead(OpenFileDialog1.FileName)) fd = AudioCompressionManager.GetFormatDetails(oldFormat) Catch ex As Exception ar = New WaveReader(File.OpenRead(OpenFileDialog1.FileName)) fd = AudioCompressionManager.GetFormatDetails(oldFormat) End Try oldFormat = ar.ReadFormat fd = AudioCompressionManager.GetFormatDetails(oldFormat) txtSA1.Text = String.Format("{0} {1}", AudioCompressionManager.GetFormatTagDetails(fd.FormatTag).FormatTagNa me, fd.FormatName) Dim fdArr As FormatDetails() = AudioCompressionManager.GetCompatibleFormatList(oldFormat) newFormat = DirectCast(fdArr(2), FormatDetails).FormatHandle TxtBukaTabKmprs.Text = OpenFileDialog1.FileName Dim infoReader As System.IO.FileInfo infoReader = My.Computer.FileSystem.GetFileInfo(OpenFileDialog1.FileName) TxtNamaTabKmprs.Text = infoReader.Name TxtPathTabKmprs.Text = infoReader.DirectoryName mbAwal = (infoReader.Length / (1024 * 1024)) TxtUkAwalTabKmprs.Text = Math.Round(mbAwal, 2) & " Mb" BtnKompres.Enabled = True End Sub Private Sub BtnBukaTabDkmprs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBukaTabDkmprs.Click With OpenFileDialog1 .Title = "Browse Wav" .Filter = "Wav (*.wav) |*.wav" .FileName = "" End With OpenFileDialog1.FileName = "" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName = "" Then Exit Sub End If ar = New WaveReader(File.OpenRead(OpenFileDialog1.FileName)) oldFormat = ar.ReadFormat Dim fd As FormatDetails = AudioCompressionManager.GetFormatDetails(oldFormat) txtSA2.Text = String.Format("{0} {1}", AudioCompressionManager.GetFormatTagDetails(fd.FormatTag).FormatTagNa me, fd.FormatName) Dim fdArr As FormatDetails() = AudioCompressionManager.GetCompatibleFormatList(oldFormat) newFormat = DirectCast(fdArr(7), FormatDetails).FormatHandle TxtBukaTabDkmprs.Text = OpenFileDialog1.FileName

  Dim infoReader As System.IO.FileInfo infoReader = My.Computer.FileSystem.GetFileInfo(OpenFileDialog1.FileName) TxtNamaTabDkmprs.Text = infoReader.Name TxtPathTabDkmprs.Text = infoReader.DirectoryName mbAwal = (infoReader.Length / (1024 * 1024)) TxtUkAwalTabDkmprs.Text = Math.Round(mbAwal, 2) & " Mb" BtnDekomprs.Enabled = True End Sub Private Sub BtnBukaTabPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBukaTabPlay.Click With OpenFileDialog1 .Title = "Browse File Audio" .FileName = "" End With OpenFileDialog1.FileName = "" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName = "" Then Exit Sub End If Me.TxtBukaTabPlay.Text = OpenFileDialog1.FileName Dim infoReader As System.IO.FileInfo infoReader = My.Computer.FileSystem.GetFileInfo(OpenFileDialog1.FileName) TxtNamaTabPlay.Text = infoReader.Name TxtPathTabPlay.Text = infoReader.DirectoryName End Sub Private Sub WebBrowser3_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser3.DocumentCompleted End Sub Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter End Sub Private Sub Kompres() Dim fileName As String = TxtBukaTabKmprs.Text + ".wav" 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 WaveWriter = New WaveWriter(fs, AudioCompressionManager.FormatBytes(newFormat)) Dim wx As Mp3Writer = New Mp3Writer(fsr) While y < len Dim data As Byte() = ar.ReadDataInBytes(y, size) xxxWxAudio(wx, data) Dim tmpStr As String = ArrayToString(data) Dim dataX As Byte() = shanonKompres(tmpStr) y += data.Length Dim newData As Byte() = ac.Convert(data) ww.WriteData(newData) End While mbAkhir = fs.Length / (1024 * 1024) filehsl = fs.Name ww.Close() ar.Close() End Sub Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk PicBuffer = New System.IO.FileInfo(OpenFileDialog1.FileName) End Sub Private Sub BgWork_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BgWork.DoWork Kompres() End Sub Private Sub BtnKompres_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnKompres.Click fsr = xWxAudio(TxtNamaTabKmprs.Text) Cursor = Cursors.WaitCursor proc = GetCurrentProcess() start_time = Now pbConvert.Maximum = ar.GetLengthInBytes y = 0 BgWork.RunWorkerAsync() Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If y > pbConvert.Maximum Then pbConvert.Value = 0 Timer1.Stop() Exit Sub End If pbConvert.Value = y End Sub Private Sub BgWork_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BgWork.RunWorkerCompleted Cursor = Cursors.Default proc = GetCurrentProcess() stop_time = Now Me.TxtUkAkhrTabKmprs.Text = Math.Round(mbAkhir, 2) & " MB" Me.TxtLamaTabKmprs.Text = stop_time.Subtract(start_time).Seconds & " s" ratio = 100 - (mbAkhir / mbAwal) * 100 Dim infoReader As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(filehsl) Me.txtFileHasil.Text = infoReader.Name Me.TxtRasioTabKmprs.Text = Math.Round(ratio, 2) & "%" pbConvert.Value = 0 Timer1.Stop() End Sub Private Sub BtnResetTabKmprs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnResetTabKmprs.Click Me.TxtPathTabKmprs.Clear()

  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) 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

  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 = ""

  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 s = s1

  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 dgv.Rows.Remove(dgv.Rows(0))

  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

Dokumen yang terkait

BAB 2 LANDASAN TEORI 2.1 Data - Sistem Informasi Perekrutan dan Pendistribusian Asisten Laboratorium D3 Teknik Informatika FMIPA USU

0 0 13

BAB 2 LANDASAN TEORI - Sistem Sistem Informasi Memperbaki Komputer Berbasis Web Menggunakan HTML, PHP Dan MySQL

0 0 15

BAB II TINJAUAN PUSTAKA 2.1 Uraian Teoritis 2.1.1 Pengertian Citra - Pengaruh Citra Tokoh Politik Terhadap Minat Memilih Pada Pemilu Presiden 2014 di Medan

0 0 21

BAB I PENDAHULUAN 1.1 Latar Belakang - Pengaruh Citra Tokoh Politik Terhadap Minat Memilih Pada Pemilu Presiden 2014 di Medan

0 0 15

BAB II GAMBARAN UMUM PERUSAHAAN - Usulan Perbaikan Mutu Produk Obat Kaplet Dengan Metode Statistical Quality Control dan Fault Tree Analysis Pada PT. Mutiara Mukti Farma

0 0 44

Usulan Perbaikan Mutu Produk Obat Kaplet Dengan Metode Statistical Quality Control dan Fault Tree Analysis Pada PT. Mutiara Mukti Farma

0 0 17

Perkembangan Taman Bacaan Masyarakat (TBM) dalam Lingkungan Masyarakat Perkotaan (Studi Kasus Pada Taman Bacaan Masyarakat di Kota Medan)

0 0 50

2.1 Taman Bacaan Masyarakat - Perkembangan Taman Bacaan Masyarakat (TBM) dalam Lingkungan Masyarakat Perkotaan (Studi Kasus Pada Taman Bacaan Masyarakat di Kota Medan)

0 0 11

BAB II GAMBARAN UMUM OBJEK LOKASI PRAKTIK KERJA LAPANGAN MANDIRI A. Sejarah Singkat Kantor Pelayanan Pajak Pratama Medan Polonia - Proses Pemberian Keputusan Angsuran Atas Utang Pajak Di Kantor Pelayanan Pajak Pratama Medan Polonia

0 1 11

BAB I PENDAHULUAN A. Latar Belakang Praktik Kerja Lapangan Mandiri (PKLM) - Proses Pemberian Keputusan Angsuran Atas Utang Pajak Di Kantor Pelayanan Pajak Pratama Medan Polonia

0 0 13