update amped

This commit is contained in:
SatyrDiamond 2023-11-14 03:54:06 -05:00
parent 9037a7eca1
commit b9de8069a7
4 changed files with 130 additions and 30 deletions

View File

@ -42,10 +42,11 @@ def get(cvpj_l, location, p_id, fallbackval, **kwargs):
def get_minmax(cvpj_l, location, p_id, fallbackval, **kwargs):
paramsvalname = data_values.get_value(kwargs, 'groupname', 'params')
paramdata = data_values.nested_dict_get_value(cvpj_l, location+[paramsvalname, p_id])
if paramdata != None: return paramdata['value'], paramdata['type'], paramdata['name']
v_min = paramdata['min'] if 'min' in paramdata else None
v_max = paramdata['max'] if 'max' in paramdata else None
return fallbackval, 'notfound', '', v_min, v_max
if paramdata != None:
v_min = paramdata['min'] if 'min' in paramdata else None
v_max = paramdata['max'] if 'max' in paramdata else None
return paramdata['value'], paramdata['type'], paramdata['name'], v_min, v_max
return fallbackval, 'notfound', '', 0, 1
def remove(cvpj_l, p_id):
if 'params' in cvpj_l:

View File

@ -349,7 +349,11 @@ def song_end(cvpj_l):
if iftrackname: name_usable.append(global_miditracks[usedinstid[0]][1])
color_usable.append(global_miditracks[usedinstid[0]][4])
if usedinstid[3]:
if not usedinstid[3]:
name, color = dataset_midi.object_get_name_color('inst', str(usedinstid[1]))
name_usable.append(name)
color_usable.append(color)
else:
name_usable.append('Drums')
color_usable.append([0.81, 0.80, 0.82])
@ -361,17 +365,16 @@ def song_end(cvpj_l):
ifsametrackid = data_values.ifallsame([s_fx_usedinstid[x][0] for x in range(usedinlen)])
ifsameinstid = data_values.ifallsame([s_fx_usedinstid[x][1] for x in range(usedinlen)])
ifsamegroups = data_values.ifallsame([s_fx_usedinstid[x][4] for x in range(usedinlen)])
ifsamealldrums = data_values.ifallsame([s_fx_usedinstid[x][3] for x in range(usedinlen)]) and s_fx_usedinstid[0][3]
ifsamealldrums = bool(data_values.ifallsame([s_fx_usedinstid[x][3] for x in range(usedinlen)]) and s_fx_usedinstid[0][3])
if ifsametrackid:
name_usable.append(global_miditracks[s_fx_usedinstid[0][0]][1])
if global_miditracks[s_fx_usedinstid[0][0]][1] != '': name_usable.append(global_miditracks[s_fx_usedinstid[0][0]][1])
color_usable.append(global_miditracks[s_fx_usedinstid[0][0]][4])
if ifsameinstid:
if not ifsamealldrums:
name, color = dataset_midi.object_get_name_color('inst', used_inst[1])
name_usable.append(name)
color_usable.append(color)
if ifsameinstid and not ifsamealldrums:
name, color = dataset_midi.object_get_name_color('inst', str(s_fx_usedinstid[0][1]))
name_usable.append(name)
color_usable.append(color)
if ifsamegroups:
name, color = dataset_midi.groups_get_name_color('inst', s_fx_usedinstid[0][4])
@ -388,6 +391,8 @@ def song_end(cvpj_l):
color_usable.append([0.4, 0.4, 0.4])
print(usedinlen, name_usable, color_usable)
out_name = data_values.list_usefirst(name_usable)
out_color = data_values.list_usefirst(color_usable)

View File

@ -359,7 +359,7 @@ def encode_devices(amped_tr_devices, trackid, amped_autodata):
if s_amped_auto[0] == 'mix': autoloc = ['slot',pluginid,'wet']
if s_amped_auto[0] == 'down':
for autopoint in s_amped_auto[1]: autopoint['value'] = 100*(2**(autopoint['value']*10))
auto_data.add_pl(cvpj_l, 'float', ['plugin',pluginid,s_amped_auto[0]], s_amped_auto[1])
auto_data.add_pl(cvpj_l, 'float', ['plugin',pluginid,'freq'], auto_nopl.to_pl(s_amped_auto[1]))
auto_data.add_pl(cvpj_l, 'float', autoloc, auto_nopl.to_pl(s_amped_auto[1]))

View File

@ -52,6 +52,11 @@ def addsample(zip_amped, filepath):
outnum = audio_id[filebasename]
return outnum
def eq_calc_q(band_type, q_val):
if band_type in ['low_pass', 'high_pass']: q_val = xtramath.logpowmul(q_val, 0.5) if q_val != 0 else q_val
if band_type in ['peak']: q_val = xtramath.logpowmul(q_val, -1) if q_val != 0 else q_val
return q_val
def amped_maketrack():
amped_trackdata = {}
amped_trackdata["id"] = getid()
@ -90,15 +95,48 @@ def amped_makedevice(className, label):
amped_device["bypass"] = False
return amped_device
def do_idparams(cvpj_plugindata):
def copyauto_cvpj_to_amped(deviceid, paramid, autoloc, paramtype, minval, maxval):
cvpj_data = auto_nopl.getpoints(cvpj_l, autoloc)
out_auto = []
if cvpj_data: out_auto += [create_autodata(deviceid, paramid, cvpj_data, paramtype, minval, maxval)]
return out_auto
def copyauto_cvpj_to_amped_addmul(deviceid, paramid, autoloc, paramtype, minval, maxval, addval, mulval):
cvpj_data = auto_nopl.getpoints(cvpj_l, autoloc)
out_auto = []
if cvpj_data:
for point in cvpj_data: point['value'] = (point['value']+addval)*mulval
out_auto += [create_autodata(deviceid, paramid, cvpj_data, paramtype, minval, maxval)]
return out_auto
def create_autodata(deviceid, paramid, cvpj_points, paramtype, minval, maxval):
amped_param = {}
amped_param['param'] = {"deviceId": deviceid, "name": paramid}
amped_param['points'] = cvpjauto_to_ampedauto(cvpj_points)
if paramtype == 'float':
amped_param['spec'] = {"type": "numeric", "min": minval, "max": maxval, "curve": 0, "step": 0}
if paramtype == 'int':
amped_param['spec'] = {"type": "numeric", "min": minval, "max": maxval, "curve": 0, "step": 1}
return amped_param
def do_idparams(cvpj_plugindata, pluginid, deviceid, amped_auto):
paramout = []
paramlist = cvpj_plugindata.param_list()
for paramnum in range(len(paramlist)):
paramdata = cvpj_plugindata.param_get(paramlist[paramnum], 0)
paramout.append({"id": paramnum, "name": paramdata[2], "value": paramdata[0]})
paramid = paramlist[paramnum]
paramdata = cvpj_plugindata.param_get_minmax(paramid, 0)
ampedpid = paramdata[2].replace('__', '/')
cvpj_autodata = auto_nopl.getpoints(cvpj_l, ['plugin', pluginid, paramid])
if cvpj_autodata != None:
amped_auto.append(
create_autodata(deviceid, ampedpid, cvpj_autodata, ampedpid, paramdata[3], paramdata[4])
)
paramout.append({"id": paramnum, "name": ampedpid, "value": paramdata[0]})
return paramout
def amped_parse_effects(fxchain_audio):
def amped_parse_effects(fxchain_audio, amped_auto):
outdata = []
for pluginid in fxchain_audio:
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
@ -107,6 +145,8 @@ def amped_parse_effects(fxchain_audio):
fx_on = not fx_on
out_auto = []
if plugtype[0] == 'universal' and plugtype[1] in ['compressor', 'expander']:
device_params = []
@ -160,7 +200,16 @@ def amped_parse_effects(fxchain_audio):
if plugtype[1] == 'compressor': devicedata = amped_makedevice('Compressor', 'Compressor')
if plugtype[1] == 'expander': devicedata = amped_makedevice('Expander', 'Expander')
deviceid = devicedata['id']
out_auto += copyauto_cvpj_to_amped(deviceid, 'preGainDB', ['plugin', pluginid, 'pregain'], 'float', -12, 24)
out_auto += copyauto_cvpj_to_amped(deviceid, 'ratio', ['plugin', pluginid, 'ratio'], 'float', 1, 20)
out_auto += copyauto_cvpj_to_amped(deviceid, 'thresholdDB', ['plugin', pluginid, 'threshold'], 'float', -60, 0)
out_auto += copyauto_cvpj_to_amped_addmul(deviceid, 'attackTimeMS', ['plugin', pluginid, 'attack'], 'float', 0, 300, 0, 1000)
out_auto += copyauto_cvpj_to_amped_addmul(deviceid, 'releaseTimeMS', ['plugin', pluginid, 'release'], 'float', 0, 5000, 0, 1000)
out_auto += copyauto_cvpj_to_amped_addmul(deviceid, 'lookaheadTimeMS', ['plugin', pluginid, 'lookahead'], 'float', 0, 10, 0, 1000)
out_auto += copyauto_cvpj_to_amped(deviceid, 'postGainDB', ['plugin', pluginid, 'threshold'], 'float', 0, 24)
out_auto += copyauto_cvpj_to_amped_addmul(deviceid, 'softKneeWidth', ['plugin', pluginid, 'threshold'], 'float', 0, 1, 0, 1/6)
devicedata['bypass'] = fx_on
devicedata['params'] = device_params
outdata.append(devicedata)
@ -190,6 +239,7 @@ def amped_parse_effects(fxchain_audio):
elif plugtype == ['universal', 'eq-bands']:
devicedata = amped_makedevice('EqualizerPro', 'Equalizer')
deviceid = devicedata['id']
devicedata['bypass'] = fx_on
out_params = []
@ -217,10 +267,7 @@ def amped_parse_effects(fxchain_audio):
if band_type == 'low_shelf': eq_bandtype = 3
if band_type == 'high_shelf': eq_bandtype = 4
if band_type in ['low_pass', 'high_pass']:
band_res = xtramath.logpowmul(band_res, 0.5) if band_res != 0 else band_res
if band_type in ['low_pass', 'peak']:
band_res = xtramath.logpowmul(band_res, -1) if band_res != 0 else band_res
band_res = eq_calc_q(band_type, band_res)
out_params.append({"id": paramnum, "name": filtername+'active', "value": band_on})
out_params.append({"id": paramnum+1, "name": filtername+'freq', "value": band_freq})
@ -228,8 +275,16 @@ def amped_parse_effects(fxchain_audio):
out_params.append({"id": paramnum+3, "name": filtername+'type', "value": eq_bandtype})
out_params.append({"id": paramnum+4, "name": filtername+'q', "value": band_res})
out_auto += copyauto_cvpj_to_amped(deviceid, 'filter/'+eqnumtxt+'/freq', ['plugin_eq', pluginid, eqnumtxt+'_freq'], 'float', 20, 20000)
out_auto += copyauto_cvpj_to_amped(deviceid, 'filter/'+eqnumtxt+'/gain', ['plugin_eq', pluginid, eqnumtxt+'_gain'], 'float', -24, 24)
cvpj_autodata_res = auto_nopl.getpoints(cvpj_l, ['plugin_eq', pluginid, eqnumtxt+'_res'])
if cvpj_autodata_res:
for point in cvpj_autodata_res: point['value'] = eq_calc_q(band_type, point['value'])
out_auto += [create_autodata(deviceid, 'filter/'+eqnumtxt+'/q', cvpj_autodata_res, 'float', 0.1, 40)]
paramnum += 5
out_auto += copyauto_cvpj_to_amped(deviceid, 'postGain', ['plugin', pluginid, 'gain_out'], 'float', -24, 24)
postGain = cvpj_plugindata.param_get('gain_out', 0)[0]
out_params.append({"id": paramnum, "name": 'postGain', "value": postGain})
@ -240,10 +295,13 @@ def amped_parse_effects(fxchain_audio):
d_freq = cvpj_plugindata.param_get('freq', 0)[0]
d_depth = cvpj_plugindata.param_get('depth', 0)[0]
devicedata = amped_makedevice('Vibrato', 'Vibrato')
deviceid = devicedata['id']
devicedata['bypass'] = fx_on
device_params = []
device_params.append({'id': 13, 'name': 'delayLfoRateHz', 'value': d_freq})
device_params.append({'id': 12, 'name': 'delayLfoDepth', 'value': d_depth})
out_auto += copyauto_cvpj_to_amped(deviceid, 'delayLfoRateHz', ['plugin', pluginid, 'freq'], 'float', 0.01, 5)
out_auto += copyauto_cvpj_to_amped(deviceid, 'delayLfoDepth', ['plugin', pluginid, 'depth'], 'float', 0, 1)
devicedata['params'] = device_params
outdata.append(devicedata)
@ -251,26 +309,38 @@ def amped_parse_effects(fxchain_audio):
d_freq = cvpj_plugindata.param_get('freq', 0)[0]
d_depth = cvpj_plugindata.param_get('depth', 0)[0]
devicedata = amped_makedevice('Tremolo', 'Tremolo')
deviceid = devicedata['id']
devicedata['bypass'] = fx_on
device_params = []
device_params.append({'id': 6, 'name': 'lfoARateHz', 'value': d_freq})
device_params.append({'id': 5, 'name': 'lfoADepth', 'value': d_depth})
out_auto += copyauto_cvpj_to_amped(deviceid, 'lfoARateHz', ['plugin', pluginid, 'freq'], 'float', 0.01, 5)
out_auto += copyauto_cvpj_to_amped(deviceid, 'lfoADepth', ['plugin', pluginid, 'depth'], 'float', 0, 1)
devicedata['params'] = device_params
outdata.append(devicedata)
elif plugtype == ['universal', 'bitcrush']:
b_bits = cvpj_plugindata.param_get('bits', 0)[0]
b_freq = cvpj_plugindata.param_get('freq', 0)[0]
b_freq = (math.log(b_freq / 100) / math.log(2))/10
b_freq = (math.log(cvpj_plugindata.param_get('freq', 0)[0] / 100) / math.log(2))/10
devicedata = amped_makedevice('BitCrusher', 'BitCrusher')
deviceid = devicedata['id']
devicedata['bypass'] = fx_on
device_params = []
device_params.append({'id': 0, 'name': 'bits', 'value': b_bits})
device_params.append({'id': 1, 'name': 'down', 'value': b_freq})
device_params.append({'id': 2, 'name': 'mix', 'value': fx_wet})
cvpj_autodata_mix = auto_nopl.getpoints(cvpj_l, ['slot', pluginid, 'wet'])
cvpj_autodata_bits = auto_nopl.getpoints(cvpj_l, ['plugin', pluginid, 'bits'])
cvpj_autodata_freq = auto_nopl.getpoints(cvpj_l, ['plugin', pluginid, 'freq'])
if cvpj_autodata_mix: out_auto += [create_autodata(deviceid, 'mix', cvpj_autodata_mix, 'float', 0, 1)]
if cvpj_autodata_bits: out_auto += [create_autodata(deviceid, 'bits', cvpj_autodata_bits, 'float', 2, 16)]
if cvpj_autodata_freq:
for point in cvpj_autodata_freq: point['value'] = (math.log(point['value'] / 100) / math.log(2))/10
out_auto += [create_autodata(deviceid, 'down', cvpj_autodata_freq, 'float', 0, 1)]
devicedata['params'] = device_params
outdata.append(devicedata)
@ -290,7 +360,7 @@ def amped_parse_effects(fxchain_audio):
elif plugtype[1] in ['BitCrusher', 'Chorus',
'CompressorMini', 'Delay', 'Distortion', 'Equalizer',
'Flanger', 'Gate', 'Limiter', 'LimiterMini', 'Phaser',
'Reverb', 'Tremolo', 'Vibrato', 'Equalizer']:
'Reverb', 'Tremolo', 'Vibrato']:
classname = plugtype[1]
classlabel = plugtype[1]
if classname == 'CompressorMini': classlabel = 'Equalizer Mini'
@ -298,9 +368,13 @@ def amped_parse_effects(fxchain_audio):
if classname == 'LimiterMini': classlabel = 'Limiter Mini'
if classname == 'EqualizerPro': classlabel = 'Equalizer'
devicedata = amped_makedevice(classname, classlabel)
deviceid = devicedata['id']
devicedata['bypass'] = fx_on
devicedata['params'] = do_idparams(cvpj_plugindata)
devicedata['params'] = do_idparams(cvpj_plugindata, pluginid, deviceid, out_auto)
outdata.append(devicedata)
if amped_auto != None: amped_auto += out_auto
return outdata
@ -367,11 +441,31 @@ class output_cvpj_f(plugin_output.base):
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
plugtype = cvpj_plugindata.type_get()
if plugtype[0] == 'native-amped':
if plugtype[1] in ['Augur', 'OBXD', 'Dexed']:
inst_supported = True
devicedata = amped_makedevice('WAM', plugtype[1])
if plugtype[1] == "Augur": wamClassName = 'AUGUR'
if plugtype[1] == "OBXD": wamClassName = 'OBXD'
if plugtype[1] == "Dexed": wamClassName = 'DEXED'
devicedata['wamClassName'] = wamClassName
devicedata['wamPreset'] = cvpj_plugindata.dataval_get('data', '{}')
amped_trackdata["devices"].append(devicedata)
if plugtype[1] in ['Volt', 'VoltMini', 'Granny']:
inst_supported = True
if plugtype[1] == "Volt": devicedata = amped_makedevice('Volt', 'VOLT')
if plugtype[1] == "VoltMini": devicedata = amped_makedevice('VoltMini', 'VOLT Mini')
if plugtype[1] == "Granny": devicedata = amped_makedevice('Granny', 'Granny')
deviceid = devicedata['id']
devicedata['params'] = do_idparams(cvpj_plugindata, pluginid, deviceid, amped_trackdata["automations"])
amped_trackdata["devices"].append(devicedata)
if plugtype == ['synth-nonfree', 'Europa']:
inst_supported = True
europa_data = amped_makedevice('WAM','Europa')
europa_data['params'] = []
europa_data['bypass'] = False
europa_data['wamClassName'] = 'Europa'
wamPreset = {}
wamPreset['patch'] = 'DawVert'
@ -570,7 +664,7 @@ class output_cvpj_f(plugin_output.base):
amped_trackdata["automations"].append({"param": autoname[1], "points": ampedauto})
if 'chain_fx_audio' in cvpj_trackdata:
amped_effects = amped_parse_effects(cvpj_trackdata['chain_fx_audio'])
amped_effects = amped_parse_effects(cvpj_trackdata['chain_fx_audio'], amped_trackdata["automations"])
for amped_effect in amped_effects:
amped_trackdata["devices"].append(amped_effect)
@ -593,7 +687,7 @@ class output_cvpj_f(plugin_output.base):
cvpj_master = cvpj_l['track_master']
amped_out["masterTrack"]['volume'] = data_values.get_value(cvpj_master, 'vol', 1.0)
if 'chain_fx_audio' in cvpj_master:
amped_out["masterTrack"]['devices'] = amped_parse_effects(cvpj_master['chain_fx_audio'])
amped_out["masterTrack"]['devices'] = amped_parse_effects(cvpj_master['chain_fx_audio'], None)
amped_out["workspace"] = {"library":False,"libraryWidth":300,"trackPanelWidth":160,"trackHeight":80,"beatWidth":24,"contentEditor":{"active":False,"trackId":5,"mode":"noteEditor","beatWidth":48,"noteEditorKeyHeight":10,"velocityPanelHeight":90,"velocityPanel":False,"audioEditorVerticalZoom":1,"height":400,"scroll":{"left":0,"top":0},"quantizationValue":0.25,"chordCreator":{"active":False,"scale":{"key":"C","mode":"Major"}}},"trackInspector":True,"trackInspectorTrackId":5,"arrangementScroll":{"left":0,"top":0},"activeTool":"arrow","timeDisplayInBeats":False,"openedDeviceIds":[],"virtualKeyboard":{"active":False,"height":187,"keyWidth":30,"octave":5,"scrollPositions":{"left":0,"top":0}},"xybeatz":{"active":False,"height":350,"zones":[{"genre":"Caribbean","beat":{"bpm":100,"name":"Zouk Electro 2"}},{"genre":"Soul Funk","beat":{"bpm":120,"name":"Defunkt"}},{"genre":"Greatest Breaks","beat":{"bpm":100,"name":"Walk This Way"}},{"genre":"Brazil","beat":{"bpm":95,"name":"Samba Partido Alto 1"}}],"parts":[{"x":0.75,"y":0.75,"gain":1},{"x":0.9,"y":0.2,"gain":1},{"x":0.8,"y":0.45,"gain":1},{"x":0.7,"y":0.7,"gain":1},{"x":0.7,"y":1,"gain":1},{"x":0.5,"y":0.5,"gain":1}],"partId":5,"fullKit":True,"soloPartId":-1,"complexity":50,"zoneId":0,"lastPartId":1},"displayedAutomations":{}}