Nothing stopping you setting up a whole AX.25 network between multiple machines using Dire Wolf [1] and the built-in AX.25 [2] (a derivation of X.25) support still in the Linux kernel. You get a proper network interface that shows up alongside eth0. Nice short instructions at [3]. Just don't hook it up to radios unless you're appropriately licensed. Speakers and mics only.
This will alternate between two different tones, one representing 0 and another representing one, each bit lasting 50 ms, giving a bitrate of 20 bits/s. This is obviously rather slow, so more a fun weekend experiment than a practical tool.
There is a really deep rabbit hole when it comes to doing this more efficiently, getting into signal processing, modulation, encoding, error correction and more.
And of cause, things like modems, tape storage on c64 and other home computers did this a long time ago. It is just that audio has such a low bandwidth that it is not possible to get up to the bandwidth we expect these days.
My thought was to make a multimedia tape zine where people could submit songs and accompanying short text. One track of a stereo cassette track would store the audio mixed to mono, the other would store the text encoded something like this. You'd play the tape in a cassette player outputing to a computer that would play one track to a speaker and decode the other to a thermal printer, so the text would also appear on a "tape."
The problem is, it's really hard to find working cassette players with stereo input and output...
I'm sure there are others but you can still find a 1980's Sharp 555 double casette players.
I have one and had to do minimal maintenance on it and a bit of patching up. If you're not into repairing the electronics it's not a problem. pretty much any repair shop can get these back to working state. You can also find schematics on russian/asian DC++
I can imagine this being used as a control protocol for home/building automation, 20 bits is quite a lot if you consider each bit a device being turned on or off only.
I still don't know why would anyone do this instead of wifi, but definitely way cooler. Also, anyone visits you the first time, there's a guaranteed 20 minute talk about the setup :)
yes it's a rabbit hole, I know it well! When PC became fast enough to be used as DSP engines with the soundcard I spent years playing with the creation of "digital modes" as HAM radio hobbyist.
... I mean, this is very cool and definitely good work, but I'm pretty sure I remember transmitting data via audio quite a lot back in the day, and it sounded like BEEEEEEEEPBOOPCRRRSSSHHHWRRRRTTSSSFFFTHHHHH.
(Ironically, I often then used the audio-to-data connection to download audio that had also been converted to data. I think I still have those old MP3s of Orbital's set at Glastonbury 1995 somewhere.) :-D
There are some projects which try to make the audio sound pleasant, like birdsong or water. And there are fountain codes which continually stream data and you can start picking up the transmission at any point and as long as you get enough of it you can recreate the message. And of course compared to wifi you don't need to 'join' a network or broadcast anything to listen.
I'm imagining something like this at a train station or airport, continually broadcasting schedule and delay information which you could pick up with an app and a microphone and no internet access. Like a drinking fountain for information something you go to, or maybe pervasive background noise.
I'll have to look into rules for low power FM. Could you broadcast midi music with "stenographic" data hidden in variations, and not run into anti-encryption rules? Or just plain modem-like streams at low RF power? FM might give a cleaner signal through FM-in-a-phone than through microphone pickup.
I'm impressed by how compact this is, but if anyone is looking for a more "production-ready" solution, I've had great success with ggwave [0] - it even sounds pretty decent in the slow modes (as well as having an ultrasonic mode).
Obviously you won't be using any of this for regular communication, but there's a whole world of cool uses for sending short (up to a few bytes) messages over the air. And despite knowing dial-up modems exist, people are constantly impressed by novel applications of it.
Minimodem is a similar piece of software, but much more flexible. Depending on the quality of your link, you can adjust the symbol rate, as well as the frequencies to signal 1's and 0's.
Still (as said before) not more useful to me than as a weekend project. I used it a few times with my CB radios to see how far I could transmit 1200 and 300 baud.
When I started programming, the computers would save their programs in a common tape record. People would usually type programs printed in magazines. We even had a radio program in Brazil that transmitted programs as if it were music.
Are there any audio data transmission protocols that use the full spectrum of sound a microphone and speaker can typically produce instead of just those frequencies that work on a POTS line?
Cool idea. I could imagine a version of this being used by whistleblower to get data out of a company. Maybe a web version and they could capture the data with a voice recording app.
Nothing stopping you setting up a whole AX.25 network between multiple machines using Dire Wolf [1] and the built-in AX.25 [2] (a derivation of X.25) support still in the Linux kernel. You get a proper network interface that shows up alongside eth0. Nice short instructions at [3]. Just don't hook it up to radios unless you're appropriately licensed. Speakers and mics only.
[1] https://github.com/wb2osz/direwolf
[2] https://en.wikipedia.org/wiki/AX.25
[3] https://g7vrd.co.uk/ax25-direwolf-linux