EngineFilterButterworth8::EngineFilterButterworth8(filterType type, int sampleRate, double freqCorner1, double freqCorner2)
{
	m_type = type;

	switch(type)
	{
		case FILTER_LOWPASS:
			m_bufSize = 8;
			Q_ASSERT(freqCorner2 == 0);
			m_coef[0] = 1 * fid_design_coef(m_coef + 1, 8, "LpBu8", sampleRate, freqCorner1, 0, 0);
			break;

		case FILTER_BANDPASS:
			m_bufSize = 16;
			m_coef[0]= 1 * fid_design_coef(m_coef + 1, 16, "BpBu8", sampleRate, freqCorner1, freqCorner2, 0);
			break;

		case FILTER_HIGHPASS:
			m_bufSize = 8;
			Q_ASSERT(freqCorner2 == 0);
			m_coef[0] = 1 * fid_design_coef(m_coef + 1, 8, "HpBu8", sampleRate, freqCorner1, 0, 0);
			break;
	}

	//Initialize Buffers
	for(int i=0; i < m_bufSize; i++)
	{
		m_buf1[i] = 0;
		m_buf2[i] = 0;
	}
}
예제 #2
0
void EngineFilterButterworth8High::setFrequencyCorners(int sampleRate,
                                                       double freqCorner1) {
    m_sampleRate = sampleRate;
    // Copy the old coefficients into m_oldCoef
    memcpy(m_oldCoef, m_coef, MAX_COEFS * sizeof(double));
    m_coef[0] = fid_design_coef(m_coef + 1, 8, "HpBu8", m_sampleRate,
                              freqCorner1, 0, 0);
    initBuffers();
    m_doRamping = true;
}
예제 #3
0
void EngineFilterButterworth8High::setFrequencyCorners(double freqCorner1) {
    m_coef[0] = 1 * fid_design_coef(m_coef + 1, 8, "HpBu8", m_sampleRate,
                                    freqCorner1, 0, 0);
    initBuffers();
}
예제 #4
0
void EngineFilterButterworth8Band::setFrequencyCorners(double freqCorner1,
        double freqCorner2) {
    m_coef[0]= 1 * fid_design_coef(m_coef + 1, 16, "BpBu8", m_sampleRate,
                                   freqCorner1, freqCorner2, 0);
    initBuffers();
}