Imports BasicDSP Imports BasicDSP.Filter Imports ZedGraph Public Class dsp1ex3 Dim iwv As New Signal Dim owv As New Signal Dim filt As LTISystemChain Dim gp As Graph Public Sub MakeFilter() Dim ftype As Integer = txtFilter.SelectedIndex Dim lofreq As Double = Double.Parse(txtLoFreq.Text) / iwv.Rate Dim hifreq As Double = Double.Parse(txtHiFreq.Text) / iwv.Rate If ftype = 0 Then filt = ButterworthLowPass(lofreq, 4) ElseIf ftype = 1 Then filt = ButterworthHighPass(hifreq, 4) Else filt = ButterworthBandPass(lofreq, hifreq, 4) End If Dim fr As New Spectrum(500, iwv.Rate() / 2) For i As Integer = 0 To 499 fr(i) = filt.Response(i / 1000) Next gp.PlotClear(1) gp.PlotDbSpectrum(1, fr, "Frequency Response") End Sub Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click If OpenFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then If iwv.LoadWaveFile(OpenFileDialog.FileName) Then MakeFilter() Else MsgBox("Failed to load audio file") End If End If End Sub Private Sub PlayInputToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlayInputToolStripMenuItem.Click iwv.Replay() End Sub Private Sub PlayOutputToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlayOutputToolStripMenuItem.Click MakeFilter() owv = filt.Filter(iwv) owv.Replay() End Sub Private Sub DSPEx3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load gp = New Graph(Me.CreateGraphics(), zgc) txtFilter.SelectedIndex = 2 txtLoFreq.Text = 1000 txtHiFreq.Text = 3000 MakeFilter() End Sub Private Sub txtFilter_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFilter.SelectedIndexChanged MakeFilter() End Sub End Class