Quantcast
Channel: NAudio
Viewing all articles
Browse latest Browse all 5831

New Post: simple example to control volume using NAudio

$
0
0
Here's how i've done it.


format = WaveFormat.CreateIeeeFloatWaveFormat(readerStream.WaveFormat.SampleRate, 2);
        // 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)
        {
            readerStream = new WaveFormatConversionStream(format, readerStream);
        }

        mixingSampleProvider = new MixingSampleProvider(format);
        waveChannel = new WaveChannel32(readerStream);


        //Convert wave to samples
        waveToSample = new WaveToSampleProvider(waveChannel);

        //Provide metering support
        meterSampleProvider = new MeteringSampleProvider(waveToSample);

        //Provide volume support
        volumeSampleProvider = new VolumeSampleProvider(meterSampleProvider);

        //Convert samples back to wave
        sampleToWave = new SampleToWaveProvider(volumeSampleProvider );

        if (waveOutDevice == null)
        {
            waveOutDevice = new WaveOutEvent();
            waveOutDevice.PlaybackStopped += new EventHandler<StoppedEventArgs>(waveOutDevice_PlaybackStopped);
        }

        waveOutDevice.DeviceNumber = CPCore.Instance.AudioOutDevice.Id;
        waveOutDevice.Init(sampleToWave);



Everytime you need to support a new provider, use the last one as input for the next.

Like this:

//Convert wave to samples
        waveToSample = new WaveToSampleProvider(waveChannel);

        //Provide metering support
        meterSampleProvider = new MeteringSampleProvider(waveToSample);

        //Provide volume support
        volumeSampleProvider = new VolumeSampleProvider(meterSampleProvider);

        //Add the samples to the mixed stream used to enable crossfading
        mixingSampleProvider.AddMixerInput(volumeSampleProvider);

        //Add support for equalizer
        equalizerSampleProvider = new EqualizerSampleProvider(mixingSampleProvider, equalizerBands);
        equalizerSampleProvider.IsActive = initialEQIsActive.GetValueOrDefault();

        //Convert samples back to wave
        sampleToWave = new SampleToWaveProvider(equalizerSampleProvider);

Viewing all articles
Browse latest Browse all 5831

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>