private static void ReadFromTestProvider(int bytesToRead, int bufferSize) { TestWaveProvider source = new TestWaveProvider(44100, 1); AutoTuneWaveProvider autoTune = new AutoTuneWaveProvider(source); byte[] buffer = new byte[bufferSize]; int bytesRead = 0; while (bytesRead < bytesToRead) { bytesRead += autoTune.Read(buffer, 0, buffer.Length); } }
public static void ApplyAutoTune(string fileToProcess, string tempFile, AutoTuneSettings autotuneSettings) { using (WaveFileReader waveFileReader = new WaveFileReader(fileToProcess)) { IWaveProvider source = new Wave16ToFloatProvider(waveFileReader); IWaveProvider sourceProvider = new AutoTuneWaveProvider(source, autotuneSettings); IWaveProvider waveProvider = new WaveFloatTo16Provider(sourceProvider); using (WaveFileWriter waveFileWriter = new WaveFileWriter(tempFile, waveProvider.WaveFormat)) { byte[] array = new byte[8192]; int num; do { num = waveProvider.Read(array, 0, array.Length); waveFileWriter.Write(array, 0, num); }while (num != 0 && waveFileWriter.Length < waveFileReader.Length); } } }
public static void ApplyAutoTune(string fileToProcess, string tempFile, AutoTuneSettings autotuneSettings) { using (var reader = new WaveFileReader(fileToProcess)) { IWaveProvider stream32 = new Wave16ToFloatProvider(reader); IWaveProvider streamEffect = new AutoTuneWaveProvider(stream32, autotuneSettings); IWaveProvider stream16 = new WaveFloatTo16Provider(streamEffect); using (var converted = new WaveFileWriter(tempFile, stream16.WaveFormat)) { // buffer length needs to be a power of 2 for FFT to work nicely // however, make the buffer too long and pitches aren't detected fast enough // successful buffer sizes: 8192, 4096, 2048, 1024 // (some pitch detection algorithms need at least 2048) var buffer = new byte[8192]; int bytesRead; do { bytesRead = stream16.Read(buffer, 0, buffer.Length); converted.Write(buffer, 0, bytesRead); } while (bytesRead != 0 && converted.Length < reader.Length); } } }