Been working on a FSK Modem in the last few weeks and have gotten it to work with 400bps, very reliable, atleast over a virtual audio cable, but it also works when playing a sound directly into a microphone.

Now I've shifted my focus to other Modulation techniques that could be used, such as M-QAM (16, 64, 256) and was wondering if anyone has any experience in that direction.

Would QAM be viable for the transfer of data over audio? What concerns me is the complexity of the signal detection when it comes to QAM, or even QPSK. I am trying to do this, same as the FSK, in purely Python, with .wav files as the intermediate medium of storing and playing the signals.

Would appreciate any kind of information or tips.

  • 2
    $\begingroup$ I think that sounds really cool. Acoustic environments as a channel seems like a bit of a mess. Frequency response, multiple reflections, Doppler effects, noise, just about everything that could make it difficult is there. My gut feel is that frequency based signaling would be more effective, but dunno. I’d be interested to see a demo of what you’ve gotten so far and what you come up with. $\endgroup$
    – Dan Szabo
    Dec 3, 2020 at 15:05
  • $\begingroup$ yeah, i know with the old FSK, they had acoustic couplers for telephones for 300 baud or something like that. $\endgroup$ Dec 4, 2020 at 0:55
  • $\begingroup$ It's definitely difficult but it can be done. I'd start with BPSK and move on to QPSK. I have done BPSK myself (using sound), and I know people who've done up to 16-QAM (using ultrasound). $\endgroup$
    – MBaz
    Dec 4, 2020 at 1:15
  • $\begingroup$ @DanSzabo, Definetly not inventing anything new, looking back at the old Modems, it's quite interesting and it can have some usecases in todays world. $\endgroup$
    – Jax Teller
    Dec 4, 2020 at 5:18
  • 1
    $\begingroup$ @MBaz I dove straight from FSK into MQAM, and was just super confused. I think I did manage to modulate some data into, what believe "looks" like a QAM modulated signal, but doing the demodulation I was just completely lost. One de modulating side I've used a constellation diagram with complex numbers to map the different states and then create a signal and save it as a .wav file. I might go look at BPSK as you mentioned, and work my way up. $\endgroup$
    – Jax Teller
    Dec 4, 2020 at 5:21

1 Answer 1


The problem with transmitting data over an acoustic link is the variability of the channel. Things you need to take into account are

  1. Bandwidth, quality & directionality of the microphone
  2. Bandwidth, quality & directionality of the loudspeaker
  3. Specifically the distortion properties of the loudspeaker
  4. Relative placement and distance of speaker and microphone
  5. Acoustic environment: reverb time as a function of frequency, distinct reflections, absorption properties, sympathetic buzzing and rattling, etc.
  6. Background & competing noises: number of sources, spatial distribution, temporal & spectral properties, energy,
  7. All of the above can be stationary or time variant.

As a result the amount of data you can reliably transmit varies by several orders of magnitude with the channel properties alone. In a clean & stable environment with good speaker close to a microphone QAM is definitely possible. In a busy restaurant with a laptop speaker: not so much.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.