And this is a sneak peek at the modem project I am building that needed the spectrogram to make sure the PHY layer and all the primitives were working correctly.
This reference client (pictured, I like the win95 aesthetic, also written in C/Raylib) will be free software but the mLink modem itself will not be unless I find it impossible to monetize it. I have spent about a year and a half on this project.
mLink is a robust shared channel pub-sub radio data link, that can have many concurrent interactions over the air, with excellent fault recovery and many automatic premium features, such as compression by default, end to end encryption (if you are an authorized station), differential , automatic relay request on fail, and can transfer about 2400bps gross (much less net after error correction) in about 2800hz of bandwidth, at about 0db. Below that it drops substantially, but even so that is excellent performance in marginal conditions.
Its organized into three spectral regions on the air:
- Emergency 8fsk modulator that can be decoded down to -21db (inspired by WSTJ-X) and generally get an emergency signal out no matter what. These encode 11 bytes each and last about 10 seconds.
- 3x (concurrent!) Announce QPSK modulator, encoding 11 bytes, works about down to -9db, and lasts about 3/4 of a second.
- One "Bulk" OFDM frame that lasts about 5 seconds, and can encode between 600 and 950 bytes per frame (I vary the LDPC encoding rate instead of the modulation scheme to 'go faster on a good connection' (nobody does it like this I think)
I had worked on ARDOPC a couple years ago and it taught me a lot about how to work with modems, and I have a lot of experience with data links in the Navy on the P3 Orion and in general with different amateur modes and the problems that happen while using them.
I aim, with mLink, to take the best features of my 12 years of radio experience, and build the very best possible, fast, robust and easy for the operator to get what he needs.