This commit is contained in:
SatyrDiamond 2023-11-20 20:49:23 -05:00
parent 10d5330f69
commit 9478343e9f
19 changed files with 496 additions and 884 deletions

View File

@ -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;
1 id valsoundid
2 128
3 129
4 130
5 131
6 132
7 133
8 134
9 135
10 136
11 137
12 138
13 139
14 140
15 141
16 142
17 143 bass1
18 144 bass2
19 145 bass3
20 146 bass4
21 147 bass5
22 148 bass6
23 149 bass7
24 150 bass8
25 151 bass9
26 152 bass10
27 153 bass11
28 154 bass12
29 155 bass13
30 156 bass14
31 157 bass15
32 158 bass16
33 159 bass17
34 160 bass18
35 161 bass19
36 162 bass20
37 163 bass21
38 164 bass22
39 165 bass23
40 166 bass24
41 167 bass25
42 168 bass26
43 169 bass27
44 170 bass28
45 171 bass29
46 172 bass30
47 173 bass31
48 174 bass32
49 175 bass33
50 176 bass34
51 177 bass35
52 178 bass36
53 179 bass37
54 180 bass38
55 181 bass39
56 182 bass40
57 183 bass41
58 184 bass42
59 185 bass43
60 186 bass44
61 187 bass45
62 188 bass46
63 189 bass47
64 190 bass48
65 191 bass49
66 192 bass50
67 193 bass51
68 194 bass52
69 195 bass53
70 196 bass54
71 197 brass1
72 198 brass2
73 199 brass3
74 200 brass4
75 201 brass5
76 202 brass6
77 203 brass7
78 204 brass8
79 205 brass9
80 206 brass10
81 207 brass11
82 208 brass12
83 209 brass13
84 210 brass14
85 211 brass15
86 212 brass16
87 213 brass17
88 214 brass18
89 215 brass19
90 216 brass20
91 217 bell1
92 218 bell2
93 219 bell3
94 220 bell4
95 221 bell5
96 222 bell6
97 223 bell7
98 224 bell8
99 225 bell9
100 226 bell10
101 227 bell11
102 228 bell12
103 229 bell13
104 230 bell14
105 231 bell15
106 232 bell16
107 233 bell17
108 234 bell18
109 235 guitar1
110 236 guitar2
111 237 guitar3
112 238 guitar4
113 239 guitar5
114 240 guitar6
115 241 guitar7
116 242 guitar8
117 243 guitar9
118 244 guitar10
119 245 guitar11
120 246 guitar12
121 247 guitar13
122 248 guitar14
123 249 guitar15
124 250 guitar16
125 251 guitar17
126 252 guitar18
127 253 lead1
128 254 lead2
129 255 lead3
130 256 lead4
131 257 lead5
132 258 lead6
133 259 lead7
134 260 lead8
135 261 lead9
136 262 lead10
137 263 lead11
138 264 lead12
139 265 lead13
140 266 lead14
141 267 lead15
142 268 lead16
143 269 lead17
144 270 lead18
145 271 lead19
146 272 lead20
147 273 lead21
148 274 lead22
149 275 lead23
150 276 lead24
151 277 lead25
152 278 lead26
153 279 lead27
154 280 lead28
155 281 lead29
156 282 lead30
157 283 lead31
158 284 lead32
159 285 lead33
160 286 lead34
161 287 lead35
162 288 lead36
163 289 lead37
164 290 lead38
165 291 lead39
166 292 lead40
167 293 lead41
168 294 lead42
169 295 piano1
170 296 piano2
171 297 piano3
172 298 piano4
173 299 piano5
174 300 piano6
175 301 piano7
176 302 piano8
177 303 piano9
178 304 piano10
179 305 piano11
180 306 piano12
181 307 piano13
182 308 piano14
183 309 piano15
184 310 piano16
185 311 piano17
186 312 piano18
187 313 piano19
188 314 piano20
189 315 se1
190 316 se2
191 317 se3
192 318 special1
193 319 special2
194 320 special3
195 321 special4
196 322 special5
197 323 strpad1
198 324 strpad2
199 325 strpad3
200 326 strpad4
201 327 strpad5
202 328 strpad6
203 329 strpad7
204 330 strpad8
205 331 strpad9
206 332 strpad10
207 333 strpad11
208 334 strpad12
209 335 strpad13
210 336 strpad14
211 337 strpad15
212 338 strpad16
213 339 strpad17
214 340 strpad18
215 341 strpad19
216 342 strpad20
217 343 strpad21
218 344 strpad22
219 345 strpad23
220 346 strpad24
221 347 strpad25
222 348 wind1
223 349 wind2
224 350 wind3
225 351 wind4
226 352 wind5
227 353 wind6
228 354 wind7
229 355 wind8
230 356 world1
231 357 world2
232 358 world3
233 359 world4
234 360 world5
235 361 world6
236 362 world7
237 363
238 364
239 365

View File

@ -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 = []

View File

@ -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)

View File

@ -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')

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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', "")

View File

@ -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()

View File

@ -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]

View File

@ -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]

View File

@ -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

View File

@ -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))

View File

@ -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