Exemplo n.º 1
0
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() ) );
}
Exemplo n.º 3
0
void EngineFilterBessel8Low::setFrequencyCorners(int sampleRate,
                                                 double freqCorner1) {
    // Copy the old coefficients into m_oldCoef
    setCoefs("LpBe8", sampleRate, freqCorner1);
}
Exemplo n.º 4
0
void EngineFilterBessel8High::setFrequencyCorners(int sampleRate,
                                                  double freqCorner1) {
    setCoefs("HpBe8", sampleRate, freqCorner1);
}
Exemplo n.º 5
0
void EngineFilterBessel8Band::setFrequencyCorners(int sampleRate,
                                                  double freqCorner1,
                                                  double freqCorner2) {
    setCoefs("BpBe8", sampleRate, freqCorner1, freqCorner2);
}
Exemplo n.º 6
0
void EngineFilterButterworth8High::setFrequencyCorners(int sampleRate,
                                             double freqCorner1) {
    setCoefs("HpBu8", sampleRate, freqCorner1);
}
Exemplo n.º 7
0
void EngineFilterButterworth8Band::setFrequencyCorners(int sampleRate,
                                             double freqCorner1,
                                             double freqCorner2) {
    setCoefs("BpBu8", sampleRate, freqCorner1, freqCorner2);
}