Fragen zu "pipewire" und "Puffergröße" Einstellungen

larska

Captain
Registriert
Dez. 2017
Beiträge
3.238
Liebe Community,

ich nutze Linux Mint Cinnamomon 22.1

Das Soundsystem basiert ja neuerdings auf "pipewire".
qjackctl und jackd habe ich wieder deinstalliert, war das ein Fehler?

Aber zur Frage:
Von Windows war ich es so gewohnt, die Puffergröße (buffer size) im Treiber einzustellen oder in der DAW (Reaper).
Dies geht ja mit pipewire nicht so einfach. Es gibt wohl eine pipewire.config Datei, aber da weiß ich nicht so genau, was ich da einstellen müsste.
Und ob das so praktisch ist? Fürs Aufnahmen ist eine geringe Puffergröße ja nötig, aber für die restlichen Anwendungen ja nicht...

Ich muss Reaper auch z.B. mit "pw-jack reaper" starten damit der Sound für andere Programme nicht "weg" ist...

vielleicht hat jemand ja einen hilfreichen Tipp!
Besten Dank!
 
Im Arch Wiki findet sich das hier: https://wiki.archlinux.org/title/PipeWire#JACK_clients

pw-jack may be used to start JACK clients, but it is technically not required, as it only serves as a wrapper around the PIPEWIRE_REMOTE, PIPEWIRE_DEBUG and PIPEWIRE_LATENCY environment variables.
It is possible to request a custom buffer size by setting a quotient of buffersize/samplerate (which equals the block latency in seconds):


PIPEWIRE_LATENCY="128/48000" application
 
  • Gefällt mir
Reaktionen: larska
nur wenn ich Reaper ohne pw-jack starte, dann geht's nicht...

wo sollte ich den Befehl "Pipewire_Latency="128/48000" reaper denn eingeben?
hier geht's nicht:
1746125625132.png
 
Irgendwie BallaBalla, was die da machen.
if you would have installed alsamixer or PulseAudio (which are not included with LM22), then pipewire-alsa would be removed
https://forums.linuxmint.com/viewtopic.php?t=433402
Installiere 'pipewire-jack' und dann 'jack' in Reaper aktivieren. Derzeit läufst Du wahrscheinlich direkt auf ALSA an Pipewire vorbei, was das ganze Gerät blockiert.

Edit:
Da wo 'pw-jack reaper' steht, setzt Du:
PIPEWIRE_LATENCY="128/48000" reaper
'pw-jack' nicht verwenden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: netzgestaltung
@Uridium das geht, nur dann kommt in Reaper diese Fehlermeldung:
1746127031093.png

muss ich doch mit pw-jack starten?

EDIT: mit dem Befehl:
env PIPEWIRE_LATENCY="128/48000" pw-jack reaper
klappt es...
1746127195772.png

128 pls ist die Latenz, richtig?
 
Glaub schon... siehst Du ja, wenn Du den Wert änderst. 128/48000 wären 2.6ms. Das ist schon recht niedrig. Vielleicht mal was höheres probieren wie 512 oder 256.

'pw-jack' macht eigentlich gar nichts, wenn man keine Parameter angibt. Keine Ahnung, was das hier bewirkt.
Die Latenz kannst Du auch mit 'pw-top' in der Shell überprüfen.

Edit:
Wenn Du 'pipewire-pulse' installiert hast, kannst Du in Reaper auch PulseAudio wählen. Vielleicht läuft das besser. Wird genauso nach Pipewire geroutet.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: larska
Uridium schrieb:
'pw-jack' macht eigentlich gar nichts, wenn man keine Parameter angibt.
tja, keine Ahnung warum es ohne nicht läuft...

aber danke! dann habe ich ja einen "Workaround" gefunden...
Uridium schrieb:
Vielleicht mal was höheres probieren wie 512 oder 256.
habe jetzt mal 256 eingestellt:
1746129405935.png
1746129369099.png


ach, das wäre ja cool, wenn das die Lösung wäre... 🙃 🙃
würde dann auch mit anderen Programmen klappen, wie z.B. Carla, richtig?

EDIT: mit Pulse Audio läuft Reaper auch... (auch wenn ich mit dem pipewire_latency Befehl starte...)
hätte das irgendwelche Nachteile, denn dann könnte ich die Buffersize ja einfacher ändern....?

jetzt erscheint Reaper auch im Graph:
1746129748062.png


vielleicht lag das alles daran, dass ich Reaper am Anfang mit qjackctl genutzt hatte...
Ergänzung ()

EDIT: wenn ich nur "reaper" zum Starten nutze und PulseAudio ausgewählt habe, geht's auch...
und wenn der Befehl eingegeben ist, hat das wohl keine Auswirkung, wenn in Reaper pulseaudio ausgewählt ist...

aber nochmal "Danke" für deinen support! @Uridium
woher hast du dein Wissen?
Ergänzung ()

und noch eine Möglichkeit, mit ALSA und dann "default" in das Feld für Device tippen...
dann geht's auch...
 
Zuletzt bearbeitet:
Du darfst eigentlich nur nicht die originalen Schnittstellen (Pulse, Jack) installiert haben, was durch den Paketmanager normalerweise verhindert wird sobald 'pipewire-pulse' und 'pipewire-jack' installiert sind (was jetzt auch der Fall sein sollte). Dann sollte alles nach Pipewire geroutet werden.

Wenn Du 'PIPEWIRE_LATENCY=256/48000' permanent/global setzen willst, kannst Du ein config drop-in erstellen.
Alles komplett(!) kopieren und in die Shell einfügen. Dadurch wird 'mylatency.conf' erstellt.
Bash:
mkdir -p ~/.config/pipewire/pipewire.conf.d
cat <<EOF > ~/.config/pipewire/pipewire.conf.d/mylatency.conf
context.properties = {
   default.clock.quantum = 256
   default.clock.min-quantum = 256
}
EOF
echo -e "\n\033[1;35mtest:\033[0m"
cat ~/.config/pipewire/pipewire.conf.d/mylatency.conf
https://docs.pipewire.org/page_man_pipewire_conf_5.html

Danach vielleicht Pipewire neu starten:
systemctl --user restart pipewire.service wireplumber.service pipewire-pulse.service
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: larska
Uridium schrieb:
Wenn Du 'PIPEWIRE_LATENCY=256/48000' permanent/global setzen willst,
ich glaube ich lasse es jetzt erstmal so, dass ich es "per Hand" einstelle...
der Workaround mit pulseaudio und "default" device ist auch ganz gut, da kann ich dann in Reaper selbst einstellen wie hoch die Latenz sein soll...

Uridium schrieb:
Alles komplett(!) kopieren und in die Shell einfügen. Dadurch wird 'mylatency.conf' erstellt.
klingt aber interessant, dann würden ja auch andere Programme, wie Carla mit niedriger Latenz laufen...
 
Also ich hab auch schon mal versucht, das mit der pipewire Config einzustellen, aber hab nicht lange gebraucht um aufzugeben, muß ich mir mal wieder ansehen. Bei mir funktioniert auch qjackctl mit pipewire-jack und ich setze die Buffer-Size in der qjackctl Einstellung - auch das funktioniert.

Danach starte ich alle anderen Programme (Ardour in meinem Fall oder Guitarix, Hydrogen) mit Einstellung Jack als Audiosystem. Dann funktioniert auch der Transport Master über Pipewire. Mit Reaper hab ich aber keine Erfahrung.

Die möglichst kleine Buffer-Size hängt mit der CPU zusammen, bei meinem 5800x3d hab ich zb 64 als Grenze war genommen. Darunter beginnt es zu verzerren bei der Ausgabe.
Ergänzung ()

E: ich hab das jetzt mal mit 64 bei mir getestet:

Code:
mkdir -p ~/.config/pipewire/pipewire.conf.d
cat <<EOF > ~/.config/pipewire/pipewire.conf.d/mylatency.conf
context.properties = {
   default.clock.quantum = 64
   default.clock.min-quantum = 64
}
EOF
echo -e "\n\033[1;35mtest:\033[0m"
cat ~/.config/pipewire/pipewire.conf.d/mylatency.conf

und es wird auch in qjackctl übernommen und angezeigt.

Danke, das war eh nervig, weil ich auch die Config da nicht gespeichert hatte.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: larska
netzgestaltung schrieb:
Bei mir funktioniert auch qjackctl mit pipewire-jack und ich setze die Buffer-Size in der qjackctl Einstellung - auch das funktioniert.
die "alte" qjackctl? brauche ich die noch für irgendwas anderes? Ich habe die jack-Anwendunen alle deinstalliert...
qjackctl klappt mit Reaper jedenfalls nicht gut...
 
Also ich benutz da vor allem den Graph(auch zb für online Meetings), der gefällt mir besser als qpwgraph außerdem funktioniert bei mir die Anzeige, Play/Pause, wenn der Timemaster aktiv ist.
 
  • Gefällt mir
Reaktionen: larska
@netzgestaltung das mit der qjackctl habe ich ehrlich gesagt ohnehin nie richtig verstanden... Repaer lief auch immer ohne das ich jack gestartet hatte über jack...
nur war halt immer das Problem, dass der Sound generell dann bei anderen Anwendungen weg war...

jetzt nutze ich Reaper mit ALSA, dann kann ich die Puffergröße in Reaper ändern...
gibt es da evtl. irgendwelche Nachteile?
 
Wenn es alleine benutzt wird, ist es egal - das jack protokoll hilft, wenn mehrere Programme auf einen zentralen Takt/Start/Stopp hören sollen. qjackctl bietet halt Einstellungen und Bedienfelder sowie eine Patchbay dafür.
 
  • Gefällt mir
Reaktionen: larska
larska schrieb:
nur war halt immer das Problem, dass der Sound generell dann bei anderen Anwendungen weg war...
Weil ALSA derzeit direkt ohne Pipewire läuft. Wenn Du 'pipewire-alsa' installierst wird auch ALSA nach Pipewire geleitet. Musst Du ausprobieren, was dir besser gefällt.
 
  • Gefällt mir
Reaktionen: larska
Uridium schrieb:
Weil ALSA derzeit direkt ohne Pipewire läuft.
pipewire-also ist installiert...
der "Trick" war in Reaper ALSA mit "default" zu besetzen... (muss man eintippen, steht nicht zur Auswahl)
jetzt klappt es auch...
1746266772431.png
 
Uridium schrieb:
Wenn Du 'PIPEWIRE_LATENCY=256/48000' permanent/global setzen willst, kannst Du ein config drop-in erstellen.
Alles komplett(!) kopieren und in die Shell einfügen. Dadurch wird 'mylatency.conf' erstellt.
habe das mal jetzt probiert...
in Reaper ist trotzdem 512 der Standard Wert... komisch, oder?

EDIT: nein, doch nicht, klappt!

Ich habe noch was gefunden um die Latenz einfacher einzustellen:
Ein Skript:

Code:
#!/bin/bash

echo "Welcome to PipeManager!"
echo "======================="


while :
do
echo "S: Change sample rate | B: Change buffer size | V: View current settings | R: Restart pipewire | E: Exit program "
echo "======================="
read -p "Selection: " userselection

case $userselection in
    B)
        echo "Some examples of buffer sizes are 64, 128, 256, 512, 1024, 2048."
        read -p 'What would you like the buffer size to be?' buffersizevar
        pw-metadata -n settings 0 clock.force-quantum $buffersizevar
        ;;
    S)
        echo "Some examples of sample rates are 44100, 48000, 88200, 96000."
        read -p 'What would you like the sample rate to be?' sampleratevar
        pw-metadata -n settings 0 clock.force-rate $sampleratevar
        ;;     
    V)
        pw-metadata -n settings
        echo "======================="
        ;;
    R)
        systemctl --user restart pipewire
        ;;
    E)
        break
        ;;     
esac
done

das müsste doch dann auch den globalen Wert überschreiben, richtig?
Und nach Neustart wäre dann wieder der globale Wert aktiv, richtig?


Könnte man nicht auch einfach die pipewire.conf bearbeiten?
Und dort die Raute vor dem "default.clock.quantum" entfernen und einen Wert festlegen?
Und wie kann ich dann diesen Eintrag, den ich für mylatency.conf erstellt habe wieder "sauber" entfernen?
 
Zuletzt bearbeitet:
Die Drop-in Datei einfach löschen. Die finale *.conf Datei resultiert aus der originalen plus der drop-in Datei.

Das hat mehrere Vorteile. Bei Arch z.B. würde der Paketmanager die originale *.conf nicht mehr updaten, wenn sie manipuliert wurde (er erstellt stattdessen eine *.pacnew Datei).

Edit:
Das klingt nicht sehr permanent.
pw-metadata

Monitor, set and delete metadata on PipeWire objects.

Metadata are key/type/value triplets attached to objects identified by id. The metadata is shared between all applications binding to the same metadata object. When an object is destroyed, all its metadata is automatically removed.
https://docs.pipewire.org/page_man_pw-metadata_1.html
 
Zuletzt bearbeitet:
Zurück
Oben