public void Generate(ISignal signal, bool saveToFile = false) { var raw = new byte[SampleRate * Seconds * BYTES_PER_SOUND]; for (int n = 0; n < SampleRate * Seconds; n++) { var x = (double)n / SampleRate; var sampleValue = signal.GetNormalizedSignalValue(x); var sample = (short)(sampleValue * MAX_VALUE); var bytes = BitConverter.GetBytes(sample); raw[n * 2] = bytes[0]; raw[n * 2 + 1] = bytes[1]; } Generate(raw, saveToFile); }