I did some audio work on Android and have to agree with Kevin's
analysis. Writting to the audio device via AudioTrack works and you
can also alter the buffer sizes to get to the lowest possible latency
but from what i remember the buffer was still pretty big. Also,
AudioTrack does not allow passing in direct buffers so you have to do
everything with an array backed buffer if you go native which might
incurr overhead as the array has to be locked when working with it in
native code.

And i know it's considered spam and off topic, but Kevin maybe the lib
i'm working at the moment is of interest for you. It does have some
features of XNA (cross-plattform, meaning Windows/Linux/Mac and
Android) and even has more or less ports of some XNA classes like
SpriteBatch) and is pretty big already, covering a lot of ground. You
can check it out at http://www.badlogicgames.com and 
http://code.google.com/p/libgdx/.
The public API is heavily document and there's a lot of examples in
the SVN that should get you started. Alternatively there's a series of
articles that serve as a tutorial. This series is not yet finished but
gets updated on a constant basis. Sorry for the thread hijack :)

On 12 Apr., 22:10, Kevin Duffey <[email protected]> wrote:
> Mixing audio in itself is not too hard.. you basically add each byte of each
> sound (that plays at the same exact point in time). You do face the issue of
> dynamic range.. if you are mixing 16-bit sounds, you don't want to use a
> 16-bit value to store the mixed sounds.. you'll overflow it. or clip the
> sound. Usually you'll use a 32-bit integer to add all the sounds, then
> you'll lower it to 24-bit or 16-bit with some fancy algorithm that won't
> clip all the mixed sounds.. sort of like lowering their combined volumes so
> they don't clip. However, you can't keep lowering volumes with more sounds..
> it changes the overall mixed volume.. there is some FFT or something like
> that which properly does this. It's been a long time since I did this stuff,
> back when SoundBlaster 8-bit sound card was out and mikmod and module
> players were quite popular. Long before the sound cards mixed audio
> themselves. ;)
>
> I am sure you can find stuff on it. I too wanted to work on a low-latency
> music app, but until google puts more resources into making the NDK and
> android platform on par with iPhone, I don't think it's worth the effort.
> There is just WAY too many problems with the issue of low latency audio
> right now. Really what you need is to use the NDK, pass the sound buffers of
> different sounds (or better yet, NDK can directly access the buffers of
> loaded sounds or SD stored sounds), do the mixing there, and then be able to
> play to a the sound output in some low latency manner. Unless things have
> changed, I've been led to believe we're a long ways off before we'll have
> anything like that.
>
> Sadly, it seems google/android team is completely quiet on any details at
> all with regards to this stuff. I've not been able to find one bit of info
> whether or not they are hearing us game/audio developers and are working on
> a better platform for us or not. Given their stagnant market work and lack
> of any info at all on anything being worked on.. I wouldn't count on
> anything anytime soon. Let's hope I am very wrong on this, but I fear that
> the articles that indicate android will surpass iphone by 2012 are grossly
> misleading if android as a platform can't compete on games and audio with
> iPhone. :( They still need to fix the multi-touch issue which plagues gamers
> on several devices but apparently it's in the hardware, not the platform.
>
> If I am wrong.. if there is some place google posts what is coming and
> when.. please correct me. I really love the idea of Android, and still
> follow along, but I've basically stopped any development primarily because
> there isn't much money in it, and with no idea if far better game/audio
> support is coming, I don't want to waste time hoping. There are other
> avenues of interest in non game/music related things for Android tho, but my
> heart lies in making a kick ass music app... and possibly a side scroller
> game at some point. Would be wonderful if Google had something like XNA for
> us. :)
>
> On Mon, Apr 12, 2010 at 12:42 PM, k_day <[email protected]> wrote:
> > Despite everything I have read about the difficulty of making low
> > latency audio apps in Android, I am giving it a shot.  To start, I
> > loaded each note in an octave into a SoundPool, and then looped
> > through each note that was to be played on that beat and called
> > play().  This didn't even come close to being accurate enough for me,
> > and got especially bad if a lot of notes were being played at once.
>
> > From what I read, the only way to do something like this is to mix the
> > audio yourself, though I am not entirely sure how to go about this.
> > My initial thought is that for each beat, I could precompute the sound
> > the sound that is to be played (i.e., combine the wav's), and then
> > pass that stream to an AudioTrack when it is time to be played.
>
> > Are there any good examples out there for how to mix audio like this,
> > or libraries I could use to do this for me?  How have coders of other
> > music apps dealt with this?
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to [email protected]
> > To unsubscribe from this group, send email to
> > [email protected]<android-developers%[email protected]>
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
>
> > To unsubscribe, reply using "remove me" as the subject.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to