private static int SecondsUntilPatternConcluded(IWaveProvider reader, int targetFrequency1, int targetFrequency2) { var sampleProvider = reader.ToSampleProvider(); var toneDetector = new TonePatternDetector(targetFrequency1, targetFrequency2, sampleProvider.WaveFormat.SampleRate); var buffer = new float[BufferSize]; long sampleCount = 0; while (true) { var bytesRead = sampleProvider.Read(buffer, 0, buffer.Length); sampleCount += bytesRead; if (bytesRead < buffer.Length) { break; } if (toneDetector.Detected(buffer)) { return(TimeStampHelper.GetElapsedSeconds(sampleProvider.WaveFormat.SampleRate, sampleCount)); } } return(-1); }
private int SecondsUntilPatternConcluded(IWaveProvider reader) { var sampleProvider = reader.ToSampleProvider(); var toneDetector = new TonePatternDetector(_mockConfigurationReader); var buffer = new float[BufferSize]; long sampleCount = 0; while (true) { var bytesRead = sampleProvider.Read(buffer, 0, buffer.Length); sampleCount += bytesRead; if (bytesRead < buffer.Length) { break; } if (toneDetector.Detected(buffer, sampleProvider.WaveFormat.SampleRate)) { return(ElapsedTimeSpanHelper.GetElapsedTimeSpan(sampleProvider.WaveFormat.SampleRate, sampleCount).Seconds); } } return(-1); }