Details of the RTTY demodulation chain:
•
filter the incoming audio baseband signal with two 2nd order IIR bandpass filters.
The bandpass frequency for mark and space are adjusted according to the shift
used for the specified RTTY mode
•
the result is two narrowband signals which are now separately multiplied to
calculate the magnitude squared: mark * mark and space * space
•
calculate the envelope of the two signals by an exponential average with fast
attack and slow decay
•
calculate the noise floor level by an exponential average with fast attack and even
slower decay
•
"clip" by taking the smaller of the two: magnitude or envelope
•
this is the "Optimal ATC" - algorithm by W7AY also implemented in FlDigi. It
copes quite well with selective fading and QRM: v1 = (mclipped - noise_floor) *
(mark_env - noise_floor) - (sclipped - noise_floor) * (space_env - noise_floor) -
0.25 * ((mark_env - noise_floor) * (mark_env - noise_floor) - (space_env -
noise_floor) * (space_env - noise_floor));
•
lowpass filter v1 with IIR filter with cutoff-frequency equal to the baud rate
•
slicing: is v1 <0 --> bit is 0, if v1 > 0 --> bit is 1
•
digital PLL: bit decoding timing
•
symbol decoder translates bit stream into characters
•
send character to print routine
CW Decoder
We know that experienced CW operators do not need this feature (and will probably
also never use it ;-)), but it could be useful for beginners in CW or for refreshing your
CW knowledge, or (we hope so!) could even motivate hams to learn CW from scratch!
The decoder code has been adapted from Lofturs´ implementation of an algorithm
designed by Guenther (1973) (for military use on a "modern" microcomputer (modern in
the seventies!), see reference below). Thanks, Loftur, for putting your code under the
GNU GPL license!
Please note that the CW decoder is definitely not better than your ear-brain interface.
This is also expressed by the huge amount of scientific effort still recently put into
developing new algorithms to decode CW (e.g. Zhang et al. 2006, Wu et al. 2010, Wang