int EngineFilterBessel8Low::setFrequencyCornersForIntDelay( double desiredCorner1Ratio, int maxDelay) { // these values are calculated using the phase returned by // fid_response_pha() at corner / 20 // group delay at 1 Hz freqCorner1 and 1 Hz Samplerate const double kDelayFactor1 = 0.506051799; // Factor, required to hit the end of the quadratic curve const double kDelayFactor2 = 1.661247; // Table for the non quadratic, high part near the sample rate const double delayRatioTable[] = { 0.500000000, // delay 0 0.321399282, // delay 1 0.213843537, // delay 2 0.155141284, // delay 3 0.120432232, // delay 4 0.097999886, // delay 5 0.082451739, // delay 6 0.071098408, // delay 7 0.062444910, // delay 8 0.055665936, // delay 9 0.050197933, // delay 10 0.045689120, // delay 11 0.041927420, // delay 12 0.038735202, // delay 13 0.035992756, // delay 14 0.033611618, // delay 15 0.031525020, // delay 16 0.029681641, // delay 17 0.028041409, // delay 18 0.026572562, // delay 19 }; double dDelay = kDelayFactor1 / desiredCorner1Ratio - kDelayFactor2 * desiredCorner1Ratio; int iDelay = math_clamp((int)(dDelay + 0.5), 0, maxDelay); double quantizedRatio; if (iDelay >= (int)(sizeof(delayRatioTable) / sizeof(double))) { // pq formula, only valid for low frequencies quantizedRatio = (-(iDelay / kDelayFactor2 / 2)) + sqrt((iDelay / kDelayFactor2 / 2)*(iDelay / kDelayFactor2 / 2) + kDelayFactor1 / kDelayFactor2); } else { quantizedRatio = delayRatioTable[iDelay]; } setCoefs("LpBe8", 1, quantizedRatio); return iDelay; }
void TransactionWidget::createActions() { clearAction = new QAction( this ); clearAction->setText( tr("Clear coefficients for the selected deals") ); setCoefAction = new QAction( this ); setCoefAction->setText( tr("Set coefficients for the selected deals...") ); reloadAction = new QAction( this ); reloadAction->setText( tr("Reload") ); reloadAction->setShortcut( tr("Ctrl+R") ); reloadAction->setIcon( QIcon(":/TransactionRecord/Resources/reload.png") ); toolBar->addAction( setCoefAction, 0 ); toolBar->addAction( clearAction, 0, 1 ); toolBar->addAction( reloadAction, 0 ); connect( setCoefAction, SIGNAL( triggered() ), this, SLOT( setCoefs() ) ); connect( clearAction, SIGNAL( triggered() ), this, SLOT( clearCoefs() ) ); connect( reloadAction, SIGNAL( triggered() ), this, SLOT( reload() ) ); }
void EngineFilterBessel8Low::setFrequencyCorners(int sampleRate, double freqCorner1) { // Copy the old coefficients into m_oldCoef setCoefs("LpBe8", sampleRate, freqCorner1); }
void EngineFilterBessel8High::setFrequencyCorners(int sampleRate, double freqCorner1) { setCoefs("HpBe8", sampleRate, freqCorner1); }
void EngineFilterBessel8Band::setFrequencyCorners(int sampleRate, double freqCorner1, double freqCorner2) { setCoefs("BpBe8", sampleRate, freqCorner1, freqCorner2); }
void EngineFilterButterworth8High::setFrequencyCorners(int sampleRate, double freqCorner1) { setCoefs("HpBu8", sampleRate, freqCorner1); }
void EngineFilterButterworth8Band::setFrequencyCorners(int sampleRate, double freqCorner1, double freqCorner2) { setCoefs("BpBu8", sampleRate, freqCorner1, freqCorner2); }