private static WaveStream CreateInputStream(string fileName, out WaveChannel32 waveChannel) { WaveStream readerStream = null; if (fileName.EndsWith(".wav")) { readerStream = new WaveFileReader(fileName); } else if (fileName.EndsWith(".mp3")) { readerStream = new Mp3FileReader(fileName); } else { throw new InvalidOperationException("Unsupported extension"); } // Provide PCM conversion if needed if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm) { readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream); readerStream = new BlockAlignReductionStream(readerStream); } // Provide conversion to 16 bits if needed if (readerStream.WaveFormat.BitsPerSample != 16) { var format = new WaveFormat(readerStream.WaveFormat.SampleRate, 16, readerStream.WaveFormat.Channels); readerStream = new WaveFormatConversionStream(format, readerStream); } waveChannel = new WaveChannel32(readerStream); // ************************************************************************************** // Chain the DSP Equalizer Effect - DSP Equalizer must come AFTER WaveChannel32 because it // was coded to expect Ieee Float samples, NOT PCM samples m_eqEffect = new EqualizerEffect(); m_eqEffect.OnFactorChanges(); readerStream = new DSPEffectStream(waveChannel, m_eqEffect); // ************************************************************************************** return(readerStream); }
private static WaveStream CreateInputStream(string fileName, out WaveChannel32 waveChannel) { WaveStream readerStream = null; if (fileName.EndsWith(".wav")) { readerStream = new WaveFileReader(fileName); } else if (fileName.EndsWith(".mp3")) { readerStream = new Mp3FileReader(fileName); } else { throw new InvalidOperationException("Unsupported extension"); } // Provide PCM conversion if needed if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm) { readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream); readerStream = new BlockAlignReductionStream(readerStream); } // Provide conversion to 16 bits if needed if (readerStream.WaveFormat.BitsPerSample != 16) { var format = new WaveFormat(readerStream.WaveFormat.SampleRate, 16, readerStream.WaveFormat.Channels); readerStream = new WaveFormatConversionStream(format, readerStream); } waveChannel = new WaveChannel32(readerStream); // ************************************************************************************** // Chain the DSP Equalizer Effect - DSP Equalizer must come AFTER WaveChannel32 because it // was coded to expect Ieee Float samples, NOT PCM samples m_eqEffect = new EqualizerEffect(); m_eqEffect.OnFactorChanges(); readerStream = new DSPEffectStream(waveChannel, m_eqEffect); // ************************************************************************************** return readerStream; }