The XY correlation cube snapped to center the moment the audio dropped below the silence threshold, because process() hard-set value to 0.0 in the silent branch. Now the silent branch eases the displayed value back toward zero using the configured response time, so the cube holds its last reading and then settles instead of jumping. The active path is unchanged, so all existing response-time and peak tests still pass. - add `display` (f64) that tracks the live correlation while active - silent branch: display += alpha * (0 - display) - update configurable_silence_threshold test for the eased decay - add correlation_holds_then_decays_to_zero_on_silence test
Phoenix v1.0.0
Phoenix ist das native Rust-Backend des Analyzers auf Raspberry Pi.
Der Browser rendert nur noch die GUI. Audio-Capture, Messung, Recorder und die globale Gerätekonfiguration laufen in Phoenix.
Aktueller Stand
Phoenix übernimmt heute:
- ALSA-Audio-Capture
- Live-Metering über WebSocket
- globale Gerätekonfiguration
- RTA
- Spectrogram
- Waveform
- XY / Goniometer
- Phase Wheel
- Recorder in
wav,mp3undwebm - direktes Speichern auf dem Gerät
Nicht mehr Teil der Architektur:
- WebAudio-/AudioWorklet-Analyse im Browser
- Browser-MediaRecorder als Haupt-Recorder
- Umschalten zwischen
lineundspdif
Der aktuelle Zielpfad ist Line In auf der Behringer/USB-Audio-Hardware.
Architektur
- Phoenix besitzt die Audio-Hardware
- Phoenix berechnet die Messwerte
- die Web-GUI verbindet sich per
HTTP + WebSocketmit Phoenix - globale Geräteoptionen werden in Phoenix gespeichert und an Browser synchronisiert
- browser-lokale Optionen wie
Phoenix URLbleiben clientseitig
Standard-Endpunkte
GET /healthGET /api/v1/statusGET /api/v1/global-configPOST /api/v1/global-configGET /api/v1/rta-configPOST /api/v1/rta-configGET /api/v1/metrics/wsPOST /api/v1/recordings/wav/start/:session_idPOST /api/v1/recordings/wav/stop/:session_idPOST /api/v1/recordings/stop/:session_id/:formatPOST /api/v1/recordings/save/:target/:filename
Build
Lokaler Build:
cargo build --release
Check:
cargo check
Das Binary liegt danach unter:
target/release/phoenix
Raspberry Pi Betrieb
Für den Pi ist der maßgebliche Ablauf in:
Dort sind enthalten:
- benötigte Systempakete
- systemd-Services
- Kiosk-Start
- Webserver auf Port
80 - Autostart
Relevante Dateien:
Volumio-Betrieb
Für Volumio gibt es einen getrennten Kiosk-Pfad mit eigener Session und eigenen systemd-Units:
Erwarteter Projektpfad auf dem Zielgerät:
/home/volumio/Phoenix
Volumio-spezifisch:
session_volumio.shstartet Analyzer-GUI und Volumio im Dual-Tab-Kiosk- die Analyzer-GUI läuft im Volumio-Fall auf
http://localhost:8088/ toggle-extwird unterPhoenix/toggle-exterwartetVirtualKeyboardwird bevorzugt unterPhoenix/VirtualKeyboardgesucht, mit Fallback auf die bekannten Systempfade- Logs liegen typischerweise unter:
/home/volumio/dual-kiosk.log
/home/volumio/phoenix.log
Die Volumio-spezifischen Units, der eingeschränkte Update-Helfer und die zugehörige sudo-Regel werden einmalig als root installiert:
sudo bash /home/volumio/Phoenix/scripts/install_volumio_services.sh
Der Installer überschreibt keine Debian-/Analyzer-Unitdateien und startet
laufende Dienste nicht automatisch neu. Er maskiert getty@tty1.service, da der
Kiosk-X-Server tty1 exklusiv verwendet. Ohne die Maskierung können Getty und
Xorg beim Booten um dasselbe virtuelle Terminal konkurrieren und eine
Kiosk-Neustartschleife auslösen.
Nach dieser einmaligen Grundinstallation bringt der privilegierte Volumio-Online-Updater bei jedem erfolgreichen Phoenix-Update auch die mitgelieferten systemd-Units, den Update-Helfer und die sudo-Regel aus. Fehlen diese Integrationsdateien in einem Update, wird es vor dem Austausch des laufenden Projektbaums abgelehnt.
Um den lokalen Login-Prompt auf tty1 wiederherzustellen, zuerst den Kiosk
stoppen und Getty anschließend wieder freigeben:
sudo systemctl stop analyzer-kiosk-volumio.service
sudo systemctl unmask --now getty@tty1.service
Wenn toggle-ext genutzt werden soll, sollte es also unter diesem Pfad liegen:
/home/volumio/Phoenix/toggle-ext
Analyzer vs. Volumio
Die beiden Betriebsarten teilen sich Phoenix, aber nicht denselben Kiosk-Rahmen.
-
Analyzer:
- Projektpfad:
/home/analyzer/Phoenix - Web-GUI:
http://localhost/ - systemd-Units: analyzer-kiosk.service, analyzer-web.service
- Session: session.sh
- Chromium-Profil:
/data/chrome-analyzer
- Projektpfad:
-
Volumio:
- Projektpfad:
/home/volumio/Phoenix - Analyzer-GUI:
http://localhost:8088/ - Volumio-GUI intern:
http://localhost:3000/ - systemd-Units: analyzer-kiosk-volumio.service, analyzer-web-volumio.service
- Session: session_volumio.sh
- Chromium-Profil:
/data/chrome-dualtabs toggle-exterwartet unter/home/volumio/Phoenix/toggle-ext
- Projektpfad:
Wichtig:
- Volumio darf den Analyzer-Webserver nicht auf
:80binden, weil dort Volumio selbst bzw. dessen Frontproxy hängt. - Die einzige beabsichtigte Global-Config-Abweichung zwischen den Referenzständen ist normalerweise
recordTarget.
Referenz-Global-Configs
Für einen sauberen Gerätestand liegen zwei Referenzdateien im Projekt:
Kopieren auf dem Zielgerät:
mkdir -p ~/.config/phoenix
cp /home/<user>/Phoenix/reference-config/phoenix-global-config.<profil>.json ~/.config/phoenix/global-config.json
Beispiele:
cp /home/analyzer/Phoenix/reference-config/phoenix-global-config.analyzer.json /home/analyzer/.config/phoenix/global-config.json
cp /home/volumio/Phoenix/reference-config/phoenix-global-config.volumio.json /home/volumio/.config/phoenix/global-config.json
Danach Phoenix bzw. den Kiosk-Dienst neu starten.
Erster Start auf neuem Gerät
Für einen frischen Pi werden mindestens diese Build-Abhängigkeiten benötigt:
sudo apt-get update
sudo apt-get install -y pkg-config libasound2-dev curl ca-certificates git build-essential
Wenn cargo/rustc fehlen oder zu alt sind, kann kiosk-start.sh beim Start eine aktuelle Rust-Toolchain per rustup installieren.
Das ist besonders für ältere Volumio-/Debian-Systeme wichtig, deren apt-Rust oft zu alt für aktuelle Crates ist.
Wichtige Umgebungsvariablen
-
PHOENIX_LISTENdefault:127.0.0.1:8789 -
PHOENIX_ALSA_CARDdefault:2 -
PHOENIX_ALSA_DEVICEoptional explizites ALSA-Gerät, z. B.hw:CARD=CODEC,DEV=0 -
PHOENIX_SAMPLE_RATEdefault:48000 -
PHOENIX_PERIOD_SIZEdefault:128 -
PHOENIX_BUFFER_SIZEdefault:512 -
PHOENIX_GLOBAL_CONFIG_PATHdefault:$HOME/.config/phoenix/global-config.json -
PHOENIX_RECORDINGS_DIR_ANALYZERdefault:/home/analyzer/Aufnahmen -
PHOENIX_RECORDINGS_DIR_VOLUMIOdefault:/home/volumio/Aufnahmen -
PHOENIX_MAX_RECORDING_UPLOAD_BYTESdefault:2147483648 -
PHOENIX_LR_FRAC_DELAY_ENABLEDdefault:true -
PHOENIX_LR_FRAC_DELAY_SAMPLESdefault:0.996 -
PHOENIX_LOGdefault:phoenix=info,tower_http=info
Hinweise
- Phoenix ist jetzt der produktive Hauptpfad, nicht mehr nur ein Scaffold.
- Das Changelog der GUI liegt in index.html.
- Build-Logs beim Pi-Start landen in der Regel unter:
~/phoenix-build.log
- Laufzeit-Logs der X-/Kiosk-Session liegen unter:
/home/analyzer/analyzer-kiosk.log