threnodyne/README.md

1.8 KiB

Threnodyne

More audio-based data transmission! This time it's using chirp spread spectrum

What this is

Threnodyne is another thing for making a sound card work as a silly budget SDR, in the same vein as transgride. To work on radio waves, it probably needs some kind of upconverter, unless you're into VLF.

The use case we have in mind is just plugging it into a radio set that is designed to handle audio. We are also hoping it will work for other audio data encoding purposes, like storing data on cassette tapes, or even transmitting data between computers using sound.

How it works

Modulation is simple: you simply select an audio frequency center and deviation, and the program generates a series of chirps - tones with linearly-changing frequency - centered on the specified frequency and traversing the specified deviation. A rising chirp encodes a 1 bit, and a falling chirp encodes a 0 bit.

Demodulation is accomplished by taking the cross-correlation of the template chirp signals with the incoming received signal, then searching for the sharp spikes in either of the results which correspond to the two possible symbols.

How to use it

As usual for Rust projects, you can build it (after installing the toolchain) with cargo build --release, which will emit an executable into target/release. Run that executable with --help for detailed usage information.

Is it useful?

Maybe? The use case we have in mind is relatively low-rate (a handful of bytes per second) digital radio communication, mainly for using voice-oriented radios as text-mode transceivers. This will not be especially useful for fast data transfer, but may help when trying to cram data through a janky channel with heavy interference and tight bandwidth limits.