Files
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

2.1 KiB

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.