mfsk is a portable implementation of the MFSK family of digital modes for computers and microcontrollers
  • C++ 97.2%
  • C 2.8%
2026-03-24 17:33:29 -05:00
src Migrated large buffers to PSRAM 2026-03-24 17:33:29 -05:00
.gitignore Initial import 2026-03-03 15:33:38 -06:00
forja.toml Moved big buffers to PSRAM on Teensy 2026-03-24 16:39:11 -05:00
README.md Moved fldigi MFSK code to mfsk repo 2026-03-03 15:58:06 -06:00

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)