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
+647
View File
@@ -0,0 +1,647 @@
[DEFAULT]
views = in_panel
title = AllDSP AllControl DSP Software
show_impedance=False
# structure IDs for AllDSP products
STRUCT_ID_VU = -1
STRUCT_ID_GR = -2
STRUCT_ID_GAIN = 0
STRUCT_ID_MIXER = 1
STRUCT_ID_DELAY = 2
STRUCT_ID_LPF = 3
STRUCT_ID_HPF = 4
STRUCT_ID_PEQ = 5
STRUCT_ID_LIMITER = 6
STRUCT_ID_MUTE = 7
STRUCT_ID_INVERT = 8
STRUCT_ID_PRESET_GLOBAL = 9
STRUCT_ID_LINK = 10
STRUCT_ID_COMMAND = 11
STRUCT_ID_COMPRESSOR = 12
STRUCT_ID_GLOBAL = 13
STRUCT_ID_CHANNEL = 14
STRUCT_ID_INTERNAL = 255
# member IDs for AllDSP products
MEMBER_ID_GAIN = 0
MEMBER_ID_FREQ = 1
MEMBER_ID_Q = 2
MEMBER_ID_TYPE = 3
MEMBER_ID_THRESHOLD = 4
MEMBER_ID_ATTACK = 5
MEMBER_ID_RELEASE = 6
MEMBER_ID_HOLD = 7
MEMBER_ID_DELAY = 8
MEMBER_ID_STATUS = 9
MEMBER_ID_VU_IN = 10
MEMBER_ID_VU_OUT = 11
MEMBER_ID_GR_IN = 12
MEMBER_ID_GR_OUT = 13
MEMBER_ID_MUTE = 14
MEMBER_ID_INVERT = 15
MEMBER_ID_SHORT_NAME = 16
MEMBER_ID_LONG_NAME = 17
MEMBER_ID_PRESET_NUMBER = 18
MEMBER_ID_PRESET_VERSION = 19
MEMBER_ID_NUMBER_OF_GROUPS = 20
MEMBER_ID_NUMBER_OF_WAYS = 21
MEMBER_ID_GNDLIFT = 22
MEMBER_ID_LANGUAGE = 23
MEMBER_ID_ON = 24
MEMBER_ID_LINK = 25
MEMBER_ID_COMMAND = 26
MEMBER_ID_RATIO=27
MEMBER_ID_Q_BW = 1000
delay_unit_type=delay_unit
status_indicator_type=indicator
#remember: list is "or"
status_indicator_condition = (hardware_status_flags&0x00000020) != 0 temperature >= 90
#impedance_0 > 200 impedance_1 > 200 impedance_2 > 200
status_details_type=button
vu_style=leds
#led shapes: square, rounded, circle
vu_led_shape=square
vu_led_size=2
vu_led_spacing=3
vu_grey_on_mute=yes
#values for input VU
vu_in_yellow=0
vu_in_red=10
#values for output VU
vu_out_yellow=0
vu_out_red=10
# Many switches have the same function in every view, so we describe them in the DEFAULT section
available_units_type=available_units
# presets
preset_load_type = button
preset_store_type = button
recall_preset_list_type = choice
recall_preset_list_value = recall_preset
preset_no_text_type = text
preset_no_text_value = preset_no
load_unit_preset_type = toggle-button
load_unit_preset_value = cmd_load_unit_preset
store_unit_preset_type = toggle-button
store_unit_preset_value = cmd_store_unit_preset
preset_name_text_type=text
preset_name_text_value=preset_name
unit_name_text_type=text
unit_name_text_value=unit_name
#link status indicator
link_status_type = toggle-button
mute_in0_type = toggle-button
mute_in0_value = mute_in0
mute_in1_type = toggle-button
mute_in1_value = mute_in1
mute_out0_type = toggle-button
mute_out0_value = mute_out0
mute_out1_type = toggle-button
mute_out1_value = mute_out1
mute_out2_type = toggle-button
mute_out2_value = mute_out2
link_ab_type=toggle-button
link_ab_value=link_ab
#link
out_link_0_type = toggle-button
out_link_0_value=out_link_0
peq_reset_0_type=button
peq_reset_1_type=button
peq_reset_2_type=button
peq_reset_3_type=button
peq_reset_4_type=button
peq_reset_5_type=button
peq_reset_6_type=button
peq_reset_7_type=button
peq_reset_8_type=button
peq_reset_9_type=button
Q_Bw_1_type=toggle-button
Q_Bw_1_value = Q_Bw
Q_Bw_2_type=toggle-button
Q_Bw_2_value = Q_Bw
cs_main_type = toggle-button
cs_xover_type = toggle-button
cs_in1_type = toggle-button
cs_in2_type = toggle-button
cs_out1_type = toggle-button
cs_out2_type = toggle-button
cs_out3_type = toggle-button
cs_dyn_type = toggle-button
cs_back_type=toggle-button
lpf_on_type = toggle-button
lpf_on_value = lpf_onoff
hpf_on_type = toggle-button
hpf_on_value = hpf_onoff
peq_sw_0_type=toggle-button
peq_sw_0_value=peq_0_on
peq_sw_1_type=toggle-button
peq_sw_1_value=peq_1_on
peq_sw_2_type=toggle-button
peq_sw_2_value=peq_2_on
peq_sw_3_type=toggle-button
peq_sw_3_value=peq_3_on
peq_sw_4_type=toggle-button
peq_sw_4_value=peq_4_on
peq_sw_5_type=toggle-button
peq_sw_5_value=peq_5_on
peq_sw_6_type=toggle-button
peq_sw_6_value=peq_6_on
peq_sw_7_type=toggle-button
peq_sw_7_value=peq_7_on
peq_sw_8_type=toggle-button
peq_sw_8_value=peq_8_on
peq_sw_9_type=toggle-button
peq_sw_9_value=peq_9_on
# PEQs, all 10 of them
peq_type_0_type=choice
peq_type_0_value=peq_type_0
peq_type_1_type=choice
peq_type_1_value=peq_type_1
peq_type_2_type=choice
peq_type_2_value=peq_type_2
peq_type_3_type=choice
peq_type_3_value=peq_type_3
peq_type_4_type=choice
peq_type_4_value=peq_type_4
peq_type_5_type=choice
peq_type_5_value=peq_type_5
peq_type_6_type=choice
peq_type_6_value=peq_type_6
peq_type_7_type=choice
peq_type_7_value=peq_type_7
peq_type_8_type=choice
peq_type_8_value=peq_type_8
peq_type_9_type=choice
peq_type_9_value=peq_type_9
peq_freq_0_type = text
peq_freq_0_value = peq_freq_0
peq_q_0_type = text
peq_q_0_value = peq_q_0
peq_gain_0_type = text
peq_gain_0_value = peq_gain_0
peq_freq_1_type = text
peq_freq_1_value = peq_freq_1
peq_q_1_type = text
peq_q_1_value = peq_q_1
peq_gain_1_type = text
peq_gain_1_value = peq_gain_1
peq_freq_2_type = text
peq_freq_2_value = peq_freq_2
peq_q_2_type = text
peq_q_2_value = peq_q_2
peq_gain_2_type = text
peq_gain_2_value = peq_gain_2
peq_freq_3_type = text
peq_freq_3_value = peq_freq_3
peq_q_3_type = text
peq_q_3_value = peq_q_3
peq_gain_3_type = text
peq_gain_3_value = peq_gain_3
peq_freq_4_type = text
peq_freq_4_value = peq_freq_4
peq_q_4_type = text
peq_q_4_value = peq_q_4
peq_gain_4_type = text
peq_gain_4_value = peq_gain_4
peq_freq_5_type = text
peq_freq_5_value = peq_freq_5
peq_q_5_type = text
peq_q_5_value = peq_q_5
peq_gain_5_type = text
peq_gain_5_value = peq_gain_5
peq_freq_6_type = text
peq_freq_6_value = peq_freq_6
peq_q_6_type = text
peq_q_6_value = peq_q_6
peq_gain_6_type = text
peq_gain_6_value = peq_gain_6
peq_freq_7_type = text
peq_freq_7_value = peq_freq_7
peq_q_7_type = text
peq_q_7_value = peq_q_7
peq_gain_7_type = text
peq_gain_7_value = peq_gain_7
peq_freq_8_type = text
peq_freq_8_value = peq_freq_8
peq_q_8_type = text
peq_q_8_value = peq_q_8
peq_gain_8_type = text
peq_gain_8_value = peq_gain_8
peq_freq_9_type = text
peq_freq_9_value = peq_freq_9
peq_q_9_type = text
peq_q_9_value = peq_q_9
peq_gain_9_type = text
peq_gain_9_value = peq_gain_9
# Hi- and low-pass filters
# The channel is the current channel selected
hpf_text_type = text
hpf_text_value = hpf
hpf_shape_type = choice
hpf_shape_value = hpf_shape
lpf_text_type = text
lpf_text_value = lpf
lpf_shape_type = choice
lpf_shape_value = lpf_shape
out_release_text_type=text
out_release_text_value=limiter_release
out_release_text_unit=dB/s
out_release_knob_type=knob
out_release_knob_value=limiter_release
# Output gain, the channel is not specified and depends on the current
# channel selected
out_gain_slider_type = slider
out_gain_slider_value = out_gain
out_gain_slider_min_label = out_gain_min
out_gain_slider_max_label = out_gain_max
out_gain_text_type = text
out_gain_text_value = out_gain
out_gain_text_unit=dB
mute_out_type = toggle-button
mute_out_value = mute_out
[in_panel]
svg_file = in_panel.svg
controls = peq_type_0, peq_type_1, peq_type_2, peq_type_3, peq_type_4, peq_freq_0, peq_q_0, peq_gain_0,
peq_freq_1, peq_q_1, peq_gain_1, peq_freq_2, peq_q_2, peq_gain_2, peq_freq_3, peq_q_3, peq_gain_3,
peq_freq_4, peq_q_4, peq_gain_4, diagram,peq_sw_0, peq_sw_1, peq_sw_2, peq_sw_3, peq_sw_4, Q_Bw_1,
memberList, groupList
default_channel=0
cs_button_value = cs_in
# Animated diagram for PEQ control
diagram_type = PEQ_diagram
diagram_values = peq_freq_0, peq_q_0, peq_gain_0, peq_freq_1, peq_q_1, peq_gain_1, peq_freq_2, peq_q_2, peq_gain_2,
peq_freq_3, peq_q_3, peq_gain_3, peq_freq_4, peq_q_4, peq_gain_4
diagram_group_eq_enabled = True
peq_colours = ('white','white','black','black','black','black','black','black','black','black','red', 'yellow', 'green','cyan', 'magenta')
groupList_settings = {
"filter":["Group EQ (MK2 Only)",],
"border":[10,10],
'align':'center',
"scroll":False,
'childSize':[145,40],
'backgroundColour':[14,14,14],
'textBackgroundColour':[14,14,14],
'textForegroundColour':[255,255,255],
'namePos':[60,10],
'nameSize':[85,20],
'showID':['1',[4,65,91],[255,255,255],[5,5],[40,30],[0,158,226],30]
}
memberList_settings = {
"filter":None,
"border":[10,10],
'align':'center',
"scroll":True,
'childSize':[145,20],
'backgroundColour':[70,70,70],
'textBackgroundColour':[70,70,70],
'textForegroundColour':[235,235,235],
'namePos':[40,0],
'nameSize':[120,20],
'launch':['nww/Unit_launch',[130,1]],
'showID':['1',[70,70,70],[235,235,235],[7,0],[20,20],[70,70,70],18]
}
[peq_type_0]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_TYPE)s
channel = 0
num = 10
values = 128,129,130,131,132,133,134,136
labels = Bell, Notch, AllPass, Low Shelf, High Shelf,Band Pass, High Pass, Low Pass
default_value = 128
[peq_type_1]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_TYPE)s
channel = 0
num = 11
values = 128,129,130,131,132,133,134,136
labels = Bell, Notch, AllPass, Low Shelf, High Shelf,Band Pass, High Pass, Low Pass
default_value = 128
[peq_type_2]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_TYPE)s
channel = 0
num = 12
values = 128,129,130,131,132,133,134,136
labels = Bell, Notch, AllPass, Low Shelf, High Shelf,Band Pass, High Pass, Low Pass
default_value = 128
[peq_type_3]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_TYPE)s
channel = 0
num = 13
values = 128,129,130,131,132,133,134,136
labels = Bell, Notch, AllPass, Low Shelf, High Shelf,Band Pass, High Pass, Low Pass
default_value = 128
[peq_type_4]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_TYPE)s
channel = 0
num = 14
values = 128,129,130,131,132,133,134,136
labels = Bell, Notch, AllPass, Low Shelf, High Shelf,Band Pass, High Pass, Low Pass
default_value = 128
# PEQ frequencies. Note that the channel number is missing, it comes
# from the context
[peq_freq_0]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_FREQ)s
channel = 0
num = 10
min_value=20
max_value = 20000
default_value = 67
units = Hz
[peq_freq_1]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_FREQ)s
channel = 0
num = 11
min_value=20
max_value = 20000
default_value = 200
units = Hz
[peq_freq_2]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_FREQ)s
channel = 0
num = 12
min_value=20
max_value = 20000
default_value = 600
units = Hz
[peq_freq_3]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_FREQ)s
channel = 0
num = 13
min_value=20
max_value = 20000
default_value = 1800
units = Hz
[peq_freq_4]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_FREQ)s
channel = 0
num = 14
min_value=20
max_value = 20000
default_value = 5400
units = Hz
# PEQ Q factors
[peq_q_0]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_Q)s
channel = 0
num = 10
min_value = 0.2
max_value = 25.0
default_value = 1.0
units = float
scale = 10
[peq_q_1]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_Q)s
channel = 0
num = 11
min_value = 0.2
max_value = 25.0
default_value = 1.0
units = float
scale = 10
[peq_q_2]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_Q)s
channel = 0
num = 12
min_value = 0.2
max_value = 25.0
default_value = 1.0
units = float
scale = 10
[peq_q_3]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_Q)s
channel = 0
num = 13
min_value = 0.2
max_value = 25.0
default_value = 1.0
units = float
scale = 10
[peq_q_4]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_Q)s
channel = 0
num = 14
min_value = 0.2
max_value = 25.0
default_value = 1.0
units = float
scale = 10
# PEQ gains
[peq_gain_0]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_GAIN)s
channel = 0
num = 10
min_value = -12
max_value = 12
default_value = 0.0
units = dB
scale = 100
[peq_gain_1]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_GAIN)s
channel = 0
num = 11
min_value = -12.0
max_value = 12.0
default_value = 0.0
units = dB
scale = 100
[peq_gain_2]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_GAIN)s
channel = 0
num = 12
min_value = -12.0
max_value = 12.0
default_value = 0.0
units = dB
scale = 100
[peq_gain_3]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_GAIN)s
channel = 0
num = 13
min_value = -12.0
max_value = 12.0
default_value = 0.0
units = dB
scale = 100
[peq_gain_4]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_GAIN)s
channel = 0
num = 14
min_value = -12.0
max_value = 12.0
default_value = 0.0
units = dB
scale = 100
[Q_Bw]
struct_id=255
member_id = 1000
channel = 0
num = 0
default_value = 0
[peq_0_on]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_ON)s
channel = 0
num = 10
default_value = 0
[peq_1_on]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_ON)s
channel = 0
num = 11
default_value = 0
[peq_2_on]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_ON)s
channel = 0
num = 12
default_value = 0
[peq_3_on]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_ON)s
channel = 0
num = 13
default_value = 0
[peq_4_on]
struct_id=%(STRUCT_ID_PEQ)s
member_id = %(MEMBER_ID_ON)s
channel = 0
num = 14
default_value = 0