Yet another FM demodulator as a way for me to spend (i.e. waste) my spare time playing with different ways to learn DSP.
Clone this repo, then use cmake to build. The code has been tested on various *nix platforms (e.g. Ubuntu 18+ aarch64, Debian buster armhf, Ubuntu 20+ x64, MacOS 13.3 and Ubuntu on WSL2), but the various automation scripts may not function as expected on all systems.
mkdir build && cd build && cmake .. && make -j$(nproc)
-DIS_NVIDIAcompiles CUDA version, requiresnvcc(https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html) , default: OFF
-iinput file; use '-' to specify stdin-ooutput file; use '-' to specify stdout
-Linput signal lowpass cutoff frequency (ωc), default: none, skips input lowpass entirely-loutput signal lowpass cutoff frequency (ωc), default: 1-Soutput sampling rate, default: 10
sox -q -D -twav <some-wav-iq-wav-file> -traw -eunsigned-int -b8 -r192k - \
| build/demodulator -i - -o - -S96000 -l12500 \
| sox -q -D -traw -b32 -ef -r96k - -traw -es -b16 -r48k - \
| dsd -i - -o/dev/null -n
sox -q -D -twav <some-wav-iq-wav-file> -traw -eunsigned-int -b8 -r192k - \
| build/demodulator -i - -o - -S96000 -l6500 -L12500 \
| sox -q -D -traw -b32 -ef -r96k - -traw -es -b16 -r22050 - \
| multimon-ng -q -c -a<some-codecs> -