private void UpdateGui() { if (this.InvokeRequired) { //AudioLib.Events.VuMeter.UpdatePeakMeterHandler d = new AudioLib.Events.VuMeter.UpdatePeakMeterHandler(SourceVuMeter_UpdatePeakMeter); //this.Invoke(d, sender, e); } else { if (mSourcePeaksIsNull == true) { for (int i = 0; i < mPPMeter.NumberOfChannels; i++) { mPPMeter.SetValue(i, Double.NegativeInfinity); } } else { if (mPeakArrayLength != mPPMeter.NumberOfChannels) { mPPMeter.NumberOfChannels = mPeakArrayLength; } for (int i = 0; i < mPPMeter.NumberOfChannels; i++) { mPPMeter.SetValue(i, mPeakValues[i]); } } // if peak overload, update GUI for it if (mPeakOverloadObject != null) { mPPMeter.SetPeakOverloadCount(mPeakOverloadObject.Channel - 1, mPPMeter.GetPeakOverloadCount(mPeakOverloadObject.Channel - 1) + 1); mPeakOverloadObject = null; } } }
//private int m_DieOutCounter; public GraphicalPeakMeter() { InitializeComponent(); mPeakValues = new double[2]; mPeakArrayLength = 1; mSourcePeaksIsNull = true; mPeakOverloadObject = null; //m_DieOutCounter = 0; }
// catch the peak overload event triggered by VuMeter public void CatchPeakOverloadEvent(object sender, AudioLib.Events.VuMeter.PeakOverloadEventArgs ob_PeakOverload) { VuMeter ob_VuMeter = sender as VuMeter; if (ob_PeakOverload.Channel == 1) { } if (ob_PeakOverload.Channel == 2) { } m_OverloadLightEnabled = true; }
void SourceVuMeter_ResetEvent(object sender, AudioLib.Events.VuMeter.ResetEventArgs e) { if (this.InvokeRequired) { AudioLib.Events.VuMeter.ResetHandler d = new AudioLib.Events.VuMeter.ResetHandler(SourceVuMeter_ResetEvent); this.Invoke(d, sender, e); } else { for (int i = 0; i < mPPMeter.NumberOfChannels; i++) { mPPMeter.SetValue(i, Double.NegativeInfinity); } mPPMeter.ForceFullFallback(); mPeakOverloadObject = null; } }
void SourceVuMeter_PeakOverload(object sender, AudioLib.Events.VuMeter.PeakOverloadEventArgs e) { mPeakOverloadObject = e; //mPPMeter.SetPeakOverloadCount(e.Channel - 1, mPPMeter.GetPeakOverloadCount(e.Channel - 1) + 1); }