Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What latency is required to make software fax using only speaker and mic?

The Story

I don't possess any fax hardware, so its hard for me to communicate with people who have a fax noise answering on the phone. It is hard even to imagine that in 2012 people are still using devices that eat trees and paper for communication. So, I wanted to fax them an announcement that new era of internet, email and video conferencing has finally arrived.

http://xkcd.com/454/

The Problem

As I don't possess any fax hardware, the obvious and fastest choice would be to send a message through online services. From the other side fax hardware is basically a speaker, a microphone and a little bit of digital signal processing code. The only obvious problem is the code. The fax protocol is known - it should not be a problem to implement it even in Python, but so far I haven't seen any examples of using speaker+mic for faxing. The CPU performance is out of question - modern PC have sufficient power to calculate enough noises for 2400 bits/second. So the only technical explanation for this I have is that latency - (the time of noise to travel from mic to a DSP code and back to speaker) is so long that it disrupts the transmission.

Questions

If the above is true - what is the required latency for fax protocol?
Is there a tool to measure mic-speaker latency?
What else did I miss?
Is it possible to implement everything in Python?

P.S. I couldn't find anything when I looked into ITU (except that I've discovered that ITU looks for you)

like image 688
anatoly techtonik Avatar asked Jun 12 '12 12:06

anatoly techtonik


1 Answers

Fabrice Bellard (yes, the QEMU and Javascript-PC-emulator guy, he's awesome ;) ) did some work on software modems. According to his project page, there is code for "soundcard interface" as well as modulation/demodulation of various protocols. I haven't looked at the source, but this might provide useful pieces. There is also the linmodems.org site with further pointers.

Linmodems.org links to some software by the late Tony Fisher, who seems to have had a complete implementation of the sending part of what you want to achieve, although for an ancient workstation. Have a look at the manpage.

Additionally, there is this post on the GNU radio mailinglists from 2003 of a guy that seems to want the same thing, although he didn't have xkcd to describe it back then ;)

like image 75
mensi Avatar answered Oct 05 '22 18:10

mensi