February 15th, 2008

  • evan

network sound between linux and mac

Thanks to a tip from mart and a followup from jmason, it turned out to be nearly trivial.
  1. Instead esound on the Mac. I used MacPorts: sudo port install esound.
  2. Configure esound to allow any client: sudo vi /opt/local/etc/esd.conf and change the default_options line to read:
    default_options=-tcp -public -promiscuous -port 5678
  3. Start esd: esd & .
  4. Back on the Linux box, tell PulseAudio about the new network device:
    pactl load-module module-esound-sink sink_name=projectar server=projectar.local:5678
    (You can pick your own sink_name, of course, and also the server; I'm using zeroconf.)
  5. Tell PulseAudio to use the network device. I think this means running padevchooser and clicking through the obvious menus to set the "sink", but it also seems that program may be deprecated in favor of pavucontrol, which also involves clicking through the obvious menus to set the same setting. Or you can do it from the command line with pacmd and set-default-sink .
Depending on the app, you have to tell it to use pulse for output. Gnome stuff seems to default that way. For mplayer, pass -ao pulse .

The remaining bit I don't understand is that it seems to remember the output device for different applications. What I'd prefer is a global switch: local or network. I haven't figured out quite where this sort of info lives, though.