[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Date Index][Thread Index][Author Index]

Re: Everyday Looper - A Looper for the iPhone/iPod Touch



Mech >

Thanks for coding this, and an even greater thanks for giving us the chance to quiz you on it here.
I'm not trying to be confrontational here

Have no fear about that, I know exactly what to expect when posting here ^^. And that's what I'm looking for too : experienced looper users (and even makers) feedback/questions.

IMNSHO, this is not 100% due to the app.  It seems endemic to the iPhone architecture itself and probably stems from the multi-threading architecture (or, more accurately, the lack of it), the pitiful amount of available RAM on the iPhone (64mb for all applications?!?) and quite possibly even the performance of the CPU.  I've had the same sort of lag suddenly attack the keyboard as I've been typing an email, for instance.  It's just that email is not a time-critical application.

That's the better part to start with. So in fact, you are totally right, the iPhone is not a "real-time" system, and despite being mono-task, it's highly multi-threaded due to the OS demons and Apple's background application (such as Mail). The iPhone is before all a phone, so it has at least to monitor the network. One first step to decrease CPU charge (and so possible lag) is by switching to Airplane mode, as it will basically turn your iPhone into a temporary iPod Touch ^^. That's user side of course, but in real-life test it's not that much relevant.

I'm very interested, but I do have one question. In the past, I've purchased some of your competitor's products  and found them to be completely unusable for serious work due to timing discrepancies (Loopy, for example).

It appears that using the touch interface to trigger looping often does NOT result in the sort of critical timing that is necessary for recording useable loops.  You tap the screen to begin recording, and in some cases it's right on. In others, there can be as much as a half-second lag before it starts.  And in a few other instances, it ignores the touch altogether.

What's more, the lag is inconsistent, so it's impossible to compensate for with technique.

Everyday Looper has noticeable lag too between the moment when you pull off a finger off the screen and when the action is effectively executed. It's due to various things, one being that both the "touch manager" and the "graphic manager" has to act in the main thread (receiving messages for "touch manager", sending openGL command for "graphic manager"). So no way to prioritize touches over gaphics. At least with the iPhone OS I'm targeting now (2.2). In 3.1 their is a way to thread the "graphic manager". What is important is that this latency is not inconsistent, due to thread priorities. It can vary between devices (iPod Touch / iPhone Edge / 3GS), but will stay almost constant. I have great room for improvement on that part, thanks to that. And it will never ignore touches. I have to compensate audio latency too. For now I'm in the 35-40 ms overall latency range, and I will certainly never approach the 1-3ms latency of embedded systems. But I'm quite confident in approaching the 15-20 ms area. And you can count on me to come back here with numbers ^^ !

I would imagine that there should be a way to somewhat mitigate this in the application.  But since I'm sure a lot of it stems from the iPhone system, I'm curious what you've done to solve this issue in Everyday Looper.

I use a work-around however. I have option in the looper to generate a click track which is basically X clicks at Y BPM, and that will act as an exact loop length setter. Then I use quantized to loop recording (which is sample accurate), and all the touch input related latency is gone. But that solution doesn't fit to everyone, I know that.

Thank for your savvy and challenging questions Mech :) !


Andy >

3) people who feed the audio into a network of delays and fx which
they have (usually) set up themselves. Typically they use max/msp
and play atonally without a beat.


4) Those who play the looping technology like an instrument.
 i.e. they have a similar interaction with the looper as with
  their instrument.
 hmmm...what's a good analogy? perhaps it compares to
 guys who use finger tapping and other techniques to expand
 their guitar music (except not as standardized).

For the 3) I was totally off. In fact it's like designing it's own "organic" looper. A bit like what RJDJ does on the iPhone for certain "interactive songs".

For the 4) certainly, I totally see what you are taking about. I have (long-term) plans for adding tools that will enable more core interactions with the looper. Even if some possibilities are already here, like ultra-short granular-like loops, or in-place overwrite recording.

so, is there an i-Phone SDK?

Yes, that's what I (and the other hundred thousands iPhone devs) use. You can download it for free at http://developer.apple.com/iphone/ , but will have to pay 99$/year to be able to test on a real device and sell on the AppStore.


Stephen >

I will definitely work on that touch-to-action lag ^^ !