update
This commit is contained in:
parent
10d5330f69
commit
9478343e9f
|
@ -0,0 +1,239 @@
|
|||
id;valsoundid
|
||||
128;
|
||||
129;
|
||||
130;
|
||||
131;
|
||||
132;
|
||||
133;
|
||||
134;
|
||||
135;
|
||||
136;
|
||||
137;
|
||||
138;
|
||||
139;
|
||||
140;
|
||||
141;
|
||||
142;
|
||||
143;bass1
|
||||
144;bass2
|
||||
145;bass3
|
||||
146;bass4
|
||||
147;bass5
|
||||
148;bass6
|
||||
149;bass7
|
||||
150;bass8
|
||||
151;bass9
|
||||
152;bass10
|
||||
153;bass11
|
||||
154;bass12
|
||||
155;bass13
|
||||
156;bass14
|
||||
157;bass15
|
||||
158;bass16
|
||||
159;bass17
|
||||
160;bass18
|
||||
161;bass19
|
||||
162;bass20
|
||||
163;bass21
|
||||
164;bass22
|
||||
165;bass23
|
||||
166;bass24
|
||||
167;bass25
|
||||
168;bass26
|
||||
169;bass27
|
||||
170;bass28
|
||||
171;bass29
|
||||
172;bass30
|
||||
173;bass31
|
||||
174;bass32
|
||||
175;bass33
|
||||
176;bass34
|
||||
177;bass35
|
||||
178;bass36
|
||||
179;bass37
|
||||
180;bass38
|
||||
181;bass39
|
||||
182;bass40
|
||||
183;bass41
|
||||
184;bass42
|
||||
185;bass43
|
||||
186;bass44
|
||||
187;bass45
|
||||
188;bass46
|
||||
189;bass47
|
||||
190;bass48
|
||||
191;bass49
|
||||
192;bass50
|
||||
193;bass51
|
||||
194;bass52
|
||||
195;bass53
|
||||
196;bass54
|
||||
197;brass1
|
||||
198;brass2
|
||||
199;brass3
|
||||
200;brass4
|
||||
201;brass5
|
||||
202;brass6
|
||||
203;brass7
|
||||
204;brass8
|
||||
205;brass9
|
||||
206;brass10
|
||||
207;brass11
|
||||
208;brass12
|
||||
209;brass13
|
||||
210;brass14
|
||||
211;brass15
|
||||
212;brass16
|
||||
213;brass17
|
||||
214;brass18
|
||||
215;brass19
|
||||
216;brass20
|
||||
217;bell1
|
||||
218;bell2
|
||||
219;bell3
|
||||
220;bell4
|
||||
221;bell5
|
||||
222;bell6
|
||||
223;bell7
|
||||
224;bell8
|
||||
225;bell9
|
||||
226;bell10
|
||||
227;bell11
|
||||
228;bell12
|
||||
229;bell13
|
||||
230;bell14
|
||||
231;bell15
|
||||
232;bell16
|
||||
233;bell17
|
||||
234;bell18
|
||||
235;guitar1
|
||||
236;guitar2
|
||||
237;guitar3
|
||||
238;guitar4
|
||||
239;guitar5
|
||||
240;guitar6
|
||||
241;guitar7
|
||||
242;guitar8
|
||||
243;guitar9
|
||||
244;guitar10
|
||||
245;guitar11
|
||||
246;guitar12
|
||||
247;guitar13
|
||||
248;guitar14
|
||||
249;guitar15
|
||||
250;guitar16
|
||||
251;guitar17
|
||||
252;guitar18
|
||||
253;lead1
|
||||
254;lead2
|
||||
255;lead3
|
||||
256;lead4
|
||||
257;lead5
|
||||
258;lead6
|
||||
259;lead7
|
||||
260;lead8
|
||||
261;lead9
|
||||
262;lead10
|
||||
263;lead11
|
||||
264;lead12
|
||||
265;lead13
|
||||
266;lead14
|
||||
267;lead15
|
||||
268;lead16
|
||||
269;lead17
|
||||
270;lead18
|
||||
271;lead19
|
||||
272;lead20
|
||||
273;lead21
|
||||
274;lead22
|
||||
275;lead23
|
||||
276;lead24
|
||||
277;lead25
|
||||
278;lead26
|
||||
279;lead27
|
||||
280;lead28
|
||||
281;lead29
|
||||
282;lead30
|
||||
283;lead31
|
||||
284;lead32
|
||||
285;lead33
|
||||
286;lead34
|
||||
287;lead35
|
||||
288;lead36
|
||||
289;lead37
|
||||
290;lead38
|
||||
291;lead39
|
||||
292;lead40
|
||||
293;lead41
|
||||
294;lead42
|
||||
295;piano1
|
||||
296;piano2
|
||||
297;piano3
|
||||
298;piano4
|
||||
299;piano5
|
||||
300;piano6
|
||||
301;piano7
|
||||
302;piano8
|
||||
303;piano9
|
||||
304;piano10
|
||||
305;piano11
|
||||
306;piano12
|
||||
307;piano13
|
||||
308;piano14
|
||||
309;piano15
|
||||
310;piano16
|
||||
311;piano17
|
||||
312;piano18
|
||||
313;piano19
|
||||
314;piano20
|
||||
315;se1
|
||||
316;se2
|
||||
317;se3
|
||||
318;special1
|
||||
319;special2
|
||||
320;special3
|
||||
321;special4
|
||||
322;special5
|
||||
323;strpad1
|
||||
324;strpad2
|
||||
325;strpad3
|
||||
326;strpad4
|
||||
327;strpad5
|
||||
328;strpad6
|
||||
329;strpad7
|
||||
330;strpad8
|
||||
331;strpad9
|
||||
332;strpad10
|
||||
333;strpad11
|
||||
334;strpad12
|
||||
335;strpad13
|
||||
336;strpad14
|
||||
337;strpad15
|
||||
338;strpad16
|
||||
339;strpad17
|
||||
340;strpad18
|
||||
341;strpad19
|
||||
342;strpad20
|
||||
343;strpad21
|
||||
344;strpad22
|
||||
345;strpad23
|
||||
346;strpad24
|
||||
347;strpad25
|
||||
348;wind1
|
||||
349;wind2
|
||||
350;wind3
|
||||
351;wind4
|
||||
352;wind5
|
||||
353;wind6
|
||||
354;wind7
|
||||
355;wind8
|
||||
356;world1
|
||||
357;world2
|
||||
358;world3
|
||||
359;world4
|
||||
360;world5
|
||||
361;world6
|
||||
362;world7
|
||||
363;
|
||||
364;
|
||||
365;
|
|
|
@ -12,14 +12,8 @@ from functions import data_values
|
|||
from functions import plugin_vst2
|
||||
from functions import plugins
|
||||
|
||||
from functions_plugparams import data_vc2xml
|
||||
from functions_plugparams import params_various_fx
|
||||
from functions_plugparams import params_vital
|
||||
|
||||
|
||||
______debugtxt______ = False
|
||||
|
||||
|
||||
pl_pc_in = []
|
||||
pl_pc_in_always = []
|
||||
pl_pc_out = []
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import math
|
||||
import struct
|
||||
from functions import data_values
|
||||
from functions import data_bytes
|
||||
from functions import plugins
|
||||
from functions import xtramath
|
||||
from functions import audio_wav
|
||||
|
||||
def wave_sine(x): return math.sin((x-0.5)*(math.pi*2))
|
||||
def wave_saw(x): return x-math.floor(x)
|
||||
def wave_tri(x): return abs((x*2)%(2)-1)
|
||||
def wave_squ(x, pw):
|
||||
if wave_tri(x) > pw: return 1
|
||||
else: return -1
|
||||
|
||||
def tripleoct(x, shape, pw, one, two):
|
||||
if shape == 'sine': samplepoint = wave_sine(x) + wave_sine(x*2)*one + wave_sine(x*4)*two
|
||||
elif shape == 'saw': samplepoint = wave_saw(x) + wave_saw(x*2)*one + wave_saw(x*4)*two
|
||||
elif shape == 'triangle': samplepoint = wave_tri(x) + wave_tri(x*2)*one + wave_tri(x*4)*two
|
||||
elif shape == 'square': samplepoint = wave_squ(x, pw) + wave_squ(x*2, pw)*one + wave_squ(x*4, pw)*two
|
||||
else: samplepoint = x
|
||||
return samplepoint
|
||||
|
||||
def resizewave(inputwave, **kwargs):
|
||||
dur_input = len(inputwave)
|
||||
numpoints = kwargs['points'] if 'points' in kwargs else 2048
|
||||
numpointshalf = numpoints // 2
|
||||
wave_data = []
|
||||
smooth = kwargs['smooth'] if 'smooth' in kwargs else True if dur_input > 32 else False
|
||||
|
||||
if smooth == False:
|
||||
for num in range(numpoints):
|
||||
s_pos = num/numpoints
|
||||
wave_data.append(inputwave[math.floor(s_pos*dur_input)])
|
||||
|
||||
else:
|
||||
inputwave += inputwave
|
||||
for num in range(numpoints):
|
||||
s_pos = num/numpoints
|
||||
wpn_float = s_pos*dur_input
|
||||
wpn_floor = int(math.floor(wpn_float))
|
||||
betweenpoints = wpn_float-wpn_floor
|
||||
out_val = xtramath.between_from_one(inputwave[wpn_floor], inputwave[wpn_floor+1], betweenpoints)
|
||||
wave_data.append(out_val)
|
||||
|
||||
return wave_data
|
||||
|
||||
def create_wave(shape, mul, pw, **kwargs):
|
||||
numpoints = data_values.get_value(kwargs, 'points', 2048)
|
||||
halfpoint = numpoints // 2
|
||||
wave_data = []
|
||||
if shape == 'sine':
|
||||
for num in range(numpoints): wave_data.append(wave_sine(num/2048))
|
||||
if shape == 'saw':
|
||||
for num in range(numpoints): wave_data.append(wave_saw(num/2048))
|
||||
if shape == 'triangle':
|
||||
for num in range(numpoints): wave_data.append(wave_tri(num/2048))
|
||||
if shape == 'square':
|
||||
for num in range(numpoints): wave_data.append(wave_squ(num/2048, pw))
|
||||
if shape == 'square_roundend':
|
||||
for num in range(numpoints):
|
||||
if num <= halfpoint: wave_data.append((wave_sine(num/4096)*-1))
|
||||
else: wave_data.append(0)
|
||||
if shape == 'mooglike':
|
||||
for num in range(numpoints):
|
||||
if num <= halfpoint: wave_data.append(num/halfpoint)
|
||||
else: wave_data.append(wave_tri((num+halfpoint)/numpoints)**3)
|
||||
if shape == 'exp':
|
||||
for num in range(numpoints): wave_data.append(wave_tri((num+halfpoint)/numpoints)**3)
|
||||
return wave_data
|
||||
|
||||
def cvpjwave2wave(cvpj_plugdata, wave_name, **kwargs):
|
||||
wavedata = cvpj_plugdata.wave_get(wave_name)
|
||||
if wavedata != None:
|
||||
wavedata_points = wavedata['points']
|
||||
if 'range' in wavedata:
|
||||
rangedata = wavedata['range']
|
||||
wavedata_points = [xtramath.between_to_one(rangedata[0], rangedata[1], i) for i in wavedata_points]
|
||||
return resizewave(wavedata_points, **kwargs)
|
||||
else: return None
|
||||
|
||||
def wave2file(cvpj_plugdata, wave_name, fileloc):
|
||||
wavedata = cvpjwave2wave(cvpj_plugdata, wave_name)
|
||||
if wavedata != None:
|
||||
audiowavdata = [int(i*65535) for i in wavedata]
|
||||
wave_data = data_bytes.unsign_16(struct.pack('H'*len(audiowavdata), *audiowavdata))
|
||||
audio_wav.generate(fileloc, wave_data, 1, 44100, 16, None)
|
||||
|
||||
def cvpjharm2wave(cvpj_plugdata, harm_name):
|
||||
harmdata = cvpj_plugdata.harmonics_get(harm_name)
|
||||
if harmdata != None:
|
||||
harmonics_data = harmdata['harmonics']
|
||||
wavedata_points = []
|
||||
for num in range(2048):
|
||||
s_pos = num/2048
|
||||
sample = 0
|
||||
for harm_num in range(len(harmonics_data)):
|
||||
sine_pitch = s_pos*(harm_num+1)
|
||||
sine_vol = harmonics_data[harm_num]
|
||||
sample += wave_sine(sine_pitch)*sine_vol
|
||||
wavedata_points.append(sample)
|
||||
min_value = min(wavedata_points)
|
||||
max_value = max(wavedata_points)
|
||||
wavedata_points = [xtramath.between_to_one(min_value, max_value, i) for i in wavedata_points]
|
||||
return wavedata_points
|
||||
else: return None
|
||||
|
||||
def harm2file(cvpj_plugdata, harm_name, fileloc):
|
||||
wavedata = cvpjharm2wave(cvpj_plugdata, harm_name)
|
||||
audiowavdata = [int(i*65535) for i in wavedata]
|
||||
wave_data = data_bytes.unsign_16(struct.pack('H'*len(audiowavdata), *audiowavdata))
|
||||
audio_wav.generate(fileloc, wave_data, 1, 44100, 16, None)
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import lxml.etree as ET
|
||||
from functions import plugin_vst2
|
||||
from functions_plugparams import data_vc2xml
|
||||
from functions_plugdata import data_vc2xml
|
||||
|
||||
def addvalue(xmltag, name, value):
|
||||
temp_xml = ET.SubElement(xmltag, 'VALUE')
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import plugin_vst2
|
||||
from functions_plugparams import data_nullbytegroup
|
||||
from functions_plugdata import data_nullbytegroup
|
||||
|
||||
class dragonfly_hall_data:
|
||||
def __init__(self):
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import lxml.etree as ET
|
||||
from functions import plugin_vst2
|
||||
from functions_plugparams import data_vc2xml
|
||||
from functions_plugdata import data_vc2xml
|
||||
|
||||
class juicysfplugin_data:
|
||||
def __init__(self, cvpj_plugindata):
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import lxml.etree as ET
|
||||
from functions import plugin_vst2
|
||||
from functions_plugparams import data_vc2xml
|
||||
from functions_plugdata import data_vc2xml
|
||||
|
||||
class m8bp_data:
|
||||
def __init__(self, cvpj_plugindata):
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import lxml.etree as ET
|
||||
from functions import plugin_vst2
|
||||
from functions_plugparams import data_vc2xml
|
||||
from functions_plugdata import data_vc2xml
|
||||
|
||||
class socalabs_data:
|
||||
def __init__(self, cvpj_plugindata):
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import plugin_vst2
|
||||
from functions_plugparams import data_nullbytegroup
|
||||
from functions_plugdata import data_nullbytegroup
|
||||
|
||||
class wolfshaper_data:
|
||||
def __init__(self):
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import plugins
|
||||
from functions import data_bytes
|
||||
|
||||
def opl2sbi_plugin(cvpj_l, pluginid,
|
||||
iModChar, iCarChar, iModScale, iCarScale,
|
||||
iModAttack, iCarAttack, iModSustain, iCarSustain,
|
||||
iModWaveSel, iCarWaveSel, iFeedback):
|
||||
print('opl2sbi_plugin')
|
||||
|
||||
opl_mod_flags, opl_mod_mul = data_bytes.splitbyte(iModChar)
|
||||
opl_mod_trem, opl_mod_vib, opl_mod_sust, opl_mod_krs = data_bytes.to_bin(opl_mod_flags, 4)
|
||||
opl_car_flags, opl_car_mul = data_bytes.splitbyte(iCarChar)
|
||||
opl_car_trem, opl_car_vib, opl_car_sust, opl_car_krs = data_bytes.to_bin(opl_car_flags, 4)
|
||||
opl_mod_kls = iModScale >> 6
|
||||
opl_mod_out = iModScale & 0x3F
|
||||
opl_car_kls = iCarScale >> 6
|
||||
opl_car_out = iCarScale & 0x3F
|
||||
opl_fb = iFeedback
|
||||
|
||||
opl_fb = iFeedback & 0x07
|
||||
opl_con = iFeedback >> 3
|
||||
|
||||
opl_mod_wave = iModWaveSel
|
||||
opl_car_wave = iCarWaveSel
|
||||
opl_mod_att, opl_mod_dec = data_bytes.splitbyte(iModAttack)
|
||||
opl_car_att, opl_car_dec = data_bytes.splitbyte(iCarAttack)
|
||||
opl_mod_sus, opl_mod_rel = data_bytes.splitbyte(iModSustain)
|
||||
opl_car_sus, opl_car_rel = data_bytes.splitbyte(iCarSustain)
|
||||
|
||||
print(opl_mod_wave, opl_car_wave)
|
||||
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'fm', 'opl2')
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "feedback", opl_fb, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "percussive", 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "perctype", 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "tremolo_depth", 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "vibrato_depth", 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "fm", opl_con, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_scale", opl_mod_kls, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_freqmul", opl_mod_mul, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_env_attack", (opl_mod_att*-1)+15, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_env_sustain", (opl_mod_sus*-1)+15, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_perc_env", 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_env_decay", (opl_mod_dec*-1)+15, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_env_release", opl_mod_rel, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_level", (opl_mod_out*-1)+63, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_tremolo", opl_mod_trem, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_vibrato", opl_mod_vib, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_ksr", opl_mod_krs, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "mod_waveform", opl_mod_wave, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_scale", opl_car_kls, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_freqmul", opl_car_mul, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_env_attack", (opl_car_att*-1)+15, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_env_sustain", (opl_car_sus*-1)+15, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_perc_env", 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_env_decay", (opl_car_dec*-1)+15, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_env_release", opl_car_rel, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_level", (opl_car_out*-1)+63, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_tremolo", opl_car_trem, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_vibrato", opl_car_vib, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_ksr", opl_car_krs, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "car_waveform", opl_car_wave, 'int', "")
|
|
@ -1,57 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import io
|
||||
import math
|
||||
|
||||
def initparams():
|
||||
global params
|
||||
params = {}
|
||||
params['pub'] = {}
|
||||
params['pub']['freq_start'] = 440
|
||||
params['pub']['freq_end'] = 440
|
||||
params['pub']['f_env_release'] = 1000
|
||||
params['pub']['dist_start'] = 0
|
||||
params['pub']['dist_end'] = 0
|
||||
params['pub']['gain'] = 0.5
|
||||
params['pub']['env_slope'] = 0.5
|
||||
params['pub']['freq_slope'] = 0.5
|
||||
params['pub']['noise'] = 0
|
||||
params['pub']['freq_note_start'] = 0.25
|
||||
params['pub']['freq_note_end'] = 0.25
|
||||
params['pub']['env_release'] = 0
|
||||
params['pub']['phase_offs'] = 0
|
||||
params['pub']['dist_on'] = 0
|
||||
params['pub']['f1_cutoff'] = 1
|
||||
params['pub']['f1_res'] = 0
|
||||
params['pub']['f1_drive'] = 0.2
|
||||
params['pub']['main_gain'] = 0.70710677
|
||||
params['pub']['e1_attack'] = 0.1
|
||||
params['pub']['e1_decay'] = 0.14142135
|
||||
params['pub']['e1_sustain'] = 0.75
|
||||
params['pub']['e1_release'] = 0.1
|
||||
params['priv'] = {}
|
||||
params['priv']['f1_type'] = 0.5
|
||||
params['priv']['f1_on'] = 0.25
|
||||
params['priv']['midi_chan'] = 0
|
||||
|
||||
def setvalue(i_cat, i_name, i_value):
|
||||
global params
|
||||
params[i_cat][i_name] = i_value
|
||||
|
||||
def getparams():
|
||||
global params
|
||||
|
||||
out = io.BytesIO()
|
||||
out.write(b'!PARAMS;\n')
|
||||
|
||||
for paramcat in params:
|
||||
for paramval in params[paramcat]:
|
||||
o_value = params[paramcat][paramval]
|
||||
if paramval == 'freq_start': o_value = math.sqrt((o_value-2.51)/3000)
|
||||
if paramval == 'freq_end': o_value = math.sqrt((o_value-2.51)/2000)
|
||||
if paramval == 'f_env_release': if o_value > 2.4: o_value = math.sqrt((o_value-2.51)/5000)
|
||||
out.write(str.encode(i_cat+' : '+i_name+'='+str(i_value)+';\n'))
|
||||
|
||||
out.seek(0)
|
||||
return out.read()
|
|
@ -1,90 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import data_values
|
||||
from functions import plugins
|
||||
|
||||
def create_blank_prog():
|
||||
progout = ''
|
||||
progtext = '0 0 0 0.001000 0.001000 1.000000 0.001000 '
|
||||
progout += '1 '
|
||||
for _ in range(128): progout += progtext
|
||||
return progout
|
||||
|
||||
def initparams():
|
||||
global data_progs
|
||||
global data_main
|
||||
data_main = {}
|
||||
data_progs = {}
|
||||
|
||||
data_main['number_of_slices'] = '0.000000'
|
||||
data_main['sliceSensitivity'] = '0.500000'
|
||||
data_main['attack'] = '0.001000'
|
||||
data_main['decay'] = '0.001000'
|
||||
data_main['sustain'] = '1.000000'
|
||||
data_main['release'] = '0.001000'
|
||||
data_main['load'] = '0.000000'
|
||||
data_main['slicemode'] = '1.000000'
|
||||
data_main['programGrid'] = '1.000000'
|
||||
data_main['playmode'] = '0.000000'
|
||||
data_main['pitchbendDepth'] = '12.000000'
|
||||
data_main['OneShotForward'] = '1.000000'
|
||||
data_main['OneShotReverse'] = '0.000000'
|
||||
data_main['LoopForward'] = '0.000000'
|
||||
data_main['LoopReverse'] = '0.000000'
|
||||
|
||||
data_progs['slices'] = 'empty'
|
||||
data_progs['filepathFromUI'] = ''
|
||||
data_progs['program00'] = create_blank_prog()
|
||||
data_progs['program01'] = create_blank_prog()
|
||||
data_progs['program02'] = create_blank_prog()
|
||||
data_progs['program03'] = create_blank_prog()
|
||||
data_progs['program04'] = create_blank_prog()
|
||||
data_progs['program05'] = create_blank_prog()
|
||||
data_progs['program06'] = create_blank_prog()
|
||||
data_progs['program07'] = create_blank_prog()
|
||||
data_progs['program08'] = create_blank_prog()
|
||||
data_progs['program09'] = create_blank_prog()
|
||||
data_progs['program10'] = create_blank_prog()
|
||||
data_progs['program11'] = create_blank_prog()
|
||||
data_progs['program12'] = create_blank_prog()
|
||||
data_progs['program13'] = create_blank_prog()
|
||||
data_progs['program14'] = create_blank_prog()
|
||||
data_progs['program15'] = create_blank_prog()
|
||||
|
||||
def slicerdata(cvpj_l, pluginid):
|
||||
global data_progs
|
||||
global data_main
|
||||
|
||||
filepath = plugins.get_plug_dataval(cvpj_l, pluginid, 'file', '')
|
||||
slices = plugins.get_plug_dataval(cvpj_l, pluginid, 'slices', [])
|
||||
trigger = plugins.get_plug_dataval(cvpj_l, pluginid, 'trigger', 'normal')
|
||||
|
||||
if trigger == 'normal': releasevalue = '0.001000'
|
||||
if trigger == 'oneshot': releasevalue = '1.000000'
|
||||
|
||||
progtable = []
|
||||
for _ in range(127): progtable.append('0 0 0 0.001000 0.001000 1.000000 '+releasevalue+' ')
|
||||
data_main['release'] = releasevalue
|
||||
progout = ''
|
||||
progout += str(len(slices))+' 128 '
|
||||
data_main['number_of_slices'] = str(len(slices))
|
||||
|
||||
for slicenum in range(len(slices)):
|
||||
slicedata = slices[slicenum]
|
||||
s_reverse = data_values.get_value(slicedata, 'reverse', False)
|
||||
s_looped = data_values.get_value(slicedata, 'looped', False)
|
||||
loopout = 0
|
||||
if s_reverse == True: loopout += 1
|
||||
if s_looped == True: loopout += 2
|
||||
progtable[slicenum] = str(slicedata['pos']*2)+' '+str(slicedata['end']*2)+' '+str(loopout)+' 0.001000 0.001000 1.000000 '+releasevalue
|
||||
|
||||
data_progs['filepathFromUI'] = filepath
|
||||
|
||||
for prognums in progtable: progout += prognums+' '
|
||||
data_progs['program00'] = progout
|
||||
|
||||
def getparams():
|
||||
global data_progs
|
||||
global data_main
|
||||
return [data_progs, data_main]
|
|
@ -1,49 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# -------------------- wolfshaper --------------------
|
||||
|
||||
def wolfshaper_init():
|
||||
global wolfshapergraph
|
||||
global wolfshaperparams
|
||||
wolfshapergraph = {}
|
||||
wolfshapergraph['graph'] = ''
|
||||
wolfshaperparams = {}
|
||||
wolfshaperparams['pregain'] = 2.000000
|
||||
wolfshaperparams['wet'] = 1.000000
|
||||
wolfshaperparams['postgain'] = 1.000000
|
||||
wolfshaperparams['removedc'] = 1.000000
|
||||
wolfshaperparams['oversample'] = 0.000000
|
||||
wolfshaperparams['bipolarmode'] = 0.000000
|
||||
wolfshaperparams['warptype'] = 0.000000
|
||||
wolfshaperparams['warpamount'] = 0.000000
|
||||
wolfshaperparams['vwarptype'] = 0.000000
|
||||
wolfshaperparams['vwarpamount'] = 0.000000
|
||||
|
||||
def wolfshaper_setvalue(name, value):
|
||||
global wolfshaperparams
|
||||
wolfshaperparams[name] = value
|
||||
|
||||
def wolfshaper_addshape(cvpj_auto):
|
||||
for cvpj_point in cvpj_auto['points']:
|
||||
tension = data_values.get_value(cvpj_point, 'tension', 0)
|
||||
pointtype = data_values.get_value(cvpj_point, 'type', 'normal')
|
||||
wolfshaper_addpoint(cvpj_point['position'],cvpj_point['value'],tension,pointtype)
|
||||
def wolfshaper_addpoint(posX,posY,tension,pointtype):
|
||||
global wolfshapergraph
|
||||
if pointtype == 'normal': pointtype = 0
|
||||
elif pointtype in ['doublecurve', 'doublecurve2', 'doublecurve3']: pointtype = 1
|
||||
elif pointtype == 'stairs':
|
||||
pointtype = 2
|
||||
tension *= -1
|
||||
elif pointtype == 'wave':
|
||||
pointtype = 3
|
||||
tension = ((abs(tension)*-1)+100)*0.2
|
||||
else:
|
||||
pointtype = 1
|
||||
|
||||
wolfshapergraph['graph'] += float.hex(posX)+','+float.hex(posY)+','+float.hex(tension*-100)+','+str(int(pointtype))+';'
|
||||
def wolfshaper_get():
|
||||
global wolfshapergraph
|
||||
global wolfshaperparams
|
||||
return [wolfshapergraph, wolfshaperparams]
|
|
@ -1,125 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import lxml.etree as ET
|
||||
|
||||
# -------------------- magical8bitplug --------------------
|
||||
def shape_m8bp(pluginname, plugindata):
|
||||
m8p_root = ET.Element("root")
|
||||
m8p_params = ET.SubElement(m8p_root, "Params")
|
||||
m8bp_addvalue(m8p_params, "arpeggioDirection", 0.0)
|
||||
m8bp_addvalue(m8p_params, "arpeggioTime", 0.02999999932944775)
|
||||
m8bp_addvalue(m8p_params, "attack", 0.0)
|
||||
m8bp_addvalue(m8p_params, "bendRange", 12.0)
|
||||
m8bp_addvalue(m8p_params, "colorScheme", 1.0)
|
||||
m8bp_addvalue(m8p_params, "decay", 0.0)
|
||||
m8bp_addvalue(m8p_params, "duty", 0.0)
|
||||
m8bp_addvalue(m8p_params, "gain", 0.5)
|
||||
m8bp_addvalue(m8p_params, "isAdvancedPanelOpen_raw", 1.0)
|
||||
m8bp_addvalue(m8p_params, "isArpeggioEnabled_raw", 0.0)
|
||||
m8bp_addvalue(m8p_params, "isDutySequenceEnabled_raw", 0.0)
|
||||
m8bp_addvalue(m8p_params, "isVolumeSequenceEnabled_raw", 0.0)
|
||||
m8bp_addvalue(m8p_params, "maxPoly", 8.0)
|
||||
m8bp_addvalue(m8p_params, "noiseAlgorithm_raw", 0.0)
|
||||
if pluginname == 'shape-square':
|
||||
m8bp_addvalue(m8p_params, "osc", 0.0)
|
||||
m8bp_addvalue(m8p_params, "duty", 2.0)
|
||||
elif pluginname == 'shape-pulse':
|
||||
m8bp_addvalue(m8p_params, "osc", 0.0)
|
||||
if 'duty' in plugindata:
|
||||
if plugindata['duty'] == 0.25: m8bp_addvalue(m8p_params, "duty", 1.0)
|
||||
elif plugindata['duty'] == 0.125: m8bp_addvalue(m8p_params, "duty", 0.0)
|
||||
else: m8bp_addvalue(m8p_params, "duty", 0.0)
|
||||
else: m8bp_addvalue(m8p_params, "duty", 1.0)
|
||||
elif pluginname == 'shape-triangle':
|
||||
m8bp_addvalue(m8p_params, "osc", 1.0)
|
||||
m8bp_addvalue(m8p_params, "duty", 0.0)
|
||||
elif pluginname == 'retro-noise':
|
||||
m8bp_addvalue(m8p_params, "osc", 2.0)
|
||||
if 'type' in plugindata:
|
||||
if plugindata['type'] == '4bit': m8bp_addvalue(m8p_params, "duty", 0.0)
|
||||
elif plugindata['type'] == '1bit_long': m8bp_addvalue(m8p_params, "duty", 1.0)
|
||||
elif plugindata['type'] == '1bit_short': m8bp_addvalue(m8p_params, "duty", 2.0)
|
||||
else: m8bp_addvalue(m8p_params, "duty", 0.0)
|
||||
else: m8bp_addvalue(m8p_params, "duty", 0.0)
|
||||
else: m8bp_addvalue(m8p_params, "osc", 0.0)
|
||||
m8bp_addvalue(m8p_params, "pitchSequenceMode_raw", 0.0)
|
||||
m8bp_addvalue(m8p_params, "release", 0.0)
|
||||
m8bp_addvalue(m8p_params, "restrictsToNESFrequency_raw", 0.0)
|
||||
m8bp_addvalue(m8p_params, "suslevel", 1.0)
|
||||
m8bp_addvalue(m8p_params, "sweepInitialPitch", 0.0)
|
||||
m8bp_addvalue(m8p_params, "sweepTime", 0.1000000014901161)
|
||||
m8bp_addvalue(m8p_params, "vibratoDelay", 0.2999999821186066)
|
||||
m8bp_addvalue(m8p_params, "vibratoDepth", 0.0)
|
||||
m8bp_addvalue(m8p_params, "vibratoIgnoresWheel_raw", 1.0)
|
||||
m8bp_addvalue(m8p_params, "vibratoRate", 0.1500000059604645)
|
||||
return m8p_root
|
||||
|
||||
def m8bp_init():
|
||||
global m8bp_params
|
||||
global m8bp_params_env
|
||||
|
||||
m8bp_params_env = {}
|
||||
m8bp_params_env["duty"] = None
|
||||
m8bp_params_env["pitch"] = None
|
||||
m8bp_params_env["volume"] = None
|
||||
|
||||
m8bp_params = {}
|
||||
m8bp_params["arpeggioDirection"] = 0.0
|
||||
m8bp_params["arpeggioTime"] = 0.02999999932944775
|
||||
m8bp_params["attack"] = 0.0
|
||||
m8bp_params["bendRange"] = 12.0
|
||||
m8bp_params["colorScheme"] = 1.0
|
||||
m8bp_params["decay"] = 0.0
|
||||
m8bp_params["duty"] = 0.0
|
||||
m8bp_params["gain"] = 0.5
|
||||
m8bp_params["isAdvancedPanelOpen_raw"] = 1.0
|
||||
m8bp_params["isArpeggioEnabled_raw"] = 0.0
|
||||
m8bp_params["isPitchSequenceEnabled_raw"] = 0.0
|
||||
m8bp_params["isDutySequenceEnabled_raw"] = 0.0
|
||||
m8bp_params["isVolumeSequenceEnabled_raw"] = 0.0
|
||||
m8bp_params["maxPoly"] = 8.0
|
||||
m8bp_params["noiseAlgorithm_raw"] = 0.0
|
||||
m8bp_params["osc"] = 0.0
|
||||
m8bp_params["duty"] = 2.0
|
||||
m8bp_params["pitchSequenceMode_raw"] = 0.0
|
||||
m8bp_params["release"] = 0.0
|
||||
m8bp_params["restrictsToNESFrequency_raw"] = 0.0
|
||||
m8bp_params["suslevel"] = 1.0
|
||||
m8bp_params["sweepInitialPitch"] = 0.0
|
||||
m8bp_params["sweepTime"] = 0.1000000014901161
|
||||
m8bp_params["vibratoDelay"] = 0.2999999821186066
|
||||
m8bp_params["vibratoDepth"] = 0.0
|
||||
m8bp_params["vibratoIgnoresWheel_raw"] = 1.0
|
||||
m8bp_params["vibratoRate"] = 0.1500000059604645
|
||||
|
||||
def m8bp_setvalue(name, value):
|
||||
global m8bp_params
|
||||
m8bp_params[name] = value
|
||||
|
||||
def m8bp_setenv(name, value):
|
||||
global m8bp_params_env
|
||||
m8bp_params_env[name] = value
|
||||
|
||||
def m8bp_addvalue(xmltag, name, value):
|
||||
temp_xml = ET.SubElement(xmltag, 'PARAM')
|
||||
temp_xml.set('id', str(name))
|
||||
temp_xml.set('value', str(value))
|
||||
|
||||
def m8bp_out():
|
||||
global m8bp_params
|
||||
global m8bp_params_env
|
||||
xml_m8p_root = ET.Element("root")
|
||||
xml_m8p_params = ET.SubElement(xml_m8p_root, "Params")
|
||||
for m8bp_param in m8bp_params:
|
||||
m8bp_addvalue(xml_m8p_params, m8bp_param, str(m8bp_params[m8bp_param]))
|
||||
|
||||
m8p_dutyEnv = ET.SubElement(xml_m8p_root, "dutyEnv")
|
||||
m8p_pitchEnv = ET.SubElement(xml_m8p_root, "pitchEnv")
|
||||
m8p_volumeEnv = ET.SubElement(xml_m8p_root, "volumeEnv")
|
||||
|
||||
if m8bp_params_env["duty"] != None: m8p_dutyEnv.text = ','.join(str(item) for item in m8bp_params_env["duty"])
|
||||
if m8bp_params_env["pitch"] != None: m8p_pitchEnv.text = ','.join(str(item) for item in m8bp_params_env["pitch"])
|
||||
if m8bp_params_env["volume"] != None: m8p_volumeEnv.text = ','.join(str(item) for item in m8bp_params_env["volume"])
|
||||
|
||||
return xml_m8p_root
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,89 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_output
|
||||
import json
|
||||
from functions import plugins
|
||||
|
||||
class output_cvpj(plugin_output.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'output'
|
||||
def getname(self): return 'debug_plugdata'
|
||||
def getshortname(self): return 'debug_plugdata'
|
||||
def gettype(self): return 'debug'
|
||||
def plugin_archs(self): return None
|
||||
def getdawcapabilities(self):
|
||||
return {
|
||||
'fxrack': 'debug',
|
||||
'track_lanes': 'debug',
|
||||
'placement_cut': 'debug',
|
||||
'placement_loop': 'debug',
|
||||
'track_nopl': 'debug',
|
||||
'auto_nopl': 'debug',
|
||||
'placement_audio_events': 'debug',
|
||||
'placement_audio_stretch': ['warp', 'rate']
|
||||
}
|
||||
def getsupportedplugformats(self): return ['vst2', 'vst3', 'clap', 'ladspa']
|
||||
def getsupportedplugins(self): return ['sampler:single', 'sampler:multi', 'sampler:slicer', 'soundfont2']
|
||||
def getfileextension(self): return 'nothing'
|
||||
def parse(self, convproj_json, output_file):
|
||||
cvpj_l = json.loads(convproj_json)
|
||||
|
||||
if 'plugins' in cvpj_l:
|
||||
for pluginid in cvpj_l['plugins']:
|
||||
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
print()
|
||||
print(pluginid,'-------------------------------',':'.join([str(x) for x in plugintype]))
|
||||
|
||||
|
||||
i_enabled, i_wet = cvpj_plugindata.fxdata_get()
|
||||
if i_enabled != True or i_wet != 1: print('\t\t FX Data:',i_enabled, i_wet)
|
||||
|
||||
|
||||
param_list = cvpj_plugindata.param_list()
|
||||
if param_list: print('\t\t Params:',', '.join(param_list))
|
||||
|
||||
|
||||
dataval_list = cvpj_plugindata.dataval_list()
|
||||
if dataval_list: print('\t\t DataVals:',', '.join(dataval_list))
|
||||
|
||||
|
||||
asdr_env_list = cvpj_plugindata.asdr_env_list()
|
||||
if asdr_env_list: print('\t\t Env ASDR:',', '.join(asdr_env_list))
|
||||
|
||||
|
||||
env_points_list = cvpj_plugindata.env_points_list()
|
||||
if env_points_list: print('\t\t Env Points:',', '.join(env_points_list))
|
||||
|
||||
|
||||
env_blocks_list = cvpj_plugindata.env_blocks_list()
|
||||
if env_blocks_list: print('\t\t Env Blocks:',', '.join(env_blocks_list))
|
||||
|
||||
|
||||
plug_filter = cvpj_plugindata.filter_get()
|
||||
if plug_filter != (0, 44100, 0, None, None): print('\t\t Filter:',plug_filter)
|
||||
|
||||
|
||||
lfo_list = cvpj_plugindata.lfo_list()
|
||||
if lfo_list: print('\t\t LFOs:',', '.join(lfo_list))
|
||||
|
||||
|
||||
eqbands = cvpj_plugindata.eqband_get(None)
|
||||
if eqbands: print('\t\t EQ Bands:',len(eqbands))
|
||||
|
||||
|
||||
harmonics = cvpj_plugindata.harmonics_list()
|
||||
if harmonics: print('\t\t Harmonics:',len(harmonics))
|
||||
|
||||
|
||||
data_wave.data = cvpj_plugindata.data_wave.list()
|
||||
if data_wave.data: print('\t\t Waves:',len(data_wave.data))
|
||||
|
||||
|
||||
data_wave.able = cvpj_plugindata.data_wave.able_list()
|
||||
if data_wave.able: print('\t\t Wavetable:',len(data_wave.able))
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_plugconv
|
||||
|
||||
from functions import data_dataset
|
||||
from functions import plugin_vst2
|
||||
from functions_plugdata import data_vc2xml
|
||||
import lxml.etree as ET
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['synth-nonfree', None, None], ['vst2', None, None], True, False
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
dataset_synth_nonfree = data_dataset.dataset('./data_dset/synth_nonfree.dset')
|
||||
|
||||
plugname = plugintype[1]
|
||||
|
||||
if plugname == 'Europa':
|
||||
europa_patch = ET.Element("JukeboxPatch")
|
||||
europa_patch.set('patchname', "DawVert")
|
||||
europa_samp = ET.SubElement(europa_patch, "Samples")
|
||||
europa_prop = ET.SubElement(europa_patch, "Properties")
|
||||
europa_obj = ET.SubElement(europa_prop, "Object")
|
||||
europa_obj.set('name', "custom_properties")
|
||||
paramlist = dataset_synth_nonfree.params_list('plugin', 'europa')
|
||||
for paramname in paramlist:
|
||||
dset_paramdata = dataset_synth_nonfree.params_i_get('plugin', 'europa', paramname)
|
||||
eur_value_name = dset_paramdata[5]
|
||||
if dset_paramdata[0] == False:
|
||||
eur_value_type = 'number'
|
||||
eur_value_value = cvpj_plugindata.param_get(paramname, 1)[0]
|
||||
else:
|
||||
eur_value_type = 'string'
|
||||
eur_value_value = cvpj_plugindata.dataval_get(paramname, 1)
|
||||
if paramname in ['Curve1','Curve2','Curve3','Curve4','Curve']:
|
||||
eur_value_value = bytes(eur_value_value).hex().upper()
|
||||
|
||||
europa_value_obj = ET.SubElement(europa_obj, "Value")
|
||||
europa_value_obj.set('property',eur_value_name)
|
||||
europa_value_obj.set('type',eur_value_type)
|
||||
europa_value_obj.text = str(eur_value_value)
|
||||
|
||||
plugin_vst2.replace_data(cvpj_plugindata, 'name', 'any', 'Europa by Reason', 'chunk', data_vc2xml.make(europa_patch), None)
|
||||
return True
|
Loading…
Reference in New Issue