Decodes live streaming Frequency-Shift-Keyed audio into the original binary data.
The radio is tuned to the required frequency (I've found quite a few of these stations),
the audio is transmitted to my computer by NetAudio & fed into the decoder,
which analyses it in real-time (mostly in the frequency domain using FFTW).
Once the decoder has calibrated itself to the incoming audio stream
(by detecting the FSK frequencies),
it starts decoding the signal into 1s and 0s.
Here is an example of the raw data decoded from a stream.
The decoder saves such an image for each transmission so I can check the accuracy.
The top line of numbers is the number of bits (a scale),
the binary stream is visible in two colours,
below which lies the running spectral analysis of the two FSK signals.
I'm now up to its third re-write. I've been trying to tweak the analysis loop
in an attempt to make it both faster and more accurate.
Most of the issues have been resolved, although a small timing error tends
to creep into the analysis during lengthy transmissions.
This is really the finally hurdle.
Once the decoder is completely accurate, I will try to implement a system
to automatically learn the encoding of the binary data,
which should reveal patterns and perhaps even human-readable information. |