Note that there are some explanatory texts on larger screens.

plurals
  1. PONAudio MeteringSampleProvider not firing events?
    text
    copied!<p>From all the samples I've seen using NAudio's MeteringSampleProvider to update a VolumeMeter control, I think I've got the right code, but it seems that the event for the MeteringSampleProvider as well as the SampleChannel never fire. I'm writing to a wav file at the same time and when I play it back, the recording has worked fine. Any ideas?</p> <pre><code>IWaveIn wavStream; WaveFileWriter wavWriter; BufferedWaveProvider bufferedWaveProvider; SampleChannel sampleChannel; MeteringSampleProvider meteringSampleProvider; wavStream = new WaveIn(); wavWriter = new WaveFileWriter(CurrentRecording.Filename, wavStream.WaveFormat); wavStream.DataAvailable += new EventHandler&lt;WaveInEventArgs&gt;((s2, e2) =&gt; { //Add sample to the buffered provider bufferedWaveProvider.AddSamples(e2.Buffer, 0, e2.BytesRecorded); //************************************************************ //EDIT: This is how I solved the issue!!! var tmpBuffer = new float[e2.BytesRecorded]; if (meteringSampleProvider != null) meteringSampleProvider.Read(tmpBuffer, 0, e2.BytesRecorded); //END EDIT //************************************************************ //Write to the wave file wavWriter.Write(e2.Buffer, 0, e2.BytesRecorded); }); //Create our Buffered provider bufferedWaveProvider = new BufferedWaveProvider(wavStream.WaveFormat); bufferedWaveProvider.DiscardOnBufferOverflow = true; //Create the sample channel sampleChannel = new SampleChannel(bufferedWaveProvider); sampleChannel.PreVolumeMeter += new EventHandler&lt;StreamVolumeEventArgs&gt;((s2, e2) =&gt; { Console.WriteLine("PreVolumeMeter"); }); //Create the metering sample provider meteringSampleProvider = new MeteringSampleProvider(sampleChannel); meteringSampleProvider.StreamVolume += new EventHandler&lt;StreamVolumeEventArgs&gt;((s2, e2) =&gt; { Console.WriteLine("PostVolumeMeter"); }); //Start Recording wavStream.StartRecording(); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload