Audio Modem Communication Library in Python
github.com
github.com
Would be happy to answer any question.
You can try my Android app [1] to reproduce the experiments for short transmissions.
[1] https://play.google.com/store/apps/details?id=bit.zeyde.audi...
Something you might consider is to write a web camera backend for it and use the screen/webcam. That has a lot more bandwidth and has higher SNR as the selector effect of the web camera is so much better than that of a microphone.
I’ve found all the phase modulation schemes work poorly across the room. DSSS works ok but is very slow. I would be curious how reliable FSK is in that situation.
[1] https://ggerganov.github.io/jekyll/update/2018/05/31/data-ov...
Your post mentions not finding any reliable modem libraries. I'm curious what issues you had with mine, if you tried it?
I am willing to sacrifice bandwidth to achieve better reliability of the communication and I believe I was able to achieve it. Although, I haven't done tests with many other devices/conditions than my own, so my result might be biased.
How long would it take to transmit a 3MB jpeg and then encode it,?
Using an audio cable (for better SNR), I have managed to achieve and sustain 60kbps for long periods time - so 3MB file should take ~7 minutes to transmit.
The initial use-case was performing air-gapped communication for signing Bitcoin transactions [1] on an offline machine.
[1] https://en.wikipedia.org/wiki/Orthogonal_frequency-division_...
[2] https://en.wikipedia.org/wiki/Quadrature_amplitude_modulatio...
I = amplitude*cos(phase)
Q = amplitude*sin(phase)
[1] http://whiteboard.ping.se/SDR/IQI guess it should also work on MacOS, since it depends on `numpy` [1] and `portaudio19-dev` [2] Debian packages (which should be installable via Pip/Homebrew).
Please take a look at https://github.com/quiet/quiet-js for an ultrasonic data transmission.
However, I'm not aware of any such protocol...
[1] https://github.com/kamalmostafa/minimodem [2] https://www.youtube.com/watch?v=DfSHclXjobY [3] http://www.blog.jay-greco.com/wp/?p=116
Have you tried the Google Nearby library? Do you think that sound modems still have a place now that Bluetooth LE is more of an option?
edit: Also, do you have a browser version I can try?
I didn't try Google Nearby, since I was developing the modem to run on a desktop machine (but later I've created a simple Android app [1], supporting the lowest bit-rate).
Unfortunately, I don't have a working web-based version of my modem...
[1] https://play.google.com/store/apps/details?id=bit.zeyde.audi...