AudioWizard

BPM- & Tonart-Anzeige auf dem Raspberry Pi (7”-Display)

bpm_key_display.py zeigt BPM und Tonart bildschirmfüllend an (für 800x600, skaliert aber mit jeder Auflösung) und gibt parallel die MIDI-Clock aus. Der Analyse-Kern wird aus realtime_bpm_key_midiclock.py importiert – beide Dateien müssen also im selben Ordner liegen.

Hardware

Installation (Raspberry Pi OS mit Desktop)

Der einfachste Weg; wer einen dedizierten Bühnen-Pi möglichst schlank aufsetzen will, springt zur „Minimal-Installation“ weiter unten.

sudo apt update
sudo apt install -y python3-venv python3-tk libportaudio2 libsndfile1 \
                    libasound2-dev build-essential

python3 -m venv ~/audiowizard-env
source ~/audiowizard-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Hinweise:

Starten

source ~/audiowizard-env/bin/activate
python bpm_key_display.py

Optionen im Einstellungsbildschirm

Diagnose und Wartung

Autostart (Desktop-Variante)

Auf Raspberry Pi OS mit Desktop genügt eine Autostart-Datei:

mkdir -p ~/.config/autostart
nano ~/.config/autostart/bpm-display.desktop

Inhalt (Pfade ggf. anpassen):

[Desktop Entry]
Type=Application
Name=BPM Display
Exec=/home/pi/audiowizard-env/bin/python /home/pi/audiowizard/bpm_key_display.py
X-GNOME-Autostart-enabled=true

Optional in raspi-config: Auto-Login auf den Desktop aktivieren und den Bildschirmschoner/Blanking abschalten.

Minimal-Installation: Pi OS Lite ohne Desktop (Kiosk)

Für einen dedizierten Bühnen-Pi reicht Raspberry Pi OS Lite (64-bit): Statt des kompletten Desktops startet ein minimaler X-Server direkt in die Anzeige. Das spart rund zwei Drittel Platz auf der Karte, bootet schneller, und außer Kernel, X und Python läuft praktisch nichts. Sound- und MIDI-Treiber stecken bereits im Kernel (ALSA, snd-usb-audio) – USB-Audio- und USB-MIDI-Interfaces funktionieren ohne weiteres Zutun.

sudo apt update
sudo apt install -y python3-venv python3-tk libportaudio2 libsndfile1 \
                    xserver-xorg-core xinit xserver-xorg-input-libinput \
                    matchbox-window-manager x11-xserver-utils \
                    fonts-dejavu-core

python3 -m venv ~/audiowizard-env
source ~/audiowizard-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Hinweise:

Autostart (Lite-Variante)

Konsolen-Autologin aktivieren:

sudo raspi-config   # System Options -> Boot / Auto Login -> Console Autologin

~/.xinitrc anlegen (Pfade ggf. anpassen):

#!/bin/sh
xset s off -dpms            # Bildschirmschoner und Blanking aus
matchbox-window-manager -use_cursor no &
exec $HOME/audiowizard-env/bin/python \
     $HOME/audiowizard/bpm_key_display.py --fullscreen

Und am Ende von ~/.bash_profile (startet X nur auf der ersten Konsole, nicht in SSH-Sitzungen):

if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
    exec startx
fi

So verhält sich der Pi wie ein Gerät: einschalten, Anzeige kommt. Esc beendet die Anzeige – durch den Autologin startet sie sofort neu (gewollt im Kiosk-Betrieb). Zum Arbeiten am Gerät per SSH anmelden oder mit Strg+Alt+F2 auf eine zweite Konsole wechseln.

Robust gegen hartes Ausschalten (Overlay-Dateisystem)

Auf der Bühne wird der Pi meist einfach vom Strom getrennt – auf Dauer riskiert das ein korruptes Dateisystem auf der SD-Karte. Abhilfe schafft das Overlay-Dateisystem (funktioniert mit Desktop- und Lite-Variante): Root wird read-only eingehängt, alle Schreibzugriffe landen nur noch im RAM, und hartes Ausschalten ist jederzeit folgenlos.

sudo raspi-config   # Performance Options -> Overlay File System -> Enable

Wichtig:

Wenn der Pi 4 nicht hinterherkommt

Die Analyse (HPSS + Chroma-CQT, jede Sekunde auf 8 s Audio) ist der teure Teil. Falls die Anzeige zu träge aktualisiert, in realtime_bpm_key_midiclock.py anpassen:

Die MIDI-Clock läuft davon unabhängig in ihrem eigenen Thread und bleibt auch bei langsamer Analyse stabil.