You are not logged in.

#1 2022-02-13 10:51:24

neerkoli
Member
Registered: 2022-02-09
Posts: 15

[SOLVED]Audio crackling issue while changing volume inside application

I'm using PulseAudio and while changing volume in an application (eg., YouTube volume control) I can hear the crackling sound. The issue is also there (even when not adjusting volume) very randomly while playing some steam games but the frequency is very rare. Otherwise the audio in the system is pretty stable. I checked the troubleshooting methods mentioned here:

https://wiki.archlinux.org/title/PulseA … _crackling

There was no tsched value in my /etc/pulse/default.pa file, and I checked with both tsched=0 and tsched=1 in load-module module-udev-detect line.

I also created /etc/modprobe.d/sound.conf file and added the line options snd-hda-intel vid=8086 pid=8ca0 snoop=0 in it.

I also tried this method mentioned in AskUbuntu: https://askubuntu.com/a/1247667/350575 and edited the /etc/pulse/daemon.conf file. The default-sample-rate was already 44100 and I changed the value of  avoid-resampling from false to true.

None of the above tweaks fixed the issue. Any idea what the actual cause might be?

Will these logs help?

pactl list short sinks
------
0	alsa_output.pci-0000_00_1f.3.analog-stereo	module-alsa-card.c	s16le 2ch 44100Hz	SUSPENDED
1	ladspa_output.mbeq_1197.mbeq	module-ladspa-sink.c	float32le 2ch 44100Hz	SUSPENDED
lspci -k
------
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
	Subsystem: ASUSTeK Computer Inc. Device 11c0
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel, snd_soc_skl
/etc/pulse/daemon.conf
------
# 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, see <http://www.gnu.org/licenses/>.

## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; enable-memfd = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no

; high-priority = yes
; nice-level = -11

; realtime-scheduling = yes
; realtime-priority = 5

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

; resample-method = speex-float-1
; avoid-resampling = false
; enable-remixing = yes
; remixing-use-all-sink-channels = yes
; remixing-produce-lfe = no
; remixing-consume-lfe = no
; lfe-crossover-freq = 0

; flat-volumes = no

; rescue-streams = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right

; default-fragments = 4
; default-fragment-size-msec = 25

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0
/etc/pulse/default.pa
------
#!/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, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)

.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
load-module module-dbus-protocol
.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-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 GSettings. 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-gsettings.so
.nofail
load-module module-gsettings
.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

### 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

### Make some devices default
#set-default-sink output
#set-default-source input

### Allow including a default.pa.d directory, which if present, can be used
### for additional configuration snippets.
.nofail
.include /etc/pulse/default.pa.d

Last edited by neerkoli (2022-02-16 15:11:33)

Offline

#2 2022-02-13 11:18:21

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 23,944

Re: [SOLVED]Audio crackling issue while changing volume inside application

None of these tweaks have much effect on an already established stream and I'd generally recommend you revert all of them, and all the card related ones definitely won't have if e.g. the control of the audio output as a whole works properly (so if you can adjust the volume inside a pulse mixer for the card itself then the card is from a "tsched" perspective not really affected)  You have a ladspa sink/equalizer, are the problematic cases playing from that and does the issue fix itself if you move the streams to the actual card? That's always a layer of additional work that can lead to issues with volume changes.

FWIW explicitly youtube, and more specifically firefox has a very weird integration logic with pulseaudio, so I'd be somewhat weary on making assumptions based on that, if you do use firefox for that matter can you reproduce this on chromium/other blink based browsers?

Crackles during initial start of a game can be somewhat normal as buffers/latencies get recalculated, but at least here they usually fix themselves quickly.

Technically from a pulse perspective the most interesting knobs are

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0

in your daemon.conf, where you could try to increase the margins/generally play with the values.

Since you did ask recently, this might be a case where you'd want to check how pipewire behaves in comparison to pulse.

Last edited by V1del (2022-02-13 11:22:34)

Offline

#3 2022-02-13 13:31:05

neerkoli
Member
Registered: 2022-02-09
Posts: 15

Re: [SOLVED]Audio crackling issue while changing volume inside application

You were right, this is a FireFox/YouTube issue. I checked in SoundCloud and it is working good. I also installed Chromium and YouTube does not have the issue. However, in pavucontrol when I adjust the volume of ladspa sink, audio crackles everywhere. But the default card does not have this issue. I guess this is expected for the equalizer as user won't adjust that volume all the time.

I reverted all the changes I made before.

Technically from a pulse perspective the most interesting knobs are

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0

in your daemon.conf, where you could try to increase the margins/generally play with the values.

I'll play with these anyway for the Firefox issue and will update if I find anything good.

Last edited by neerkoli (2022-02-13 13:37:33)

Offline

#4 2022-02-13 14:13:24

LinX
Member
Registered: 2012-11-20
Posts: 10

Re: [SOLVED]Audio crackling issue while changing volume inside application

I had the same issue with Firefox and YouTube, but then I moved to Pipewire and it solves the issue. Also installed pipewire-pulse and wireplumber.

Offline

#5 2022-02-14 05:33:18

neerkoli
Member
Registered: 2022-02-09
Posts: 15

Re: [SOLVED]Audio crackling issue while changing volume inside application

LinX wrote:

I had the same issue with Firefox and YouTube, but then I moved to Pipewire and it solves the issue. Also installed pipewire-pulse and wireplumber.

How's pipewire working for you so far? Was it stable?

Offline

#6 2022-02-14 10:42:54

LinX
Member
Registered: 2012-11-20
Posts: 10

Re: [SOLVED]Audio crackling issue while changing volume inside application

neerkoli wrote:
LinX wrote:

I had the same issue with Firefox and YouTube, but then I moved to Pipewire and it solves the issue. Also installed pipewire-pulse and wireplumber.

How's pipewire working for you so far? Was it stable?

Only one issue I have with Pipewire - after launch Audacity microphone stop working and only reboot can fix it. Other than that, everything works great.

Offline

#7 2022-02-16 15:11:03

neerkoli
Member
Registered: 2022-02-09
Posts: 15

Re: [SOLVED]Audio crackling issue while changing volume inside application

LinX wrote:

Only one issue I have with Pipewire - after launch Audacity microphone stop working and only reboot can fix it. Other than that, everything works great.

Gaining some courage from your experience, I finally installed PipeWire alongside PulseAudio and man, now it feels like heaven! PipeWire+EasyEffects+AutoEq = better than anything I've ever tried on Windows! It's been 2 days with it and no problems so far. Crackling issue is also resolved.

V1del wrote:

Since you did ask recently, this might be a case where you'd want to check how pipewire behaves in comparison to pulse.

The issue is not observed in PipeWire+Firefox+YouTube and also in Steam games. Thanks for the tip!

Last edited by neerkoli (2022-02-16 15:19:27)

Offline

#8 2022-02-16 16:18:11

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 23,944

Re: [SOLVED]Audio crackling issue while changing volume inside application

FWIW afaik the main reason you don't see it in Firefox because pipewire has a blacklist to explicitly ignore any attempts at actually controlling the pipewire/pulse stream firefox tries to do, because firefox's implementation is so strange.

But maybe I'm going to give pipewire another shot, last time I tried it broke mic support completely but it's likely this was fixed by now.

Offline

#9 2022-02-16 16:51:55

neerkoli
Member
Registered: 2022-02-09
Posts: 15

Re: [SOLVED]Audio crackling issue while changing volume inside application

V1del wrote:

FWIW afaik the main reason you don't see it in Firefox because pipewire has a blacklist to explicitly ignore any attempts at actually controlling the pipewire/pulse stream firefox tries to do, because firefox's implementation is so strange.

But maybe I'm going to give pipewire another shot, last time I tried it broke mic support completely but it's likely this was fixed by now.

I think you should give it a try. I didn't find any issues with sound or mic so far. Just note that my sound system is a wired earbuds with in-built mic setup, not some professional audio system big_smile

Offline

Board footer

Powered by FluxBB