PulseAudio with equalizer very buggy

Hello!
I am using PulseAudio with the Equalizer on (pulseaudio-equalizer-ladspa), but everytime I play something, happens a lag of 1~2 seconds. On YouTube, for example, the video freezes for 1~2 seconds until the audio start.
This happen to Spotify and VLC too. Only happens when I am using the equalizer.
The pulseaudio process have high priority.
There is any way to reduce this lag?
Using pulseaudio, GNOME, X11, 5.15 Kernel, system up-to-date.

From your description I suspect you are using pulseaudio-equalizer that has never been very good and PulseAudio developers have no interest in fixing it
Please fix PulseAudio equalizer (#515) · Issues · PulseAudio / pulseaudio · GitLab
I suggest you try replacing it with pulseaudio-equalizer-ladspa that usually works much better

The problem is: I am already using pulseaudio-equalizer-ladspa. I don’t have pulseaudio-equalizer installed here.
That was my fault, I should specified that…

I’ve been having problems with pulseaudio and pulseaudio equalizer too. I decided to just bite the bullet and switch to pipewire with easyeffects. It works much better, and if you use the manjaro-pipewire package, the transition is pretty much flawless

Adding audio processing to the audio pipeline will add some latency, but one equalizer should not be adding 1 or 2 second delay
I suspect audio delay issues may be affecting more than just the equalizer and some of the latency is from other PulseAudio modules, but is not noticeable until equalizer is added

Check information about PulseAudio configuration for all audio cards and output sinks

pactl list sinks | grep -E 'Name|Latency' 

Multiple effects packages (pulseffects-legacy or jamesdsp-pulse) could add more latency if a lot of the effects are turned on, but if just an equalizer is used it might have less latency than the LADSPA equalizer

For this system, audio card has about 0.25s latency and 0.25s from LADSPA

Name: alsa_output.pci-0000_04_06.0.analog-stereo
 Latency: 255500 usec, configured 256000 usec
Name: ladspa_output.mbeq_1197.mbeq
 Latency: 256014 usec, configured 256000 usec

JamesDSP graphic equalizer is showing about 0.09s latency

Name: JamesDSP
 Latency: 9279 usec, configured 10000 usec

I am considering switch to pipewire. I have to just uninstall pulseaudio and that’s it? My system already have pipewire installed, but it’s running on pulseaudio.

That’s why I am thinking too.

That command didn’t work for me…
Am I doing something wrong? I just copied and paste on terminal.

Try the command without the grep filter

pactl list sinks

The command should work for PulseAudio or PipeWire

I am considering switch to pipewire. I have to just uninstall pulseaudio and that’s it?

If you try to uninstall PulseAudio, the package manager is likely to remove desktop audio controls needed for PipeWire
The metapackage manjaro-pipewire can replace PulseAudio packages with PipeWire packages without removing audio controls

The output:

Destino #2
	Estado: RUNNING
	Nome: alsa_output.pci-0000_0a_00.3.analog-stereo
	Descrição: Family 17h (Models 00h-0fh) HD Audio Controller Estéreo analógico
	Driver: module-alsa-card.c
	Especificação da amostragem: s16le 2ch 44100Hz
	Mapa dos canais: front-left,front-right
	Módulo proprietário: 26
	Mudo: não
	Volume: front-left: 30801 /  47% / -19,67 dB,   front-right: 30801 /  47% / -19,67 dB
	        balanço 0,00
	Volume base: 65536 / 100% / 0,00 dB
	Fonte de monitoração: alsa_output.pci-0000_0a_00.3.analog-stereo.monitor
	Latência: 616054 useg, 980000 useg configurado
	Sinalizadores: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Propriedades:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ALC887-VD Analog"
		alsa.id = "ALC887-VD Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "1"
		alsa.card_name = "HD-Audio Generic"
		alsa.long_card_name = "HD-Audio Generic at 0xf6700000 irq 81"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:0a:00.3"
		sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:0a:00.3/sound/card1"
		device.bus = "pci"
		device.vendor.id = "1022"
		device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
		device.product.id = "1457"
		device.product.name = "Family 17h (Models 00h-0fh) HD Audio Controller"
		device.string = "front:1"
		device.buffering.buffer_size = "352768"
		device.buffering.fragment_size = "176384"
		device.access_mode = "mmap+timer"
		device.profile.name = "analog-stereo"
		device.profile.description = "Estéreo analógico"
		device.description = "Family 17h (Models 00h-0fh) HD Audio Controller Estéreo analógico"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Portas:
		analog-output-lineout: Line Out (tipo: Linha, prioridade: 9000, não disponível)
		analog-output-headphones: Headphones (tipo: Fones de ouvido, prioridade: 9900, disponível)
	Porta ativa: analog-output-headphones
	Formatos:
		pcm

Destino #3
	Estado: SUSPENDED
	Nome: alsa_output.pci-0000_08_00.1.hdmi-stereo-extra1
	Descrição: GP107GL High Definition Audio Controller Digital Stereo (HDMI 2)
	Driver: module-alsa-card.c
	Especificação da amostragem: s16le 2ch 44100Hz
	Mapa dos canais: front-left,front-right
	Módulo proprietário: 25
	Mudo: não
	Volume: front-left: 29212 /  45% / -21,06 dB,   front-right: 29212 /  45% / -21,06 dB
	        balanço 0,00
	Volume base: 65536 / 100% / 0,00 dB
	Fonte de monitoração: alsa_output.pci-0000_08_00.1.hdmi-stereo-extra1.monitor
	Latência: 0 useg, 0 useg configurado
	Sinalizadores: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
	Propriedades:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "LG ULTRAWIDE"
		alsa.id = "HDMI 1"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "7"
		alsa.card = "0"
		alsa.card_name = "HDA NVidia"
		alsa.long_card_name = "HDA NVidia at 0xf6080000 irq 79"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:08:00.1"
		sysfs.path = "/devices/pci0000:00/0000:00:03.1/0000:08:00.1/sound/card0"
		device.bus = "pci"
		device.vendor.id = "10de"
		device.vendor.name = "NVIDIA Corporation"
		device.product.id = "0fb9"
		device.product.name = "GP107GL High Definition Audio Controller"
		device.string = "hdmi:0,1"
		device.buffering.buffer_size = "352768"
		device.buffering.fragment_size = "176384"
		device.access_mode = "mmap+timer"
		device.profile.name = "hdmi-stereo-extra1"
		device.profile.description = "Digital Stereo (HDMI 2)"
		device.description = "GP107GL High Definition Audio Controller Digital Stereo (HDMI 2)"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Portas:
		hdmi-output-1: HDMI / DisplayPort 2 (tipo: HDMI, prioridade: 5800, disponível)
	Porta ativa: hdmi-output-1
	Formatos:
		pcm

Destino #4
	Estado: RUNNING
	Nome: ladspa_output.mbeq_1197.mbeq
	Descrição: LADSPA Plugin Multiband EQ on Family 17h (Models 00h-0fh) HD Audio Controller Estéreo analógico
	Driver: module-ladspa-sink.c
	Especificação da amostragem: float32le 2ch 44100Hz
	Mapa dos canais: front-left,front-right
	Módulo proprietário: 31
	Mudo: não
	Volume: front-left: 30801 /  47%,   front-right: 30801 /  47%
	        balanço 0,00
	Volume base: 65536 / 100%
	Fonte de monitoração: ladspa_output.mbeq_1197.mbeq.monitor
	Latência: 615979 useg, 980000 useg configurado
	Sinalizadores: HW_MUTE_CTRL LATENCY 
	Propriedades:
		device.master_device = "alsa_output.pci-0000_0a_00.3.analog-stereo"
		device.class = "filter"
		device.ladspa.module = "mbeq_1197"
		device.ladspa.label = "mbeq"
		device.ladspa.name = "Multiband EQ"
		device.ladspa.maker = "Steve Harris <steve@plugin.org.uk>"
		device.ladspa.copyright = "GPL"
		device.ladspa.unique_id = "1197"
		device.description = "LADSPA Plugin Multiband EQ on Family 17h (Models 00h-0fh) HD Audio Controller Estéreo analógico"
		device.icon_name = "audio-card"
	Formatos:
		pcm

It’s in portuguese, but I believe that you can understand.
If you have any doubt, I can translate.
The latency on LADSPA is:

615979 useg, 980000 useg configurado

It’s quite high, no? Can I change this?

Any news about fix this?
I am really considering give up using PulseAudio Equalizer…

I have been testing jamesdsp-pulse for the last few days and it has much lower latency than pulseaudio-equalizer-ladspa
I would expect jamesdsp-pulse on your system would reduce combined latency from 1200ms to 800 ms or lower

There are lots of other options for lower latency but not as simple as this

This change will at least give an indication of what level of latency would be suitable for your needs

grep filter in Portuguese should work for you to check latency

pactl list sinks | grep -E 'Nome|Latência'

Changing PulseAudio configuration to reduce latency might reduce latency further, but not as much as changing the equalizer

Hello! Here I Am again.
I installed jamesdsp-pulse but when I selected it, no sound on P2 port. Running pactl list sinks | grep -E 'Nome|Latência' returns:

    ~  pactl list sinks | grep -E 'Nome|Latência'                       ✔ 
	Nome: alsa_output.pci-0000_0a_00.3.analog-stereo
	Latência: 0 useg, 0 useg configurado
	Nome: alsa_output.pci-0000_08_00.1.hdmi-stereo-extra1
	Latência: 0 useg, 0 useg configurado
	Nome: JamesDSP
	Latência: 0 useg, 0 useg configurado

How to use it on P2 port?

JamesDSP should redirect audio streams through the equalizer automatically when is is launched
If not use this command to set JamesDSP as default sink for audio playback

pacmd set-default-sink JamesDSP

Audio streams can also be routed manually in PulseAudio Volume Control (pavucontrol --tab=1)
to play via JamesDSP or direct to analog or HDMI output

Audio output from JamesDSP can also be directed to analog or HDMI output
(If nothing is audible check that output from JamesDSP is not set to JamesDSP input)

JamesDSP


The latency data in post #5 was based on default PulseAudio configuration

The latency for the alsa-output sinks can be reduced with some reconfiguration, but latency for JamesDSP remains the same

Name: alsa_output.pci-0000_04_06.0.analog-stereo
 Latency: 19755 usec, configured 20000 usec

Name: JamesDSP
 Latency: 9714 usec, configured 10000 usec

Latency reported for JamesDSP varies between 5-10 ms during audio playback

After following your instructions, I run pactl list sinks | grep -E 'Nome|Latência' again and the result is:

	Nome: alsa_output.pci-0000_0a_00.3.analog-stereo
	Latência: 0 useg, 0 useg configurado
	Nome: ladspa_output.mbeq_1197.mbeq
	Latência: 0 useg, 0 useg configurado
	Nome: alsa_output.pci-0000_08_00.1.hdmi-stereo-extra1
	Latência: 0 useg, 0 useg configurado
	Nome: JamesDSP
	Latência: 0 useg, 0 useg configurado

I downloaded pavucontrol-qt and fixed the output, and now JamesDSP it’s working.
But, when I change the equalizer, I can’t hear much difference. Maybe I am doing something wrong?
Captura de tela de 2022-11-18 14-12-23


(The “Bass profile” it’s just to test)

Turn off the Passthrough option. That is to bypass all effects to hear unprocessed audio

1 Like

It worked!
I liked that. Only problem: my MIC stay active all the time. But it’s a good start. Maybe I change to PipeWire in the future. For now, I am happy with JamesDSP

UPDATE: I give up JamesDSP. On every boot I need to open PavuControl to set JamesDSP output on P2 port. So, for now I am not using any equalizer

I do not understand what “P2” port is exactly

Does the Line Out port always show as (unplugged) in pavucontrol --tab=3 ?
or does it change to show if audio jack is detected as (plugged in) ?

Data in post #8 shows the Active Port (Porta ativa:) analog-output-headphones is available (disponível)
But the other port analog-output-lineout is not available (não disponível)

If lineout port is not available even if a jack is plugged in I would expect PulseAudio to avoid using the port and only connect to available headphone port

It might be possible for user to command PulseAudio to use lineout port

pactl set sink port alsa_output.pci-0000_0a_00.3.analog-stereo analog-output-lineout

but PulseAudio will switch back to another port that is available
(or unknown availability if jack detection is not present or disabled)

ALSA can be reconfigured to either fix the jack detection for lineout port so it is available in PulseAudio when a jack is plugged in.
Or disable jack detection so availability is unknown

ALSA reconfiguration might be simply a matter of changing ‘Auto-Mute Mode’ to Disabled
(so lineout jack is not disabled when headphones are plugged in)

use this command to ensure Auto-Mute is disabled

amixer --card=1 sset 'Auto-Mute Mode'

Thanks! P2 it’s the headphones, basically.
This Line Out it’s from Digital Output.

I have some updates: I installed manjaro-pipewire yesterday, and everything is okay.
I tried EasyEffects, but the equalizer need the “Linux Studio Plugins” installed on the system. I installed that (lsp-plugins) but it installed several icons on applications menu, and the equalizer didn’t worked. But, I am liking PipeWire, seems more optimized.
Any tip for EasyEffects? Or I can keep trying JamesDSP?

If ‘P2’ is the headphone output analog-output-headphones
and ‘Line Out’ is the digital output hdmi-stereo-extra1,
the simplest way to move audio streams from HDMI to Headphone output would be to change the Profile for GP107GL High Definition Audio Controller to Off in pavucontrol --tab=5

lsp-plugins is a large collection of audio processing plugins that creates 131 .desktop launchers, to allow use of the plugins in standalone mode without a host package (easyeffects, carla, jack_rack)
The solution of having only one launcher for all plugins keeps getting pushed back to a later version Single launcher · Issue #195 · sadko4u/lsp-plugins · GitHub

jamesdsp-pulse and jamesdsp do not require any external plugins

1 Like

Hello, sorry for not responding. Busy here, and I was doing some testes.
For the last 10 days I running on PipeWire, everything ok.
I tried JamesDSP again, but I had the same problem. Now, since I am using PipeWire and not PulseAudio, how to correctly setup the audio output without pavucontrol? It is possible?
Thanks!