Automatic Frequency Control enhancement. Provides default AFC and ability to disable in the Decoder tab of each channel. Spectral display includes visual indicators of frequency center (grey) and current AFC offset (yellow).

This commit is contained in:
dennis.sheirer
2014-09-11 22:46:05 +00:00
parent 4e0fd9b7b0
commit 0f43c7ed22
23 changed files with 546 additions and 119 deletions

View File

@@ -17,9 +17,11 @@
******************************************************************************/
package dsp.nbfm;
import log.Log;
import sample.Broadcaster;
import sample.Listener;
import sample.complex.ComplexSample;
import dsp.afc.AutomaticFrequencyControl;
import dsp.filter.ComplexFIRFilter;
import dsp.filter.FilterFactory;
import dsp.filter.Window.WindowType;
@@ -30,7 +32,17 @@ public class NBFMDemodulator implements Listener<ComplexSample>
private ComplexFIRFilter mIQFilter;
private FMDiscriminator mDiscriminator;
public NBFMDemodulator( double[] iqFilter, double iqGain )
/**
* Implements a quadrature narrow-band demodulator that produces float
* valued demodulated, audio filtered output samples.
*/
public NBFMDemodulator()
{
this( FilterFactory.getLowPass( 48000, 4000, 73, WindowType.HAMMING ),
1.0002, true );
}
public NBFMDemodulator( double[] iqFilter, double iqGain, boolean afc )
{
mIQFilter = new ComplexFIRFilter( iqFilter, iqGain );
@@ -54,16 +66,6 @@ public class NBFMDemodulator implements Listener<ComplexSample>
mIQFilter.dispose();
}
/**
* Implements a quadrature narrow-band demodulator that produces float
* valued demodulated, audio filtered output samples.
*/
public NBFMDemodulator()
{
this( FilterFactory.getLowPass( 48000, 4000, 73, WindowType.HAMMING ),
1.0002 );
}
/**
* Receive method for complex samples that are fed into this class to be
* processed