mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-10 18:43:28 -05:00
WDSP: BANDPASS rework
This commit is contained in:
parent
bc06095a56
commit
575fa755f8
28
wdsp/RXA.cpp
28
wdsp/RXA.cpp
@ -444,7 +444,7 @@ RXA* RXA::create_rxa (
|
|||||||
&rxa->agc->gain); // pointer for gain computation
|
&rxa->agc->gain); // pointer for gain computation
|
||||||
|
|
||||||
// Bandpass filter - After spectral noise reduction in the block diagram
|
// Bandpass filter - After spectral noise reduction in the block diagram
|
||||||
rxa->bp1 = BANDPASS::create_bandpass (
|
rxa->bp1 = new BANDPASS (
|
||||||
1, // run - used only with ( AM || ANF || ANR || EMNR)
|
1, // run - used only with ( AM || ANF || ANR || EMNR)
|
||||||
0, // position
|
0, // position
|
||||||
rxa->dsp_size, // buffer size
|
rxa->dsp_size, // buffer size
|
||||||
@ -570,7 +570,7 @@ void RXA::destroy_rxa (RXA *rxa)
|
|||||||
SPEAK::destroy_speak (rxa->speak);
|
SPEAK::destroy_speak (rxa->speak);
|
||||||
CBL::destroy_cbl (rxa->cbl);
|
CBL::destroy_cbl (rxa->cbl);
|
||||||
SIPHON::destroy_siphon (rxa->sip1);
|
SIPHON::destroy_siphon (rxa->sip1);
|
||||||
BANDPASS::destroy_bandpass (rxa->bp1);
|
delete (rxa->bp1);
|
||||||
delete (rxa->agcmeter);
|
delete (rxa->agcmeter);
|
||||||
delete (rxa->agc);
|
delete (rxa->agc);
|
||||||
delete (rxa->emnr);
|
delete (rxa->emnr);
|
||||||
@ -623,7 +623,7 @@ void RXA::flush_rxa (RXA *rxa)
|
|||||||
rxa->emnr->flush();
|
rxa->emnr->flush();
|
||||||
rxa->agc->flush();
|
rxa->agc->flush();
|
||||||
rxa->agcmeter->flush();
|
rxa->agcmeter->flush();
|
||||||
BANDPASS::flush_bandpass (rxa->bp1);
|
rxa->bp1->flush();
|
||||||
SIPHON::flush_siphon (rxa->sip1);
|
SIPHON::flush_siphon (rxa->sip1);
|
||||||
CBL::flush_cbl (rxa->cbl);
|
CBL::flush_cbl (rxa->cbl);
|
||||||
SPEAK::flush_speak (rxa->speak);
|
SPEAK::flush_speak (rxa->speak);
|
||||||
@ -656,12 +656,12 @@ void RXA::xrxa (RXA *rxa)
|
|||||||
rxa->anf->execute(0);
|
rxa->anf->execute(0);
|
||||||
rxa->anr->ANR::execute(0);
|
rxa->anr->ANR::execute(0);
|
||||||
rxa->emnr->execute(0);
|
rxa->emnr->execute(0);
|
||||||
BANDPASS::xbandpass (rxa->bp1, 0);
|
rxa->bp1->BANDPASS::execute(0);
|
||||||
rxa->agc->execute();
|
rxa->agc->execute();
|
||||||
rxa->anf->execute(1);
|
rxa->anf->execute(1);
|
||||||
rxa->anr->execute(1);
|
rxa->anr->execute(1);
|
||||||
rxa->emnr->execute(1);
|
rxa->emnr->execute(1);
|
||||||
BANDPASS::xbandpass (rxa->bp1, 1);
|
rxa->bp1->execute(1);
|
||||||
rxa->agcmeter->execute();
|
rxa->agcmeter->execute();
|
||||||
SIPHON::xsiphon (rxa->sip1, 0);
|
SIPHON::xsiphon (rxa->sip1, 0);
|
||||||
CBL::xcbl (rxa->cbl);
|
CBL::xcbl (rxa->cbl);
|
||||||
@ -767,7 +767,7 @@ void RXA::setDSPSamplerate (RXA *rxa, int dsp_rate)
|
|||||||
rxa->anf->setSamplerate(rxa->dsp_rate);
|
rxa->anf->setSamplerate(rxa->dsp_rate);
|
||||||
rxa->anr->setSamplerate(rxa->dsp_rate);
|
rxa->anr->setSamplerate(rxa->dsp_rate);
|
||||||
rxa->emnr->setSamplerate(rxa->dsp_rate);
|
rxa->emnr->setSamplerate(rxa->dsp_rate);
|
||||||
BANDPASS::setSamplerate_bandpass (rxa->bp1, rxa->dsp_rate);
|
rxa->bp1->setSamplerate(rxa->dsp_rate);
|
||||||
rxa->agc->setSamplerate(rxa->dsp_rate);
|
rxa->agc->setSamplerate(rxa->dsp_rate);
|
||||||
rxa->agcmeter->setSamplerate(rxa->dsp_rate);
|
rxa->agcmeter->setSamplerate(rxa->dsp_rate);
|
||||||
SIPHON::setSamplerate_siphon (rxa->sip1, rxa->dsp_rate);
|
SIPHON::setSamplerate_siphon (rxa->sip1, rxa->dsp_rate);
|
||||||
@ -843,8 +843,8 @@ void RXA::setDSPBuffsize (RXA *rxa, int dsp_size)
|
|||||||
rxa->anr->setSize(rxa->dsp_size);
|
rxa->anr->setSize(rxa->dsp_size);
|
||||||
rxa->emnr->setBuffers(rxa->midbuff, rxa->midbuff);
|
rxa->emnr->setBuffers(rxa->midbuff, rxa->midbuff);
|
||||||
rxa->emnr->setSize(rxa->dsp_size);
|
rxa->emnr->setSize(rxa->dsp_size);
|
||||||
BANDPASS::setBuffers_bandpass (rxa->bp1, rxa->midbuff, rxa->midbuff);
|
rxa->bp1->setBuffers(rxa->midbuff, rxa->midbuff);
|
||||||
BANDPASS::setSize_bandpass (rxa->bp1, rxa->dsp_size);
|
rxa->bp1->setSize(rxa->dsp_size);
|
||||||
rxa->agc->setBuffers(rxa->midbuff, rxa->midbuff);
|
rxa->agc->setBuffers(rxa->midbuff, rxa->midbuff);
|
||||||
rxa->agc->setSize(rxa->dsp_size);
|
rxa->agc->setSize(rxa->dsp_size);
|
||||||
rxa->agcmeter->setBuffers(rxa->midbuff);
|
rxa->agcmeter->setBuffers(rxa->midbuff);
|
||||||
@ -957,7 +957,7 @@ void RXA::bp1Check (
|
|||||||
else
|
else
|
||||||
gain = 1.0;
|
gain = 1.0;
|
||||||
if (a->gain != gain)
|
if (a->gain != gain)
|
||||||
BANDPASS::setGain_bandpass (a, gain, 0);
|
a->setGain(gain, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RXA::bp1Set (RXA& rxa)
|
void RXA::bp1Set (RXA& rxa)
|
||||||
@ -974,8 +974,8 @@ void RXA::bp1Set (RXA& rxa)
|
|||||||
else
|
else
|
||||||
a->run = 0;
|
a->run = 0;
|
||||||
if (!old && a->run)
|
if (!old && a->run)
|
||||||
BANDPASS::flush_bandpass (a);
|
a->flush();
|
||||||
FIRCORE::setUpdate_fircore (a->p);
|
FIRCORE::setUpdate_fircore (a->fircore);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RXA::bpsnbaCheck (RXA& rxa, int mode, int notch_run)
|
void RXA::bpsnbaCheck (RXA& rxa, int mode, int notch_run)
|
||||||
@ -1368,7 +1368,7 @@ void RXA::SetAGCThresh(RXA& rxa, double thresh, double size, double rate)
|
|||||||
|
|
||||||
void RXA::SetPassband (RXA& rxa, float f_low, float f_high)
|
void RXA::SetPassband (RXA& rxa, float f_low, float f_high)
|
||||||
{
|
{
|
||||||
BANDPASS::SetBandpassFreqs (rxa, f_low, f_high); // After spectral noise reduction ( AM || ANF || ANR || EMNR)
|
rxa.bp1->setBandpassFreqs (f_low, f_high); // After spectral noise reduction ( AM || ANF || ANR || EMNR)
|
||||||
rxa.snba->setOutputBandwidth (f_low, f_high); // Spectral noise blanker (SNB)
|
rxa.snba->setOutputBandwidth (f_low, f_high); // Spectral noise blanker (SNB)
|
||||||
rxa.nbp0->SetFreqs (f_low, f_high); // Notched bandpass
|
rxa.nbp0->SetFreqs (f_low, f_high); // Notched bandpass
|
||||||
}
|
}
|
||||||
@ -1378,7 +1378,7 @@ void RXA::SetNC (RXA& rxa, int nc)
|
|||||||
int oldstate = rxa.state;
|
int oldstate = rxa.state;
|
||||||
rxa.nbp0->SetNC (nc);
|
rxa.nbp0->SetNC (nc);
|
||||||
rxa.bpsnba->SetNC (nc);
|
rxa.bpsnba->SetNC (nc);
|
||||||
BANDPASS::SetBandpassNC (rxa, nc);
|
rxa.bp1->SetBandpassNC (nc);
|
||||||
rxa.eqp->setNC (nc);
|
rxa.eqp->setNC (nc);
|
||||||
rxa.fmsq->setNC (nc);
|
rxa.fmsq->setNC (nc);
|
||||||
rxa.fmd->setNCde (nc);
|
rxa.fmd->setNCde (nc);
|
||||||
@ -1390,7 +1390,7 @@ void RXA::SetMP (RXA& rxa, int mp)
|
|||||||
{
|
{
|
||||||
rxa.nbp0->SetMP (mp);
|
rxa.nbp0->SetMP (mp);
|
||||||
rxa.bpsnba->SetMP (mp);
|
rxa.bpsnba->SetMP (mp);
|
||||||
BANDPASS::SetBandpassMP (rxa, mp);
|
rxa.bp1->SetBandpassMP (mp);
|
||||||
rxa.eqp->setMP (mp);
|
rxa.eqp->setMP (mp);
|
||||||
rxa.fmsq->setMP (mp);
|
rxa.fmsq->setMP (mp);
|
||||||
rxa.fmd->setMPde (mp);
|
rxa.fmd->setMPde (mp);
|
||||||
|
162
wdsp/TXA.cpp
162
wdsp/TXA.cpp
@ -47,6 +47,8 @@ warren@wpratt.com
|
|||||||
#include "slew.hpp"
|
#include "slew.hpp"
|
||||||
#include "iqc.hpp"
|
#include "iqc.hpp"
|
||||||
#include "cfir.hpp"
|
#include "cfir.hpp"
|
||||||
|
#include "fircore.hpp"
|
||||||
|
#include "fir.hpp"
|
||||||
#include "TXA.hpp"
|
#include "TXA.hpp"
|
||||||
|
|
||||||
namespace WDSP {
|
namespace WDSP {
|
||||||
@ -276,7 +278,7 @@ TXA* TXA::create_txa (
|
|||||||
TXA_CFC_GAIN, // index for gain value
|
TXA_CFC_GAIN, // index for gain value
|
||||||
(double*) &txa->cfcomp->gain); // pointer for gain computation
|
(double*) &txa->cfcomp->gain); // pointer for gain computation
|
||||||
|
|
||||||
txa->bp0 = BANDPASS::create_bandpass (
|
txa->bp0 = new BANDPASS(
|
||||||
1, // always runs
|
1, // always runs
|
||||||
0, // position
|
0, // position
|
||||||
txa->dsp_size, // size
|
txa->dsp_size, // size
|
||||||
@ -297,7 +299,7 @@ TXA* TXA::create_txa (
|
|||||||
txa->midbuff, // pointer to output buffer
|
txa->midbuff, // pointer to output buffer
|
||||||
3.0); // gain
|
3.0); // gain
|
||||||
|
|
||||||
txa->bp1 = BANDPASS::create_bandpass (
|
txa->bp1 = new BANDPASS(
|
||||||
0, // ONLY RUNS WHEN COMPRESSOR IS USED
|
0, // ONLY RUNS WHEN COMPRESSOR IS USED
|
||||||
0, // position
|
0, // position
|
||||||
txa->dsp_size, // size
|
txa->dsp_size, // size
|
||||||
@ -319,7 +321,7 @@ TXA* TXA::create_txa (
|
|||||||
txa->dsp_rate, // sample rate
|
txa->dsp_rate, // sample rate
|
||||||
1.95); // gain for clippings
|
1.95); // gain for clippings
|
||||||
|
|
||||||
txa->bp2 = BANDPASS::create_bandpass (
|
txa->bp2 = new BANDPASS(
|
||||||
0, // ONLY RUNS WHEN COMPRESSOR IS USED
|
0, // ONLY RUNS WHEN COMPRESSOR IS USED
|
||||||
0, // position
|
0, // position
|
||||||
txa->dsp_size, // size
|
txa->dsp_size, // size
|
||||||
@ -532,11 +534,11 @@ void TXA::destroy_txa (TXA *txa)
|
|||||||
AMMOD::destroy_ammod (txa->ammod);
|
AMMOD::destroy_ammod (txa->ammod);
|
||||||
delete (txa->alc);
|
delete (txa->alc);
|
||||||
delete (txa->compmeter);
|
delete (txa->compmeter);
|
||||||
BANDPASS::destroy_bandpass (txa->bp2);
|
delete (txa->bp2);
|
||||||
OSCTRL::destroy_osctrl (txa->osctrl);
|
OSCTRL::destroy_osctrl (txa->osctrl);
|
||||||
BANDPASS::destroy_bandpass (txa->bp1);
|
delete (txa->bp1);
|
||||||
COMPRESSOR::destroy_compressor (txa->compressor);
|
COMPRESSOR::destroy_compressor (txa->compressor);
|
||||||
BANDPASS::destroy_bandpass (txa->bp0);
|
delete (txa->bp0);
|
||||||
delete (txa->cfcmeter);
|
delete (txa->cfcmeter);
|
||||||
CFCOMP::destroy_cfcomp (txa->cfcomp);
|
CFCOMP::destroy_cfcomp (txa->cfcomp);
|
||||||
delete (txa->lvlrmeter);
|
delete (txa->lvlrmeter);
|
||||||
@ -574,11 +576,11 @@ void TXA::flush_txa (TXA* txa)
|
|||||||
txa->lvlrmeter->flush ();
|
txa->lvlrmeter->flush ();
|
||||||
CFCOMP::flush_cfcomp (txa->cfcomp);
|
CFCOMP::flush_cfcomp (txa->cfcomp);
|
||||||
txa->cfcmeter->flush ();
|
txa->cfcmeter->flush ();
|
||||||
BANDPASS::flush_bandpass (txa->bp0);
|
txa->bp0->flush ();
|
||||||
COMPRESSOR::flush_compressor (txa->compressor);
|
COMPRESSOR::flush_compressor (txa->compressor);
|
||||||
BANDPASS::flush_bandpass (txa->bp1);
|
txa->bp1->flush ();
|
||||||
OSCTRL::flush_osctrl (txa->osctrl);
|
OSCTRL::flush_osctrl (txa->osctrl);
|
||||||
BANDPASS::flush_bandpass (txa->bp2);
|
txa->bp2->flush ();
|
||||||
txa->compmeter->flush ();
|
txa->compmeter->flush ();
|
||||||
txa->alc->flush ();
|
txa->alc->flush ();
|
||||||
AMMOD::flush_ammod (txa->ammod);
|
AMMOD::flush_ammod (txa->ammod);
|
||||||
@ -609,11 +611,11 @@ void xtxa (TXA* txa)
|
|||||||
txa->lvlrmeter->execute (); // Leveler Meter
|
txa->lvlrmeter->execute (); // Leveler Meter
|
||||||
CFCOMP::xcfcomp (txa->cfcomp, 0); // Continuous Frequency Compressor with post-EQ
|
CFCOMP::xcfcomp (txa->cfcomp, 0); // Continuous Frequency Compressor with post-EQ
|
||||||
txa->cfcmeter->execute (); // CFC+PostEQ Meter
|
txa->cfcmeter->execute (); // CFC+PostEQ Meter
|
||||||
BANDPASS::xbandpass (txa->bp0, 0); // primary bandpass filter
|
txa->bp0->execute (0); // primary bandpass filter
|
||||||
COMPRESSOR::xcompressor (txa->compressor); // COMP compressor
|
COMPRESSOR::xcompressor (txa->compressor); // COMP compressor
|
||||||
BANDPASS::xbandpass (txa->bp1, 0); // aux bandpass (runs if COMP)
|
txa->bp1->execute (0); // aux bandpass (runs if COMP)
|
||||||
OSCTRL::xosctrl (txa->osctrl); // CESSB Overshoot Control
|
OSCTRL::xosctrl (txa->osctrl); // CESSB Overshoot Control
|
||||||
BANDPASS::xbandpass (txa->bp2, 0); // aux bandpass (runs if CESSB)
|
txa->bp2->execute (0); // aux bandpass (runs if CESSB)
|
||||||
txa->compmeter->execute (); // COMP meter
|
txa->compmeter->execute (); // COMP meter
|
||||||
txa->alc->execute (); // ALC
|
txa->alc->execute (); // ALC
|
||||||
AMMOD::xammod (txa->ammod); // AM Modulator
|
AMMOD::xammod (txa->ammod); // AM Modulator
|
||||||
@ -706,11 +708,11 @@ void TXA::setDSPSamplerate (TXA *txa, int dsp_rate)
|
|||||||
txa->lvlrmeter->setSamplerate (txa->dsp_rate);
|
txa->lvlrmeter->setSamplerate (txa->dsp_rate);
|
||||||
CFCOMP::setSamplerate_cfcomp (txa->cfcomp, txa->dsp_rate);
|
CFCOMP::setSamplerate_cfcomp (txa->cfcomp, txa->dsp_rate);
|
||||||
txa->cfcmeter->setSamplerate (txa->dsp_rate);
|
txa->cfcmeter->setSamplerate (txa->dsp_rate);
|
||||||
BANDPASS::setSamplerate_bandpass (txa->bp0, txa->dsp_rate);
|
txa->bp0->setSamplerate (txa->dsp_rate);
|
||||||
COMPRESSOR::setSamplerate_compressor (txa->compressor, txa->dsp_rate);
|
COMPRESSOR::setSamplerate_compressor (txa->compressor, txa->dsp_rate);
|
||||||
BANDPASS::setSamplerate_bandpass (txa->bp1, txa->dsp_rate);
|
txa->bp1->setSamplerate (txa->dsp_rate);
|
||||||
OSCTRL::setSamplerate_osctrl (txa->osctrl, txa->dsp_rate);
|
OSCTRL::setSamplerate_osctrl (txa->osctrl, txa->dsp_rate);
|
||||||
BANDPASS::setSamplerate_bandpass (txa->bp2, txa->dsp_rate);
|
txa->bp2->setSamplerate (txa->dsp_rate);
|
||||||
txa->compmeter->setSamplerate (txa->dsp_rate);
|
txa->compmeter->setSamplerate (txa->dsp_rate);
|
||||||
txa->alc->setSamplerate (txa->dsp_rate);
|
txa->alc->setSamplerate (txa->dsp_rate);
|
||||||
AMMOD::setSamplerate_ammod (txa->ammod, txa->dsp_rate);
|
AMMOD::setSamplerate_ammod (txa->ammod, txa->dsp_rate);
|
||||||
@ -778,16 +780,16 @@ void TXA::setDSPBuffsize (TXA *txa, int dsp_size)
|
|||||||
CFCOMP::setSize_cfcomp (txa->cfcomp, txa->dsp_size);
|
CFCOMP::setSize_cfcomp (txa->cfcomp, txa->dsp_size);
|
||||||
txa->cfcmeter->setBuffers(txa->midbuff);
|
txa->cfcmeter->setBuffers(txa->midbuff);
|
||||||
txa->cfcmeter->setSize(txa->dsp_size);
|
txa->cfcmeter->setSize(txa->dsp_size);
|
||||||
BANDPASS::setBuffers_bandpass (txa->bp0, txa->midbuff, txa->midbuff);
|
txa->bp0->setBuffers (txa->midbuff, txa->midbuff);
|
||||||
BANDPASS::setSize_bandpass (txa->bp0, txa->dsp_size);
|
txa->bp0->setSize (txa->dsp_size);
|
||||||
COMPRESSOR::setBuffers_compressor (txa->compressor, txa->midbuff, txa->midbuff);
|
COMPRESSOR::setBuffers_compressor (txa->compressor, txa->midbuff, txa->midbuff);
|
||||||
COMPRESSOR::setSize_compressor (txa->compressor, txa->dsp_size);
|
COMPRESSOR::setSize_compressor (txa->compressor, txa->dsp_size);
|
||||||
BANDPASS::setBuffers_bandpass (txa->bp1, txa->midbuff, txa->midbuff);
|
txa->bp1->setBuffers (txa->midbuff, txa->midbuff);
|
||||||
BANDPASS::setSize_bandpass (txa->bp1, txa->dsp_size);
|
txa->bp1->setSize (txa->dsp_size);
|
||||||
OSCTRL::setBuffers_osctrl (txa->osctrl, txa->midbuff, txa->midbuff);
|
OSCTRL::setBuffers_osctrl (txa->osctrl, txa->midbuff, txa->midbuff);
|
||||||
OSCTRL::setSize_osctrl (txa->osctrl, txa->dsp_size);
|
OSCTRL::setSize_osctrl (txa->osctrl, txa->dsp_size);
|
||||||
BANDPASS::setBuffers_bandpass (txa->bp2, txa->midbuff, txa->midbuff);
|
txa->bp2->setBuffers (txa->midbuff, txa->midbuff);
|
||||||
BANDPASS::setSize_bandpass (txa->bp2, txa->dsp_size);
|
txa->bp2->setSize (txa->dsp_size);
|
||||||
txa->compmeter->setBuffers(txa->midbuff);
|
txa->compmeter->setBuffers(txa->midbuff);
|
||||||
txa->compmeter->setSize(txa->dsp_size);
|
txa->compmeter->setSize(txa->dsp_size);
|
||||||
txa->alc->setBuffers(txa->midbuff, txa->midbuff);
|
txa->alc->setBuffers(txa->midbuff, txa->midbuff);
|
||||||
@ -914,14 +916,14 @@ void TXA::SetupBPFilters (TXA& txa)
|
|||||||
case TXA_DIGU:
|
case TXA_DIGU:
|
||||||
case TXA_SPEC:
|
case TXA_SPEC:
|
||||||
case TXA_DRM:
|
case TXA_DRM:
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp0, txa.f_low, txa.f_high, 2.0);
|
txa.bp0->calcBandpassFilter (txa.f_low, txa.f_high, 2.0);
|
||||||
if (txa.compressor->run)
|
if (txa.compressor->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp1, txa.f_low, txa.f_high, 2.0);
|
txa.bp1->calcBandpassFilter (txa.f_low, txa.f_high, 2.0);
|
||||||
txa.bp1->run = 1;
|
txa.bp1->run = 1;
|
||||||
if (txa.osctrl->run)
|
if (txa.osctrl->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp2, txa.f_low, txa.f_high, 1.0);
|
txa.bp2->calcBandpassFilter (txa.f_low, txa.f_high, 1.0);
|
||||||
txa.bp2->run = 1;
|
txa.bp2->run = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -932,42 +934,42 @@ void TXA::SetupBPFilters (TXA& txa)
|
|||||||
case TXA_FM:
|
case TXA_FM:
|
||||||
if (txa.compressor->run)
|
if (txa.compressor->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp0, 0.0, txa.f_high, 2.0);
|
txa.bp0->calcBandpassFilter (0.0, txa.f_high, 2.0);
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp1, 0.0, txa.f_high, 2.0);
|
txa.bp1->calcBandpassFilter (0.0, txa.f_high, 2.0);
|
||||||
txa.bp1->run = 1;
|
txa.bp1->run = 1;
|
||||||
if (txa.osctrl->run)
|
if (txa.osctrl->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp2, 0.0, txa.f_high, 1.0);
|
txa.bp2->calcBandpassFilter (0.0, txa.f_high, 1.0);
|
||||||
txa.bp2->run = 1;
|
txa.bp2->run = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp0, txa.f_low, txa.f_high, 1.0);
|
txa.bp0->calcBandpassFilter (txa.f_low, txa.f_high, 1.0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TXA_AM_LSB:
|
case TXA_AM_LSB:
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp0, -txa.f_high, 0.0, 2.0);
|
txa.bp0->calcBandpassFilter (-txa.f_high, 0.0, 2.0);
|
||||||
if (txa.compressor->run)
|
if (txa.compressor->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp1, -txa.f_high, 0.0, 2.0);
|
txa.bp1->calcBandpassFilter (-txa.f_high, 0.0, 2.0);
|
||||||
txa.bp1->run = 1;
|
txa.bp1->run = 1;
|
||||||
if (txa.osctrl->run)
|
if (txa.osctrl->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp2, -txa.f_high, 0.0, 1.0);
|
txa.bp2->calcBandpassFilter (-txa.f_high, 0.0, 1.0);
|
||||||
txa.bp2->run = 1;
|
txa.bp2->run = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TXA_AM_USB:
|
case TXA_AM_USB:
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp0, 0.0, txa.f_high, 2.0);
|
txa.bp0->calcBandpassFilter (0.0, txa.f_high, 2.0);
|
||||||
if (txa.compressor->run)
|
if (txa.compressor->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp1, 0.0, txa.f_high, 2.0);
|
txa.bp1->calcBandpassFilter (0.0, txa.f_high, 2.0);
|
||||||
txa.bp1->run = 1;
|
txa.bp1->run = 1;
|
||||||
if (txa.osctrl->run)
|
if (txa.osctrl->run)
|
||||||
{
|
{
|
||||||
BANDPASS::CalcBandpassFilter (txa.bp2, 0.0, txa.f_high, 1.0);
|
txa.bp2->calcBandpassFilter(0.0, txa.f_high, 1.0);
|
||||||
txa.bp2->run = 1;
|
txa.bp2->run = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -975,6 +977,93 @@ void TXA::SetupBPFilters (TXA& txa)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TXA::SetBandpassNC (TXA& txa, int nc)
|
||||||
|
{
|
||||||
|
// NOTE: 'nc' must be >= 'size'
|
||||||
|
BANDPASS *a;
|
||||||
|
a = txa.bp0;
|
||||||
|
|
||||||
|
if (a->nc != nc)
|
||||||
|
{
|
||||||
|
a->nc = nc;
|
||||||
|
float* impulse = FIR::fir_bandpass (
|
||||||
|
a->nc,
|
||||||
|
a->f_low,
|
||||||
|
a->f_high,
|
||||||
|
a->samplerate,
|
||||||
|
a->wintype,
|
||||||
|
1,
|
||||||
|
a->gain / (double)(2 * a->size)
|
||||||
|
);
|
||||||
|
FIRCORE::setNc_fircore (a->fircore, a->nc, impulse);
|
||||||
|
delete[] (impulse);
|
||||||
|
}
|
||||||
|
|
||||||
|
a = txa.bp1;
|
||||||
|
|
||||||
|
if (a->nc != nc)
|
||||||
|
{
|
||||||
|
a->nc = nc;
|
||||||
|
float* impulse = FIR::fir_bandpass (
|
||||||
|
a->nc,
|
||||||
|
a->f_low,
|
||||||
|
a->f_high,
|
||||||
|
a->samplerate,
|
||||||
|
a->wintype,
|
||||||
|
1,
|
||||||
|
a->gain / (double)(2 * a->size)
|
||||||
|
);
|
||||||
|
FIRCORE::setNc_fircore (a->fircore, a->nc, impulse);
|
||||||
|
delete[] (impulse);
|
||||||
|
}
|
||||||
|
|
||||||
|
a = txa.bp2;
|
||||||
|
|
||||||
|
if (a->nc != nc)
|
||||||
|
{
|
||||||
|
a->nc = nc;
|
||||||
|
float* impulse = FIR::fir_bandpass (
|
||||||
|
a->nc,
|
||||||
|
a->f_low,
|
||||||
|
a->f_high,
|
||||||
|
a->samplerate,
|
||||||
|
a->wintype,
|
||||||
|
1,
|
||||||
|
a->gain / (double)(2 * a->size)
|
||||||
|
);
|
||||||
|
FIRCORE::setNc_fircore (a->fircore, a->nc, impulse);
|
||||||
|
delete[] (impulse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TXA::SetBandpassMP (TXA& txa, int mp)
|
||||||
|
{
|
||||||
|
BANDPASS *a;
|
||||||
|
a = txa.bp0;
|
||||||
|
|
||||||
|
if (mp != a->mp)
|
||||||
|
{
|
||||||
|
a->mp = mp;
|
||||||
|
FIRCORE::setMp_fircore (a->fircore, a->mp);
|
||||||
|
}
|
||||||
|
|
||||||
|
a = txa.bp1;
|
||||||
|
|
||||||
|
if (mp != a->mp)
|
||||||
|
{
|
||||||
|
a->mp = mp;
|
||||||
|
FIRCORE::setMp_fircore (a->fircore, a->mp);
|
||||||
|
}
|
||||||
|
|
||||||
|
a = txa.bp2;
|
||||||
|
|
||||||
|
if (mp != a->mp)
|
||||||
|
{
|
||||||
|
a->mp = mp;
|
||||||
|
FIRCORE::setMp_fircore (a->fircore, a->mp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************************************************
|
/********************************************************************************************************
|
||||||
* *
|
* *
|
||||||
* Collectives *
|
* Collectives *
|
||||||
@ -984,7 +1073,8 @@ void TXA::SetupBPFilters (TXA& txa)
|
|||||||
void TXA::SetNC (TXA& txa, int nc)
|
void TXA::SetNC (TXA& txa, int nc)
|
||||||
{
|
{
|
||||||
int oldstate = txa.state;
|
int oldstate = txa.state;
|
||||||
BANDPASS::SetBandpassNC (txa, nc);
|
|
||||||
|
SetBandpassNC (txa, nc);
|
||||||
EMPHP::SetFMEmphNC (txa, nc);
|
EMPHP::SetFMEmphNC (txa, nc);
|
||||||
txa.eqp->setNC (nc);
|
txa.eqp->setNC (nc);
|
||||||
FMMOD::SetFMNC (txa, nc);
|
FMMOD::SetFMNC (txa, nc);
|
||||||
@ -994,7 +1084,7 @@ void TXA::SetNC (TXA& txa, int nc)
|
|||||||
|
|
||||||
void TXA::SetMP (TXA& txa, int mp)
|
void TXA::SetMP (TXA& txa, int mp)
|
||||||
{
|
{
|
||||||
BANDPASS::SetBandpassMP (txa, mp);
|
SetBandpassMP (txa, mp);
|
||||||
EMPHP::SetFMEmphMP (txa, mp);
|
EMPHP::SetFMEmphMP (txa, mp);
|
||||||
txa.eqp->setMP (mp);
|
txa.eqp->setMP (mp);
|
||||||
FMMOD::SetFMMP (txa, mp);
|
FMMOD::SetFMMP (txa, mp);
|
||||||
|
@ -191,6 +191,8 @@ public:
|
|||||||
// TXA Properties
|
// TXA Properties
|
||||||
static void SetMode (TXA& txa, int mode);
|
static void SetMode (TXA& txa, int mode);
|
||||||
static void SetBandpassFreqs (TXA& txa, float f_low, float f_high);
|
static void SetBandpassFreqs (TXA& txa, float f_low, float f_high);
|
||||||
|
static void SetBandpassNC (TXA& txa, int nc);
|
||||||
|
static void SetBandpassMP (TXA& txa, int mp);
|
||||||
|
|
||||||
// Collectives
|
// Collectives
|
||||||
static void SetNC (TXA& txa, int nc);
|
static void SetNC (TXA& txa, int nc);
|
||||||
|
@ -40,143 +40,140 @@ namespace WDSP {
|
|||||||
* *
|
* *
|
||||||
********************************************************************************************************/
|
********************************************************************************************************/
|
||||||
|
|
||||||
BANDPASS* BANDPASS::create_bandpass (
|
BANDPASS::BANDPASS(
|
||||||
int run,
|
int _run,
|
||||||
int position,
|
int _position,
|
||||||
int size,
|
int _size,
|
||||||
int nc,
|
int _nc,
|
||||||
int mp,
|
int _mp,
|
||||||
float* in,
|
float* _in,
|
||||||
float* out,
|
float* _out,
|
||||||
double f_low,
|
double _f_low,
|
||||||
double f_high,
|
double _f_high,
|
||||||
int samplerate,
|
int _samplerate,
|
||||||
int wintype,
|
int _wintype,
|
||||||
double gain
|
double _gain
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// NOTE: 'nc' must be >= 'size'
|
// NOTE: 'nc' must be >= 'size'
|
||||||
BANDPASS *a = new BANDPASS;
|
run = _run;
|
||||||
a->run = run;
|
position = _position;
|
||||||
a->position = position;
|
size = _size;
|
||||||
a->size = size;
|
nc = _nc;
|
||||||
a->nc = nc;
|
mp = _mp;
|
||||||
a->mp = mp;
|
in = _in;
|
||||||
a->in = in;
|
out = _out;
|
||||||
a->out = out;
|
f_low = _f_low;
|
||||||
a->f_low = f_low;
|
f_high = _f_high;
|
||||||
a->f_high = f_high;
|
samplerate = _samplerate;
|
||||||
a->samplerate = samplerate;
|
wintype = _wintype;
|
||||||
a->wintype = wintype;
|
gain = _gain;
|
||||||
a->gain = gain;
|
|
||||||
float* impulse = FIR::fir_bandpass (
|
float* impulse = FIR::fir_bandpass (
|
||||||
a->nc,
|
nc,
|
||||||
a->f_low,
|
f_low,
|
||||||
a->f_high,
|
f_high,
|
||||||
a->samplerate,
|
samplerate,
|
||||||
a->wintype,
|
wintype,
|
||||||
1,
|
1,
|
||||||
a->gain / (double)(2 * a->size)
|
gain / (double)(2 * size)
|
||||||
);
|
);
|
||||||
a->p = FIRCORE::create_fircore (a->size, a->in, a->out, a->nc, a->mp, impulse);
|
fircore = FIRCORE::create_fircore (size, in, out, nc, mp, impulse);
|
||||||
delete[] impulse;
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BANDPASS::destroy_bandpass (BANDPASS *a)
|
|
||||||
{
|
|
||||||
FIRCORE::destroy_fircore (a->p);
|
|
||||||
delete a;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BANDPASS::flush_bandpass (BANDPASS *a)
|
|
||||||
{
|
|
||||||
FIRCORE::flush_fircore (a->p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BANDPASS::xbandpass (BANDPASS *a, int pos)
|
|
||||||
{
|
|
||||||
if (a->run && a->position == pos)
|
|
||||||
FIRCORE::xfircore (a->p);
|
|
||||||
else if (a->out != a->in)
|
|
||||||
std::copy( a->in, a->in + a->size * 2, a->out);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BANDPASS::setBuffers_bandpass (BANDPASS *a, float* in, float* out)
|
|
||||||
{
|
|
||||||
a->in = in;
|
|
||||||
a->out = out;
|
|
||||||
FIRCORE::setBuffers_fircore (a->p, a->in, a->out);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BANDPASS::setSamplerate_bandpass (BANDPASS *a, int rate)
|
|
||||||
{
|
|
||||||
a->samplerate = rate;
|
|
||||||
float* impulse = FIR::fir_bandpass (
|
|
||||||
a->nc,
|
|
||||||
a->f_low,
|
|
||||||
a->f_high,
|
|
||||||
a->samplerate,
|
|
||||||
a->wintype,
|
|
||||||
1,
|
|
||||||
a->gain / (float)(2 * a->size)
|
|
||||||
);
|
|
||||||
FIRCORE::setImpulse_fircore (a->p, impulse, 1);
|
|
||||||
delete[] impulse;
|
delete[] impulse;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BANDPASS::setSize_bandpass (BANDPASS *a, int size)
|
BANDPASS::~BANDPASS()
|
||||||
|
{
|
||||||
|
FIRCORE::destroy_fircore (fircore);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BANDPASS::flush()
|
||||||
|
{
|
||||||
|
FIRCORE::flush_fircore(fircore);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BANDPASS::execute(int pos)
|
||||||
|
{
|
||||||
|
if (run && position == pos)
|
||||||
|
FIRCORE::xfircore(fircore);
|
||||||
|
else if (out != in)
|
||||||
|
std::copy(in, in + size * 2, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BANDPASS::setBuffers(float* _in, float* _out)
|
||||||
|
{
|
||||||
|
in = _in;
|
||||||
|
out = _out;
|
||||||
|
FIRCORE::setBuffers_fircore(fircore, in, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BANDPASS::setSamplerate(int _rate)
|
||||||
|
{
|
||||||
|
samplerate = _rate;
|
||||||
|
float* impulse = FIR::fir_bandpass (
|
||||||
|
nc,
|
||||||
|
f_low,
|
||||||
|
f_high,
|
||||||
|
samplerate,
|
||||||
|
wintype,
|
||||||
|
1,
|
||||||
|
gain / (double) (2 * size)
|
||||||
|
);
|
||||||
|
FIRCORE::setImpulse_fircore (fircore, impulse, 1);
|
||||||
|
delete[] impulse;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BANDPASS::setSize(int _size)
|
||||||
{
|
{
|
||||||
// NOTE: 'size' must be <= 'nc'
|
// NOTE: 'size' must be <= 'nc'
|
||||||
a->size = size;
|
size = _size;
|
||||||
FIRCORE::setSize_fircore (a->p, a->size);
|
FIRCORE::setSize_fircore (fircore, size);
|
||||||
// recalc impulse because scale factor is a function of size
|
// recalc impulse because scale factor is a function of size
|
||||||
float* impulse = FIR::fir_bandpass (
|
float* impulse = FIR::fir_bandpass (
|
||||||
a->nc,
|
nc,
|
||||||
a->f_low,
|
f_low,
|
||||||
a->f_high,
|
f_high,
|
||||||
a->samplerate,
|
samplerate,
|
||||||
a->wintype,
|
wintype,
|
||||||
1,
|
1,
|
||||||
a->gain / (float)(2 * a->size)
|
gain / (double) (2 * size)
|
||||||
);
|
);
|
||||||
FIRCORE::setImpulse_fircore (a->p, impulse, 1);
|
FIRCORE::setImpulse_fircore (fircore, impulse, 1);
|
||||||
delete[] (impulse);
|
delete[] (impulse);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BANDPASS::setGain_bandpass (BANDPASS *a, double gain, int update)
|
void BANDPASS::setGain(double _gain, int _update)
|
||||||
{
|
{
|
||||||
a->gain = gain;
|
gain = _gain;
|
||||||
float* impulse = FIR::fir_bandpass (
|
float* impulse = FIR::fir_bandpass (
|
||||||
a->nc,
|
nc,
|
||||||
a->f_low,
|
f_low,
|
||||||
a->f_high,
|
f_high,
|
||||||
a->samplerate,
|
samplerate,
|
||||||
a->wintype,
|
wintype,
|
||||||
1,
|
1,
|
||||||
a->gain / (double)(2 * a->size)
|
gain / (double) (2 * size)
|
||||||
);
|
);
|
||||||
FIRCORE::setImpulse_fircore (a->p, impulse, update);
|
FIRCORE::setImpulse_fircore (fircore, impulse, _update);
|
||||||
delete[] (impulse);
|
delete[] (impulse);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BANDPASS::CalcBandpassFilter (BANDPASS *a, double f_low, double f_high, double gain)
|
void BANDPASS::calcBandpassFilter(double _f_low, double _f_high, double _gain)
|
||||||
{
|
{
|
||||||
if ((a->f_low != f_low) || (a->f_high != f_high) || (a->gain != gain))
|
if ((f_low != _f_low) || (f_high != _f_high) || (gain != _gain))
|
||||||
{
|
{
|
||||||
a->f_low = f_low;
|
f_low = _f_low;
|
||||||
a->f_high = f_high;
|
f_high = _f_high;
|
||||||
a->gain = gain;
|
gain = _gain;
|
||||||
float* impulse = FIR::fir_bandpass (
|
float* impulse = FIR::fir_bandpass (
|
||||||
a->nc,
|
nc,
|
||||||
a->f_low,
|
f_low,
|
||||||
a->f_high,
|
f_high,
|
||||||
a->samplerate,
|
samplerate,
|
||||||
a->wintype,
|
wintype,
|
||||||
1,
|
1,
|
||||||
a->gain / (double)(2 * a->size)
|
gain / (double)(2 * size)
|
||||||
);
|
);
|
||||||
FIRCORE::setImpulse_fircore (a->p, impulse, 1);
|
FIRCORE::setImpulse_fircore (fircore, impulse, 1);
|
||||||
delete[] (impulse);
|
delete[] (impulse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -187,62 +184,54 @@ void BANDPASS::CalcBandpassFilter (BANDPASS *a, double f_low, double f_high, dou
|
|||||||
* *
|
* *
|
||||||
********************************************************************************************************/
|
********************************************************************************************************/
|
||||||
|
|
||||||
void BANDPASS::SetBandpassFreqs (RXA& rxa, double f_low, double f_high)
|
void BANDPASS::setBandpassFreqs(double _f_low, double _f_high)
|
||||||
{
|
{
|
||||||
BANDPASS *a = rxa.bp1;
|
if ((_f_low != f_low) || (_f_high != f_high))
|
||||||
|
|
||||||
if ((f_low != a->f_low) || (f_high != a->f_high))
|
|
||||||
{
|
{
|
||||||
float* impulse = FIR::fir_bandpass (
|
float* impulse = FIR::fir_bandpass (
|
||||||
a->nc,
|
nc,
|
||||||
f_low,
|
_f_low,
|
||||||
f_high,
|
_f_high,
|
||||||
a->samplerate,
|
samplerate,
|
||||||
a->wintype,
|
wintype,
|
||||||
1,
|
1,
|
||||||
a->gain / (double)(2 * a->size)
|
gain / (double)(2 * size)
|
||||||
);
|
);
|
||||||
|
|
||||||
FIRCORE::setImpulse_fircore (a->p, impulse, 0);
|
FIRCORE::setImpulse_fircore (fircore, impulse, 0);
|
||||||
delete[] (impulse);
|
delete[] (impulse);
|
||||||
a->f_low = f_low;
|
f_low = _f_low;
|
||||||
a->f_high = f_high;
|
f_high = _f_high;
|
||||||
FIRCORE::setUpdate_fircore (a->p);
|
FIRCORE::setUpdate_fircore (fircore);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BANDPASS::SetBandpassNC (RXA& rxa, int nc)
|
void BANDPASS::SetBandpassNC(int _nc)
|
||||||
{
|
{
|
||||||
// NOTE: 'nc' must be >= 'size'
|
// NOTE: 'nc' must be >= 'size'
|
||||||
BANDPASS *a;
|
if (_nc != nc)
|
||||||
a = rxa.bp1;
|
|
||||||
|
|
||||||
if (nc != a->nc)
|
|
||||||
{
|
{
|
||||||
a->nc = nc;
|
nc = _nc;
|
||||||
float* impulse = FIR::fir_bandpass (
|
float* impulse = FIR::fir_bandpass (
|
||||||
a->nc,
|
nc,
|
||||||
a->f_low,
|
f_low,
|
||||||
a->f_high,
|
f_high,
|
||||||
a->samplerate,
|
samplerate,
|
||||||
a->wintype,
|
wintype,
|
||||||
1,
|
1,
|
||||||
a->gain / (double)(2 * a->size)
|
gain / (double)( 2 * size)
|
||||||
);
|
);
|
||||||
FIRCORE::setNc_fircore (a->p, a->nc, impulse);
|
FIRCORE::setNc_fircore (fircore, nc, impulse);
|
||||||
delete[] (impulse);
|
delete[] (impulse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BANDPASS::SetBandpassMP (RXA& rxa, int mp)
|
void BANDPASS::SetBandpassMP(int _mp)
|
||||||
{
|
{
|
||||||
BANDPASS *a;
|
if (_mp != mp)
|
||||||
a = rxa.bp1;
|
|
||||||
|
|
||||||
if (mp != a->mp)
|
|
||||||
{
|
{
|
||||||
a->mp = mp;
|
mp = _mp;
|
||||||
FIRCORE::setMp_fircore (a->p, a->mp);
|
FIRCORE::setMp_fircore (fircore, mp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,7 +252,7 @@ void BANDPASS::SetBandpassMP (RXA& rxa, int mp)
|
|||||||
// a->f_low = f_low;
|
// a->f_low = f_low;
|
||||||
// a->f_high = f_high;
|
// a->f_high = f_high;
|
||||||
// impulse = fir_bandpass (a->nc, a->f_low, a->f_high, a->samplerate, a->wintype, 1, a->gain / (float)(2 * a->size));
|
// impulse = fir_bandpass (a->nc, a->f_low, a->f_high, a->samplerate, a->wintype, 1, a->gain / (float)(2 * a->size));
|
||||||
// setImpulse_fircore (a->p, impulse, 1);
|
// setImpulse_fircore (a->fircore, impulse, 1);
|
||||||
// delete[] (impulse);
|
// delete[] (impulse);
|
||||||
// }
|
// }
|
||||||
// a = txa.bp1;
|
// a = txa.bp1;
|
||||||
@ -272,7 +261,7 @@ void BANDPASS::SetBandpassMP (RXA& rxa, int mp)
|
|||||||
// a->f_low = f_low;
|
// a->f_low = f_low;
|
||||||
// a->f_high = f_high;
|
// a->f_high = f_high;
|
||||||
// impulse = fir_bandpass (a->nc, a->f_low, a->f_high, a->samplerate, a->wintype, 1, a->gain / (float)(2 * a->size));
|
// impulse = fir_bandpass (a->nc, a->f_low, a->f_high, a->samplerate, a->wintype, 1, a->gain / (float)(2 * a->size));
|
||||||
// setImpulse_fircore (a->p, impulse, 1);
|
// setImpulse_fircore (a->fircore, impulse, 1);
|
||||||
// delete[] (impulse);
|
// delete[] (impulse);
|
||||||
// }
|
// }
|
||||||
// a = txa.bp2;
|
// a = txa.bp2;
|
||||||
@ -281,96 +270,9 @@ void BANDPASS::SetBandpassMP (RXA& rxa, int mp)
|
|||||||
// a->f_low = f_low;
|
// a->f_low = f_low;
|
||||||
// a->f_high = f_high;
|
// a->f_high = f_high;
|
||||||
// impulse = fir_bandpass (a->nc, a->f_low, a->f_high, a->samplerate, a->wintype, 1, a->gain / (float)(2 * a->size));
|
// impulse = fir_bandpass (a->nc, a->f_low, a->f_high, a->samplerate, a->wintype, 1, a->gain / (float)(2 * a->size));
|
||||||
// setImpulse_fircore (a->p, impulse, 1);
|
// setImpulse_fircore (a->fircore, impulse, 1);
|
||||||
// delete[] (impulse);
|
// delete[] (impulse);
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
void BANDPASS::SetBandpassNC (TXA& txa, int nc)
|
|
||||||
{
|
|
||||||
// NOTE: 'nc' must be >= 'size'
|
|
||||||
BANDPASS *a;
|
|
||||||
a = txa.bp0;
|
|
||||||
|
|
||||||
if (a->nc != nc)
|
|
||||||
{
|
|
||||||
a->nc = nc;
|
|
||||||
float* impulse = FIR::fir_bandpass (
|
|
||||||
a->nc,
|
|
||||||
a->f_low,
|
|
||||||
a->f_high,
|
|
||||||
a->samplerate,
|
|
||||||
a->wintype,
|
|
||||||
1,
|
|
||||||
a->gain / (double)(2 * a->size)
|
|
||||||
);
|
|
||||||
FIRCORE::setNc_fircore (a->p, a->nc, impulse);
|
|
||||||
delete[] (impulse);
|
|
||||||
}
|
|
||||||
|
|
||||||
a = txa.bp1;
|
|
||||||
|
|
||||||
if (a->nc != nc)
|
|
||||||
{
|
|
||||||
a->nc = nc;
|
|
||||||
float* impulse = FIR::fir_bandpass (
|
|
||||||
a->nc,
|
|
||||||
a->f_low,
|
|
||||||
a->f_high,
|
|
||||||
a->samplerate,
|
|
||||||
a->wintype,
|
|
||||||
1,
|
|
||||||
a->gain / (double)(2 * a->size)
|
|
||||||
);
|
|
||||||
FIRCORE::setNc_fircore (a->p, a->nc, impulse);
|
|
||||||
delete[] (impulse);
|
|
||||||
}
|
|
||||||
|
|
||||||
a = txa.bp2;
|
|
||||||
|
|
||||||
if (a->nc != nc)
|
|
||||||
{
|
|
||||||
a->nc = nc;
|
|
||||||
float* impulse = FIR::fir_bandpass (
|
|
||||||
a->nc,
|
|
||||||
a->f_low,
|
|
||||||
a->f_high,
|
|
||||||
a->samplerate,
|
|
||||||
a->wintype,
|
|
||||||
1,
|
|
||||||
a->gain / (double)(2 * a->size)
|
|
||||||
);
|
|
||||||
FIRCORE::setNc_fircore (a->p, a->nc, impulse);
|
|
||||||
delete[] (impulse);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void BANDPASS::SetBandpassMP (TXA& txa, int mp)
|
|
||||||
{
|
|
||||||
BANDPASS *a;
|
|
||||||
a = txa.bp0;
|
|
||||||
|
|
||||||
if (mp != a->mp)
|
|
||||||
{
|
|
||||||
a->mp = mp;
|
|
||||||
FIRCORE::setMp_fircore (a->p, a->mp);
|
|
||||||
}
|
|
||||||
|
|
||||||
a = txa.bp1;
|
|
||||||
|
|
||||||
if (mp != a->mp)
|
|
||||||
{
|
|
||||||
a->mp = mp;
|
|
||||||
FIRCORE::setMp_fircore (a->p, a->mp);
|
|
||||||
}
|
|
||||||
|
|
||||||
a = txa.bp2;
|
|
||||||
|
|
||||||
if (mp != a->mp)
|
|
||||||
{
|
|
||||||
a->mp = mp;
|
|
||||||
FIRCORE::setMp_fircore (a->p, a->mp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace WDSP
|
} // namespace WDSP
|
||||||
|
@ -64,9 +64,9 @@ public:
|
|||||||
double samplerate;
|
double samplerate;
|
||||||
int wintype;
|
int wintype;
|
||||||
double gain;
|
double gain;
|
||||||
FIRCORE *p;
|
FIRCORE *fircore;
|
||||||
|
|
||||||
static BANDPASS *create_bandpass (
|
BANDPASS(
|
||||||
int run,
|
int run,
|
||||||
int position,
|
int position,
|
||||||
int size,
|
int size,
|
||||||
@ -80,21 +80,21 @@ public:
|
|||||||
int wintype,
|
int wintype,
|
||||||
double gain
|
double gain
|
||||||
);
|
);
|
||||||
static void destroy_bandpass (BANDPASS *a);
|
BANDPASS(const BANDPASS&) = delete;
|
||||||
static void flush_bandpass (BANDPASS *a);
|
BANDPASS& operator=(const BANDPASS& other) = delete;
|
||||||
static void xbandpass (BANDPASS *a, int pos);
|
~BANDPASS();
|
||||||
static void setBuffers_bandpass (BANDPASS *a, float* in, float* out);
|
|
||||||
static void setSamplerate_bandpass (BANDPASS *a, int rate);
|
void flush();
|
||||||
static void setSize_bandpass (BANDPASS *a, int size);
|
void execute(int pos);
|
||||||
static void setGain_bandpass (BANDPASS *a, double gain, int update);
|
void setBuffers(float* in, float* out);
|
||||||
static void CalcBandpassFilter (BANDPASS *a, double f_low, double f_high, double gain);
|
void setSamplerate(int rate);
|
||||||
|
void setSize(int size);
|
||||||
|
void setGain(double gain, int update);
|
||||||
|
void calcBandpassFilter(double f_low, double f_high, double gain);
|
||||||
// RXA Prototypes
|
// RXA Prototypes
|
||||||
static void SetBandpassFreqs (RXA& rxa, double f_low, double f_high);
|
void setBandpassFreqs(double f_low, double f_high);
|
||||||
static void SetBandpassNC (RXA& rxa, int nc);
|
void SetBandpassNC(int nc);
|
||||||
static void SetBandpassMP (RXA& rxa, int mp);
|
void SetBandpassMP(int mp);
|
||||||
// TXA Prototypes
|
|
||||||
static void SetBandpassNC (TXA& txa, int nc);
|
|
||||||
static void SetBandpassMP (TXA& txa, int mp);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace WDSP
|
} // namespace WDSP
|
||||||
|
Loading…
Reference in New Issue
Block a user