Wenn du Musikproduktion mit einer DAW z.B. Bitwig unter Linux machst, dann ist für dich das Thema Latenz sehr wichtig.
Was ist Latenz?
- Die Latenz (Verzögerung/Puffer) ist wichtig im Zusammenspiel zwischen dem Computer und dem Audiointerface (Audio und Midi).
- Je niedriger die Latenz, desto höher wird die CPU belastet, weil sie in sehr kurzen Abständen die Datenpakete verarbeiten muss. Je größer die Latenz, desto mehr Zeit darf vergehen, bis sich die CPU wieder um die Datenpakete kümmern muss.
- Wenn ausschließlich nur im Computer produziert wird, kann die Latenz ohne Probleme hoch sein.
- Ein guter Startwert ist schon mal 1024 Samples (21.3ms) – bei 48kHz.
- Erst wenn hier störende Verzögerungen bemerkbar sind, z.B. beim Spielen auf einem Controller oder Synthesizer und der Umsetzung auf den Computer, macht es Sinn diesen Wert zu verkleinern. Zum Beispiel wenn der Tastendruck und das Ertönen eines Sounds spürbar verzögert sind.
Eventuell interessiert dich noch der Artikel zum Thema Pipewire Realtime Konfiguration “Pipewire modul-rt Konfiguration” , um deine Audio/Videoanwendungen noch performanter zu machen
Pipewire Metadaten lesen mit pw-metadata
Der Befehl lautet pw-metadata und kann folgendermaßen benutzt werden
pw-metadata [options] [ id [ key [ value [ type ] ] ] ]
-h, --help Show this help
--version Show version
-r, --remote Remote daemon name
-l, --list List available metadata
-m, --monitor Monitor metadata
-d, --delete Delete metadata
-n, --name Metadata name (default: "default")
Die ID mit pw-metadata
rausfinden
pw-metadata
ohne weitere Angaben ergibt so eine Ausgabe, die je nach Hardware natürlich unterschiedlich ist. Die ID steht hier immer weit links id:0
odo@computer~$ pw-metadata
update: id:0 key:'default.configured.audio.sink' value:'{"name":"alsa_output.usb-SOOPERAUDIOCARD_192k-00.pro-output-0"}' type:'Spa:String:JSON'
update: id:0 key:'default.configured.audio.source' value:'{"name":"alsa_input.usb-SOOPERAUDIOCARD_192k-00.pro-input-0"}' type:'Spa:String:JSON'
update: id:0 key:'default.audio.sink' value:'{"name":"alsa_output.usb-SOOPERAUDIOCARD_192k-00.pro-output-0"}' type:'Spa:String:JSON'
update: id:0 key:'default.audio.source' value:'{"name":"alsa_input.usb-SOOPERAUDIOCARD_192k-00.pro-input-0"}' type:'Spa:String:JSON'
update: id:0 key:'default.video.source' value:'{"name":"v4l2_input.pci-0000_00_14.0-usb-0_7_1.0"}' type:'Spa:String:JSON'
Alle verfügbaren Metadaten mit pw-metadata -l
anzeigen lassen
odo@computer~$ pw-metadata -l
Found "settings" metadata 32
Found "default" metadata 40
Found "route-settings" metadata 41
Alle verfügbaren settings mit pw-metadata -n settings
anzeigen lassen
odo@computer~$ pw-metada -n settings
Found "settings" metadata 32
update: id:0 key:'log.level' value:'2' type:''
update: id:0 key:'clock.rate' value:'48000' type:''
update: id:0 key:'clock.allowed-rates' value:'[ 48000 ]' type:''
update: id:0 key:'clock.quantum' value:'1024' type:''
update: id:0 key:'clock.min-quantum' value:'32' type:''
update: id:0 key:'clock.max-quantum' value:'2048' type:''
update: id:32 key:'clock.force-quantum' value:'64' type:'(null)'
update: id:64 key:'clock.force-quantum' value:'64' type:'(null)'
Settings temporär setzen mit pw-metadata -n settings id key value type
Hier werden nun Samplefrequenz auf 48kHz und die Samples auf 1024 gestellt, so dass 1024/48000 = 0,021333 als 21,3 Millisekunden Latenz raus kommen.
Soll es eine niedrigere Latenz bei einer Samplefrequenz von 48kHz sein, müssen die 1024 Samples herunter gesetzt werden. z.B. 768 (16ms) , 512 (10,6ms), 256 (5,3ms), 128 (2,6ms), 64 (1,33ms), 32 (0,68ms).
pw-metadata -n settings 0 clock.rate 48000
pw-metadata -n settings 0 clock.quantum 1024
Die Konfiguration permanent machen. Auch nach einem Reboot.
Folgende Datei im folgenden Verzeichnis erstellen ~/.config/pipewire/pipewire.conf.d/choppy-under-load.conf
. Sie sollte z.B. diesen Inhalt enthalten. Wenn andere Werte ausgewählt wurden, dann natürlich die anderen Werte.
context.properties = {
default.clock.rate = 48000
default.clock.quantum = 1024
}
Quellen
- Pipewire Module-rt https://docs.pipewire.org/page_module_rt.html
- Pipewire Docs https://docs.pipewire.org/index.html
- Pipewire Configuration https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire
- pw-metadata https://docs.pipewire.org/page_man_pw_metadata_1.html
- pw-top https://docs.pipewire.org/page_man_pw_top_1.html
- Troubleshooting & XRuns https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#xruns
- Pipewire Ubuntuusers https://wiki.ubuntuusers.de/Pipewire/
- Pipewire Home https://pipewire.org/
Weitere hyperblog Artikel zum Thema
pipewire
Views: 36