May 23, 2012 at 3:59 pm

Developer Explains Why Android Sucks for Some Audio Apps

android audio apps

Oh, how we wish we could divulge the source of this information, because A) It comes from the developer of a pretty nice app; B) It’s fairly juicy information, if music apps are your thing; and C) We hate quoting anonymous sources.

Nonetheless, we’re going to publish this anyway, because it’s so interesting, and the source has no apparent motivation to make this up — however, he/she does have a reason to remain anonymous (i.e. staying in the good graces of Google and its Android app store staffers). Besides, we have now given the Google Android PR person we contacted about this nearly 24 hours to respond to this developer’s specific complaints, after he got back to us initially fairly quickly, and he has yet to do so.

Here’s how it all started: We emailed the developer asking about the Android version of the app, which is apparently in the works. He/she responded,

Excuse delay, trying to get Android working!
A disaster of an OS for audio!

Naturally, our curiosity was piqued. We asked for more detail and heard back as follows (edited slightly for clarity):

1. Android OS provides just one API for volume control. The problem is, there is a need for at least two types of volume control: overall output volume and media/music volume. This means manufacturers have to implement their own way of controlling the media/music volume. Unfortunately, each manufacturer does this differently, and there’s no way of finding out how they did it until you test each individual model. To make matters worse, Samsung used an inefficient way to control the hardware and media volumes, and deliberately feeds some of the hardware output to the microphone input. This creates audio mayhem.

2. Android OS is shockingly inefficient in dealing with real-time audio. The operating system adds about a seven second delay, and the hardware adds a further five or six seconds, making the default delay 12-13 seconds overall. We have managed to reduce the real-time delay to around half a second (500ms) or less, which we believe is is the best achieved on Android to date. [Ed. note: the iPhone version doesn't include perceptible delay.]

3. Hundreds of screen size and resolutions make it impossible to have a one-size-fits-all UI graphics set. [Ed. note: Obviously, this complaint isn't exclusive to audio app developers, and we've heard it plenty of times before.]

For now, users are still waiting for this app to hit Android, even though the developer has been working on it for months. We’ll keep you posted. For now, though, given Google’s radio silence on the issue, we assume it has no way to address any of these three fairly serious complaints.

Image courtesy of Flickr/Saad Irfan

  • Adil Sherwani

    500ms is higher than the 100ms number I’d seen quoted last year but either way, 2 orders of magnitude higher than iOS which offers under 3ms hardware output latency. Add about 10ms touchscreen / accelerometer latency (very rough estimate, I don’t think anyone has published actual numbers for this), 5ms audio buffers (minimum size), and 1-2 processing time for your app, and you’re still able to stay within 20ms which seems to be the magic number for audio to feel realtime to humans.

  • Igor Zinken

    I agree with Adil, 500 ms is shocking to me. Having written applications (plain old Java) that synthesize audio at the user response the results are closer to, indeed, 20 ms on an average phone. I’m sure it’s not as easy as saying “GAH! it IS possible!!” without knowing the applications context, but I’d say there is a lot of mileage to be had with clever buffer management. Just popping this in to avoid people feeling discouraged by the above text for the wrong reasons.

  • Eliot Van Buskirk

    Thanks, Adil. Feel free to hit me up and let me know what you’re working on — it sounds like you know whereof you speak.

  • Roland

    This “developer” is so full of shit, it’s not even funny. He’s seriously arguing that Android has a 10+ SECOND delay in its audio path? Like, an app starts playing a sound, and it takes 10 seconds before it comes out the speaker? Really? And if Android is that bad, how come he was finally able to get a delay of under 500ms? Sheer willpower? Black magic?
    Face, this guy is full of it.

  • midem

    (deleted comment)

  • James Martin

    I’m no dev but having used Rdio’s iPhone & Android apps, the experience on the latter is definitely inferior. The sound cuts out very often – presumably because of background processes and notifications – even in offline mode (i.e. not streaming). Not great

  • BassMan

    At this year’s NAMM show I spoke to a highly respected engineer and developer of an extremely well known and highly rated iOS app who had exactly the same kind of concerns. This guy built an amazing app that I used daily on the iPad and his frustration with developing sound apps on Android was obvious. He basically said that for the kind of app he was working on (involving tuning) there was no such thing as “Real Time” on the Android with makes tuning applications work very poorly. He said he was getting close to a workable solution, but that it was not close to the specifications that he wanted.

  • James van Scoyoc

    I’m so fed up with Android’s not being able to stream radio broadcasts reliably that I’ve taken to carrying my previous, Windows-based smart phone just so I can use the FM radio.  I imagine the reasons given above also explain why streaming is poor even when connecting through wifi, to say nothing of places and times when the 3G network is supposedly very good.  

    As for streaming ‘real time’–I’d be happy if I could stream five minutes behind the broadcast, if the five minutes meant I would realiably get to hear the whole program, before switching to a podcast in frustration because the stream stopped yet again and went to “buffering”.

  • Anonymous

    it would be nice if android sucked for audio apps only. it sucks for a whole bunch of other stuff. This software could never be sold, it has so many holes, and it’s not even alpha phase of software development. Have been using Android tablet and I have yet to find app that worked on my Android flawlessly…

  • Angry developer

    He was talking about audio input. Audio output through the speaker in android is a well documented process, and easy to do because a good amount of apps employ that process. But real time audio input is different. Now, you might be thinking of an app that just saves an audio file from the microphone, but say I want to make a tuner. I need reliable audio information from the microphone and I need to know that there are no cracks or spaces in this audio information – or else it screws up my results during pitch detection. Plain and simple, that doesn’t happen on iOS. It might not be conceivable to the user in most situations, but we’re explaining why Android is an inferior language. Developers have been pointing this Audio problem out for ages, and google does nothing. Sure Android 4.0 might be better, but that’s bullshit. 90% of users are on like 2.3 I think. So they can’t use my really good app…