~mixxxdevelopers/mixxx/features_beatcontrol

« back to all changes in this revision

Viewing changes to mixxx/src/engine/enginevumeter.cpp

  • Committer: Phillip Whelan
  • Date: 2011-04-08 03:31:20 UTC
  • mfrom: (2556.1.8 mixxx-beatcontrol)
  • Revision ID: pwhelan@mixxx.org-20110408033120-hb4s7u9zgnbk1xhy
MergingĀ fromĀ upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
65
65
        doSmooth(m_fRMSvolumeL, log10(m_fRMSvolumeSumL/(m_iSamplesCalculated*1000)+1));
66
66
        doSmooth(m_fRMSvolumeR, log10(m_fRMSvolumeSumR/(m_iSamplesCalculated*1000)+1));
67
67
 
68
 
        m_ctrlVuMeterL->set(m_fRMSvolumeL);
69
 
        m_ctrlVuMeterR->set(m_fRMSvolumeR);
70
 
        m_ctrlVuMeter->set( (m_fRMSvolumeL + m_fRMSvolumeR) / 2);
 
68
        const double epsilon = .0001;
 
69
 
 
70
        // Since VU meters are a rolling sum of audio, the no-op checks in
 
71
        // ControlObject will not prevent us from causing tons of extra
 
72
        // work. Because of this, we use an epsilon here to be gentle on the GUI
 
73
        // and MIDI controllers.
 
74
        if (fabs(m_fRMSvolumeL - m_ctrlVuMeterL->get()) > epsilon)
 
75
            m_ctrlVuMeterL->set(m_fRMSvolumeL);
 
76
        if (fabs(m_fRMSvolumeR - m_ctrlVuMeterR->get()) > epsilon)
 
77
            m_ctrlVuMeterR->set(m_fRMSvolumeR);
 
78
 
 
79
        double fRMSvolume = (m_fRMSvolumeL + m_fRMSvolumeR) / 2.0;
 
80
        if (fabs(fRMSvolume - m_ctrlVuMeter->get()) > epsilon)
 
81
            m_ctrlVuMeter->set(fRMSvolume);
71
82
 
72
83
        // Reset calculation:
73
84
        m_iSamplesCalculated = 0;