You are not logged in.

#1 2017-05-14 02:56:33

snake.scaly
Member
Registered: 2017-05-03
Posts: 6

[SOLVED] PulseAudio hangs when a low-pass LADSPA plugin is used

Hi everyone,

I'm trying to make the built-in subwoofer in my Asus ROG 750 laptop work as designed. That is, I want it to only output low frequences and let the regular speakers handle the rest.

I'm running Cinnamon which depends on PulseAudio. So first I tried a pure PulseAudio approach as described here. Basically I add this to my /etc/pulse/default.pa:

load-module module-ladspa-sink  sink_name=ladspa_low_pass master=alsa_output.pci-0000_00_1b.0.analog-surround-21 plugin=lp4pole_1671 label=lp4pole_fcrcia_oa control=200,0
load-module module-remap-sink   sink_name=remapLFE        master=ladspa_low_pass                                 remix=no   channels=1 master_channel_map=lfe                    channel_map=lfe
load-module module-remap-sink   sink_name=remap20         master=alsa_output.pci-0000_00_1b.0.analog-surround-21 remix=no   channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right
load-module module-combine-sink sink_name=combine         slaves=remap20,remapLFE                                         channels=3                                           channel_map=front-left,front-right,lfe
set-default-sink combine

With this configuration Pulse hangs dead. A -vvvvv log is at http://ix.io/tEt. I don't see any problems in the log, it just stops responding such that even Ctrl-C does not work. I have to kill it from a different terminal. I think sometimes it does not hang immediately but lets me play sound for a few seconds. During those seconds the subwoofer works as intended but then everything hangs anyway.

Then I tried an alsa approach. Here are contents of my /etc/asound.conf:

# Use PulseAudio by default
pcm.!default {
  type pulse
  fallback "sysdefault"
  hint {
    show on
    description "Default ALSA Output (currently PulseAudio Sound Server)"
  }
}

ctl.!default {
  type pulse
  fallback "sysdefault"
}

# upmix 2channels to 3, one for LFE
pcm.stereo_automix_lfe {
    type plug
    slave.pcm lowpass2121
    slave.channels 3
    ttable {
        0.0    1
        1.1    1
        0.2    0.5
        1.2    0.5
    }
}

# low pass filter for LFE channel
pcm.lowpass2121 {
    type ladspa
    slave.pcm passthrough2121
    path "/usr/lib/ladspa"
    channels 3
    plugins {       
        0 {
            id 1098 # Identity (Audio) (1098/identity_audio)
            policy duplicate
            input.bindings.0 "Input";
            output.bindings.0 "Output";        
        }         
        1 {
            id 1672 # 4 Pole Low-Pass Filter with Resonance (FCRCIA) (1672/lp4pole_fcrcia_oa)
            policy none
            input.bindings.2 "Input"
            output.bindings.2 "Output"
            input.controls [ 250 2 ]
        }
    }
}

# Passthrough slave for the lowpass filter
pcm.passthrough2121 {
    type plug
    slave.pcm surround21
    slave.channels 3
    ttable {
        0.0 1
        1.1 1
        2.2 1
    }
}

# vim:set ft=alsaconf:

The stereo_automix_lfe PCM works fine with speaker-test, aplay and alsaplayer. The subwoofer works according to the configuration. However if I try to hook it into PulseAudio by adding the following line to /etc/pulse/default.pa:

load-module module-alsa-sink device=stereo_automix_lfe sink_properties=device.description=BuiltinWithSub

the sink fails to initialize:

D: [pulseaudio] alsa-util.c: Trying stereo_automix_lfe with SND_PCM_NO_AUTO_FORMAT ...
I: [pulseaudio] (alsa-lib)pcm_hw.c: open '/dev/snd/pcmC0D0p' failed (-16)
I: [pulseaudio] alsa-util.c: Error opening PCM device stereo_automix_lfe: Device or resource busy
E: [pulseaudio] module.c: Failed to load module "module-alsa-sink" (argument: "device=stereo_automix_lfe sink_properties=device.description=BuiltinWithSub"): initialization failed.
E: [pulseaudio] main.c: Module load failed.
E: [pulseaudio] main.c: Failed to initialize daemon.

If instead I initialize the sink from command line the initialization succeeds:

pactl load-module module-alsa-sink device=stereo_automix_lfe sink_properties=device.description=BuiltinWithSub
D: [pulseaudio] alsa-util.c: Trying stereo_automix_lfe with SND_PCM_NO_AUTO_FORMAT ...
D: [pulseaudio] alsa-util.c: Managed to open stereo_automix_lfe
I: [pulseaudio] (alsa-lib)pcm_params.c: Slave PCM not usable
D: [pulseaudio] alsa-util.c: snd_pcm_hw_params_any() failed: Invalid argument
D: [pulseaudio] alsa-util.c: Trying stereo_automix_lfe without SND_PCM_NO_AUTO_FORMAT ...
D: [pulseaudio] alsa-util.c: Managed to open stereo_automix_lfe
I: [pulseaudio] alsa-util.c: Trying to disable ALSA period wakeups, using timers only
D: [pulseaudio] alsa-util.c: Maximum hw buffer size is 5944 ms
D: [pulseaudio] alsa-util.c: Set buffer size first (to 88200 samples), period size second (to 88200 samples).
I: [pulseaudio] alsa-util.c: Device stereo_automix_lfe doesn't support 2 channels, changed to 3.
I: [pulseaudio] alsa-util.c: ALSA period wakeups disabled
I: [pulseaudio] alsa-sink.c: Successfully opened device stereo_automix_lfe.
I: [pulseaudio] alsa-sink.c: Successfully enabled mmap() mode.
I: [pulseaudio] alsa-sink.c: Successfully enabled timer-based scheduling mode.
I: [pulseaudio] sink.c: Created sink 1 "alsa_output.stereo_automix_lfe" with sample spec s16le 3ch 44100Hz and channel map front-left,front-right,aux0
I: [pulseaudio] sink.c:     alsa.resolution_bits = "16"
I: [pulseaudio] sink.c:     device.api = "alsa"
I: [pulseaudio] sink.c:     device.class = "sound"
I: [pulseaudio] sink.c:     alsa.class = "generic"
I: [pulseaudio] sink.c:     alsa.subclass = "generic-mix"
I: [pulseaudio] sink.c:     alsa.name = "ALC3229 Analog"
I: [pulseaudio] sink.c:     alsa.id = "ALC3229 Analog"
I: [pulseaudio] sink.c:     alsa.subdevice = "0"
I: [pulseaudio] sink.c:     alsa.subdevice_name = "subdevice #0"
I: [pulseaudio] sink.c:     alsa.device = "0"
I: [pulseaudio] sink.c:     alsa.card = "0"
I: [pulseaudio] sink.c:     alsa.card_name = "HDA Intel PCH"
I: [pulseaudio] sink.c:     alsa.long_card_name = "HDA Intel PCH at 0xed310000 irq 34"
I: [pulseaudio] sink.c:     alsa.driver_name = "snd_hda_intel"
I: [pulseaudio] sink.c:     device.bus_path = "pci-0000:00:1b.0"
I: [pulseaudio] sink.c:     sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
I: [pulseaudio] sink.c:     device.bus = "pci"
I: [pulseaudio] sink.c:     device.vendor.id = "8086"
I: [pulseaudio] sink.c:     device.vendor.name = "Intel Corporation"
I: [pulseaudio] sink.c:     device.product.id = "8c20"
I: [pulseaudio] sink.c:     device.product.name = "8 Series/C220 Series Chipset High Definition Audio Controller"
I: [pulseaudio] sink.c:     device.form_factor = "internal"
I: [pulseaudio] sink.c:     device.string = "stereo_automix_lfe"
I: [pulseaudio] sink.c:     device.buffering.buffer_size = "529200"
I: [pulseaudio] sink.c:     device.buffering.fragment_size = "264600"
I: [pulseaudio] sink.c:     device.access_mode = "mmap+timer"
I: [pulseaudio] sink.c:     device.description = "BuiltinWithSub"
I: [pulseaudio] sink.c:     device.icon_name = "audio-card-pci"
I: [pulseaudio] source.c: Created source 2 "alsa_output.stereo_automix_lfe.monitor" with sample spec s16le 3ch 44100Hz and channel map front-left,front-right,aux0
I: [pulseaudio] source.c:     device.description = "Monitor of BuiltinWithSub"
I: [pulseaudio] source.c:     device.class = "monitor"
I: [pulseaudio] source.c:     device.icon_name = "audio-input-microphone"
I: [pulseaudio] alsa-sink.c: Using 2.0 fragments of size 264600 bytes (1000.00ms), buffer size is 529200 bytes (2000.00ms)
I: [pulseaudio] alsa-sink.c: Time scheduling watermark is 13.36ms
D: [pulseaudio] alsa-sink.c: hwbuf_unused=0
D: [pulseaudio] alsa-sink.c: setting avail_min=87612
D: [pulseaudio] alsa-util.c: snd_pcm_dump():
D: [pulseaudio] alsa-util.c: Plug PCM: Route conversion PCM (sformat=S16_LE)
D: [pulseaudio] alsa-util.c:   Transformation table:
D: [pulseaudio] alsa-util.c:     0 <- 0
D: [pulseaudio] alsa-util.c:     1 <- 1
D: [pulseaudio] alsa-util.c:     2 <- 0*0.5 + 1*0.5
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_INTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : S16_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 3
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 16
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c: Slave: Linear Integer <-> Linear Float conversion PCM (FLOAT_LE)
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_INTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : S16_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 3
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 16
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c: Slave: LADSPA PCM
D: [pulseaudio] alsa-util.c:   Playback:
D: [pulseaudio] alsa-util.c:     Policy: duplicate
D: [pulseaudio] alsa-util.c:     Filename: /usr/lib/ladspa/cmt.so
D: [pulseaudio] alsa-util.c:     Plugin Name: Identity (Audio)
D: [pulseaudio] alsa-util.c:     Plugin Label: identity_audio
D: [pulseaudio] alsa-util.c:     Plugin Unique ID: 1098
D: [pulseaudio] alsa-util.c:     Instances:
D: [pulseaudio] alsa-util.c:       Depth: 0
D: [pulseaudio] alsa-util.c:          InChannels: 0
D: [pulseaudio] alsa-util.c:          InPorts: 0 "Input"
D: [pulseaudio] alsa-util.c:          OutChannels: 0
D: [pulseaudio] alsa-util.c:          OutPorts: 1 "Output"
D: [pulseaudio] alsa-util.c:       Depth: 0
D: [pulseaudio] alsa-util.c:          InChannels: 1
D: [pulseaudio] alsa-util.c:          InPorts: 0 "Input"
D: [pulseaudio] alsa-util.c:          OutChannels: 1
D: [pulseaudio] alsa-util.c:          OutPorts: 1 "Output"
D: [pulseaudio] alsa-util.c:       Depth: 0
D: [pulseaudio] alsa-util.c:          InChannels: 2
D: [pulseaudio] alsa-util.c:          InPorts: 0 "Input"
D: [pulseaudio] alsa-util.c:          OutChannels: 2
D: [pulseaudio] alsa-util.c:          OutPorts: 1 "Output"
D: [pulseaudio] alsa-util.c:     Audio input port bindings:
D: [pulseaudio] alsa-util.c:       0 -> 0
D: [pulseaudio] alsa-util.c:     Audio output port bindings:
D: [pulseaudio] alsa-util.c:       0 -> 1
D: [pulseaudio] alsa-util.c:     Policy: none
D: [pulseaudio] alsa-util.c:     Filename: /usr/lib/ladspa/lp4pole_1671.so
D: [pulseaudio] alsa-util.c:     Plugin Name: 4 Pole Low-Pass Filter with Resonance (FCRCIA)
D: [pulseaudio] alsa-util.c:     Plugin Label: lp4pole_fcrcia_oa
D: [pulseaudio] alsa-util.c:     Plugin Unique ID: 1672
D: [pulseaudio] alsa-util.c:     Instances:
D: [pulseaudio] alsa-util.c:       Depth: 1
D: [pulseaudio] alsa-util.c:          InChannels: 2
D: [pulseaudio] alsa-util.c:          InPorts: 2 "Input"
D: [pulseaudio] alsa-util.c:          OutChannels: 2
D: [pulseaudio] alsa-util.c:          OutPorts: 3 "Output"
D: [pulseaudio] alsa-util.c:     Audio input port bindings:
D: [pulseaudio] alsa-util.c:       0 -> NONE
D: [pulseaudio] alsa-util.c:       1 -> NONE
D: [pulseaudio] alsa-util.c:       2 -> 2
D: [pulseaudio] alsa-util.c:     Control input port initial values:
D: [pulseaudio] alsa-util.c:       0 "Cutoff Frequency" = 250.00000000
D: [pulseaudio] alsa-util.c:       1 "Resonance" = 2.00000000
D: [pulseaudio] alsa-util.c:     Audio output port bindings:
D: [pulseaudio] alsa-util.c:       0 -> NONE
D: [pulseaudio] alsa-util.c:       1 -> NONE
D: [pulseaudio] alsa-util.c:       2 -> 3
D: [pulseaudio] alsa-util.c:   Capture:
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_NONINTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : FLOAT_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 3
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 32
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c: Slave: Plug PCM: Linear Integer <-> Linear Float conversion PCM (S32_LE)
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_NONINTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : FLOAT_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 3
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 32
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c: Slave: Route conversion PCM (sformat=S32_LE)
D: [pulseaudio] alsa-util.c:   Transformation table:
D: [pulseaudio] alsa-util.c:     0 <- 0
D: [pulseaudio] alsa-util.c:     1 <- 1
D: [pulseaudio] alsa-util.c:     2 <- 2
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_INTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : S32_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 3
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 32
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c: Slave: Route conversion PCM
D: [pulseaudio] alsa-util.c:   Transformation table:
D: [pulseaudio] alsa-util.c:     0 <- 0
D: [pulseaudio] alsa-util.c:     1 <- 1
D: [pulseaudio] alsa-util.c:     2 <- 2
D: [pulseaudio] alsa-util.c:     3 <- 2
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_INTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : S32_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 3
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 32
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c: Slave: Soft volume PCM
D: [pulseaudio] alsa-util.c: Control: PCM Playback Volume
D: [pulseaudio] alsa-util.c: min_dB: -51
D: [pulseaudio] alsa-util.c: max_dB: 0
D: [pulseaudio] alsa-util.c: resolution: 256
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_INTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : S32_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 4
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 32
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c: Slave: Hardware PCM card 0 'HDA Intel PCH' device 0 subdevice 0
D: [pulseaudio] alsa-util.c: Its setup is:
D: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
D: [pulseaudio] alsa-util.c:   access       : MMAP_INTERLEAVED
D: [pulseaudio] alsa-util.c:   format       : S32_LE
D: [pulseaudio] alsa-util.c:   subformat    : STD
D: [pulseaudio] alsa-util.c:   channels     : 4
D: [pulseaudio] alsa-util.c:   rate         : 44100
D: [pulseaudio] alsa-util.c:   exact rate   : 44100 (44100/1)
D: [pulseaudio] alsa-util.c:   msbits       : 32
D: [pulseaudio] alsa-util.c:   buffer_size  : 88200
D: [pulseaudio] alsa-util.c:   period_size  : 44100
D: [pulseaudio] alsa-util.c:   period_time  : 1000000
D: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
D: [pulseaudio] alsa-util.c:   tstamp_type  : MONOTONIC
D: [pulseaudio] alsa-util.c:   period_step  : 1
D: [pulseaudio] alsa-util.c:   avail_min    : 87612
D: [pulseaudio] alsa-util.c:   period_event : 0
D: [pulseaudio] alsa-util.c:   start_threshold  : -1
D: [pulseaudio] alsa-util.c:   stop_threshold   : 6206523236469964800
D: [pulseaudio] alsa-util.c:   silence_threshold: 0
D: [pulseaudio] alsa-util.c:   silence_size : 0
D: [pulseaudio] alsa-util.c:   boundary     : 6206523236469964800
D: [pulseaudio] alsa-util.c:   appl_ptr     : 0
D: [pulseaudio] alsa-util.c:   hw_ptr       : 0
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Thread starting up
D: [alsa-sink-ALC3229 Analog] core-util.c: SCHED_RR|SCHED_RESET_ON_FORK worked.
I: [alsa-sink-ALC3229 Analog] core-util.c: Successfully enabled SCHED_RR scheduling for thread, with priority 5.
I: [alsa-sink-ALC3229 Analog] alsa-sink.c: Starting playback.
D: [alsa-sink-ALC3229 Analog] ratelimit.c: 420 events suppressed
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [pulseaudio] module-device-restore.c: Could not set format on sink alsa_output.stereo_automix_lfe
D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.stereo_automix_lfe becomes idle, timeout in 5 seconds.
I: [pulseaudio] module.c: Loaded "module-alsa-sink" (index: #24; argument: "device=stereo_automix_lfe sink_properties=device.description=BuiltinWithSub").
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC0 is accessible: yes
D: [pulseaudio] module-udev-detect.c: Resuming all sinks and sources of card alsa_card.pci-0000_00_1b.0.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
D: [alsa-sink-ALC3229 Analog] alsa-sink.c: Cutting sleep time for the initial iterations by half.
I: [pulseaudio] client.c: Freed 3 "pactl"
I: [pulseaudio] protocol-native.c: Connection died.
I: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.stereo_automix_lfe idle for too long, suspending ...
D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.stereo_automix_lfe is 0x0004, suspending
I: [alsa-sink-ALC3229 Analog] alsa-sink.c: Device suspended...

However when I select this sink in PulseAudio mixer and attempt to play music, nothing is played. Moreover when I test with Google Play Music running in my Chromium even the playback position does not move, which probably means that the audio isn't consumed. The playback continues as soon as i switch to a normal sink. Here's what I see in the log:

I: [pulseaudio] module-stream-restore.c: Restoring device for stream sink-input-by-application-name:Chromium.
D: [pulseaudio] module-intended-roles.c: Not setting device for stream Playback, because already set.
D: [pulseaudio] sink-input.c: Negotiated format: pcm, format.sample_format = "\"float32le\""  format.rate = "44100"  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
I: [pulseaudio] sink-input.c: Trying to change sample rate
I: [pulseaudio] sink-input.c: Rate changed to 44100 Hz
I: [pulseaudio] module-stream-restore.c: Restoring mute state for sink input sink-input-by-application-name:Chromium.
D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.stereo_automix_lfe becomes busy, resuming.
D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.stereo_automix_lfe is 0x0000, resuming
I: [alsa-sink-ALC3229 Analog] alsa-sink.c: Trying resume...
I: [alsa-sink-ALC3229 Analog] (alsa-lib)pcm_params.c: Slave PCM not usable
D: [alsa-sink-ALC3229 Analog] alsa-util.c: snd_pcm_hw_params_any() failed: Invalid argument
E: [alsa-sink-ALC3229 Analog] alsa-sink.c: Failed to set hardware parameters: Invalid argument
D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.stereo_automix_lfe becomes idle, timeout in 5 seconds.
I: [pulseaudio] resampler.c: Forcing resampler 'copy', because of fixed, identical sample rates.
D: [pulseaudio] resampler.c: Resampler:
D: [pulseaudio] resampler.c:   rate 44100 -> 44100 (method copy)
D: [pulseaudio] resampler.c:   format float32le -> s16le (intermediate s16le)
D: [pulseaudio] resampler.c:   channels 2 -> 3 (resampling 2)
D: [pulseaudio] resampler.c: Channel matrix:
D: [pulseaudio] resampler.c:        I00   I01 
D: [pulseaudio] resampler.c:     +------------
D: [pulseaudio] resampler.c: O00 | 1.000 0.000
D: [pulseaudio] resampler.c: O01 | 0.000 1.000
D: [pulseaudio] resampler.c: O02 | 0.000 0.000
I: [pulseaudio] remap.c: Using generic matrix remapping
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=6, prebuf=0, minreq=1 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554436, tlength=33554436, base=6, prebuf=0, minreq=6 maxrewind=0
I: [pulseaudio] sink-input.c: Created input 0 "Playback" on alsa_output.stereo_automix_lfe with sample spec float32le 2ch 44100Hz and channel map front-left,front-right
I: [pulseaudio] sink-input.c:     application.icon_name = "chromium-browser"
I: [pulseaudio] sink-input.c:     media.name = "Playback"
I: [pulseaudio] sink-input.c:     application.name = "Chromium"
I: [pulseaudio] sink-input.c:     native-protocol.peer = "UNIX socket client"
I: [pulseaudio] sink-input.c:     native-protocol.version = "32"
I: [pulseaudio] sink-input.c:     application.process.id = "1115"
I: [pulseaudio] sink-input.c:     application.process.user = "snake"
I: [pulseaudio] sink-input.c:     application.process.host = "arch"
I: [pulseaudio] sink-input.c:     application.process.binary = "chromium"
I: [pulseaudio] sink-input.c:     window.x11.display = ":0"
I: [pulseaudio] sink-input.c:     application.language = "en_US.utf8"
I: [pulseaudio] sink-input.c:     application.process.machine_id = "4b2a05faed5c4fccb247b438ede2ec36"
I: [pulseaudio] sink-input.c:     application.process.session_id = "c2"
I: [pulseaudio] sink-input.c:     module-stream-restore.id = "sink-input-by-application-name:Chromium"
I: [pulseaudio] protocol-native.c: Requested tlength=69.66 ms, minreq=11.61 ms
D: [pulseaudio] protocol-native.c: Adjust latency mode enabled, configuring sink latency to half of overall latency.
D: [pulseaudio] protocol-native.c: Requested latency=23.22 ms, Received latency=23.22 ms
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=4194304, tlength=16384, base=8, prebuf=12296, minreq=4096 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=4194304, tlength=16384, base=8, prebuf=12296, minreq=4096 maxrewind=0
I: [pulseaudio] protocol-native.c: Final latency 69.66 ms = 23.22 ms + 2*11.61 ms + 23.22 ms
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC0 is accessible: yes
D: [pulseaudio] module-udev-detect.c: Resuming all sinks and sources of card alsa_card.pci-0000_00_1b.0.
D: [alsa-sink-ALC3229 Analog] protocol-native.c: Requesting rewind due to end of underrun.
D: [alsa-sink-ALC3229 Analog] protocol-native.c: Requesting rewind due to end of underrun.
D: [alsa-sink-ALC3229 Analog] sink-input.c: Requesting rewind due to uncorking
D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.stereo_automix_lfe becomes busy, resuming.
D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.stereo_automix_lfe is 0x0000, resuming
I: [alsa-sink-ALC3229 Analog] alsa-sink.c: Trying resume...
I: [alsa-sink-ALC3229 Analog] (alsa-lib)pcm_params.c: Slave PCM not usable
D: [alsa-sink-ALC3229 Analog] alsa-util.c: snd_pcm_hw_params_any() failed: Invalid argument
E: [alsa-sink-ALC3229 Analog] alsa-sink.c: Failed to set hardware parameters: Invalid argument
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC0 is accessible: yes
D: [pulseaudio] module-udev-detect.c: Resuming all sinks and sources of card alsa_card.pci-0000_00_1b.0.

Interestingly if I bypass the lowpass filter in my Alsa configuration the stereo_automix_lfe sink starts working correctly. But of course the subwoofer signal is not filtered and therefore isn't very useful.

Is this a Pulse bug? Or did I misconfigure something? Why LADSPA filters cause the whole system to hang? Any help would be appreciated.

Last edited by snake.scaly (2017-05-14 10:40:52)

Offline

#2 2017-05-14 10:17:12

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 21,678

Re: [SOLVED] PulseAudio hangs when a low-pass LADSPA plugin is used

All of this feels incredibly overengineered. You can tell pulseaudio - without any other configuration for the sinks or the need for a seperate LADSPA plugin - where the frequency cutoff for the LFE channel is in your daemon.conf by setting these two options

enable-lfe-remixing = yes
lfe-crossover-freq = 120

and making sure you have selected a surround audio profile for the card, like the 2.1 profile mentioned in the article

Have you tried those already, and/or do they not give you the desired result?

Offline

#3 2017-05-14 10:40:06

snake.scaly
Member
Registered: 2017-05-03
Posts: 6

Re: [SOLVED] PulseAudio hangs when a low-pass LADSPA plugin is used

V1del wrote:

You can tell pulseaudio - without any other configuration for the sinks or the need for a seperate LADSPA plugin - where the frequency cutoff for the LFE channel is in your daemon.conf by setting these two options

enable-lfe-remixing = yes
lfe-crossover-freq = 120

I didn't try that, because I didn't know! All the searches I did on the subject ended up with elaborate Pulse/Alsa configurations. Your solution works perfectly, thank you!

For the record, for my Asus laptop I like 250 Hz cutoff the best. This is not scientific, just what sounds better to me.

One upside is that now I'm pretty fluent in Alsa configuration, and have a much better understanding of HDA in general. big_smile

Note to those following this advise: for the LFE remixing to work you must use pavucontrol to select a 2.1 or 5.1 profile for Built-in Audio on the Configuration tab. For me this profile is currently "Analog Surround 2.1 Output + Analog Stereo Input". The "+ Analog Stereo Input" part is important because if you select a profile without "Input" or "Duplex" in it you won't be able to use your microphone.

Last edited by snake.scaly (2017-05-17 19:24:47)

Offline

Board footer

Powered by FluxBB