user21694: I'm looking at controlling Arduino by reading audio commands sent from a raspberry pi (through javascript). I've found the SoftModem code and wonder how it works. It claims that "It uses the phone's audio jack and Bell 202 modem-like FSK encoding", but I wonder how it's done. Doesn't it need to sample the ADC and apply some filtering like FFT? I can't seem to find where all this is done.
Any thought appreciated.

user10794: Judging by the blog from the post you linked, he is calculating the frequency received by using the analog comparator built into the processor. That lets you detect a signal rising, falling or both, compared to a reference voltage.
With some interrupts and some timing, you could work out what frequency signal you were receiving, and thus deduce if you got a 0 or 1 bit incoming.
I have a page about the analog comparator if that helps.

21694: <p>I'm looking at controlling Arduino by reading audio commands sent from a raspberry pi (through javascript). I've found the <a href="https://github.com/arms22/SoftModem" rel="nofollow">SoftModem</a> code and wonder how it works. It claims that "It uses the phone's audio jack and Bell 202 modem-like FSK encoding", but I wonder how it's done. Doesn't it need to sample the ADC and apply some filtering like FFT? I can't seem to find where all this is done.</p>

<p>Any thought appreciated.</p>
 10794: <p>Judging by the blog from the post you linked, he is calculating the frequency received by using the analog comparator built into the processor. That lets you detect a signal rising, falling or both, compared to a reference voltage.</p>

<p>With some interrupts and some timing, you could work out what frequency signal you were receiving, and thus deduce if you got a 0 or 1 bit incoming.</p>

<p>I have a <a href="http://www.gammon.com.au/forum/?id=11916" rel="nofollow">page about the analog comparator</a> if that helps.</p>
