Compare commits

...

8 Commits

3 changed files with 47 additions and 1 deletions

View File

@ -1656,6 +1656,15 @@ The destination is specified as ip-address:port.
Example: RAW_AUDIO_UDP_DEST=127.0.0.1:10000
.TP
.B AUDIO_FILTER
Define an audio filter here to improve the frequency response caused by
unfavorable hardware in the audio path from discriminator to the soundcard
input. A lot of audio filters are available (Butterworth, Chebyshev, Lowpass,
Highpass, ...). Look into the src/async/audio/fidlib.c for more information.
Example: AUDIO_FILTER=HsBq1/0.01/-18/3500
.B OB_AFSK_ENABLE
Set to 1 to enable reception of metadata like signal level measurements, DTMF
digits and tone detections via out-of-band (OB) AFSK. The out-of-band AFSK is
@ -2381,6 +2390,14 @@ It is possible to specify the same PTY for multiple functions (e.g. squelch,
ptt etc) in both TX and RX configurations. This may be good if there is one
script handling all functions.
.
.TP
.B AUDIO_FILTER
Define an audio filter here to improve the frequency response caused by
unfavorable hardware in the audio path from discriminator to the soundcard
input. A lot of audio filters are available (Butterworth, Chebyshev, Lowpass,
Highpass, ...). Look into the src/async/audio/fidlib.c for more information.
Example: AUDIO_FILTER=HsBq1/0.01/-18/3500
.SS Networked Transmitter Section
.
A networked transmitter section is used to specify the configuration for a

View File

@ -529,6 +529,15 @@ bool LocalRxBase::initialize(void)
prev_src->registerSink(voiceband_filter, true);
prev_src = voiceband_filter;
string filterdesc;
if (cfg().getValue(name(), "AUDIO_FILTER", filterdesc))
{
cout << "+++ Init Audiofilter=" << filterdesc << endl;
AudioFilter *additional_audiofilter = new AudioFilter(filterdesc);
prev_src->registerSink(additional_audiofilter, true);
prev_src = additional_audiofilter;
}
// Create an audio splitter to distribute the voiceband audio to all
// other consumers
AudioSplitter *voiceband_splitter = new AudioSplitter;

View File

@ -472,7 +472,27 @@ bool LocalTx::initialize(void)
prev_src->registerSink(preemph, true);
prev_src = preemph;
}
string filterdesc;
if (cfg.getValue(name(), "AUDIO_FILTER", filterdesc))
{
cout << "+++ Init Audiofilter=" << filterdesc << endl;
AudioFilter *additional_audiofilter = new AudioFilter(filterdesc);
prev_src->registerSink(additional_audiofilter, true);
prev_src = additional_audiofilter;
}
/*
AudioCompressor *limit = new AudioCompressor;
limit->setThreshold(-1);
limit->setRatio(0.1);
limit->setAttack(2);
limit->setDecay(20);
limit->setOutputGain(1);
prev_src->registerSink(limit, true);
prev_src = limit;
*/
// Add a limiter to smoothly limit the audio before hard clipping it
double limiter_thresh = DEFAULT_LIMITER_THRESH;
cfg.getValue(name(), "LIMITER_THRESH", limiter_thresh);