Set up local sound to play across the network.
In “Mix Your Audio for Perfect Sound” [Hack #13] I discuss how to use EsounD as a sound server to mix sounds from multiple programs for a sound card that supports only one input. One extra feature of EsounD is the ability to send and receive sound over the network. This can be particularly useful if you use programs like VNC over a local network, because you can use audio applications remotely and hear them on your local machine. Plus, in general, it’s just pretty cool to be able to send sound around over the network.
To do this esd must be installed on the server (the machine on which you hear the sound). You don’t have to have esd installed on the client—your client doesn’t even need a sound card—but make sure your programs are EsounD-compatible. Most distributions should have EsounD packaged, so install it from your package management tool. If you use GNOME, EsounD is probably already installed. Once esd is installed on the server, you need to start it with special options so that it knows to listen to the network. Kill any open esd processes, and then start esd from the command line:
greenfly@napoleon:~$ esd -promiscuous -tcp -public -port 16001
You should hear a series of beeps on your computer to tell you that esd has started. Now on your client machine open a terminal and type:
greenfly@moses:~$esdplay --server
="ip_of_server:16001" sample.wav
Replace ip_of_server
with the
IP address of the esd server. The audio file will
play back on the remote server, so be sure to adjust the mixer on that
machine so that you can hear it. This works fine on an
application-by-application basis, but you can also set an environment
variable so that any EsounD-compatible applications you start will
output to the remote server. Type the following in a terminal:
greenfly@moses:~$ export ESPEAKER="ip_of_server:16001"
Now you can start XMMS, mplayer, xine, or any of the EsounD-capable audio players from this terminal and the sound will be sent over the network. Be sure to add this setting to your .bashrc so it’s available each time you start a program.
You can also configure esd globally so that
it automatically starts with these network options by default. This is
particularly useful if you use GNOME on your esd
server since GNOME is configured to start esd
automatically. Edit your /etc/esound/esd.conf file
and edit the default_options
line to
say:
default_options=-promiscuous -tcp -public -port 16001
Save your changes, and the next time esd starts, it will automatically start with those options enabled.