Very interesting.. but from what you've said, you're running into the same
latency issues as everyone else on android. The chance of making a
multi-touch MPC program, or a synth that can play multiple sounds at once
seems a bit far off yet for Android at this point. :(


On Mon, Apr 12, 2010 at 1:28 PM, Mario Zechner <[email protected]>wrote:

> 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]>
> <android-developers%[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]<android-developers%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
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