/// <summary> /// Process 16 bit sample /// </summary> /// <param name="wave"></param> /// <param name="hasHEader">true when wav has headers also</param> public void Process(ref byte[] wave, bool hasHeader) { if (wave == null) { _wave = null; return; } int len = (hasHeader ? wave.Length - AudioUtils.WavHeadSize : wave.Length); _wave = new double[len / 2]; if (!_isTest) { // Split out channels from sample int h = 0; for (int i = 0; i < len; i += 2) { _wave[h] = (double)BitConverter.ToInt16(wave, i); h++; } } else { // Generate artificial sample for testing _signalGenerator = new SignalGenerator(); _signalGenerator.SetWaveform("Sine"); _signalGenerator.SetSamplingRate(44100); _signalGenerator.SetSamples(16384); _signalGenerator.SetFrequency(5000); _signalGenerator.SetAmplitude(32768); _wave = _signalGenerator.GenerateSignal(); } }