[SDL] SDL_Mixer lag
Ryan C. Gordon
icculus at icculus.org
Fri Sep 1 01:23:44 PDT 2006
> Hi, I know that this question has been answered before but I didn't quite
> understand the answer. I'm having the same problem with the marc marm (the
> one who asked this question before). Peter Mulholland answered that the
> problem was the backend that was used (ESD or Arts). Well, I don't know
> what ESD or Arts is. I don't even know what a backend or a frontend is. :P
>
> My question is how do I choose the backend for SDL_Mixer?
>
> BTW, I'm using Fedora Core 5 with KDE.
KDE uses arts, Gnome uses esound.
In some cases, arts/esound is hogging your sound card (even if it's not
making any sound at the moment, or ever), which prevents other apps from
using it. The idea is that every app feeds sound data to arts, which
mixes it and sends it to the sound card, so no one has to hog the device
but arts itself.
This is a terrible idea, though, largely because it adds a ton of delay
and inefficiency to the equasion.
If the sound card will let multiple processes use it simultaneously, you
can tell SDL to use a different backend. Backends are the lowlevel part
of SDL that actually feeds the audio data to the hardware. The backend
takes care of the specific details so the rest of the system (from the
rest of SDL to the app on up to the user) don't generally have to care
about _how_ the audio gets played, just that it does.
On Linux, there are several different backends, for various device
driver interfaces, plus these things like arts, etc.
Now that you have the background information, here are the answers to
your questions:
Disabling esd and arts:
http://icculus.org/lgfaq/#esdarts
Choosing a specific SDL backend:
http://icculus.org/lgfaq/#setthatdriver
(you probably want "alsa" ... but killing artsd is probably enough)
--ryan.
More information about the SDL
mailing list