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>
This commit is contained in:
maik
2026-08-20 19:57:01 +02:00
co-authored by Claude Opus 4.8
commit a7c93fa266
654 changed files with 478133 additions and 0 deletions
+3039
View File
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 130 KiB

+2685
View File
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 86 KiB

+189
View File
@@ -0,0 +1,189 @@
[any|None|cs_out1]
channelflagshow = always
[any|None|cs_out2]
channelflagshow = always
[any|None|cs_out3]
channelflagshow = always
[any|None|cs_out4]
channelflagshow = always
[Main_panel|-1|vu_out1]
channelflagshow = always
[Main_panel|-1|vu_out2]
channelflagshow = always
[Main_panel|-1|vu_out3]
channelflagshow = always
[Main_panel|-1|vu_out0]
channelflagshow = always
[Main_panel|-1|mute_in1]
channelflagshow = always
[Main_panel|-1|mute_in2]
channelflagshow = always
[Main_panel|-1|mute_in3]
channelflagshow = always
[Main_panel|-1|mute_in0]
channelflagshow = always
[Main_panel|-1|mute_out1]
channelflagshow = always
[Main_panel|-1|mute_out2]
channelflagshow = always
[Main_panel|-1|mute_out3]
channelflagshow = always
[Main_panel|-1|mute_out0]
channelflagshow = always
[Main_panel|-1|channel_name_1_text]
channelflagshow = always
[Main_panel|-1|channel_name_2_text]
channelflagshow = always
[Main_panel|-1|channel_name_3_text]
channelflagshow = always
[Main_panel|-1|channel_name_0_text]
channelflagshow = always
[Main_panel|-1|channel_name_128_text]
channelflagshow = always
[Main_panel|-1|channel_name_129_text]
channelflagshow = always
[Main_panel|-1|channel_name_130_text]
channelflagshow = always
[Main_panel|-1|channel_name_131_text]
channelflagshow = always
[Main_panel|-1|vu_ina]
channelflagshow = always
[Main_panel|-1|vu_inb]
channelflagshow = always
[Main_panel|-1|vu_inc]
channelflagshow = always
[Main_panel|-1|vu_ind]
channelflagshow = always
[out_panel|None|mixer_a_slider]
channelflagshow = always
[out_panel|None|mixer_b_slider]
channelflagshow = always
[out_panel|None|mixer_c_slider]
channelflagshow = always
[out_panel|None|mixer_d_slider]
channelflagshow = always
[out_panel|None|mixer_a_text]
channelflagshow = always
[out_panel|None|mixer_b_text]
channelflagshow = always
[out_panel|None|mixer_c_text]
channelflagshow = always
[out_panel|None|mixer_d_text]
channelflagshow = always
[out_panel|None|mute_out]
channelflagshow = always
[out_panel|None|vu_out]
channelflagshow = always
[out_panel|None|out_delay_text]
channelflagshow = always
[Main_panel|None|main_out0_slider]
channelflagshow = always
[Main_panel|None|main_out0_text]
channelflagshow = always
[Main_panel|None|mute_out0]
channelflagshow = always
[Main_panel|None|channel_name_128_text]
channelflagshow = always
[Main_panel|None|vu_out0]
channelflagshow = always
[Main_panel|None|delay0]
channelflagshow = always
[Main_panel|None|main_out1_slider]
channelflagshow = always
[Main_panel|None|main_out1_text]
channelflagshow = always
[Main_panel|None|mute_out1]
channelflagshow = always
[Main_panel|None|channel_name_129_text]
channelflagshow = always
[Main_panel|None|vu_out1]
channelflagshow = always
[Main_panel|None|delay1]
channelflagshow = always
[Main_panel|None|main_out2_slider]
channelflagshow = always
[Main_panel|None|main_out2_text]
channelflagshow = always
[Main_panel|None|mute_out2]
channelflagshow = always
[Main_panel|None|channel_name_130_text]
channelflagshow = always
[Main_panel|None|vu_out2]
channelflagshow = always
[Main_panel|None|delay2]
channelflagshow = always
[Main_panel|None|main_out3_slider]
channelflagshow = always
[Main_panel|None|main_out3_text]
channelflagshow = always
[Main_panel|None|mute_out3]
channelflagshow = always
[Main_panel|None|channel_name_131_text]
channelflagshow = always
[Main_panel|None|vu_out3]
channelflagshow = always
[Main_panel|None|delay3]
channelflagshow = always
+2604
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 177 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 67 KiB

+3019
View File
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 100 KiB

+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env python
#makeCache: alle png inpakken in img.cache.
import sys
import os
import cPickle
import marshal
import wx
import array
app = wx.App()
modified_bitmap_buffer_cache = {}
files = os.listdir("cache")
for f in files:
basename = f #os.path.split(f)[1]
print "doing", basename
img = wx.Image("cache/" + f, wx.BITMAP_TYPE_ANY)
print "doing 2", basename
bmp = wx.BitmapFromImage(img)
w, h = bmp.GetSize()
w = max(w, 1)
h = max(h, 1)
buf = array.array('B', [0] * (w * h * 4))
bmp.CopyToBuffer(buf,wx.BitmapBufferFormat_ARGB32)
for i in range (0,w*h):
offset=i*4
b=buf[offset]
g=buf[offset+1]
r=buf[offset+2]
a=buf[offset+3]
buf[offset]=r
buf[offset+1]=g
buf[offset+2]=b
buf[offset+3]=a
modified_bitmap_buffer_cache[basename] = (buf,w,h)
print "did", basename
f = open("img.cache", "wb")
marshal.dump(modified_bitmap_buffer_cache,f,2)
f.close()
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 68 KiB

+2317
View File
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 78 KiB