void EngineFilterButterworth8High::process(const CSAMPLE *pIn, const CSAMPLE *ppOut, const int iBufferSize) { CSAMPLE *pOutput = (CSAMPLE *)ppOut; for (int i=0; i < iBufferSize; i += 2) { pOutput[i] = _processHighpass(m_coef, m_buf1, pIn[i]); pOutput[i+1] = _processHighpass(m_coef, m_buf2, pIn[i+1]); } zap_buffer_denormals(m_buf1, m_bufSize); zap_buffer_denormals(m_buf2, m_bufSize); }
void EngineFilterButterworth8High::process(const CSAMPLE* pIn, CSAMPLE* pOutput, const int iBufferSize) { double tmp1, tmp2; double cross_mix = 0.0; double cross_inc = 2.0 / static_cast<double>(iBufferSize); for (int i = 0; i < iBufferSize; i += 2) { pOutput[i] = _processHighpass(m_coef, m_buf1, pIn[i]); pOutput[i+1] = _processHighpass(m_coef, m_buf2, pIn[i+1]); // Do a linear cross fade between the old samples and the new samples if (m_doRamping) { tmp1 = _processHighpass(m_oldCoef, m_oldBuf1, pIn[i]); tmp2 = _processHighpass(m_oldCoef, m_oldBuf2, pIn[i+1]); pOutput[i] = pOutput[i] * cross_mix + tmp1 * (1.0 - cross_mix); pOutput[i + 1] = pOutput[i + 1] * cross_mix + tmp2 * (1.0 - cross_mix); cross_mix += cross_inc; } } m_doRamping = false; }
void EngineFilterButterworth8::process(const CSAMPLE *pIn, const CSAMPLE *ppOut, const int iBufferSize) { CSAMPLE * pOutput = (CSAMPLE *)ppOut; switch(m_type) { case FILTER_LOWPASS: for(int i=0; i < iBufferSize; i += 2) { pOutput[i] = _processLowpass(m_coef, m_buf1, pIn[i]); pOutput[i+1] = _processLowpass(m_coef, m_buf2, pIn[i+1]); } break; case FILTER_BANDPASS: for(int i=0; i < iBufferSize; i += 2) { pOutput[i] = _processBandpass(m_coef, m_buf1, pIn[i]); pOutput[i+1] = _processBandpass(m_coef, m_buf2, pIn[i+1]); if(pOutput[i] != pOutput[i]) //Check for NaN pOutput[i] = 0; if(pOutput[i+1] != pOutput[i+1]) //Check for NaN pOutput[i+1] = 0; } break; case FILTER_HIGHPASS: for(int i=0; i < iBufferSize; i += 2) { pOutput[i] = _processHighpass(m_coef, m_buf1, pIn[i]); pOutput[i+1] = _processHighpass(m_coef, m_buf2, pIn[i+1]); } break; } zap_buffer_denormals(m_buf1, m_bufSize); zap_buffer_denormals(m_buf2, m_bufSize); }