Public Sub Beep (DurationMs As Double, Frequency As Int)
Dim sampleRate As Int = 8000
Dim numSamples As Int = sampleRate * DurationMs / 1000
Dim MaxVal As Short = 32767
Dim gsnd(2 * numSamples) As Byte
Dim Fade As Int = (numSamples / 100) * 95
For i = 0 To numSamples - 1
If i > Fade Then MaxVal = MaxVal * 0.95
Dim d As Double = Sin(2 * cPI * i / (sampleRate / Frequency))
Dim val As Short = d * MaxVal
gsnd(2 * i) = Bit.And(val, 0x00ff)
gsnd(2 * i + 1) = Bit.UnsignedShiftRight(Bit.And(val, 0xff00), 8)
Next
streamer.Write(gsnd)
End Sub