コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: AutoTuneUtils.cs プロジェクト: IVy66896/DB-Schema
 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);
         }
     }
 }
コード例 #3
0
 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);
         }
     }
 }