/MWAV

A C++ library for generating WAV files for various digital modes including PSK31 (BPSK/QPSK), AFSK1200, AX.25, APRS, and SSTV.

Primary LanguageC++

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.

image

Raw binary data is read with minimodem perfectly.

image image

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:

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