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

207 lines
7.2 KiB
Python

# uncompyle6 version 3.9.3
# Python bytecode version base 2.6 (62161)
# Decompiled from: Python 3.9.25 (main, Oct 31 2025, 23:16:49)
# [GCC 14.2.0]
# Embedded file name: user_config_tcs.pyc
# Compiled at: 2022-05-31 09:29:42
import wx, os, data_model, traceback, one_unit, ConfigParser, protocol, sys, select_keys, select_units, d_protocol, mytime
from user_config_helpers import *
inputSourceSelectOptions = {16: 'Signal Input ',
32: 'Gain Fader Output',
48: 'DSP Core Output',
64: 'Delay Output'}
outputSourceSelectOptions = {16: 'Link Bus ',
32: 'Mixer & Gain Fader Output',
48: 'DSP Core Output',
64: 'Delay Output'}
class outputConfiguration(wx.Panel):
def __init__(self, parent, frame, uiNumber, panelName):
self.frame = frame
self.name = panelName
self.uiNumber = uiNumber
self.parent = parent
wx.Panel.__init__(self, parent, size=(964, 500))
self.lines = {}
self.Show(True)
self.initFinished = False
return
def initMe(self, force=False):
if self.IsShown() == False and force == False:
return
if self.initFinished == True:
return 0
print mytime.displayTime(), 'uct.initMe outputConfiguration', self.name
frame = self.frame
uiNumber = self.uiNumber
if os.name in mac_names:
y = 5
else:
y = 12
self.targetGain = wx.StaticText(self, -1, 'Power Level (0...10)', pos=(640, y), size=(100,
26))
self.targetGain.Wrap(100)
self.lines = {}
self.uiKeys = getKeys(frame, uiNumber)
i = 0
self.factoryItems = 0
for uiIndex in self.uiKeys:
(key, val) = self.uiKeys[uiIndex]
if key.channel != 1 or key.index < 128:
continue
targetGain = str(val[7] / 4.0)
self.createLine(i)
self.lines[i].key = key
self.lines[i].checkBox.SetLabel('Factory')
self.lines[i].targetGain.SetValue(targetGain)
self.lines[i].checkBox.Enable(False)
self.lines[i].targetGain.Enable(False)
i += 1
self.factoryItems += 1
for uiIndex in self.uiKeys:
(key, val) = self.uiKeys[uiIndex]
if key.channel == 1 and key.index >= 128:
continue
targetGain = str(val[7] / 4.0)
self.createLine(i)
self.lines[i].key = key
self.lines[i].checkBox.SetValue(True)
self.lines[i].targetGain.SetValue(targetGain)
self.enable(i)
i += 1
if i - self.factoryItems < 1:
self.createLine(i)
self.initFinished = True
self.Show(True)
return
def createLine(self, i):
if os.name in mac_names:
y = 3
else:
y = 4
p = wx.Panel(self, size=(964, 28))
p.Show(False)
p.checkBox = wx.CheckBox(p, 10 + i, ' User', pos=(10, 2), size=(70, 20))
p.targetGain = wx.TextCtrl(p, 70 + i, '', pos=(640, 1), size=(60, 20))
p.targetGainUnit = wx.StaticText(p, -1, '', pos=(702, y), size=(30, 26))
p.SetPosition((0, 40 + 28 * i))
p.checkBox.SetValue(0)
p.checkBox.Enable(True)
p.key = None
p.lineNumber = i
self.Bind(wx.EVT_CHECKBOX, self.OnEnabled, id=10 + i)
self.lines[i] = p
self.enable(i)
p.Show(True)
return
def enable(self, i):
val = self.lines[i].checkBox.GetValue()
self.lines[i].targetGain.Enable(val)
return
def OnEnabled(self, e):
i = e.GetId() - 10
self.enable(i)
if i == len(self.lines) - 1 and self.lines[i].checkBox.GetValue() == True and i < 1 + self.factoryItems:
if i > 0:
t = self.lines[i]
s = self.lines[0]
t.targetGain.SetValue(s.targetGain.GetValue())
else:
t = self.lines[i]
t.targetGain.SetValue('0')
return
def evaluateLine(self, line):
if line.checkBox.GetValue() == False:
return
else:
flags = int(0)
amplifierGain = 0
calibrationGain = 0
try:
amplifierInputImpedance = 0
except:
amplifierInputImpedance = ''
hardwareOutput = 0
loadImpedance = 0
targetGain = float(line.targetGain.GetValue())
if flags > 15:
print mytime.displayTime(), 'uc.oc.invalid flags:', hex(flags)
flags = 0
amplifierGain *= 4
amplifierGain = int(round(amplifierGain, 0))
if amplifierGain > 255:
amplifierGain = 255
if amplifierGain < 0:
amplifierGain = 0
calibrationGain *= 100.0
calibrationGain += 128
calibrationGain = int(round(calibrationGain, 0))
if calibrationGain < 28:
calibrationGain = 28
if calibrationGain > 228:
calibrationGain = 228
try:
amplifierInputImpedance /= 100
amplifierInputImpedance = int(round(amplifierInputImpedance, 0))
if amplifierInputImpedance < 1:
amplifierInputImpedance = 1
if amplifierInputImpedance > 250:
amplifierInputImpedance = 250
except:
amplifierInputImpedance = 255
hardwareOutput -= 1
hardwareOutput = int(round(hardwareOutput, 0))
if hardwareOutput < 0:
hardwareOutput = 0
if hardwareOutput > max(self.frame.frame.parent.unit_channels):
hardwareOutput = max(self.frame.frame.parent.unit_channels)
loadImpedance *= 4
loadImpedance = int(round(loadImpedance))
if loadImpedance > 255:
loadImpedance = 255
if loadImpedance < 1:
loadImpedance = 1
targetGain *= 4
targetGain = int(round(targetGain))
if targetGain > 255:
targetGain = 255
if targetGain < 0:
targetGain = 0
i = line.lineNumber
self.lines[i].targetGain.SetValue(str(targetGain / 4.0))
try:
sendString = '' + chr(self.uiNumber)
sendString += chr(flags)
sendString += chr(calibrationGain)
sendString += chr(amplifierInputImpedance)
sendString += chr(hardwareOutput)
sendString += chr(loadImpedance)
sendString += chr(amplifierGain)
sendString += chr(targetGain)
mys = 'String: '
for c in sendString:
mys += hex(ord(c)) + ':'
print mys
return sendString
except:
print mytime.displayTime(), 'uc.oc.eL.failed to build string'
traceback.print_exc(file=sys.stdout)
return
return
# okay decompiling pycode/user_config_tcs.pyc