Files
VA-Control-for-linux/STATUS.md
T
maikandClaude Opus 4.8 a7c93fa266 Erster Commit: nativer Linux-Port aus macOS-Bytecode
Läuft die Voice Acoustic VA-Remotecontrol (AllDSP AllControl) nativ unter Linux
auf echtem wxGTK 3.0 — ohne Wine und ohne dekompilierten App-Code. Ausgeführt wird
das unveränderte Python-2.7-Bytecode aus dem macOS-.app; C-Extensions (wxGTK/numpy/
scipy/PortAudio) kommen nativ aus Debian stretch.

Enthält: va/ (Original-.pyc + pure-Python-Libs + Assets + launch.py mit den drei
Linux-Fixes), Dockerfile/run.sh/entrypoint.sh, reference/ (dekompilierter Quellcode
zum Debuggen) und README/STATUS. img.cache (378 MB, regenerierbar) ist per
.gitignore ausgeschlossen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-20 19:57:01 +02:00

31 lines
2.1 KiB
Markdown

# Nativer Linux-Port aus macOS-Bytecode — Stand: ✅ LÄUFT
## Verifiziert (headless auf echtem Xorg)
- **Image baut sauber** (Debian stretch via archive.debian.org + debian-security).
- **App startet nativ** aus Original-macOS-Bytecode, **ohne Wine**: wx 3.0.2 (gtk2 classic),
numpy 1.12.1, scipy 0.18.1 laden, one_unit/child_unit laufen als Original-`.pyc`.
- **GUI rendert korrekt** (Menü File/Tools/Help, Status-Icons, „All Units (0 units online)",
Voice-Acoustic-Logo) — siehe `screenshot-native.png`. **Kein schwarzer Wine-Screen.**
- **Log ist sauber** — keine Tracebacks (nur eine harmlose wxPyDeprecationWarning).
Getestet mit Xorg **dummy**-Treiber (liefert VidMode/RandR) im Container; **Xvfb geht NICHT**,
weil es die XFree86-VidMode-Extension nicht hat und wx 3.0 dann bei `wxDisplay.GetCurrentMode()`
crasht — reines Test-Artefakt, auf echtem Display irrelevant.
## Drei Linux-Fixes in `va/launch.py` (non-invasiv, KEIN Bytecode-Patch)
1. **`platform.version()`** unter Linux beginnt mit `#…``int('#')` in einer Windows-
Versionsprüfung (`one_unit.start()`) crasht und deaktiviert dabei RTA. Fix: Windows-artigen
String liefern → Prüfung läuft durch, RTA bleibt aktiv.
2. **wx-Assertions → SUPPRESS**: diese wxGTK-Build wirft C++-Assertions als Python-Exceptions
(Default). `one_unit.app.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)` = Release-/Mac-Verhalten;
sonst crasht `flatmenu.DrawMenuBar` an einer transienten negativen Bitmapgröße.
3. **`my_MenuBar.left_down`**: wird nur im Nicht-Mac-Zweig von `__init__` gesetzt (Linux läuft
als „mac", `mac_names='posix'`), `OnPaint` braucht es aber → Klassen-Default `= False`.
## Noch offen (braucht deine Maschine)
- **Realer Lauf auf dem Desktop** via `./run.sh` (X11/XWayland) — sollte laut Headless-Test
direkt gehen; GDK_BACKEND=x11 + `--ipc=host` sind gesetzt.
- **Geräteanbindung** ungetestet mangels Amp: Ethernet (Host-Netz) oder seriell/COM
(`SERIAL_DEV=/dev/ttyUSB0`). Discovery/Protokoll laufen als Original-Bytecode.
- **RTA-Mikrofon**: braucht Audio-Durchreichung (ALSA/Pulse) in den Container.