Hi.
I'm hoping somebody can point me into the right direction. Everything I try, any settings-change doesn't show any change on reaper-side. I always end up having 11ms of latency. In contrast: When running ardour, I get 1,7ms out of the box. Since I'm out of ideas right now, I decided to ask here in the forum, hoping someone can assist me.
Would be a dream to finally switch from Windooze to Arch also for audio-stuff
If I missed some information, just let me know.
Reaper - Settings
- Audio System: Jack
- 48kHz 24Bit Wav
- 2/2ch 64 spls ~ 11/11ms JACK
Hardware
- Behringer UMC 204 HD
OS
- Archlinux
Kernel
Code: Select all
uname -a
Linux TH3M4CH1N3 6.5.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 10 Oct 2023 21:10:21 +0000 x86_64 GNU/Linux
Inxi
Code: Select all
inxi -Aa
Audio:
Device-1: AMD Renoir Radeon High Definition Audio driver: snd_hda_intel
v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 link-max: gen: 4
speed: 16 GT/s bus-ID: 05:00.1 chip-ID: 1002:1637 class-ID: 0403
Device-2: AMD ACP/ACP3X/ACP6x Audio Coprocessor vendor: Hewlett-Packard
driver: N/A pcie: gen: 3 speed: 8 GT/s lanes: 16 link-max: gen: 4
speed: 16 GT/s bus-ID: 05:00.5 chip-ID: 1022:15e2 class-ID: 0480
Device-3: AMD Family 17h/19h HD Audio vendor: Hewlett-Packard
driver: snd_hda_intel v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16
link-max: gen: 4 speed: 16 GT/s bus-ID: 05:00.6 chip-ID: 1022:15e3
class-ID: 0403
Device-4: BEHRINGER GmbH UMC204HD 192k driver: snd-usb-audio type: USB
rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-1.1.2:44
chip-ID: 1397:0508 class-ID: fe01
API: ALSA v: k6.5.7-arch1-1 status: kernel-api
tools: alsactl,alsamixer,amixer
Server-1: PipeWire v: 0.3.83 status: n/a (root, process) with:
1: pipewire-pulse status: active 2: wireplumber status: active 3: pw-jack
type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Packages
Code: Select all
pacman -Ss pipewire | grep installed
extra/gst-plugin-pipewire 1:0.3.83-1 [installed]
extra/libpipewire 1:0.3.83-1 [installed]
extra/libwireplumber 0.4.15-1 [installed]
extra/pipewire 1:0.3.83-1 [installed]
extra/pipewire-audio 1:0.3.83-1 [installed]
extra/pipewire-docs 1:0.3.83-1 [installed]
extra/pipewire-jack 1:0.3.83-1 [installed]
extra/pipewire-pulse 1:0.3.83-1 [installed]
extra/qemu-audio-pipewire 8.1.2-1 [installed]
extra/qpwgraph 0.5.3-1 (pro-audio) [installed]
extra/wireplumber 0.4.15-1 [installed]
Versions
Code: Select all
pipewire --version
Compiled with libpipewire 0.3.83
Linked with libpipewire 0.3.83
wireplumber --version
Compiled with libwireplumber 0.4.15
Linked with libwireplumber 0.4.15
Reaper Version
Code: Select all
pacman -Qi reaper
Name : reaper
Version : 7.001-1
Description : A complete digital audio production application for computers
Architecture : x86_64
URL : https://reaper.fm
Licenses : custom
Groups : pro-audio
Provides : clap-host lv2-host vst-host vst3-host
Depends On : aribb24 alsa-lib libasound.so=2-64 fontconfig gcc-libs glibc hicolor-icon-theme libglvnd libx11 libxi
Optional Deps : ffmpeg4.4: for video rendering [installed]
jack: for JACK support [installed]
pulseaudio: for PulseAudio support [installed]
python: for Python plugins [installed]
reapack: for managing reaper plugins
sws: for the SWS/S&M plugin extension
Required By : adlplug-lv2 aida-x-lv2 ambix-lv2 avldrums.lv2 blop.lv2 bshapr cardinal-lv2 distrho-ports-lv2 distrho-ports-vst
drumgizmo-lv2 eteroj.lv2 fomp.lv2 geonkick-lv2 gxplugins.lv2 helm-synth-lv2 infamousplugins ir.lv2 liquidsfz-lv2
ninjas2-lv2 noise-repellent ob-xd-lv2 odin2-synthesizer-lv2 padthv1-lv2 qmidiarp-lv2 rubberband-lv2 samplv1-lv2
spectmorph-lv2 surge-xt-lv2 wolf-shaper-lv2 x42-plugins-lv2 yoshimi-lv2 zam-plugins-lv2
Optional For : linuxsampler
Conflicts With : None
Replaces : None
Installed Size : 116,58 MiB
Packager : David Runge <dvzrv@archlinux.org>
Build Date : Mi 18 Okt 2023 07:30:19 CEST
Install Date : Mi 18 Okt 2023 12:16:17 CEST
Install Reason : Explicitly installed
Install Script : No
Validated By : Signature
Directory Permissions /etc/pipewire directory
Code: Select all
-rw-r----- 1 root root 2673 27. Okt 20:48 client.conf
drwxr-x--- 2 root root 4096 27. Okt 20:48 client.conf.avail
-rw-r----- 1 root root 4154 27. Okt 20:48 client-rt.conf
drwxr-x--- 2 root root 4096 27. Okt 20:48 client-rt.conf.avail
drwxr-x--- 2 root root 4096 27. Okt 20:48 filter-chain
-rw-r----- 1 root root 1926 27. Okt 20:48 filter-chain.conf
-rw-r----- 1 root root 4238 27. Okt 20:48 jack.conf
drwxr-x--- 2 root root 4096 27. Okt 20:48 media-session.d
-rw-r----- 1 root root 13292 27. Okt 20:48 minimal.conf
-rw-r----- 1 root root 4178 27. Okt 20:48 pipewire-aes67.conf
-rw-r----- 1 root root 2033 27. Okt 20:48 pipewire-avb.conf
-rw-r----- 1 root root 12011 27. Okt 20:48 pipewire.conf
drwxr-x--- 2 root root 4096 27. Okt 20:48 pipewire.conf.avail
-rw-r----- 1 root root 6031 27. Okt 20:48 pipewire-pulse.conf
drwxr-x--- 2 root root 4096 27. Okt 20:48 pipewire-pulse.conf.avail
Groups & Users
Code: Select all
id
uid=1000(my_username) gid=984(users) groups=984(users),108(vboxusers),955(realtime),996(audio),998(wheel)
grep audio /etc/group /etc/passwd
audio:x:996:brltty,my_username
Limits
Code: Select all
/etc/security/limits.d/audio-rt.conf
### Test
@audio hard rtprio 95
@audio soft rtprio 95
@audio hard memlock unlimited
@audio soft memlock unlimited
@audio soft nofile 802442
@audio hard nofile 802442
@realtime hard rtprio 95
@realtime soft rtprio 95
@realtime hard memlock unlimited
@realtime soft memlock unlimited
@realtime soft nofile 802442
@realtime hard nofile 802442
My jack.conf
Code: Select all
grep -v "#" /etc/pipewire/jack.conf
context.properties = {
log.level = 0
}
context.spa-libs = {
support.* = support/libspa-support
}
context.modules = [
{ name = libpipewire-module-rt
args = {
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-metadata }
]
jack.properties = {
node.latency = 64/48000
node.rate = 1/48000
node.quantum = 64/48000
node.lock-quantum = true
}
jack.rules = [
{ matches = [
{
}
]
actions = {
update-props = {
node.latency = 64/48000
}
}
}
{ matches = [ { application.process.binary = "jack_bufsize" } ]
actions = {
update-props = {
}
}
}
{ matches = [ { application.process.binary = "qsynth" } ]
actions = {
update-props = {
}
}
}
{ matches = [ { client.name = "Mixxx" } ]
actions = {
update-props = {
jack.merge-monitor = false
}
}
}
]
My Pipewire Conf
Code: Select all
grep -v "#" /etc/pipewire/pipewire.conf
context.properties = {
default.clock.rate = 48000
default.clock.quantum = 64
vm.overrides = {
default.clock.min-quantum = 1024
}
module.x11.bell = true
module.access = true
}
context.spa-libs = {
audio.convert.* = audioconvert/libspa-audioconvert
avb.* = avb/libspa-avb
api.alsa.* = alsa/libspa-alsa
api.v4l2.* = v4l2/libspa-v4l2
api.libcamera.* = libcamera/libspa-libcamera
api.bluez5.* = bluez5/libspa-bluez5
api.vulkan.* = vulkan/libspa-vulkan
api.jack.* = jack/libspa-jack
support.* = support/libspa-support
}
context.modules = [
{ name = libpipewire-module-rt
args = {
nice.level = -11
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-profiler }
{ name = libpipewire-module-metadata }
{ name = libpipewire-module-spa-device-factory }
{ name = libpipewire-module-spa-node-factory }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-client-device }
{ name = libpipewire-module-portal
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-access
args = {
}
condition = [ { module.access = true } ]
}
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-link-factory }
{ name = libpipewire-module-session-manager }
{ name = libpipewire-module-x11-bell
args = {
}
flags = [ ifexists nofail ]
condition = [ { module.x11.bell = true } ]
}
]
context.objects = [
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Dummy-Driver
node.group = pipewire.dummy
priority.driver = 20000
}
}
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Freewheel-Driver
priority.driver = 19000
node.group = pipewire.freewheel
node.freewheel = true
}
}
]
context.exec = [
]