Sound fixed and complete. More OpCodes to implement
This commit is contained in:
@@ -7,6 +7,8 @@ namespace Desktop
|
||||
{
|
||||
private WaveOutEvent _waveOut;
|
||||
private BufferedWaveProvider _buffer;
|
||||
private float _lastSample = 0.0f;
|
||||
private float _lastFiltered = 0.0f;
|
||||
|
||||
public BeeperDevice()
|
||||
{
|
||||
@@ -25,16 +27,19 @@ namespace Desktop
|
||||
public void AddSample(bool isHigh)
|
||||
{
|
||||
//Buffer overrun check and dump
|
||||
if (_buffer.BufferedDuration.TotalMilliseconds > 100)
|
||||
while (_buffer.BufferedDuration.TotalMilliseconds > 80)
|
||||
{
|
||||
_buffer.ClearBuffer();
|
||||
Thread.Sleep(1);
|
||||
}
|
||||
|
||||
// Convert the boolean into a physical sound wave (-0.2 or +0.2)
|
||||
float sampleValue = isHigh ? 0.2f : -0.2f;
|
||||
float rawSample = isHigh ? 0.2f : -0.2f;
|
||||
float filteredSample = rawSample - _lastSample + 0.995f * _lastFiltered;
|
||||
_lastSample = rawSample;
|
||||
_lastFiltered = filteredSample;
|
||||
|
||||
// Convert the float to bytes and drop it in the pipe
|
||||
byte[] bytes = BitConverter.GetBytes(sampleValue);
|
||||
byte[] bytes = BitConverter.GetBytes(filteredSample);
|
||||
_buffer.AddSamples(bytes, 0, 4);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user