mfsk is a portable implementation of the MFSK family of digital modes for computers and microcontrollers
- C++ 97.2%
- C 2.8%
| src | ||
| .gitignore | ||
| forja.toml | ||
| README.md | ||
mfsk
mfsk is a portable implementation of the MFSK family of digital modes for computers and microcontrollers.
This repo contains the MFSK modem implementation separated from fldigi-cpp. The shared modem framework (base modem class, filters, FFT, viterbi, etc.) remains in fldigi-cpp as a dependency. Only MFSK-specific code lives here, reducing flash size on constrained platforms like Arduino/ESP32.
Supported Modes
- MFSK-4, MFSK-8, MFSK-11, MFSK-16, MFSK-22, MFSK-31, MFSK-32, MFSK-64, MFSK-128, MFSK-64L, MFSK-128L
MFSK-16 is the primary ported and tested mode.
Platforms
| Device | Platform | Board |
|---|---|---|
| Generic Arduino | arduino | esp32:esp32:esp32s3 |
| Eden Horizon | esp32 | esp32:esp32:esp32s3 |
| Songbird | teensy | teensy:avr:teensy41 |
| Linux with PipeWire | linux | native |
| Generic C++ | cpp | portable |
Building
Requires forja:
forja update # fetch dependencies
forja build <target> # compile for a target device
Examples
- mfsk16 — TX example (all platforms)
- mfsk16_rx — RX with audio input (Teensy, Linux/PipeWire)
- mfsk16_rx_som — RX using som audio library (Linux)
- mfsk16_tx_eden — TX via Eden Horizon radio over serial (Linux)
- mfsk16_loopback — End-to-end TX→RX loopback test (Linux)