From 27254e40605e89efc7e9291b7831fb3810e40e9b Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Fri, 25 Mar 2016 20:46:55 -0300 Subject: Setup mpd and pulseaudio integration using tcp --- files/default.pa | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ files/pulseaudio | 3 +- manifests/all.pp | 20 ++++++- 3 files changed, 185 insertions(+), 4 deletions(-) create mode 100644 files/default.pa diff --git a/files/default.pa b/files/default.pa new file mode 100644 index 0000000..7a15dde --- /dev/null +++ b/files/default.pa @@ -0,0 +1,166 @@ +#!/usr/bin/pulseaudio -nF +# +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +# This startup script is used only if PulseAudio is started per-user +# (i.e. not in system mode) + +.nofail + +### Load something into the sample cache +#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav +#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav +#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav +#load-sample-lazy pulse-access /usr/share/sounds/generic.wav + +.fail + +### Automatically restore the volume of streams and devices +load-module module-device-restore +load-module module-stream-restore +load-module module-card-restore + +### Automatically augment property information from .desktop files +### stored in /usr/share/application +load-module module-augment-properties + +### Should be after module-*-restore but before module-*-detect +load-module module-switch-on-port-available + +### Load audio drivers statically +### (it's probably better to not load these drivers manually, but instead +### use module-udev-detect -- see below -- for doing this automatically) +#load-module module-alsa-sink +#load-module module-alsa-source device=hw:1,0 +#load-module module-oss device="/dev/dsp" sink_name=output source_name=input +#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input +#load-module module-null-sink +#load-module module-pipe-sink + +### Automatically load driver modules depending on the hardware available +.ifexists module-udev-detect.so +load-module module-udev-detect +.else +### Use the static hardware detection module (for systems that lack udev support) +load-module module-detect +.endif + +### Automatically connect sink and source if JACK server is present +.ifexists module-jackdbus-detect.so +.nofail +load-module module-jackdbus-detect channels=2 +.fail +.endif + +### Automatically load driver modules for Bluetooth hardware +.ifexists module-bluetooth-policy.so +load-module module-bluetooth-policy +.endif + +.ifexists module-bluetooth-discover.so +load-module module-bluetooth-discover +.endif + +### Load several protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix + +### Network access (may be configured with paprefs, so leave this commented +### here if you plan to use paprefs) +#load-module module-esound-protocol-tcp +#load-module module-native-protocol-tcp +load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 +#load-module module-zeroconf-publish + +### Load the RTP receiver module (also configured via paprefs, see above) +#load-module module-rtp-recv + +### Load the RTP sender module (also configured via paprefs, see above) +#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" +#load-module module-rtp-send source=rtp.monitor + +### Load additional modules from GConf settings. This can be configured with the paprefs tool. +### Please keep in mind that the modules configured by paprefs might conflict with manually +### loaded modules. +.ifexists module-gconf.so +.nofail +load-module module-gconf +.fail +.endif + +### Automatically restore the default sink/source when changed by the user +### during runtime +### NOTE: This should be loaded as early as possible so that subsequent modules +### that look up the default sink/source get the right value +load-module module-default-device-restore + +### Automatically move streams to the default sink if the sink they are +### connected to dies, similar for sources +load-module module-rescue-streams + +### Make sure we always have a sink around, even if it is a null sink. +load-module module-always-sink + +### Honour intended role device property +load-module module-intended-roles + +### Automatically suspend sinks/sources that become idle for too long +load-module module-suspend-on-idle + +### If autoexit on idle is enabled we want to make sure we only quit +### when no local session needs us anymore. +.ifexists module-console-kit.so +load-module module-console-kit +.endif +.ifexists module-systemd-login.so +load-module module-systemd-login +.endif + +### Enable positioned event sounds +load-module module-position-event-sounds + +### Cork music/video streams when a phone stream is active +load-module module-role-cork + +### Modules to allow autoloading of filters (such as echo cancellation) +### on demand. module-filter-heuristics tries to determine what filters +### make sense, and module-filter-apply does the heavy-lifting of +### loading modules and rerouting streams. +load-module module-filter-heuristics +load-module module-filter-apply + +# X11 modules should not be started from default.pa so that one daemon +# can be shared by multiple sessions. + +### Load X11 bell module +#load-module module-x11-bell sample=bell-windowing-system + +### Register ourselves in the X11 session manager +#load-module module-x11-xsmp + +### Publish connection data in the X11 root window +#.ifexists module-x11-publish.so +#.nofail +#load-module module-x11-publish +#.fail +#.endif + +### Make some devices default +#set-default-sink output +#set-default-source input diff --git a/files/pulseaudio b/files/pulseaudio index 4b0e4c2..7c3129a 100644 --- a/files/pulseaudio +++ b/files/pulseaudio @@ -12,8 +12,7 @@ # is enabled. For other sessions, you can simply start PulseAudio with # "pulseaudio --daemonize". # 0 = don't start in system mode, 1 = start in system mode -#PULSEAUDIO_SYSTEM_START=0 -PULSEAUDIO_SYSTEM_START=1 +PULSEAUDIO_SYSTEM_START=0 # Prevent users from dynamically loading modules into the PulseAudio sound # server. Dynamic module loading enhances the flexibility of the PulseAudio diff --git a/manifests/all.pp b/manifests/all.pp index 3680464..acf8188 100644 --- a/manifests/all.pp +++ b/manifests/all.pp @@ -10,8 +10,8 @@ class mpd::all { groups => [ 'audio', 'pulse', 'pulse-access' ], } - # Ensure pulseaudio is running systemwide so both mpd and users - # can share audio control. + # In the past we ensured pulseaudio were running systemwide + # so both mpd and users can share audio control. # # This could be managed elsewhere. file { '/etc/default/pulseaudio': @@ -22,4 +22,20 @@ class mpd::all { notify => Service['mpd'], source => [ "puppet:///modules/mpd/pulseaudio" ], } + + # When run as its own user as per the wiki instructions, mpd will be unable to + # send sound to another user's pulseaudio server. Rather than setting up + # pulseaudio as a system-wide daemon, a practice strongly discouraged by + # upstream, you can instead configure mpd to use pulseaudio's tcp module to send + # sound to localhost. + # + # See https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks#Local_.28with_separate_mpd_user.29 + file { '/etc/pulse/default.pa': + ensure => present, + owner => root, + group => root, + mode => 0644, + notify => Service['mpd'], + source => [ "puppet:///modules/mpd/default.pa" ], + } } -- cgit v1.2.3