[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

What is ESD? (was: Esound and x11amp)

On debian-devel, Josip Rodin <joy@cibalia.gkvk.hr> wrote:
> Your tone was pretty much imperative. Sorry.

That is OK, no hard feelings.

> Tell me more about this ESD thing, I've never come across it, except
> for the wishlist bug report against x11amp because of it. *grin*

ESD is what The Network Audio System (NAS) wanted to be. Think of your print
server. In the old days of Unix, there was no spooler. Somebody in the room
would shout `Printer' before they printed to ensure nobody else printed at the
same time. If they did the two printouts would be intermingled. So lpd was
invented. Now instead of sending print jobs to /dev/lp0 they go to lpr which
queues them. Problem solved. In the case of sound, at the moment before ESD or
NAS only one program can use the sound hardware at a time. While it is using
the hardware it is locked so only that application can use it. Take an
example, say you are working away in an editor, listening to an MP3 file, when
no mail comes in, your mail notifier tries to play a tune, but it can not
because the MP3 player is hogging the sound card. In steps ESD, instead of
sending sound directly to the sound card, both programs communicate their
sound to ESD, it mixes them together digitally and sends them to the sound
card, so you can have two different programs making different noises at the
same time.

ESD is `better' than NAS because the programming interface is easier. There is
little change needed to move from opening /dev/dsp to sending the data to
ESD; it is a lot harder to change the code to support NAS. ESD is network
enabled so that it can run on a machine and accept sound requests across the
network. To facilitate this it has caching abilities. In the case outlined
about the mail notifier will have already cached its sound in ESD, when no
mail comes in it just says to ESD play sound 7, or whatever.

I consume, therefore I am

Reply to: