PulseAudio and Stream Extension

The problem

💡

The SOUND4 Stream extension uses the ALSA driver recording directly, not shareable, and runs as service at system startup.

The PulseAudio system, bundled with Ubuntu and some other distros, is a per-user software, starting with X server.

The Pulse Audio daemon (at least in latest versions) checks that all sub-stream of an ALSA card are unused or it does not use the card at all.

So, the card will not appear at all in Pulse devices (was not the case in old Ubuntu).

The SOUND4 Stream can not use Pulse Audio, otherwise it won't work unless user is logged in, and this would delay the start of streaming.

Fixing by manually configuring PulseAudio

One way may be to force to load the specific card devices in Pulse Audio.

For this, you need to identify your card in ALSA:

aplay -l

For a single card, the card should be named SOUND4.

card 0: SOUND4 [S/N 13091005], device 0: Channel_1 [Process 0]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

Depending on the process, there might be multiple subdevices. For a second card with multiple channels:

card 1: SOUND4CARD2 [S/N 13091005], device 0: Channel_1 [1- Ch1 (S/n 13091005)]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: SOUND4CARD2 [S/N 13091005], device 1: Channel_2 [2- Ch2 (S/n 13091005)]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

As an administrator, edit /etc/pulse/default.pa and add to the end:

load-module module-alsa-sink device=hw:SOUND4,0

(the hw:SOUND4,0 is the ALSA device name you make from the result of the aplay -l command) If the card has multiple outputs, you will see that all will have same name under Pulse (using pavucontrol is useful). So, for a x2 you can for instance use:

load-module module-alsa-sink device=hw:SOUND4,0 sink_name=Channel1
update-sink-proplist Channel1 device.description=Channel1
load-module module-alsa-sink device=hw:SOUND4,1 sink_name=Channel2
update-sink-proplist Channel2 device.description=Channel2

Fixing by removing PulseAudio

You can remove Pulse Audio and use only ALSA.

Fixing by using ALSA to play music

You can use any player which supports ALSA audio output instead of PulseAudio.