Newbie Q: Prototyping digital data over an audio path

Hi,

I’m hoping that somebody can give me some pointers and advice on
something I would like to do.

My end goal: Using the audio output of my Livescribe Pulse smartpen,
transmit data at a rate of 10 to 100 kbps, to be received by an iPhone
and/or Android phone.

What I have so far: 600 bps FSK using speaker/mic combo. Great proof of
concept, but 20 seconds of screeching noise to transfer a short
handwritten note is…less than optimal.

What I’m thinking of doing: Using a cable between the devices, and QAM
modulation.

Is QAM16 or 64 a good modulation type for a cabled audio link? Is there
something that would be more appropriate? The audio generation side is
extremely resource constrained right now - j2me.

How I’m thinking of getting there:

  1. Use GNURadio to do an internal audio loopback test of some modulation
    schemes
  2. Do the same thing using a physical loopback cable
  3. Feed my computer’s audio into an iPhone with an audio recording app,
    then feed the recorded sound file into GNURadio
  4. Same thing, with my pen as the source
  5. Write some J2ME code to generate the audio on the fly
  6. Write a server-based iPhone app that feeds the audio into a remote
    GNURadio instance for decoding
  7. Write an optimized iPhone native version. (Maybe? Is it possible? Is
    it even worth it? I get unlimited data on my cell plan…)

Am I on the right path? My knowledge of signal processing is, sadly,
somewhat rudimentary. I’ve written an FSK decoder using an FFT library
in Python, and I can read a constellation diagram, so I have some
knowledge, just not a lot.

Looking at the QAM blocks in GNURadio, I see the comments:

NOT READY TO BE USED YET – ENABLE AT YOUR OWN RISK

While I am interested in learning, I don’t feel that I am ready to spend
6 months getting up to speed on signal processing theory before I can
even get a prototype working.

Learning how to use GNURadio has been on my to-do list for quite awhile,
but what I don’t want to end up doing is spending a few months and then
learning that I am not skilled enough to build what I need - it’s hard
from the outside to figure out what types of systems are easy to build
and what require very detailed knowledge.

Thanks for any advice,

gopi.