… and the audio? I spent days getting audio to work in the best way I could. The RemoteIO AU way seems best (AudioQueues are awful) but getting input AND output working with RemoteIO is poorly documented. I have some working code though (which seems to handle interruptions OK on phones and pods).
Juce on the IPhone would be very nice of course, but watch this:
http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/
With Flash CS5 you can build Flash applications as Native IPhone Appz.
So it can’t get any easier then that.
I’ve not explored it very deeply yet, but I thought the AudioQueues looked pretty straightforward - what problems did you have with them?
Had real problems with latency and fussyness about buffer sizes using AudioQueues. I think the RemoteIO method is the way to go, it’s really low latency.
Ok, thanks, that’s really helpful!
Did you see this article:
http://michael.tyson.id.au/2008/11/04/using-remoteio-audio-unit/
Yes, the Tyson article really helped. I only have one callback though, not one for recording and one for playback. This is what I have so far:
http://164.11.131.73/svn/CEMS/mt/other/UGenProject/UGen/iphone/ugen_UIKitAUIOHost.h
http://164.11.131.73/svn/CEMS/mt/other/UGenProject/UGen/iphone/ugen_UIKitAUIOHost.mm
Unfortunately it’s tied up with a library I’ve written (UGen++) which is like a poor-mans CSL! However, it’s quite easy to see where I’m converting the data from SInt16s to float and back again. iPhone AUs and AQs don’t support audio data as float (AFAIK).
I haven’t done thorough testing but this method seems pretty robust, including handling interruptions from the phone (when you get a call) and resuming afterwards (and interruptions on the pod when you plug/unplug a headset).
Ok, thanks!