Detect threshold has been reached

Jul 10, 2010 at 6:09 PM

Maybe someone could help with a conversion to vb.net. How do I get the value from or call it. I am new to this and working on a simple project (I think) that will detect audio from my sound card. Started here http://naudio.codeplex.com/Thread/View.aspx?ThreadId=85739

 

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports NAudio.Wave
Imports System.Diagnostics

Public Class Form1
Private AudioThresh As Double = 0.09
Private waveInStream As WaveInStream
Private WaveIn As WaveIn
'When button Test is clicked, start listening for sound

Private Sub btnTest_Click(ByVal sender As Object, ByVal e As EventArgs)
'waveInStream = WaveIn(44100, 1)
AddHandler waveInStream.DataAvailable, AddressOf waveInStream_DataAvailable
'waveInStream.StartRecording()
End Sub

'Handler for the sound listener
Private Sub waveInStream_DataAvailable(ByVal sender As Object, ByVal e As WaveInEventArgs)
Dim result As Boolean = ProcessData(e)
If result Then
MessageBox.Show("peak in sound?")
'no peak in sound
Else
End If
End Sub

'calculate the sound level based on the AudioThresh
Private Function ProcessData(ByVal e As WaveInEventArgs) As Boolean
Dim result As Boolean = False
Dim Tr As Boolean = False
Dim Sum2 As Double = 0
Dim Count As Integer = e.BytesRecorded / 2
For index As Integer = 0 To e.BytesRecorded - 1 Step 2
Dim Tmp As Double = CShort((e.Buffer(index + 1) << 8) Or e.Buffer(index + 0))
Tmp /= 32768.0
Sum2 += Tmp * Tmp
If Tmp > AudioThresh Then
Tr = True
End If
Next
Sum2 /= Count
' If the Mean-Square is greater than a threshold, set a flag to indicate that noise has happened
If Tr OrElse Sum2 > AudioThresh Then
result = True
MsgBox("yes")

Else
result = False
MsgBox("no")

End If
Return result
End Function

End Class