=== modified file 'mixxx/src/engine/enginefilterblock.cpp' --- mixxx/src/engine/enginefilterblock.cpp 2012-07-04 05:37:09 +0000 +++ mixxx/src/engine/enginefilterblock.cpp 2012-12-24 20:29:42 +0000 @@ -118,6 +118,10 @@ memset(m_pTemp1, 0, sizeof(CSAMPLE) * MAX_BUFFER_LEN); memset(m_pTemp2, 0, sizeof(CSAMPLE) * MAX_BUFFER_LEN); memset(m_pTemp3, 0, sizeof(CSAMPLE) * MAX_BUFFER_LEN); + + m_lowFinal = m_midFinal = m_highFinal = 0.f; + m_lowCur = m_midCur = m_highCur = 0.f; + m_step = 0.05; } EngineFilterBlock::~EngineFilterBlock() @@ -177,6 +181,59 @@ if (filterKillHigh->get()==0.) fHigh = filterpotHigh->get(); //*1.2; + if (fLow != m_lowFinal) + m_lowFinal = fLow; + if (fMid != m_midFinal) + m_midFinal = fMid; + if (fHigh != m_highFinal) + m_highFinal = fHigh; + + if (m_lowCur > m_lowFinal) + { + if (m_lowCur - m_lowFinal > m_step) + m_lowCur -= m_step; + else + m_lowCur = m_lowFinal; + } + else if (m_lowCur < m_lowFinal) + { + if (m_lowFinal - m_lowCur > m_step) + m_lowCur += m_step; + else + m_lowCur = m_lowFinal; + } + + if (m_midCur > m_midFinal) + { + if (m_midCur - m_midFinal > m_step) + m_midCur -= m_step; + else + m_midCur = m_midFinal; + } + else if (m_midCur < m_midFinal) + { + if (m_midFinal - m_midCur > m_step) + m_midCur += m_step; + else + m_midCur = m_midFinal; + } + + + if (m_highCur > m_highFinal) + { + if (m_highCur - m_highFinal > m_step) + m_highCur -= m_step; + else + m_highCur = m_highFinal; + } + else if (m_highCur < m_highFinal) + { + if (m_highFinal - m_highCur > m_step) + m_highCur += m_step; + else + m_highCur = m_highFinal; + } + #ifndef __LOFI__ setFilters(); #endif @@ -186,8 +243,8 @@ high->process(pIn, m_pTemp3, iBufferSize); SampleUtil::copy3WithGain(pOutput, - m_pTemp1, fLow, - m_pTemp2, fMid, - m_pTemp3, fHigh, iBufferSize); + m_pTemp1, m_lowCur, + m_pTemp2, m_midCur, + m_pTemp3, m_highCur, iBufferSize); } === modified file 'mixxx/src/engine/enginefilterblock.h' --- mixxx/src/engine/enginefilterblock.h 2012-07-04 05:37:09 +0000 +++ mixxx/src/engine/enginefilterblock.h 2012-12-24 20:15:04 +0000 @@ -61,6 +61,10 @@ int ilowFreq, ihighFreq; bool blofi; + + float m_lowFinal, m_midFinal, m_highFinal; + float m_lowCur, m_midCur, m_highCur; + float m_step; }; #endif