[SDL] [RFC+PATCH] Introducing posix timers to linux SDL_GetTicks()
tommi.kyntola at ray.fi
Fri Sep 30 00:18:16 PDT 2005
> My game (which has, in various versions, been in development for years) is
> finally nearing completeness, and I've gone through a couple of different
> audio systems in the process. I've stumbled on a couple of issues though,
> which I'd very much like to clear up before finalising the system.
> 1) SDL_mixer/OpenAL/anything else?
> For the first version, I used SDL_mixer. Later, I switched to OpenAL, partly
> because I had performance problems with SDL_mixer and stereo panning (I
> suppose I did something wrong) but mainly because for a different project I
> needed surround sound and wanted to reuse my resource manager. I'm not overly
> happy with OpenAL though. The Linux version isn't up to date, and having
> sound effects in surround sound isn't that exciting when the music comes out
> only in mono...
If you don't plan to sell your game (or don't have the money to buy a
license for commercial project), you may use FMOD and FMOD Ex for free.
I've been using FMOD for almost 2 years and IMHO it's very good, stable,
cross platform, feature-rich etc. API. Now, with the release of FMOD Ex,
it became fantastic, filled with cool features, amazing API, that I
wholeheartly recommend. Read more: http://www.fmod.org/
> 2) Streaming music
> For music playback, I use ogg files which I stream from the harddisk. The
> problem is that the HD access results in a noticeable performance impact on
> at least some systems; every few frames, a frame gets delayed a little longer
> because the next bit of the stream is read. I tried to compensate for this by
> putting the streaming code in a separate thread, hoping that the I/O blocking
> mechanism wouldn't slow down my gfx routines that way, but the effect is
> still noticeable, and of course I now have to fight race conditions as well.
> Is there any real gain in putting this in its own thread to begin with? Is
> there a recommended buffer size for streaming audio which works reasonably
> well for most platforms? Or should I simply cache the entire ogg files and
> just decode them on the fly?
I never had any problems of this kind with FMOD, everything was playing
smoothly and the overall performance loss was about stable ~1 or ~2 %.
> 3) Continuous updates
> This has perhaps caused me the most trouble. Refreshing the screen is one
> thing, because it (hopefully) runs at the display's refresh rate and the
> human eye doesn't notice the difference. But how should I go about updating
> sound volumes and panning for moving sources? Is it enough to update them
> once per frame (all I know is that the ears are "quicker" than the eyes), or
> would these steps be audible? This also applies to fading music (currently
> done in the music thread, see #2).
With FMOD all of this is done for you :-)
> When these questions are answered, I'm afraid I'll probably come up with a few
> more. ;)
> Thanks in advance,
In summary, if you don't have the time to create your own solutions, I
suggest to use FMOD Ex. Even Blizzard is using FMOD :-)
More information about the SDL