MWAV
Everything here is thoroughly UNTESTED. Although BPSK at 125 Symbols/s follows the correct waveform the others struggle. All PSK31 spec modes can reliably be decoded by Fldigi, but I would not recommend broadcasting anything until you test functionality.
A C++ library for modulating text and raw binary input into WAV files. Supports BPSK, QPSK, and AFSK.
This is a combination of my PSK31 modulation project , my AFSK modulation project, and my WAV file generation project.
Audio Examples
A lot of the code was shared between these and I'm currently working on combining them and creating reliable modulation for all modes.
PSK Modulation
You can read my attempt to document the original process of BPSK and QPSK modulation here
AFSK Modulation
Documentation from the original project:
Basic implementation of AFSK modulation according to AFSK1200 spec. Supports both NRZI (0 is change in tone, 1 is no change) and Bell 202 encoding.
Takes in raw binary data (char*) and encodes it into AFSK audio into WAV format.
Raw binary data is read with minimodem perfectly.
Source of the formulas: https://notblackmagic.com/bitsnpieces/afsk/
So far my biggest challenge is the fact that most documentation contradicts what I've found so far. Even the AX.25 spec is incorrect in one spot, and it's the spec document.
Helpful resources:
- http://www.aprs.org/doc/APRS101.PDF
- http://n1vg.net/packet/
- https://notblackmagic.com/bitsnpieces/afsk/
- https://www.ax25.net/AX25.2.2-Jul%2098-2.pdf
Currently unlicensed, will become part of https://github.com/joshua-jerred/Giraffe
Quick Reference
Decoding with minimodem:
minimodem --read -f afsk1200.wav 1200 --binary-raw 16