mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -05:00 
			
		
		
		
	WDSP: impulse responses refactoring (5)
This commit is contained in:
		
							parent
							
								
									12f4d0a0fd
								
							
						
					
					
						commit
						ef0255f2bb
					
				@ -1005,7 +1005,7 @@ void RXA::updateNBPFilters()
 | 
				
			|||||||
    if (a->fnfrun)
 | 
					    if (a->fnfrun)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        a->calc_impulse();
 | 
					        a->calc_impulse();
 | 
				
			||||||
        a->fircore->setImpulse(a->impulse.data(), 1);
 | 
					        a->fircore->setImpulse(a->impulse, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (b->bpsnba->fnfrun)
 | 
					    if (b->bpsnba->fnfrun)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1096,7 +1096,7 @@ void RXA::nbpSetNotchesRun(int _run)
 | 
				
			|||||||
        b->fnfrun = a->master_run;
 | 
					        b->fnfrun = a->master_run;
 | 
				
			||||||
        bpsnbaCheck(mode, _run);
 | 
					        bpsnbaCheck(mode, _run);
 | 
				
			||||||
        b->calc_impulse();                           // recalc nbp impulse response
 | 
					        b->calc_impulse();                           // recalc nbp impulse response
 | 
				
			||||||
        b->fircore->setImpulse(b->impulse.data(), 0);       // calculate new filter masks
 | 
					        b->fircore->setImpulse(b->impulse, 0);       // calculate new filter masks
 | 
				
			||||||
        bpsnbaSet();
 | 
					        bpsnbaSet();
 | 
				
			||||||
        b->fircore->setUpdate();                       // apply new filter masks
 | 
					        b->fircore->setUpdate();                       // apply new filter masks
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -1113,7 +1113,7 @@ void RXA::nbpSetWindow(int _wintype)
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        a->wintype = _wintype;
 | 
					        a->wintype = _wintype;
 | 
				
			||||||
        a->calc_impulse();
 | 
					        a->calc_impulse();
 | 
				
			||||||
        a->fircore->setImpulse(a->impulse.data(), 1);
 | 
					        a->fircore->setImpulse(a->impulse, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (b->wintype != _wintype)
 | 
					    if (b->wintype != _wintype)
 | 
				
			||||||
@ -1134,7 +1134,7 @@ void RXA::nbpSetAutoIncrease(int _autoincr)
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        a->autoincr = _autoincr;
 | 
					        a->autoincr = _autoincr;
 | 
				
			||||||
        a->calc_impulse();
 | 
					        a->calc_impulse();
 | 
				
			||||||
        a->fircore->setImpulse(a->impulse.data(), 1);
 | 
					        a->fircore->setImpulse(a->impulse, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (b->autoincr != _autoincr)
 | 
					    if (b->autoincr != _autoincr)
 | 
				
			||||||
 | 
				
			|||||||
@ -926,7 +926,7 @@ void TXA::setBandpassNC(int _nc)
 | 
				
			|||||||
            1,
 | 
					            1,
 | 
				
			||||||
            a->gain / (double)(2 * a->size)
 | 
					            a->gain / (double)(2 * a->size)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        a->fircore->setNc(a->nc, impulse.data());
 | 
					        a->fircore->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    a = bp1;
 | 
					    a = bp1;
 | 
				
			||||||
@ -945,7 +945,7 @@ void TXA::setBandpassNC(int _nc)
 | 
				
			|||||||
            1,
 | 
					            1,
 | 
				
			||||||
            a->gain / (double)(2 * a->size)
 | 
					            a->gain / (double)(2 * a->size)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        a->fircore->setNc(a->nc, impulse.data());
 | 
					        a->fircore->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    a = bp2;
 | 
					    a = bp2;
 | 
				
			||||||
@ -964,7 +964,7 @@ void TXA::setBandpassNC(int _nc)
 | 
				
			|||||||
            1,
 | 
					            1,
 | 
				
			||||||
            a->gain / (double)(2 * a->size)
 | 
					            a->gain / (double)(2 * a->size)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        a->fircore->setNc(a->nc, impulse.data());
 | 
					        a->fircore->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -77,7 +77,7 @@ BANDPASS::BANDPASS(
 | 
				
			|||||||
        1,
 | 
					        1,
 | 
				
			||||||
        gain / (double)(2 * size)
 | 
					        gain / (double)(2 * size)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    fircore = new FIRCORE(size, in, out, nc, mp, impulse.data());
 | 
					    fircore = new FIRCORE(size, in, out, mp, impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BANDPASS::~BANDPASS()
 | 
					BANDPASS::~BANDPASS()
 | 
				
			||||||
@ -119,7 +119,7 @@ void BANDPASS::setSamplerate(int _rate)
 | 
				
			|||||||
        1,
 | 
					        1,
 | 
				
			||||||
        gain / (double) (2 * size)
 | 
					        gain / (double) (2 * size)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BANDPASS::setSize(int _size)
 | 
					void BANDPASS::setSize(int _size)
 | 
				
			||||||
@ -139,7 +139,7 @@ void BANDPASS::setSize(int _size)
 | 
				
			|||||||
        1,
 | 
					        1,
 | 
				
			||||||
        gain / (double) (2 * size)
 | 
					        gain / (double) (2 * size)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BANDPASS::setGain(double _gain, int _update)
 | 
					void BANDPASS::setGain(double _gain, int _update)
 | 
				
			||||||
@ -156,7 +156,7 @@ void BANDPASS::setGain(double _gain, int _update)
 | 
				
			|||||||
        1,
 | 
					        1,
 | 
				
			||||||
        gain / (double) (2 * size)
 | 
					        gain / (double) (2 * size)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), _update);
 | 
					    fircore->setImpulse(impulse, _update);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BANDPASS::calcBandpassFilter(double _f_low, double _f_high, double _gain)
 | 
					void BANDPASS::calcBandpassFilter(double _f_low, double _f_high, double _gain)
 | 
				
			||||||
@ -177,7 +177,7 @@ void BANDPASS::calcBandpassFilter(double _f_low, double _f_high, double _gain)
 | 
				
			|||||||
            1,
 | 
					            1,
 | 
				
			||||||
            gain / (double)(2 * size)
 | 
					            gain / (double)(2 * size)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        fircore->setImpulse(impulse.data(), 1);
 | 
					        fircore->setImpulse(impulse, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -203,7 +203,7 @@ void BANDPASS::setBandpassFreqs(double _f_low, double _f_high)
 | 
				
			|||||||
            gain / (double)(2 * size)
 | 
					            gain / (double)(2 * size)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fircore->setImpulse(impulse.data(), 0);
 | 
					        fircore->setImpulse(impulse, 0);
 | 
				
			||||||
        f_low = _f_low;
 | 
					        f_low = _f_low;
 | 
				
			||||||
        f_high = _f_high;
 | 
					        f_high = _f_high;
 | 
				
			||||||
        fircore->setUpdate();
 | 
					        fircore->setUpdate();
 | 
				
			||||||
@ -227,7 +227,7 @@ void BANDPASS::SetBandpassNC(int _nc)
 | 
				
			|||||||
            1,
 | 
					            1,
 | 
				
			||||||
            gain / (double)( 2 * size)
 | 
					            gain / (double)( 2 * size)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        fircore->setNc(nc, impulse.data());
 | 
					        fircore->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -176,7 +176,7 @@ void BPSNBA::recalc_bpsnba_filter(int update)
 | 
				
			|||||||
    b->gain = gain;
 | 
					    b->gain = gain;
 | 
				
			||||||
    b->autoincr = autoincr;
 | 
					    b->autoincr = autoincr;
 | 
				
			||||||
    b->calc_impulse();
 | 
					    b->calc_impulse();
 | 
				
			||||||
    b->fircore->setImpulse(b->impulse.data(), update);
 | 
					    b->fircore->setImpulse(b->impulse, update);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/********************************************************************************************************
 | 
					/********************************************************************************************************
 | 
				
			||||||
 | 
				
			|||||||
@ -37,7 +37,7 @@ void CFIR::calc()
 | 
				
			|||||||
    std::vector<float> impulse;
 | 
					    std::vector<float> impulse;
 | 
				
			||||||
    scale = 1.0 / (float)(2 * size);
 | 
					    scale = 1.0 / (float)(2 * size);
 | 
				
			||||||
    cfir_impulse (impulse, nc, DD, R, Pairs, runrate, cicrate, cutoff, xtype, xbw, 1, scale, wintype);
 | 
					    cfir_impulse (impulse, nc, DD, R, Pairs, runrate, cicrate, cutoff, xtype, xbw, 1, scale, wintype);
 | 
				
			||||||
    p = new FIRCORE(size, in, out, nc, mp, impulse.data());
 | 
					    p = new FIRCORE(size, in, out, mp, impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CFIR::decalc()
 | 
					void CFIR::decalc()
 | 
				
			||||||
 | 
				
			|||||||
@ -68,16 +68,16 @@ EMPHP::EMPHP(
 | 
				
			|||||||
    FCurve::fc_impulse (
 | 
					    FCurve::fc_impulse (
 | 
				
			||||||
        impulse,
 | 
					        impulse,
 | 
				
			||||||
        nc,
 | 
					        nc,
 | 
				
			||||||
        f_low,
 | 
					        (float) f_low,
 | 
				
			||||||
        f_high,
 | 
					        (float) f_high,
 | 
				
			||||||
        -20.0 * log10(f_high / f_low),
 | 
					        (float) (-20.0 * log10(f_high / f_low)),
 | 
				
			||||||
        0.0,
 | 
					        0.0,
 | 
				
			||||||
        ctype,
 | 
					        ctype,
 | 
				
			||||||
        rate,
 | 
					        (float) rate,
 | 
				
			||||||
        1.0 / (2.0 * size),
 | 
					        (float) (1.0 / (2.0 * size)),
 | 
				
			||||||
        0, 0
 | 
					        0, 0
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    p = new FIRCORE(size, in, out, nc, mp, impulse.data());
 | 
					    p = new FIRCORE(size, in, out, mp, impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EMPHP::~EMPHP()
 | 
					EMPHP::~EMPHP()
 | 
				
			||||||
@ -121,7 +121,7 @@ void EMPHP::setSamplerate(int _rate)
 | 
				
			|||||||
        1.0 / (2.0 * size),
 | 
					        1.0 / (2.0 * size),
 | 
				
			||||||
        0, 0
 | 
					        0, 0
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    p->setImpulse(impulse.data(), 1);
 | 
					    p->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void EMPHP::setSize(int _size)
 | 
					void EMPHP::setSize(int _size)
 | 
				
			||||||
@ -142,7 +142,7 @@ void EMPHP::setSize(int _size)
 | 
				
			|||||||
        0,
 | 
					        0,
 | 
				
			||||||
        0
 | 
					        0
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    p->setImpulse(impulse.data(), 1);
 | 
					    p->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/********************************************************************************************************
 | 
					/********************************************************************************************************
 | 
				
			||||||
@ -174,17 +174,17 @@ void EMPHP::setNC(int _nc)
 | 
				
			|||||||
        FCurve::fc_impulse (
 | 
					        FCurve::fc_impulse (
 | 
				
			||||||
            impulse,
 | 
					            impulse,
 | 
				
			||||||
            nc,
 | 
					            nc,
 | 
				
			||||||
            f_low,
 | 
					            (float) f_low,
 | 
				
			||||||
            f_high,
 | 
					            (float) f_high,
 | 
				
			||||||
            -20.0 * log10(f_high / f_low),
 | 
					            (float) (-20.0 * log10(f_high / f_low)),
 | 
				
			||||||
            0.0,
 | 
					            0.0,
 | 
				
			||||||
            ctype,
 | 
					            ctype,
 | 
				
			||||||
            rate,
 | 
					            (float) rate,
 | 
				
			||||||
            1.0 / (2.0 * size),
 | 
					            (float) (1.0 / (2.0 * size)),
 | 
				
			||||||
            0,
 | 
					            0,
 | 
				
			||||||
            0
 | 
					            0
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        p->setNc(nc, impulse.data());
 | 
					        p->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -208,7 +208,7 @@ void EMPHP::setFreqs(double low, double high)
 | 
				
			|||||||
            0,
 | 
					            0,
 | 
				
			||||||
            0
 | 
					            0
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        p->setImpulse(impulse.data(), 1);
 | 
					        p->setImpulse(impulse, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								wdsp/eqp.cpp
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								wdsp/eqp.cpp
									
									
									
									
									
								
							@ -244,7 +244,7 @@ EQP::EQP(
 | 
				
			|||||||
    wintype = _wintype;
 | 
					    wintype = _wintype;
 | 
				
			||||||
    samplerate = (double) _samplerate;
 | 
					    samplerate = (double) _samplerate;
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore = new FIRCORE(size, in, out, nc, mp, impulse.data());
 | 
					    fircore = new FIRCORE(size, in, out, mp, impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EQP::~EQP()
 | 
					EQP::~EQP()
 | 
				
			||||||
@ -277,7 +277,7 @@ void EQP::setSamplerate(int rate)
 | 
				
			|||||||
    std::vector<float> impulse;
 | 
					    std::vector<float> impulse;
 | 
				
			||||||
    samplerate = rate;
 | 
					    samplerate = rate;
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void EQP::setSize(int _size)
 | 
					void EQP::setSize(int _size)
 | 
				
			||||||
@ -286,7 +286,7 @@ void EQP::setSize(int _size)
 | 
				
			|||||||
    size = _size;
 | 
					    size = _size;
 | 
				
			||||||
    fircore->setSize(size);
 | 
					    fircore->setSize(size);
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/********************************************************************************************************
 | 
					/********************************************************************************************************
 | 
				
			||||||
@ -308,7 +308,7 @@ void EQP::setNC(int _nc)
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        nc = _nc;
 | 
					        nc = _nc;
 | 
				
			||||||
        eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					        eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
        fircore->setNc(nc, impulse.data());
 | 
					        fircore->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -330,7 +330,7 @@ void EQP::setProfile(int _nfreqs, const float* _F, const float* _G)
 | 
				
			|||||||
    std::copy(_F, _F + (_nfreqs + 1), F.begin());
 | 
					    std::copy(_F, _F + (_nfreqs + 1), F.begin());
 | 
				
			||||||
    std::copy(_G, _G + (_nfreqs + 1), G.begin());
 | 
					    std::copy(_G, _G + (_nfreqs + 1), G.begin());
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void EQP::setCtfmode(int _mode)
 | 
					void EQP::setCtfmode(int _mode)
 | 
				
			||||||
@ -338,7 +338,7 @@ void EQP::setCtfmode(int _mode)
 | 
				
			|||||||
    std::vector<float> impulse;
 | 
					    std::vector<float> impulse;
 | 
				
			||||||
    ctfmode = _mode;
 | 
					    ctfmode = _mode;
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void EQP::setWintype(int _wintype)
 | 
					void EQP::setWintype(int _wintype)
 | 
				
			||||||
@ -346,7 +346,7 @@ void EQP::setWintype(int _wintype)
 | 
				
			|||||||
    std::vector<float> impulse;
 | 
					    std::vector<float> impulse;
 | 
				
			||||||
    wintype = _wintype;
 | 
					    wintype = _wintype;
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void EQP::setGrphEQ(const int *rxeq)
 | 
					void EQP::setGrphEQ(const int *rxeq)
 | 
				
			||||||
@ -366,7 +366,7 @@ void EQP::setGrphEQ(const int *rxeq)
 | 
				
			|||||||
    G[4] = (float)rxeq[3];
 | 
					    G[4] = (float)rxeq[3];
 | 
				
			||||||
    ctfmode = 0;
 | 
					    ctfmode = 0;
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void EQP::setGrphEQ10(const int *rxeq)
 | 
					void EQP::setGrphEQ10(const int *rxeq)
 | 
				
			||||||
@ -389,7 +389,7 @@ void EQP::setGrphEQ10(const int *rxeq)
 | 
				
			|||||||
        G[i] = (float)rxeq[i];
 | 
					        G[i] = (float)rxeq[i];
 | 
				
			||||||
    ctfmode = 0;
 | 
					    ctfmode = 0;
 | 
				
			||||||
    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
					    eq_impulse (impulse, nc, nfreqs, F.data(), G.data(), samplerate, 1.0 / (2.0 * size), ctfmode, wintype);
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace WDSP
 | 
					} // namespace WDSP
 | 
				
			||||||
 | 
				
			|||||||
@ -99,7 +99,7 @@ void FIRCORE::calc(int _flip)
 | 
				
			|||||||
    if (mp)
 | 
					    if (mp)
 | 
				
			||||||
        FIR::mp_imp (nc, impulse, imp, 16, 0);
 | 
					        FIR::mp_imp (nc, impulse, imp, 16, 0);
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        std::copy(impulse.begin(), impulse.begin() + nc * 2, imp.begin());
 | 
					        std::copy(impulse.begin(), impulse.end(), imp.begin());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (int i = 0; i < nfor; i++)
 | 
					    for (int i = 0; i < nfor; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -122,20 +122,19 @@ FIRCORE::FIRCORE(
 | 
				
			|||||||
    int _size,
 | 
					    int _size,
 | 
				
			||||||
    float* _in,
 | 
					    float* _in,
 | 
				
			||||||
    float* _out,
 | 
					    float* _out,
 | 
				
			||||||
    int _nc,
 | 
					 | 
				
			||||||
    int _mp,
 | 
					    int _mp,
 | 
				
			||||||
    const float* _impulse
 | 
					    const std::vector<float>& _impulse
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    size = _size;
 | 
					    size = _size;
 | 
				
			||||||
    in = _in;
 | 
					    in = _in;
 | 
				
			||||||
    out = _out;
 | 
					    out = _out;
 | 
				
			||||||
    nc = _nc;
 | 
					    nc = (int) (_impulse.size() / 2);
 | 
				
			||||||
    mp = _mp;
 | 
					    mp = _mp;
 | 
				
			||||||
    plan();
 | 
					    plan();
 | 
				
			||||||
    impulse.resize(nc * 2);
 | 
					    impulse.resize(_impulse.size());
 | 
				
			||||||
    imp.resize(nc * 2);
 | 
					    imp.resize(_impulse.size());
 | 
				
			||||||
    std::copy(_impulse, _impulse + nc * 2, impulse.begin());
 | 
					    std::copy(_impulse.begin(), _impulse.end(), impulse.begin());
 | 
				
			||||||
    calc(1);
 | 
					    calc(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -204,21 +203,29 @@ void FIRCORE::setSize(int _size)
 | 
				
			|||||||
    calc(1);
 | 
					    calc(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FIRCORE::setImpulse(const float* _impulse, int _update)
 | 
					void FIRCORE::setImpulse(const std::vector<float>& _impulse, int _update)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    std::copy(_impulse, _impulse + nc * 2, impulse.begin());
 | 
					    auto imp_nc = (int) (_impulse.size() / 2);
 | 
				
			||||||
    calc(_update);
 | 
					
 | 
				
			||||||
 | 
					    if (imp_nc == nc) // to be on the safe side but setNc would be called if impulse size changes
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        std::copy(_impulse.begin(), _impulse.end(), impulse.begin());
 | 
				
			||||||
 | 
					        calc(_update);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else{
 | 
				
			||||||
 | 
					        setNc(_impulse);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FIRCORE::setNc(int _nc, const float* _impulse)
 | 
					void FIRCORE::setNc(const std::vector<float>& _impulse)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // because of FFT planning, this will probably cause a glitch in audio if done during dataflow
 | 
					    // because of FFT planning, this will probably cause a glitch in audio if done during dataflow
 | 
				
			||||||
    deplan();
 | 
					    deplan();
 | 
				
			||||||
    nc = _nc;
 | 
					    nc = (int) (_impulse.size() / 2);
 | 
				
			||||||
    plan();
 | 
					    plan();
 | 
				
			||||||
    imp.resize(nc * 2);
 | 
					    imp.resize(nc * 2);
 | 
				
			||||||
    impulse.resize(nc * 2);
 | 
					    impulse.resize(nc * 2);
 | 
				
			||||||
    std::copy(_impulse, _impulse + nc * 2, impulse.begin());
 | 
					    std::copy(_impulse.begin(), _impulse.end(), impulse.begin());
 | 
				
			||||||
    calc(1);
 | 
					    calc(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -70,9 +70,8 @@ public:
 | 
				
			|||||||
        int size,
 | 
					        int size,
 | 
				
			||||||
        float* in,
 | 
					        float* in,
 | 
				
			||||||
        float* out,
 | 
					        float* out,
 | 
				
			||||||
        int nc,
 | 
					 | 
				
			||||||
        int mp,
 | 
					        int mp,
 | 
				
			||||||
        const float* impulse
 | 
					        const std::vector<float>& impulse
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    FIRCORE(const FIRCORE&) = delete;
 | 
					    FIRCORE(const FIRCORE&) = delete;
 | 
				
			||||||
    FIRCORE& operator=(const FIRCORE& other) = delete;
 | 
					    FIRCORE& operator=(const FIRCORE& other) = delete;
 | 
				
			||||||
@ -82,8 +81,8 @@ public:
 | 
				
			|||||||
    void execute();
 | 
					    void execute();
 | 
				
			||||||
    void setBuffers(float* in, float* out);
 | 
					    void setBuffers(float* in, float* out);
 | 
				
			||||||
    void setSize(int size);
 | 
					    void setSize(int size);
 | 
				
			||||||
    void setImpulse(const float* impulse, int update);
 | 
					    void setImpulse(const std::vector<float>& impulse, int update);
 | 
				
			||||||
    void setNc(int nc, const float* impulse);
 | 
					    void setNc(const std::vector<float>& impulse);
 | 
				
			||||||
    void setMp(int mp);
 | 
					    void setMp(int mp);
 | 
				
			||||||
    void setUpdate();
 | 
					    void setUpdate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										20
									
								
								wdsp/fmd.cpp
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								wdsp/fmd.cpp
									
									
									
									
									
								
							@ -159,11 +159,11 @@ FMD::FMD(
 | 
				
			|||||||
        0,
 | 
					        0,
 | 
				
			||||||
        0
 | 
					        0
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    pde = new FIRCORE(size, audio.data(), out, nc_de, mp_de, impulse.data());
 | 
					    pde = new FIRCORE(size, audio.data(), out, mp_de, impulse);
 | 
				
			||||||
    // audio filter
 | 
					    // audio filter
 | 
				
			||||||
    std::vector<float> impulseb;
 | 
					    std::vector<float> impulseb;
 | 
				
			||||||
    FIR::fir_bandpass(impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
					    FIR::fir_bandpass(impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
				
			||||||
    paud = new FIRCORE(size, out, out, nc_aud, mp_aud, impulseb.data());
 | 
					    paud = new FIRCORE(size, out, out, mp_aud, impulseb);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FMD::~FMD()
 | 
					FMD::~FMD()
 | 
				
			||||||
@ -266,11 +266,11 @@ void FMD::setSamplerate(int _rate)
 | 
				
			|||||||
        0,
 | 
					        0,
 | 
				
			||||||
        0
 | 
					        0
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    pde->setImpulse(impulse.data(), 1);
 | 
					    pde->setImpulse(impulse, 1);
 | 
				
			||||||
    // audio filter
 | 
					    // audio filter
 | 
				
			||||||
    std::vector<float> impulseb;
 | 
					    std::vector<float> impulseb;
 | 
				
			||||||
    FIR::fir_bandpass(impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
					    FIR::fir_bandpass(impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
				
			||||||
    paud->setImpulse(impulseb.data(), 1);
 | 
					    paud->setImpulse(impulseb, 1);
 | 
				
			||||||
    plim->setSamplerate((int) rate);
 | 
					    plim->setSamplerate((int) rate);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -296,12 +296,12 @@ void FMD::setSize(int _size)
 | 
				
			|||||||
        0,
 | 
					        0,
 | 
				
			||||||
        0
 | 
					        0
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    pde = new FIRCORE(size, audio.data(), out, nc_de, mp_de, impulse.data());
 | 
					    pde = new FIRCORE(size, audio.data(), out, mp_de, impulse);
 | 
				
			||||||
    // audio filter
 | 
					    // audio filter
 | 
				
			||||||
    delete paud;
 | 
					    delete paud;
 | 
				
			||||||
    std::vector<float> impulseb;
 | 
					    std::vector<float> impulseb;
 | 
				
			||||||
    FIR::fir_bandpass(impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
					    FIR::fir_bandpass(impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
				
			||||||
    paud = new FIRCORE(size, out, out, nc_aud, mp_aud, impulseb.data());
 | 
					    paud = new FIRCORE(size, out, out, mp_aud, impulseb);
 | 
				
			||||||
    plim->setSize(size);
 | 
					    plim->setSize(size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -348,7 +348,7 @@ void FMD::setNCde(int nc)
 | 
				
			|||||||
            0,
 | 
					            0,
 | 
				
			||||||
            0
 | 
					            0
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        pde->setNc(nc_de, impulse.data());
 | 
					        pde->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -368,7 +368,7 @@ void FMD::setNCaud(int nc)
 | 
				
			|||||||
        nc_aud = nc;
 | 
					        nc_aud = nc;
 | 
				
			||||||
        std::vector<float> impulse;
 | 
					        std::vector<float> impulse;
 | 
				
			||||||
        FIR::fir_bandpass(impulse, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
					        FIR::fir_bandpass(impulse, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
				
			||||||
        paud->setNc(nc_aud, impulse.data());
 | 
					        paud->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -421,11 +421,11 @@ void FMD::setAFFilter(double low, double high)
 | 
				
			|||||||
            0,
 | 
					            0,
 | 
				
			||||||
            0
 | 
					            0
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        pde->setImpulse(impulse.data(), 1);
 | 
					        pde->setImpulse(impulse, 1);
 | 
				
			||||||
        // audio filter
 | 
					        // audio filter
 | 
				
			||||||
        std::vector<float> impulseb;
 | 
					        std::vector<float> impulseb;
 | 
				
			||||||
        FIR::fir_bandpass (impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
					        FIR::fir_bandpass (impulseb, nc_aud, 0.8 * f_low, 1.1 * f_high, rate, 0, 1, afgain / (2.0 * size));
 | 
				
			||||||
        paud->setImpulse(impulseb.data(), 1);
 | 
					        paud->setImpulse(impulseb, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -82,7 +82,7 @@ FMMOD::FMMOD(
 | 
				
			|||||||
    mp = _mp;
 | 
					    mp = _mp;
 | 
				
			||||||
    calc();
 | 
					    calc();
 | 
				
			||||||
    FIR::fir_bandpass(impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
					    FIR::fir_bandpass(impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
				
			||||||
    p = new FIRCORE(size, out, out, nc, mp, impulse.data());
 | 
					    p = new FIRCORE(size, out, out, mp, impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FMMOD::~FMMOD()
 | 
					FMMOD::~FMMOD()
 | 
				
			||||||
@ -143,7 +143,7 @@ void FMMOD::setSamplerate(int _rate)
 | 
				
			|||||||
    samplerate = _rate;
 | 
					    samplerate = _rate;
 | 
				
			||||||
    calc();
 | 
					    calc();
 | 
				
			||||||
    FIR::fir_bandpass(impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
					    FIR::fir_bandpass(impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
				
			||||||
    p->setImpulse(impulse.data(), 1);
 | 
					    p->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FMMOD::setSize(int _size)
 | 
					void FMMOD::setSize(int _size)
 | 
				
			||||||
@ -153,7 +153,7 @@ void FMMOD::setSize(int _size)
 | 
				
			|||||||
    calc();
 | 
					    calc();
 | 
				
			||||||
    p->setSize(size);
 | 
					    p->setSize(size);
 | 
				
			||||||
    FIR::fir_bandpass(impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
					    FIR::fir_bandpass(impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
				
			||||||
    p->setImpulse(impulse.data(), 1);
 | 
					    p->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/********************************************************************************************************
 | 
					/********************************************************************************************************
 | 
				
			||||||
@ -167,7 +167,7 @@ void FMMOD::setDeviation(float _deviation)
 | 
				
			|||||||
    double _bp_fc = f_high + _deviation;
 | 
					    double _bp_fc = f_high + _deviation;
 | 
				
			||||||
    std::vector<float> impulse;
 | 
					    std::vector<float> impulse;
 | 
				
			||||||
    FIR::fir_bandpass (impulse, nc, -_bp_fc, +_bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
					    FIR::fir_bandpass (impulse, nc, -_bp_fc, +_bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
				
			||||||
    p->setImpulse(impulse.data(), 0);
 | 
					    p->setImpulse(impulse, 0);
 | 
				
			||||||
    deviation = _deviation;
 | 
					    deviation = _deviation;
 | 
				
			||||||
    // mod
 | 
					    // mod
 | 
				
			||||||
    sphase = 0.0;
 | 
					    sphase = 0.0;
 | 
				
			||||||
@ -197,7 +197,7 @@ void FMMOD::setNC(int _nc)
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        nc = _nc;
 | 
					        nc = _nc;
 | 
				
			||||||
        FIR::fir_bandpass (impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
					        FIR::fir_bandpass (impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
				
			||||||
        p->setNc(nc, impulse.data());
 | 
					        p->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -220,7 +220,7 @@ void FMMOD::setAFFreqs(float _low, float _high)
 | 
				
			|||||||
        f_high = _high;
 | 
					        f_high = _high;
 | 
				
			||||||
        bp_fc = deviation + f_high;
 | 
					        bp_fc = deviation + f_high;
 | 
				
			||||||
        FIR::fir_bandpass (impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
					        FIR::fir_bandpass (impulse, nc, -bp_fc, +bp_fc, samplerate, 0, 1, 1.0 / (2 * size));
 | 
				
			||||||
        p->setImpulse(impulse.data(), 1);
 | 
					        p->setImpulse(impulse, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -49,7 +49,7 @@ void FMSQ::calc()
 | 
				
			|||||||
    G[2] = 3.0;
 | 
					    G[2] = 3.0;
 | 
				
			||||||
    G[3] = (float) (+20.0 * log10(20000.0 / *pllpole));
 | 
					    G[3] = (float) (+20.0 * log10(20000.0 / *pllpole));
 | 
				
			||||||
    EQP::eq_impulse (impulse, nc, 3, F.data(), G.data(), rate, 1.0 / (2.0 * size), 0, 0);
 | 
					    EQP::eq_impulse (impulse, nc, 3, F.data(), G.data(), rate, 1.0 / (2.0 * size), 0, 0);
 | 
				
			||||||
    p = new FIRCORE(size, trigger, noise.data(), nc, mp, impulse.data());
 | 
					    p = new FIRCORE(size, trigger, noise.data(), mp, impulse);
 | 
				
			||||||
    // noise averaging
 | 
					    // noise averaging
 | 
				
			||||||
    avm = exp(-1.0 / (rate * avtau));
 | 
					    avm = exp(-1.0 / (rate * avtau));
 | 
				
			||||||
    onem_avm = 1.0 - avm;
 | 
					    onem_avm = 1.0 - avm;
 | 
				
			||||||
@ -291,7 +291,7 @@ void FMSQ::setNC(int _nc)
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        nc = _nc;
 | 
					        nc = _nc;
 | 
				
			||||||
        EQP::eq_impulse (impulse, nc, 3, F.data(), G.data(), rate, 1.0 / (2.0 * size), 0, 0);
 | 
					        EQP::eq_impulse (impulse, nc, 3, F.data(), G.data(), rate, 1.0 / (2.0 * size), 0, 0);
 | 
				
			||||||
        p->setNc(nc, impulse.data());
 | 
					        p->setNc(impulse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -37,7 +37,7 @@ void ICFIR::calc_icfir (ICFIR *a)
 | 
				
			|||||||
    std::vector<float> impulse;
 | 
					    std::vector<float> impulse;
 | 
				
			||||||
    a->scale = 1.0f / (float)(2 * a->size);
 | 
					    a->scale = 1.0f / (float)(2 * a->size);
 | 
				
			||||||
    icfir_impulse (impulse, a->nc, a->DD, a->R, a->Pairs, (float) a->runrate, (float) a->cicrate, a->cutoff, a->xtype, a->xbw, 1, a->scale, a->wintype);
 | 
					    icfir_impulse (impulse, a->nc, a->DD, a->R, a->Pairs, (float) a->runrate, (float) a->cicrate, a->cutoff, a->xtype, a->xbw, 1, a->scale, a->wintype);
 | 
				
			||||||
    a->p = new FIRCORE(a->size, a->in, a->out, a->nc, a->mp, impulse.data());
 | 
					    a->p = new FIRCORE(a->size, a->in, a->out, a->mp, impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ICFIR::decalc_icfir (ICFIR *a)
 | 
					void ICFIR::decalc_icfir (ICFIR *a)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								wdsp/nbp.cpp
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								wdsp/nbp.cpp
									
									
									
									
									
								
							@ -333,7 +333,7 @@ void NBP::calc_lightweight()
 | 
				
			|||||||
                gain / (float)(2 * size),
 | 
					                gain / (float)(2 * size),
 | 
				
			||||||
                wintype
 | 
					                wintype
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
            fircore->setImpulse(impulse.data(), 1);
 | 
					            fircore->setImpulse(impulse, 1);
 | 
				
			||||||
            // print_impulse ("nbp.txt", size + 1, impulse, 1, 0);
 | 
					            // print_impulse ("nbp.txt", size + 1, impulse, 1, 0);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        hadnotch = havnotch;
 | 
					        hadnotch = havnotch;
 | 
				
			||||||
@ -438,7 +438,7 @@ NBP::NBP(
 | 
				
			|||||||
    bplow.resize(maxpb);
 | 
					    bplow.resize(maxpb);
 | 
				
			||||||
    bphigh.resize(maxpb);
 | 
					    bphigh.resize(maxpb);
 | 
				
			||||||
    calc_impulse ();
 | 
					    calc_impulse ();
 | 
				
			||||||
    fircore = new FIRCORE(size, in, out, nc, mp, impulse.data());
 | 
					    fircore = new FIRCORE(size, in, out, mp, impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NBP::~NBP()
 | 
					NBP::~NBP()
 | 
				
			||||||
@ -470,7 +470,7 @@ void NBP::setSamplerate(int _rate)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    rate = _rate;
 | 
					    rate = _rate;
 | 
				
			||||||
    calc_impulse ();
 | 
					    calc_impulse ();
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void NBP::setSize(int _size)
 | 
					void NBP::setSize(int _size)
 | 
				
			||||||
@ -479,13 +479,13 @@ void NBP::setSize(int _size)
 | 
				
			|||||||
    size = _size;
 | 
					    size = _size;
 | 
				
			||||||
    fircore->setSize(size);
 | 
					    fircore->setSize(size);
 | 
				
			||||||
    calc_impulse ();
 | 
					    calc_impulse ();
 | 
				
			||||||
    fircore->setImpulse(impulse.data(), 1);
 | 
					    fircore->setImpulse(impulse, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void NBP::setNc()
 | 
					void NBP::setNc()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    calc_impulse();
 | 
					    calc_impulse();
 | 
				
			||||||
    fircore->setNc(nc, impulse.data());
 | 
					    fircore->setNc(impulse);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void NBP::setMp()
 | 
					void NBP::setMp()
 | 
				
			||||||
@ -513,7 +513,7 @@ void NBP::SetFreqs(double _flow, double _fhigh)
 | 
				
			|||||||
        flow = _flow;
 | 
					        flow = _flow;
 | 
				
			||||||
        fhigh = _fhigh;
 | 
					        fhigh = _fhigh;
 | 
				
			||||||
        calc_impulse();
 | 
					        calc_impulse();
 | 
				
			||||||
        fircore->setImpulse(impulse.data(), 1);
 | 
					        fircore->setImpulse(impulse, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user