Mixxx

/home/maxime/Projets/Mixxx/1.10/mixxx/src/tapfilter.cpp

Go to the documentation of this file.
00001 #include "tapfilter.h"
00002 
00003 TapFilter::TapFilter(QObject* pParent, int filterLength, int maxInterval)
00004         : QObject(pParent),
00005           m_pFilterBuffer(new CSAMPLE[filterLength]),
00006           m_iFilterLength(filterLength),
00007           m_iValidPresses(0),
00008           m_iMaxInterval(maxInterval) {
00009     m_timer.start();
00010 }
00011 
00012 TapFilter::~TapFilter() {
00013     delete [] m_pFilterBuffer;
00014 }
00015 
00016 void TapFilter::tap() {
00017 
00018     int millisElapsed = m_timer.restart();
00019 
00020     if (millisElapsed <= m_iMaxInterval) {
00021         // Move back in filter one sample
00022         for (int i = m_iFilterLength-1; i > 0; i--) {
00023             m_pFilterBuffer[i] = m_pFilterBuffer[i-1];
00024         }
00025 
00026         // Insert the sample in the filter
00027         m_pFilterBuffer[0] = millisElapsed;
00028 
00029         m_iValidPresses++;
00030         if (m_iValidPresses > m_iFilterLength)
00031             m_iValidPresses = m_iFilterLength;
00032 
00033         double temp = 0.;
00034         for (int i = 0; i < m_iValidPresses; ++i)
00035             temp += m_pFilterBuffer[i];
00036         temp /= m_iValidPresses;
00037 
00038         emit(tapped(temp, m_iValidPresses));
00039     } else {
00040         // Reset the filter
00041         m_iValidPresses = 0;
00042     }
00043 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines