Guitarix, Audacious und Jack

Da das Ende des Lebenszyklus von Windows 10 näher rückt, habe ich die meisten meiner PCs auf Ubuntu 24.04 umgestellt. So kann ich sie vor dem Wertstoffhof bewahren, denn für Windows 11 sind sie zu alt.

Einer der umgestellten Rechner ist ein Acer-Aspire-3-Laptop, auf dem ich unterwegs mit einem Focusrite-Scarlett-Solo-Audiointerface Gitarre übe. Meine erste Idee, um ihn weiter dafür zu nutzen, war, Wine zu installieren und mein bewährtes Native-Instruments-Plugin Guitar Rig zusammen mit Presonus Studio One 5 laufen zu lassen. Die Idee habe ich aber schnell verworfen, denn eine kurze Google-Suche zeigte, dass die Einrichtung nicht ganz einfach ist. Außerdem hatte ich Bedenken wegen der Latenz: Da Wine eine zusätzliche Kompatibilitätsschicht ist, könnte es mehr CPU-Ressourcen verbrauchen und Latenz verursachen.

Um die bestmögliche Latenz zu erreichen, habe ich mich nach nativen Linux-Lösungen umgesehen und bin auf Guitarix und Audacious gestoßen. Guitarix ist eine Software zur Verstärkersimulation. Sie erfordert etwas mehr Handarbeit als die Produkte von Native Instruments, ist dafür aber kostenlos und Open Source. Audacious ist ein schlichter Mediaplayer, den ich für Backing Tracks nutze. Beide können über den JACK-Soundserver laufen, der Audio mit niedriger Latenz ermöglicht.

Insgesamt ist die Bedienung nicht so komfortabel wie unter Windows. Audacious hat zum Beispiel keine Einstellung für die Wiedergabegeschwindigkeit, und Guitarix bringt nur sehr wenige Presets mit. Die Einrichtung hat außerdem etwa eine Stunde gedauert, weil der JACK-Audioserver ganz anders funktioniert als das ASIO-System, das ich von Windows gewohnt bin. Nach einer Weile kam ich aber zu recht zufriedenstellenden Ergebnissen. Die Wiedergabegeschwindigkeit lässt sich mit dem auch unter Windows verbreiteten WAV-Editor Audacity anpassen, und die Guitarix-Presets klingen ziemlich ordentlich.

Zum Glück konnte ich mit ChatGPT ein Startskript generieren, das die Einrichtung deutlich vereinfacht. Falls es euch nützt, kopiert es gern.

start-jam-session.sh (Version mit automatischer Erkennung)

#!/bin/bash

set -e

# ========== CONFIGURATION ==========
# Set the names for ports/devices
SCARLETT_PLAYBACK_L="system:playback_1"
SCARLETT_PLAYBACK_R="system:playback_2"
GX_OUTPUT_L="guitarix:out_0"
GX_OUTPUT_R="guitarix:out_1"
AUDACIOUS_OUTPUT_L="PulseAudio JACK Sink:front-left"
AUDACIOUS_OUTPUT_R="PulseAudio JACK Sink:front-right"

# ========== FUNCTIONS ==========

check_pipewire_jack() {
    echo "Checking if PipeWire JACK is running..."
    if ! pw-jack jack_lsp >/dev/null 2>&1; then
        echo "PipeWire-JACK is not responding. Trying to start it..."
        systemctl --user start pipewire
        systemctl --user start pipewire-pulse
        systemctl --user start pipewire-jack
        sleep 2
        if ! pw-jack jack_lsp >/dev/null 2>&1; then
            echo "❌ Failed to start PipeWire JACK backend. Exiting."
            exit 1
        fi
    fi
    echo "✅ PipeWire JACK is running."
}

wait_for_port() {
    local port="$1"
    echo -n "Waiting for JACK port '$port'"
    for i in {1..10}; do
        if jack_lsp | grep -q "$port"; then
            echo " – found."
            return
        fi
        echo -n "."
        sleep 1
    done
    echo " ❌ Port '$port' not found."
    exit 1
}

connect_ports() {
    echo "Connecting Guitarix output to Scarlett..."
    jack_connect "$GX_OUTPUT_L" "$SCARLETT_PLAYBACK_L" || true
    jack_connect "$GX_OUTPUT_R" "$SCARLETT_PLAYBACK_R" || true

    echo "Connecting Audacious (PulseAudio JACK Sink) to Scarlett..."
    jack_connect "$AUDACIOUS_OUTPUT_L" "$SCARLETT_PLAYBACK_L" || true
    jack_connect "$AUDACIOUS_OUTPUT_R" "$SCARLETT_PLAYBACK_R" || true
}

# ========== MAIN SCRIPT ==========

check_pipewire_jack

echo "Launching Guitarix..."
guitarix &

echo "Launching Audacious..."
audacious &

echo "Waiting for apps to register with JACK..."
wait_for_port "$GX_OUTPUT_L"
wait_for_port "$AUDACIOUS_OUTPUT_L"

connect_ports

echo "🎶 Ready to jam! Your guitar goes through Guitarix, and Audacious plays clean through Scarlett."

Verwendung

  1. Skript speichern:

    nano start-jam-session.sh
    
  2. Den Code von oben einfügen.

  3. Ausführbar machen:

    chmod +x start-jam-session.sh
    
  4. Ausführen:

    ./start-jam-session.sh
    
  5. qjackctl starten

     pw-jack qjackctl
    
  6. Ein- und Ausgänge in Guitarix konfigurieren

[KI wurde beim Schreiben dieses Artikels nur für die Rechtschreibprüfung verwendet]