wip
This commit is contained in:
parent
8ad6672ed6
commit
38be22f2d9
|
@ -1,146 +0,0 @@
|
|||
id;name;gm_inst
|
||||
ACCORDN;Accordion;22
|
||||
BAGPIPE1;Bagpipe 1;110
|
||||
BAGPIPE2;Bagpipe 2;110
|
||||
BANJO1;Banjo;106
|
||||
BASS1;Bass 1;35
|
||||
BASS2;Bass 2;36
|
||||
BASSHARP;Bass Harp;null
|
||||
BASSOON1;Bassoon;71
|
||||
BASSTRLG;Bass String Long;null
|
||||
BDRUM1;Bass Drum;null
|
||||
BELLONG;Bell Long;null
|
||||
BELLS;Bells;null
|
||||
BELSHORT;Bell Short;null
|
||||
BNCEBASS;BnceBass;null
|
||||
BRASS1;Brass;63
|
||||
CBASSOON;C Bassoon;null
|
||||
CELESTA;Celesta;9
|
||||
CLAR1;Clarinet 1;72
|
||||
CLAR2;Clarinet 2;72
|
||||
CLARINET;Clarinet;72
|
||||
CLAVECIN;Clavecin;null
|
||||
CROMORNE;Cromorne;null
|
||||
CYMBAL1;Cymbal;null
|
||||
ELCLAV1;Elec Clav 1;null
|
||||
ELCLAV2;Elec Clav 2;null
|
||||
ELECFL;Elec Flute;null
|
||||
ELECVIBE;Elec Vibe;null
|
||||
ELGUIT1;Electric Guitar;27
|
||||
ELGUIT2;Electric Guitar 2;28
|
||||
ELGUIT3;Electric Guitar 3;27
|
||||
ELGUIT4;Electric Guitar 4;28
|
||||
ELORGAN1;Electric Organ;17
|
||||
ELPIANO1;Electric Piano 1;5
|
||||
ELPIANO2;Electric Piano 2;6
|
||||
EPIANO1A;Electric Piano 1a;5
|
||||
EPIANO1B;Electric Piano 1b;6
|
||||
FLUTE;Flute;74
|
||||
FLUTE1;Flute 1;74
|
||||
FLUTE2;Flute 2;76
|
||||
FRHORN1;French Horn 1;61
|
||||
FRHORN2;French Horn 2;61
|
||||
FSTRP1;fstrp1;null
|
||||
FSTRP2;fstrp2;null
|
||||
FUZGUIT1;Fuzz Guitar 1;null
|
||||
FUZGUIT2;Fuzz Guitar 2;null
|
||||
GUITAR1;Guitar;25
|
||||
HARP1;Harp 1;47
|
||||
HARP2;Harp 2;47
|
||||
HARP3;Harp 3;47
|
||||
HARPE1;Harpe;null
|
||||
HARPSI1;Harpsichord 1;7
|
||||
HARPSI2;Harpsichord 2;7
|
||||
HARPSI3;Harpsichord 3;7
|
||||
HARPSI4;Harpsichord 4;7
|
||||
HARPSI5;Harpsichord 5;7
|
||||
HELICPTR;Helicopter;null
|
||||
HIHAT1;Hi-Hat 1;null
|
||||
HIHAT2;Hi-Hat 2;null
|
||||
JAVAICAN;Javaican;null
|
||||
JAZZGUIT;Jazz Guitar;27
|
||||
JEWSHARP;Jew's harp;null
|
||||
KEYBRD1;Keyboard 1;4
|
||||
KEYBRD2;Keyboard 2;6
|
||||
KEYBRD3;Keyboard 3;3
|
||||
LASER;Laser;null
|
||||
LOGDRUM1;Log Drum;null
|
||||
MARIMBA1;Marimba 1;13
|
||||
MARIMBA2;Marimba 2;13
|
||||
MDRNPHON;Mdrnphon;null
|
||||
MLTRDRUM;Mltrdrum;null
|
||||
MOOGSYNT;Moog Synth;null
|
||||
NOISE1;Noise;null
|
||||
OBOE1;Oboe;69
|
||||
ORGAN1;Organ;17
|
||||
ORGAN2;Organ 2;18
|
||||
ORGAN3;Organ 3;19
|
||||
ORGAN3A;Organ 3a;20
|
||||
ORGAN3B;Organ 3b;21
|
||||
ORGNPERC;Percussive Organ;18
|
||||
PHONE1;Phone;null
|
||||
PHONE2;Phone 2;null
|
||||
PIAN1A;Piano 1a;1
|
||||
PIAN1B;Piano 1b;1
|
||||
PIAN1C;Piano 1c;1
|
||||
PIANO;Piano;1
|
||||
PIANO1;Piano 1;1
|
||||
PIANO2;Piano 2;2
|
||||
PIANO3;Piano 3;3
|
||||
PIANO4;Piano 4;4
|
||||
PIANOBEL;Piano Bell;99
|
||||
PIANOF;Piano F;null
|
||||
POPBASS1;Pop Bass;null
|
||||
RKSNARE1;RK Snare;null
|
||||
SAX1;Sax;65
|
||||
SCRATCH;Scratch;null
|
||||
SCRATCH4;Scratch 4;null
|
||||
SDRUM2;Snare Drum 2;null
|
||||
SHRTVIBE;Short Vibe;null
|
||||
SITAR1;Sitar 1;105
|
||||
SITAR2;Sitar 2;105
|
||||
SNAKEFL;Snakefl;null
|
||||
SNARE1;Snare 1;null
|
||||
SNRSUST;Snare Sustain;null
|
||||
SOLOVLN;Solo Violin;41
|
||||
STEELGT1;Acoustic Guitar 1;25
|
||||
STEELGT2;Acoustic Guitar 2;26
|
||||
STRINGS1;Strings 1;null
|
||||
STRNLONG;strnlong;null
|
||||
SYN1;Synth 1;null
|
||||
SYN2;Synth 2;null
|
||||
SYN3;Synth 3;null
|
||||
SYN4;Synth 4;null
|
||||
SYN5;Synth 5;null
|
||||
SYN6;Synth 6;null
|
||||
SYN9;Synth 9;null
|
||||
SYNBAL1;Synbal 1;null
|
||||
SYNBAL2;Synbal 2;null
|
||||
SYNBASS1;Synth Bass;39
|
||||
SYNBASS2;Synth Bass 2;40
|
||||
SYNBASS4;Synth Bass 4;40
|
||||
SYNSNR1;Synth Snare;null
|
||||
SYNSNR2;Synth Snare 2;null
|
||||
TINCAN1;Tin Can;null
|
||||
TOM1;Tom 1;null
|
||||
TOM2;Tom 2;null
|
||||
TRAINBEL;Train Bell;null
|
||||
TRIANGLE;Triangle;null
|
||||
TROMB1;Trombone 1;58
|
||||
TROMB2;Trombone 2;58
|
||||
TRUMPET1;Trumpet 1;57
|
||||
TRUMPET2;Trumpet 2;57
|
||||
TRUMPET3;Trumpet 3;57
|
||||
TRUMPET4;Trumpet 4;57
|
||||
TUBA1;Tuba;59
|
||||
VIBRA1;Vibraphone 1;12
|
||||
VIBRA2;Vibraphone 2;12
|
||||
VIBRA3;Vibraphone 3;12
|
||||
VIOLIN1;Violin 1;41
|
||||
VIOLIN2;Violin 2;41
|
||||
VIOLIN3;Violin 3;41
|
||||
VLNPIZZ1;Violin Pizzicato;46
|
||||
WAVE;Wave;null
|
||||
XYLO1;Xylophone 1;14
|
||||
XYLO2;Xylophone 2;14
|
||||
XYLO3;Xylophone 3;14
|
|
|
@ -1,168 +0,0 @@
|
|||
id;name;group;gm_inst
|
||||
64;square wave;retro;null
|
||||
65;triangle wave;retro;null
|
||||
66;square lead;retro;80
|
||||
67;sawtooth lead 1;retro;81
|
||||
68;sawtooth lead 2;retro;81
|
||||
70;FM twang;retro;null
|
||||
71;FM bass;retro;null
|
||||
72;FM flute;retro;null
|
||||
73;FM organ;retro;null
|
||||
74;NES Pulse;retro;null
|
||||
75;Gameboy Pulse;retro;null
|
||||
76;VRC6 Sawtooth;retro;null
|
||||
77;Atari Square;retro;null
|
||||
78;Atari Bass;retro;null
|
||||
79;Sunsoft Bass;retro;null
|
||||
128;grand piano 1;keyboard;0
|
||||
137;grand piano 2;keyboard;0
|
||||
129;bright piano;keyboard;1
|
||||
130;electric grand;keyboard;2
|
||||
131;honky-tonk piano;keyboard;3
|
||||
132;electric piano 1;keyboard;4
|
||||
133;electric piano 2;keyboard;5
|
||||
134;harpsichord;keyboard;6
|
||||
135;clavinet;keyboard;7
|
||||
136;dulcimer;keyboard;15
|
||||
192;celesta;idiophone;8
|
||||
193;glockenspiel;idiophone;9
|
||||
194;music box 1;idiophone;10
|
||||
195;music box 2;idiophone;10
|
||||
196;vibraphone;idiophone;11
|
||||
197;marimba;idiophone;12
|
||||
198;kalimba;idiophone;108
|
||||
199;xylophone;idiophone;13
|
||||
200;tubular bell;idiophone;14
|
||||
201;bell synth;idiophone;null
|
||||
202;rain drop;idiophone;96
|
||||
203;crystal;idiophone;98
|
||||
204;tinkle bell;idiophone;112
|
||||
205;agogo;idiophone;113
|
||||
256;nylon guitar;guitar;24
|
||||
257;steel guitar;guitar;25
|
||||
258;jazz guitar;guitar;26
|
||||
259;clean guitar;guitar;27
|
||||
260;muted guitar;guitar;28
|
||||
320;acoustic bass;bass;32
|
||||
321;fingered bass;bass;33
|
||||
322;picked bass;bass;34
|
||||
323;fretless bass;bass;35
|
||||
324;slap bass 1;bass;36
|
||||
325;slap bass 2;bass;37
|
||||
326;bass synth 1;bass;38
|
||||
327;bass synth 2;bass;39
|
||||
328;Bass & lead;bass;87
|
||||
329;dubstep yoi yoi;bass;null
|
||||
384;pizzicato strings;plucked_string;45
|
||||
385;harp;plucked_string;46
|
||||
386;sitar;plucked_string;104
|
||||
387;banjo;plucked_string;105
|
||||
388;ukulele;plucked_string;null
|
||||
389;shamisen;plucked_string;106
|
||||
390;koto;plucked_string;107
|
||||
448;overdrive guitar;distortion;29
|
||||
449;distortion guitar;distortion;30
|
||||
450;charango synth;distortion;null
|
||||
451;guitar harmonics;distortion;31
|
||||
452;PWM overdrive;distortion;null
|
||||
453;PWM distortion;distortion;null
|
||||
454;FM overdrive;distortion;null
|
||||
455;FM distortion;distortion;null
|
||||
512;drawbar organ 1;bellows;16
|
||||
513;drawbar organ 2;bellows;16
|
||||
514;percussive organ;bellows;17
|
||||
515;rock organ;bellows;18
|
||||
516;pipe organ;bellows;19
|
||||
517;reed organ;bellows;20
|
||||
518;accordion;bellows;21
|
||||
519;bandoneon;bellows;null
|
||||
520;bagpipe;bellows;109
|
||||
576;violin 1;string;40
|
||||
587;violin 2;string;40
|
||||
577;viola;string;41
|
||||
578;cello;string;42
|
||||
579;contrabass;string;43
|
||||
580;fiddle;string;null
|
||||
581;tremolo strings;string;44
|
||||
582;strings;string;null
|
||||
583;slow strings;string;null
|
||||
584;strings synth 1;string;50
|
||||
585;strings synth 2;string;51
|
||||
586;orchestra hit 1;string;55
|
||||
588;orchestra hit 2;string;55
|
||||
640;choir soprano;vocal;null
|
||||
641;choir tenor;vocal;null
|
||||
642;choir bass;vocal;null
|
||||
643;solo soprano;vocal;null
|
||||
644;solo tenor;vocal;null
|
||||
645;solo bass;vocal;null
|
||||
646;voice ooh;vocal;53
|
||||
647;voice synth;vocal;54
|
||||
648;vox synth lead;vocal;85
|
||||
649;tiny robot;vocal;null
|
||||
650;yowie;vocal;null
|
||||
651;mouse;vocal;null
|
||||
652;gumdrop;vocal;null
|
||||
653;echo drop;vocal;102
|
||||
654;dark choir;vocal;null
|
||||
704;trumpet;brass;56
|
||||
705;trombone;brass;57
|
||||
706;tuba;brass;58
|
||||
707;muted trumpet;brass;59
|
||||
708;french horn;brass;60
|
||||
709;brass section;brass;61
|
||||
710;brass synth 1;brass;62
|
||||
711;brass synth 2;brass;63
|
||||
712;pulse brass;brass;null
|
||||
768;soprano sax;reed;64
|
||||
769;alto sax;reed;65
|
||||
770;tenor sax;reed;66
|
||||
771;baritone sax;reed;67
|
||||
772;sax synth;reed;null
|
||||
773;shehnai;reed;null
|
||||
774;oboe;reed;68
|
||||
775;english horn;reed;69
|
||||
776;bassoon;reed;70
|
||||
777;clarinet;reed;71
|
||||
778;harmonica;reed;22
|
||||
832;flute 1;flute;73
|
||||
843;flute 2;flute;73
|
||||
833;recorder;flute;74
|
||||
834;whistle;flute;78
|
||||
835;ocarina;flute;79
|
||||
836;piccolo;flute;72
|
||||
837;shakuhachi;flute;77
|
||||
838;pan flute;flute;75
|
||||
839;blown bottle;flute;76
|
||||
840;calliope;flute;82
|
||||
841;chiffer;flute;83
|
||||
842;breath noise;flute;null
|
||||
896;new age pad;pad;88
|
||||
897;warm pad;pad;89
|
||||
898;polysynth pad;pad;90
|
||||
899;space voice pad;pad;null
|
||||
900;bowed glass pad;pad;92
|
||||
901;metallic pad;pad;93
|
||||
902;sweep pad;pad;95
|
||||
903;atmosphere;pad;99
|
||||
904;brightness;pad;100
|
||||
905;goblins;pad;101
|
||||
906;sci-fi;pad;103
|
||||
907;flutter pad;pad;null
|
||||
908;feedback pad;pad;null
|
||||
961;steel pan;drum;114
|
||||
962;steel pan synth;drum;null
|
||||
963;timpani;drum;47
|
||||
964;dark strike;drum;null
|
||||
971;synth kick;drum;null
|
||||
1024;guitar fret noise;novelty;120
|
||||
1025;fifth saw lead;novelty;86
|
||||
1026;fifth swell;novelty;null
|
||||
1027;soundtrack;novelty;97
|
||||
1030;bird tweet;novelty;123
|
||||
1031;telephone ring;novelty;124
|
||||
1035;scoot;novelty;null
|
||||
1036;buzz saw;novelty;null
|
||||
1037;mosquito;novelty;null
|
||||
1040;theremin;novelty;null
|
||||
1041;sonar ping;novelty;null
|
|
|
@ -1,62 +0,0 @@
|
|||
id;name
|
||||
-25;Acoustic Bass Drum
|
||||
-24;Bass Drum 1
|
||||
-23;Side Stick
|
||||
-22;Acoustic Snare
|
||||
-21;Hand Clap
|
||||
-20;Electric Snare
|
||||
-19;Low Floor Tom
|
||||
-18;Closed Hi-Hat
|
||||
-17;High Floor Tom
|
||||
-16;Pedal Hi-Hat
|
||||
-15;Low Tom
|
||||
-14;Open Hi-Hat
|
||||
-13;Low-Mid Tom
|
||||
-12;Hi-Mid Tom
|
||||
-11;Crash Cymbal 1
|
||||
-10;High Tom
|
||||
-9;Ride Cymbal 1
|
||||
-8;Chinese Cymbal
|
||||
-7;Ride Bell
|
||||
-6;Tambourine
|
||||
-5;Splash Cymbal
|
||||
-4;Cowbell
|
||||
-3;Crash Symbol 2
|
||||
-2;Vibraslap
|
||||
-1;Ride Cymbal 2
|
||||
0;Hi Bongo
|
||||
1;Low Bongo
|
||||
2;Mute Hi Conga
|
||||
3;Open Hi Conga
|
||||
4;Low Conga
|
||||
5;High Timbale
|
||||
6;Low Timbale
|
||||
7;High Agogo
|
||||
8;Low Agogo
|
||||
9;Cabasa
|
||||
10;Maracas
|
||||
11;Short Whistle
|
||||
12;Long Whistle
|
||||
13;Short Guiro
|
||||
14;Long Guiro
|
||||
15;Claves
|
||||
16;Hi Wood Block
|
||||
17;Low Wood Block
|
||||
18;Mute Cuica
|
||||
19;Open Cuica
|
||||
20;Mute Triangle
|
||||
21;Open Triangle
|
||||
22;Shaker
|
||||
-26;Open Rim Shot
|
||||
-27;Bass Drum L
|
||||
-28;Sticks
|
||||
-29;Snare L
|
||||
-30;Castanet
|
||||
-31;Snare Roll
|
||||
-32;Brush Tap Swirl
|
||||
-33;Brush Slap
|
||||
-34;Brush Swirl
|
||||
-35;Brush Tap
|
||||
-36;Seq Click H
|
||||
23;Jingle Bells
|
||||
24;Bell Tree
|
|
|
@ -1,9 +0,0 @@
|
|||
id;name
|
||||
0;Bass Drum 1
|
||||
1;Bass Drum 2
|
||||
2;Bass Drum 3
|
||||
3;Snare Drum
|
||||
4;Snare Drum 2
|
||||
5;Open Hi-Hat
|
||||
6;Closed Hi-Hat
|
||||
7;Crash Cymbal
|
|
|
@ -1,39 +0,0 @@
|
|||
id;name
|
||||
-12;Bass Drum 2
|
||||
-11;Bass Drum 3 o1f
|
||||
-10;RUFINA BD o2c
|
||||
-9;B.D.(-vBend)
|
||||
-8;BD808_2(-vBend)
|
||||
-7;Cho cho 3 (o2e)
|
||||
-6;Cow-Bell 1
|
||||
-5;Crash Cymbal (noise)
|
||||
-4;Crash Noise
|
||||
-3;Crash Noise Short
|
||||
-2;ETHNIC Percus.0
|
||||
-1;ETHNIC Percus.1
|
||||
0;Heavy BD.
|
||||
1;Heavy BD2
|
||||
2;Heavy SD1
|
||||
3;Hi-Hat close 5_
|
||||
4;Hi-Hat close 4
|
||||
5;Hi-Hat close 5
|
||||
6;Hi-Hat Close 6 -808-
|
||||
7;Hi-hat #7 Metal o3-6
|
||||
8;Hi-Hat Close #8 o4
|
||||
9;Hi-hat Open o4e-g+
|
||||
10;Open-hat2 Metal o4c-
|
||||
12;Open-hat3 Metal
|
||||
11;Hi-Hat Open #4 o4f
|
||||
13;Metal ride o4c or o5c
|
||||
14;Rim Shot #1 o3c
|
||||
15;Snare Drum Light
|
||||
16;Snare Drum Lighter
|
||||
17;Snare Drum 808 o2-o3
|
||||
18;Snare4 -808type- o2
|
||||
19;Snare5 o1-2(Franger)
|
||||
20;Tom (old)
|
||||
21;Synth tom 2 algo 3
|
||||
22;Synth (Noisy) Tom #3
|
||||
23;Synth Tom #3
|
||||
24;Synth -DX7- Tom #4
|
||||
25;Triangle 1 o5c
|
|
|
@ -1,239 +0,0 @@
|
|||
id;name;group;valsoundid
|
||||
128;Square Wave;CHIPTUNE;
|
||||
129;Saw Wave;CHIPTUNE;
|
||||
130;Triangle Wave;CHIPTUNE;
|
||||
131;Sine Wave;CHIPTUNE;
|
||||
132;Noise;CHIPTUNE;
|
||||
133;Dual Square;CHIPTUNE;
|
||||
134;Dual Saw;CHIPTUNE;
|
||||
135;Triangle LO-FI;CHIPTUNE;
|
||||
136;Konami Wave;CHIPTUNE;
|
||||
137;Ramp Wave;CHIPTUNE;
|
||||
138;Pulse Wave;CHIPTUNE;
|
||||
139;MA3 Wave;CHIPTUNE;
|
||||
140;Noise (Bass);CHIPTUNE;
|
||||
141;Noise (Snare);CHIPTUNE;
|
||||
142;Noise (Hi-Hat);CHIPTUNE;
|
||||
143;Analog Bass;BASS;bass1
|
||||
144;Analog Bass #2;BASS;bass2
|
||||
145;Analog Bass #2 (q2);BASS;bass3
|
||||
146;Chopper Bass 0;BASS;bass4
|
||||
147;Chopper Bass 1;BASS;bass5
|
||||
148;Chopper bass 2 (CUT);BASS;bass6
|
||||
149;Chopper bass 3;BASS;bass7
|
||||
150;Elec.Chopper Bass;BASS;bass8
|
||||
151;Effect Bass 1;BASS;bass9
|
||||
152;Effect Bass 2 to UP;BASS;bass10
|
||||
153;Effect Bass 1;BASS;bass11
|
||||
154;Mohaaa;BASS;bass12
|
||||
155;Effect FB Bass #5;BASS;bass13
|
||||
156;Magical bass;BASS;bass14
|
||||
157;E.Bass #6;BASS;bass15
|
||||
158;E.Bass #7;BASS;bass16
|
||||
159;E.Bass 70;BASS;bass17
|
||||
160;VAL006 Euro;BASS;bass18
|
||||
161;E.Bass x2;BASS;bass19
|
||||
162;E.Bass x4;BASS;bass20
|
||||
163;Metal pick bass X5;BASS;bass21
|
||||
164;Groove Bass #1;BASS;bass22
|
||||
165;Analog Groove #2;BASS;bass23
|
||||
166;Harmonics #1;BASS;bass24
|
||||
167;Low Bass x1;BASS;bass25
|
||||
168;Low_bass x2;BASS;bass26
|
||||
169;Low Bass Rezzo;BASS;bass27
|
||||
170;Low Bass Picked;BASS;bass28
|
||||
171;Metal Bass;BASS;bass29
|
||||
172;e.n.bass 1;BASS;bass30
|
||||
173;psg bass 1;BASS;bass31
|
||||
174;psg bass 2;BASS;bass32
|
||||
175;rezonance bass;BASS;bass33
|
||||
176;slap bass;BASS;bass34
|
||||
177;slap bass 1;BASS;bass35
|
||||
178;slap bass 2 (1+);BASS;bass36
|
||||
179;slap bass #3;BASS;bass37
|
||||
180;slap bass pull;BASS;bass38
|
||||
181;slap bass mute;BASS;bass39
|
||||
182;slap bass pick;BASS;bass40
|
||||
183;super bass #2;BASS;bass41
|
||||
184;sp_bass#3 soft;BASS;bass42
|
||||
185;sp_bass#4 soft*2;BASS;bass43
|
||||
186;sp_bass#5 attack;BASS;bass44
|
||||
187;sp.bass#6 rezz;BASS;bass45
|
||||
188;synth bass 1;BASS;bass46
|
||||
189;synth bass 2 myon;BASS;bass47
|
||||
190;synth bass #3 cho!;BASS;bass48
|
||||
191;synth-wind-bass #4;BASS;bass49
|
||||
192;synth bass #5 q2;BASS;bass50
|
||||
193;old wood bass;BASS;bass51
|
||||
194;w.bass bright;BASS;bass52
|
||||
195;w.bass x2 bow;BASS;bass53
|
||||
196;Wood Bass 3;BASS;bass54
|
||||
197;Brass strings;BRASS;brass1
|
||||
198;E.mute Trampet;BRASS;brass2
|
||||
199;HORN 2;BRASS;brass3
|
||||
200;Alpine Horn #3;BRASS;brass4
|
||||
201;Lead brass;BRASS;brass5
|
||||
202;Normal HORN;BRASS;brass6
|
||||
203;Synth Oboe;BRASS;brass7
|
||||
204;Oboe 2;BRASS;brass8
|
||||
205;Attack Brass (q2);BRASS;brass9
|
||||
206;SAX;BRASS;brass10
|
||||
207;Soft brass(lead);BRASS;brass11
|
||||
208;Synth Brass 1 OLD;BRASS;brass12
|
||||
209;Synth Brass 2 OLD;BRASS;brass13
|
||||
210;Synth Brass 3;BRASS;brass14
|
||||
211;Synth Brass #4;BRASS;brass15
|
||||
212;Syn.Brass 5(long);BRASS;brass16
|
||||
213;Synth Brass 6;BRASS;brass17
|
||||
214;Trumpet;BRASS;brass18
|
||||
215;Trumpet 2;BRASS;brass19
|
||||
216;Twin Horn (or OL=25);BRASS;brass20
|
||||
217;Calm Bell;BELL;bell1
|
||||
218;China Bell Double;BELL;bell2
|
||||
219;Church Bell;BELL;bell3
|
||||
220;Church Bell 2;BELL;bell4
|
||||
221;Glocken 1;BELL;bell5
|
||||
222;Harp #1;BELL;bell6
|
||||
223;Harp #2;BELL;bell7
|
||||
224;Kirakira;BELL;bell8
|
||||
225;Marimba;BELL;bell9
|
||||
226;Old Bell;BELL;bell10
|
||||
227;Percus. Bell;BELL;bell11
|
||||
228;Pretty Bell;BELL;bell12
|
||||
229;Synth Bell #0;BELL;bell13
|
||||
230;Synth Bell #1 o5;BELL;bell14
|
||||
231;Synth Bell 2;BELL;bell15
|
||||
232;Viberaphone;BELL;bell16
|
||||
233;Twin Marinba;BELL;bell17
|
||||
234;Bellend;BELL;bell18
|
||||
235;Guitar VeloLow;GUITAR;guitar1
|
||||
236;Guitar VeloHigh;GUITAR;guitar2
|
||||
237;A.Guitar #3;GUITAR;guitar3
|
||||
238;Cutting E.Guitar;GUITAR;guitar4
|
||||
239;Dis. Synth (old);GUITAR;guitar5
|
||||
240;Dra-spi-Dis.G.;GUITAR;guitar6
|
||||
241;Dis.Guitar 3-;GUITAR;guitar7
|
||||
242;Dis.Guitar 3+;GUITAR;guitar8
|
||||
243;Feed-back Guitar 1;GUITAR;guitar9
|
||||
244;Hard Dis. Guitar 1;GUITAR;guitar10
|
||||
245;Hard Dis.Guitar 3;GUITAR;guitar11
|
||||
246;Dis.Guitar '94 Hard;GUITAR;guitar12
|
||||
247;New Dis.Guitar 1;GUITAR;guitar13
|
||||
248;New Dis.Guitar 2;GUITAR;guitar14
|
||||
249;New Dis.Guitar 3;GUITAR;guitar15
|
||||
250;Overdrive.G. (AL=013);GUITAR;guitar16
|
||||
251;METAL;GUITAR;guitar17
|
||||
252;Soft Dis.Guitar;GUITAR;guitar18
|
||||
253;Aco code;LEAD;lead1
|
||||
254;Analog synthe 1;LEAD;lead2
|
||||
255;Bosco-lead;LEAD;lead3
|
||||
256;Cosmo Lead;LEAD;lead4
|
||||
257;Cosmo Lead 2;LEAD;lead5
|
||||
258;Digital lead #1;LEAD;lead6
|
||||
259;Double sin wave;LEAD;lead7
|
||||
260;E.Organ 2 bright;LEAD;lead8
|
||||
261;E.Organ 2 (voice);LEAD;lead9
|
||||
262;E.Organ 4 Click;LEAD;lead10
|
||||
263;E.Organ 5 Click;LEAD;lead11
|
||||
264;E.Organ 6;LEAD;lead12
|
||||
265;E.Organ 7 Church;LEAD;lead13
|
||||
266;Metal Lead;LEAD;lead14
|
||||
267;Metal Lead 3;LEAD;lead15
|
||||
268;MONO Lead;LEAD;lead16
|
||||
269;PSG like PC88 (long);LEAD;lead17
|
||||
270;PSG Cut 1;LEAD;lead18
|
||||
271;Attack Synth;LEAD;lead19
|
||||
272;Sin wave;LEAD;lead20
|
||||
273;Synth, Bell 2;LEAD;lead21
|
||||
274;Chorus #2(Voice)+bell;LEAD;lead22
|
||||
275;Synth Cut 8-4;LEAD;lead23
|
||||
276;Synth long 8-4;LEAD;lead24
|
||||
277;ACO_Code #2;LEAD;lead25
|
||||
278;ACO_Code #3;LEAD;lead26
|
||||
279;Synth FB long 4;LEAD;lead27
|
||||
280;Synth FB long 5;LEAD;lead28
|
||||
281;Synth Lead 0;LEAD;lead29
|
||||
282;Synth Lead 1;LEAD;lead30
|
||||
283;Synth Lead 2;LEAD;lead31
|
||||
284;Synth Lead 3;LEAD;lead32
|
||||
285;Synth Lead 4;LEAD;lead33
|
||||
286;Synth Lead 5;LEAD;lead34
|
||||
287;Synth Lead 6;LEAD;lead35
|
||||
288;Synth Lead 7 (Soft FB);LEAD;lead36
|
||||
289;Synth PSG;LEAD;lead37
|
||||
290;Synth PSG 2;LEAD;lead38
|
||||
291;Synth PSG 3;LEAD;lead39
|
||||
292;Synth PSG 4;LEAD;lead40
|
||||
293;Synth PSG 5;LEAD;lead41
|
||||
294;Sin water synth;LEAD;lead42
|
||||
295;Aco Piano2 (Attack);PIANO;piano1
|
||||
296;Backing 1 (Clav.);PIANO;piano2
|
||||
297;Clav. coad;PIANO;piano3
|
||||
298;Deep Piano 1;PIANO;piano4
|
||||
299;Deep Piano 3;PIANO;piano5
|
||||
300;E.piano #2;PIANO;piano6
|
||||
301;E.piano #3;PIANO;piano7
|
||||
302;E.piano #4(2+);PIANO;piano8
|
||||
303;E.(Bell)Piano #5;PIANO;piano9
|
||||
304;E.Piano #6;PIANO;piano10
|
||||
305;E.Piano #7;PIANO;piano11
|
||||
306;Harpci chord 1;PIANO;piano12
|
||||
307;Harpci 2;PIANO;piano13
|
||||
308;Piano1;PIANO;piano14
|
||||
309;Piano3;PIANO;piano15
|
||||
310;Piano4;PIANO;piano16
|
||||
311;Digital Piano #5;PIANO;piano17
|
||||
312;Piano 6 High-tone;PIANO;piano18
|
||||
313;Panning Harpci;PIANO;piano19
|
||||
314;Yam Harpci chord;PIANO;piano20
|
||||
315;S.E.(Detune is needed o2c);SPECIAL;se1
|
||||
316;S.E. 2 o0-1-2;SPECIAL;se2
|
||||
317;S.E. 3(Feedin /noise add.);SPECIAL;se3
|
||||
318;Digital 1;SPECIAL;special1
|
||||
319;Digital 2;SPECIAL;special2
|
||||
320;Digital[BAS] 3 o2-o3;SPECIAL;special3
|
||||
321;Digital[GTR] 3 o2-o3;SPECIAL;special4
|
||||
322;Digital 4 o4a;SPECIAL;special5
|
||||
323;Accordion1;STRINGS;strpad1
|
||||
324;Accordion2;STRINGS;strpad2
|
||||
325;Accordion3;STRINGS;strpad3
|
||||
326;Chorus #2(Voice);STRINGS;strpad4
|
||||
327;Chorus #3;STRINGS;strpad5
|
||||
328;Chorus #4;STRINGS;strpad6
|
||||
329;F.Strings 1;STRINGS;strpad7
|
||||
330;F.Strings 2;STRINGS;strpad8
|
||||
331;F.Strings 3;STRINGS;strpad9
|
||||
332;F.Strings 4 (low);STRINGS;strpad10
|
||||
333;Pizzicate#1(KOTO2);STRINGS;strpad11
|
||||
334;sound truck modoki;STRINGS;strpad12
|
||||
335;Strings;STRINGS;strpad13
|
||||
336;Synth Accordion;STRINGS;strpad14
|
||||
337;Phaser synthe.;STRINGS;strpad15
|
||||
338;FB Synth.;STRINGS;strpad16
|
||||
339;Synth Strings MB;STRINGS;strpad17
|
||||
340;Synth Strings #2;STRINGS;strpad18
|
||||
341;Synth.Sweep Pad #1;STRINGS;strpad19
|
||||
342;Twin synth. #1 Calm;STRINGS;strpad20
|
||||
343;Twin synth. #2 FB;STRINGS;strpad21
|
||||
344;Twin synth. #3 FB;STRINGS;strpad22
|
||||
345;Vocoder voice1;STRINGS;strpad23
|
||||
346;Voice o3-o5;STRINGS;strpad24
|
||||
347;Voice' o3-o5;STRINGS;strpad25
|
||||
348;Clarinet #1;WIND;wind1
|
||||
349;Clarinet #2 Brighter;WIND;wind2
|
||||
350;E.Flute;WIND;wind3
|
||||
351;E.Flute 2;WIND;wind4
|
||||
352;Flute + Bell;WIND;wind5
|
||||
353;Old flute;WIND;wind6
|
||||
354;Whistle 1;WIND;wind7
|
||||
355;Whistle 2;WIND;wind8
|
||||
356;Banjo (Harpci);WORLD;world1
|
||||
357;KOTO;WORLD;world2
|
||||
358;Koto 2;WORLD;world3
|
||||
359;Sitar 1;WORLD;world4
|
||||
360;Shamisen 2;WORLD;world5
|
||||
361;Shamisen 1;WORLD;world6
|
||||
362;Synth Shamisen;WORLD;world7
|
||||
363;Simple Drumkit;DRUMKIT;
|
||||
364;SiON Drumkit;DRUMKIT;
|
||||
365;Midi Drumkit;DRUMKIT;
|
|
|
@ -1,21 +0,0 @@
|
|||
id;name;color_r;color_g;color_b
|
||||
autopan;Auto-Pan;0.93;0.86;0.74
|
||||
autowah;Auto-Wah;0.31;0.66;0.78
|
||||
bitcrush;Bitcrush;0.89;0.66;0.66
|
||||
cabsim;Cab Sim;0.31;0.77;0.66
|
||||
chorus;Chorus;0.53;0.58;0.84
|
||||
comb;Comb;0.5;0.37;0.84
|
||||
compresser;Compr.;0.73;0.71;0.67
|
||||
delay;Delay;0.69;0.8;0.91
|
||||
distortion;Distortion;0.96;0.7;0.22
|
||||
filter;Filter;0.87;0.87;0.87
|
||||
flanger;Flanger;0.7;0.41;0.6
|
||||
limiter;Limiter;0.65;0.22;0.22
|
||||
octaver;Octaver;0.6;0.35;0.31
|
||||
parameq;Param. EQ;0.65;0.52;0.44
|
||||
phaser;Phaser;0.48;0.76;0.44
|
||||
reverb;Reverb;0.95;0.96;0.75
|
||||
staticflanger;S. Flanger;0.33;0.33;1
|
||||
tremolo;Tremolo;0.72;0.95;0.95
|
||||
vibrato;Vibrato;0.84;0.62;0.85
|
||||
vinylsim;Vinyl Sim;0.36;0.36;0.36
|
|
|
@ -1,14 +0,0 @@
|
|||
id;name;color_r;color_g;color_b
|
||||
8SYN;8BitSynth;0.82;0.78;0.63
|
||||
BBOX;BeatBox;0.66;0.51;0.36
|
||||
BLNE;BassLine;0.99;0.99;0.99
|
||||
FMSN;FMSynth;0.29;0.78;0.76
|
||||
KSSN;KSSynth;0.55;0.57;0.44
|
||||
MDLR;Modular;0.45;0.45;0.45
|
||||
NULL;None;0.1;0.1;0.1
|
||||
ORGN;Organ;0.68;0.3;0.03
|
||||
PADS;PadSynth;0.99;0.99;0.69
|
||||
PCMS;PCMSynth;0.78;0.84;0.65
|
||||
SAWS;SawSynth;0.99;0.6;0.25
|
||||
SSYN;SubSynth;0.79;0.82;0.91
|
||||
VCDR;Vocoder;0.74;0.35;0.35
|
|
|
@ -1,32 +0,0 @@
|
|||
id;name;color_r;color_g;color_b;isdrum;gm_inst
|
||||
mario;Piano;0.92;0.77;0.56;0;0
|
||||
toad;Tom;0.98;0;0;0;null
|
||||
yoshi;SMW Yoshi;0;0.98;0.02;0;null
|
||||
star;Xylophone;0.97;0.98;0;0;13
|
||||
flower;Trumpet;0.96;0.5;0;0;56
|
||||
gameboy;Square Wave;0.76;0.76;0.76;0;80
|
||||
dog;Bark;1;1;1;0;null
|
||||
cat;Meow;0.98;0.75;0.51;0;null
|
||||
pig;Oink;0.96;0.75;0.52;0;null
|
||||
swan;String Hit;0.75;0.75;0.76;0;45
|
||||
face;Face;0.98;0.76;0.51;0;null
|
||||
plane;Acoustic Guitar;1;1;1;0;24
|
||||
boat;Hat;0.96;0;0.01;0;null
|
||||
car;Organ;0.88;0.53;0.17;0;16
|
||||
heart;Bass Guitar;0.96;0;0;0;32
|
||||
coin;Piano 2;0.93;0.75;0.2;0;1
|
||||
plant;Distorted Guitar;0.73;0;0.01;0;30
|
||||
shyguy;String;0.64;0;0.01;0;48
|
||||
ghost;Harp;0.57;0.96;0.99;0;46
|
||||
luigi;Steel Drum;0;0.97;0.48;0;114
|
||||
peach;Violin;0.97;0.31;0.56;0;40
|
||||
feather;Flute;0.97;0.47;0;0;73
|
||||
bulletbill;Timpani;0;0;0;0;47
|
||||
goomba;Bassoon;0.75;0.25;0.13;0;70
|
||||
bobomb;Bell;0;0;0;0;112
|
||||
spiny;Accordion;0.97;0.5;0;0;21
|
||||
fruit;Marimba;0.97;0;0;0;12
|
||||
oneup;Hi-Hat;0;0.97;0;0;null
|
||||
moon;Sawtooth Wave;0.97;0.97;0;0;81
|
||||
egg;Pizzicato strings;0;0.97;0;0;45
|
||||
gnome;Clown Horn;0;0.5;0.25;0;null
|
|
|
@ -1,49 +0,0 @@
|
|||
id;name
|
||||
-25;Acoustic Bass Drum
|
||||
-24;Bass Drum 1
|
||||
-23;Side Stick
|
||||
-22;Acoustic Snare
|
||||
-21;Hand Clap
|
||||
-20;Electric Snare
|
||||
-19;Low Floor Tom
|
||||
-18;Closed Hi-Hat
|
||||
-17;High Floor Tom
|
||||
-16;Pedal Hi-Hat
|
||||
-15;Low Tom
|
||||
-14;Open Hi-Hat
|
||||
-13;Low-Mid Tom
|
||||
-12;Hi-Mid Tom
|
||||
-11;Crash Cymbal 1
|
||||
-10;High Tom
|
||||
-9;Ride Cymbal 1
|
||||
-8;Chinese Cymbal
|
||||
-7;Ride Bell
|
||||
-6;Tambourine
|
||||
-5;Splash Cymbal
|
||||
-4;Cowbell
|
||||
-3;Crash Symbol 2
|
||||
-2;Vibraslap
|
||||
-1;Ride Cymbal 2
|
||||
0;Hi Bongo
|
||||
1;Low Bongo
|
||||
2;Mute Hi Conga
|
||||
3;Open Hi Conga
|
||||
4;Low Conga
|
||||
5;High Timbale
|
||||
6;Low Timbale
|
||||
7;High Agogo
|
||||
8;Low Agogo
|
||||
9;Cabasa
|
||||
10;Maracas
|
||||
11;Short Whistle
|
||||
12;Long Whistle
|
||||
13;Short Guiro
|
||||
14;Long Guiro
|
||||
15;Claves
|
||||
16;Hi Wood Block
|
||||
17;Low Wood Block
|
||||
18;Mute Cuica
|
||||
19;Open Cuica
|
||||
20;Mute Triangle
|
||||
21;Open Triangle
|
||||
22;Shaker
|
|
|
@ -1,129 +0,0 @@
|
|||
id;name;color_r;color_g;color_b;group
|
||||
0;Acoustic Grand Piano;0.1;0.11;0.11;piano
|
||||
1;Bright Acoustic Piano;0.1;0.11;0.11;piano
|
||||
2;Electric Grand Piano;0.1;0.11;0.11;piano
|
||||
3;Honky-tonk Piano;0.6;0.19;0.07;piano
|
||||
4;Electric Piano 1;0.29;0.28;0.28;piano
|
||||
5;Electric Piano 2;0.29;0.28;0.28;piano
|
||||
6;Harpsichord;0.57;0.31;0.17;piano
|
||||
7;Clavi;0.59;0.44;0.35;piano
|
||||
8;Celesta;0.84;0.68;0.48;chromaticperc
|
||||
9;Glockenspiel;0.84;0.85;0.87;chromaticperc
|
||||
10;Music Box;0.6;0.58;0.55;chromaticperc
|
||||
11;Vibraphone;0.76;0.78;0.82;chromaticperc
|
||||
12;Marimba;0.82;0.32;0.18;chromaticperc
|
||||
13;Xylophone;0.42;0.19;0.13;chromaticperc
|
||||
14;Tubular Bells;0.53;0.58;0.64;chromaticperc
|
||||
15;Dulcimer;0.69;0.34;0.08;chromaticperc
|
||||
16;Drawbar Organ;0.76;0.44;0.15;organ
|
||||
17;Percussive Organ;0.76;0.44;0.15;organ
|
||||
18;Rock Organ;0.76;0.44;0.15;organ
|
||||
19;Church Organ;0.55;0.24;0.08;organ
|
||||
20;Reed Organ;0.44;0.15;0.04;organ
|
||||
21;Accordion;0.27;0.25;0.23;organ
|
||||
22;Harmonica;0.7;0.7;0.66;organ
|
||||
23;Tango Accordion;0.27;0.25;0.23;organ
|
||||
24;Acoustic Guitar (nylon);0.84;0.35;0;guitar
|
||||
25;Acoustic Guitar (steel);0.9;0.62;0.35;guitar
|
||||
26;Electric Guitar (jazz);0;0.11;0.33;guitar
|
||||
27;Electric Guitar (clean);0;0.11;0.33;guitar
|
||||
28;Electric Guitar (muted);0;0.11;0.33;guitar
|
||||
29;Overdriven Guitar;0.9;0.62;0.35;guitar
|
||||
30;Distortion Guitar;0.9;0.62;0.35;guitar
|
||||
31;Guitar harmonics;0.9;0.62;0.35;guitar
|
||||
32;Acoustic Bass;0.15;0.15;0.15;bass
|
||||
33;Electric Bass (finger);0.09;0.09;0.09;bass
|
||||
34;Electric Bass (pick);0.09;0.09;0.09;bass
|
||||
35;Fretless Bass;0.89;0.71;0.53;bass
|
||||
36;Slap Bass 1;0.89;0.71;0.53;bass
|
||||
37;Slap Bass 2;0.89;0.71;0.53;bass
|
||||
38;Synth Bass 1;0.17;0.16;0.19;bass
|
||||
39;Synth Bass 2;0.17;0.16;0.19;bass
|
||||
40;Violin;0.58;0.32;0.14;strings
|
||||
41;Viola;0.75;0.29;0;strings
|
||||
42;Cello;0.69;0.24;0.01;strings
|
||||
43;Contrabass;0.63;0.2;0.08;strings
|
||||
44;Tremolo Strings;0.41;0.06;0.02;strings
|
||||
45;Pizzicato Strings;0.41;0.06;0.02;strings
|
||||
46;Orchestral Harp;0.58;0.2;0.12;strings
|
||||
47;Timpani;0.81;0.78;0.71;strings
|
||||
48;String Ensemble 1;0.41;0.06;0.02;ensemble
|
||||
49;String Ensemble 2;0.41;0.06;0.02;ensemble
|
||||
50;SynthStrings 1;0.42;0.23;0.11;ensemble
|
||||
51;SynthStrings 2;0.42;0.23;0.11;ensemble
|
||||
52;Choir Aahs;0.94;0.76;0.7;ensemble
|
||||
53;Voice Oohs;0.94;0.76;0.7;ensemble
|
||||
54;Synth Voice;0.23;0.23;0.24;ensemble
|
||||
55;Orchestra Hit;0.6;0.18;0.07;ensemble
|
||||
56;Trumpet;0.75;0.59;0.27;brass
|
||||
57;Trombone;0.94;0.87;0.47;brass
|
||||
58;Tuba;0.85;0.68;0.35;brass
|
||||
59;Muted Trumpet;0.75;0.59;0.27;brass
|
||||
60;French Horn;0.85;0.65;0.29;brass
|
||||
61;Brass Section;0.38;0.22;0.06;brass
|
||||
62;SynthBrass 1;0.42;0.23;0.11;brass
|
||||
63;SynthBrass 2;0.42;0.23;0.11;brass
|
||||
64;Soprano Sax;0.84;0.69;0.41;reed
|
||||
65;Alto Sax;0.71;0.55;0.22;reed
|
||||
66;Tenor Sax;0.74;0.55;0.2;reed
|
||||
67;Baritone Sax;0.88;0.68;0.36;reed
|
||||
68;Oboe;0.19;0.19;0.2;reed
|
||||
69;English Horn;0.1;0.09;0.11;reed
|
||||
70;Bassoon;0.76;0.15;0.04;pipe
|
||||
71;Clarinet;0.27;0.27;0.27;pipe
|
||||
72;Piccolo;0.07;0.07;0.1;pipe
|
||||
73;Flute;0.73;0.72;0.72;pipe
|
||||
74;Recorder;0.87;0.71;0.6;pipe
|
||||
75;Pan Flute;0.68;0.54;0.3;pipe
|
||||
76;Blown Bottle;0.45;0.41;0.01;pipe
|
||||
77;Shakuhachi;0.61;0.5;0.35;pipe
|
||||
78;Whistle;0.84;0.25;0.07;pipe
|
||||
79;Ocarina;0.1;0.32;0.74;pipe
|
||||
80;Square Lead;0.7;0.7;0.7;synthlead
|
||||
81;Sawtooth Lead;0.7;0.7;0.7;synthlead
|
||||
82;Calliope Lead;0.7;0.7;0.7;synthlead
|
||||
83;Chiff Lead;0.7;0.7;0.7;synthlead
|
||||
84;Charang Lead;0.7;0.7;0.7;synthlead
|
||||
85;Voice Lead;0.7;0.7;0.7;synthlead
|
||||
86;Fifths Lead;0.7;0.7;0.7;synthlead
|
||||
87;Bass + Lead;0.7;0.7;0.7;synthlead
|
||||
88;New Age Pad;0.7;0.7;0.7;synthpad
|
||||
89;Warm Pad;0.7;0.7;0.7;synthpad
|
||||
90;Polysynth Pad;0.7;0.7;0.7;synthpad
|
||||
91;Choir Pad;0.7;0.7;0.7;synthpad
|
||||
92;Bowed Pad;0.7;0.7;0.7;synthpad
|
||||
93;Metallic Pad;0.7;0.7;0.7;synthpad
|
||||
94;Halo Pad;0.7;0.7;0.7;synthpad
|
||||
95;Sweep Pad;0.7;0.7;0.7;synthpad
|
||||
96;Ice Rain;0.7;0.7;0.7;synthfx
|
||||
97;Soundtrack;0.7;0.7;0.7;synthfx
|
||||
98;Crystal;0.7;0.7;0.7;synthfx
|
||||
99;Atmosphere;0.7;0.7;0.7;synthfx
|
||||
100;Brightness;0.7;0.7;0.7;synthfx
|
||||
101;Goblin;0.7;0.7;0.7;synthfx
|
||||
102;Echo Drops;0.7;0.7;0.7;synthfx
|
||||
103;Star Theme;0.7;0.7;0.7;synthfx
|
||||
104;Sitar;0.4;0.2;0.12;Ethnic
|
||||
105;Banjo;0.5;0.32;0.2;Ethnic
|
||||
106;Shamisen;0.45;0.18;0.15;Ethnic
|
||||
107;Koto;0.45;0.16;0.11;Ethnic
|
||||
108;Kalimba;0.69;0.27;0.16;Ethnic
|
||||
109;Bag pipe;0.71;0.15;0.15;Ethnic
|
||||
110;Fiddle;0.76;0.3;0.01;Ethnic
|
||||
111;Shanai;0.66;0.16;0.12;Ethnic
|
||||
112;Tinkle Bell;0.67;0.45;0.15;perc
|
||||
113;Agogo;0.1;0.1;0.05;perc
|
||||
114;Steel Drums;0.56;0.57;0.57;perc
|
||||
115;Woodblock;0.88;0.68;0.44;perc
|
||||
116;Taiko Drum;0.36;0.07;0;perc
|
||||
117;Melodic Tom;0.84;0.77;0.71;perc
|
||||
118;Synth Drum;0.77;0.04;0.03;perc
|
||||
119;Reverse Cymbal;0.71;0.61;0.36;perc
|
||||
120;Guitar Fret Noise;0.9;0.62;0.35;perc
|
||||
121;Breath Noise;0.94;0.76;0.7;sfx
|
||||
122;Seashore;0.23;0.55;0.53;sfx
|
||||
123;Bird Tweet;0.89;0.81;0.18;sfx
|
||||
124;Telephone Ring;0.21;0.19;0.15;sfx
|
||||
125;Helicopter;0.18;0.26;0.67;sfx
|
||||
126;Applause;0.94;0.76;0.7;sfx
|
||||
127;Gunshot;0.32;0.3;0.27;sfx
|
|
|
@ -1,8 +0,0 @@
|
|||
id;name
|
||||
1;Standard Drum Kit
|
||||
9;Room Drum Kit
|
||||
17;Power Drum Kit
|
||||
25;Electric Drum Kit
|
||||
26;Rap TR808 Drums
|
||||
33;Jazz Drum Kit
|
||||
41;Brush Kit
|
|
|
@ -1,17 +0,0 @@
|
|||
id;name;color_r;color_g;color_b
|
||||
piano;Pianos;0.1;0.11;0.11
|
||||
chromaticperc;Chromatic Percussion;0.82;0.32;0.18
|
||||
organ;Organs;0.76;0.44;0.15
|
||||
guitar;Guitars;0.84;0.35;0
|
||||
bass;Basses;0.15;0.15;0.15
|
||||
strings;Strings;0.41;0.06;0.02
|
||||
ensemble;Ensembles;0.41;0.06;0.02
|
||||
brass;Brass;0.94;0.87;0.47
|
||||
reed;Reeds;0.84;0.69;0.41
|
||||
pipe;Pipes;0.27;0.27;0.27
|
||||
synthlead;Synth Leads;0.7;0.7;0.7
|
||||
synthpad;Synth Pads;0.7;0.7;0.7
|
||||
synthfx;Synth FXs;0.7;0.7;0.7
|
||||
Ethnic;Ethnic;0.45;0.18;0.15
|
||||
perc;Percussive;0.56;0.57;0.57
|
||||
sfx;Sound FXs;0.8;0.8;0.8
|
|
|
@ -1,130 +0,0 @@
|
|||
id;gm_inst;isdrum
|
||||
Acoustic Grand Piano;0;0
|
||||
Bright Acoustic Piano;1;0
|
||||
Electric Grand Piano;2;0
|
||||
Honky-tonk Piano;3;0
|
||||
Electric Piano;4;0
|
||||
Electric Piano 2;5;0
|
||||
Harpsichord;6;0
|
||||
Clavi;7;0
|
||||
Celesta;8;0
|
||||
Glockenspiel;9;0
|
||||
Music Box;10;0
|
||||
Vibraphone;11;0
|
||||
Marimba;12;0
|
||||
Xylophone;13;0
|
||||
Tubular Bells;14;0
|
||||
Dulcimer;15;0
|
||||
Drawbar Organ;16;0
|
||||
Percussive Organ;17;0
|
||||
Rock Organ;18;0
|
||||
Church Organ;19;0
|
||||
Reed Organ;20;0
|
||||
Accordion;21;0
|
||||
Harmonica;22;0
|
||||
Tango Accordion;23;0
|
||||
Acoustic Guitar (nylon);24;0
|
||||
Acoustic Guitar (steel);25;0
|
||||
Electric Guitar (jazz);26;0
|
||||
Electric Guitar (clean);27;0
|
||||
Electric Guitar (muted);28;0
|
||||
Overdriven Guitar;29;0
|
||||
Distortion Guitar;30;0
|
||||
Guitar harmonics;31;0
|
||||
Acoustic Bass;32;0
|
||||
Electric Bass (finger);33;0
|
||||
Electric Bass (pick);34;0
|
||||
Fretless Bass;35;0
|
||||
Slap Bass;36;0
|
||||
Slap Bass 2;37;0
|
||||
Synth Bass;38;0
|
||||
Synth Bass 2;39;0
|
||||
Violin;40;0
|
||||
Viola;41;0
|
||||
Cello;42;0
|
||||
Contrabass;43;0
|
||||
Tremolo Strings;44;0
|
||||
Pizzicato Strings;45;0
|
||||
Orchestral Harp;46;0
|
||||
Timpani;47;0
|
||||
String Ensemble;48;0
|
||||
String Ensemble 2;49;0
|
||||
SynthStrings;50;0
|
||||
SynthStrings 2;51;0
|
||||
Choir Aahs;52;0
|
||||
Voice Oohs;53;0
|
||||
Synth Voice;54;0
|
||||
Orchestra Hit;55;0
|
||||
Trumpet;56;0
|
||||
Trombone;57;0
|
||||
Tuba;58;0
|
||||
Muted Trumpet;59;0
|
||||
French Horn;60;0
|
||||
Brass Section;61;0
|
||||
SynthBrass;62;0
|
||||
SynthBrass 2;63;0
|
||||
Soprano Sax;64;0
|
||||
Alto Sax;65;0
|
||||
Tenor Sax;66;0
|
||||
Baritone Sax;67;0
|
||||
Oboe;68;0
|
||||
English Horn;69;0
|
||||
Bassoon;70;0
|
||||
Clarinet;71;0
|
||||
Piccolo;72;0
|
||||
Flute;73;0
|
||||
Recorder;74;0
|
||||
Pan Flute;75;0
|
||||
Blown Bottle;76;0
|
||||
Shakuhachi;77;0
|
||||
Whistle;78;0
|
||||
Ocarina;79;0
|
||||
Square Lead;80;0
|
||||
Sawtooth Lead;81;0
|
||||
Calliope Lead;82;0
|
||||
Chiff Lead;83;0
|
||||
Charang Lead;84;0
|
||||
Voice Lead;85;0
|
||||
Fifths Lead;86;0
|
||||
Bass + Lead;87;0
|
||||
New Age Pad;88;0
|
||||
Warm Pad;89;0
|
||||
Polysynth Pad;90;0
|
||||
Choir Pad;91;0
|
||||
Bowed Pad;92;0
|
||||
Metallic Pad;93;0
|
||||
Halo Pad;94;0
|
||||
Sweep Pad;95;0
|
||||
Ice Rain;96;0
|
||||
Soundtrack;97;0
|
||||
Crystal;98;0
|
||||
Atmosphere;99;0
|
||||
Brightness;100;0
|
||||
Goblin;101;0
|
||||
Echo Drops;102;0
|
||||
Star Theme;103;0
|
||||
Sitar;104;0
|
||||
Banjo;105;0
|
||||
Shamisen;106;0
|
||||
Koto;107;0
|
||||
Kalimba;108;0
|
||||
Bag pipe;109;0
|
||||
Fiddle;110;0
|
||||
Shanai;111;0
|
||||
Tinkle Bell;112;0
|
||||
Agogo;113;0
|
||||
Steel Drums;114;0
|
||||
Woodblock;115;0
|
||||
Taiko Drum;116;0
|
||||
Melodic Tom;117;0
|
||||
Synth Drum;118;0
|
||||
Reverse Cymbal;119;0
|
||||
Guitar Fret Noise;120;0
|
||||
Breath Noise;121;0
|
||||
Seashore;122;0
|
||||
Bird Tweet;123;0
|
||||
Telephone Ring;124;0
|
||||
Helicopter;125;0
|
||||
Applause;126;0
|
||||
Gunshot;127;0
|
||||
Piano;0;0
|
|
|
@ -1,50 +0,0 @@
|
|||
id;gm_key
|
||||
Acoustic Bass Drum;-25
|
||||
Bass Drum 1;-24
|
||||
Side Stick;-23
|
||||
Acoustic Snare;-22
|
||||
Hand Clap;-21
|
||||
Electric Snare;-20
|
||||
Low Floor Tom;-19
|
||||
Closed Hi-Hat;-18
|
||||
High Floor Tom;-17
|
||||
Pedal Hi-Hat;-16
|
||||
Low Tom;-15
|
||||
Open Hi-Hat;-14
|
||||
Low-Mid Tom;-13
|
||||
Hi-Mid Tom;-12
|
||||
Crash Cymbal 1;-11
|
||||
High Tom;-10
|
||||
Ride Cymbal 1;-9
|
||||
Chinese Cymbal;-8
|
||||
Ride Bell;-7
|
||||
Tambourine;-6
|
||||
Splash Cymbal;-5
|
||||
Cowbell;-4
|
||||
Crash Symbol 2;-3
|
||||
Vibraslap;-2
|
||||
Ride Cymbal 2;-1
|
||||
Hi Bongo;0
|
||||
Low Bongo;1
|
||||
Mute Hi Conga;2
|
||||
Open Hi Conga;3
|
||||
Low Conga;4
|
||||
High Timbale;5
|
||||
Low Timbale;6
|
||||
High Agogo;7
|
||||
Low Agogo;8
|
||||
Cabasa;9
|
||||
Maracas;10
|
||||
Short Whistle;11
|
||||
Long Whistle;12
|
||||
Short Guiro;13
|
||||
Long Guiro;14
|
||||
Claves;15
|
||||
Hi Wood Block;16
|
||||
Low Wood Block;17
|
||||
Mute Cuica;18
|
||||
Open Cuica;19
|
||||
Mute Triangle;20
|
||||
Open Triangle;21
|
||||
Shaker;22
|
||||
Snare;-22
|
|
|
@ -1,17 +0,0 @@
|
|||
id;name;color_r;color_g;color_b;gm_inst
|
||||
0;Piano (Air);0;0.27;0.55;1
|
||||
1;Double Bass (Wood);0.13;0.43;0.18;36
|
||||
2;Bass Drum (Stone);0.61;0.3;0.31;null
|
||||
3;Snare Drum (Sand);0.61;0.61;0;null
|
||||
4;Click (Glass);0.49;0.24;0.48;14
|
||||
5;Guitar (Wool);0.4;0.18;0.12;25
|
||||
6;Flute (Clay);0.61;0.58;0.25;74
|
||||
7;Bell (Block of Gold);0.61;0;0.61;113
|
||||
8;Chime (Packed Ice);0.21;0.44;0.49;null
|
||||
9;Xylophone (Bone Block);0.61;0.61;0.61;14
|
||||
10;Iron Xylophone (Iron Block);0;0.44;0.61;12
|
||||
11;Cow Bell (Soul Sand);0.61;0.04;0.05;null
|
||||
12;Didgeridoo (Pumpkin);0.61;0.23;0.06;null
|
||||
13;Bit (Block of Emerald);0;0.61;0;null
|
||||
14;Banjo (Hay);0.61;0;0.23;106
|
||||
15;Pling (Glowstone);0.24;0.24;0.24;null
|
|
|
@ -1,125 +0,0 @@
|
|||
id;name;color_r;color_g;color_b;isdrum;gm_inst
|
||||
12;Acoustic Guitar;0.81;0.59;0.35;0;25
|
||||
82;Damant Spectrum Muted;0.87;0.66;0.07;0;29
|
||||
79;Fender Strat Guitar;0.51;0.8;0.76;0;26
|
||||
78;Strat Guitar;0.33;0.42;0.68;0;26
|
||||
47;Metal Guitar;0.05;0.05;0.05;0;30
|
||||
64;Guitar Electric;0.71;0.38;0.13;0;27
|
||||
77;Clean Electric Guitar;0.23;0.21;0.21;0;28
|
||||
81;Damant Spectrum Harm;0.72;0.09;0.15;0;null
|
||||
49;Bass Guitar;0.64;0.24;0.04;0;null
|
||||
1;Bass;0.64;0.24;0.04;0;33
|
||||
39;Bass #2;0.7;0.29;0.24;0;34
|
||||
52;Bass #3;0.7;0.36;0.12;0;35
|
||||
59;Bass #4;0.49;0.11;0.13;0;36
|
||||
0;Synth Bass;0.18;0.2;0.21;0;39
|
||||
21;Synth Bass #2;0.18;0.2;0.21;0;40
|
||||
135;Sitar;0.43;0.13;0.04;0;105
|
||||
136;Pizzicato;0.91;0.38;0.16;0;46
|
||||
9;Strings;0.89;0.36;0.16;0;49
|
||||
36;Strings #2;0.91;0.38;0.16;0;50
|
||||
37;Strings #3;0.71;0.24;0.09;0;49
|
||||
31;Synth Strings;0.4;0.53;0.42;0;51
|
||||
80;Fret Noise;0.33;0.33;0.33;0;null
|
||||
28;Grand Piano;0;0;0;0;1
|
||||
114;Rhodes;0.18;0.18;0.16;0;5
|
||||
121;Orchestra Hit;0.37;0.18;0.14;0;56
|
||||
13;Low Piano;0;0;0;0;null
|
||||
115;Rhodes #2;0.68;0.68;0.68;0;6
|
||||
11;Synth;0.56;0.67;0.25;0;null
|
||||
116;Electric Piano;0.79;0.04;0.09;0;3
|
||||
117;Rock Organ;0.67;0.49;0.39;0;19
|
||||
17;Synth #2;0.11;0.11;0.11;0;84
|
||||
111;Clavinet;0.76;0.76;0.76;0;8
|
||||
118;Church Organ;0.37;0.18;0.14;0;20
|
||||
23;Synthesizer;0.33;0.34;0.39;0;81
|
||||
112;Electric Clavinet;0.56;0.37;0.31;0;null
|
||||
119;Percussive Organ;0.34;0.31;0.35;0;18
|
||||
34;Synthesizer #2;0.33;0.34;0.39;0;82
|
||||
113;Harpsichord;0.48;0.31;0.31;0;7
|
||||
120;Organ;0.11;0.11;0.11;0;17
|
||||
50;Synthesizer #3;0.33;0.34;0.39;0;83
|
||||
110;Accordian;0.45;0.17;0.2;0;22
|
||||
22;Triangle Wave;0.33;0.34;0.39;0;null
|
||||
133;Techno Bass;0.07;0.18;0.26;0;null
|
||||
2;Bass Drum;0.06;0.07;0.08;1;null
|
||||
18;Bass Drum #2;0.11;0.39;0.29;1;null
|
||||
24;Bass Drum #3;0.06;0.07;0.08;1;null
|
||||
43;Bass Drum #4;0.11;0.39;0.29;1;null
|
||||
60;Bass Drum #5;0.06;0.07;0.08;1;null
|
||||
15;Snare Drum;0.85;0.66;0.37;1;null
|
||||
42;Snare Drum #2;0.72;0.73;0.76;1;null
|
||||
44;Snare Drum #3;0.88;0.78;0.67;1;null
|
||||
56;Snare Drum #4;0.7;0.6;0.51;1;null
|
||||
67;Snare Drum #5;0.72;0.73;0.76;1;null
|
||||
14;Tom Drums;0.67;0.61;0.58;1;null
|
||||
27;High Tom;0.45;0.45;0.43;1;null
|
||||
53;DX Tom;0.63;0.45;0.29;1;null
|
||||
62;Dry Tom;0.35;0.36;0.53;1;null
|
||||
57;Drum Reverb;0.39;0.27;0.16;1;null
|
||||
3;Closed Hi Hat;0.82;0.56;0.25;1;null
|
||||
26;Closed Hi Hat #2;0.82;0.56;0.25;1;null
|
||||
61;Closed Hi Hat #3;0.82;0.56;0.25;1;null
|
||||
5;Open Hi Hat;0.8;0.71;0.41;1;null
|
||||
19;Open Hi Hat #2;0.89;0.72;0.34;1;null
|
||||
30;Open Hi Hat #3;0.8;0.71;0.41;1;null
|
||||
65;Open Hi Hat #4;0.89;0.72;0.34;1;null
|
||||
25;Cymbal;0.86;0.7;0.44;1;null
|
||||
45;Cymbal #2;0.72;0.71;0.74;1;null
|
||||
46;Cymbal #3;0.1;0.11;0.14;1;null
|
||||
66;Reverse Cymbal;0.86;0.7;0.44;1;null
|
||||
40;Drum Loop;0.88;0.78;0.67;1;null
|
||||
123;Glockenspiel;0.73;0.65;0.54;0;10
|
||||
126;Xylophone;0.69;0.58;0.25;0;14
|
||||
125;Vibraphone;0.6;0.61;0.63;0;12
|
||||
124;Marimba;0.89;0.53;0.02;0;13
|
||||
127;Kalimba;0.69;0.36;0.11;0;109
|
||||
4;Woodblock;0.76;0.59;0.43;0;116
|
||||
129;Clave;0.78;0.75;0.75;0;null
|
||||
6;Tambourine;0.76;0.76;0.75;0;null
|
||||
134;Steel Drum;0.74;0.22;0.19;0;115
|
||||
130;Conga;0.71;0.46;0.24;0;null
|
||||
131;Conga #2;0.98;0.42;0.15;0;null
|
||||
132;Conga #3;0.83;0.65;0.43;0;null
|
||||
7;Taiko Drum;0.82;0.27;0.11;0;117
|
||||
10;Timpani;0.84;0.7;0.54;0;48
|
||||
128;Cowbell;0.27;0.29;0.27;0;null
|
||||
122;Tubular Bell;0.22;0.2;0.2;0;15
|
||||
51;Blast;0.56;0.59;0.57;0;null
|
||||
20;Hand Clap;1;0.82;0.58;0;null
|
||||
8;Trumpet;0.77;0.63;0.39;0;57
|
||||
100;Trumpet #2;0.58;0.51;0.33;0;57
|
||||
103;Piccolo Trumpet;0.74;0.67;0.47;0;73
|
||||
99;Trumpet Muted;0.75;0.65;0.47;0;null
|
||||
101;Trumpet Hit;0.6;0.56;0.45;0;null
|
||||
102;Trumpet Section;0.69;0.64;0.53;0;null
|
||||
97;Trombone;0.75;0.65;0.46;0;58
|
||||
95;Tuba;0.78;0.65;0.32;0;59
|
||||
98;French Horn;0.83;0.68;0.38;0;61
|
||||
58;Synth Brass;0.74;0.62;0.49;0;63
|
||||
83;Soprano Sax;0.81;0.73;0.56;0;65
|
||||
84;Alto Sax;0.95;0.88;0.63;0;66
|
||||
87;Tenor Sax;0.67;0.52;0.31;0;67
|
||||
88;Baritone Sax;0.73;0.59;0.37;0;68
|
||||
85;Sax Hit;0.85;0.72;0.36;0;null
|
||||
86;Sax Sing;0.79;0.79;0.57;0;null
|
||||
96;Flute;0.79;0.76;0.73;0;74
|
||||
89;Bass Clarinet;0.62;0.61;0.63;0;null
|
||||
90;Clarinet;0.47;0.47;0.45;0;72
|
||||
91;English Horn;0.55;0.54;0.54;0;70
|
||||
92;Oboe;0.49;0.43;0.42;0;69
|
||||
93;Ocarina;0.76;0.36;0.07;0;80
|
||||
94;Wateki;0.62;0.5;0.27;0;null
|
||||
104;Oohh;0.98;0.81;0.86;0;54
|
||||
105;Aahh;1;0.67;0;0;53
|
||||
106;Choir;0.46;0.46;0.46;0;null
|
||||
107;Male Vox;0.8;0.82;0.85;0;null
|
||||
108;Female Vox;0.8;0.82;0.85;0;null
|
||||
109;Synth Vox;0.33;0.67;0.7;0;55
|
||||
16;Grinding;0.35;0.36;0.4;0;null
|
||||
29;Cheers;0.33;0.67;0.7;0;null
|
||||
33;Energy;0.44;0.66;0.85;0;null
|
||||
35;Crystal;0.22;0.79;0.98;0;null
|
||||
38;Fade In;0.75;0.67;0.62;0;null
|
||||
41;Space;0.99;0.84;0.32;0;null
|
||||
55;Nice;0.93;0.93;0.93;0;null
|
|
|
@ -1,348 +0,0 @@
|
|||
id;name;color_r;color_g;color_b;group;isdrum;gm_inst
|
||||
140036d2f84ca37;Stereo Grand Mellow;0.4588235294;0.2196078431;0.3333333333;13fefadfeada756;0;1
|
||||
140452c1623e517;Stereo Grand Mellow (Filtered);0.4588235294;0.2196078431;0.3333333333;13fefadfeada756;0;1
|
||||
1400bf3a537253f;Stereo Grand Bright;0.4588235294;0.2196078431;0.3333333333;13fefadfeada756;0;1
|
||||
1400c30196b3a17;CP-80 EP;0.7411764706;0.4823529412;0.7882352941;13fefadfeada756;0;5
|
||||
140653382cf3774;Clavinet;0.7333333333;0.7490196078;0.3137254902;13fefadfeada756;0;8
|
||||
14068820564f03d;DX7 Wave;0.8;0.9647058824;0.6784313725;13fefadfeada756;0;null
|
||||
14068834e8ee73d;DX7 Strike;0.1803921569;0.0509803922;0.8901960784;13fefadfeada756;0;null
|
||||
1406899a022d3ca;Electric Piano 2MS;0.4823529412;0.5647058824;0.6784313725;13fefadfeada756;0;6
|
||||
1406a75cd901b2e;Harpsichord #1;0.768627451;0.1921568627;0.1019607843;13fefadfeada756;0;7
|
||||
1406a77fd62ecba;Harpsichord #2;0.5843137255;0.6862745098;0.4039215686;13fefadfeada756;0;7
|
||||
1406a901e6f59e4;Honky-Tonk;0.031372549;0.3137254902;0.5176470588;13fefadfeada756;0;4
|
||||
140752cbdc3f98b;Rhodes F;0.6784313725;0.631372549;0.7607843137;13fefadfeada756;0;3
|
||||
14075990202330a;Rhodes M;0.1568627451;0.6666666667;0.6352941176;13fefadfeada756;0;3
|
||||
140759c82cbc4ff;Rhodes P;0.1215686275;0.5803921569;0.4980392157;13fefadfeada756;0;3
|
||||
1404781b662de9b;Tubular Bells;0.6431372549;0.3647058824;0.6156862745;13fefae17715623;0;15
|
||||
1406528e3112e8f;Church Bells;0.6431372549;0.3647058824;0.6156862745;13fefae17715623;0;null
|
||||
1407aa34a62d1ab;Tinker Bell;0.431372549;0.6156862745;0.5215686275;13fefae17715623;0;113
|
||||
1404787fe10f490;Bell Tower;0.3882352941;0.3137254902;0.2745098039;13fefae17715623;0;null
|
||||
14064f4e8251dd4;Celeste;0.168627451;0.7254901961;0.7019607843;13fefae17715623;0;null
|
||||
140687de4239fe8;Dulcimer;0.8745098039;0.9960784314;0.831372549;13fefae17715623;0;16
|
||||
14068c28f4c513c;Glockenspiel;0.6235294118;0.8823529412;0.7058823529;13fefae17715623;0;10
|
||||
140785099afedb9;Glockenspiel Loop;0.3490196078;0.1843137255;0.5725490196;13fefae17715623;0;10
|
||||
1406df406bf8fb6;Marimba;0.4784313725;0.6705882353;0.1098039216;13fefae17715623;0;13
|
||||
1407009e987ee50;Music Box;0.3137254902;0.3568627451;0.7137254902;13fefae17715623;0;11
|
||||
140700a37abe00b;Music Box Delay;0.3333333333;0.4352941176;0.5529411765;13fefae17715623;0;11
|
||||
1407aca1ef444f6;Vibraphone;0.2549019608;0.537254902;0.3725490196;13fefae17715623;0;12
|
||||
1407b0ce297c005;Xylophone;0.7803921569;0.2980392157;0.7843137255;13fefae17715623;0;14
|
||||
14045afb227c5f8;Accordian #1;0.0235294118;0.4862745098;0.3411764706;13fefae8e3bf2c5;0;22
|
||||
14045ca94365e6a;Accordian #2;0.0784313725;0.937254902;0.2392156863;13fefae8e3bf2c5;0;22
|
||||
14045d927104a8b;Accordian #2 (delay #1);0.0784313725;0.937254902;0.2392156863;13fefae8e3bf2c5;0;22
|
||||
14045d941c0d36e;Accordian #2 (delay #2);0.0784313725;0.937254902;0.2392156863;13fefae8e3bf2c5;0;22
|
||||
1406db8da1f0948;Italian Accordian;0.0784313725;0.937254902;0.2392156863;13fefae8e3bf2c5;0;22
|
||||
14046dbc2c825bb;Bandoneon #1;0.0235294118;0.4862745098;0.3411764706;13fefae8e3bf2c5;0;null
|
||||
14046e2768d3c30;Bandoneon #2;0.0235294118;0.4862745098;0.3411764706;13fefae8e3bf2c5;0;null
|
||||
140699cf00fe380;Hammond Organ;0.8862745098;0.937254902;0.6705882353;13fefae8e3bf2c5;0;18
|
||||
14069a735526821;Harmonica;0.3019607843;0.631372549;0.0078431373;13fefae8e3bf2c5;0;23
|
||||
14074a14498a6c7;Organ Fast Cycle;0.6235294118;0.5450980392;0.7058823529;13fefae8e3bf2c5;0;17
|
||||
14074b1ce673c93;Organ Percussion;0.3137254902;0.6470588235;0.3176470588;13fefae8e3bf2c5;0;17
|
||||
14074b6717b79fa;Organ Slow Cycle;0.0431372549;0.4666666667;0.368627451;13fefae8e3bf2c5;0;17
|
||||
14074d99f037452;Pipe Organ;0.7960784314;0.5411764706;0.9803921569;13fefae8e3bf2c5;0;17
|
||||
1407522d19b4f4c;Reed Organ #1;0.0235294118;0.4862745098;0.3411764706;13fefae8e3bf2c5;0;21
|
||||
1407528a0b13b9c;Reed Organ #2;0.0235294118;0.4862745098;0.3411764706;13fefae8e3bf2c5;0;21
|
||||
14045897efd790a;12-String Guitar #1;0.0274509804;0.0980392157;0.8078431373;13fefae9c8106d7;0;null
|
||||
140458e6577689d;12-String Guitar #2;0.0274509804;0.0980392157;0.8078431373;13fefae9c8106d7;0;null
|
||||
140653bf1f90cb3;Clean Guitar;0.7764705882;0.1843137255;0.7450980392;13fefae9c8106d7;0;28
|
||||
140658b42091c7e;Distortion Guitar #1;0.0078431373;0.0784313725;0.1098039216;13fefae9c8106d7;0;31
|
||||
140659995a5f681;Distortion Guitar #2;0.1882352941;0.5254901961;0.7254901961;13fefae9c8106d7;0;31
|
||||
14068dd9b1753a2;Guitar Feedback;0.0078431373;0.3490196078;0.5254901961;13fefae9c8106d7;0;null
|
||||
14068e36a4d449a;Guitar Harmonics;0.5019607843;0.8274509804;0.3764705882;13fefae9c8106d7;0;32
|
||||
1406a8163b331d8;Hawaiian Guitar;0.9411764706;0.1411764706;0.2352941176;13fefae9c8106d7;0;null
|
||||
1406dce02e99049;Jazz Guitar;0.631372549;0.7647058824;0.5019607843;13fefae9c8106d7;0;27
|
||||
140701c32ea2030;Muted Guitar;0.5803921569;0.462745098;0.9921568627;13fefae9c8106d7;0;29
|
||||
140466b1f4b501b;Nylon Guitar;0.0509803922;0.5607843137;0.8117647059;13fefae9c8106d7;0;25
|
||||
14074bd04756eef;Overdrive Guitar;0.7607843137;0.7411764706;0.3803921569;13fefae9c8106d7;0;30
|
||||
1404592f2cad77e;Steel Guitar;0.1647058824;0.3450980392;0.9490196078;13fefae9c8106d7;0;26
|
||||
14068a8f3640d27;Guitar Click;0.368627451;0.0078431373;0.3176470588;13fefae9c8106d7;0;null
|
||||
14068d7d6ab68e4;Guitar Cut Up;0.5450980392;0.0078431373;0.2117647059;13fefae9c8106d7;0;null
|
||||
14068d7fecaf4bc;Guitar Cut Down;0.0431372549;0.9529411765;0.3019607843;13fefae9c8106d7;0;null
|
||||
14068d81555d464;Guitar Slap;0.0588235294;0.8352941176;0.2588235294;13fefae9c8106d7;0;null
|
||||
14045f14af02ebc;Acoustic Bass;0.6784313725;0.2588235294;0.7843137255;13fefaead755592;0;33
|
||||
14065a70c3807c1;Double Bass;0.2;0.568627451;0.4078431373;13fefaead755592;0;null
|
||||
14068a3f13b2bef;Finger Bass;0.9921568627;0.6509803922;0.9333333333;13fefaead755592;0;34
|
||||
14068bb0a098e8b;Fretless Bass;0.7764705882;0.6039215686;0.7019607843;13fefaead755592;0;36
|
||||
14074d0cee06bab;Pick Bass;0.1098039216;0.7294117647;0.1490196078;13fefaead755592;0;null
|
||||
1407a7ed6247291;Techno Bass;0.5921568627;0.6235294118;0.4117647059;13fefaead755592;0;null
|
||||
14075f77fafc211;Slap Bass #1;0.0156862745;0.0156862745;0.8392156863;13fefaead755592;0;37
|
||||
14076010968126b;Slap Bass #2 F;0.3529411765;0.6862745098;0.0980392157;13fefaead755592;0;38
|
||||
1407601f18ed68d;Slap Bass #2 P;0.9176470588;0.968627451;0.2352941176;13fefaead755592;0;38
|
||||
14078380ce719a3;Synth Bass #1;0.9647058824;0.8509803922;0.6549019608;13fefaead755592;0;39
|
||||
140783b37a7f438;Synth Bass #2;0.1294117647;0.7647058824;0.3450980392;13fefaead755592;0;40
|
||||
140783e6bc1d5eb;Synth Bass #3;0.9647058824;0.8509803922;0.6549019608;13fefaead755592;0;40
|
||||
140784392560143;Synth Bass Loop;0.8078431373;0.8588235294;0.7568627451;13fefaead755592;0;null
|
||||
140650acdd139a6;Cello;0.8588235294;0.6980392157;0.5058823529;13fefaebab36b90;0;43
|
||||
140654735d4e2cf;Cello Attack;0.3607843137;0.8941176471;0.9137254902;13fefaebab36b90;0;null
|
||||
1407494e878b137;Orchestral Harp;0.9490196078;0.662745098;0.1607843137;13fefaebab36b90;0;47
|
||||
1407502013a21e8;Pizzicato Strings;0.5215686275;0.2392156863;0.3764705882;13fefaebab36b90;0;46
|
||||
1407826a9c2b495;Strings;0.4823529412;0.9019607843;0.7333333333;13fefaebab36b90;0;49
|
||||
14078596b663e49;Synth Strings #1;0.8196078431;0.9411764706;0.2941176471;13fefaebab36b90;0;51
|
||||
140785c6fcd59a7;Synth Strings #2;0.8784313725;0.4745098039;0.2784313725;13fefaebab36b90;0;51
|
||||
1406895142928a8;Synth Strings #5;0.6941176471;0.9529411765;0.3058823529;13fefaebab36b90;0;52
|
||||
14076083f53a42d;Synth Strings #5 (Solar Wind);0.6941176471;0.9529411765;0.3058823529;13fefaebab36b90;0;52
|
||||
14068979d59afc8;Synth Strings #6;0.6941176471;0.9529411765;0.3058823529;13fefaebab36b90;0;52
|
||||
1406553ae78ef8b;Timpani Hard;0.9137254902;0.3725490196;0.5921568627;13fefaebab36b90;0;48
|
||||
140655463b030c1;Timpani Soft;0.5764705882;0.5764705882;0.7529411765;13fefaebab36b90;0;48
|
||||
1407acda32ff82b;Viola;0.4156862745;0.4117647059;0.1058823529;13fefaebab36b90;0;42
|
||||
1407ae2b127d4bc;Violin;0.3411764706;0.9921568627;0.0117647059;13fefaebab36b90;0;41
|
||||
1407aec1587079b;Violin Strike;0.6784313725;0.9529411765;0.6901960784;13fefaebab36b90;0;41
|
||||
1406556c68407a8;Concert Choir;0.6196078431;0.6666666667;0.0588235294;13fefaed4414987;0;null
|
||||
14073b1eb2d4ea0;Orchestra Hit #1;0.8470588235;0.1411764706;0.768627451;13fefaed4414987;0;56
|
||||
140748a778cc42b;Orchestra Hit #2;0.8588235294;0.4039215686;0.4156862745;13fefaed4414987;0;56
|
||||
1407608f6b8105d;Ohh Voice;0.5450980392;0.6156862745;0.1921568627;13fefaed4414987;0;54
|
||||
1407614e764112a;Solo Vox #1;0.0941176471;0.3647058824;0.5137254902;13fefaed4414987;0;null
|
||||
1407619a40b5b1a;Solo Vox #2;0.4156862745;0.3568627451;0.9529411765;13fefaed4414987;0;null
|
||||
14068c619e89c66;Synth Voice Oohs;0.831372549;0.4901960784;0.8;13fefaed4414987;0;54
|
||||
14069976f0e6273;Synth Voice Aahs;0.5333333333;0.0196078431;0.7921568627;13fefaed4414987;0;53
|
||||
1407af17cd2a41b;Voice Oohs;0.0549019608;0.2901960784;0.4235294118;13fefaed4414987;0;54
|
||||
14047bc60977b8a;Brass Section;0.0705882353;0.0549019608;0.0549019608;13fefaee40bacaf;0;62
|
||||
1407022182d90fc;Muted Trumpet #1;0.937254902;0.8235294118;0.8196078431;13fefaee40bacaf;0;60
|
||||
1407024da20a3e6;Muted Trumpet #2;0.937254902;0.8235294118;0.8196078431;13fefaee40bacaf;0;60
|
||||
14068b65a1bae9d;French Horn;0.5137254902;0.1411764706;0.2117647059;13fefaee40bacaf;0;61
|
||||
1406a9658143245;Horns Thin #1;0.6470588235;0.368627451;0.2235294118;13fefaee40bacaf;0;70
|
||||
1406d9f04b29a5c;Horns Thin #2;0.5568627451;0.8901960784;0.5137254902;13fefaee40bacaf;0;70
|
||||
140783f9cf92a47;Synth Brass #1;0.9647058824;0.8509803922;0.6549019608;13fefaee40bacaf;0;63
|
||||
140784198da95f4;Synth Brass #2;0.9294117647;0.9215686275;0.1333333333;13fefaee40bacaf;0;64
|
||||
14078428aa74288;Synth Brass #3;0.6039215686;0.1098039216;0.7058823529;13fefaee40bacaf;0;64
|
||||
14078483342c5e3;Synth Brass #3 (2);0.6039215686;0.1098039216;0.7058823529;13fefaee40bacaf;0;64
|
||||
1407ab972aee98a;Trombone #1;0.8509803922;0.0078431373;0.1098039216;13fefaee40bacaf;0;58
|
||||
1407abcb92403c2;Trombone #2;0.8509803922;0.0078431373;0.1098039216;13fefaee40bacaf;0;58
|
||||
1407abd91520a50;Trumpet #1;0;0.6431372549;0.9098039216;13fefaee40bacaf;0;57
|
||||
1407ac32e77184c;Trumpet #2;0.9176470588;0.5137254902;0.631372549;13fefaee40bacaf;0;57
|
||||
1407ac53a5675ee;Tuba;0.8666666667;0.3843137255;0.6941176471;13fefaee40bacaf;0;59
|
||||
1404653b696a0f8;Alto Saxophone;0.4745098039;0.6862745098;0.5490196078;13fefaef0ef730a;0;66
|
||||
14046f1c0077548;Baritone Saxophone;0.168627451;0.8392156863;0.2980392157;13fefaef0ef730a;0;68
|
||||
140761ce3995ec8;Soprano Saxophone;0.2666666667;0.3098039216;0.9607843137;13fefaef0ef730a;0;65
|
||||
1407a8f82255862;Tenor Saxophone;0.7803921569;0.8;0.8392156863;13fefaef0ef730a;0;67
|
||||
13ffdf25b5b5fac;English Horn;0.1215686275;0.4862745098;0.9882352941;13fefaef0ef730a;0;70
|
||||
140470f6fd0cf37;Bassoon;0.8509803922;0.6;0.5647058824;13fefaef0ef730a;0;71
|
||||
140652c17f86011;Clarinet;0.3725490196;0.2;0.4392156863;13fefaef0ef730a;0;72
|
||||
14070b40f506414;Oboe;0.5647058824;0.0941176471;0.7019607843;13fefaef0ef730a;0;69
|
||||
14047a1889f68e0;Bottle Blow #1;0.5725490196;0.3725490196;0.7450980392;13fefaf08896f96;0;77
|
||||
14047a2af882b75;Bottle Blow #2;0.5725490196;0.3725490196;0.7450980392;13fefaf08896f96;0;77
|
||||
14047b2caff04c2;Bottle Blow #3;0.5725490196;0.3725490196;0.7450980392;13fefaf08896f96;0;77
|
||||
14065177d26e844;Chiffer Lead;0.2352941176;0.0274509804;0.1137254902;13fefaf08896f96;0;85
|
||||
14068a9bbc0b4f2;Flute;0.8470588235;0.2470588235;0.9215686275;13fefaf08896f96;0;74
|
||||
14070cb6099c31f;Ocarina;0.5450980392;0.8588235294;0.4745098039;13fefaf08896f96;0;80
|
||||
1407af99f9fddba;Ocarina Fx;0.7294117647;0.2235294118;0.6078431373;13fefaf08896f96;0;80
|
||||
14074c81588f82b;Pan Flute #1;0.7607843137;0.0078431373;0.1294117647;13fefaf08896f96;0;76
|
||||
14074c98a7a8ed2;Pan Flute #2;0.2980392157;0.1882352941;0.5803921569;13fefaf08896f96;0;76
|
||||
14074ccf1ade98c;Piccolo;0.5098039216;0.4588235294;0.3529411765;13fefaf08896f96;0;73
|
||||
140751c14932c25;Recorder;0.2274509804;0.6745098039;0.8549019608;13fefaf08896f96;0;75
|
||||
14075dfc835feff;Shakuhachi;0.0901960784;0.2196078431;0.9333333333;13fefaf08896f96;0;78
|
||||
1407aff0440b7f2;Whistle;0.8509803922;0.0431372549;0.5137254902;13fefaf08896f96;0;79
|
||||
14074cba5e7baa1;Percussive Saw Wave;0.0274509804;0.4470588235;0.0392156863;13fefaf15baf963;0;null
|
||||
140750c8bfcc0d9;Polysynth #1;0.7921568627;0.6823529412;0.8509803922;13fefaf15baf963;0;91
|
||||
140750ea2512cb8;Polysynth #2;0.1254901961;0.1058823529;0.3921568627;13fefaf15baf963;0;91
|
||||
14075afa906817d;Saw Lead #1;0.9647058824;0.8509803922;0.6549019608;13fefaf15baf963;0;82
|
||||
14075afa8e9c398;Saw Lead #2;0.9647058824;0.8509803922;0.6549019608;13fefaf15baf963;0;82
|
||||
14075ee5871cb87;Sine Wave;0.9647058824;0.8509803922;0.6549019608;13fefaf15baf963;0;null
|
||||
140762652d55f0d;Square Lead;0.9647058824;0.8509803922;0.6549019608;13fefaf15baf963;0;81
|
||||
140784ad3c8c492;Synth Calliope;0.2470588235;0.7450980392;0.6666666667;13fefaf15baf963;0;83
|
||||
14047b61d1c03a6;Bowed Glass;0.1921568627;0.8235294118;0.8431372549;13fefaf2d917d71;0;null
|
||||
1404bb6bd60a6f9;Bright Saw Stack;0.9058823529;0.1568627451;0.031372549;13fefaf2d917d71;0;null
|
||||
140659eb4543138;Doctor Solo #1;0.9647058824;0.8509803922;0.6549019608;13fefaf2d917d71;0;null
|
||||
14065a1268be387;Doctor Solo #2;0.8862745098;0.9568627451;0.9921568627;13fefaf2d917d71;0;null
|
||||
1407008866fc39b;Metal Pad;0.1647058824;0.3450980392;0.9490196078;13fefaf2d917d71;0;94
|
||||
140702630f4e7c9;Mystery Pad;0.2470588235;0.8509803922;0.8156862745;13fefaf2d917d71;0;null
|
||||
1407858066da0df;Synth Mallet;0.6274509804;0.7294117647;0.8784313725;13fefaf2d917d71;0;null
|
||||
1407af695b01c0b;Warm Pad;0.4823529412;0.9019607843;0.7333333333;13fefaf2d917d71;0;90
|
||||
140657cc86bf0d5;Crystal #1;0.7411764706;0.0156862745;0.6745098039;13fefaf4541a20a;0;99
|
||||
140657ef4225cc5;Crystal #2;0.5647058824;0.8392156863;0.9058823529;13fefaf4541a20a;0;99
|
||||
14068893c9e9424;Echo Drop;0.0666666667;0.5137254902;0.1137254902;13fefaf4541a20a;0;103
|
||||
140688be1490100;Echo Pan;0.9647058824;0.8509803922;0.6549019608;13fefaf4541a20a;0;103
|
||||
14068cffd17c670;Goblin;0.8509803922;0.7921568627;0.8039215686;13fefaf4541a20a;0;102
|
||||
1406daada091dc6;Ice Rain #1;0.9843137255;0.3490196078;0.8588235294;13fefaf4541a20a;0;97
|
||||
1406dada76bd505;Ice Rain #2;0.862745098;0.5803921569;0.5333333333;13fefaf4541a20a;0;97
|
||||
1407622335a5a4d;Soundtrack;0.1607843137;0.168627451;0.0784313725;13fefaf4541a20a;0;98
|
||||
14046cb2d4937a7;Bagpipe;0.4705882353;0.6117647059;0.2745098039;13fefaf5f19a562;0;110
|
||||
14046d14a14b212;Chanter Ax1;0.4705882353;0.6117647059;0.2745098039;13fefaf5f19a562;0;null
|
||||
14046ebd96aa50c;Banjo;0.0745098039;0.7607843137;0.0745098039;13fefaf5f19a562;0;106
|
||||
1406ddeda32b3ef;Kalimba;0.8039215686;0.4941176471;0.1215686275;13fefaf5f19a562;0;109
|
||||
1406de1fe608880;Koto;0.3529411765;0.8156862745;0.1450980392;13fefaf5f19a562;0;108
|
||||
1406de96624694c;Mandolin #1;0.5098039216;0.2901960784;0.568627451;13fefaf5f19a562;0;null
|
||||
1406deb48cbbfc0;Mandolin #2;0.5647058824;0.3411764706;0.2784313725;13fefaf5f19a562;0;null
|
||||
14075e09d71d75e;Shamisen;0.6784313725;0.2549019608;0.3294117647;13fefaf5f19a562;0;107
|
||||
14075e9d260300d;Shenai;0.6745098039;0.9529411765;0.5333333333;13fefaf5f19a562;0;null
|
||||
14075f37aabbbc4;Sitar;0.4274509804;0.1803921569;0.8705882353;13fefaf5f19a562;0;105
|
||||
1406df04571a36f;Ukulele;0.7058823529;0.1882352941;0.8039215686;13fefaf5f19a562;0;null
|
||||
14045f96db0ca05;Agogo;0.1764705882;0.6117647059;0.6901960784;13fefaf81a1a3cf;0;114
|
||||
14064e91ce91884;Carillon;0.3882352941;0.5647058824;0.1843137255;13fefaf81a1a3cf;0;null
|
||||
140652018132e71;Cold Glass Wave;0.2784313725;0.2901960784;0.9294117647;13fefaf81a1a3cf;0;null
|
||||
1407853876ec2eb;Cold Glass Wave (2);0.2784313725;0.2901960784;0.9294117647;13fefaf81a1a3cf;0;null
|
||||
1406551fed4af57;Taiko Drum;0.8117647059;0.4509803922;0.231372549;13fefaf81a1a3cf;0;117
|
||||
1407630b3b4a21c;Steel Drums;0.1843137255;0.6039215686;0.2117647059;13fefaf81a1a3cf;0;115
|
||||
14046670b26482a;Applause;0.6431372549;0.4431372549;0.2862745098;13fefaf92a6b73f;0;127
|
||||
140467b9b21cf20;Atmosphere;0.0509803922;0.5607843137;0.8117647059;13fefaf92a6b73f;0;100
|
||||
140479c871557df;Bird;0.7647058824;0.7568627451;0.662745098;13fefaf92a6b73f;0;124
|
||||
14047952e9e339f;Bird 2;0.9607843137;0.4941176471;0.6745098039;13fefaf92a6b73f;0;124
|
||||
1404bb3687c8d65;Breath Noise;0.5568627451;0.831372549;0.5803921569;13fefaf92a6b73f;0;122
|
||||
14064da19e0df22;Bubbles;0.2431372549;0.3764705882;0.0745098039;13fefaf92a6b73f;0;null
|
||||
14064e4020b2612;Car Crash;0.4156862745;0.1921568627;0.8705882353;13fefaf92a6b73f;0;null
|
||||
14064e41c83a913;Car Engine;0.9294117647;0.5058823529;0.3411764706;13fefaf92a6b73f;0;null
|
||||
14064e42ee92ed5;Car Pass (Right);0.3921568627;0.3098039216;0.7294117647;13fefaf92a6b73f;0;null
|
||||
14064ec1aaa1160;Car Pass (Left);0.3921568627;0.3098039216;0.7294117647;13fefaf92a6b73f;0;null
|
||||
14064e43a8209b7;Car Stop;0.2039215686;0.0784313725;0.7058823529;13fefaf92a6b73f;0;null
|
||||
14065194f5994b1;Chimes;0.5254901961;0.1843137255;0.2352941176;13fefaf92a6b73f;0;null
|
||||
1406581ca2d28bd;Cut Noise;0.0901960784;0.1843137255;0;13fefaf92a6b73f;0;null
|
||||
14065a3cb524d93;Dog;0.3411764706;0.3725490196;0.9137254902;13fefaf92a6b73f;0;null
|
||||
14065a4cc385b0b;Door;0.6941176471;0.7333333333;0.2039215686;13fefaf92a6b73f;0;null
|
||||
14065a5cca83eec;Door Creaking;0.3294117647;0.1607843137;0.6117647059;13fefaf92a6b73f;0;null
|
||||
140688f774474f7;Explosion;0.1058823529;0.4588235294;0.8666666667;13fefaf92a6b73f;0;null
|
||||
14068b065cdd7a9;Foot Step;0.831372549;0.1137254902;0.5647058824;13fefaf92a6b73f;0;null
|
||||
14068b9cb2b533b;Fret Noise;0.9960784314;0.9921568627;0.6705882353;13fefaf92a6b73f;0;121
|
||||
14068e6d8a6b702;Gun Shot;0.6549019608;0.1254901961;0.8862745098;13fefaf92a6b73f;0;128
|
||||
1406a82908f9d75;Heart Beat;0.1843137255;0.1764705882;0.0156862745;13fefaf92a6b73f;0;null
|
||||
1406a831e2707b6;Helicopter;0.8392156863;0.1764705882;0.7568627451;13fefaf92a6b73f;0;126
|
||||
1406da5149c40bd;Horse Gallop;0.5921568627;0.8549019608;0.431372549;13fefaf92a6b73f;0;null
|
||||
1406da6549467c5;Howling Wind;0.1411764706;0.9490196078;0.3529411765;13fefaf92a6b73f;0;null
|
||||
1406ddb720369bb;Jet;0.8352941176;0.168627451;0.0117647059;13fefaf92a6b73f;0;null
|
||||
1406de5a966105b;Machine Gun;0.2352941176;0.9843137255;0.6431372549;13fefaf92a6b73f;0;null
|
||||
140751590accf3d;Bone Crunch;0.8705882353;0.2470588235;0.0156862745;13fefaf92a6b73f;0;null
|
||||
140751625b83156;Punch;0.7450980392;0.7254901961;0.5921568627;13fefaf92a6b73f;0;null
|
||||
14075184c7cf367;Rain;0.431372549;0.3176470588;0.9411764706;13fefaf92a6b73f;0;null
|
||||
140751aca875aa1;Scratch Push;0.768627451;0.7960784314;0.9960784314;13fefaf92a6b73f;0;null
|
||||
140751b8be034e4;Scratch Pull;0.7568627451;0.7098039216;0.6078431373;13fefaf92a6b73f;0;null
|
||||
1407aa502fd64f5;TR-909 Scratch Pull;0.0862745098;0.3058823529;0.1098039216;13fefaf92a6b73f;0;null
|
||||
1407aa5289e6302;TR-909 Scratch Push;0.5098039216;0.831372549;0.7137254902;13fefaf92a6b73f;0;null
|
||||
14075b173cb84ef;Scream;0.0431372549;0.1215686275;0.2901960784;13fefaf92a6b73f;0;null
|
||||
14075b28246e69c;Seashore;0.6509803922;0.1450980392;0.8274509804;13fefaf92a6b73f;0;123
|
||||
14064dc46d67591;Siren;0.8117647059;0.3176470588;0.9764705882;13fefaf92a6b73f;0;null
|
||||
14064dcfedd285f;Siren (filtered);0.8117647059;0.3176470588;0.9764705882;13fefaf92a6b73f;0;null
|
||||
140762430bc146b;Space Voice;0.6117647059;0.7294117647;0.6823529412;13fefaf92a6b73f;0;null
|
||||
140762dfead2575;Starship;0.8862745098;0.8352941176;0.3098039216;13fefaf92a6b73f;0;null
|
||||
1407635e2a68293;Stream;0.0235294118;0.337254902;0.6470588235;13fefaf92a6b73f;0;null
|
||||
1425975a3268daa;Squidward;0.3803921569;0.6588235294;0.462745098;13fefaf92a6b73f;0;null
|
||||
1407a8666632637;Telephone #1;0.9019607843;0.2392156863;0.5607843137;13fefaf92a6b73f;0;125
|
||||
1407a8877a22a6d;Telephone #2;0.1333333333;0.8784313725;0.4980392157;13fefaf92a6b73f;0;125
|
||||
1407a94e80515f5;Thunder;0.5137254902;0.2117647059;0.5647058824;13fefaf92a6b73f;0;null
|
||||
1407ab1e0273a79;Train;1;0.8980392157;0.1490196078;13fefaf92a6b73f;0;null
|
||||
14064dde6d57eae;White Noise;0.8666666667;0.2392156863;0.5529411765;13fefaf92a6b73f;0;null
|
||||
1407afbafc59c9d;Whistlin';0.8666666667;0.2392156863;0.5529411765;13fefaf92a6b73f;0;null
|
||||
1407b03423faa7c;Windchimes;0.7803921569;0.7254901961;0.3215686275;13fefaf92a6b73f;0;null
|
||||
1404725ed4d3a14;Filter Snap;0.9843137255;0.7882352941;0.3803921569;13fefb03f42cb8f;1;null
|
||||
1404729d952ecef;Slap;0.9529411765;0.0823529412;0.8235294118;13fefb03f42cb8f;1;null
|
||||
140472afe708028;Stick;0.4901960784;0.1568627451;0.8156862745;13fefb03f42cb8f;1;null
|
||||
140472c2ce418a9;Square Click;0.3137254902;0.5254901961;0.1490196078;13fefb03f42cb8f;1;null
|
||||
140472f8ed97181;TR-808 Click;0.6705882353;0.7843137255;0.0117647059;13fefb03f42cb8f;1;null
|
||||
14047321e887774;Carillon;0.3333333333;0.0509803922;0.5215686275;13fefb03f42cb8f;1;null
|
||||
14047366756fbf7;Tambourine;0.4196078431;0.1450980392;0.6352941176;13fefb03f42cb8f;1;null
|
||||
140473ebda03301;Vibra Slap;0.862745098;0.1803921569;0.1764705882;13fefb03f42cb8f;1;null
|
||||
14047408b4ecdd0;Bongo Rim;0.6;0.4156862745;0.6705882353;13fefb03f42cb8f;1;null
|
||||
14047430fb92650;Bongo Tone;0.7137254902;0.1215686275;0.6980392157;13fefb03f42cb8f;1;null
|
||||
14047451667bfed;Conga High Muted;0.5725490196;0.2980392157;0.7725490196;13fefb03f42cb8f;1;null
|
||||
14047477ab7c283;Conga High Open;0.5725490196;0.2980392157;0.7725490196;13fefb03f42cb8f;1;null
|
||||
140474882f57a57;Tumba Low;0.9254901961;0.1725490196;0.9294117647;13fefb03f42cb8f;1;null
|
||||
140474abaa4e90d;Timbale Rim;0.7176470588;0.862745098;0.7921568627;13fefb03f42cb8f;1;null
|
||||
140474c2f8c9a98;Timbale Low;0.2509803922;0.8156862745;0.9333333333;13fefb03f42cb8f;1;null
|
||||
140474d6b6b3717;Cabasa;0.9294117647;0.9098039216;0.3607843137;13fefb03f42cb8f;1;null
|
||||
140474f20c5165b;Maracas;0.2745098039;0.6980392157;0.6823529412;13fefb03f42cb8f;1;null
|
||||
1404752648580a1;Whistle Short;0.2745098039;0.6980392157;0.6823529412;13fefb03f42cb8f;1;null
|
||||
1404754ec788e6b;Whistle Long;0.2745098039;0.6980392157;0.6823529412;13fefb03f42cb8f;1;null
|
||||
1404755b7f39ab5;Guiro Short;0.2392156863;0.9882352941;0.4862745098;13fefb03f42cb8f;1;null
|
||||
140475716ef6d9b;Guiro Long;0.2392156863;0.9882352941;0.4862745098;13fefb03f42cb8f;1;null
|
||||
1404757b17e25b7;Claves;0.6117647059;0.3803921569;0.1058823529;13fefb03f42cb8f;1;null
|
||||
140475936a51de8;Cuita mute;0.6117647059;0.3803921569;0.1058823529;13fefb03f42cb8f;1;null
|
||||
140475a3d2eb58f;Cuita open;0.6117647059;0.3803921569;0.1058823529;13fefb03f42cb8f;1;null
|
||||
140475c3f1aaf47;Triangle (Perc) #1;0.1803921569;0.7607843137;0.9647058824;13fefb03f42cb8f;1;null
|
||||
1404766dd880958;Triangle (Perc) #2;0.1803921569;0.7607843137;0.9647058824;13fefb03f42cb8f;1;null
|
||||
1404768ca2f0a44;Shaker;0.9294117647;0.9098039216;0.3607843137;13fefb03f42cb8f;1;null
|
||||
140476976de45b9;Jingle Bell;0.9294117647;0.9098039216;0.3607843137;13fefb03f42cb8f;1;null
|
||||
140476b48edd5a3;Castanets;0.6156862745;0.6980392157;0.4117647059;13fefb03f42cb8f;1;null
|
||||
140476cb6c09dce;Surdo Mute;0.4078431373;0.937254902;0.5176470588;13fefb03f42cb8f;1;null
|
||||
140476db2330170;Surdo Open;0.4078431373;0.937254902;0.5176470588;13fefb03f42cb8f;1;null
|
||||
14075a5f5670bc3;Ride Bell;0.7607843137;0.7450980392;0.5882352941;13fefb03f42cb8f;1;null
|
||||
14069a447ec841f;Hand Clap;0.768627451;0.6470588235;0.3607843137;13fefb03f42cb8f;1;null
|
||||
140785631c506cd;Synth Hand Clap;0.2117647059;0.5529411765;0.5647058824;13fefb03f42cb8f;1;null
|
||||
1407aad65c4e875;TR-808 Clap;0.6941176471;0.2745098039;0.3882352941;13fefb03f42cb8f;1;null
|
||||
140477b90aeb438;Cowbell;0.2823529412;0.1764705882;0.5960784314;13fefb03f42cb8f;1;null
|
||||
1407aa83afb9d1b;TR-808 Cowbell;0.5254901961;0.1254901961;0.1843137255;13fefb03f42cb8f;1;null
|
||||
140651e2461f340;Triangle;0.3843137255;0.631372549;0.9098039216;13fefb03f42cb8f;1;null
|
||||
1407b042f041a44;Wood Block #1;0.2196078431;0.5098039216;0.3725490196;13fefb03f42cb8f;1;116
|
||||
1407b04fe8ae01e;Wood Block #2;0.7137254902;0.7411764706;0.3607843137;13fefb03f42cb8f;1;116
|
||||
1407aa8d98ce40a;TR-808 Kick;0.2431372549;0.6784313725;0.3098039216;13fefb03f42cb8f;1;null
|
||||
1406586a04a54e4;TR-909 Kick;0.7215686275;0.1098039216;0.8745098039;13fefb03f42cb8f;1;null
|
||||
140688d1474a381;Electronic Kick;0.6274509804;0.6470588235;0.6941176471;13fefb03f42cb8f;1;null
|
||||
1406dc51010cf0a;Jazz Bass Drum;0.5764705882;0.6352941176;0.7098039216;13fefb03f42cb8f;1;null
|
||||
140751063e57e84;Power Kick #1;0.9921568627;0.831372549;0.4235294118;13fefb03f42cb8f;1;null
|
||||
14075111fe6daf6;Power Kick #2;0.6784313725;0.5882352941;0.1333333333;13fefb03f42cb8f;1;null
|
||||
14075a9eeb029ae;Room Kick;0.0588235294;0.3411764706;0.9607843137;13fefb03f42cb8f;1;null
|
||||
1406dc5f5ac3477;Standard Kick #1;0.137254902;0.8549019608;0.6039215686;13fefb03f42cb8f;1;null
|
||||
1406dc6754caf80;Standard Kick #2;0.0470588235;0.4352941176;0.1607843137;13fefb03f42cb8f;1;null
|
||||
1406dc6a80e41d6;Standard Kick #3;0.7215686275;0.537254902;0.6039215686;13fefb03f42cb8f;1;null
|
||||
14064c5dcabe37f;Brush Snare;0.0901960784;0.9882352941;0.5058823529;13fefb03f42cb8f;1;null
|
||||
14064c770578b20;Brush Swirl;0.6235294118;0.4470588235;0.2784313725;13fefb03f42cb8f;1;null
|
||||
14064d7a437d494;Brushed Tom;0.5843137255;0.9921568627;0.0901960784;13fefb03f42cb8f;1;null
|
||||
1404771f900474a;Chinese Cymbal;0.6509803922;0.2392156863;0.0588235294;13fefb03f42cb8f;1;null
|
||||
1406575784e2958;Crash Cymbal;0.2901960784;0.9490196078;0.2078431373;13fefb03f42cb8f;1;null
|
||||
1407493fd38d5fa;Orchestral Cymbal;0.168627451;0.3098039216;0.5019607843;13fefb03f42cb8f;1;null
|
||||
140752ac3e7d872;Reverse Cymbal;0.0901960784;0.9764705882;0.5176470588;13fefb03f42cb8f;1;120
|
||||
1406575fd0e7e97;Ride Cymbal;0.8117647059;0.5647058824;0.4431372549;13fefb03f42cb8f;1;null
|
||||
1407624d5082fc9;Splash Cymbal;0.8235294118;0.2235294118;0.1215686275;13fefb03f42cb8f;1;null
|
||||
1407aaeeec3bb1c;TR-808 Cymbal;0.2117647059;0.2941176471;0.7333333333;13fefb03f42cb8f;1;null
|
||||
1406a85b703925c;Hi-Hat Closed Hard;0.3254901961;0.4549019608;0.5921568627;13fefb03f42cb8f;1;null
|
||||
1406a864d73a6d8;Hi-Hat Closed Soft;0.2431372549;0.0156862745;0.6470588235;13fefb03f42cb8f;1;null
|
||||
1406a879e6a595f;Hi-Hat Pedal;0.1607843137;0.9843137255;0.9764705882;13fefb03f42cb8f;1;null
|
||||
1406a87fb4578e0;Hi-Hat Open;0.3960784314;0.8274509804;0.768627451;13fefb03f42cb8f;1;null
|
||||
1406a8837023d81;Hi-Hat Open Attack;0.4745098039;0.0941176471;0.768627451;13fefb03f42cb8f;1;null
|
||||
1407aadc14cd8f1;TR-808 Hat #1;0.7647058824;0.631372549;0.3647058824;13fefb03f42cb8f;1;null
|
||||
1407aae08211017;TR-808 Hat #2;0.5647058824;0.0196078431;0.968627451;13fefb03f42cb8f;1;null
|
||||
1407aae4752a4c0;TR-808 Hat #3;0.8156862745;0.5764705882;0.8470588235;13fefb03f42cb8f;1;null
|
||||
1406dd7f61e4601;Jazz Rim Shot;0.4509803922;0.3882352941;0.1137254902;13fefb03f42cb8f;1;null
|
||||
1406dd8738bc052;Rim Shot;0.4980392157;0.7019607843;0.062745098;13fefb03f42cb8f;1;null
|
||||
1406589f8958551;Dance Snare;0.8;0.3019607843;0.768627451;13fefb03f42cb8f;1;null
|
||||
1406dd9089c3235;Jazz Snare Hard;0.368627451;0.1882352941;0.9294117647;13fefb03f42cb8f;1;null
|
||||
14064c833ff073f;Jazz Snare Soft #1;0.9215686275;0.0235294118;0.3921568627;13fefb03f42cb8f;1;null
|
||||
1406dd8e27d0165;Jazz Snare Soft #2;0.5568627451;0.9843137255;0.3333333333;13fefb03f42cb8f;1;null
|
||||
1406dc86ece6682;Standard Snare #1;0.2666666667;1;0.9294117647;13fefb03f42cb8f;1;null
|
||||
14064ca40214935;Standard Snare #2;0.2392156863;0.9137254902;0.5607843137;13fefb03f42cb8f;1;null
|
||||
1406dc95dfb8068;Standard Snare #3;0.3254901961;0.2431372549;0.4666666667;13fefb03f42cb8f;1;null
|
||||
1406dc991b30322;Standard Snare #4;0.5058823529;0.4196078431;0.8352941176;13fefb03f42cb8f;1;null
|
||||
140688d71d8bf27;Electric Snare;0.1725490196;0.5019607843;0.8901960784;13fefb03f42cb8f;1;null
|
||||
1407511bfc77568;Power Snare #1;0.3019607843;0.537254902;0.2862745098;13fefb03f42cb8f;1;null
|
||||
1407511f75c6477;Power Snare #2;0.8078431373;0.062745098;0.6392156863;13fefb03f42cb8f;1;null
|
||||
140751278c29dfe;Room Snare;0.7254901961;0.8156862745;0.0941176471;13fefb03f42cb8f;1;null
|
||||
1407aac89bd12fe;TR-808 Snare;0.6274509804;0.1764705882;0.537254902;13fefb03f42cb8f;1;null
|
||||
1407aaffc688035;TR-909 Snare #1;0.7176470588;0.5490196078;0.5803921569;13fefb03f42cb8f;1;null
|
||||
1407ab06cf82339;TR-909 Snare #2;0.8745098039;0.6509803922;0.2;13fefb03f42cb8f;1;null
|
||||
140784f19689d8c;Electric Tom;0.4156862745;0.6549019608;0.1137254902;13fefb03f42cb8f;1;null
|
||||
14064d2136bcca4;Standard Tom #1;0.2509803922;0.5215686275;0.4549019608;13fefb03f42cb8f;1;null
|
||||
14064d4b3f0e8bb;Standard Tom #2;0.2549019608;0.2549019608;0.5294117647;13fefb03f42cb8f;1;null
|
||||
14064d5cb18ca42;Standard Tom #3;0.2784313725;0.9058823529;0.0235294118;13fefb03f42cb8f;1;null
|
||||
14064d6446224de;Standard Tom #4;0.3176470588;0.462745098;0.5058823529;13fefb03f42cb8f;1;null
|
||||
14064d6bb59017e;Standard Tom #5;0.7019607843;0.862745098;0.5215686275;13fefb03f42cb8f;1;null
|
||||
1406df560738e90;Melodic Tom #1;0.537254902;0.2666666667;0.8549019608;13fefb03f42cb8f;1;118
|
||||
1406e0bc5bf4c37;Melodic Tom #2;0.9843137255;0.0039215686;0.4156862745;13fefb03f42cb8f;1;118
|
||||
14075add9c19160;Room Tom #1;0.4901960784;0.3960784314;0.6117647059;13fefb03f42cb8f;1;null
|
||||
14075aebc2fbda4;Room Tom #2;0.8588235294;0.0588235294;0.462745098;13fefb03f42cb8f;1;null
|
||||
13fe58b5620ff50;Test;0.7960784314;0.7137254902;0.6196078431;13fa5152eed0672;0;null
|
||||
1400beb4ebdff0d;+1 Saw Decline;0.9647058824;0.8509803922;0.6549019608;13fa5152eed0672;0;null
|
||||
140449e30f9a5fc;+2 Triangle;0.2470588235;0.7450980392;0.6666666667;13fa5152eed0672;0;null
|
||||
14044b8f1bd29e5;+5 Sine;0.462745098;0.7607843137;0.6823529412;13fa5152eed0672;0;null
|
||||
1404497beed1043;5th Saw Wave;0.6274509804;0.7647058824;0.337254902;13fa5152eed0672;0;null
|
||||
14044bfc5544e9a;Pulse Width 75%;0.8862745098;0.9607843137;0.4117647059;13fa5152eed0672;0;null
|
||||
14044c30070941d;Pulse Width 88%;0.8862745098;0.9607843137;0.4117647059;13fa5152eed0672;0;null
|
||||
14044ca3104a352;Saw Decline;0.9647058824;0.8509803922;0.6549019608;13fa5152eed0672;0;null
|
||||
14044cfa4fa3c0f;Saw Incline;0.9647058824;0.8509803922;0.6549019608;13fa5152eed0672;0;null
|
||||
14044d4755823ae;Sine;0.9647058824;0.8509803922;0.6549019608;13fa5152eed0672;0;null
|
||||
14044d9be420281;Square;0.9647058824;0.8509803922;0.6549019608;13fa5152eed0672;0;null
|
||||
1404701eedadf1f;Bass & Lead;0.8862745098;0.9607843137;0.4117647059;13fa5152eed0672;0;null
|
||||
140689e298522bd;Fantasia #1;0.1921568627;0.8235294118;0.8431372549;13fa5152eed0672;0;null
|
||||
1407851abd2169c;Vibes;0.4392156863;0.0196078431;0.168627451;13fa5152eed0672;0;null
|
||||
1406de371a08b5c;Kefka's Laugh;0.3333333333;0.0352941176;0.7843137255;1406de351b982bc;0;null
|
||||
1425966ba957afa;Zigzagoon;0.7215686275;0.1960784314;0.2156862745;1406de351b982bc;0;null
|
||||
13ea64d959b7961;Mushroom;0.9803921569;0.8470588235;0.368627451;13ea64d7cc9f13e;0;null
|
||||
13ea650023451cd;Boat;0.6117647059;0.6392156863;0.4862745098;13ea64d7cc9f13e;0;null
|
||||
13ea650ef8016c4;Star;0.5333333333;0.0823529412;0.0352941176;13ea64d7cc9f13e;0;null
|
||||
13ea651e6a184c1;Mario;0.6392156863;0.2274509804;0.4078431373;13ea64d7cc9f13e;0;null
|
||||
13ea6523abf98ba;Gameboy;0.6235294118;0.2549019608;0.8392156863;13ea64d7cc9f13e;0;null
|
||||
13ea65307b87498;Flower;0.0039215686;0.2823529412;0.9215686275;13ea64d7cc9f13e;0;null
|
||||
13ea653c50f32ba;Bird;0.431372549;0.9058823529;0.1921568627;13ea64d7cc9f13e;0;null
|
||||
13ea65473be42c2;Plane;0.4666666667;0.7058823529;0.3490196078;13ea64d7cc9f13e;0;null
|
||||
13ea65508d02e61;Heart;0.7607843137;0.1568627451;0.3333333333;13ea64d7cc9f13e;0;null
|
||||
13ea655d3c565ca;Car;0.0196078431;0;0.5529411765;13ea64d7cc9f13e;0;null
|
||||
13ea656c21c51ff;Cat;0.4392156863;0.568627451;0.3137254902;13ea64d7cc9f13e;0;null
|
||||
13ea65735f4e536;Dog;0.6666666667;0.9960784314;0.0470588235;13ea64d7cc9f13e;0;null
|
||||
13ea657d6f33b00;Human;0.2980392157;0.937254902;0.7019607843;13ea64d7cc9f13e;0;null
|
||||
13ea65897ae708e;Pig;0.2039215686;0.0823529412;0.4;13ea64d7cc9f13e;0;null
|
||||
13ea65944fccc3b;Yoshi;0.8588235294;0.0274509804;0.7019607843;13ea64d7cc9f13e;0;null
|
|
|
@ -1,20 +0,0 @@
|
|||
id;name
|
||||
13fefaead755592;Bass
|
||||
13fefaee40bacaf;Brass
|
||||
13fefae17715623;Chromatic Percussion
|
||||
13fefaed4414987;Ensemble
|
||||
13fefaf5f19a562;Ethnic
|
||||
13fefae9c8106d7;Guitar
|
||||
13fa5152eed0672;Miscellaneous
|
||||
13fefae8e3bf2c5;Organ
|
||||
13fefb03f42cb8f;Percussion
|
||||
13fefaf81a1a3cf;Percussive
|
||||
13fefadfeada756;Piano
|
||||
13fefaf08896f96;Pipe
|
||||
13fefaef0ef730a;Reed
|
||||
13fefaf92a6b73f;Sound Effects
|
||||
13fefaebab36b90;Strings
|
||||
13fefaf4541a20a;Synth Effects
|
||||
13fefaf15baf963;Synth Lead
|
||||
13fefaf2d917d71;Synth Pad
|
||||
1406de351b982bc;Video Games
|
|
|
@ -1,62 +0,0 @@
|
|||
id;name
|
||||
-33;High Q
|
||||
-32;Slap
|
||||
-31;Scratch Push
|
||||
-30;Scratch Pull
|
||||
-29;Sticks
|
||||
-28;Square Click
|
||||
-27;Metronome Click
|
||||
-26;Metronome Bell
|
||||
-25;Acoustic Bass Drum
|
||||
-24;Bass Drum 1
|
||||
-23;Side Stick
|
||||
-22;Acoustic Snare
|
||||
-21;Hand Clap
|
||||
-20;Electric Snare
|
||||
-19;Low Floor Tom
|
||||
-18;Closed Hi-Hat
|
||||
-17;High Floor Tom
|
||||
-16;Pedal Hi-Hat
|
||||
-15;Low Tom
|
||||
-14;Open Hi-Hat
|
||||
-13;Low-Mid Tom
|
||||
-12;Hi-Mid Tom
|
||||
-11;Crash Cymbal 1
|
||||
-10;High Tom
|
||||
-9;Ride Cymbal 1
|
||||
-8;Chinese Cymbal
|
||||
-7;Ride Bell
|
||||
-6;Tambourine
|
||||
-5;Splash Cymbal
|
||||
-4;Cowbell
|
||||
-3;Crash Symbol 2
|
||||
-2;Vibraslap
|
||||
-1;Ride Cymbal 2
|
||||
0;Hi Bongo
|
||||
1;Low Bongo
|
||||
2;Mute Hi Conga
|
||||
3;Open Hi Conga
|
||||
4;Low Conga
|
||||
5;High Timbale
|
||||
6;Low Timbale
|
||||
7;High Agogo
|
||||
8;Low Agogo
|
||||
9;Cabasa
|
||||
10;Maracas
|
||||
11;Short Whistle
|
||||
12;Long Whistle
|
||||
13;Short Guiro
|
||||
14;Long Guiro
|
||||
15;Claves
|
||||
16;Hi Wood Block
|
||||
17;Low Wood Block
|
||||
18;Mute Cuica
|
||||
19;Open Cuica
|
||||
20;Mute Triangle
|
||||
21;Open Triangle
|
||||
22;Shaker
|
||||
23;Jingle Bell
|
||||
24;Belltree
|
||||
25;Castanets
|
||||
26;Closed Surdo
|
||||
27;Open Surdo
|
|
|
@ -1,29 +0,0 @@
|
|||
id;name
|
||||
-2;Snare Drum 6
|
||||
-3;Crash Cymbal 4
|
||||
-4;Snare Drum 5
|
||||
-5;Ride Bell 2
|
||||
-6;Ride Cymbal 2
|
||||
-7;Crash Cymbal 3
|
||||
-8;Cowbell
|
||||
-9;Splash Cymbal
|
||||
-10;Tambourine
|
||||
-11;Ride Bell 1
|
||||
-12;Crash Cymbal 2
|
||||
-13;Ride Cymbal 1
|
||||
-14;Mid Tom 2
|
||||
-15;Crash Cymbal 1
|
||||
-16;Mid Tom 1
|
||||
-17;Low Tom 4
|
||||
-18;Loose Hi-Hat
|
||||
-19;Low Tom 3
|
||||
-20;Open Hi-Hat
|
||||
-21;Low Tom 2
|
||||
-22;Closed Hi-Hat
|
||||
-23;Low Tom 1
|
||||
-24;Snare Drum 4
|
||||
-25;Snare Drum 3
|
||||
-26;Snare Drum 2
|
||||
-27;Snare Drum 1
|
||||
-28;Kick Drum 2
|
||||
-29;Kick Drum
|
|
|
@ -1,19 +0,0 @@
|
|||
id;name
|
||||
-16;Click
|
||||
-17;High Tom
|
||||
-18;808 Cowbell
|
||||
-19;Mid Tom 1
|
||||
-20;Mid Tom 2
|
||||
-21;Low Tom 1
|
||||
-22;Low Tom 2
|
||||
-23;808 Cymbal
|
||||
-24;Open Hi-Hat
|
||||
-25;Closed Hi-Hat
|
||||
-26;Snare Click
|
||||
-27;Snare Drum 1
|
||||
-28;Snare Drum 2
|
||||
-29;Hand Clap 1
|
||||
-30;Hand Clap 2
|
||||
-31;Kick Drum 1
|
||||
-32;Kick Drum 2
|
||||
-33;Kick Drum 3
|
|
|
@ -1,21 +0,0 @@
|
|||
id;name
|
||||
-14;Ride Cymbal
|
||||
-15;Crash Cymbal
|
||||
-16;Open Hi-Hat 1
|
||||
-17;Open Hi-Hat 2
|
||||
-18;Closed Hi-Hat 1
|
||||
-19;Closed Hi-Hat 2
|
||||
-20;Clap
|
||||
-21;Rim
|
||||
-22;High Tom 1
|
||||
-23;High Tom 2
|
||||
-24;Mid Tom 1
|
||||
-25;Mid Tom 2
|
||||
-26;Low Tom 1
|
||||
-27;Low Tom 2
|
||||
-28;Snare Drum 1
|
||||
-29;Snare Drum 2
|
||||
-30;Snare Drum 3
|
||||
-31;Kick Drum 1
|
||||
-32;Kick Drum 2
|
||||
-33;Kick Drum 3
|
|
|
@ -1,7 +0,0 @@
|
|||
id;name
|
||||
-29;Kick Drum
|
||||
-28;Snare Drum 4
|
||||
-27;Hi-Hat
|
||||
-26;Snare Drum 3
|
||||
-25;Snare Drum 2
|
||||
-24;Snare Drum 1
|
|
|
@ -1,51 +0,0 @@
|
|||
id;name;color_r;color_g;color_b;isdrum;gm_inst;group
|
||||
0;Elec. Piano (Classic);0.01;0.66;0.96;0;5;piano
|
||||
1;Acoustic Guitar;1;0.6;0;0;25;guitar
|
||||
2;Drum Kit;0.72;0.11;0.11;1;1;drumkit
|
||||
3;Smooth Synth;0.91;0.12;0.39;0;null;electronic
|
||||
4;Electric Guitar;0.3;0.69;0.31;0;27;guitar
|
||||
5;Bass (Classic);0.13;0.13;0.13;0;33;guitar
|
||||
6;Synth Pluck;0.25;0.32;0.71;0;null;electronic
|
||||
7;Scifi;0.8;0.86;0.22;0;null;electronic
|
||||
8;Grand Piano (Classic);0.08;0.4;0.75;0;1;piano
|
||||
9;French Horn;0.51;0.47;0.09;0;61;orchestra
|
||||
10;Trombone;1;0.92;0;0;58;orchestra
|
||||
11;Violin;0.55;0.43;0.39;0;41;orchestra
|
||||
12;Cello;0.31;0.2;0.18;0;43;orchestra
|
||||
13;8-Bit Sine;1;0.39;0.39;0;null;electronic
|
||||
14;8-Bit Square;0.46;1;0.39;0;null;electronic
|
||||
15;8-Bit Sawtooth;0.39;0.88;1;0;null;electronic
|
||||
16;8-Bit Triangle;0.99;0.39;1;0;null;electronic
|
||||
17;Harpsichord;1;0.34;0.13;0;7;piano
|
||||
18;Concert Harp;0.11;0.37;0.13;0;47;orchestra
|
||||
19;Xylophone;0.96;0.26;0.21;0;14;perc
|
||||
20;Pizzicato;1;0.88;0.7;0;46;orchestra
|
||||
21;Steel Drums;0.46;0.46;0.46;0;115;perc
|
||||
22;Sitar;0.88;0.68;0;0;105;guitar
|
||||
23;Flute;0.91;0.98;0.74;0;74;orchestra
|
||||
24;Saxophone;0.66;0.78;0.33;0;65;testing
|
||||
25;Ragtime Piano;0.05;0.28;0.63;0;4;piano
|
||||
26;Music Box;0.11;0.62;0.62;0;11;piano
|
||||
27;Synth Bass;0.12;0.77;0.48;0;39;testing
|
||||
28;Church Organ;0.08;0.13;0.31;0;20;testing
|
||||
29;Slap Bass;0.02;0.06;0.18;0;37;guitar
|
||||
30;Pop Synth;0.42;0.95;0.72;0;91;testing
|
||||
31;Electric Drum Kit;1;0.44;0.44;1;25;drumkit
|
||||
32;Jazz Guitar;0.63;0.65;0.21;0;27;guitar
|
||||
33;Koto;0.92;0.47;0;0;108;guitar
|
||||
34;Vibraphone;0.33;0.79;0.79;0;12;perc
|
||||
35;Muted E-Guitar;0;0.5;0.25;0;29;guitar
|
||||
36;808 Drum Kit;0.5;0.06;0.28;1;26;drumkit_classic
|
||||
37;808 Bass;0;0;0;0;null;testing
|
||||
38;Distortion Guitar;0;0.27;0.12;0;31;guitar
|
||||
39;8-Bit Drum Kit;0.62;0.06;0.13;1;null;drumkit_classic
|
||||
40;2013 Drum Kit;0.51;0.02;0.08;1;null;drumkit_classic
|
||||
41;Grand Piano;0.08;0.4;0.75;0;1;piano
|
||||
42;909 Drum Kit;0.6;0;1;1;null;drumkit_classic
|
||||
43;Electric Piano;0.01;0.66;0.96;0;5;piano
|
||||
45;Cello (Sustain);0.31;0.2;0.18;0;43;orchestra
|
||||
46;Violin (Sustain);0.55;0.43;0.39;0;41;orchestra
|
||||
47;Strings (Sustain);0.56;0.46;1;0;49;orchestra
|
||||
48;Bass;0.13;0.13;0.13;0;33;guitar
|
||||
49;Clean Guitar;0.88;0.83;0.09;0;28;guitar
|
||||
53;2023 Drum Kit;0.44;0;0.65;1;null;drumkit
|
|
|
@ -1,13 +0,0 @@
|
|||
id;name
|
||||
0;Bass 1
|
||||
1;Bass 2
|
||||
2;Snare 1
|
||||
3;Snare 2
|
||||
4;Tom 1
|
||||
5;Hi-Hat Close
|
||||
6;Hi-Hat Open
|
||||
7;Crash
|
||||
8;Perc 1
|
||||
9;Perc 2
|
||||
10;Bass 3
|
||||
11;Tom 2
|
|
|
@ -76,7 +76,6 @@ id;url
|
|||
56_0;56_0_Orchestra_Hit.smplpck
|
||||
57_0;57_0_Trumpet.smplpck
|
||||
58_0;58_0_Trombone.smplpck
|
||||
58_0;58_0_Trombone.smplpck
|
||||
59_0;59_0_Tuba.smplpck
|
||||
60_0;60_0_Muted_Trumpet.smplpck
|
||||
61_0;61_0_French_Horns.smplpck
|
||||
|
|
|
|
@ -1,525 +0,0 @@
|
|||
id;name;gm_inst
|
||||
Acid Bass;Acid Bass;null
|
||||
Acid Bass Drum;Acid Bass Drum;null
|
||||
Acoustic Bass 1;Acoustic Bass 1;33
|
||||
Acoustic Bass 2;Acoustic Bass 2;33
|
||||
Acoustic Bass 3;Acoustic Bass 3;33
|
||||
Acoustic Guitar1;Acoustic Guitar 1;25
|
||||
Acoustic Guitar2;Acoustic Guitar 2;26
|
||||
Acoustic Guitar3;Acoustic Guitar 3;25
|
||||
Acoustic Piano 1;Acoustic Piano 1;1
|
||||
Acoustic Piano 2;Acoustic Piano 2;2
|
||||
Acoustic Piano 3;Acoustic Piano 3;3
|
||||
Acoustic Piano 4;Acoustic Piano 4;4
|
||||
Acoustic Snare 1;Acoustic Snare 1;null
|
||||
Acoustic Snare 2;Acoustic Snare 2;null
|
||||
Acoustic Snare 3;Acoustic Snare 3;null
|
||||
Afterthought;Afterthought;null
|
||||
Alien Swell 1;Alien Swell 1;null
|
||||
Alien Swell 2;Alien Swell 2;null
|
||||
Asia;Asia;null
|
||||
Atmosphere 1;Atmosphere 1;100
|
||||
Atmosphere 2;Atmosphere 2;100
|
||||
Banjo 1;Banjo 1;106
|
||||
Banjo 2;Banjo 2;106
|
||||
Banjo 3;Banjo 3;106
|
||||
Banjo 4;Banjo 4;106
|
||||
Banjo 5;Banjo 5;106
|
||||
Bass Drum 1;Bass Drum 1;null
|
||||
Bass Drum 2;Bass Drum 2;null
|
||||
Bass Drum 3;Bass Drum 3;null
|
||||
Bass Drum 4;Bass Drum 4;null
|
||||
Bass Grand 1;Bass Grand 1;null
|
||||
Bass Grand 2;Bass Grand 2;null
|
||||
Bass Grand 3;Bass Grand 3;null
|
||||
Bass Grand 4;Bass Grand 4;null
|
||||
Bass Perc Mix 1;Bass Perc Mix 1;null
|
||||
Bass Perc Mix 2;Bass Perc Mix 2;null
|
||||
Bass Scratch;Bass Scratch;null
|
||||
Bass Synth 1;Bass Synth 1;39
|
||||
Bass Synth 2;Bass Synth 2;40
|
||||
Bass Synth 3;Bass Synth 3;39
|
||||
Bass Synth 4;Bass Synth 4;40
|
||||
Bass Synth 5;Bass Synth 5;39
|
||||
Bass Vibes 1;Bass Vibes 1;null
|
||||
Bass Vibes 2;Bass Vibes 2;null
|
||||
Bassoon;Bassoon;71
|
||||
Bell Synth;Bell Synth;null
|
||||
Bells 1;Bells 1;null
|
||||
Bells 2;Bells 2;null
|
||||
Big Organ;Big Organ;null
|
||||
Blurb;Blurb;null
|
||||
Boing 1;Boing 1;null
|
||||
Boing 2;Boing 2;null
|
||||
Bones;Bones;null
|
||||
Bongo;Bongo;null
|
||||
Bottle Blower;Bottle Blower;null
|
||||
Brass Hit;Brass Hit;null
|
||||
Brass Slide;Brass Slide;null
|
||||
Brassy Lead 1;Brassy Lead 1;null
|
||||
Brassy Lead 2;Brassy Lead 2;null
|
||||
Brassy Lead 3;Brassy Lead 3;null
|
||||
Brassy Lead 4;Brassy Lead 4;null
|
||||
Brassy Short;Brassy Short;null
|
||||
Breath 1;Breath 1;null
|
||||
Breath 2;Breath 2;null
|
||||
Bright Chirp;Bright Chirp;null
|
||||
Bright Grand;Bright Grand;null
|
||||
Bubble Lead;Bubble Lead;null
|
||||
Bubbling;Bubbling;null
|
||||
Cabasa;Cabasa;null
|
||||
Calliope;Calliope;83
|
||||
Cameo 1;Cameo 1;null
|
||||
Cameo 2;Cameo 2;null
|
||||
Carhorn;Carhorn;null
|
||||
Castanets;Castanets;null
|
||||
Celesta 1;Celesta 1;9
|
||||
Celesta 2;Celesta 2;9
|
||||
Cello 1;Cello 1;43
|
||||
Cello 2;Cello 2;43
|
||||
Chiff Mallet;Chiff Mallet;null
|
||||
Chiff Pad;Chiff Pad;null
|
||||
Choir Aahs;Choir Aahs;53
|
||||
Choir Lead;Choir Lead;86
|
||||
Chord 1;Chord 1;null
|
||||
Chord 2;Chord 2;null
|
||||
Chord 3;Chord 3;null
|
||||
Chord 4;Chord 4;null
|
||||
Chord 5;Chord 5;null
|
||||
Chord 6;Chord 6;null
|
||||
Chord 7;Chord 7;null
|
||||
Chord 8;Chord 8;null
|
||||
Chorused Pulse;Chorused Pulse;null
|
||||
Claps 1;Claps 1;null
|
||||
Claps 2;Claps 2;null
|
||||
Clarinet 1;Clarinet 1;72
|
||||
Clarinet 2;Clarinet 2;72
|
||||
Clarinet 3;Clarinet 3;72
|
||||
Claves 1;Claves 1;null
|
||||
Claves 2;Claves 2;null
|
||||
Claves 3;Claves 3;null
|
||||
Clavinet;Clavinet;8
|
||||
Clink 1;Clink 1;null
|
||||
Clink 2;Clink 2;null
|
||||
Closed HiHat 1;Closed HiHat 1;null
|
||||
Closed HiHat 2;Closed HiHat 2;null
|
||||
Closed HiHat 3;Closed HiHat 3;null
|
||||
Closed HiHat 4;Closed HiHat 4;null
|
||||
Closed HiHat 5;Closed HiHat 5;null
|
||||
Closed HiHat 6;Closed HiHat 6;null
|
||||
Closed HiHat 7;Closed HiHat 7;null
|
||||
Closed HiHat 8;Closed HiHat 8;null
|
||||
Closed HiHat 9;Closed HiHat 9;null
|
||||
Cow;Cow;null
|
||||
Cowbell 1;Cowbell 1;null
|
||||
Cowbell 2;Cowbell 2;null
|
||||
Cowbell 3;Cowbell 3;null
|
||||
Cowbell 4;Cowbell 4;null
|
||||
Distortion 1;Distortion 1;null
|
||||
Distortion 2;Distortion 2;null
|
||||
Dog;Dog;null
|
||||
Dream Bells;Dream Bells;null
|
||||
Dream Pad;Dream Pad;null
|
||||
Drum+Hum 1;Drum+Hum 1;null
|
||||
Drum+Hum 2;Drum+Hum 2;null
|
||||
Dry 1;Dry 1;null
|
||||
Dry 2;Dry 2;null
|
||||
Dry 3;Dry 3;null
|
||||
Dry 4;Dry 4;null
|
||||
Echo Brass 1;Echo Brass 1;null
|
||||
Echo Brass 2;Echo Brass 2;null
|
||||
Echo Claps;Echo Claps;null
|
||||
Elec Organ 1;Elec Organ 1;17
|
||||
Elec Organ 2;Elec Organ 2;17
|
||||
Elec Organ 3;Elec Organ 3;17
|
||||
Elec Organ 4;Elec Organ 4;17
|
||||
Elec Organ 5;Elec Organ 5;17
|
||||
Elec Organ 6;Elec Organ 6;17
|
||||
Electric Bass 1;Electric Bass 1;34
|
||||
Electric Bass 2;Electric Bass 2;35
|
||||
Electric Bass 3;Electric Bass 3;34
|
||||
Electric Bass 4;Electric Bass 4;35
|
||||
Electric Bass 5;Electric Bass 5;34
|
||||
Electric Bongo;Electric Bongo;null
|
||||
Electric Piano 1;Electric Piano 1;5
|
||||
Electric Piano 2;Electric Piano 2;6
|
||||
Electric Piano 3;Electric Piano 3;3
|
||||
Electric Piano 4;Electric Piano 4;5
|
||||
Electric Snare 1;Electric Snare 1;null
|
||||
Electric Snare 2;Electric Snare 2;null
|
||||
Electric Snare 3;Electric Snare 3;null
|
||||
Electric Tom 1;Electric Tom 1;null
|
||||
Electric Tom 2;Electric Tom 2;null
|
||||
Electric Tom 3;Electric Tom 3;null
|
||||
English Horn;English Horn;70
|
||||
EPiano Chord;EPiano Chord;null
|
||||
EPiano Lead;EPiano Lead;null
|
||||
Ethnic Guitar 1;Ethnic Guitar 1;null
|
||||
Ethnic Guitar 2;Ethnic Guitar 2;null
|
||||
Ethnic Guitar 3;Ethnic Guitar 3;null
|
||||
Explosion;Explosion;null
|
||||
Fantasia Bell 1;Fantasia Bell 1;89
|
||||
Fantasia Bell 2;Fantasia Bell 2;89
|
||||
Fifths;Fifths;null
|
||||
Fingered El Bass;Fingered El Bass;null
|
||||
Flexatone;Flexatone;null
|
||||
Flute 1;Flute 1;74
|
||||
Flute 2;Flute 2;74
|
||||
Flute 3;Flute 3;74
|
||||
FM HiHat;FM HiHat;null
|
||||
Fretless Bass;Fretless Bass;null
|
||||
Full Organ;Full Organ;null
|
||||
Funk Guitar;Funk Guitar;null
|
||||
Glass Lead;Glass Lead;null
|
||||
Glockenspiel;Glockenspiel;null
|
||||
Gong 1;Gong 1;null
|
||||
Gong 2;Gong 2;null
|
||||
Gong Drum;Gong Drum;null
|
||||
Gong Synth;Gong Synth;null
|
||||
Grand Piano;Grand Piano;null
|
||||
Guitar Harmonics;Guitar Harmonics;null
|
||||
Guitar Pad;Guitar Pad;null
|
||||
Hammond Organ 1;Hammond Organ 1;17
|
||||
Hammond Organ 2;Hammond Organ 2;17
|
||||
Hard Block;Hard Block;null
|
||||
Hard Cymbal 1;Hard Cymbal 1;null
|
||||
Hard Cymbal 2;Hard Cymbal 2;null
|
||||
Harp Chord;Harp Chord;null
|
||||
Harpsichord 1;Harpsichord 1;7
|
||||
Harpsichord 2;Harpsichord 2;7
|
||||
Heartbeat;Heartbeat;null
|
||||
HellsBell;HellsBell;null
|
||||
High Agogo;High Agogo;null
|
||||
High Cuica;High Cuica;null
|
||||
High Jazz Snare;High Jazz Snare;null
|
||||
High Solo Scream;High Solo Scream;null
|
||||
High Timbale;High Timbale;null
|
||||
High Timpani;High Timpani;null
|
||||
High Tom;High Tom;null
|
||||
Hollow Wha;Hollow Wha;null
|
||||
Hollow Whaw;Hollow Whaw;null
|
||||
House Bass;House Bass;null
|
||||
House Drum;House Drum;null
|
||||
Hum 1;Hum 1;null
|
||||
Hum 2;Hum 2;null
|
||||
Hum 3;Hum 3;null
|
||||
Hum 4;Hum 4;null
|
||||
Hum 5;Hum 5;null
|
||||
Ice Rain;Ice Rain;null
|
||||
Jazz Guitar;Jazz Guitar;null
|
||||
Jazz Organ;Jazz Organ;null
|
||||
Jazz Snare;Jazz Snare;null
|
||||
Kick 1;Kick 1;null
|
||||
Kick 2;Kick 2;null
|
||||
Koto 1;Koto 1;null
|
||||
Koto 2;Koto 2;null
|
||||
Laser War;Laser War;null
|
||||
Log Drum;Log Drum;null
|
||||
Long Mallet;Long Mallet;null
|
||||
Long Snare 1;Long Snare 1;null
|
||||
Long Snare 2;Long Snare 2;null
|
||||
Low Agogo;Low Agogo;null
|
||||
Low Cuica;Low Cuica;null
|
||||
Low ElTom 1;Low ElTom 1;null
|
||||
Low ElTom 2;Low ElTom 2;null
|
||||
Low ElTom 3;Low ElTom 3;null
|
||||
Low Guitar;Low Guitar;null
|
||||
Low Timbale;Low Timbale;null
|
||||
Low Timpani;Low Timpani;null
|
||||
Low Tom 1;Low Tom 1;null
|
||||
Low Tom 2;Low Tom 2;null
|
||||
Machine Gun;Machine Gun;null
|
||||
Mallet Snare;Mallet Snare;null
|
||||
Mallet Synth;Mallet Synth;null
|
||||
Maracas;Maracas;null
|
||||
Marimba 1;Marimba 1;13
|
||||
Marimba 2;Marimba 2;13
|
||||
Marimba 3;Marimba 3;13
|
||||
Marimba 4;Marimba 4;13
|
||||
Marimba 5;Marimba 5;13
|
||||
Melodic Cymbal;Melodic Cymbal;null
|
||||
Melodic Tom;Melodic Tom;null
|
||||
Metal Scratch 1;Metal Scratch 1;null
|
||||
Metal Scratch 2;Metal Scratch 2;null
|
||||
Metal Synth;Metal Synth;null
|
||||
Metal Synth Bass;Metal Synth Bass;null
|
||||
Mid Tom;Mid Tom;null
|
||||
Mono Tone Lead;Mono Tone Lead;null
|
||||
Monster Pad;Monster Pad;null
|
||||
Monster Snare 1;Monster Snare 1;null
|
||||
Monster Snare 2;Monster Snare 2;null
|
||||
Mood Music;Mood Music;null
|
||||
Moog;Moog;null
|
||||
Moog Bass;Moog Bass;null
|
||||
Muted 1;Muted 1;null
|
||||
Muted 2;Muted 2;null
|
||||
Muted 3;Muted 3;null
|
||||
Muted Guitar 1;Muted Guitar 1;29
|
||||
Muted Guitar 2;Muted Guitar 2;29
|
||||
Muted Guitar 3;Muted Guitar 3;29
|
||||
Nice;Nice;null
|
||||
Nightmare;Nightmare;null
|
||||
Nitesong;Nitesong;null
|
||||
Noise HiHat 1;Noise HiHat 1;null
|
||||
Noise HiHat 2;Noise HiHat 2;null
|
||||
Noise HiHat 3;Noise HiHat 3;null
|
||||
Noise HiHat 4;Noise HiHat 4;null
|
||||
Noise Percussion;Noise Percussion;null
|
||||
Noise Scratch;Noise Scratch;null
|
||||
Noise Snare 1;Noise Snare 1;null
|
||||
Noise Snare 2;Noise Snare 2;null
|
||||
Noise Snare 3;Noise Snare 3;null
|
||||
Noise Snare 4;Noise Snare 4;null
|
||||
Noisy Escape;Noisy Escape;null
|
||||
Nylon Guitar;Nylon Guitar;25
|
||||
Oboe 1;Oboe 1;null
|
||||
Oboe 2;Oboe 2;null
|
||||
One Bubble 1;One Bubble 1;null
|
||||
One Bubble 2;One Bubble 2;null
|
||||
Open HiHat 1;Open HiHat 1;null
|
||||
Open HiHat 2;Open HiHat 2;null
|
||||
Open HiHat 3;Open HiHat 3;null
|
||||
Open HiHat 4;Open HiHat 4;null
|
||||
Open HiHat 5;Open HiHat 5;null
|
||||
Open Noise HiHat;Open Noise HiHat;null
|
||||
Orch Hit 1;Orch Hit 1;56
|
||||
Orch Hit 2;Orch Hit 2;56
|
||||
Orch Hit 3;Orch Hit 3;56
|
||||
Orch Hit 4;Orch Hit 4;56
|
||||
Organ Mallet 1;Organ Mallet 1;null
|
||||
Organ Mallet 2;Organ Mallet 2;null
|
||||
Organ Mallet 3;Organ Mallet 3;null
|
||||
Organ Mallet 4;Organ Mallet 4;null
|
||||
Organ Slide;Organ Slide;null
|
||||
Oriental Bells;Oriental Bells;null
|
||||
Oscar;Oscar;null
|
||||
Ouch;Ouch;null
|
||||
Outer Space;Outer Space;null
|
||||
Pan Flute;Pan Flute;null
|
||||
Peck;Peck;null
|
||||
Perc Agogo;Perc Agogo;null
|
||||
Perc Escape;Perc Escape;null
|
||||
Perc Synth Mix;Perc Synth Mix;null
|
||||
Perc Trombone;Perc Trombone;null
|
||||
Percussive Organ;Percussive Organ;18
|
||||
Piano Bell 1;Piano Bell 1;null
|
||||
Piano Bell 2;Piano Bell 2;null
|
||||
Piano Synth Lead;Piano Synth Lead;null
|
||||
Piano+Organ;Piano+Organ;null
|
||||
Piccolo;Piccolo;null
|
||||
Pipe Organ 1;Pipe Organ 1;20
|
||||
Pipe Organ 2;Pipe Organ 2;20
|
||||
Pipe Organ 3;Pipe Organ 3;20
|
||||
Pipe Organ 4;Pipe Organ 4;20
|
||||
Pipe Organ Pedal;Pipe Organ Pedal;null
|
||||
Pizzagogo 1;Pizzagogo 1;null
|
||||
Pizzagogo 2;Pizzagogo 2;null
|
||||
Pizzagogo 3;Pizzagogo 3;null
|
||||
Pizzicato 1;Pizzicato 1;46
|
||||
Pizzicato 2;Pizzicato 2;46
|
||||
Pizzicato 3;Pizzicato 3;46
|
||||
Polysynth;Polysynth;null
|
||||
Polysynth Pad;Polysynth Pad;null
|
||||
Power Chord 1;Power Chord 1;null
|
||||
Power Chord 2;Power Chord 2;null
|
||||
Power Ensemble;Power Ensemble;null
|
||||
Power Synth Bass;Power Synth Bass;null
|
||||
Pure Blipp;Pure Blipp;null
|
||||
Quiet Scratch;Quiet Scratch;null
|
||||
Raster Drive;Raster Drive;null
|
||||
Recorder 1;Recorder 1;75
|
||||
Recorder 2;Recorder 2;75
|
||||
Recorder 3;Recorder 3;75
|
||||
Reverb Tom;Reverb Tom;null
|
||||
Ride 1;Ride 1;null
|
||||
Ride 2;Ride 2;null
|
||||
Rim Shot 1;Rim Shot 1;null
|
||||
Rim Shot 2;Rim Shot 2;null
|
||||
Rim Shot 3;Rim Shot 3;null
|
||||
Rim Shot 4;Rim Shot 4;null
|
||||
Ringstrings;Ringstrings;null
|
||||
Rock Bass Drum;Rock Bass Drum;null
|
||||
Rock Organ 1;Rock Organ 1;null
|
||||
Rock Organ 2;Rock Organ 2;null
|
||||
Roto-Tom;Roto-Tom;null
|
||||
Saw Piano;Saw Piano;null
|
||||
Saw Piano Vib;Saw Piano Vib;null
|
||||
Saw Swell;Saw Swell;null
|
||||
Sax 1;Sax 1;65
|
||||
Sax 2;Sax 2;66
|
||||
Sax 3;Sax 3;67
|
||||
Sax 4;Sax 4;68
|
||||
Sax 5;Sax 5;65
|
||||
Sax 6;Sax 6;66
|
||||
Scratch Echo;Scratch Echo;null
|
||||
Scratch Tom;Scratch Tom;null
|
||||
Scream;Scream;null
|
||||
Shaker;Shaker;null
|
||||
Shimmer;Shimmer;null
|
||||
Short Bass;Short Bass;null
|
||||
Short Bass Piano;Short Bass Piano;null
|
||||
Short Brass Beep;Short Brass Beep;null
|
||||
Short Drum;Short Drum;null
|
||||
Short Elec Bass;Short Elec Bass;null
|
||||
Short ElTom;Short ElTom;null
|
||||
Short Guitar;Short Guitar;null
|
||||
Short Horns;Short Horns;null
|
||||
Short Kettle;Short Kettle;null
|
||||
Short Low Tom;Short Low Tom;null
|
||||
Short Nightmare;Short Nightmare;null
|
||||
Short Pan Flute1;Short Pan Flute 1;null
|
||||
Short Pan Flute2;Short Pan Flute 2;null
|
||||
Short Rich Brass;Short Rich Brass;null
|
||||
Short Scratch;Short Scratch;null
|
||||
Short Snare;Short Snare;null
|
||||
Short SynthBass1;Short SynthBass 1;null
|
||||
Short SynthBass2;Short SynthBass 2;null
|
||||
Short SynthBass3;Short SynthBass 3;null
|
||||
Short SynthBass4;Short SynthBass 4;null
|
||||
Short SynthPiano;Short SynthPiano;null
|
||||
Short Whistle;Short Whistle;null
|
||||
Simm;Simm;null
|
||||
Simple EPiano 1;Simple EPiano 1;null
|
||||
Simple EPiano 2;Simple EPiano 2;null
|
||||
Simple EPiano 3;Simple EPiano 3;null
|
||||
Simple EPiano 4;Simple EPiano 4;null
|
||||
Simple EPiano 5;Simple EPiano 5;null
|
||||
Simple EPiano 6;Simple EPiano 6;null
|
||||
Sine Chime;Sine Chime;null
|
||||
Sine Gong;Sine Gong;null
|
||||
Sine Wave;Sine Wave;null
|
||||
Sixtease;Sixtease;null
|
||||
Slap Bass 1;Slap Bass 1;null
|
||||
Slap Bass 2;Slap Bass 2;null
|
||||
Slap Bass 3;Slap Bass 3;null
|
||||
Slap Bass 4;Slap Bass 4;null
|
||||
Slap Bass 5;Slap Bass 5;null
|
||||
Smashing Glass 1;Smashing Glass 1;null
|
||||
Smashing Glass 2;Smashing Glass 2;null
|
||||
Smashing Glass 3;Smashing Glass 3;null
|
||||
Snare 1;Snare 1;null
|
||||
Snare 2;Snare 2;null
|
||||
Snare 3;Snare 3;null
|
||||
Snare+Block;Snare+Block;null
|
||||
Snip;Snip;null
|
||||
Soft Bass;Soft Bass;null
|
||||
Soft Cymbal 1;Soft Cymbal 1;null
|
||||
Soft Cymbal 2;Soft Cymbal 2;null
|
||||
Soft Cymbal 3;Soft Cymbal 3;null
|
||||
Soft Flute;Soft Flute;null
|
||||
Soft Organ;Soft Organ;null
|
||||
Solo Guitar;Solo Guitar;null
|
||||
Soundtrack 1;Soundtrack 1;null
|
||||
Soundtrack 2;Soundtrack 2;null
|
||||
Space Bells;Space Bells;null
|
||||
Space Escape Pad;Space Escape Pad;null
|
||||
Space Halo;Space Halo;null
|
||||
Space Pad;Space Pad;null
|
||||
Steel Drums;Steel Drums;null
|
||||
Strange Mallet;Strange Mallet;null
|
||||
String Chord;String Chord;null
|
||||
String Ensemble;String Ensemble;null
|
||||
String Hit;String Hit;null
|
||||
String Lead;String Lead;null
|
||||
String Swell;String Swell;null
|
||||
Super Pluck;Super Pluck;null
|
||||
Super SynStrings;Super SynStrings;null
|
||||
Synth Banjo 1;Synth Banjo 1;null
|
||||
Synth Banjo 2;Synth Banjo 2;null
|
||||
Synth Bass 1;Synth Bass 1;null
|
||||
Synth Bass 2;Synth Bass 2;null
|
||||
Synth Bass 3;Synth Bass 3;null
|
||||
Synth Bass 4;Synth Bass 4;null
|
||||
Synth Bass 5;Synth Bass 5;null
|
||||
Synth Bass Slide;Synth Bass Slide;null
|
||||
Synth Bells;Synth Bells;null
|
||||
Synth Birds;Synth Birds;null
|
||||
Synth Brass 1;Synth Brass 1;null
|
||||
Synth Brass 2;Synth Brass 2;null
|
||||
Synth Bubbles;Synth Bubbles;null
|
||||
Synth Chimes 1;Synth Chimes 1;null
|
||||
Synth Chimes 2;Synth Chimes 2;null
|
||||
Synth Clarinet;Synth Clarinet;null
|
||||
Synth Flute;Synth Flute;null
|
||||
Synth Growl;Synth Growl;null
|
||||
Synth Laughter;Synth Laughter;null
|
||||
Synth Lead;Synth Lead;null
|
||||
Synth Marimba 1;Synth Marimba 1;null
|
||||
Synth Marimba 2;Synth Marimba 2;null
|
||||
Synth Noise;Synth Noise;null
|
||||
Synth Oohs;Synth Oohs;null
|
||||
Synth Perc 1;Synth Perc 1;null
|
||||
Synth Perc 2;Synth Perc 2;null
|
||||
Synth Piano 1;Synth Piano 1;null
|
||||
Synth Piano 2;Synth Piano 2;null
|
||||
Synth Piano 3;Synth Piano 3;null
|
||||
Synth Reed 1;Synth Reed 1;null
|
||||
Synth Reed 2;Synth Reed 2;null
|
||||
Synth Reed 3;Synth Reed 3;null
|
||||
Synth Reed 4;Synth Reed 4;null
|
||||
Synth Reed 5;Synth Reed 5;null
|
||||
Synth Reed 6;Synth Reed 6;null
|
||||
Synth Reed 7;Synth Reed 7;null
|
||||
Synth Reed 8;Synth Reed 8;null
|
||||
Synth Scratch;Synth Scratch;null
|
||||
Synth Scratch 1;Synth Scratch 1;null
|
||||
Synth Scratch 2;Synth Scratch 2;null
|
||||
Synth Scratch 3;Synth Scratch 3;null
|
||||
Synth Scratch 4;Synth Scratch 4;null
|
||||
Synth Snare;Synth Snare;null
|
||||
Synth Strings 1;Synth Strings 1;null
|
||||
Synth Strings 2;Synth Strings 2;null
|
||||
Synth Violin 1;Synth Violin 1;null
|
||||
Synth Violin 2;Synth Violin 2;null
|
||||
Synth Voices 1;Synth Voices 1;null
|
||||
Synth Voices 2;Synth Voices 2;null
|
||||
Synthy Bass 1;Synthy Bass 1;null
|
||||
Synthy Bass 2;Synthy Bass 2;null
|
||||
Tech Snare;Tech Snare;null
|
||||
Telephone Ring 1;Telephone Ring 1;null
|
||||
Telephone Ring 2;Telephone Ring 2;null
|
||||
Thin Trombone;Thin Trombone;null
|
||||
Thin Trumpet;Thin Trumpet;null
|
||||
Tine Wave;Tine Wave;null
|
||||
Trombone;Trombone;null
|
||||
Tropical Mallet;Tropical Mallet;null
|
||||
Trumpet 1;Trumpet 1;null
|
||||
Trumpet 2;Trumpet 2;null
|
||||
Trumpet Fall;Trumpet Fall;null
|
||||
Tuba 1;Tuba 1;null
|
||||
Tuba 2;Tuba 2;null
|
||||
Tubular Bells;Tubular Bells;null
|
||||
Tune 1;Tune 1;null
|
||||
Tune 2;Tune 2;null
|
||||
Vibes 1;Vibes 1;null
|
||||
Vibes 2;Vibes 2;null
|
||||
Vibes 3;Vibes 3;null
|
||||
Vibes 4;Vibes 4;null
|
||||
Vibes 5;Vibes 5;null
|
||||
Vibrato Solo;Vibrato Solo;null
|
||||
Violin;Violin;null
|
||||
Violin Bow;Violin Bow;null
|
||||
Voice Oohs;Voice Oohs;null
|
||||
Voice Synth;Voice Synth;null
|
||||
Warm Bells;Warm Bells;null
|
||||
Warm Clarinet;Warm Clarinet;null
|
||||
Warm Oboe;Warm Oboe;null
|
||||
Weird Organ 1;Weird Organ 1;null
|
||||
Weird Organ 2;Weird Organ 2;null
|
||||
Weird Snare;Weird Snare;null
|
||||
Whee! 1;Whee! 1;null
|
||||
Whee! 2;Whee! 2;null
|
||||
Whip;Whip;null
|
||||
Whisper Piano;Whisper Piano;null
|
||||
Wind;Wind;null
|
||||
Woodblock 1;Woodblock 1;116
|
||||
Woodblock 2;Woodblock 2;116
|
||||
Woodblock 3;Woodblock 3;116
|
||||
Woodblock 4;Woodblock 4;116
|
||||
Woodblock 5;Woodblock 5;116
|
||||
Woodblock 6;Woodblock 6;116
|
||||
Woofy Whee;Woofy Whee;null
|
||||
Woofy Wow;Woofy Wow;null
|
||||
Xeno;Xeno;null
|
||||
Xylophone 1;Xylophone 1;14
|
||||
Xylophone 2;Xylophone 2;14
|
|
|
@ -195,4 +195,12 @@ def list_samesimilar(first, second):
|
|||
out = 0
|
||||
for x in range(len(first)):
|
||||
if first[x] == second[x]: out += 1
|
||||
return out/len(first)
|
||||
return out/len(first)
|
||||
|
||||
def list_usefirst(i_list):
|
||||
finalval = None
|
||||
for p in i_list:
|
||||
if p != None:
|
||||
finalval = p
|
||||
break
|
||||
return finalval
|
|
@ -22,11 +22,15 @@ def add(cvpj_l, location, p_id, p_value, p_type, **kwargs):
|
|||
else: param_data['name'] = kwargs['visname']
|
||||
|
||||
if p_type == 'float': param_data['value'] = float(p_value)
|
||||
if p_type == 'int': param_data['value'] = int(p_value)
|
||||
if p_type == 'int': param_data['value'] = int(float(p_value))
|
||||
if p_type == 'bool': param_data['value'] = bool(p_value)
|
||||
if p_type == 'string': param_data['value'] = p_value
|
||||
|
||||
paramsvalname = data_values.get_value(kwargs, 'groupname', 'params')
|
||||
minmax = data_values.get_value(kwargs, 'minmax', None)
|
||||
if minmax != None:
|
||||
param_data['min'] = minmax[0]
|
||||
param_data['max'] = minmax[1]
|
||||
data_values.nested_dict_add_value(cvpj_l, location+[paramsvalname, p_id], param_data)
|
||||
|
||||
def get(cvpj_l, location, p_id, fallbackval, **kwargs):
|
||||
|
@ -35,6 +39,14 @@ def get(cvpj_l, location, p_id, fallbackval, **kwargs):
|
|||
if paramdata != None: return paramdata['value'], paramdata['type'], paramdata['name']
|
||||
return fallbackval, 'notfound', ''
|
||||
|
||||
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
|
||||
|
||||
def remove(cvpj_l, p_id):
|
||||
if 'params' in cvpj_l:
|
||||
if p_id in cvpj_l['params']:
|
||||
|
|
|
@ -82,24 +82,23 @@ def commalist2plugtypes(inputdata):
|
|||
sep_supp_plugs.append(outputpart)
|
||||
return sep_supp_plugs
|
||||
|
||||
def convertpluginconvproj(pci_in, cvpj_l, pluginid, plugintype, extra_json):
|
||||
is_converted = False
|
||||
def convertpluginconvproj(cvpj_l, pluginid, pci_in, cvpj_plugindata, extra_json):
|
||||
is_converted = False
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
|
||||
for plugclassinfo in pci_in:
|
||||
ismatched = plugtype_match(plugintype, plugclassinfo[1][0:2])
|
||||
if ______debugtxt______:
|
||||
#if ______debugtxt______:
|
||||
# visualplugname_in = getvisualname(plugclassinfo[1])
|
||||
# visualplugname_out = getvisualname(plugclassinfo[2])
|
||||
# print('convertpluginconvproj -------------', ismatched, plugintype,
|
||||
# ' ['+visualplugname_in+' > '+visualplugname_out+'] ')
|
||||
|
||||
visualplugname_in = getvisualname(plugclassinfo[1])
|
||||
visualplugname_out = getvisualname(plugclassinfo[2])
|
||||
print('convertpluginconvproj -------------', ismatched, plugintype,
|
||||
' ['+visualplugname_in+' > '+visualplugname_out+'] ')
|
||||
if ismatched == True:
|
||||
isconverted = plugclassinfo[0].convert(cvpj_l, pluginid, plugintype, extra_json)
|
||||
if isconverted:
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
is_converted = True
|
||||
break
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
return is_converted, plugintype
|
||||
isconverted = plugclassinfo[0].convert(cvpj_l, pluginid, cvpj_plugindata, extra_json)
|
||||
if isconverted: break
|
||||
|
||||
return is_converted
|
||||
|
||||
def convproj(cvpjdata, platform_id, in_type, out_type, in_daw, out_daw,
|
||||
out_supportedplugins, out_getsupportedplugformats, extra_json):
|
||||
|
@ -125,30 +124,38 @@ def convproj(cvpjdata, platform_id, in_type, out_type, in_daw, out_daw,
|
|||
cvpj_l = json.loads(cvpjdata)
|
||||
if out_type != 'debug':
|
||||
if 'plugins' in cvpj_l:
|
||||
for pluginid in cvpj_l['plugins']:
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
|
||||
if plugintype[0] not in out_getsupportedplugformats:
|
||||
plugindataclasses = {}
|
||||
for pluginid in cvpj_l['plugins']:
|
||||
plugindataclasses[pluginid] = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
|
||||
for pluginid in plugindataclasses:
|
||||
cvpj_plugindata = plugindataclasses[pluginid]
|
||||
plugintype_plug = cvpj_plugindata.type_get()
|
||||
|
||||
if plugintype_plug[0] not in out_getsupportedplugformats:
|
||||
|
||||
if ______debugtxt______: print('-------')
|
||||
|
||||
if ______debugtxt______: print('- input always')
|
||||
is_converted, plugintype = convertpluginconvproj(pl_pc_in_always, cvpj_l, pluginid, plugintype, extra_json)
|
||||
is_converted = convertpluginconvproj(cvpj_l, pluginid, pl_pc_in_always, cvpj_plugindata, extra_json)
|
||||
|
||||
|
||||
if ______debugtxt______: print('- input')
|
||||
is_converted, plugintype = convertpluginconvproj(pl_pc_in, cvpj_l, pluginid, plugintype, extra_json)
|
||||
is_converted = convertpluginconvproj(cvpj_l, pluginid, pl_pc_in, cvpj_plugindata, extra_json)
|
||||
|
||||
if ______debugtxt______: print('- output')
|
||||
is_converted, plugintype = convertpluginconvproj(sep_pl_pc_out__native, cvpj_l, pluginid, plugintype, extra_json)
|
||||
is_converted = convertpluginconvproj(cvpj_l, pluginid, sep_pl_pc_out__native, cvpj_plugindata, extra_json)
|
||||
|
||||
if is_converted == False:
|
||||
is_plugin_unsupported = plugintype not in out_supportedplugins
|
||||
if ______debugtxt______: print('---pluugin not supported:', is_plugin_unsupported)
|
||||
is_plugin_unsupported = cvpj_plugindata.type_get() not in out_supportedplugins
|
||||
# if ______debugtxt______: print('---pluugin not supported:', is_plugin_unsupported)
|
||||
|
||||
if is_plugin_unsupported:
|
||||
for out_getsupportedplugformat in out_getsupportedplugformats:
|
||||
if out_getsupportedplugformat in sep_pl_pc_out__plugins:
|
||||
is_converted, plugintype = convertpluginconvproj(sep_pl_pc_out__plugins[out_getsupportedplugformat], cvpj_l, pluginid, plugintype, extra_json)
|
||||
is_converted = convertpluginconvproj(cvpj_l, pluginid, sep_pl_pc_out__plugins[out_getsupportedplugformat], cvpj_plugindata, extra_json)
|
||||
|
||||
cvpj_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
return json.dumps(cvpj_l, indent=2)
|
||||
|
|
|
@ -86,25 +86,24 @@ def check_exists(in_name):
|
|||
else:
|
||||
return False
|
||||
|
||||
def replace_data(cvpj_l, pluginid, bycat, platform, in_name, datatype, data, numparams):
|
||||
def replace_data(cvpj_plugindata, bycat, platform, in_name, datatype, data, numparams):
|
||||
global cpu_arch_list
|
||||
platformtxt = getplatformtxt(platform)
|
||||
vst_cpuarch, vst_path, vst_name = find_path(in_name, platformtxt, bycat)
|
||||
|
||||
if vst_path != None:
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
|
||||
if plugintype[0] != 'vst2':
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'vst2', platformtxt)
|
||||
if plugintype[0] != 'vst2': cvpj_plugindata.replace('vst2', platformtxt)
|
||||
|
||||
if bycat == 'name':
|
||||
if plugintype[0] == None and plugintype[1] == None: print('[plugin-vst2] ' + vst_name + ' (VST2 '+str(vst_cpuarch)+'-bit)')
|
||||
if plugintype[0] != None and plugintype[1] == None: print('[plugin-vst2] ' + plugintype[0] +' > ' + vst_name + ' (VST2 '+str(vst_cpuarch)+'-bit)')
|
||||
if plugintype[0] != None and plugintype[1] != None: print('[plugin-vst2] ' + ':'.join(plugintype) +' > ' + vst_name + ' (VST2 '+str(vst_cpuarch)+'-bit)')
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'name', vst_name)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'path', vst_path)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'cpu_arch', vst_cpuarch)
|
||||
cvpj_plugindata.dataval_add('name', vst_name)
|
||||
cvpj_plugindata.dataval_add('path', vst_path)
|
||||
cvpj_plugindata.dataval_add('cpu_arch', vst_cpuarch)
|
||||
|
||||
if db_exists:
|
||||
if bycat == 'name':
|
||||
|
@ -115,24 +114,24 @@ def replace_data(cvpj_l, pluginid, bycat, platform, in_name, datatype, data, num
|
|||
versionval = db_plugins.execute("SELECT version FROM vst2 WHERE name = ?", (in_name,)).fetchone()
|
||||
|
||||
if fouridval != None and fouridval != (None,):
|
||||
if bycat == 'name':
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'fourid', int(fouridval[0]))
|
||||
if bycat == 'id':
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'fourid', in_name)
|
||||
if bycat == 'name': cvpj_plugindata.dataval_add('fourid', int(fouridval[0]))
|
||||
if bycat == 'id': cvpj_plugindata.dataval_add('fourid', in_name)
|
||||
|
||||
if versionval != None and versionval != (None,) and versionval != ('',):
|
||||
versionsplit = [int(i) for i in versionval[0].split('.')]
|
||||
versionbytes = struct.pack('B'*len(versionsplit), *versionsplit)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'version', int.from_bytes(versionbytes, "little"))
|
||||
cvpj_plugindata.dataval_add('version', int.from_bytes(versionbytes, "little"))
|
||||
|
||||
if datatype == 'chunk':
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'datatype', 'chunk')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'chunk', base64.b64encode(data).decode('ascii'))
|
||||
cvpj_plugindata.dataval_add('datatype', 'chunk')
|
||||
cvpj_plugindata.dataval_add('chunk', base64.b64encode(data).decode('ascii'))
|
||||
if datatype == 'param':
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'datatype', 'param')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'numparams', numparams)
|
||||
cvpj_plugindata.dataval_add('datatype', 'param')
|
||||
cvpj_plugindata.dataval_add('numparams', numparams)
|
||||
if datatype == 'bank':
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'datatype', 'bank')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'programs', data)
|
||||
cvpj_plugindata.dataval_add('datatype', 'bank')
|
||||
cvpj_plugindata.dataval_add('programs', data)
|
||||
else:
|
||||
print('[plugin-vst2] Plugin, '+str(in_name)+' not found.')
|
||||
|
||||
return cvpj_plugindata
|
1015
functions/plugins.py
1015
functions/plugins.py
File diff suppressed because it is too large
Load Diff
|
@ -30,6 +30,8 @@ def process_r(cvpj_l):
|
|||
else: s_trackname = None
|
||||
if 'color' in s_trackdata: s_trackcolor = s_trackdata['color']
|
||||
else: s_trackcolor = None
|
||||
if 'params' in s_trackdata: s_trackparams = s_trackdata['params']
|
||||
else: s_trackparams = None
|
||||
|
||||
not_laned = True
|
||||
|
||||
|
@ -69,6 +71,7 @@ def process_r(cvpj_l):
|
|||
|
||||
new_trackdata[splitnameid] = s_trackdata.copy()
|
||||
new_trackdata[splitnameid]['name'] = septrackname
|
||||
if s_trackparams != None: new_trackdata[splitnameid]['params'] = s_trackparams
|
||||
if s_trackcolor != None: new_trackdata[splitnameid]['color'] = s_trackcolor
|
||||
new_trackplacements[splitnameid] = {}
|
||||
new_trackplacements[splitnameid]['notes'] = s_lanedata[laneid]['notes']
|
||||
|
|
|
@ -18,9 +18,7 @@ from functions_tracks import auto_nopl
|
|||
|
||||
import chardet
|
||||
|
||||
idvals_midi_ctrl = idvals.parse_idvalscsv('data_idvals/midi_ctrl.csv')
|
||||
idvals_midi_inst = idvals.parse_idvalscsv('data_idvals/midi_inst.csv')
|
||||
idvals_midi_inst_drums = idvals.parse_idvalscsv('data_idvals/midi_inst_drums.csv')
|
||||
idvals_midi_inst_group = idvals.parse_idvalscsv('data_idvals/midi_inst_group.csv')
|
||||
|
||||
tracknumber = 0
|
||||
|
@ -325,8 +323,9 @@ def song_end(cvpj_l):
|
|||
instname = used_inst[4]
|
||||
instcolor = used_inst[5]
|
||||
|
||||
if used_inst[3] == 0: plugins.add_plug_gm_midi(cvpj_l, instid, used_inst[2], used_inst[1])
|
||||
else: plugins.add_plug_gm_midi(cvpj_l, instid, 128, 1)
|
||||
if used_inst[3] == 0: inst_plugindata = plugins.cvpj_plugin('midi', used_inst[2], used_inst[1])
|
||||
else: inst_plugindata = plugins.cvpj_plugin('midi', 128, used_inst[1])
|
||||
inst_plugindata.to_cvpj(cvpj_l, instid)
|
||||
|
||||
tracks_rm.inst_create(cvpj_l, instid)
|
||||
tracks_rm.inst_visual(cvpj_l, instid, name=instname, color=instcolor)
|
||||
|
@ -434,29 +433,35 @@ def song_end(cvpj_l):
|
|||
fxrack.addsend(cvpj_l, midi_channum+1, sendtofx, out_param, sendname)
|
||||
|
||||
if usedeffects[0] == True:
|
||||
plugins.add_plug(cvpj_l, 'plugin-reverb', 'simple', 'reverb')
|
||||
plugins.add_plug(cvpj_l, 'plugin-chorus', 'simple', 'chorus')
|
||||
plugins.add_plug_fxdata(cvpj_l, 'master-reverb', 1, 0.5)
|
||||
plugins.add_plug_fxdata(cvpj_l, 'master-chorus', 1, 0.5)
|
||||
plugins.add_plug_fxvisual(cvpj_l, 'plugin-reverb', 'Reverb', None)
|
||||
plugins.add_plug_fxvisual(cvpj_l, 'plugin-chorus', 'Chorus', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'reverb')
|
||||
fx_plugindata.fxdata_add(1, 0.5)
|
||||
fx_plugindata.fxvisual_add('Reverb', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, 'plugin-reverb')
|
||||
fxrack.add(cvpj_l, song_channels+1, 1.0, None, name="[S] Reverb", color=[0.4, 0.4, 0.4])
|
||||
fxrack.add(cvpj_l, song_channels+2, 1.0, None, name="[S] Chorus", color=[0.4, 0.4, 0.4])
|
||||
fxslot.insert(cvpj_l, ['fxrack', song_channels+1], 'audio', 'plugin-reverb')
|
||||
fxslot.insert(cvpj_l, ['fxrack', song_channels+2], 'audio', 'plugin-chorus')
|
||||
fxrack.addsend(cvpj_l, song_channels+1, 0, 1, None)
|
||||
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'chorus')
|
||||
fx_plugindata.fxdata_add(1, 0.5)
|
||||
fx_plugindata.fxvisual_add('Chorus', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, 'plugin-chorus')
|
||||
fxrack.add(cvpj_l, song_channels+2, 1.0, None, name="[S] Chorus", color=[0.4, 0.4, 0.4])
|
||||
fxslot.insert(cvpj_l, ['fxrack', song_channels+2], 'audio', 'plugin-chorus')
|
||||
fxrack.addsend(cvpj_l, song_channels+2, 0, 1, None)
|
||||
|
||||
if usedeffects[1] == True:
|
||||
plugins.add_plug(cvpj_l, 'plugin-tremelo', 'simple', 'tremelo-send')
|
||||
plugins.add_plug(cvpj_l, 'plugin-phaser', 'simple', 'phaser-send')
|
||||
plugins.add_plug_fxvisual(cvpj_l, 'plugin-tremelo', 'Tremelo', None)
|
||||
plugins.add_plug_fxvisual(cvpj_l, 'plugin-phaser', 'Phaser', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'tremelo')
|
||||
fx_plugindata.fxvisual_add('Tremelo', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, 'plugin-tremelo')
|
||||
fxrack.add(cvpj_l, song_channels+3, 1.0, None, name="[S] Tremelo", color=[0.4, 0.4, 0.4])
|
||||
fxrack.add(cvpj_l, song_channels+4, 1.0, None, name="[S] Phaser", color=[0.4, 0.4, 0.4])
|
||||
fxslot.insert(cvpj_l, ['fxrack', song_channels+3], 'audio', 'plugin-tremelo')
|
||||
fxslot.insert(cvpj_l, ['fxrack', song_channels+4], 'audio', 'plugin-phaser')
|
||||
fxrack.addsend(cvpj_l, song_channels+3, 0, 1, None)
|
||||
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'phaser')
|
||||
fx_plugindata.fxvisual_add('Phaser', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, 'plugin-phaser')
|
||||
fxrack.add(cvpj_l, song_channels+4, 1.0, None, name="[S] Phaser", color=[0.4, 0.4, 0.4])
|
||||
fxslot.insert(cvpj_l, ['fxrack', song_channels+4], 'audio', 'plugin-phaser')
|
||||
fxrack.addsend(cvpj_l, song_channels+4, 0, 1, None)
|
||||
|
||||
veryfirstnotepos = getbeforenoteall(firstchanusepos)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
from functions import plugins
|
||||
import struct
|
||||
|
||||
def to_plugdata(cvpj_l, pluginid, in_datadef, bytestream):
|
||||
def to_plugdata(cvpj_plugindata, in_datadef, bytestream):
|
||||
try:
|
||||
for datapart in in_datadef:
|
||||
if datapart[0] != 'x':
|
||||
|
@ -14,18 +14,18 @@ def to_plugdata(cvpj_l, pluginid, in_datadef, bytestream):
|
|||
if datapart[0] == 'f': valueout, valtype = struct.unpack('f', bytestream.read(4))[0], 'float'
|
||||
if datapart[0] == 'd': valueout, valtype = struct.unpack('d', bytestream.read(8))[0], 'float'
|
||||
|
||||
if datapart[1]: plugins.add_plug_param(cvpj_l, pluginid, datapart[2], valueout, valtype, datapart[3])
|
||||
else: plugins.add_plug_data(cvpj_l, pluginid, datapart[2], valueout)
|
||||
if datapart[1]: cvpj_plugindata.param_add(cvpj_l, pluginid, datapart[2], valueout, valtype, datapart[3])
|
||||
else: cvpj_plugindata.dataval_add(cvpj_l, pluginid, datapart[2], valueout)
|
||||
else: bytestream.read(datapart[1])
|
||||
except:
|
||||
pass
|
||||
|
||||
def from_plugdata(cvpj_l, pluginid, in_datadef):
|
||||
def from_plugdata(cvpj_plugindata, in_datadef):
|
||||
outdata = b''
|
||||
for datapart in in_datadef:
|
||||
if datapart[0] != 'x':
|
||||
if datapart[1]: paramval = plugins.get_plug_param(cvpj_l, pluginid, datapart[2], 0)[0]
|
||||
else: paramval = plugins.get_plug_dataval(cvpj_l, pluginid, datapart[2], 0)
|
||||
if datapart[1]: paramval = cvpj_plugindata.param_get(cvpj_l, pluginid, datapart[2], 0)[0]
|
||||
else: paramval = cvpj_plugindata.dataval_get(cvpj_l, pluginid, datapart[2], 0)
|
||||
|
||||
if datapart[0] == 'i': outdata += struct.pack('i', paramval)
|
||||
if datapart[0] == 'I': outdata += struct.pack('I', paramval)
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import plugins
|
||||
from functions import data_bytes
|
||||
|
||||
g_paramnames = {}
|
||||
g_paramnames['opl2'] = [
|
||||
['perctype','tremolo_depth','vibrato_depth','fm','feedback'],
|
||||
2,
|
||||
['env_attack','env_decay','env_release','env_sustain','freqmul','ksr','level','ksl','tremolo','vibrato','waveform','sustained', 'perc_env'] ]
|
||||
|
||||
g_paramnames['opl3'] = [
|
||||
['perctype','tremolo_depth','vibrato_depth','con_12','con_34','feedback_12','feedback_34'],
|
||||
4,
|
||||
['env_attack','env_decay','env_release','env_sustain','freqmul','ksr','level','ksl','tremolo','vibrato','waveform','sustained', 'perc_env'] ]
|
||||
|
||||
g_paramnames['opn2'] = [
|
||||
['algorithm','feedback','fms','ams','lfo_enable','lfo_frequency'],
|
||||
4,
|
||||
['am','env_attack','env_decay','freqmul','env_release','env_sustain','level','detune2','ratescale','detune','env_decay2','ssg_enable','ssg_mode'] ]
|
||||
|
||||
class fm_data:
|
||||
def __init__(self, fmtype):
|
||||
self.params = {}
|
||||
self.operator = []
|
||||
self.fmtype = fmtype
|
||||
self.fm_paramnames = g_paramnames[fmtype]
|
||||
|
||||
for paramname in self.fm_paramnames[0]: self.params[paramname] = 0
|
||||
|
||||
for opnum in range(self.fm_paramnames[1]):
|
||||
op_data = {}
|
||||
for opparamname in self.fm_paramnames[2]: op_data[opparamname] = 0
|
||||
self.operator.append(op_data)
|
||||
|
||||
def set_param(self, name, value):
|
||||
self.params[name] = value
|
||||
|
||||
def set_op_param(self, opnum, name, value):
|
||||
self.operator[opnum][name] = value
|
||||
|
||||
def to_cvpj(self, cvpj_l, pluginid):
|
||||
for paramname in self.fm_paramnames[0]:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, paramname, self.params[paramname], 'int', paramname)
|
||||
|
||||
for opnum in range(self.fm_paramnames[1]):
|
||||
for opparamname in self.fm_paramnames[2]:
|
||||
cvpj_opparamname = 'op'+str(opnum+1)+'_'+opparamname
|
||||
plugins.add_plug_param(cvpj_l, pluginid, cvpj_opparamname, self.operator[opnum][opparamname], 'int', 'OP '+str(opnum+1)+': '+opparamname)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def opl_sbi_part_op(self, opnum, i_input, isreversed):
|
||||
ixChar, ixScale, ixAttack, ixSustain, ixWaveSel = i_input
|
||||
|
||||
opl_out_flags, opl_out_mul = data_bytes.splitbyte(ixChar)
|
||||
opl_out_trem, opl_out_vib, opl_out_sust, opl_out_krs = data_bytes.to_bin(opl_out_flags, 4)
|
||||
opl_out_kls = ixScale >> 6
|
||||
opl_out_out = ixScale & 0x3F
|
||||
opl_out_wave = ixWaveSel
|
||||
opl_out_att, opl_out_dec = data_bytes.splitbyte(ixAttack)
|
||||
opl_out_sus, opl_out_rel = data_bytes.splitbyte(ixSustain)
|
||||
|
||||
if isreversed == False:
|
||||
self.set_op_param(opnum, 'env_attack', opl_out_att)
|
||||
self.set_op_param(opnum, 'env_decay', opl_out_dec)
|
||||
self.set_op_param(opnum, 'env_release', opl_out_rel)
|
||||
else:
|
||||
self.set_op_param(opnum, 'env_attack', (opl_out_att*-1)+15)
|
||||
self.set_op_param(opnum, 'env_decay', (opl_out_dec*-1)+15)
|
||||
self.set_op_param(opnum, 'env_release', (opl_out_rel*-1)+15)
|
||||
|
||||
|
||||
self.set_op_param(opnum, 'ksl', opl_out_kls)
|
||||
self.set_op_param(opnum, 'freqmul', opl_out_mul)
|
||||
self.set_op_param(opnum, 'env_sustain', opl_out_sus)
|
||||
self.set_op_param(opnum, 'sustained', opl_out_sust)
|
||||
self.set_op_param(opnum, 'level', opl_out_out)
|
||||
self.set_op_param(opnum, 'tremolo', opl_out_trem)
|
||||
self.set_op_param(opnum, 'vibrato', opl_out_vib)
|
||||
self.set_op_param(opnum, 'ksr', opl_out_krs)
|
||||
self.set_op_param(opnum, 'waveform', opl_out_wave)
|
||||
|
||||
def opl_sbi_part_fbcon(self, iFeedback, txt_feedback, txt_fm):
|
||||
opl_fb = (iFeedback) >> 1
|
||||
opl_con = iFeedback & 0x01
|
||||
|
||||
self.set_param(txt_feedback, opl_fb)
|
||||
self.set_param(txt_fm, opl_con)
|
||||
|
|
@ -39,10 +39,6 @@ def setvalue(i_cat, i_name, i_value):
|
|||
global params
|
||||
params[i_cat][i_name] = i_value
|
||||
|
||||
def add(bio_data, i_cat, i_name, i_value):
|
||||
text = i_cat+' : '+i_name+'='+str(i_value)+';\n'
|
||||
bio_data.write(str.encode(text))
|
||||
|
||||
def getparams():
|
||||
global params
|
||||
|
||||
|
@ -52,11 +48,10 @@ def getparams():
|
|||
for paramcat in params:
|
||||
for paramval in params[paramcat]:
|
||||
o_value = params[paramcat][paramval]
|
||||
if paramval in ['freq_start']: o_value = math.sqrt((o_value-2.51)/3000)
|
||||
if paramval in ['freq_end']: o_value = math.sqrt((o_value-2.51)/2000)
|
||||
if paramval in ['f_env_release']:
|
||||
if o_value > 2.4: o_value = math.sqrt((o_value-2.51)/5000)
|
||||
add(out, paramcat, paramval, o_value)
|
||||
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,8 +1,6 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import data_values
|
||||
|
||||
# -------------------- wolfshaper --------------------
|
||||
|
||||
def wolfshaper_init():
|
||||
|
@ -21,9 +19,11 @@ def wolfshaper_init():
|
|||
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)
|
||||
|
|
|
@ -3,11 +3,6 @@
|
|||
|
||||
import lxml.etree as ET
|
||||
|
||||
def socalabs_addparam(x_sid, name, value):
|
||||
x_temp = ET.SubElement(x_sid, 'param')
|
||||
x_temp.set('uid', name)
|
||||
x_temp.set('val', str(value))
|
||||
|
||||
# -------------------- magical8bitplug --------------------
|
||||
def shape_m8bp(pluginname, plugindata):
|
||||
m8p_root = ET.Element("root")
|
||||
|
@ -128,25 +123,3 @@ def m8bp_out():
|
|||
if m8bp_params_env["volume"] != None: m8p_volumeEnv.text = ','.join(str(item) for item in m8bp_params_env["volume"])
|
||||
|
||||
return xml_m8p_root
|
||||
|
||||
# -------------------- juicysfplugin --------------------
|
||||
def juicysfplugin_create(bank, patch, filename):
|
||||
jsfp_xml = ET.Element("MYPLUGINSETTINGS")
|
||||
jsfp_params = ET.SubElement(jsfp_xml, "params")
|
||||
jsfp_uiState = ET.SubElement(jsfp_xml, "uiState")
|
||||
jsfp_soundFont = ET.SubElement(jsfp_xml, "soundFont")
|
||||
if 'bank' != None: jsfp_params.set('bank', str(bank/128))
|
||||
else: jsfp_params.set('bank', "0")
|
||||
if 'patch' != None: jsfp_params.set('preset', str(patch/128))
|
||||
else: jsfp_params.set('preset', "0")
|
||||
jsfp_params.set('attack', "0.0")
|
||||
jsfp_params.set('decay', "0.0")
|
||||
jsfp_params.set('sustain', "0.0")
|
||||
jsfp_params.set('release', "0.0")
|
||||
jsfp_params.set('filterCutOff', "0.0")
|
||||
jsfp_params.set('filterResonance', "0.0")
|
||||
jsfp_uiState.set('width', "500.0")
|
||||
jsfp_uiState.set('height', "300.0")
|
||||
if 'file' != None: jsfp_soundFont.set('path', filename)
|
||||
else: jsfp_soundFont.set('path', '')
|
||||
return jsfp_xml
|
|
@ -29,7 +29,7 @@ def resizewave(inputwave, **kwargs):
|
|||
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 > 10 else False
|
||||
smooth = kwargs['smooth'] if 'smooth' in kwargs else True if dur_input > 32 else False
|
||||
|
||||
if smooth == False:
|
||||
for num in range(numpoints):
|
||||
|
@ -72,8 +72,8 @@ def create_wave(shape, mul, pw, **kwargs):
|
|||
for num in range(numpoints): wave_data.append(wave_tri((num+halfpoint)/numpoints)**3)
|
||||
return wave_data
|
||||
|
||||
def cvpjwave2wave(cvpj_l, pluginid, wave_name, **kwargs):
|
||||
wavedata = plugins.get_wave(cvpj_l, pluginid, wave_name)
|
||||
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:
|
||||
|
@ -82,15 +82,15 @@ def cvpjwave2wave(cvpj_l, pluginid, wave_name, **kwargs):
|
|||
return resizewave(wavedata_points, **kwargs)
|
||||
else: return None
|
||||
|
||||
def wave2file(cvpj_l, pluginid, wave_name, fileloc):
|
||||
wavedata = cvpjwave2wave(cvpj_l, pluginid, wave_name)
|
||||
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_l, pluginid, harm_name):
|
||||
harmdata = plugins.get_harmonics(cvpj_l, pluginid, harm_name)
|
||||
def cvpjharm2wave(cvpj_plugdata, harm_name):
|
||||
harmdata = cvpj_plugdata.harmonics_get(harm_name)
|
||||
if harmdata != None:
|
||||
harmonics_data = harmdata['harmonics']
|
||||
wavedata_points = []
|
||||
|
@ -108,8 +108,8 @@ def cvpjharm2wave(cvpj_l, pluginid, harm_name):
|
|||
return wavedata_points
|
||||
else: return None
|
||||
|
||||
def harm2file(cvpj_l, pluginid, harm_name, fileloc):
|
||||
wavedata = cvpjharm2wave(cvpj_l, pluginid, harm_name)
|
||||
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,6 +3,7 @@
|
|||
|
||||
from functions import data_values
|
||||
from functions import params
|
||||
from functions import plugins
|
||||
|
||||
def inst_create(cvpj_l, instid):
|
||||
if 'instruments_data' not in cvpj_l: cvpj_l['instruments_data'] = {}
|
||||
|
@ -63,3 +64,30 @@ def add_pl(cvpj_l, idnum, pl_type, placements_data):
|
|||
if placements_data != None:
|
||||
data_values.nested_dict_add_to_list(cvpj_l, ['playlist', str(idnum), placement_name], placements_data)
|
||||
|
||||
|
||||
def import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color):
|
||||
m_bank, m_inst, m_drum = main_dataset.midito_get('inst', instid)
|
||||
di_name, di_color = main_dataset.object_get_name_color('inst', instid)
|
||||
if m_inst != None:
|
||||
dm_name, dm_color = midi_dataset.object_get_name_color('inst', str(m_inst))
|
||||
out_name = data_values.list_usefirst([def_name, di_name, instid])
|
||||
out_color = data_values.list_usefirst([def_color, di_color, dm_color])
|
||||
inst_create(cvpj_l, instid)
|
||||
inst_visual(cvpj_l, instid, name=out_name, color=out_color)
|
||||
inst_plugindata = plugins.cvpj_plugin('midi', m_bank, m_inst)
|
||||
inst_plugindata.to_cvpj(cvpj_l, str(m_inst))
|
||||
if m_drum == True:
|
||||
inst_param_add(cvpj_l, instid, 'usemasterpitch', False, 'bool')
|
||||
inst_dataval_add(cvpj_l, instid, 'midi', 'output', {'drums': True})
|
||||
else:
|
||||
inst_plugindata = plugins.cvpj_plugin('midi', m_bank, m_inst)
|
||||
inst_param_add(cvpj_l, instid, 'usemasterpitch', True, 'bool')
|
||||
inst_dataval_add(cvpj_l, instid, 'midi', 'output', {'program': m_inst, 'bank': m_bank})
|
||||
inst_pluginid(cvpj_l, instid, str(m_inst))
|
||||
return True, m_bank, m_inst, m_drum, out_name, out_color
|
||||
else:
|
||||
out_name = data_values.list_usefirst([def_name, di_name, instid])
|
||||
out_color = data_values.list_usefirst([def_color, di_color])
|
||||
inst_create(cvpj_l, instid)
|
||||
inst_visual(cvpj_l, instid, name=out_name, color=out_color)
|
||||
return False, None, None, None, out_name, out_color
|
|
@ -57,4 +57,8 @@ def notelistindex_visual(cvpj_l, patid, **kwargs):
|
|||
if 'name' in kwargs:
|
||||
if kwargs['name'] != None: playlist_nle['name'] = kwargs['name']
|
||||
if 'color' in kwargs:
|
||||
if kwargs['color'] != None: playlist_nle['color'] = kwargs['color']
|
||||
if kwargs['color'] != None: playlist_nle['color'] = kwargs['color']
|
||||
|
||||
|
||||
def import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color):
|
||||
return tracks_m.import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color)
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
from functions import data_values
|
||||
from functions import params
|
||||
from functions import plugins
|
||||
|
||||
def track_create(cvpj_l, trackid, tracktype):
|
||||
if 'track_data' not in cvpj_l: cvpj_l['track_data'] = {}
|
||||
|
@ -62,4 +63,31 @@ def iter(cvpj_l):
|
|||
for trackid in cvpj_track_order:
|
||||
track_placements = cvpj_track_placements[trackid] if trackid in cvpj_track_placements else {}
|
||||
track_data = cvpj_track_data[trackid] if trackid in cvpj_track_data else {}
|
||||
yield trackid, track_data, track_placements
|
||||
yield trackid, track_data, track_placements
|
||||
|
||||
def import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color):
|
||||
m_bank, m_inst, m_drum = main_dataset.midito_get('inst', instid)
|
||||
di_name, di_color = main_dataset.object_get_name_color('inst', instid)
|
||||
if m_inst != None:
|
||||
dm_name, dm_color = midi_dataset.object_get_name_color('inst', str(m_inst))
|
||||
out_name = data_values.list_usefirst([def_name, di_name, instid])
|
||||
out_color = data_values.list_usefirst([def_color, di_color, dm_color])
|
||||
track_create(cvpj_l, trackid, 'instrument')
|
||||
track_visual(cvpj_l, trackid, name=out_name, color=out_color)
|
||||
inst_plugindata = plugins.cvpj_plugin('midi', m_bank, m_inst)
|
||||
inst_plugindata.to_cvpj(cvpj_l, trackid)
|
||||
if m_drum == True:
|
||||
track_param_add(cvpj_l, trackid, 'usemasterpitch', False, 'bool')
|
||||
track_dataval_add(cvpj_l, trackid, 'midi', 'output', {'drums': True})
|
||||
else:
|
||||
inst_plugindata = plugins.cvpj_plugin('midi', m_bank, m_inst)
|
||||
track_param_add(cvpj_l, trackid, 'usemasterpitch', True, 'bool')
|
||||
track_dataval_add(cvpj_l, trackid, 'midi', 'output', {'program': m_inst, 'bank': m_bank})
|
||||
track_inst_pluginid(cvpj_l, trackid, trackid)
|
||||
return True, m_bank, m_inst, m_drum, out_name, out_color
|
||||
else:
|
||||
out_name = data_values.list_usefirst([def_name, di_name, instid])
|
||||
out_color = data_values.list_usefirst([def_color, di_color])
|
||||
track_create(cvpj_l, trackid, 'instrument')
|
||||
track_visual(cvpj_l, trackid, name=out_name, color=out_color)
|
||||
return False, None, None, None, out_name, out_color
|
|
@ -51,4 +51,10 @@ def notelistindex_visual(cvpj_l, patid, trackid, **kwargs):
|
|||
if 'name' in kwargs:
|
||||
if kwargs['name'] != None: cvpj_inst_nle['name'] = kwargs['name']
|
||||
if 'color' in kwargs:
|
||||
if kwargs['color'] != None: cvpj_inst_nle['color'] = kwargs['color']
|
||||
if kwargs['color'] != None: cvpj_inst_nle['color'] = kwargs['color']
|
||||
|
||||
def iter(cvpj_l):
|
||||
return tracks_r.iter(cvpj_l)
|
||||
|
||||
def import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color):
|
||||
return tracks_r.import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color)
|
||||
|
|
|
@ -70,3 +70,6 @@ def inst_fxrackchan_add(cvpj_l, trackid, fxrack_channel):
|
|||
|
||||
def inst_fxrackchan_get(cvpj_l, trackid):
|
||||
return tracks_m.inst_fxrackchan_get(cvpj_l, trackid)
|
||||
|
||||
def import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color):
|
||||
return tracks_m.import_dset(cvpj_l, trackid, instid, main_dataset, midi_dataset, def_name, def_color)
|
|
@ -2,15 +2,15 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import colors
|
||||
from functions import idvals
|
||||
from functions import song
|
||||
from functions import plugins
|
||||
from functions import data_dataset
|
||||
from functions import note_data
|
||||
from functions import placement_data
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_m
|
||||
import plugin_input
|
||||
import json
|
||||
import io
|
||||
import json
|
||||
import plugin_input
|
||||
|
||||
instnames = ['mario','toad','yoshi','star','flower','gameboy','dog','cat','pig','swan','face','plane','boat','car','heart','coin','plant','shyguy','ghost']
|
||||
keytable = [19, 17, 16, 14, 12, 11, 9, 7, 5, 4, 2, 0, -1]
|
||||
|
@ -57,9 +57,12 @@ class input_mariopaint_msq(plugin_input.base):
|
|||
def supported_autodetect(self): return False
|
||||
def parse(self, input_file, extra_param):
|
||||
global cvpj_notelist
|
||||
idvals_mariopaint_inst = idvals.parse_idvalscsv('data_idvals/mariopaint_inst.csv')
|
||||
cvpj_l = {}
|
||||
cvpj_notelist = []
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/onlineseq.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
msq_values = {}
|
||||
f_msq = open(input_file, 'r')
|
||||
lines_msq = f_msq.readlines()
|
||||
|
@ -85,15 +88,7 @@ class input_mariopaint_msq(plugin_input.base):
|
|||
tracks_m.add_pl(cvpj_l, 1, 'notes', placement_data.nl2pl(cvpj_notelist))
|
||||
|
||||
for instname in instnames:
|
||||
s_inst_name = idvals.get_idval(idvals_mariopaint_inst, str(instname), 'name')
|
||||
s_inst_color = idvals.get_idval(idvals_mariopaint_inst, str(instname), 'color')
|
||||
if s_inst_color != None: s_inst_color = colors.moregray(s_inst_color)
|
||||
mpinstid = instnames.index(instname)
|
||||
plugins.add_plug_gm_midi(cvpj_l, instname, 0, mpinstid)
|
||||
tracks_m.inst_create(cvpj_l, instname)
|
||||
tracks_m.inst_visual(cvpj_l, instname, name=s_inst_name, color=s_inst_color)
|
||||
tracks_m.inst_pluginid(cvpj_l, instname, instname)
|
||||
tracks_m.inst_dataval_add(cvpj_l, instname, 'midi', 'output', {'program': mpinstid})
|
||||
tracks_m.import_dset(cvpj_l, instname, instname, dataset, dataset_midi, None, None)
|
||||
|
||||
cvpj_l['do_addloop'] = True
|
||||
cvpj_l['do_singlenotelistcut'] = True
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import colors
|
||||
from functions import idvals
|
||||
from functions import song
|
||||
from functions import data_dataset
|
||||
from functions import note_data
|
||||
from functions import plugins
|
||||
from functions import placement_data
|
||||
from functions_tracks import tracks_m
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import auto_data
|
||||
import plugin_input
|
||||
from functions_tracks import tracks_m
|
||||
import json
|
||||
import plugin_input
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
instnames = ['mario','toad','yoshi','star','flower','gameboy','dog','cat','pig','swan','face','plane','boat','car','heart','coin','plant','shyguy','ghost']
|
||||
|
@ -61,9 +61,12 @@ class input_mariopaint_mss(plugin_input.base):
|
|||
global cvpj_notelist
|
||||
tree = ET.parse(input_file)
|
||||
root = tree.getroot()
|
||||
idvals_mariopaint_inst = idvals.parse_idvalscsv('data_idvals/mariopaint_inst.csv')
|
||||
cvpj_l = {}
|
||||
cvpj_notelist = []
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/onlineseq.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
mss_measure = int(root.get('measure'))
|
||||
chords = tree.findall('chord')
|
||||
mss_tempo, notelen = song.get_lower_tempo(int(root.get('tempo')), 4, 180)
|
||||
|
@ -87,15 +90,7 @@ class input_mariopaint_mss(plugin_input.base):
|
|||
tracks_m.add_pl(cvpj_l, 1, 'notes', placement_data.nl2pl(cvpj_notelist))
|
||||
|
||||
for instname in instnames:
|
||||
s_inst_name = idvals.get_idval(idvals_mariopaint_inst, str(instname), 'name')
|
||||
s_inst_color = idvals.get_idval(idvals_mariopaint_inst, str(instname), 'color')
|
||||
if s_inst_color != None: s_inst_color = colors.moregray(s_inst_color)
|
||||
mpinstid = instnames.index(instname)
|
||||
plugins.add_plug_gm_midi(cvpj_l, instname, 0, mpinstid)
|
||||
tracks_m.inst_create(cvpj_l, instname)
|
||||
tracks_m.inst_visual(cvpj_l, instname, name=s_inst_name, color=s_inst_color)
|
||||
tracks_m.inst_pluginid(cvpj_l, instname, instname)
|
||||
tracks_m.inst_dataval_add(cvpj_l, instname, 'midi', 'output', {'program': mpinstid})
|
||||
tracks_m.import_dset(cvpj_l, instname, instname, dataset, dataset_midi, None, None)
|
||||
|
||||
cvpj_l['do_addloop'] = True
|
||||
cvpj_l['do_singlenotelistcut'] = True
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import colors
|
||||
from functions import idvals
|
||||
from functions import song
|
||||
from functions import data_dataset
|
||||
from functions import note_data
|
||||
from functions import plugins
|
||||
from functions import placement_data
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_m
|
||||
import plugin_input
|
||||
import json
|
||||
import io
|
||||
import json
|
||||
import plugin_input
|
||||
|
||||
instnames = ['MARIO','MUSHROOM','YOSHI','STAR','FLOWER','GAMEBOY','DOG','CAT','PIG','SWAN','FACE','PLANE','BOAT','CAR','HEART','PIRANHA','COIN','SHYGUY','BOO','LUIGI','PEACH','FEATHER','BULLETBILL','GOOMBA','BOBOMB','SPINY','FRUIT','ONEUP','MOON','EGG','GNOME']
|
||||
smpnames = {'MARIO': "mario", 'MUSHROOM': "toad", 'YOSHI': "yoshi", 'STAR': "star", 'FLOWER': "flower", 'GAMEBOY': "gameboy", 'DOG': "dog", 'CAT': "cat", 'PIG': "pig", 'SWAN': "swan", 'FACE': "face", 'PLANE': "plane", 'BOAT': "boat", 'CAR': "car", 'HEART': "heart", 'PIRANHA': "plant", 'COIN': "coin", 'SHYGUY': "shyguy", 'BOO': "ghost", 'LUIGI': "luigi", 'PEACH': "peach", 'FEATHER': "feather", 'BULLETBILL': "bulletbill", 'GOOMBA': "goomba", 'BOBOMB': "bobomb", 'SPINY': "spiny", 'FRUIT': "fruit", 'ONEUP': "oneup", 'MOON': "moon", 'EGG': "egg", 'GNOME': "gnome"}
|
||||
|
@ -47,9 +47,12 @@ class input_mariopaint_smp(plugin_input.base):
|
|||
def supported_autodetect(self): return False
|
||||
def parse(self, input_file, extra_param):
|
||||
global cvpj_notelist
|
||||
idvals_mariopaint_inst = idvals.parse_idvalscsv('data_idvals/mariopaint_inst.csv')
|
||||
cvpj_l = {}
|
||||
cvpj_notelist = []
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/onlineseq.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
smp_values = {}
|
||||
linecount = 0
|
||||
f_smp = open(input_file, 'r')
|
||||
|
@ -79,15 +82,7 @@ class input_mariopaint_smp(plugin_input.base):
|
|||
tracks_m.add_pl(cvpj_l, 1, 'notes', placement_data.nl2pl(cvpj_notelist))
|
||||
|
||||
for instname in instnames:
|
||||
s_inst_name = idvals.get_idval(idvals_mariopaint_inst, smpnames[instname], 'name')
|
||||
s_inst_color = idvals.get_idval(idvals_mariopaint_inst, smpnames[instname], 'color')
|
||||
if s_inst_color != None: s_inst_color = colors.moregray(s_inst_color)
|
||||
mpinstid = instnames.index(instname)
|
||||
plugins.add_plug_gm_midi(cvpj_l, instname, 0, mpinstid)
|
||||
tracks_m.inst_create(cvpj_l, instname)
|
||||
tracks_m.inst_visual(cvpj_l, instname, name=s_inst_name, color=s_inst_color)
|
||||
tracks_m.inst_pluginid(cvpj_l, instname, instname)
|
||||
tracks_m.inst_dataval_add(cvpj_l, instname, 'midi', 'output', {'program': mpinstid})
|
||||
tracks_m.import_dset(cvpj_l, instname, instname, dataset, dataset_midi, None, None)
|
||||
|
||||
cvpj_l['do_addloop'] = True
|
||||
cvpj_l['do_singlenotelistcut'] = True
|
||||
|
|
|
@ -84,43 +84,45 @@ class input_ceol(plugin_input.base):
|
|||
tracks_master.create(cvpj_l, 1)
|
||||
tracks_master.visual(cvpj_l, name='Master', color=[0.31373, 0.39608, 0.41569])
|
||||
|
||||
if globalfxname[ceol_basic_effect] == 'delay':
|
||||
plugins.add_plug(cvpj_l, 'master-effect', 'universal', 'delay-c')
|
||||
plugins.add_plug_fxdata(cvpj_l, 'master-effect', 1, 0.5)
|
||||
plugins.add_plug_data(cvpj_l, 'master-effect', 'time_type', 'seconds')
|
||||
plugins.add_plug_data(cvpj_l, 'master-effect', 'time', ((300*ceol_basic_effectvalue)/100)/1000 )
|
||||
plugins.add_plug_data(cvpj_l, 'master-effect', 'feedback', 0.1)
|
||||
plugins.add_plug_fxvisual(cvpj_l, 'master-effect', globalfxname_vis[ceol_basic_effect], None)
|
||||
if ceol_basic_effect == 0: #delay
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'delay-c')
|
||||
masterfx_plugindata.fxdata_add(1, 0.5)
|
||||
masterfx_plugindata.dataval_add('time_type', 'seconds')
|
||||
masterfx_plugindata.dataval_add('time', ((300*ceol_basic_effectvalue)/100)/1000 )
|
||||
masterfx_plugindata.dataval_add('feedback', 0.1)
|
||||
masterfx_plugindata.fxvisual_add(globalfxname_vis[ceol_basic_effect], None)
|
||||
|
||||
elif globalfxname[ceol_basic_effect] == 'chorus':
|
||||
plugins.add_plug(cvpj_l, 'master-effect', 'simple', 'chorus')
|
||||
plugins.add_plug_fxdata(cvpj_l, 'master-effect', 1, ceol_basic_effectvalue/100)
|
||||
elif ceol_basic_effect == 1: #chorus
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'chorus')
|
||||
masterfx_plugindata.fxdata_add(1, ceol_basic_effectvalue/100)
|
||||
|
||||
elif globalfxname[ceol_basic_effect] == 'reverb':
|
||||
plugins.add_plug(cvpj_l, 'master-effect', 'simple', 'reverb')
|
||||
plugins.add_plug_fxdata(cvpj_l, 'master-effect', 1, (0.3)*(ceol_basic_effectvalue/100))
|
||||
elif ceol_basic_effect == 2: #reverb
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'reverb')
|
||||
masterfx_plugindata.fxdata_add(1, (0.3)*(ceol_basic_effectvalue/100))
|
||||
|
||||
elif globalfxname[ceol_basic_effect] == 'distortion':
|
||||
plugins.add_plug(cvpj_l, 'master-effect', 'simple', 'distortion')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'amount', ceol_basic_effectvalue/100, 'float', 'amount')
|
||||
elif ceol_basic_effect == 3: #distortion
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'distortion')
|
||||
masterfx_plugindata.param_add('amount', ceol_basic_effectvalue/100, 'float', 'amount')
|
||||
|
||||
elif globalfxname[ceol_basic_effect] == 'low_boost':
|
||||
plugins.add_plug(cvpj_l, 'master-effect', 'simple', 'bassboost')
|
||||
plugins.add_plug_fxdata(cvpj_l, 'master-effect', 1, ceol_basic_effectvalue/100)
|
||||
elif ceol_basic_effect == 4: #low_boost
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'bassboost')
|
||||
masterfx_plugindata.fxdata_add(1, ceol_basic_effectvalue/100)
|
||||
|
||||
elif globalfxname[ceol_basic_effect] == 'compresser':
|
||||
plugins.add_plug(cvpj_l, 'master-effect', 'universal', 'compressor')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'attack', 0.1, 'float', 'attack')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'pregain', 0, 'float', 'pregain')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'knee', 6, 'float', 'knee')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'postgain', 0, 'float', 'postgain')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'ratio', 4, 'float', 'ratio')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'release', 0.5, 'float', 'release')
|
||||
plugins.add_plug_param(cvpj_l, 'master-effect', 'threshold', -20, 'float', 'threshold')
|
||||
elif ceol_basic_effect == 5: #compresser
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'compressor')
|
||||
masterfx_plugindata.param_add('attack', 0.1, 'float', 'attack')
|
||||
masterfx_plugindata.param_add('pregain', 0, 'float', 'pregain')
|
||||
masterfx_plugindata.param_add('knee', 6, 'float', 'knee')
|
||||
masterfx_plugindata.param_add('postgain', 0, 'float', 'postgain')
|
||||
masterfx_plugindata.param_add('ratio', 4, 'float', 'ratio')
|
||||
masterfx_plugindata.param_add('release', 0.5, 'float', 'release')
|
||||
masterfx_plugindata.param_add('threshold', -20, 'float', 'threshold')
|
||||
|
||||
elif globalfxname[ceol_basic_effect] == 'high_pass':
|
||||
plugins.add_plug(cvpj_l, 'master-effect', 'universal', 'eq-bands')
|
||||
plugins.add_eqband(cvpj_l, 'master-effect', 1, calc_cutoff(ceol_basic_effectvalue), 0, 'high_pass', 1, None)
|
||||
elif ceol_basic_effect == 6: #high_pass
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'eq-bands')
|
||||
masterfx_plugindata.eqband_add(1, calc_cutoff(ceol_basic_effectvalue), 0, 'high_pass', 1, None)
|
||||
|
||||
masterfx_plugindata.to_cvpj(cvpj_l, 'master-effect')
|
||||
|
||||
fxslot.insert(cvpj_l, ['master'], 'audio', 'master-effect')
|
||||
|
||||
|
@ -148,35 +150,33 @@ class input_ceol(plugin_input.base):
|
|||
cvpj_instvol = ceol_inst_volume/256
|
||||
cvpj_instcolor = ceol_colors[ceol_inst_palette] if (ceol_inst_palette in ceol_colors) else [0.55, 0.55, 0.55]
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
if ceol_inst_number <= 127:
|
||||
cvpj_instname = idvals.get_idval(idvals_inst_midi, str(ceol_inst_number), 'name')
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, 0, ceol_inst_number)
|
||||
inst_plugindata = plugins.cvpj_plugin('midi', 0, ceol_inst_number)
|
||||
elif ceol_inst_number == 365:
|
||||
cvpj_instname = 'MIDI Drums'
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, 128, 0)
|
||||
inst_plugindata = plugins.cvpj_plugin('midi', 128, 0)
|
||||
else:
|
||||
cvpj_instname = idvals.get_idval(idvals_inst_bosca, str(ceol_inst_number), 'name')
|
||||
valsoundid = idvals.get_idval(idvals_inst_bosca, str(ceol_inst_number), 'valsoundid')
|
||||
if valsoundid not in [None, '']:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'valsound', valsoundid)
|
||||
else:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-boscaceoil', 'instrument')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'instrument', ceol_inst_number)
|
||||
if valsoundid not in [None, '']: inst_plugindata = plugins.cvpj_plugin('deftype', 'valsound', valsoundid)
|
||||
else: inst_plugindata = plugins.cvpj_plugin('deftype', 'native-boscaceoil', ceol_inst_number)
|
||||
inst_plugindata.to_cvpj(cvpj_l, cvpj_instid)
|
||||
|
||||
if ceol_inst_number == 363: t_key_offset.append(60)
|
||||
if ceol_inst_number == 364: t_key_offset.append(48)
|
||||
if ceol_inst_number == 365: t_key_offset.append(24)
|
||||
elif ceol_inst_number == 364: t_key_offset.append(48)
|
||||
elif ceol_inst_number == 365: t_key_offset.append(24)
|
||||
else: t_key_offset.append(0)
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=cvpj_instname, color=cvpj_instcolor)
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, cvpj_instid)
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'vol', cvpj_instvol, 'float')
|
||||
|
||||
if ceol_inst_cutoff != 127:
|
||||
plugins.add_plug(cvpj_l, cvpj_instid+'_filter', 'universal', 'eq-bands')
|
||||
plugins.add_eqband(cvpj_l, cvpj_instid+'_filter', 1, calc_initcutoffval, 0, 'low_pass', ceol_inst_resonance+1, None)
|
||||
inst_filt_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'eq-bands')
|
||||
inst_filt_plugindata.eqband_add(1, calc_initcutoffval, 0, 'low_pass', ceol_inst_resonance+1, None)
|
||||
inst_filt_plugindata.to_cvpj(cvpj_l, cvpj_instid+'_filter')
|
||||
fxslot.insert(cvpj_l, ['instrument', cvpj_instid], 'audio', cvpj_instid+'_filter')
|
||||
|
||||
if ceol_inst_number <= 127:
|
||||
|
|
|
@ -8,7 +8,8 @@ from functions import plugins
|
|||
from functions import idvals
|
||||
from functions import song
|
||||
from functions_tracks import tracks_mi
|
||||
from functions_plugparams import params_fm
|
||||
from functions_plugdata import plugin_fm
|
||||
|
||||
import plugin_input
|
||||
import zlib
|
||||
import struct
|
||||
|
@ -302,15 +303,15 @@ class input_cvpj_r(plugin_input.base):
|
|||
cvpj_instdata = {}
|
||||
cvpj_instdata["plugindata"] = {}
|
||||
if insttype == 'square' or insttype == 'noise':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', insttype)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', insttype)
|
||||
if 'env_volume' in dmf_instdata:
|
||||
loopval = None
|
||||
if dmf_instdata['env_volume']['looppos'] != -1: loopval = dmf_instdata['env_volume']['looppos']
|
||||
add_env_blocks(cvpj_l, pluginid, 'vol', dmf_instdata['env_volume']['values'], loopval, None)
|
||||
inst_plugindata.env_blocks_add('vol', dmf_instdata['env_volume']['values'], None, loopval, None)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif insttype == 'opn2':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'fm', 'opn2')
|
||||
fmdata = params_fm.fm_data('opn2')
|
||||
fmdata = plugin_fm.fm_data('opn2')
|
||||
dmf_fmdata = dmf_instdata['fmdata']
|
||||
dmf_fmopdata = dmf_fmdata['ops']
|
||||
|
||||
|
|
|
@ -140,14 +140,14 @@ def decode_fst(infile):
|
|||
fst_Main['DPCMMappings'] = fst_DPCMMappings
|
||||
return fst_Main
|
||||
|
||||
def add_envelope(pluginid, fst_Instrument, cvpj_name, fst_name):
|
||||
def add_envelope(inst_plugindata, fst_Instrument, cvpj_name, fst_name):
|
||||
if fst_name in fst_Instrument['Envelopes']:
|
||||
envdata = {}
|
||||
if fst_name == 'FDSWave':
|
||||
if 'Values' in fst_Instrument['Envelopes'][fst_name]: envdata['values'] = [int(i) for i in fst_Instrument['Envelopes'][fst_name]['Values'].split(',')]
|
||||
if 'Loop' in fst_Instrument['Envelopes'][fst_name]: envdata['loop'] = fst_Instrument['Envelopes'][fst_name]['Loop']
|
||||
if 'Release' in fst_Instrument['Envelopes'][fst_name]: envdata['release'] = fst_Instrument['Envelopes'][fst_name]['Release']
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'wave', envdata)
|
||||
inst_plugindata.dataval_add('wave', envdata)
|
||||
elif fst_name == 'N163Wave':
|
||||
envdata['loop'] = 0
|
||||
if 'Values' in fst_Instrument['Envelopes'][fst_name]: envdata['values'] = [int(i) for i in fst_Instrument['Envelopes'][fst_name]['Values'].split(',')]
|
||||
|
@ -156,16 +156,16 @@ def add_envelope(pluginid, fst_Instrument, cvpj_name, fst_name):
|
|||
envdata['size'] = int(fst_Instrument['N163WaveSize'])
|
||||
envdata['pos'] = int(fst_Instrument['N163WavePos'])
|
||||
envdata['count'] = int(fst_Instrument['N163WaveCount'])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'wave', envdata)
|
||||
inst_plugindata.dataval_add('wave', envdata)
|
||||
|
||||
waveids = []
|
||||
namco163_wave_chunks = data_values.list_chunks(envdata['values'], int(envdata['size']))
|
||||
for wavenum in range(len(namco163_wave_chunks)):
|
||||
wavedata = namco163_wave_chunks[wavenum]
|
||||
if len(wavedata) == int(envdata['size']):
|
||||
plugins.add_wave(cvpj_l, pluginid, str(wavenum), wavedata, 0, 15)
|
||||
inst_plugindata.wave_add(str(wavenum), wavedata, 0, 15)
|
||||
waveids.append(str(wavenum))
|
||||
plugins.add_wavetable(cvpj_l, pluginid, 'N163', waveids, None, envdata['loop']/((envdata['size']*envdata['count'])-1))
|
||||
inst_plugindata.wavetable_add('N163', waveids, None, envdata['loop']/((envdata['size']*envdata['count'])-1))
|
||||
|
||||
else:
|
||||
envdata_values = [int(i) for i in fst_Instrument['Envelopes'][fst_name]['Values'].split(',')]
|
||||
|
@ -175,14 +175,14 @@ def add_envelope(pluginid, fst_Instrument, cvpj_name, fst_name):
|
|||
envdata_loop = fst_Instrument['Envelopes'][fst_name]['Loop']
|
||||
if 'Release' in fst_Instrument['Envelopes'][fst_name]:
|
||||
envdata_release = fst_Instrument['Envelopes'][fst_name]['Release']
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, cvpj_name, envdata_values, 15, envdata_loop, envdata_release)
|
||||
inst_plugindata.env_blocks_add(cvpj_name, envdata_values, 0.017, 15, envdata_loop, envdata_release)
|
||||
|
||||
|
||||
def add_envelopes(pluginid, fst_Instrument):
|
||||
def add_envelopes(inst_plugindata, fst_Instrument):
|
||||
if 'Envelopes' in fst_Instrument:
|
||||
add_envelope(pluginid, fst_Instrument, 'vol', 'Volume')
|
||||
add_envelope(pluginid, fst_Instrument, 'duty', 'DutyCycle')
|
||||
add_envelope(pluginid, fst_Instrument, 'pitch', 'Pitch')
|
||||
add_envelope(inst_plugindata, fst_Instrument, 'vol', 'Volume')
|
||||
add_envelope(inst_plugindata, fst_Instrument, 'duty', 'DutyCycle')
|
||||
add_envelope(inst_plugindata, fst_Instrument, 'pitch', 'Pitch')
|
||||
|
||||
def create_inst(WaveType, fst_Instrument, fxrackchan):
|
||||
instname = fst_Instrument['Name']
|
||||
|
@ -196,61 +196,83 @@ def create_inst(WaveType, fst_Instrument, fxrackchan):
|
|||
if WaveType == 'Square1' or WaveType == 'Square2': wavetype = 'square'
|
||||
if WaveType == 'Triangle': wavetype = 'triangle'
|
||||
if WaveType == 'Noise': wavetype = 'noise'
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', wavetype)
|
||||
add_envelopes(pluginid, fst_Instrument)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', wavetype)
|
||||
add_envelopes(inst_plugindata, fst_Instrument)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'VRC7FM':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'fm', 'vrc7')
|
||||
add_envelopes(pluginid, fst_Instrument)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'fm', 'vrc7')
|
||||
add_envelopes(inst_plugindata, fst_Instrument)
|
||||
instvolume = 1
|
||||
if 'Vrc7Patch' in fst_Instrument:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'use_patch', True)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'patch', int(fst_Instrument['Vrc7Patch']))
|
||||
inst_plugindata.dataval_add('use_patch', True)
|
||||
inst_plugindata.dataval_add('patch', int(fst_Instrument['Vrc7Patch']))
|
||||
else:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'use_patch', False)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'regs', fst_Instrument['Vrc7Reg'])
|
||||
inst_plugindata.dataval_add('use_patch', False)
|
||||
inst_plugindata.dataval_add('regs', fst_Instrument['Vrc7Reg'])
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'VRC6Square' or WaveType == 'VRC6Saw':
|
||||
if WaveType == 'VRC6Saw': wavetype = 'saw'
|
||||
if WaveType == 'VRC6Square': wavetype = 'square'
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', wavetype)
|
||||
add_envelopes(pluginid, fst_Instrument)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', wavetype)
|
||||
add_envelopes(inst_plugindata, fst_Instrument)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'FDS':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'fds', None)
|
||||
add_envelopes(pluginid, fst_Instrument)
|
||||
add_envelope(pluginid, fst_Instrument, 'wave', 'FDSWave')
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'fds', None)
|
||||
add_envelopes(inst_plugindata, fst_Instrument)
|
||||
add_envelope(inst_plugindata, fst_Instrument, 'wave', 'FDSWave')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'N163':
|
||||
instvolume = 1
|
||||
plugins.add_plug(cvpj_l, pluginid, 'namco163_famistudio', None)
|
||||
add_envelopes(pluginid, fst_Instrument)
|
||||
add_envelope(pluginid, fst_Instrument, 'wave', 'N163Wave')
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'namco163_famistudio', None)
|
||||
add_envelopes(inst_plugindata, fst_Instrument)
|
||||
add_envelope(inst_plugindata, fst_Instrument, 'wave', 'N163Wave')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'S5B':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'sunsoft_5b', None)
|
||||
add_envelopes(pluginid, fst_Instrument)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'sunsoft_5b', None)
|
||||
add_envelopes(inst_plugindata, fst_Instrument)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'MMC5':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'mmc5', None)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'mmc5', None)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'EPSMSquare':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'epsm_square', None)
|
||||
add_envelopes(pluginid, fst_Instrument)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'epsm_square', None)
|
||||
add_envelopes(inst_plugindata, fst_Instrument)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'EPSMFM':
|
||||
instvolume = 0.7
|
||||
plugins.add_plug(cvpj_l, pluginid, 'fm', 'epsm')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'regs', fst_Instrument['EpsmReg'])
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'fm', 'epsm')
|
||||
inst_plugindata.dataval_add('regs', fst_Instrument['EpsmReg'])
|
||||
instpan += int(bool(fst_Instrument['EpsmReg'][1] & 0x80))*-1
|
||||
instpan += int(bool(fst_Instrument['EpsmReg'][1] & 0x40))
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'EPSM_Kick':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'epsm_rhythm', 'kick')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
if WaveType == 'EPSM_Snare':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'epsm_rhythm', 'snare')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
if WaveType == 'EPSM_Cymbal':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'epsm_rhythm', 'cymbal')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
if WaveType == 'EPSM_HiHat':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'epsm_rhythm', 'hihat')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
if WaveType == 'EPSM_Tom':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'epsm_rhythm', 'tom')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
if WaveType == 'EPSM_Rimshot':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'epsm_rhythm', 'rimshot')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if WaveType == 'EPSM_Kick': plugins.add_plug(cvpj_l, pluginid, 'epsm_rhythm', 'kick')
|
||||
if WaveType == 'EPSM_Snare': plugins.add_plug(cvpj_l, pluginid, 'epsm_rhythm', 'snare')
|
||||
if WaveType == 'EPSM_Cymbal': plugins.add_plug(cvpj_l, pluginid, 'epsm_rhythm', 'cymbal')
|
||||
if WaveType == 'EPSM_HiHat': plugins.add_plug(cvpj_l, pluginid, 'epsm_rhythm', 'hihat')
|
||||
if WaveType == 'EPSM_Tom': plugins.add_plug(cvpj_l, pluginid, 'epsm_rhythm', 'tom')
|
||||
if WaveType == 'EPSM_Rimshot': plugins.add_plug(cvpj_l, pluginid, 'epsm_rhythm', 'rimshot')
|
||||
|
||||
#print('DATA ------------' , fst_Instrument)
|
||||
#print('OUT ------------' , plugname, cvpj_plugdata)
|
||||
|
|
|
@ -1,303 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import data_bytes
|
||||
from functions import song_tracker
|
||||
from functions import note_data
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_mi
|
||||
import plugin_input
|
||||
import json
|
||||
|
||||
def hextoint(value):
|
||||
return int(value, 16)
|
||||
|
||||
def setmacro(pluginid, macro_list, listname, macronum, famitrkr_instdata_macro_id):
|
||||
if famitrkr_instdata_macro_id in macro_list[macronum]:
|
||||
macrodata = macro_list[macronum][famitrkr_instdata_macro_id]
|
||||
looploc = None
|
||||
if 'loop' in macrodata: looploc = macrodata['loop']
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, listname, macrodata['values'], 15, looploc, None)
|
||||
|
||||
def parsecell(celldata):
|
||||
cellsplit = celldata.split(' ')
|
||||
|
||||
cellsplit_key = cellsplit[0]
|
||||
cellsplit_inst = cellsplit[1]
|
||||
cellsplit_vol = cellsplit[2]
|
||||
|
||||
cellsplit_key_note = cellsplit_key[0]
|
||||
cellsplit_key_sharp = cellsplit_key[1]
|
||||
cellsplit_key_oct = cellsplit_key[2]
|
||||
|
||||
out_cell = [{},[None, None, {}, {}]]
|
||||
|
||||
if cellsplit_key in ['---', '===']: out_cell[1][0] = 'Off'
|
||||
elif cellsplit_key != '...':
|
||||
out_note = 0
|
||||
if cellsplit_key_oct != '#':
|
||||
out_note = note_data.keyletter_to_note(cellsplit_key_note, int(cellsplit_key_oct)-3)
|
||||
if cellsplit_key_sharp == '#': out_note += 1
|
||||
out_cell[1][0] = out_note
|
||||
|
||||
if cellsplit_inst != '..': out_cell[1][1] = hextoint(cellsplit_inst)
|
||||
|
||||
if cellsplit_vol != '.': out_cell[1][2]['vol'] = hextoint(cellsplit_vol)/15
|
||||
|
||||
return(out_cell)
|
||||
|
||||
retroinst_names = ['Square1','Square2','Triangle','Noise','VRC6Square','VRC6Saw']
|
||||
|
||||
retroinst_names_vrc6 = ['VRC6Square','VRC6Saw']
|
||||
|
||||
class input_famitrkr_txt(plugin_input.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'input'
|
||||
def getshortname(self): return 'famitrkr_txt'
|
||||
def getname(self): return 'famitrkr_txt'
|
||||
def gettype(self): return 'mi'
|
||||
def getdawcapabilities(self):
|
||||
return {
|
||||
'fxrack': False,
|
||||
'track_lanes': True,
|
||||
'placement_cut': False,
|
||||
'auto_nopl': False,
|
||||
'track_nopl': False
|
||||
}
|
||||
def supported_autodetect(self): return False
|
||||
def parse(self, input_file, extra_param):
|
||||
global cvpj_l
|
||||
f_smp = open(input_file, 'r')
|
||||
lines_smp = f_smp.readlines()
|
||||
|
||||
cvpj_l = {}
|
||||
|
||||
if 'songnum' in extra_param: selectedsong = int(extra_param['songnum'])
|
||||
else: selectedsong = 1
|
||||
|
||||
songnum = 1
|
||||
|
||||
mt_pat = {}
|
||||
mt_ord = {}
|
||||
mt_ch_insttype = ['Square1','Square2','Triangle','Noise','DPCM']
|
||||
mt_ch_names = ['Square1','Square2','Triangle','Noise','DPCM']
|
||||
|
||||
cur_pattern = 1
|
||||
|
||||
i_trackactive = False
|
||||
ft_info_main_title = ''
|
||||
ft_info_title = ''
|
||||
ft_info_author = ''
|
||||
ft_info_copyright = ''
|
||||
t_patterndata = {}
|
||||
|
||||
song_tempo = 150
|
||||
song_speed = 3
|
||||
song_rows = 64
|
||||
|
||||
macro_nes = [{},{},{},{},{}]
|
||||
macro_nes_vrc6 = [{},{},{},{},{}]
|
||||
|
||||
famitrkr_instdata = {}
|
||||
famitrkr_instdata_vrc6 = {}
|
||||
|
||||
inst_name = {}
|
||||
|
||||
mt_ch_insttype = ['Square1','Square2','Triangle','Noise','DPCM']
|
||||
mt_ch_names = ['Square1','Square2','Triangle','Noise','DPCM']
|
||||
|
||||
for line in lines_smp:
|
||||
ft_cmd_data = line.strip().split(' ', 1)
|
||||
|
||||
#print(ft_cmd_data)
|
||||
if ft_cmd_data[0] == 'TITLE':
|
||||
ft_info_main_title = ft_cmd_data[1].split('"')[1::2][0]
|
||||
print('[input-famitracker_txt] Title: ' + ft_info_main_title)
|
||||
|
||||
if ft_cmd_data[0] == 'MACRO':
|
||||
macrodata = ft_cmd_data[1].split(' : ')
|
||||
if len(macrodata) > 1:
|
||||
macrotxt, macroseq = macrodata
|
||||
macroseq = [int(i) for i in macroseq.split()]
|
||||
macrovals = macrotxt.strip().split()
|
||||
microtype, macroid, macroloop, macrorelease, macrounk = [int(i) for i in macrovals]
|
||||
env_data = {'values': macroseq}
|
||||
if macrorelease != -1: env_data['release'] = macrorelease
|
||||
if macroloop != -1: env_data['loop'] = macroloop
|
||||
macro_nes[microtype][macroid] = env_data
|
||||
|
||||
if ft_cmd_data[0] == 'MACROVRC6':
|
||||
macrodata = ft_cmd_data[1].split(' : ')
|
||||
if len(macrodata) > 1:
|
||||
macrotxt, macroseq = macrodata
|
||||
macroseq = [int(i) for i in macroseq.split()]
|
||||
macrovals = macrotxt.strip().split()
|
||||
microtype, macroid, macroloop, macrorelease, macrounk = [int(i) for i in macrovals]
|
||||
env_data = {'values': macroseq}
|
||||
if macrorelease != -1: env_data['release'] = macrorelease
|
||||
if macroloop != -1: env_data['loop'] = macroloop
|
||||
macro_nes_vrc6[microtype][macroid] = env_data
|
||||
|
||||
if ft_cmd_data[0] == 'AUTHOR':
|
||||
ft_info_author = ft_cmd_data[1].split('"')[1::2][0]
|
||||
print('[input-famitracker_txt] Author: ' + ft_info_author)
|
||||
|
||||
if ft_cmd_data[0] == 'COPYRIGHT':
|
||||
ft_info_copyright = ft_cmd_data[1].split('"')[1::2][0]
|
||||
print('[input-famitracker_txt] Copyright: ' + ft_info_copyright)
|
||||
|
||||
if ft_cmd_data[0] == 'EXPANSION':
|
||||
ft_info_expansion = int(ft_cmd_data[1].split()[0])
|
||||
print('[input-famitracker_txt] Expansion: ' + str(ft_info_expansion))
|
||||
|
||||
#1=VRC6, 2=VRC7, 4=FDS, 8=MMC5, 16=N163, 32=S5B
|
||||
|
||||
if bool(ft_info_expansion & 0b1):
|
||||
mt_ch_insttype.append('VRC6Square1')
|
||||
mt_ch_names.append('VRC6Square1')
|
||||
mt_ch_insttype.append('VRC6Square2')
|
||||
mt_ch_names.append('VRC6Square2')
|
||||
mt_ch_insttype.append('VRC6Saw')
|
||||
mt_ch_names.append('VRC6Saw')
|
||||
if bool(ft_info_expansion & 0b10):
|
||||
for _ in range(6):
|
||||
mt_ch_insttype.append('VRC7FM')
|
||||
mt_ch_names.append('VRC7FM')
|
||||
if bool(ft_info_expansion & 0b100):
|
||||
mt_ch_insttype.append('FDS')
|
||||
mt_ch_names.append('FDS')
|
||||
if bool(ft_info_expansion & 0b1000):
|
||||
for _ in range(2):
|
||||
mt_ch_insttype.append('MMC5Square')
|
||||
mt_ch_names.append('MMC5Square')
|
||||
if bool(ft_info_expansion & 0b10000):
|
||||
for _ in range(8):
|
||||
mt_ch_insttype.append('N163')
|
||||
mt_ch_names.append('N163')
|
||||
if bool(ft_info_expansion & 0b100000):
|
||||
for _ in range(3):
|
||||
mt_ch_insttype.append('S5B')
|
||||
mt_ch_names.append('S5B')
|
||||
|
||||
for chnum in range(len(mt_ch_insttype)):
|
||||
mt_ord[chnum] = []
|
||||
mt_pat[chnum] = {}
|
||||
|
||||
#print(mt_ch_names, len(mt_ch_names))
|
||||
|
||||
if ft_cmd_data[0] == 'INST2A03':
|
||||
t_instdata = ft_cmd_data[1].split('"')[:2]
|
||||
t_instdata_nums = t_instdata[0].split()
|
||||
t_instdata_name = t_instdata[1]
|
||||
inst_id,inst_macro_vol,inst_macro_arp,inst_macro_pitch,inst_macro_hipitch,inst_macro_duty = [int(i) for i in t_instdata_nums]
|
||||
famitrkr_instdata[inst_id] = [t_instdata_name, inst_macro_vol, inst_macro_arp, inst_macro_pitch, inst_macro_hipitch, inst_macro_duty]
|
||||
print('[input-famitracker_txt] Inst 2A03 #' + str(inst_id) + ' (' + t_instdata_name + ')')
|
||||
|
||||
if ft_cmd_data[0] == 'INSTVRC6':
|
||||
t_instdata = ft_cmd_data[1].split('"')[:2]
|
||||
t_instdata_nums = t_instdata[0].split()
|
||||
t_instdata_name = t_instdata[1]
|
||||
inst_id,inst_macro_vol,inst_macro_arp,inst_macro_pitch,inst_macro_hipitch,inst_macro_duty = [int(i) for i in t_instdata_nums]
|
||||
famitrkr_instdata_vrc6[inst_id] = [t_instdata_name, inst_macro_vol, inst_macro_arp, inst_macro_pitch, inst_macro_hipitch, inst_macro_duty]
|
||||
print('[input-famitracker_txt] Inst VRC6 #' + str(inst_id) + ' (' + t_instdata_name + ')')
|
||||
|
||||
if ft_cmd_data[0] == 'TRACK':
|
||||
t_trackdata = ft_cmd_data[1].split('"')[:2]
|
||||
ft_info_title = t_trackdata[1]
|
||||
print('[input-famitracker_txt] Song #' + str(songnum) + ' (' + ft_info_title + ')')
|
||||
if selectedsong == songnum:
|
||||
i_trackactive = True
|
||||
t_trackdata_nums = t_trackdata[0].split()
|
||||
song_rows = int(t_trackdata_nums[0])
|
||||
song_speed = int(t_trackdata_nums[1])
|
||||
song_tempo = int(t_trackdata_nums[2])
|
||||
print('[input-famitracker_txt] Tempo: ' + str(song_tempo) + ' | Speed: ' + str(song_speed) + ' | Rows: ' + str(song_rows))
|
||||
else: i_trackactive = False
|
||||
songnum += 1
|
||||
|
||||
if i_trackactive == True:
|
||||
|
||||
if ft_cmd_data[0] == 'ORDER':
|
||||
t_tracks_order_sep = ft_cmd_data[1].split(':')
|
||||
t_tracks_ordernum = hextoint(t_tracks_order_sep[0])
|
||||
t_tracks_orderdata = t_tracks_order_sep[1].split()
|
||||
for i in range(0, len(t_tracks_orderdata)): t_tracks_orderdata[i] = hextoint(t_tracks_orderdata[i])
|
||||
|
||||
for chnum in range(len(t_tracks_orderdata)):
|
||||
mt_ord[chnum].append(t_tracks_orderdata[chnum])
|
||||
|
||||
if ft_cmd_data[0] == 'PATTERN':
|
||||
cur_pattern = hextoint(ft_cmd_data[1])
|
||||
print('[input-famitracker_txt] Pattern #' + str(cur_pattern+1))
|
||||
t_patterndata[cur_pattern] = {}
|
||||
|
||||
if ft_cmd_data[0] == 'ROW':
|
||||
row_tab = ft_cmd_data[1].split(' : ')
|
||||
row_num = hextoint(row_tab[0])+1
|
||||
row_data = row_tab[1:]
|
||||
t_patterndata[cur_pattern][row_num] = row_data
|
||||
|
||||
for patnum in t_patterndata:
|
||||
for chnum in range(len(mt_ch_insttype)):
|
||||
mt_pat[chnum][patnum] = []
|
||||
for _ in range(song_rows): mt_pat[chnum][patnum].append([{},[None, None, {}, {}]])
|
||||
|
||||
for patnum in t_patterndata:
|
||||
s_patdata = t_patterndata[patnum]
|
||||
#print('-----', patnum)
|
||||
for rownum in range(song_rows):
|
||||
if rownum+1 in s_patdata:
|
||||
#print(rownum+1, s_patdata[rownum+1])
|
||||
for chnum in range(len(s_patdata[rownum+1])):
|
||||
mt_pat[chnum][patnum][rownum] = parsecell(s_patdata[rownum+1][chnum])
|
||||
|
||||
len_table = song_tracker.multi_get_len_table(song_rows, mt_pat, mt_ord, mt_ch_insttype)
|
||||
|
||||
song_tracker.multi_convert(cvpj_l, song_rows, mt_pat, mt_ord, mt_ch_insttype, len_table)
|
||||
|
||||
total_used_instruments = song_tracker.get_multi_used_instruments()
|
||||
|
||||
for total_used_instrument in total_used_instruments:
|
||||
insttype = total_used_instrument[0]
|
||||
instid = total_used_instrument[1]
|
||||
|
||||
cvpj_instid = insttype+'_'+instid
|
||||
cvpj_inst = {}
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
if int(instid) in famitrkr_instdata:
|
||||
cvpj_instname = insttype+'-'+famitrkr_instdata[int(instid)][0]
|
||||
if insttype in retroinst_names:
|
||||
if insttype == 'Square1' or insttype == 'Square2': wavetype = "square"
|
||||
if insttype == 'Triangle': wavetype = "triangle"
|
||||
if insttype == 'Noise': wavetype = "noise"
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', wavetype)
|
||||
setmacro(pluginid, macro_nes, "vol", 0, famitrkr_instdata[int(instid)][1])
|
||||
setmacro(pluginid, macro_nes, "arp", 1, famitrkr_instdata[int(instid)][2])
|
||||
setmacro(pluginid, macro_nes, "pitch", 2, famitrkr_instdata[int(instid)][3]*-1)
|
||||
setmacro(pluginid, macro_nes, "hipitch", 3, famitrkr_instdata[int(instid)][4]*-1)
|
||||
setmacro(pluginid, macro_nes, "duty", 4, famitrkr_instdata[int(instid)][5])
|
||||
|
||||
elif int(instid) in famitrkr_instdata_vrc6:
|
||||
cvpj_instname = insttype+'-'+famitrkr_instdata_vrc6[int(instid)][0]
|
||||
if insttype in retroinst_names_vrc6:
|
||||
if insttype == 'VRC6Square': wavetype = "square"
|
||||
if insttype == 'VRC6Saw': wavetype = "saw"
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', wavetype)
|
||||
setmacro(pluginid, macro_nes_vrc6, "vol", 0, famitrkr_instdata_vrc6[int(instid)][1])
|
||||
setmacro(pluginid, macro_nes_vrc6, "arp", 1, famitrkr_instdata_vrc6[int(instid)][2])
|
||||
setmacro(pluginid, macro_nes_vrc6, "pitch", 2, famitrkr_instdata_vrc6[int(instid)][3]*-1)
|
||||
setmacro(pluginid, macro_nes_vrc6, "hipitch", 3, famitrkr_instdata_vrc6[int(instid)][4]*-1)
|
||||
setmacro(pluginid, macro_nes_vrc6, "duty", 4, famitrkr_instdata_vrc6[int(instid)][5])
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=cvpj_instname)
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
|
||||
cvpj_l['do_addloop'] = True
|
||||
cvpj_l['do_lanefit'] = True
|
||||
|
||||
song.add_param(cvpj_l, 'bpm', song_tempo)
|
||||
return json.dumps(cvpj_l)
|
|
@ -1,531 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_input
|
||||
import json
|
||||
import math
|
||||
import struct
|
||||
import av
|
||||
import os.path
|
||||
import varint
|
||||
from pathlib import Path
|
||||
|
||||
from functions_plugin import flp_dec_plugins
|
||||
from functions_plugin import format_flp_dec
|
||||
from functions import note_mod
|
||||
from functions import data_bytes
|
||||
from functions import colors
|
||||
from functions import notelist_data
|
||||
from functions import data_values
|
||||
from functions import song
|
||||
from functions import audio
|
||||
from functions import plugins
|
||||
from functions import params
|
||||
from functions_tracks import tracks_mi
|
||||
from functions_tracks import fxrack
|
||||
from functions_tracks import fxslot
|
||||
|
||||
filename_len = {}
|
||||
|
||||
def getsamplefile(channeldata, flppath):
|
||||
|
||||
if 'samplefilename' in channeldata:
|
||||
pathout = channeldata['samplefilename']
|
||||
samepath = os.path.join(os.path.dirname(flppath), os.path.basename(pathout))
|
||||
if os.path.exists(samepath): pathout = samepath
|
||||
|
||||
if pathout != None and pathout.split('.')[-1] not in ['SYN', 'syn']:
|
||||
audioinfo = audio.get_audiofile_info(pathout)
|
||||
filename_len[pathout] = audioinfo
|
||||
return pathout
|
||||
else:
|
||||
return ''
|
||||
|
||||
|
||||
def calc_time(i_value):
|
||||
oneval = i_value/65535
|
||||
outval = math.log10(oneval)
|
||||
|
||||
for val in [i_value, oneval, outval]:
|
||||
print(str(val).rjust(24), end=' ')
|
||||
print()
|
||||
|
||||
return oneval
|
||||
|
||||
def parse_envlfo(envlfo, pluginid, envtype):
|
||||
bio_envlfo = data_bytes.to_bytesio(envlfo)
|
||||
|
||||
envlfo_flags = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_enabled = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_predelay = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_attack = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_hold = calc_time(int.from_bytes(bio_envlfo.read(4), "little"))
|
||||
el_env_decay = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_sustain = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_release = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_aomunt = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
envlfo_lfo_predelay = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
envlfo_lfo_attack = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
envlfo_lfo_amount = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
envlfo_lfo_speed = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
envlfo_lfo_shape = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_attack_tension = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_decay_tension = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
el_env_release_tension = int.from_bytes(bio_envlfo.read(4), "little")
|
||||
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, envtype, el_env_predelay, el_env_attack, el_env_hold, el_env_decay, el_env_sustain, el_env_release, el_env_aomunt)
|
||||
plugins.add_asdr_env_tension(cvpj_l, pluginid, envtype, el_env_attack_tension, el_env_decay_tension, el_env_release_tension)
|
||||
|
||||
|
||||
|
||||
class input_flp(plugin_input.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'input'
|
||||
def getshortname(self): return 'flp'
|
||||
def getname(self): return 'FL Studio'
|
||||
def gettype(self): return 'mi'
|
||||
def getdawcapabilities(self):
|
||||
return {
|
||||
'samples_inside': True,
|
||||
'fxrack': True,
|
||||
'fxrack_params': ['enabled','vol','pan'],
|
||||
'track_lanes': True,
|
||||
'placement_cut': True,
|
||||
'placement_audio_stretch': ['rate']
|
||||
}
|
||||
def supported_autodetect(self): return True
|
||||
def detect(self, input_file):
|
||||
bytestream = open(input_file, 'rb')
|
||||
bytestream.seek(0)
|
||||
bytesdata = bytestream.read(4)
|
||||
if bytesdata == b'FLhd': return True
|
||||
else: return False
|
||||
def parse(self, input_file, extra_param):
|
||||
global cvpj_l
|
||||
FLP_Data = format_flp_dec.parse(input_file)
|
||||
|
||||
FL_Main = FLP_Data['FL_Main']
|
||||
FL_Patterns = FLP_Data['FL_Patterns']
|
||||
FL_Channels = FLP_Data['FL_Channels']
|
||||
FL_Mixer = FLP_Data['FL_Mixer']
|
||||
|
||||
FL_Arrangements = FLP_Data['FL_Arrangements']
|
||||
FL_TimeMarkers = FLP_Data['FL_TimeMarkers']
|
||||
FL_FilterGroups = FLP_Data['FL_FilterGroups']
|
||||
FL_InitFXVals = FLP_Data['FL_InitFXVals']
|
||||
|
||||
FL_InitFXVals_exists = True if FL_InitFXVals != {} else False
|
||||
|
||||
ppq = FL_Main['ppq']
|
||||
|
||||
cvpj_l = {}
|
||||
timesig_Numerator = FL_Main['Numerator'] if 'Numerator' in FL_Main else 4
|
||||
timesig_Denominator = FL_Main['Denominator'] if 'Denominator' in FL_Main else 4
|
||||
song.add_timesig(cvpj_l, timesig_Numerator, timesig_Denominator)
|
||||
|
||||
if 'MainPitch' in FL_Main: song.add_param(cvpj_l, 'pitch', struct.unpack('h', struct.pack('H', FL_Main['MainPitch']))[0]/100)
|
||||
if 'Tempo' in FL_Main: song.add_param(cvpj_l, 'bpm', FL_Main['Tempo'])
|
||||
if 'Shuffle' in FL_Main: song.add_param(cvpj_l, 'shuffle', FL_Main['Shuffle']/128)
|
||||
song.add_param(cvpj_l, 'vol', 1)
|
||||
|
||||
tempomul = (120/FL_Main['Tempo'])
|
||||
tempomulmin = (FL_Main['Tempo']/120)
|
||||
|
||||
cvpj_l_instrument_data = {}
|
||||
cvpj_l_instrument_order = []
|
||||
cvpj_l_samples = {}
|
||||
cvpj_l_notelistindex = {}
|
||||
cvpj_l_playlist = {}
|
||||
cvpj_l_timemarkers = []
|
||||
|
||||
id_inst = {}
|
||||
id_pat = {}
|
||||
|
||||
sampleinfo = {}
|
||||
samplestretch = {}
|
||||
|
||||
samplefolder = extra_param['samplefolder']
|
||||
|
||||
for instrument in FL_Channels:
|
||||
channeldata = FL_Channels[instrument]
|
||||
instdata = {}
|
||||
if channeldata['type'] in [0,1,2,3]:
|
||||
cvpj_instid = 'FLInst' + str(instrument)
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
cvpj_inst_name = channeldata['name'] if 'name' in channeldata else ''
|
||||
color = channeldata['color'].to_bytes(4, "little")
|
||||
cvpj_inst_color = [color[0]/255,color[1]/255,color[2]/255]
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=cvpj_inst_name, color=cvpj_inst_color)
|
||||
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'enabled', channeldata['enabled'], 'bool')
|
||||
|
||||
if 'middlenote' in channeldata:
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, 'instdata', 'middlenote', channeldata['middlenote']-60)
|
||||
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'pitch', channeldata['pitch']/100, 'float')
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'usemasterpitch', channeldata['main_pitch'], 'bool')
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'pan', channeldata['pan'], 'float')
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'vol', channeldata['volume'], 'float')
|
||||
tracks_mi.inst_fxrackchan_add(cvpj_l, cvpj_instid, channeldata['fxchannel'])
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
if channeldata['type'] == 0:
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, getsamplefile(channeldata, input_file))
|
||||
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, None, 'remove_dc', channeldata['remove_dc'])
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, None, 'normalize', channeldata['normalize'])
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, None, 'reversepolarity', channeldata['reversepolarity'])
|
||||
|
||||
cvpj_loopdata = {}
|
||||
if 'sampleflags' in channeldata:
|
||||
fl_sampleflags = data_bytes.to_bin(channeldata['sampleflags'], 8)
|
||||
cvpj_loopdata['enabled'] = fl_sampleflags[4]
|
||||
interpolation = "none"
|
||||
if fl_sampleflags[7] == 1: interpolation = "sinc"
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, None, 'interpolation', interpolation)
|
||||
|
||||
if 'looptype' in channeldata:
|
||||
fl_looptype = channeldata['looptype']
|
||||
if fl_looptype == 0: cvpj_loopdata['mode'] = "normal"
|
||||
else: cvpj_loopdata['mode'] = "pingpong"
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', cvpj_loopdata)
|
||||
|
||||
if channeldata['type'] == 2:
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
filename_sample = getsamplefile(channeldata, input_file)
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'audiofile', filename_sample)
|
||||
|
||||
flpluginname = channeldata['plugin'] if 'plugin' in channeldata else None
|
||||
flplugindata = channeldata['plugindata'] if 'plugindata' in channeldata else None
|
||||
flpluginparams = channeldata['pluginparams'] if 'pluginparams' in channeldata else b''
|
||||
|
||||
plug_exists = None
|
||||
|
||||
if flplugindata != None:
|
||||
|
||||
window_detatched = flplugindata[16]&4
|
||||
window_active = flplugindata[16]&1
|
||||
window_data = struct.unpack('iiii', flplugindata[36:52])
|
||||
window_size = window_data[2:4] if window_active else None
|
||||
song.add_visual_window(cvpj_l, 'plugin', pluginid, window_data[0:2], window_size, bool(window_active), False)
|
||||
|
||||
if flpluginname != None:
|
||||
plug_exists = flp_dec_plugins.getparams(cvpj_l, pluginid, flpluginname, flpluginparams, samplefolder)
|
||||
|
||||
|
||||
#if plug_exists == True:
|
||||
# print(channeldata['plugin'])
|
||||
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, 'poly', 'max', channeldata['polymax'])
|
||||
|
||||
id_inst[str(instrument)] = 'FLInst' + str(instrument)
|
||||
|
||||
if channeldata['type'] == 4:
|
||||
cvpj_s_sample = {}
|
||||
if 'name' in channeldata: cvpj_s_sample['name'] = channeldata['name']
|
||||
else: cvpj_s_sample['name'] = ''
|
||||
cvpj_s_sample['pan'] = channeldata['pan']
|
||||
cvpj_s_sample['vol'] = channeldata['volume']
|
||||
color = channeldata['color'].to_bytes(4, "little")
|
||||
cvpj_s_sample['color'] = [color[0]/255,color[1]/255,color[2]/255]
|
||||
cvpj_s_sample['fxrack_channel'] = channeldata['fxchannel']
|
||||
filename_sample = getsamplefile(channeldata, input_file)
|
||||
cvpj_s_sample['file'] = filename_sample
|
||||
|
||||
ald = None
|
||||
sampleinfo[instrument] = audio.get_audiofile_info(filename_sample)
|
||||
if filename_sample in filename_len: ald = filename_len[filename_sample]
|
||||
if ald != None: stretchbpm = ald['dur_sec']*tempomulmin
|
||||
|
||||
cvpj_audiomod = cvpj_s_sample['audiomod'] = {}
|
||||
|
||||
t_stretchingmode = 0
|
||||
t_stretchingtime = 0
|
||||
t_stretchingmultiplier = 1
|
||||
t_stretchingpitch = 0
|
||||
cvpj_audiomod['stretch_method'] = None
|
||||
|
||||
if 'stretchingpitch' in channeldata: t_stretchingpitch += channeldata['stretchingpitch']/100
|
||||
if 'middlenote' in channeldata: t_stretchingpitch += (channeldata['middlenote']-60)*-1
|
||||
if 'pitch' in channeldata: t_stretchingpitch += channeldata['pitch']/100
|
||||
cvpj_audiomod['pitch'] = t_stretchingpitch
|
||||
|
||||
if 'stretchingtime' in channeldata: t_stretchingtime = channeldata['stretchingtime']/384
|
||||
if 'stretchingmode' in channeldata: t_stretchingmode = channeldata['stretchingmode']
|
||||
if 'stretchingmultiplier' in channeldata: t_stretchingmultiplier = pow(2, channeldata['stretchingmultiplier']/10000)
|
||||
|
||||
if t_stretchingmode == -1: cvpj_audiomod['stretch_algorithm'] = 'stretch'
|
||||
if t_stretchingmode == 0: cvpj_audiomod['stretch_algorithm'] = 'resample'
|
||||
if t_stretchingmode == 1: cvpj_audiomod['stretch_algorithm'] = 'elastique_v3'
|
||||
if t_stretchingmode == 2: cvpj_audiomod['stretch_algorithm'] = 'elastique_v3_mono'
|
||||
if t_stretchingmode == 3: cvpj_audiomod['stretch_algorithm'] = 'slice_stretch'
|
||||
if t_stretchingmode == 5: cvpj_audiomod['stretch_algorithm'] = 'auto'
|
||||
if t_stretchingmode == 4: cvpj_audiomod['stretch_algorithm'] = 'slice_map'
|
||||
if t_stretchingmode == 6: cvpj_audiomod['stretch_algorithm'] = 'elastique_v2'
|
||||
if t_stretchingmode == 7: cvpj_audiomod['stretch_algorithm'] = 'elastique_v2_transient'
|
||||
if t_stretchingmode == 8: cvpj_audiomod['stretch_algorithm'] = 'elastique_v2_mono'
|
||||
if t_stretchingmode == 9: cvpj_audiomod['stretch_algorithm'] = 'elastique_v2_speech'
|
||||
|
||||
#if t_stretchingtime != 0 or t_stretchingmultiplier != 1 or t_stretchingpitch != 0:
|
||||
|
||||
if ald != None:
|
||||
if t_stretchingtime != 0:
|
||||
cvpj_audiomod['stretch_method'] = 'rate_tempo'
|
||||
cvpj_audiomod['stretch_data'] = {}
|
||||
cvpj_audiomod['stretch_data']['rate'] = (ald['dur_sec']/t_stretchingtime)/t_stretchingmultiplier
|
||||
samplestretch[instrument] = ['rate_tempo', (ald['dur_sec']/t_stretchingtime)/t_stretchingmultiplier]
|
||||
|
||||
elif t_stretchingtime == 0:
|
||||
cvpj_audiomod['stretch_method'] = 'rate_speed'
|
||||
cvpj_audiomod['stretch_data'] = {}
|
||||
cvpj_audiomod['stretch_data']['rate'] = 1/t_stretchingmultiplier
|
||||
samplestretch[instrument] = ['rate_speed', 1/t_stretchingmultiplier]
|
||||
|
||||
else:
|
||||
samplestretch[instrument] = ['rate_speed', 1]
|
||||
|
||||
cvpj_l_samples['FLSample' + str(instrument)] = cvpj_s_sample
|
||||
|
||||
|
||||
for pattern in FL_Patterns:
|
||||
patterndata = FL_Patterns[pattern]
|
||||
notesJ = []
|
||||
if 'FLPat' + str(pattern) not in cvpj_l_notelistindex:
|
||||
cvpj_l_notelistindex['FLPat' + str(pattern)] = {}
|
||||
if 'notes' in patterndata:
|
||||
slidenotes = []
|
||||
for flnote in patterndata['notes']:
|
||||
cvpj_note = {}
|
||||
cvpj_note['position'] = (flnote['pos']/ppq)*4
|
||||
if str(flnote['rack']) in id_inst: cvpj_note['instrument'] = id_inst[str(flnote['rack'])]
|
||||
else: cvpj_note['instrument'] = ''
|
||||
cvpj_note['duration'] = (flnote['dur']/ppq)*4
|
||||
cvpj_note['key'] = flnote['key']-60
|
||||
cvpj_note['finepitch'] = (flnote['finep']-120)*10
|
||||
cvpj_note['release'] = flnote['rel']/128
|
||||
cvpj_note['pan'] = (flnote['pan']-64)/64
|
||||
cvpj_note['vol'] = flnote['velocity']/100
|
||||
cvpj_note['cutoff'] = flnote['mod_x']/255
|
||||
cvpj_note['reso'] = flnote['mod_y']/255
|
||||
cvpj_note['channel'] = data_bytes.splitbyte(flnote['midich'])[1]+1
|
||||
cvpj_note['notemod'] = {}
|
||||
is_slide = bool(flnote['flags'] & 0b000000000001000)
|
||||
|
||||
if is_slide == True:
|
||||
slidenotes.append(cvpj_note)
|
||||
else:
|
||||
cvpj_note['notemod']['slide'] = []
|
||||
notesJ.append(cvpj_note)
|
||||
for slidenote in slidenotes:
|
||||
sn_pos = slidenote['position']
|
||||
sn_dur = slidenote['duration']
|
||||
sn_inst = slidenote['instrument']
|
||||
for cvpj_note in notesJ:
|
||||
nn_pos = cvpj_note['position']
|
||||
nn_dur = cvpj_note['duration']
|
||||
nn_inst = cvpj_note['instrument']
|
||||
if nn_pos <= sn_pos < nn_pos+nn_dur and sn_inst == nn_inst:
|
||||
slidenote['position'] = sn_pos - nn_pos
|
||||
slidenote['key'] -= cvpj_note['key']
|
||||
cvpj_note['notemod']['slide'].append(slidenote)
|
||||
for cvpj_note in notesJ:
|
||||
note_mod.notemod_conv(cvpj_note)
|
||||
|
||||
cvpj_l_notelistindex['FLPat' + str(pattern)]['notelist'] = notesJ
|
||||
id_pat[str(pattern)] = 'FLPat' + str(pattern)
|
||||
if 'color' in patterndata:
|
||||
color = patterndata['color'].to_bytes(4, "little")
|
||||
if color != b'HQV\x00':
|
||||
cvpj_l_notelistindex['FLPat' + str(pattern)]['color'] = [color[0]/255,color[1]/255,color[2]/255]
|
||||
if 'name' in patterndata: cvpj_l_notelistindex['FLPat' + str(pattern)]['name'] = patterndata['name']
|
||||
|
||||
if len(FL_Arrangements) != 0:
|
||||
FL_Arrangement = FL_Arrangements['0']
|
||||
for item in FL_Arrangement['items']:
|
||||
|
||||
arrangementitemJ = {}
|
||||
arrangementitemJ['position'] = item['position']/ppq*4
|
||||
arrangementitemJ['duration'] = item['length']/ppq*4
|
||||
playlistline = (item['trackindex']*-1)+500
|
||||
arrangementitemJ['muted'] = bool(item['flags'] & 0b0001000000000000)
|
||||
|
||||
if str(playlistline) not in cvpj_l_playlist:
|
||||
cvpj_l_playlist[str(playlistline)] = {}
|
||||
cvpj_l_playlist[str(playlistline)]['placements_notes'] = []
|
||||
cvpj_l_playlist[str(playlistline)]['placements_audio'] = []
|
||||
|
||||
if item['itemindex'] > item['patternbase']:
|
||||
arrangementitemJ['fromindex'] = 'FLPat' + str(item['itemindex'] - item['patternbase'])
|
||||
cvpj_l_playlist[str(playlistline)]['placements_notes'].append(arrangementitemJ)
|
||||
if 'startoffset' in item or 'endoffset' in item:
|
||||
arrangementitemJ['cut'] = {}
|
||||
arrangementitemJ['cut']['type'] = 'cut'
|
||||
if 'startoffset' in item: arrangementitemJ['cut']['start'] = item['startoffset']/ppq*4
|
||||
if 'endoffset' in item: arrangementitemJ['cut']['end'] = item['endoffset']/ppq*4
|
||||
|
||||
|
||||
else:
|
||||
arrangementitemJ['fromindex'] = 'FLSample' + str(item['itemindex'])
|
||||
cvpj_l_playlist[str(playlistline)]['placements_audio'].append(arrangementitemJ)
|
||||
|
||||
if str(item['itemindex']) in samplestretch: pl_stretch = samplestretch[str(item['itemindex'])]
|
||||
else: pl_stretch = ['rate_speed', 1.0]
|
||||
|
||||
if 'startoffset' in item or 'endoffset' in item:
|
||||
arrangementitemJ['cut'] = {}
|
||||
arrangementitemJ['cut']['type'] = 'cut'
|
||||
|
||||
#print(pl_stretch)
|
||||
|
||||
if pl_stretch[0] == 'rate_speed':
|
||||
if 'startoffset' in item: arrangementitemJ['cut']['start'] = (item['startoffset']/pl_stretch[1])/tempomul
|
||||
if 'endoffset' in item: arrangementitemJ['cut']['end'] = (item['endoffset']/pl_stretch[1])/tempomul
|
||||
if pl_stretch[0] == 'rate_tempo':
|
||||
if 'startoffset' in item: arrangementitemJ['cut']['start'] = (item['startoffset']/pl_stretch[1])
|
||||
if 'endoffset' in item: arrangementitemJ['cut']['end'] = (item['endoffset']/pl_stretch[1])
|
||||
if 'startoffset' not in item: arrangementitemJ['cut']['start'] = 0
|
||||
|
||||
#for value in ['startoffset', 'endoffset']:
|
||||
# outprint = None
|
||||
# if value in item: outprint = round(item[value], 6)
|
||||
# print(str(outprint).ljust(13), end=' ')
|
||||
#print(pl_stretch)
|
||||
|
||||
FL_Tracks = FL_Arrangement['tracks']
|
||||
|
||||
if len(FL_Tracks) != 0:
|
||||
for track in FL_Tracks:
|
||||
#print(track, FL_Tracks[track])
|
||||
if str(track) not in cvpj_l_playlist:
|
||||
cvpj_l_playlist[str(track)] = {}
|
||||
if 'color' in FL_Tracks[track]:
|
||||
color = FL_Tracks[track]['color'].to_bytes(4, "little")
|
||||
cvpj_l_playlist[str(track)]['color'] = [color[0]/255,color[1]/255,color[2]/255]
|
||||
if 'name' in FL_Tracks[track]:
|
||||
cvpj_l_playlist[str(track)]['name'] = FL_Tracks[track]['name']
|
||||
if 'height' in FL_Tracks[track]:
|
||||
cvpj_l_playlist[str(track)]['size'] = FL_Tracks[track]['height']
|
||||
if 'enabled' in FL_Tracks[track]:
|
||||
cvpj_l_playlist[str(track)]['enabled'] = FL_Tracks[track]['enabled']
|
||||
|
||||
|
||||
#for hexnum in FL_InitFXVals:
|
||||
# print(hexnum, FL_InitFXVals[test][0])
|
||||
|
||||
|
||||
for fxchannel in FL_Mixer:
|
||||
fl_fx_chan = FL_Mixer[str(fxchannel)]
|
||||
|
||||
fx_name = fl_fx_chan["name"] if "name" in fl_fx_chan else None
|
||||
|
||||
fx_color = None
|
||||
if 'color' in fl_fx_chan:
|
||||
if fl_fx_chan['color'] != None:
|
||||
color = fl_fx_chan['color'].to_bytes(4, "little")
|
||||
fx_color = [color[0]/255,color[1]/255,color[2]/255]
|
||||
|
||||
#print(fxchannel)
|
||||
#for hexnum in fl_fxdata_initvals:
|
||||
# print(hexnum, int.from_bytes(fl_fxdata_initvals[hexnum], "little", signed=True) )
|
||||
|
||||
fx_volume = 1
|
||||
fx_pan = 0
|
||||
|
||||
if FL_InitFXVals_exists == True and int(fxchannel) in FL_InitFXVals:
|
||||
fl_fxdata_initvals = FL_InitFXVals[int(fxchannel)][0]
|
||||
fx_volume = struct.unpack('i', fl_fxdata_initvals[b'\x1f\xc0'])[0]/12800 if b'\x1f\xc0' in fl_fxdata_initvals else 1
|
||||
fx_pan = struct.unpack('i', fl_fxdata_initvals[b'\x1f\xc1'])[0]/6400 if b'\x1f\xc1' in fl_fxdata_initvals else 0
|
||||
|
||||
fxrack.add(cvpj_l, fxchannel, fx_volume, fx_pan, name=fx_name, color=fx_color)
|
||||
|
||||
if 'routing' in fl_fx_chan:
|
||||
for route in fl_fx_chan['routing']:
|
||||
fxrack.addsend(cvpj_l, fxchannel, route, 1, None)
|
||||
|
||||
if 'slots' in fl_fx_chan:
|
||||
for fl_fxslotnum in range(10):
|
||||
if fl_fxslotnum in fl_fx_chan['slots']:
|
||||
fl_fxslotdata = fl_fx_chan['slots'][fl_fxslotnum]
|
||||
|
||||
if fl_fxslotdata != None and 'plugin' in fl_fxslotdata and 'pluginparams' in fl_fxslotdata:
|
||||
fxslotid = plugins.get_id()
|
||||
|
||||
if FL_InitFXVals_exists == True:
|
||||
fl_fxslot_initvals = FL_InitFXVals[int(fxchannel)][fl_fxslotnum]
|
||||
fx_slot_on = struct.unpack('i', fl_fxslot_initvals[b'\x1f\x00'])[0] if b'\x1f\x00' in fl_fxslot_initvals else 1
|
||||
fx_slot_wet = struct.unpack('i', fl_fxslot_initvals[b'\x1f\x01'])[0]/12800 if b'\x1f\x01' in fl_fxslot_initvals else 0
|
||||
plugins.add_plug_fxdata(cvpj_l, fxslotid, fx_slot_on, fx_slot_wet)
|
||||
|
||||
flpluginname = fl_fxslotdata['plugin'] if 'plugin' in fl_fxslotdata else None
|
||||
|
||||
plug_exists = None
|
||||
if 'pluginparams' in fl_fxslotdata:
|
||||
plug_exists = flp_dec_plugins.getparams(cvpj_l, fxslotid, flpluginname, fl_fxslotdata['pluginparams'], samplefolder)
|
||||
|
||||
if plug_exists == True:
|
||||
v_name = fl_fxslotdata["name"] if "name" in fl_fxslotdata else None
|
||||
v_color = None
|
||||
if 'color' in fl_fxslotdata:
|
||||
color = fl_fxslotdata['color'].to_bytes(4, "little")
|
||||
v_color = [color[0]/255,color[1]/255,color[2]/255]
|
||||
plugins.add_plug_fxvisual(cvpj_l, fxslotid, v_name, v_color)
|
||||
fxslot.insert(cvpj_l, ['fxrack', fxchannel], 'audio', fxslotid)
|
||||
|
||||
for timemarker in FL_TimeMarkers:
|
||||
tm_pos = FL_TimeMarkers[timemarker]['pos']/ppq*4
|
||||
tm_type = FL_TimeMarkers[timemarker]['type']
|
||||
timemarkerJ = {}
|
||||
timemarkerJ['name'] = FL_TimeMarkers[timemarker]['name']
|
||||
timemarkerJ['position'] = FL_TimeMarkers[timemarker]['pos']/ppq*4
|
||||
if tm_type == 5: timemarkerJ['type'] = 'start'
|
||||
if tm_type == 4: timemarkerJ['type'] = 'loop'
|
||||
if tm_type == 1: timemarkerJ['type'] = 'markerloop'
|
||||
if tm_type == 2: timemarkerJ['type'] = 'markerskip'
|
||||
if tm_type == 3: timemarkerJ['type'] = 'pause'
|
||||
if tm_type == 8:
|
||||
timemarkerJ['type'] = 'timesig'
|
||||
timemarkerJ['numerator'] = FL_TimeMarkers[timemarker]['numerator']
|
||||
timemarkerJ['denominator'] = FL_TimeMarkers[timemarker]['denominator']
|
||||
if tm_type == 9: timemarkerJ['type'] = 'punchin'
|
||||
if tm_type == 10: timemarkerJ['type'] = 'punchout'
|
||||
cvpj_l_timemarkers.append(timemarkerJ)
|
||||
|
||||
if len(FL_Arrangements) == 0 and len(FL_Patterns) == 1 and len(FL_Channels) == 0:
|
||||
fst_chan_notelist = [[] for x in range(16)]
|
||||
for cvpj_notedata in cvpj_l_notelistindex['FLPat0']['notelist']:
|
||||
cvpj_notedata['instrument'] = 'FST' + str(cvpj_notedata['channel'])
|
||||
fst_chan_notelist[cvpj_notedata['channel']-1].append(cvpj_notedata)
|
||||
|
||||
for channum in range(16):
|
||||
cvpj_inst = {}
|
||||
cvpj_inst['name'] = 'Channel '+str(channum+1)
|
||||
cvpj_l_instrument_data['FST' + str(channum+1)] = cvpj_inst
|
||||
cvpj_l_instrument_order.append('FST' + str(channum+1))
|
||||
|
||||
arrangementitemJ = {}
|
||||
arrangementitemJ['position'] = 0
|
||||
arrangementitemJ['duration'] = notelist_data.getduration(cvpj_l_notelistindex['FLPat0']['notelist'])
|
||||
arrangementitemJ['fromindex'] = 'FLPat0'
|
||||
|
||||
cvpj_l_playlist["1"] = {}
|
||||
cvpj_l_playlist["1"]['placements_notes'] = []
|
||||
cvpj_l_playlist["1"]['placements_notes'].append(arrangementitemJ)
|
||||
|
||||
cvpj_l['do_addloop'] = True
|
||||
|
||||
cvpj_l['notelistindex'] = cvpj_l_notelistindex
|
||||
cvpj_l['playlist'] = cvpj_l_playlist
|
||||
cvpj_l['timemarkers'] = cvpj_l_timemarkers
|
||||
cvpj_l['sampleindex'] = cvpj_l_samples
|
||||
|
||||
if 'Title' in FL_Main: song.add_info(cvpj_l, 'title', FL_Main['Title'])
|
||||
if 'Author' in FL_Main: song.add_info(cvpj_l, 'author', FL_Main['Author'])
|
||||
if 'Genre' in FL_Main: song.add_info(cvpj_l, 'genre', FL_Main['Genre'])
|
||||
if 'URL' in FL_Main: song.add_info(cvpj_l, 'url', FL_Main['URL'])
|
||||
if 'Comment' in FL_Main: song.add_info_msg(cvpj_l, 'text', FL_Main['Comment'])
|
||||
|
||||
return json.dumps(cvpj_l, indent=2)
|
|
@ -4,6 +4,7 @@
|
|||
from functions import data_bytes
|
||||
from functions import auto
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import plugins
|
||||
from functions import note_data
|
||||
from functions import data_values
|
||||
|
@ -166,24 +167,25 @@ def calcval(value):
|
|||
return (value*(jummbox_beatsPerBar/jummbox_ticksPerBeat))/2
|
||||
|
||||
def addfx(fxgroupname, cvpj_instid, fxname):
|
||||
pluginid = cvpj_instid+'_'+fxname
|
||||
plugins.add_plug(cvpj_l, pluginid, fxgroupname, fxname)
|
||||
fxslot.insert(cvpj_l, ['instrument', cvpj_instid], 'audio', pluginid)
|
||||
return pluginid
|
||||
fx_pluginid = cvpj_instid+'_'+fxname
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', fxgroupname, fxname)
|
||||
fxslot.insert(cvpj_l, ['instrument', cvpj_instid], 'audio', fx_pluginid)
|
||||
return fx_pluginid, fx_plugindata
|
||||
|
||||
def add_eq_data(cvpj_instid, eqfiltbands):
|
||||
pluginid = addfx('universal', cvpj_instid, 'eq-bands')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'EQ', None)
|
||||
fx_pluginid, fx_plugindata = addfx('universal', cvpj_instid, 'eq-bands')
|
||||
fx_plugindata.fxvisual_add('EQ', None)
|
||||
for eqfiltdata in eqfiltbands:
|
||||
eqgain_pass = eqfiltdata['linearGain']
|
||||
eqgain = (eqfiltdata['linearGain']-2)*6
|
||||
eqtype = eqfiltdata['type']
|
||||
if eqtype == 'low-pass':
|
||||
plugins.add_eqband(cvpj_l, pluginid, 1, eqfiltdata['cutoffHz'], 0, 'low_pass', eqgain_pass, None)
|
||||
fx_plugindata.eqband_add(1, eqfiltdata['cutoffHz'], 0, 'low_pass', eqgain_pass, None)
|
||||
if eqtype == 'peak':
|
||||
plugins.add_eqband(cvpj_l, pluginid, 1, eqfiltdata['cutoffHz'], eqgain, 'peak', 1, None)
|
||||
fx_plugindata.eqband_add(1, eqfiltdata['cutoffHz'], eqgain, 'peak', 1, None)
|
||||
if eqtype == 'high-pass':
|
||||
plugins.add_eqband(cvpj_l, pluginid, 1, eqfiltdata['cutoffHz'], 0, 'high_pass', eqgain_pass, None)
|
||||
fx_plugindata.eqband_add(1, eqfiltdata['cutoffHz'], 0, 'high_pass', eqgain_pass, None)
|
||||
return fx_pluginid, fx_plugindata
|
||||
|
||||
def get_harmonics(i_harmonics):
|
||||
harmonics = [i/100 for i in i_harmonics]
|
||||
|
@ -193,39 +195,25 @@ def get_harmonics(i_harmonics):
|
|||
return harmonics
|
||||
|
||||
def parse_instrument(channum, instnum, bb_instrument, bb_type, bb_color, bb_inst_effects):
|
||||
global idvals_inst_beepbox
|
||||
bb_volume = bb_instrument['volume']
|
||||
|
||||
if 'preset' in bb_instrument: bb_preset = str(bb_instrument['preset'])
|
||||
else: bb_preset = None
|
||||
bb_preset = str(bb_instrument['preset']) if 'preset' in bb_instrument else None
|
||||
|
||||
cvpj_instid = 'bb_ch'+str(channum)+'_inst'+str(instnum)
|
||||
|
||||
instslot = {}
|
||||
cvpj_volume = (bb_volume/50)+0.5
|
||||
|
||||
a_decay = 3
|
||||
a_sustain = 1
|
||||
|
||||
gm_inst = None
|
||||
if bb_preset in idvals_inst_beepbox:
|
||||
gm_inst = idvals.get_idval(idvals_inst_beepbox, bb_preset, 'gm_inst')
|
||||
m_bank, m_inst, m_drum = dataset.midito_get('inst', bb_preset)
|
||||
|
||||
if gm_inst != None:
|
||||
plugins.add_plug_gm_midi(cvpj_l, cvpj_instid, 0, gm_inst)
|
||||
cvpj_instname = idvals.get_idval(idvals_inst_beepbox, bb_preset, 'name')
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=cvpj_instname, color=bb_color)
|
||||
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, cvpj_instid)
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, 'midi', 'output', {'program': gm_inst})
|
||||
if m_inst != None:
|
||||
tracks_mi.import_dset(cvpj_l, cvpj_instid, bb_preset, dataset, dataset_midi, None, bb_color)
|
||||
else:
|
||||
bb_inst_type = bb_instrument['type']
|
||||
plugins.add_plug(cvpj_l, cvpj_instid, 'native-jummbox', bb_inst_type)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-jummbox', bb_inst_type)
|
||||
|
||||
if 'unison' in bb_instrument:
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, 'unison', bb_instrument['unison'])
|
||||
if 'unison' in bb_instrument: inst_plugindata.dataval_add('unison', bb_instrument['unison'])
|
||||
|
||||
cvpj_instname = inst_names[bb_inst_type]
|
||||
|
||||
|
@ -234,64 +222,62 @@ def parse_instrument(channum, instnum, bb_instrument, bb_type, bb_color, bb_inst
|
|||
cvpj_instname = bb_inst_wave+' ('+cvpj_instname+')'
|
||||
if bb_inst_wave in rawChipWaves:
|
||||
wavesample = rawChipWaves[bb_inst_wave]['samples']
|
||||
plugins.add_wave(cvpj_l, cvpj_instid, 'chipwave', wavesample, min(wavesample), max(wavesample))
|
||||
inst_plugindata.wave_add('chipwave', wavesample, min(wavesample), max(wavesample))
|
||||
|
||||
if bb_inst_type == 'PWM':
|
||||
pulseWidth = bb_instrument['pulseWidth']
|
||||
cvpj_instname = str(pulseWidth)+'% pulse ('+cvpj_instname+')'
|
||||
plugins.add_plug_param(cvpj_l, cvpj_instid, "pulse_width", pulseWidth/100, 'float', "Pulse Width")
|
||||
inst_plugindata.param_add("pulse_width", pulseWidth/100, 'float', "Pulse Width")
|
||||
|
||||
if bb_inst_type == 'harmonics':
|
||||
harmonics = get_harmonics(bb_instrument['harmonics'])
|
||||
plugins.add_harmonics(cvpj_l, cvpj_instid, 'harmonics', harmonics)
|
||||
inst_plugindata.harmonics_add('harmonics', harmonics)
|
||||
|
||||
if bb_inst_type == 'Picked String':
|
||||
harmonics = get_harmonics(bb_instrument['harmonics'])
|
||||
plugins.add_harmonics(cvpj_l, cvpj_instid, 'harmonics', harmonics)
|
||||
inst_plugindata.harmonics_add('harmonics', harmonics)
|
||||
a_sustain = bb_instrument['stringSustain']/100
|
||||
|
||||
if bb_inst_type == 'spectrum':
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, 'spectrum', bb_instrument['spectrum'])
|
||||
inst_plugindata.dataval_add('spectrum', bb_instrument['spectrum'])
|
||||
|
||||
if bb_inst_type == 'FM':
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, 'algorithm', bb_instrument['algorithm'])
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, 'feedback_type', bb_instrument['feedbackType'])
|
||||
plugins.add_plug_param(cvpj_l, cvpj_instid, "feedback_amplitude", bb_instrument['feedbackAmplitude'], 'int', "Feedback Amplitude")
|
||||
inst_plugindata.dataval_add('algorithm', bb_instrument['algorithm'])
|
||||
inst_plugindata.dataval_add('feedback_type', bb_instrument['feedbackType'])
|
||||
inst_plugindata.param_add("feedback_amplitude", bb_instrument['feedbackAmplitude'], 'int', "Feedback Amplitude")
|
||||
|
||||
for opnum in range(4):
|
||||
opdata = bb_instrument['operators'][opnum]
|
||||
opnumtext = 'op'+str(opnum+1)+'_'
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, opnumtext+'frequency', opdata['frequency'])
|
||||
inst_plugindata.dataval_add(opnumtext+'frequency', opdata['frequency'])
|
||||
op_waveform = data_values.get_value(opdata, 'waveform', 'sine')
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, opnumtext+'waveform', op_waveform)
|
||||
inst_plugindata.dataval_add(opnumtext+'waveform', op_waveform)
|
||||
op_pulseWidth = data_values.get_value(opdata, 'waveform', 'sine')
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, opnumtext+'pulseWidth', op_pulseWidth)
|
||||
plugins.add_plug_param(cvpj_l, cvpj_instid, opnumtext+"amplitude", opdata['amplitude'], 'int', "")
|
||||
inst_plugindata.dataval_add(opnumtext+'pulseWidth', op_pulseWidth)
|
||||
inst_plugindata.param_add(opnumtext+"amplitude", opdata['amplitude'], 'int', "")
|
||||
|
||||
if bb_inst_type == 'custom chip':
|
||||
customChipWave = bb_instrument['customChipWave']
|
||||
customChipWave = [customChipWave[str(i)] for i in range(64)]
|
||||
plugins.add_wave(cvpj_l, cvpj_instid, 'chipwave', customChipWave, -24, 24)
|
||||
inst_plugindata.wave_add('chipwave', customChipWave, -24, 24)
|
||||
|
||||
if bb_inst_type == 'FM6op': #goldbox
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, 'algorithm', bb_instrument['algorithm'])
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, 'feedback_type', bb_instrument['feedbackType'])
|
||||
plugins.add_plug_param(cvpj_l, cvpj_instid, "feedback_amplitude", bb_instrument['feedbackAmplitude'], 'int', "Feedback Amplitude")
|
||||
inst_plugindata.dataval_add('algorithm', bb_instrument['algorithm'])
|
||||
inst_plugindata.dataval_add('feedback_type', bb_instrument['feedbackType'])
|
||||
inst_plugindata.param_add("feedback_amplitude", bb_instrument['feedbackAmplitude'], 'int', "Feedback Amplitude")
|
||||
|
||||
for opnum in range(4):
|
||||
opdata = bb_instrument['operators'][opnum]
|
||||
opnumtext = 'op'+str(opnum+1)+'_'
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, opnumtext+'frequency', opdata['frequency'])
|
||||
inst_plugindata.dataval_add(opnumtext+'frequency', opdata['frequency'])
|
||||
op_waveform = data_values.get_value(opdata, 'waveform', 'sine')
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, opnumtext+'waveform', op_waveform)
|
||||
inst_plugindata.dataval_add(opnumtext+'waveform', op_waveform)
|
||||
op_pulseWidth = data_values.get_value(opdata, 'waveform', 'sine')
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, opnumtext+'pulseWidth', op_pulseWidth)
|
||||
plugins.add_plug_param(cvpj_l, cvpj_instid, opnumtext+"amplitude", opdata['amplitude'], 'int', "")
|
||||
inst_plugindata.dataval_add(opnumtext+'pulseWidth', op_pulseWidth)
|
||||
inst_plugindata.param_add(opnumtext+"amplitude", opdata['amplitude'], 'int', "")
|
||||
|
||||
if bb_instrument['algorithm'] == 'Custom':
|
||||
plugins.add_plug_data(cvpj_l, cvpj_instid, 'customAlgorithm', bb_instrument['customAlgorithm'])
|
||||
|
||||
|
||||
inst_plugindata.dataval_add('customAlgorithm', bb_instrument['customAlgorithm'])
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=cvpj_instname, color=bb_color)
|
||||
|
@ -306,51 +292,57 @@ def parse_instrument(channum, instnum, bb_instrument, bb_type, bb_color, bb_inst
|
|||
filter_peak = bb_instrument['eqSimplePeak']
|
||||
if filter_hz != None or filter_peak != 0:
|
||||
if filter_hz == None: filter_hz = 8000
|
||||
pluginid = addfx('universal', cvpj_instid, 'eq-bands')
|
||||
plugins.add_eqband(cvpj_l, pluginid, 1, filter_hz, 0, 'low_pass', filter_peak*2, None)
|
||||
fx_pluginid, fx_plugindata = addfx('universal', cvpj_instid, 'eq-bands')
|
||||
fx_plugindata.eqband_add(1, filter_hz, 0, 'low_pass', filter_peak*2, None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, fx_pluginid)
|
||||
|
||||
elif 'eqFilter' in bb_instrument:
|
||||
bb_eqFilter = bb_instrument['eqFilter']
|
||||
if bb_eqFilter != []: add_eq_data(cvpj_instid, bb_eqFilter)
|
||||
if bb_eqFilter != []:
|
||||
fx_pluginid, fx_plugindata = add_eq_data(cvpj_instid, bb_eqFilter)
|
||||
fx_plugindata.to_cvpj(cvpj_l, fx_pluginid)
|
||||
|
||||
if 'echo' in bb_inst_effects:
|
||||
pluginid = addfx('universal', cvpj_instid, 'delay-c')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Echo', None)
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, 1, 0.5)
|
||||
fx_pluginid, fx_plugindata = addfx('universal', cvpj_instid, 'delay-c')
|
||||
fx_plugindata.fxvisual_add('Echo', None)
|
||||
fx_plugindata.fxdata_add(1, 0.5)
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'time_type', 'steps')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'time', bb_instrument['echoDelayBeats']*8)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'feedback', bb_instrument['echoSustain']/240)
|
||||
fx_plugindata.dataval_add('time_type', 'steps')
|
||||
fx_plugindata.dataval_add('time', bb_instrument['echoDelayBeats']*8)
|
||||
fx_plugindata.dataval_add('feedback', bb_instrument['echoSustain']/240)
|
||||
fx_plugindata.to_cvpj(cvpj_l, fx_pluginid)
|
||||
|
||||
if 'distortion' in bb_inst_effects:
|
||||
pluginid = addfx('simple', cvpj_instid, 'distortion')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Distortion', None)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'amount', bb_instrument['distortion']/100, 'float', 'amount')
|
||||
fx_pluginid, fx_plugindata = addfx('simple', cvpj_instid, 'distortion')
|
||||
fx_plugindata.fxvisual_add('Distortion', None)
|
||||
fx_plugindata.param_add_minmax('amount', bb_instrument['distortion']/100, 'float', 'Amount', [0,1])
|
||||
fx_plugindata.to_cvpj(cvpj_l, fx_pluginid)
|
||||
|
||||
if 'bitcrusher' in bb_inst_effects:
|
||||
pluginid = addfx('universal', cvpj_instid, 'bitcrush')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Bitcrusher', None)
|
||||
fx_pluginid, fx_plugindata = addfx('universal', cvpj_instid, 'bitcrush')
|
||||
fx_plugindata.fxvisual_add('Bitcrusher', None)
|
||||
|
||||
t_bits_val = round(xtramath.between_from_one(7, 0, bb_instrument['bitcrusherQuantization']/100))
|
||||
|
||||
bits_out = 1
|
||||
for num in range(t_bits_val):
|
||||
bits_out *= 2
|
||||
bits_out = 2**t_bits_val
|
||||
freq_out = (bb_instrument['bitcrusherOctave']+1)*523.25
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'bits', bits_out, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'freq', freq_out, 'float', "")
|
||||
fx_plugindata.param_add('bits', bits_out, 'float', "")
|
||||
fx_plugindata.param_add('freq', freq_out, 'float', "")
|
||||
fx_plugindata.to_cvpj(cvpj_l, fx_pluginid)
|
||||
|
||||
if 'chorus' in bb_inst_effects:
|
||||
pluginid = addfx('simple', cvpj_instid, 'chorus')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Chorus', None)
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, 1, bb_instrument['chorus']/100)
|
||||
fx_pluginid, fx_plugindata = addfx('simple', cvpj_instid, 'chorus')
|
||||
fx_plugindata.fxvisual_add('Chorus', None)
|
||||
fx_plugindata.param_add_minmax('amount', bb_instrument['chorus']/100, 'float', "Amount", [0,1])
|
||||
fx_plugindata.to_cvpj(cvpj_l, fx_pluginid)
|
||||
|
||||
if 'reverb' in bb_inst_effects:
|
||||
pluginid = addfx('simple', cvpj_instid, 'reverb')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Reverb', None)
|
||||
fx_pluginid, fx_plugindata = addfx('simple', cvpj_instid, 'reverb')
|
||||
fx_plugindata.fxvisual_add('Reverb', None)
|
||||
reverblvl = data_values.get_value(bb_instrument, 'reverb', 40)
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, 1, reverblvl/100)
|
||||
fx_plugindata.fxdata_add(1, reverblvl/100)
|
||||
fx_plugindata.to_cvpj(cvpj_l, fx_pluginid)
|
||||
|
||||
if 'vibrato' in bb_inst_effects:
|
||||
if 'vibratoSpeed' in bb_instrument and 'vibratoDelay' in bb_instrument:
|
||||
|
@ -358,11 +350,13 @@ def parse_instrument(channum, instnum, bb_instrument, bb_type, bb_color, bb_inst
|
|||
vibrato_speed = 0.7*(1/bb_instrument['vibratoSpeed'])
|
||||
vibrato_amount = bb_instrument['vibratoDepth']
|
||||
vibrato_delay = (bb_instrument['vibratoDelay']/49)*2
|
||||
plugins.add_lfo(cvpj_l, cvpj_instid, 'pitch', 'sine', 'seconds', vibrato_speed, vibrato_delay, 0, vibrato_amount)
|
||||
inst_plugindata.lfo_add('pitch', 'sine', 'seconds', vibrato_speed, vibrato_delay, 0, vibrato_amount)
|
||||
|
||||
a_attack = data_values.get_value(bb_instrument, 'fadeInSeconds', 0)
|
||||
a_release = abs(data_values.get_value(bb_instrument, 'fadeOutTicks', 0)/(jummbox_ticksPerBeat*32))
|
||||
plugins.add_asdr_env(cvpj_l, cvpj_instid, 'vol', 0, a_attack, 0, a_decay, a_sustain, a_release, 1)
|
||||
inst_plugindata.asdr_env_add('vol', 0, a_attack, 0, a_decay, a_sustain, a_release, 1)
|
||||
|
||||
inst_plugindata.to_cvpj(cvpj_l, cvpj_instid)
|
||||
|
||||
|
||||
def parse_notes(channum, bb_notes, bb_instruments):
|
||||
|
@ -482,61 +476,86 @@ def parse_channel(channeldata, channum, durpos):
|
|||
placement_pos += bb_partdur
|
||||
|
||||
if bb_type == 'mod':
|
||||
modChannels = bb_instruments[0]['modChannels']
|
||||
modInstruments = bb_instruments[0]['modInstruments']
|
||||
modSettings = bb_instruments[0]['modSettings']
|
||||
modChannels = bb_instruments[0]['modChannels'] if 'modChannels' in bb_instruments[0] else None
|
||||
modInstruments = bb_instruments[0]['modInstruments'] if 'modInstruments' in bb_instruments[0] else None
|
||||
modSettings = bb_instruments[0]['modSettings'] if 'modSettings' in bb_instruments[0] else None
|
||||
|
||||
bb_def = []
|
||||
for num in range(6):
|
||||
bb_def.append([modChannels[num],modInstruments[num],modSettings[num]])
|
||||
if modChannels:
|
||||
bb_def = []
|
||||
for num in range(6):
|
||||
bb_def.append([modChannels[num],modInstruments[num],modSettings[num]])
|
||||
|
||||
placement_pos = 0
|
||||
for partnum in range(len(bb_sequence)):
|
||||
bb_part = bb_sequence[partnum]
|
||||
bb_partdur = durpos[partnum]
|
||||
if bb_part != 0:
|
||||
bb_modnotes = bb_patterns[bb_part-1]['notes']
|
||||
if bb_modnotes != []:
|
||||
for note in bb_modnotes:
|
||||
bb_mod_points = note['points']
|
||||
bb_mod_pos = placement_pos+bb_mod_points[0]['tick']
|
||||
bb_mod_dur = bb_mod_points[-1]['tick'] - bb_mod_points[0]['tick']
|
||||
bb_mod_target = bb_def[(note['pitches'][0]*-1)+5]
|
||||
placement_pos = 0
|
||||
for partnum in range(len(bb_sequence)):
|
||||
bb_part = bb_sequence[partnum]
|
||||
bb_partdur = durpos[partnum]
|
||||
if bb_part != 0:
|
||||
bb_modnotes = bb_patterns[bb_part-1]['notes']
|
||||
if bb_modnotes != []:
|
||||
for note in bb_modnotes:
|
||||
bb_mod_points = note['points']
|
||||
bb_mod_pos = placement_pos+bb_mod_points[0]['tick']
|
||||
bb_mod_dur = bb_mod_points[-1]['tick'] - bb_mod_points[0]['tick']
|
||||
bb_mod_target = bb_def[(note['pitches'][0]*-1)+5]
|
||||
|
||||
cvpj_autodata_points = []
|
||||
for bb_mod_point in bb_mod_points:
|
||||
if bb_partdur > bb_mod_point['tick']:
|
||||
cvpj_pointdata = {}
|
||||
cvpj_pointdata["position"] = calcval(bb_mod_point['tick'])-calcval(bb_mod_pos)+calcval(placement_pos)
|
||||
cvpj_pointdata["value"] = bb_mod_point['volume']
|
||||
cvpj_autodata_points.append(cvpj_pointdata)
|
||||
cvpj_autodata_points = []
|
||||
for bb_mod_point in bb_mod_points:
|
||||
if bb_partdur > bb_mod_point['tick']:
|
||||
cvpj_pointdata = {}
|
||||
cvpj_pointdata["position"] = calcval(bb_mod_point['tick'])-calcval(bb_mod_pos)+calcval(placement_pos)
|
||||
cvpj_pointdata["value"] = bb_mod_point['volume']
|
||||
cvpj_autodata_points.append(cvpj_pointdata)
|
||||
|
||||
cvpj_autodata = auto.makepl(calcval(bb_mod_pos), calcval(bb_mod_dur), cvpj_autodata_points)
|
||||
cvpj_autodata = auto.makepl(calcval(bb_mod_pos), calcval(bb_mod_dur), cvpj_autodata_points)
|
||||
|
||||
if bb_mod_target[0] == -1:
|
||||
if bb_mod_target[2] == 1:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 0, 0.01)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['master', 'vol'], cvpj_autopl[0])
|
||||
elif bb_mod_target[2] == 2:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 30, 1)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['main', 'bpm'], cvpj_autopl[0])
|
||||
elif bb_mod_target[2] == 17:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], -250, 0.01)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['main', 'pitch'], cvpj_autopl[0])
|
||||
if bb_mod_target[0] == -1:
|
||||
if bb_mod_target[2] == 1:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 0, 0.01)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['master', 'vol'], cvpj_autopl[0])
|
||||
elif bb_mod_target[2] == 2:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 30, 1)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['main', 'bpm'], cvpj_autopl[0])
|
||||
elif bb_mod_target[2] == 17:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], -250, 0.01)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['main', 'pitch'], cvpj_autopl[0])
|
||||
|
||||
else:
|
||||
auto_instnum = 1
|
||||
auto_cvpj_instid = 'bb_ch'+str(bb_mod_target[0]+1)+'_inst'+str(bb_mod_target[1]+1)
|
||||
else:
|
||||
auto_instnum = 1
|
||||
auto_cvpj_instid = 'bb_ch'+str(bb_mod_target[0]+1)+'_inst'+str(bb_mod_target[1]+1)
|
||||
|
||||
if bb_mod_target[2] == 6:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], -50, 0.02)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['track', auto_cvpj_instid, 'pan'], cvpj_autopl[0])
|
||||
elif bb_mod_target[2] == 15:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], -200, 1)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['track', auto_cvpj_instid, 'pitch'], cvpj_autodata)
|
||||
elif bb_mod_target[2] == 36:
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 0, 0.04)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['track', auto_cvpj_instid, 'vol'], cvpj_autopl[0])
|
||||
#print(bb_mod_target, cvpj_autodata)
|
||||
|
||||
if bb_mod_target[2] == 6: # Pan
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], -50, 0.02)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['track', auto_cvpj_instid, 'pan'], cvpj_autopl[0])
|
||||
|
||||
elif bb_mod_target[2] == 7: # Reverb
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 0, 1/32)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['slot', auto_cvpj_instid+'_reverb', 'wet'], cvpj_autopl[0])
|
||||
|
||||
elif bb_mod_target[2] == 8: # Distortion
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 0, 1/7)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin', auto_cvpj_instid+'_distortion', 'amount'], cvpj_autopl[0])
|
||||
|
||||
elif bb_mod_target[2] == 15: # Pitch
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], -200, 1)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['track', auto_cvpj_instid, 'pitch'], cvpj_autodata)
|
||||
|
||||
elif bb_mod_target[2] == 25: # Bitcrush Bits
|
||||
for autopart in cvpj_autodata['points']: autopart['value'] = 2**(7-autopart['value'])
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin', auto_cvpj_instid+'_bitcrush', 'bits'], cvpj_autopl[0])
|
||||
|
||||
elif bb_mod_target[2] == 26: # Bitcrush Freq
|
||||
for autopart in cvpj_autodata['points']: autopart['value'] = (autopart['value']+1)*523.25
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin', auto_cvpj_instid+'_bitcrush', 'freq'], cvpj_autopl[0])
|
||||
|
||||
elif bb_mod_target[2] == 29: # Chorus
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 0, 1/8)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin', auto_cvpj_instid+'_chorus', 'amount'], cvpj_autopl[0])
|
||||
|
||||
elif bb_mod_target[2] == 36: # Volume
|
||||
cvpj_autopl = auto.multiply([cvpj_autodata], 0, 0.04)
|
||||
auto_data.add_pl(cvpj_l, 'float', ['track', auto_cvpj_instid, 'vol'], cvpj_autopl[0])
|
||||
|
||||
placement_pos += bb_partdur
|
||||
|
||||
|
@ -556,28 +575,29 @@ def get_durpos(jummbox_channels):
|
|||
if sequencelen == None: sequencelen = [jummbox_beatsPerBar*jummbox_ticksPerBeat for _ in range(len(bb_sequence))]
|
||||
|
||||
if bb_type == 'mod':
|
||||
modChannels = bb_instruments[0]['modChannels']
|
||||
modInstruments = bb_instruments[0]['modInstruments']
|
||||
modSettings = bb_instruments[0]['modSettings']
|
||||
modChannels = bb_instruments[0]['modChannels'] if 'modChannels' in bb_instruments[0] else None
|
||||
modInstruments = bb_instruments[0]['modInstruments'] if 'modInstruments' in bb_instruments[0] else None
|
||||
modSettings = bb_instruments[0]['modSettings'] if 'modSettings' in bb_instruments[0] else None
|
||||
|
||||
nextbarfound = None
|
||||
for num in range(6):
|
||||
autodef = [modChannels[num],modInstruments[num],modSettings[num]]
|
||||
if autodef == [-1, 0, 4]:
|
||||
nextbarfound = num
|
||||
break
|
||||
if modChannels:
|
||||
nextbarfound = None
|
||||
for num in range(6):
|
||||
autodef = [modChannels[num],modInstruments[num],modSettings[num]]
|
||||
if autodef == [-1, 0, 4]:
|
||||
nextbarfound = num
|
||||
break
|
||||
|
||||
if nextbarfound != None:
|
||||
patnum = 1
|
||||
for bb_pattern in bb_patterns:
|
||||
for autonotedata in bb_pattern['notes']:
|
||||
if autonotedata['pitches'][0] == 5-num:
|
||||
autodur[patnum] = autonotedata['points'][0]['tick']
|
||||
patnum += 1
|
||||
if nextbarfound != None:
|
||||
patnum = 1
|
||||
for bb_pattern in bb_patterns:
|
||||
for autonotedata in bb_pattern['notes']:
|
||||
if autonotedata['pitches'][0] == 5-num:
|
||||
autodur[patnum] = autonotedata['points'][0]['tick']
|
||||
patnum += 1
|
||||
|
||||
for seqnum in range(len(bb_sequence)):
|
||||
if bb_sequence[seqnum] in autodur:
|
||||
if sequencelen[seqnum] > autodur[bb_sequence[seqnum]]: sequencelen[seqnum] = autodur[bb_sequence[seqnum]]
|
||||
for seqnum in range(len(bb_sequence)):
|
||||
if bb_sequence[seqnum] in autodur:
|
||||
if sequencelen[seqnum] > autodur[bb_sequence[seqnum]]: sequencelen[seqnum] = autodur[bb_sequence[seqnum]]
|
||||
|
||||
return sequencelen
|
||||
|
||||
|
@ -596,7 +616,8 @@ class input_jummbox(plugin_input.base):
|
|||
def parse(self, input_file, extra_param):
|
||||
global cvpj_l
|
||||
|
||||
global idvals_inst_beepbox
|
||||
global dataset
|
||||
global dataset_midi
|
||||
|
||||
global jummbox_beatsPerBar
|
||||
global jummbox_ticksPerBeat
|
||||
|
@ -607,7 +628,8 @@ class input_jummbox(plugin_input.base):
|
|||
|
||||
cvpj_l = {}
|
||||
|
||||
idvals_inst_beepbox = idvals.parse_idvalscsv('data_idvals/beepbox_inst.csv')
|
||||
dataset = data_dataset.dataset('./data_dset/beepbox.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
bbcvpj_placementsize = []
|
||||
bbcvpj_placementnames = {}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
from functions import auto
|
||||
from functions import data_bytes
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import note_data
|
||||
from functions import placement_data
|
||||
from functions import song
|
||||
|
@ -66,8 +66,9 @@ class input_notessimo_v2(plugin_input.base):
|
|||
tempo_table = struct.unpack('>'+'H'*100, nv2_data.read(200))
|
||||
|
||||
cvpj_l = {}
|
||||
idvals_inst_notetess = idvals.parse_idvalscsv('data_idvals/notessimo_v2_inst.csv')
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/notessimo_v2.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
fxrack.add(cvpj_l, 1, 1, 0, name='Drums')
|
||||
|
||||
notess_sheets = {}
|
||||
|
@ -86,32 +87,19 @@ class input_notessimo_v2(plugin_input.base):
|
|||
|
||||
fxnum = 2
|
||||
for used_instrument in used_instruments:
|
||||
notetess_instname = idvals.get_idval(idvals_inst_notetess, str(used_instrument), 'name')
|
||||
notetess_instcolor = idvals.get_idval(idvals_inst_notetess, str(used_instrument), 'color')
|
||||
notetess_gminst = idvals.get_idval(idvals_inst_notetess, str(used_instrument), 'gm_inst')
|
||||
notetess_isdrum = idvals.get_idval(idvals_inst_notetess, str(used_instrument), 'isdrum')
|
||||
|
||||
print("[input-notessimo_v2] Instrument: " + str(notetess_instname))
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
cvpj_instid = str(used_instrument)
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=notetess_instname, color=notetess_instcolor)
|
||||
outdsd = tracks_mi.import_dset(cvpj_l, cvpj_instid, dataset, dataset_midi, None, None)
|
||||
print("[input-notessimo_v2] Instrument: " + str(outdsd[4]))
|
||||
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, cvpj_instid)
|
||||
|
||||
if notetess_gminst != None:
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, 0, notetess_gminst)
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, 'midi', 'output', {'program': notetess_gminst})
|
||||
|
||||
if notetess_isdrum == True:
|
||||
if outdsd[3]:
|
||||
tracks_mi.inst_fxrackchan_add(cvpj_l, cvpj_instid, 1)
|
||||
else:
|
||||
tracks_mi.inst_fxrackchan_add(cvpj_l, cvpj_instid, fxnum)
|
||||
fxrack.add(cvpj_l, fxnum, 1, 0, name=notetess_instname, color=notetess_instcolor)
|
||||
fxrack.add(cvpj_l, fxnum, 1, 0, name=outdsd[4], color=outdsd[5])
|
||||
fxnum += 1
|
||||
|
||||
for idnum in range(9):
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
from functions import data_bytes
|
||||
from functions import note_mod
|
||||
from functions import colors
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import notelist_data
|
||||
from functions import placement_data
|
||||
from functions import note_data
|
||||
|
@ -21,8 +21,6 @@ import zipfile
|
|||
import math
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
idvals_inst_notetess = idvals.parse_idvalscsv('data_idvals/notessimo_v3_inst.csv')
|
||||
|
||||
global lists_data
|
||||
global used_inst
|
||||
global sheets_width
|
||||
|
@ -135,10 +133,8 @@ def parse_instruments(notess_instruments):
|
|||
notess_s_inst = ET.fromstring(zip_data.read('instruments/'+inst+'.xml'))
|
||||
inst_vars = get_vars(notess_s_inst)
|
||||
if 'color' in inst_vars: lists_data[1][inst]['color'] = colors.moregray(inst_vars['color'])
|
||||
elif inst in idvals_inst_notetess:
|
||||
print("[input-notessimo_v3] Instrument: " + inst + " BUI")
|
||||
else:
|
||||
print("[input-notessimo_v3] Instrument: " + inst + " UNK")
|
||||
print("[input-notessimo_v3] Instrument: " + inst)
|
||||
|
||||
# ----------------------------------- Sheets -----------------------------------
|
||||
|
||||
|
@ -307,6 +303,9 @@ class input_notessimo_v3(plugin_input.base):
|
|||
zip_data = zipfile.ZipFile(input_file, 'r')
|
||||
cvpj_l = {}
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/notessimo_v3.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
fxrack.add(cvpj_l, 1, 1, 0, name='Drums')
|
||||
|
||||
if 'instruments.xml' in zip_data.namelist():
|
||||
|
@ -328,42 +327,28 @@ class input_notessimo_v3(plugin_input.base):
|
|||
isbuiltindrum = 0
|
||||
midiinst = None
|
||||
|
||||
if inst in idvals_inst_notetess:
|
||||
isbuiltindrum = idvals.get_idval(idvals_inst_notetess, str(inst), 'isdrum')
|
||||
midiinst = idvals.get_idval(idvals_inst_notetess, str(inst), 'gm_inst')
|
||||
inst_name = idvals.get_idval(idvals_inst_notetess, str(inst), 'name')
|
||||
inst_color = idvals.get_idval(idvals_inst_notetess, str(inst), 'color')
|
||||
elif inst in lists_data[1]:
|
||||
t_instdata = lists_data[1][inst]
|
||||
if 'name' in t_instdata: inst_name = t_instdata['name']
|
||||
if 'color' in t_instdata: inst_color = t_instdata['color']
|
||||
else:
|
||||
inst_name = 'noname ('+inst+')'
|
||||
inst_color = [0.3,0.3,0.3]
|
||||
|
||||
inst_color = colors.moregray(inst_color)
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
if midiinst != None:
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, 0, midiinst)
|
||||
cvpj_instdata = {'pluginid': pluginid}
|
||||
|
||||
cvpj_instid = str(inst)
|
||||
outdsd = tracks_mi.import_dset(cvpj_l, cvpj_instid, dataset, dataset_midi, None, None)
|
||||
inst_found = False
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=inst_name, color=inst_color)
|
||||
if (outdsd[4] != None or outdsd[5] != None):
|
||||
inst_found = True
|
||||
pass
|
||||
elif inst in lists_data[1]:
|
||||
inst_found = True
|
||||
t_instdata = lists_data[1][inst]
|
||||
inst_name = t_instdata['name'] if 'name' in t_instdata else None
|
||||
inst_color = t_instdata['color'] if 'color' in t_instdata else None
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=inst_name, color=inst_color)
|
||||
else: tracks_mi.inst_visual(cvpj_l, cvpj_instid, name='noname ('+inst+')', color=[0.3,0.3,0.3])
|
||||
|
||||
if midiinst != None:
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, 0, midiinst)
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, 'midi', 'output', {'program': midiinst})
|
||||
if inst_found: tracks_mi.inst_visual(cvpj_l, cvpj_instid, color=colors.moregray(outdsd[5]))
|
||||
|
||||
if isbuiltindrum == 1:
|
||||
if outdsd[3]:
|
||||
tracks_mi.inst_fxrackchan_add(cvpj_l, cvpj_instid, 1)
|
||||
else:
|
||||
tracks_mi.inst_fxrackchan_add(cvpj_l, cvpj_instid, 1)
|
||||
fxrack.add(cvpj_l, fxnum, 1, 0, name=inst_name, color=inst_color)
|
||||
fxrack.add(cvpj_l, fxnum, 1, 0, name=outdsd[4], color=outdsd[5])
|
||||
fxnum += 1
|
||||
|
||||
song.add_param(cvpj_l, 'bpm', 120)
|
||||
|
|
|
@ -152,12 +152,14 @@ class input_cvpj_f(plugin_input.base):
|
|||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'pitch', t_sounddata[2]/100, 'float')
|
||||
tracks_mi.inst_dataval_add(cvpj_l, cvpj_instid, 'instdata', 'middlenote', t_sounddata[3]*-1)
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'vol', t_sounddata[4]/100, 'float')
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, wave_path)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'start', t_sounddata[5])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'end', t_sounddata[6])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'length', len(t_sounddata[7])//t_sounddata[0])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', 'normal')
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', wave_path, None)
|
||||
inst_plugindata.dataval_add('point_value_type', "samples")
|
||||
inst_plugindata.dataval_add('start', t_sounddata[5])
|
||||
inst_plugindata.dataval_add('end', t_sounddata[6])
|
||||
inst_plugindata.dataval_add('length', len(t_sounddata[7])//t_sounddata[0])
|
||||
inst_plugindata.dataval_add('trigger', 'normal')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
for pixi_data_pattern in pixi_data_patterns:
|
||||
nli_notes = []
|
||||
|
|
|
@ -29,26 +29,27 @@ def get_name(inst_name, dosfilename):
|
|||
elif dosfilename != '': return dosfilename
|
||||
else: return " "
|
||||
|
||||
def add_filter(cvpj_l, pluginid, i_cutoff, i_reso):
|
||||
def add_filter(inst_plugindata, i_cutoff, i_reso):
|
||||
if i_cutoff != None:
|
||||
if i_cutoff != 127:
|
||||
computedCutoff = (i_cutoff * 512)
|
||||
outputcutoff = 131.0 * pow(2.0, computedCutoff * (5.29 / (127.0 * 512.0)))
|
||||
outputreso = ((i_reso/127)*6 + 1) if i_reso != None else 1
|
||||
plugins.add_filter(cvpj_l, pluginid, True, outputcutoff, outputreso, "lowpass", None)
|
||||
inst_plugindata.filter_add(True, outputcutoff, outputreso, "lowpass", None)
|
||||
|
||||
def add_single_sampler(cvpj_l, pluginid, sampledata, sampleidnum):
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, samplefolder+str(sampleidnum)+'.wav')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', 'normal')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
def add_single_sampler(sampledata, sampleidnum):
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', samplefolder+str(sampleidnum)+'.wav', None)
|
||||
inst_plugindata.dataval_add('trigger', 'normal')
|
||||
inst_plugindata.dataval_add('point_value_type', "samples")
|
||||
if sampledata['length'] != 0:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'length', sampledata['length'])
|
||||
inst_plugindata.dataval_add('length', sampledata['length'])
|
||||
cvpj_loop = {}
|
||||
cvpj_loop['enabled'] = int(sampledata['flags'][3])
|
||||
cvpj_loop['mode'] = 'normal' if int(sampledata['flags'][1]) == 0 else 'pingpong'
|
||||
if int(sampledata['flags'][3]) != 0:
|
||||
cvpj_loop['points'] = [sampledata['loop_start'],sampledata['loop_end']]
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', cvpj_loop)
|
||||
inst_plugindata.dataval_add('loop', cvpj_loop)
|
||||
return inst_plugindata
|
||||
|
||||
class input_it(plugin_input.base):
|
||||
def __init__(self): pass
|
||||
|
@ -351,16 +352,17 @@ class input_it(plugin_input.base):
|
|||
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
inst_used = False
|
||||
if bn_s_t_ifsame == True and str(bn_s_t_f[1]-1) in IT_Samples:
|
||||
inst_used = True
|
||||
it_singlesample = IT_Samples[str(bn_s_t_f[1]-1)]
|
||||
|
||||
track_volume = 0.3*it_singleinst['globalvol']*it_singlesample['defualtvolume']*it_singlesample['globalvol']
|
||||
|
||||
add_single_sampler(cvpj_l, pluginid, it_singlesample, bn_s_t_f[1])
|
||||
inst_plugindata = add_single_sampler(it_singlesample, bn_s_t_f[1])
|
||||
else:
|
||||
inst_used = True
|
||||
sampleregions = data_values.list_to_reigons(bn_s_t, 60)
|
||||
plugins.add_plug_multisampler(cvpj_l, pluginid)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
inst_plugindata = plugins.cvpj_plugin('multisampler', None, None)
|
||||
inst_plugindata.dataval_add('point_value_type', "samples")
|
||||
|
||||
for sampleregion in sampleregions:
|
||||
instrumentnum = sampleregion[0][1]
|
||||
|
@ -377,9 +379,9 @@ class input_it(plugin_input.base):
|
|||
regionparams['loop'] = {}
|
||||
regionparams['loop']['enabled'] = int(it_singlesample['flags'][3])
|
||||
regionparams['loop']['points'] = [it_singlesample['loop_start'],it_singlesample['loop_end']]
|
||||
plugins.add_plug_multisampler_region(cvpj_l, pluginid, regionparams)
|
||||
inst_plugindata.region_add(regionparams)
|
||||
|
||||
add_filter(cvpj_l, pluginid, it_singleinst['filtercutoff'], it_singleinst['filterresonance'])
|
||||
add_filter(inst_plugindata, it_singleinst['filtercutoff'], it_singleinst['filterresonance'])
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, it_instname)
|
||||
tracks_mi.inst_visual(cvpj_l, it_instname, name=cvpj_instname, color=[0.71, 0.58, 0.47])
|
||||
|
@ -406,28 +408,30 @@ class input_it(plugin_input.base):
|
|||
track_volume *= max([i['value']/64 for i in envvardata['points']])
|
||||
for itpd in envvardata['points']:
|
||||
if envtype == 'vol':
|
||||
plugins.add_env_point(cvpj_l, pluginid, 'vol', itpd['pos']/48, itpd['value']/64)
|
||||
inst_plugindata.env_points_add('vol', itpd['pos']/48, itpd['value']/64)
|
||||
if susenabled == 1: plugins.add_env_point_var(cvpj_l, pluginid, 'vol', 'sustain', envvardata['susloop_start']+1)
|
||||
if envtype == 'pan':
|
||||
plugins.add_env_point(cvpj_l, pluginid, 'pan', itpd['pos']/48, (itpd['value'])/32)
|
||||
inst_plugindata.env_points_add('pan', itpd['pos']/48, (itpd['value'])/32)
|
||||
if susenabled == 1: plugins.add_env_point_var(cvpj_l, pluginid, 'pan', 'sustain', envvardata['susloop_start']+1)
|
||||
if envtype == 'pitch':
|
||||
if envvardata['usepitch'] != 1:
|
||||
plugins.add_env_point(cvpj_l, pluginid, 'pitch', itpd['pos']/48, (itpd['value']))
|
||||
inst_plugindata.env_points_add('pitch', itpd['pos']/48, (itpd['value']))
|
||||
if susenabled == 1: plugins.add_env_point_var(cvpj_l, pluginid, 'pitch', 'sustain', envvardata['susloop_start']+1)
|
||||
else:
|
||||
plugins.add_env_point(cvpj_l, pluginid, 'cutoff', itpd['pos']/48, (itpd['value']/64))
|
||||
inst_plugindata.env_points_add('cutoff', itpd['pos']/48, (itpd['value']/64))
|
||||
if susenabled == 1: plugins.add_env_point_var(cvpj_l, pluginid, 'cutoff', 'sustain', envvardata['susloop_start']+1)
|
||||
filterenv_used = True
|
||||
|
||||
if it_singleinst['fadeout'] != 0:
|
||||
plugins.add_env_point_var(cvpj_l, pluginid, 'vol', 'fadeout', (256/it_singleinst['fadeout'])/8)
|
||||
inst_plugindata.env_points_addvar('vol', 'fadeout', (256/it_singleinst['fadeout'])/8)
|
||||
|
||||
if filterenv_used == False:
|
||||
add_filter(cvpj_l, pluginid, it_singleinst['filtercutoff'], it_singleinst['filterresonance'])
|
||||
add_filter(inst_plugindata, it_singleinst['filtercutoff'], it_singleinst['filterresonance'])
|
||||
|
||||
inst_plugindata.env_asdr_from_points('vol')
|
||||
inst_plugindata.env_asdr_from_points('cutoff')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
plugins.env_point_to_asdr(cvpj_l, pluginid, 'vol')
|
||||
plugins.env_point_to_asdr(cvpj_l, pluginid, 'cutoff')
|
||||
tracks_mi.inst_param_add(cvpj_l, it_instname, 'vol', track_volume, 'float')
|
||||
|
||||
instrumentcount += 1
|
||||
|
@ -438,7 +442,8 @@ class input_it(plugin_input.base):
|
|||
cvpj_instname = get_name(it_singlesample['name'], it_singlesample['dosfilename'])
|
||||
track_volume = 0.3*it_singlesample['defualtvolume']*it_singlesample['globalvol']
|
||||
pluginid = plugins.get_id()
|
||||
add_single_sampler(cvpj_l, pluginid, it_singlesample, samplecount+1)
|
||||
inst_plugindata = add_single_sampler(it_singlesample, samplecount+1)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
tracks_mi.inst_create(cvpj_l, it_instname)
|
||||
tracks_mi.inst_visual(cvpj_l, it_instname, name=cvpj_instname, color=[0.71, 0.58, 0.47])
|
||||
tracks_mi.inst_pluginid(cvpj_l, it_instname, pluginid)
|
||||
|
|
|
@ -7,11 +7,11 @@ import math
|
|||
import json
|
||||
import struct
|
||||
import numpy as np
|
||||
from functions import plugins
|
||||
from functions import data_bytes
|
||||
from functions import song_tracker
|
||||
from functions import song_tracker_fx_mod
|
||||
from functions import audio_wav
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_mi
|
||||
from functions_tracks import auto_data
|
||||
|
@ -125,7 +125,7 @@ class input_mod(plugin_input.base):
|
|||
|
||||
cvpj_instid = text_inst_start + str(mod_numinst)
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
pluginid = 'sampler_'+str(mod_numinst)
|
||||
if mod_inst_mod_name != "": cvpj_instname = mod_inst_mod_name
|
||||
else: cvpj_instname = ' '
|
||||
|
||||
|
@ -137,12 +137,13 @@ class input_mod(plugin_input.base):
|
|||
|
||||
if mod_inst_length != 0 and mod_inst_length != 1:
|
||||
wave_path = samplefolder + str(mod_numinst).zfill(2) + '.wav'
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, wave_path)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', "normal")
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'start', 0)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'end', mod_inst_length)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'length', mod_inst_length)
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', wave_path, None)
|
||||
inst_plugindata.dataval_add('point_value_type', 'samples')
|
||||
inst_plugindata.dataval_add('trigger', 'normal')
|
||||
inst_plugindata.dataval_add('start', 0)
|
||||
inst_plugindata.dataval_add('end', mod_inst_length)
|
||||
inst_plugindata.dataval_add('length', mod_inst_length)
|
||||
|
||||
cvpj_loopdata = {}
|
||||
if mod_inst_loopstart != 0 and mod_inst_looplength != 1:
|
||||
|
@ -151,7 +152,8 @@ class input_mod(plugin_input.base):
|
|||
cvpj_loopdata['points'] = [mod_inst_loopstart, mod_inst_loopstart+mod_inst_looplength]
|
||||
else: cvpj_loopdata['enabled'] = 0
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', cvpj_loopdata)
|
||||
inst_plugindata.dataval_add('loop', cvpj_loopdata)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
mod_orderlist_length = file_stream.read(1)[0]
|
||||
mod_extravalue = file_stream.read(1)[0]
|
||||
|
|
|
@ -128,21 +128,17 @@ class input_s3m(plugin_input.base):
|
|||
else: cvpj_inst_name = ' '
|
||||
|
||||
wave_path = samplefolder+str(s3m_numinst).zfill(2)+'.wav'
|
||||
if s3m_inst_type == 1:
|
||||
cvpj_inst_color = [0.65, 0.57, 0.33]
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, wave_path)
|
||||
else:
|
||||
cvpj_inst_color = [0.32, 0.27, 0.16]
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', wave_path, None)
|
||||
if s3m_inst_type == 1: cvpj_inst_color = [0.65, 0.57, 0.33]
|
||||
else: cvpj_inst_color = [0.32, 0.27, 0.16]
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=cvpj_inst_name, color=cvpj_inst_color)
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'vol', 0.3, 'float')
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'length', s3m_inst_length)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', 'normal')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
inst_plugindata.dataval_add('length', s3m_inst_length)
|
||||
inst_plugindata.dataval_add('trigger', 'normal')
|
||||
inst_plugindata.dataval_add('point_value_type', "samples")
|
||||
|
||||
if cvpj_inst_samplelocation != 0 and s3m_inst_length != 0:
|
||||
cvpj_loop = {}
|
||||
|
@ -155,7 +151,7 @@ class input_s3m(plugin_input.base):
|
|||
cvpj_loop['enabled'] = 0
|
||||
loopdata = None
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', cvpj_loop)
|
||||
inst_plugindata.dataval_add('loop', cvpj_loop)
|
||||
|
||||
print("[input-st3] Ripping Sample " + str(s3m_numinst))
|
||||
bio_mainfile.seek(cvpj_inst_samplelocation)
|
||||
|
@ -179,6 +175,9 @@ class input_s3m(plugin_input.base):
|
|||
if s3m_inst_16bit == 1 and s3m_samptype == 2: wave_sampledata = data_bytes.unsign_16(wave_sampledata)
|
||||
audio_wav.generate(wave_path, wave_sampledata, wave_channels, s3m_inst_c2spd, wave_bits, loopdata)
|
||||
|
||||
if s3m_inst_type == 1:
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
s3m_numinst += 1
|
||||
|
||||
patterncount = 1
|
||||
|
|
|
@ -199,14 +199,17 @@ def parse_instrument(file_stream, samplecount):
|
|||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=xm_inst_name, color=[0.16, 0.33, 0.53])
|
||||
tracks_mi.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
|
||||
inst_used = False
|
||||
if xm_inst_num_samples == 0:
|
||||
pass
|
||||
elif xm_inst_num_samples == 1:
|
||||
inst_used = True
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'vol', 0.3*(t_sampleheaders[0][0][3]/64), 'float')
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, samplefolder+str(xm_cursamplenum)+'.wav')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', 'normal')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'length', t_sampleheaders[0][0][0])
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', samplefolder+str(xm_cursamplenum)+'.wav', None)
|
||||
inst_plugindata.dataval_add('trigger', 'normal')
|
||||
inst_plugindata.dataval_add('point_value_type', "samples")
|
||||
inst_plugindata.dataval_add('length', t_sampleheaders[0][0][0])
|
||||
|
||||
sampleflags = data_bytes.to_bin(t_sampleheaders[0][0][5], 8)
|
||||
|
||||
|
@ -218,15 +221,16 @@ def parse_instrument(file_stream, samplecount):
|
|||
if sampleflags[6] == 1: loopon = 'pingpong'
|
||||
|
||||
if loopon == None:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', {"enabled": 0})
|
||||
inst_plugindata.dataval_add('loop', {"enabled": 0})
|
||||
else:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop',
|
||||
{"enabled": 1, "mode": loopon, "points": [xm_loop_start,xm_loop_start+xm_loop_len]})
|
||||
inst_plugindata.dataval_add('loop', {"enabled": 1, "mode": loopon, "points": [xm_loop_start,xm_loop_start+xm_loop_len]})
|
||||
else:
|
||||
inst_used = True
|
||||
tracks_mi.inst_param_add(cvpj_l, cvpj_instid, 'vol', 0.3, 'float')
|
||||
sampleregions = data_values.list_to_reigons(xm_inst_e_table, 48)
|
||||
plugins.add_plug_multisampler(cvpj_l, pluginid)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('multisampler', None, None)
|
||||
inst_plugindata.dataval_add('point_value_type', "samples")
|
||||
|
||||
for sampleregion in sampleregions:
|
||||
instrumentnum = sampleregion[0]
|
||||
|
@ -247,7 +251,7 @@ def parse_instrument(file_stream, samplecount):
|
|||
xm_loop_len = t_sampleheaders[instrumentnum][0][2]
|
||||
regionparams['loop']['points'] = [xm_loop_start,xm_loop_start+xm_loop_len]
|
||||
|
||||
plugins.add_plug_multisampler_region(cvpj_l, pluginid, regionparams)
|
||||
inst_plugindata.region_add(regionparams)
|
||||
|
||||
if xm_inst_num_samples != 0:
|
||||
|
||||
|
@ -265,24 +269,26 @@ def parse_instrument(file_stream, samplecount):
|
|||
zerofound = False
|
||||
|
||||
if envflags[6] == 1:
|
||||
plugins.add_env_point_var(cvpj_l, pluginid, typedata[0], 'sustain', typedata[2]+1)
|
||||
inst_plugindata.env_points_addvar(typedata[0], 'sustain', typedata[2]+1)
|
||||
if envflags[5] == 1:
|
||||
plugins.add_env_point_var(cvpj_l, pluginid, typedata[0], 'loop', [typedata[4], typedata[3]+typedata[4]])
|
||||
inst_plugindata.env_points_addvar(typedata[0], 'loop', [typedata[4], typedata[3]+typedata[4]])
|
||||
|
||||
if typedata[0] == 'vol':
|
||||
if xm_inst_e_volume_fadeout != 0:
|
||||
plugins.add_env_point_var(cvpj_l, pluginid, typedata[0], 'fadeout', (128/xm_inst_e_volume_fadeout)*5)
|
||||
inst_plugindata.env_points_addvar(typedata[0], 'fadeout', (128/xm_inst_e_volume_fadeout)*5)
|
||||
|
||||
for groupval in typedata[1]:
|
||||
if groupval[0] == 0:
|
||||
if zerofound == True: break
|
||||
zerofound = True
|
||||
if typedata[0] == 'vol' and envflags[7] == 1:
|
||||
plugins.add_env_point(cvpj_l, pluginid, 'vol', groupval[0]/48, groupval[1]/64)
|
||||
inst_plugindata.env_points_add('vol', groupval[0]/48, groupval[1]/64)
|
||||
if typedata[0] == 'pan':
|
||||
plugins.add_env_point(cvpj_l, pluginid, 'pan', groupval[0]/48, (groupval[1]-32)/32)
|
||||
inst_plugindata.env_points_add('pan', groupval[0]/48, (groupval[1]-32)/32)
|
||||
|
||||
plugins.env_point_to_asdr(cvpj_l, pluginid, 'vol')
|
||||
inst_plugindata.env_asdr_from_points('vol')
|
||||
|
||||
if inst_used == True: inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if xm_inst_num_samples != 0: xm_cursamplenum += xm_inst_num_samples
|
||||
|
||||
|
|
|
@ -235,24 +235,30 @@ class input_trackerboy(plugin_input.base):
|
|||
else: cvpj_instcolor = None
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', insttype)
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', insttype)
|
||||
inst_plugindata.osc_num_oscs(1)
|
||||
|
||||
if trackerboy_instdata[1][0] != ():
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, 'arp', trackerboy_instdata[1][0], None, None, None)
|
||||
inst_plugindata.env_blocks_add('arp', trackerboy_instdata[1][0], None, None, None, None)
|
||||
|
||||
if trackerboy_instdata[2][0] != ():
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, 'pan', trackerboy_instdata[2][0], None, None, None)
|
||||
inst_plugindata.env_blocks_add('pan', trackerboy_instdata[2][0], None, None, None, None)
|
||||
|
||||
if trackerboy_instdata[3][0] != ():
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, 'pitch', trackerboy_instdata[4][0], None, None, None)
|
||||
inst_plugindata.env_blocks_add('pitch', trackerboy_instdata[4][0], None, None, None, None)
|
||||
|
||||
if trackerboy_instdata[4][0] != ():
|
||||
if insttype == 'pulse':
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, 'duty', trackerboy_instdata[4][0], 4, None, None)
|
||||
inst_plugindata.osc_opparam_set(0, 'shape', 'square')
|
||||
inst_plugindata.env_blocks_add('duty', trackerboy_instdata[4][0], None, 4, None, None)
|
||||
if insttype == 'wavetable':
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, 'vol', trackerboy_instdata[4][0], 3, None, None)
|
||||
inst_plugindata.osc_opparam_set(0, 'shape', 'custom_wave')
|
||||
inst_plugindata.osc_opparam_set(0, 'wave_name', 'main')
|
||||
inst_plugindata.env_blocks_add('vol', trackerboy_instdata[4][0], None, 3, None, None)
|
||||
if insttype == 'noise':
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, 'noise', trackerboy_instdata[4][0], 3, None, None)
|
||||
inst_plugindata.osc_opparam_set(0, 'shape', 'noise')
|
||||
inst_plugindata.env_blocks_add('noise', trackerboy_instdata[4][0], None, 3, None, None)
|
||||
|
||||
if insttype != 'wavetable':
|
||||
env_attack = 0
|
||||
|
@ -264,12 +270,14 @@ class input_trackerboy(plugin_input.base):
|
|||
elif trackerboy_instdata[6] >= 8:
|
||||
env_attack = (trackerboy_instdata[6]-8)/5
|
||||
env_sustain = 1
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'vol', 0, env_attack, 0, env_decay, env_sustain, 0, 1)
|
||||
inst_plugindata.asdr_env_add('vol', 0, env_attack, 0, env_decay, env_sustain, 0, 1)
|
||||
else:
|
||||
if trackerboy_instdata[6] == 0:
|
||||
plugins.add_wave(cvpj_l, pluginid, 'main', t_waves[1][1], 0, 15)
|
||||
inst_plugindata.wave_add('main', t_waves[1][1], 0, 15)
|
||||
else:
|
||||
plugins.add_wave(cvpj_l, pluginid, 'main', t_waves[trackerboy_instdata[6]+1][1], 0, 15)
|
||||
inst_plugindata.wave_add('main', t_waves[trackerboy_instdata[6]+1][1], 0, 15)
|
||||
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
tracks_mi.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_mi.inst_visual(cvpj_l, cvpj_instid, name=cvpj_instname, color=cvpj_instcolor)
|
||||
|
|
|
@ -1,862 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import data_bytes
|
||||
from functions import colors
|
||||
from functions import audio
|
||||
from functions import data_values
|
||||
from functions import placement_data
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_plugin import ableton_values
|
||||
from functions_tracks import auto_id
|
||||
from functions_tracks import auto_nopl
|
||||
from functions_tracks import trackfx
|
||||
from functions_tracks import fxslot
|
||||
from functions_tracks import tracks_r
|
||||
from functions_tracks import groups
|
||||
from functions_tracks import tracks_master
|
||||
|
||||
import base64
|
||||
import xml.etree.ElementTree as ET
|
||||
import plugin_input
|
||||
import json
|
||||
import gzip
|
||||
import math
|
||||
|
||||
colorlist = ['FF94A6','FFA529','CC9927','F7F47C','BFFB00','1AFF2F','25FFA8','5CFFE8','8BC5FF','5480E4','92A7FF','D86CE4','E553A0','FFFFFF','FF3636','F66C03','99724B','FFF034','87FF67','3DC300','00BFAF','19E9FF','10A4EE','007DC0','886CE4','B677C6','FF39D4','D0D0D0','E2675A','FFA374','D3AD71','EDFFAE','D2E498','BAD074','9BC48D','D4FDE1','CDF1F8','B9C1E3','CDBBE4','AE98E5','E5DCE1','A9A9A9','C6928B','B78256','99836A','BFBA69','A6BE00','7DB04D','88C2BA','9BB3C4','85A5C2','8393CC','A595B5','BF9FBE','BC7196','7B7B7B','AF3333','A95131','724F41','DBC300','85961F','539F31','0A9C8E','236384','1A2F96','2F52A2','624BAD','A34BAD','CC2E6E','3C3C3C']
|
||||
colorlist_one = [colors.hex_to_rgb_float(color) for color in colorlist]
|
||||
|
||||
def get_value(xmldata, varname, fallback):
|
||||
if len(xmldata.findall(varname)) != 0:
|
||||
xml_e = xmldata.findall(varname)[0]
|
||||
return xml_e.get('Value')
|
||||
else:
|
||||
return fallback
|
||||
|
||||
def get_id(xmldata, varname, fallback):
|
||||
if len(xmldata.findall(varname)) != 0:
|
||||
xml_e = xmldata.findall(varname)[0]
|
||||
return xml_e.get('Id')
|
||||
|
||||
|
||||
def use_valuetype(i_valtype, i_value):
|
||||
if i_valtype == 'string': return str(i_value)
|
||||
if i_valtype == 'float': return float(i_value)
|
||||
if i_valtype == 'int': return int(i_value)
|
||||
if i_valtype == 'bool': return ['false','true'].index(i_value)
|
||||
|
||||
def get_param(xmldata, varname, vartype, fallback, i_loc, i_addmul):
|
||||
if len(xmldata.findall(varname)) != 0:
|
||||
param_data = xmldata.findall(varname)[0]
|
||||
out_value = get_value(param_data, 'Manual', fallback)
|
||||
autonumid = int(get_id(param_data, 'AutomationTarget', None))
|
||||
outdata = use_valuetype(vartype, out_value)
|
||||
if autonumid != None:
|
||||
auto_id.in_define(autonumid, i_loc, vartype, i_addmul)
|
||||
return outdata
|
||||
else:
|
||||
return fallback
|
||||
|
||||
def get_sampleref(xmldata):
|
||||
x_sampleref = xmldata.findall('SampleRef')[0]
|
||||
x_fileref = x_sampleref.findall('FileRef')[0]
|
||||
out_data = {}
|
||||
out_data['file'] = get_value(x_fileref, 'Path', '')
|
||||
out_data['samples'] = float(get_value(x_sampleref, 'DefaultDuration', 1))
|
||||
out_data['rate'] = float(get_value(x_sampleref, 'DefaultSampleRate', 1))
|
||||
out_data['seconds'] = out_data['samples'] / out_data['rate']
|
||||
return out_data
|
||||
|
||||
def get_auto(x_track_data):
|
||||
track_AutomationEnvelopes = x_track_data.findall('AutomationEnvelopes')[0]
|
||||
track_Envelopes = track_AutomationEnvelopes.findall('Envelopes')[0]
|
||||
for AutomationEnvelope in track_Envelopes.findall('AutomationEnvelope'):
|
||||
env_EnvelopeTarget = AutomationEnvelope.findall('EnvelopeTarget')[0]
|
||||
env_Automation = AutomationEnvelope.findall('Automation')[0]
|
||||
env_AutoEvents = env_Automation.findall('Events')[0]
|
||||
autotarget = int(get_value(env_EnvelopeTarget, 'PointeeId', None))
|
||||
|
||||
cvpj_autopoints = []
|
||||
for env_AutoEvent in env_AutoEvents:
|
||||
if env_AutoEvent.tag == 'FloatEvent':
|
||||
cvpj_autopoints.append({
|
||||
"position": max(0,float(env_AutoEvent.get('Time'))*4),
|
||||
"value": float(env_AutoEvent.get('Value'))
|
||||
})
|
||||
|
||||
auto_id.in_add_pl(autotarget, auto_nopl.to_pl(cvpj_autopoints))
|
||||
|
||||
def get_Range_cross(x_xml, rangename):
|
||||
x_range = x_xml.findall(rangename)[0]
|
||||
output = []
|
||||
output.append(int(get_value(x_range, 'Min', 0)))
|
||||
output.append(int(get_value(x_range, 'Max', 127)))
|
||||
output.append(int(get_value(x_range, 'CrossfadeMin', 0)))
|
||||
output.append(int(get_value(x_range, 'CrossfadeMax', 127)))
|
||||
return output
|
||||
|
||||
def get_Range(x_xml, rangename):
|
||||
rangevalfind = x_xml.findall(rangename)
|
||||
|
||||
if len(rangevalfind) != 0:
|
||||
x_range = rangevalfind[0]
|
||||
output = []
|
||||
output.append(float(get_value(x_range, 'Min', None)))
|
||||
output.append(float(get_value(x_range, 'Max', None)))
|
||||
return output
|
||||
|
||||
def isfloatboolstring(valuedata):
|
||||
if valuedata.replace('.','',1).replace('-','',1).isdigit():
|
||||
return 'float'
|
||||
elif valuedata in ['true', 'false']:
|
||||
return 'bool'
|
||||
else:
|
||||
return 'string'
|
||||
|
||||
lfo_beatsteps = []
|
||||
for lfo_beatstep in [1/64, 1/48, 1/32, 1/24, 1/16, 1/12, 1/8,
|
||||
1/6, 3/16, 1/4, 5/16, 1/3, 3/8, 1/2, 3/4, 1, 1.5, 2, 3, 4, 6, 8]:
|
||||
lfo_beatsteps.append( math.log2(lfo_beatstep) )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
def get_MultiSampleMap(x_MultiSampleMap):
|
||||
outdata = []
|
||||
x_sampleparts = x_MultiSampleMap.findall('SampleParts')[0]
|
||||
xs_sampleparts = x_sampleparts.findall('MultiSamplePart')
|
||||
for xs_samplepart in xs_sampleparts:
|
||||
audiodata = get_sampleref(xs_samplepart)
|
||||
t_samppart = {}
|
||||
t_samppart['audiodata'] = audiodata
|
||||
t_samppart['Name'] = get_value(xs_samplepart, 'Name', '')
|
||||
t_samppart['KeyRange'] = get_Range_cross(xs_samplepart, 'KeyRange')
|
||||
t_samppart['VelocityRange'] = get_Range_cross(xs_samplepart, 'VelocityRange')
|
||||
t_samppart['SelectorRange'] = get_Range_cross(xs_samplepart, 'SelectorRange')
|
||||
t_samppart['CrossfadeMin'] = get_value(xs_samplepart, 'CrossfadeMin', 0)
|
||||
t_samppart['Detune'] = float(get_value(xs_samplepart, 'Detune', 0))/100
|
||||
t_samppart['TuneScale'] = float(get_value(xs_samplepart, 'TuneScale', 0))/100
|
||||
t_samppart['Volume'] = float(get_value(xs_samplepart, 'Volume', 1))
|
||||
t_samppart['SampleStart'] = float(get_value(xs_samplepart, 'SampleStart', 1))
|
||||
t_samppart['SampleEnd'] = float(get_value(xs_samplepart, 'SampleEnd', 1))
|
||||
for xmlname, tname in [['SustainLoop', 'loop_sustain'],['ReleaseLoop', 'loop_release']]:
|
||||
x_loop = xs_samplepart.findall(xmlname)[0]
|
||||
t_samppart[tname] = {}
|
||||
t_samppart[tname]['Start'] = int(get_value(x_loop, 'Start', 0))
|
||||
t_samppart[tname]['End'] = int(get_value(x_loop, 'End', 0))
|
||||
t_samppart[tname]['Mode'] = int(get_value(x_loop, 'Mode', 0))
|
||||
t_samppart[tname]['Crossfade'] = float(get_value(x_loop, 'Crossfade', 0))
|
||||
t_samppart[tname]['Detune'] = float(get_value(x_loop, 'Detune', 0))/100
|
||||
|
||||
t_samppart_slice = {}
|
||||
t_samppart_slice['Threshold'] = int(get_value(xs_samplepart, 'SlicingThreshold', 0))
|
||||
t_samppart_slice['BeatGrid'] = int(get_value(xs_samplepart, 'SlicingBeatGrid', 0))
|
||||
t_samppart_slice['Regions'] = int(get_value(xs_samplepart, 'SlicingRegions', 0))
|
||||
t_samppart_slice['Style'] = int(get_value(xs_samplepart, 'SlicingStyle', 0))
|
||||
t_samppart_slice['UseDynamicBeatSlices'] = use_valuetype('bool', get_value(xs_samplepart, 'UseDynamicBeatSlices', 'true'))
|
||||
t_samppart_slice['UseDynamicRegionSlices'] = use_valuetype('bool', get_value(xs_samplepart, 'UseDynamicRegionSlices', 'true'))
|
||||
t_samppart_slice['Points'] = []
|
||||
|
||||
x_SlicePoints = xs_samplepart.findall('SlicePoints')[0]
|
||||
for xs_SlicePoint in x_SlicePoints.findall('SlicePoint'):
|
||||
t_slice = {}
|
||||
t_slice['TimeInSeconds'] = float(xs_SlicePoint.get('TimeInSeconds'))
|
||||
t_slice['Rank'] = float(xs_SlicePoint.get('Rank'))
|
||||
t_slice['NormalizedEnergy'] = float(xs_SlicePoint.get('NormalizedEnergy'))
|
||||
t_samppart_slice['Points'].append(t_slice)
|
||||
|
||||
outdata.append(t_samppart)
|
||||
|
||||
return outdata
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
def do_devices(x_trackdevices, track_id, fxloc):
|
||||
for x_trackdevice in x_trackdevices:
|
||||
able_plug_id = x_trackdevice.get('Id')
|
||||
if track_id != None: pluginid = track_id+'_'+able_plug_id
|
||||
else: pluginid = 'master_'+able_plug_id
|
||||
devicename = str(x_trackdevice.tag)
|
||||
#print(pluginid, devicename)
|
||||
is_instrument = False
|
||||
|
||||
devfx_enabled = get_param(x_trackdevice, 'On', 'bool', True, ['slot', able_plug_id, 'enabled'], None)
|
||||
devfx_wet = 1
|
||||
|
||||
if devicename not in ['MultiSampler', 'OriginalSimpler', 'Compressor2'] and devicename in abletondatadef_params:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-ableton', devicename)
|
||||
device_defparams = abletondatadef_params[devicename]
|
||||
for ableton_paramname in device_defparams:
|
||||
ableton_param_data = device_defparams[ableton_paramname]
|
||||
als_paramval = get_param(
|
||||
x_trackdevice, ableton_paramname, ableton_param_data[0],
|
||||
ableton_param_data[1], ['plugin', pluginid, ableton_paramname], None)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, ableton_paramname, als_paramval, ableton_param_data[0], ableton_paramname)
|
||||
|
||||
device_defdata = abletondatadef_data[devicename]
|
||||
for ableton_dataname in device_defdata:
|
||||
ableton_data_data = device_defdata[ableton_dataname]
|
||||
plugins.add_plug_data(cvpj_l, pluginid, ableton_dataname, use_valuetype(ableton_data_data[0], get_value(x_trackdevice, ableton_dataname, ableton_data_data[1])))
|
||||
|
||||
if devicename == 'Saturator':
|
||||
x_WaveShaper = x_trackdevice.findall('WaveShaper')[0]
|
||||
for waveshapevarname in ['Drive','Lin','Curve','Damp','Period','Depth']:
|
||||
ws_p_name = 'waveshaper_'+waveshapevarname
|
||||
als_paramval = get_param(x_WaveShaper, waveshapevarname, 'float', 0, ['plugin', pluginid, ws_p_name], None)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, ws_p_name, als_paramval, 'float', ws_p_name)
|
||||
|
||||
if devicename in ['AutoPan', 'AutoFilter', 'FrequencyShifter']:
|
||||
x_lfo = x_trackdevice.findall('Lfo')[0]
|
||||
lfo_data = {}
|
||||
|
||||
lfo_data['Type'] = get_param(x_lfo, 'Type', 'int', 0, None, None)
|
||||
lfo_data['Frequency'] = get_param(x_lfo, 'Frequency', 'float', 0, None, None)
|
||||
lfo_data['RateType'] = get_param(x_lfo, 'RateType', 'float', 0, None, None)
|
||||
lfo_data['BeatRate'] = get_param(x_lfo, 'BeatRate', 'int', 0, None, None)
|
||||
lfo_data['StereoMode'] = get_param(x_lfo, 'StereoMode', 'int', 0, None, None)
|
||||
lfo_data['Spin'] = get_param(x_lfo, 'Spin', 'float', 0, None, None)
|
||||
lfo_data['Phase'] = get_param(x_lfo, 'Phase', 'float', 0, None, None)
|
||||
lfo_data['Offset'] = get_param(x_lfo, 'Offset', 'float', 0, None, None)
|
||||
lfo_data['IsOn'] = get_param(x_lfo, 'IsOn', 'bool', False, None, None)
|
||||
lfo_data['Quantize'] = get_param(x_lfo, 'Quantize', 'bool', False, None, None)
|
||||
lfo_data['BeatQuantize'] = get_param(x_lfo, 'BeatQuantize', 'float', 0, None, None)
|
||||
lfo_data['NoiseWidth'] = get_param(x_lfo, 'NoiseWidth', 'float', 0, None, None)
|
||||
lfo_data['LfoAmount'] = get_param(x_lfo, 'LfoAmount', 'float', None, None, None)
|
||||
lfo_data['LfoInvert'] = get_param(x_lfo, 'LfoInvert', 'bool', None, None, None)
|
||||
lfo_data['LfoShape'] = get_param(x_lfo, 'LfoShape', 'float', None, None, None)
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'lfo_data', lfo_data)
|
||||
|
||||
if devicename in ['Looper']:
|
||||
hextext = x_trackdevice.findall('SavedBuffer')[0].text
|
||||
if hextext != None:
|
||||
base64text = base64.b64encode(bytes.fromhex(hextext)).decode()
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'SavedBuffer', base64text)
|
||||
|
||||
if devicename == 'Hybrid':
|
||||
x_Hybrid = x_trackdevice.findall('ImpulseResponseHandler')[0]
|
||||
x_SampleSlot = x_Hybrid.findall('SampleSlot')[0]
|
||||
x_Value = x_SampleSlot.findall('Value')[0]
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'sample', get_sampleref(x_Value)['file'])
|
||||
|
||||
if devicename == 'Vocoder':
|
||||
x_Vocoder_FilterBank = x_trackdevice.findall('FilterBank')[0]
|
||||
banddata = []
|
||||
for bandnum in range(40):
|
||||
banddata.append( float(get_value(x_Vocoder_FilterBank, 'BandLevel.'+str(bandnum), 1)) )
|
||||
float(get_value(x_Vocoder_FilterBank, 'BandLevel.'+str(bandnum), 1))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'banddata', banddata)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'bandcount', int(get_value(x_Vocoder_FilterBank, 'BandCount', 12)))
|
||||
|
||||
#paramletter = ['A','B']
|
||||
#if devicename == 'Eq8':
|
||||
# banddata = [[],[]]
|
||||
# for num in range(8):
|
||||
# x_eq8band = x_trackdevice.findall('Bands.'+str(num))[0]
|
||||
# bandparams = {}
|
||||
# for paramletnum in range(2):
|
||||
# listletnum = paramletter[paramletnum]
|
||||
# x_eq8let = x_eq8band.findall('Parameter'+listletnum)[0]
|
||||
# bandparams['IsOn'] = get_param(x_eq8let, 'IsOn', 'bool', 'false', None, None)
|
||||
# bandparams['Mode'] = get_param(x_eq8let, 'Mode', 'int', 0, None, None)
|
||||
# bandparams['Freq'] = get_param(x_eq8let, 'Freq', 'float', 0, None, None)
|
||||
# bandparams['Gain'] = get_param(x_eq8let, 'Gain', 'float', 0, None, None)
|
||||
# bandparams['Q'] = get_param(x_eq8let, 'Q', 'float', 0, None, None)
|
||||
# print(listletnum, bandparams)
|
||||
# banddata[paramletnum].append(bandparams)
|
||||
# plugins.add_plug_data(cvpj_l, pluginid, 'band_data', banddata)
|
||||
|
||||
if devicename == 'InstrumentVector':
|
||||
is_instrument = True
|
||||
modcons = []
|
||||
x_ModulationConnections = x_trackdevice.findall('ModulationConnections')[0]
|
||||
x_ModulationConnectionsForInstrumentVectors = x_ModulationConnections.findall('ModulationConnectionsForInstrumentVector')
|
||||
for x_ModulationConnectionsForInstrumentVector in x_ModulationConnectionsForInstrumentVectors:
|
||||
s_modcon = {}
|
||||
s_modcon_target = x_ModulationConnectionsForInstrumentVector.get('TargetId')
|
||||
s_modcon['target'] = x_ModulationConnectionsForInstrumentVector.get('TargetId')
|
||||
s_modcon['name'] = get_value(x_ModulationConnectionsForInstrumentVector, 'TargetName', '')
|
||||
s_modcon['amounts'] = []
|
||||
for num in range(13):
|
||||
s_modcon['amounts'].append( float(get_value(x_ModulationConnectionsForInstrumentVector, 'ModulationAmounts.'+str(num), 0)) )
|
||||
modcons.append(s_modcon)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'ModulationConnections', modcons)
|
||||
|
||||
x_UserSprite1 = x_trackdevice.findall('UserSprite1')[0]
|
||||
x_UserSprite1Value = x_UserSprite1.findall('Value')[0]
|
||||
x_UserSprite1SampleRef = x_UserSprite1Value.findall('SampleRef')
|
||||
if x_UserSprite1SampleRef != []:
|
||||
file1data = get_sampleref(x_UserSprite1Value)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'UserSprite1', file1data['file'])
|
||||
else: plugins.add_plug_data(cvpj_l, pluginid, 'UserSprite1', '')
|
||||
|
||||
x_UserSprite2 = x_trackdevice.findall('UserSprite2')[0]
|
||||
x_UserSprite2Value = x_UserSprite2.findall('Value')[0]
|
||||
x_UserSprite2SampleRef = x_UserSprite2Value.findall('SampleRef')
|
||||
if x_UserSprite2SampleRef != []:
|
||||
file1data = get_sampleref(x_UserSprite2Value)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'UserSprite2', file1data['file'])
|
||||
else: plugins.add_plug_data(cvpj_l, pluginid, 'UserSprite2', '')
|
||||
|
||||
elif devicename == 'Compressor2':
|
||||
device_defparams = abletondatadef_params[devicename]
|
||||
|
||||
v_Threshold = get_param(x_trackdevice, 'Threshold', 'float', 0, None, None)
|
||||
v_Ratio = get_param(x_trackdevice, 'Ratio', 'float', 0, None, None)
|
||||
v_ExpansionRatio = get_param(x_trackdevice, 'ExpansionRatio', 'float', 0, None, None)
|
||||
v_Attack = get_param(x_trackdevice, 'Attack', 'float', 0, None, None)
|
||||
v_Release = get_param(x_trackdevice, 'Release', 'float', 0, None, None)
|
||||
v_Gain = get_param(x_trackdevice, 'Gain', 'float', 0, None, None)
|
||||
devfx_wet = get_param(x_trackdevice, 'DryWet', 'float', 1, None, None)
|
||||
v_Model = get_param(x_trackdevice, 'Model', 'int', 0, None, None)
|
||||
v_Knee = get_param(x_trackdevice, 'Knee', 'float', 0, None, None)
|
||||
|
||||
v_Threshold = -math.log(v_Threshold, 0.8913)
|
||||
|
||||
modeldata = 'peak'
|
||||
if v_Model == 1: modeldata = 'rms'
|
||||
|
||||
if v_Model != 2:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'compressor')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'ratio', v_Ratio, 'float', 'ratio')
|
||||
else:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'expander')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'ratio', v_ExpansionRatio, 'float', 'ratio')
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'threshold', v_Threshold, 'float', 'threshold')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'attack', v_Attack/1000, 'float', 'attack')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'release', v_Release/1000, 'float', 'release')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'postgain', v_Gain, 'float', 'postgain')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'knee', v_Knee, 'float', 'knee')
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'detect_mode', modeldata)
|
||||
|
||||
elif devicename in ['OriginalSimpler', 'MultiSampler']:
|
||||
plugins.add_plug_multisampler(cvpj_l, pluginid)
|
||||
is_instrument = True
|
||||
|
||||
# Player
|
||||
x_samp_Player = x_trackdevice.findall('Player')[0]
|
||||
x_samp_MultiSampleMap = x_samp_Player.findall('MultiSampleMap')[0]
|
||||
x_samp_SampleParts = x_samp_MultiSampleMap.findall('SampleParts')[0]
|
||||
x_samp_MultiSampleParts = x_samp_SampleParts.findall('MultiSamplePart')
|
||||
for x_samp_MultiSamplePart in x_samp_MultiSampleParts:
|
||||
regionparams = {}
|
||||
regionparams['name'] = get_value(x_samp_MultiSamplePart, 'Name', '')
|
||||
|
||||
if x_samp_MultiSamplePart.findall('KeyRange')[0]:
|
||||
x_KeyRange = x_samp_MultiSamplePart.findall('KeyRange')[0]
|
||||
xv_Min = int(get_value(x_KeyRange, 'Min', '0'))-60
|
||||
xv_Max = int(get_value(x_KeyRange, 'Max', '127'))-60
|
||||
xv_CrossfadeMin = int(get_value(x_KeyRange, 'CrossfadeMin', '0'))-60
|
||||
xv_CrossfadeMax = int(get_value(x_KeyRange, 'CrossfadeMax', '127'))-60
|
||||
regionparams['r_key'] = [xv_Min, xv_Max]
|
||||
regionparams['r_key_fade'] = [xv_CrossfadeMin, xv_CrossfadeMax]
|
||||
|
||||
if x_samp_MultiSamplePart.findall('VelocityRange')[0]:
|
||||
x_VelocityRange = x_samp_MultiSamplePart.findall('VelocityRange')[0]
|
||||
xv_Min = int(get_value(x_VelocityRange, 'Min', '1'))
|
||||
xv_Max = int(get_value(x_VelocityRange, 'Max', '127'))
|
||||
xv_CrossfadeMin = int(get_value(x_VelocityRange, 'CrossfadeMin', '1'))
|
||||
xv_CrossfadeMax = int(get_value(x_VelocityRange, 'CrossfadeMax', '127'))
|
||||
regionparams['r_vel'] = [xv_Min, xv_Max]
|
||||
regionparams['r_vel_fade'] = [xv_CrossfadeMin, xv_CrossfadeMax]
|
||||
|
||||
regionparams['middlenote'] = int(get_value(x_samp_MultiSamplePart, 'RootKey', '60'))-60
|
||||
regionparams['volume'] = float(get_value(x_samp_MultiSamplePart, 'volume', '1'))
|
||||
regionparams['pan'] = float(get_value(x_samp_MultiSamplePart, 'pan', '0'))
|
||||
|
||||
if x_samp_MultiSamplePart.findall('SustainLoop')[0]:
|
||||
x_SustainLoop = x_samp_MultiSamplePart.findall('SustainLoop')[0]
|
||||
xv_Start = int(get_value(x_SustainLoop, 'Start', '0'))
|
||||
xv_End = int(get_value(x_SustainLoop, 'End', '1'))
|
||||
xv_Mode = int(get_value(x_SustainLoop, 'Mode', '0'))
|
||||
xv_Crossfade = int(get_value(x_SustainLoop, 'Crossfade', '0'))
|
||||
xv_Detune = int(get_value(x_SustainLoop, 'Detune', '0'))
|
||||
loopdata = {}
|
||||
if xv_Mode == 0: loopdata['enabled'] = 0
|
||||
else:
|
||||
loopdata['enabled'] = 1
|
||||
loopdata['mode'] = 'normal'
|
||||
loopdata['points'] = [xv_Start, xv_End]
|
||||
loopdata['crossfade'] = xv_Crossfade
|
||||
loopdata['detune'] = xv_Detune
|
||||
regionparams['loop_sustain'] = loopdata
|
||||
|
||||
if x_samp_MultiSamplePart.findall('ReleaseLoop')[0]:
|
||||
x_ReleaseLoop = x_samp_MultiSamplePart.findall('ReleaseLoop')[0]
|
||||
xv_Start = int(get_value(x_ReleaseLoop, 'Start', '0'))
|
||||
xv_End = int(get_value(x_ReleaseLoop, 'End', '1'))
|
||||
xv_Mode = int(get_value(x_ReleaseLoop, 'Mode', '0'))
|
||||
xv_Crossfade = int(get_value(x_ReleaseLoop, 'Crossfade', '0'))
|
||||
xv_Detune = int(get_value(x_ReleaseLoop, 'Detune', '0'))
|
||||
loopdata = {}
|
||||
if xv_Mode == 0: loopdata['enabled'] = 0
|
||||
else:
|
||||
loopdata['enabled'] = 1
|
||||
loopdata['mode'] = 'normal'
|
||||
loopdata['points'] = [xv_Start, xv_End]
|
||||
loopdata['crossfade'] = xv_Crossfade
|
||||
loopdata['detune'] = xv_Detune
|
||||
regionparams['loop'] = loopdata
|
||||
|
||||
sampleref = get_sampleref(x_samp_MultiSamplePart)
|
||||
regionparams['file'] = sampleref['file']
|
||||
|
||||
regionparams['start'] = int(get_value(x_ReleaseLoop, 'SampleStart', '0'))
|
||||
regionparams['end'] = int(get_value(x_ReleaseLoop, 'SampleEnd', '1'))
|
||||
|
||||
plugins.add_plug_multisampler_region(cvpj_l, pluginid, regionparams)
|
||||
|
||||
if is_instrument == True:
|
||||
tracks_r.track_inst_pluginid(cvpj_l, track_id, pluginid)
|
||||
else:
|
||||
if fxloc != None: fxslot.insert(cvpj_l, fxloc, 'audio', pluginid)
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, able_plug_id, devfx_wet)
|
||||
|
||||
#_______paramfinder_data[devicename] = {}
|
||||
#_______paramfinder_param[devicename] = {}
|
||||
if False:
|
||||
for x_trackdevice_name in x_trackdevice:
|
||||
tagname = x_trackdevice_name.tag
|
||||
manualval = x_trackdevice_name.findall('Manual')
|
||||
if tagname not in ['On', 'LomId', 'LomIdView', 'IsExpanded', 'ModulationSourceCount',
|
||||
'ParametersListWrapper', 'Pointee', 'LastSelectedTimeableIndex', 'LastSelectedClipEnvelopeIndex',
|
||||
'LastPresetRef', 'LockedScripts', 'IsFolded', 'ShouldShowPresetName', 'UserName', 'Annotation',
|
||||
'SourceContext', 'OverwriteProtectionNumber']:
|
||||
if manualval != []:
|
||||
findmanval = manualval[0].get('Value')
|
||||
valuetype = isfloatboolstring(findmanval)
|
||||
#print('--PARAM--', tagname, valuetype, findmanval)
|
||||
|
||||
#_______paramfinder_param[devicename][tagname] = [valuetype, findmanval,
|
||||
#get_Range(x_trackdevice_name, 'MidiControllerRange'),
|
||||
#get_Range(x_trackdevice_name, 'MidiCCOnOffThresholds')]
|
||||
elif x_trackdevice_name.get('Value') != None :
|
||||
findmanval = x_trackdevice_name.get('Value')
|
||||
valuetype = isfloatboolstring(findmanval)
|
||||
print('--DATA---', tagname, valuetype, findmanval)
|
||||
_______paramfinder_data[devicename][tagname] = [valuetype, findmanval]
|
||||
else:
|
||||
print('---------', tagname)
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class input_ableton(plugin_input.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'input'
|
||||
def getshortname(self): return 'ableton'
|
||||
def getname(self): return 'Ableton Live 11'
|
||||
def gettype(self): return 'r'
|
||||
def supported_autodetect(self): return False
|
||||
def getdawcapabilities(self):
|
||||
return {
|
||||
'placement_cut': True,
|
||||
'placement_loop': ['loop', 'loop_off', 'loop_adv'],
|
||||
'placement_audio_stretch': ['warp'],
|
||||
'auto_nopl': True,
|
||||
}
|
||||
def parse(self, input_file, extra_param):
|
||||
global abletondatadef_params
|
||||
global abletondatadef_data
|
||||
global cvpj_l
|
||||
|
||||
xmlstring = ""
|
||||
|
||||
#_______paramfinder_param = {}
|
||||
#_______paramfinder_data = {}
|
||||
|
||||
with open(input_file, 'rb') as alsbytes:
|
||||
if alsbytes.read(2) == b'\x1f\x8b':
|
||||
alsbytes.seek(0)
|
||||
xmlstring = gzip.decompress(alsbytes.read())
|
||||
else:
|
||||
alsbytes.seek(0)
|
||||
xmlstring = alsbytes.read().decode()
|
||||
|
||||
root = ET.fromstring(xmlstring)
|
||||
|
||||
abletondatadef_params = ableton_values.devicesparam()
|
||||
abletondatadef_data = ableton_values.devicesdata()
|
||||
|
||||
abletonversion = root.get('MinorVersion').split('.')[0]
|
||||
if abletonversion != '11':
|
||||
print('[error] Ableton version '+abletonversion+' is not supported.')
|
||||
exit()
|
||||
|
||||
cvpj_l = {}
|
||||
|
||||
x_LiveSet = root.findall('LiveSet')[0]
|
||||
x_Tracks = x_LiveSet.findall('Tracks')[0]
|
||||
x_MasterTrack = x_LiveSet.findall('MasterTrack')[0]
|
||||
x_MasterTrack_DeviceChain = x_MasterTrack.findall('DeviceChain')[0]
|
||||
x_MasterTrack_Mixer = x_MasterTrack_DeviceChain.findall('Mixer')[0]
|
||||
x_MasterTrack_DeviceChain_inside = x_MasterTrack_DeviceChain.findall('DeviceChain')[0]
|
||||
x_MasterTrack_trackdevices = x_MasterTrack_DeviceChain_inside.findall('Devices')[0]
|
||||
do_devices(x_MasterTrack_trackdevices, None, ['master'])
|
||||
|
||||
|
||||
x_mastertrack_Name = x_MasterTrack.findall('Name')[0]
|
||||
mastertrack_name = get_value(x_mastertrack_Name, 'EffectiveName', '')
|
||||
mastertrack_color = colorlist_one[int(get_value(x_MasterTrack, 'Color', 'test'))]
|
||||
x_mastertrack_DeviceChain = x_MasterTrack.findall('DeviceChain')[0]
|
||||
x_mastertrack_Mixer = x_mastertrack_DeviceChain.findall('Mixer')[0]
|
||||
mas_track_vol = get_param(x_mastertrack_Mixer, 'Volume', 'float', 0, ['master', 'vol'], None)
|
||||
mas_track_pan = get_param(x_mastertrack_Mixer, 'Pan', 'float', 0, ['master', 'pan'], None)
|
||||
tempo = get_param(x_mastertrack_Mixer, 'Tempo', 'float', 140, ['main', 'bpm'], None)
|
||||
tracks_master.create(cvpj_l, mas_track_vol)
|
||||
tracks_master.visual(cvpj_l, name=mastertrack_name, color=mastertrack_color)
|
||||
tracks_master.param_add(cvpj_l, 'pan', mas_track_pan, 'float')
|
||||
song.add_param(cvpj_l, 'bpm', tempo)
|
||||
|
||||
sendnum = 1
|
||||
returnid = 1
|
||||
|
||||
for x_track_data in list(x_Tracks):
|
||||
tracktype = x_track_data.tag
|
||||
|
||||
x_track_DeviceChain = x_track_data.findall('DeviceChain')[0]
|
||||
x_track_Mixer = x_track_DeviceChain.findall('Mixer')[0]
|
||||
|
||||
x_track_Name = x_track_data.findall('Name')[0]
|
||||
|
||||
fxloc = None
|
||||
|
||||
track_id = x_track_data.get('Id')
|
||||
track_name = get_value(x_track_Name, 'EffectiveName', '')
|
||||
track_color = colorlist_one[int(get_value(x_track_data, 'Color', ''))]
|
||||
|
||||
track_inside_group = int(get_value(x_track_data, 'TrackGroupId', '-1'))
|
||||
|
||||
track_sends = x_track_Mixer.findall('Sends')[0]
|
||||
track_sendholders = track_sends.findall('TrackSendHolder')
|
||||
|
||||
if tracktype == 'MidiTrack':
|
||||
fxloc = ['track', track_id]
|
||||
print('[input-ableton] MIDI: '+track_name+' ['+track_id+']')
|
||||
track_vol = get_param(x_track_Mixer, 'Volume', 'float', 0, ['track', track_id, 'vol'], None)
|
||||
track_pan = get_param(x_track_Mixer, 'Pan', 'float', 0, ['track', track_id, 'pan'], None)
|
||||
|
||||
tracks_r.track_create(cvpj_l, track_id, 'instrument')
|
||||
tracks_r.track_visual(cvpj_l, track_id, name=track_name, color=track_color)
|
||||
tracks_r.track_param_add(cvpj_l, track_id, 'vol', track_vol, 'float')
|
||||
tracks_r.track_param_add(cvpj_l, track_id, 'pan', track_pan, 'float')
|
||||
|
||||
if track_inside_group != -1:
|
||||
tracks_r.track_group(cvpj_l, track_id, 'group_'+str(track_inside_group))
|
||||
|
||||
x_track_MainSequencer = x_track_DeviceChain.findall('MainSequencer')[0]
|
||||
x_track_ClipTimeable = x_track_MainSequencer.findall('ClipTimeable')[0]
|
||||
x_track_ArrangerAutomation = x_track_ClipTimeable.findall('ArrangerAutomation')[0]
|
||||
x_track_Events = x_track_ArrangerAutomation.findall('Events')[0]
|
||||
x_track_MidiClips = x_track_Events.findall('MidiClip')
|
||||
for x_track_MidiClip in x_track_MidiClips:
|
||||
note_placement_pos = float(get_value(x_track_MidiClip, 'CurrentStart', 0))*4
|
||||
note_placement_dur = float(get_value(x_track_MidiClip, 'CurrentEnd', 0))*4 - note_placement_pos
|
||||
note_placement_name = get_value(x_track_MidiClip, 'Name', '')
|
||||
note_placement_color = colorlist_one[int(get_value(x_track_MidiClip, 'Color', 0))]
|
||||
note_placement_muted = ['false','true'].index(get_value(x_track_MidiClip, 'Disabled', 'false'))
|
||||
|
||||
cvpj_placement = {}
|
||||
cvpj_placement['position'] = note_placement_pos
|
||||
cvpj_placement['duration'] = note_placement_dur
|
||||
cvpj_placement['name'] = note_placement_name
|
||||
cvpj_placement['color'] = note_placement_color
|
||||
cvpj_placement['muted'] = note_placement_muted
|
||||
|
||||
x_track_MidiClip_loop = x_track_MidiClip.findall('Loop')[0]
|
||||
note_placement_loop_l_start = float(get_value(x_track_MidiClip_loop, 'LoopStart', 0))*4
|
||||
note_placement_loop_l_end = float(get_value(x_track_MidiClip_loop, 'LoopEnd', 1))*4
|
||||
note_placement_loop_start = float(get_value(x_track_MidiClip_loop, 'StartRelative', 0))*4
|
||||
note_placement_loop_on = ['false','true'].index(get_value(x_track_MidiClip_loop, 'LoopOn', 'false'))
|
||||
|
||||
if note_placement_loop_on == 1:
|
||||
cvpj_placement['cut'] = placement_data.cutloopdata(note_placement_loop_start, note_placement_loop_l_start, note_placement_loop_l_end)
|
||||
else:
|
||||
cvpj_placement['cut'] = {}
|
||||
cvpj_placement['cut']['type'] = 'cut'
|
||||
cvpj_placement['cut']['start'] = note_placement_loop_l_start
|
||||
cvpj_placement['cut']['end'] = note_placement_loop_l_end
|
||||
|
||||
cvpj_placement['notelist'] = []
|
||||
|
||||
x_track_MidiClip_Notes = x_track_MidiClip.findall('Notes')[0]
|
||||
x_track_MidiClip_KT = x_track_MidiClip_Notes.findall('KeyTracks')[0]
|
||||
|
||||
t_notes = {}
|
||||
|
||||
for x_track_MidiClip_KT_KT_s in x_track_MidiClip_KT.findall('KeyTrack'):
|
||||
t_ableton_note_key = int(get_value(x_track_MidiClip_KT_KT_s, 'MidiKey', 60))-60
|
||||
x_track_MidiClip_KT_KT_Notes = x_track_MidiClip_KT_KT_s.findall('Notes')[0]
|
||||
for x_track_MidiClip_MNE in x_track_MidiClip_KT_KT_Notes.findall('MidiNoteEvent'):
|
||||
t_note_data = {}
|
||||
t_note_data['key'] = t_ableton_note_key
|
||||
t_note_data['position'] = float(x_track_MidiClip_MNE.get('Time'))*4
|
||||
t_note_data['duration'] = float(x_track_MidiClip_MNE.get('Duration'))*4
|
||||
t_note_data['vol'] = float(x_track_MidiClip_MNE.get('Velocity'))/100
|
||||
t_note_data['off_vol'] = float(x_track_MidiClip_MNE.get('OffVelocity'))/100
|
||||
t_note_data['probability'] = float(x_track_MidiClip_MNE.get('Probability'))
|
||||
t_note_data['enabled'] = ['false','true'].index(x_track_MidiClip_MNE.get('IsEnabled'))
|
||||
note_id = int(x_track_MidiClip_MNE.get('NoteId'))
|
||||
t_notes[note_id] = t_note_data
|
||||
|
||||
x_track_MidiClip_NES = x_track_MidiClip_Notes.findall('PerNoteEventStore')[0]
|
||||
x_track_MidiClip_NES_EL = x_track_MidiClip_NES.findall('EventLists')[0]
|
||||
|
||||
for x_note_nevent in x_track_MidiClip_NES_EL.findall('PerNoteEventList'):
|
||||
auto_note_id = int(x_note_nevent.get('NoteId'))
|
||||
auto_note_cc = int(x_note_nevent.get('CC'))
|
||||
t_notes[auto_note_id]['notemod'] = {}
|
||||
t_notes[auto_note_id]['notemod']['auto'] = {}
|
||||
|
||||
if auto_note_cc == -2:
|
||||
t_notes[auto_note_id]['notemod']['auto']['pitch'] = []
|
||||
cvpj_noteauto_pitch = t_notes[auto_note_id]['notemod']['auto']['pitch']
|
||||
x_note_nevent_ev = x_note_nevent.findall('Events')[0]
|
||||
|
||||
for ableton_point in x_note_nevent_ev.findall('PerNoteEvent'):
|
||||
ap_pos = float(ableton_point.get('TimeOffset'))*4
|
||||
ap_val = float(ableton_point.get('Value'))/170
|
||||
cvpj_noteauto_pitch.append({'position': ap_pos, 'value': ap_val})
|
||||
|
||||
for t_note in t_notes:
|
||||
cvpj_placement['notelist'].append(t_notes[t_note])
|
||||
|
||||
tracks_r.add_pl(cvpj_l, track_id, 'notes', cvpj_placement)
|
||||
|
||||
if tracktype == 'AudioTrack':
|
||||
fxloc = ['track', track_id]
|
||||
print('[input-ableton] Audio: '+track_name+' ['+track_id+']')
|
||||
track_vol = get_param(x_track_Mixer, 'Volume', 'float', 0, ['track', track_id, 'vol'], None)
|
||||
track_pan = get_param(x_track_Mixer, 'Pan', 'float', 0, ['track', track_id, 'pan'], None)
|
||||
|
||||
tracks_r.track_create(cvpj_l, track_id, 'audio')
|
||||
tracks_r.track_visual(cvpj_l, track_id, name=track_name, color=track_color)
|
||||
tracks_r.track_param_add(cvpj_l, track_id, 'vol', track_vol, 'float')
|
||||
tracks_r.track_param_add(cvpj_l, track_id, 'pan', track_pan, 'float')
|
||||
|
||||
x_track_MainSequencer = x_track_DeviceChain.findall('MainSequencer')[0]
|
||||
x_track_Sample = x_track_MainSequencer.findall('Sample')[0]
|
||||
x_track_ArrangerAutomation = x_track_Sample.findall('ArrangerAutomation')[0]
|
||||
x_track_Events = x_track_ArrangerAutomation.findall('Events')[0]
|
||||
x_track_AudioClips = x_track_Events.findall('AudioClip')
|
||||
audiorate = 1
|
||||
for x_track_AudioClip in x_track_AudioClips:
|
||||
|
||||
t_CurrentStart = float(get_value(x_track_AudioClip, 'CurrentStart', 0))
|
||||
t_CurrentEnd = float(get_value(x_track_AudioClip, 'CurrentEnd', 0))
|
||||
|
||||
audio_placement_pos = t_CurrentStart*4
|
||||
audio_placement_dur = (t_CurrentEnd-t_CurrentStart)*4
|
||||
audio_placement_name = get_value(x_track_AudioClip, 'Name', '')
|
||||
audio_placement_color = colorlist_one[int(get_value(x_track_AudioClip, 'Color', 0))]
|
||||
audio_placement_muted = ['false','true'].index(get_value(x_track_AudioClip, 'Disabled', 'false'))
|
||||
audio_placement_vol = float(get_value(x_track_AudioClip, 'SampleVolume', 0))
|
||||
|
||||
audio_placement_warp_on = ['false','true'].index(get_value(x_track_AudioClip, 'IsWarped', 'false'))
|
||||
audio_placement_warp_mode = int(get_value(x_track_AudioClip, 'WarpMode', 0))
|
||||
|
||||
audio_sampleref = get_sampleref(x_track_AudioClip)
|
||||
audio_sampleref_steps = audio_sampleref['seconds']*8
|
||||
|
||||
cvpj_placement = {}
|
||||
cvpj_placement['position'] = audio_placement_pos
|
||||
cvpj_placement['duration'] = audio_placement_dur
|
||||
cvpj_placement['name'] = audio_placement_name
|
||||
cvpj_placement['color'] = audio_placement_color
|
||||
cvpj_placement['muted'] = audio_placement_muted
|
||||
cvpj_placement['vol'] = audio_placement_vol
|
||||
|
||||
cvpj_placement['file'] = audio_sampleref['file']
|
||||
aud_sampledata = audio.get_audiofile_info(audio_sampleref['file'])
|
||||
|
||||
x_track_AudioClip_loop = x_track_AudioClip.findall('Loop')[0]
|
||||
|
||||
t_LoopStart = float(get_value(x_track_AudioClip_loop, 'LoopStart', 0))
|
||||
t_LoopEnd = float(get_value(x_track_AudioClip_loop, 'LoopEnd', 0))
|
||||
t_StartRelative = float(get_value(x_track_AudioClip_loop, 'StartRelative', 0))
|
||||
|
||||
audio_placement_loop_l_start = t_LoopStart*4
|
||||
audio_placement_loop_l_end = t_LoopEnd*4
|
||||
audio_placement_loop_start = t_StartRelative*4
|
||||
audio_placement_loop_on = ['false','true'].index(get_value(x_track_AudioClip_loop, 'LoopOn', 'test'))
|
||||
|
||||
audio_placement_Fade = ['false','true'].index(get_value(x_track_AudioClip, 'Fade', 'false'))
|
||||
x_track_AudioClip_fades = x_track_AudioClip.findall('Fades')[0]
|
||||
|
||||
if audio_placement_Fade == 1:
|
||||
cvpj_placement['fade'] = {}
|
||||
cvpj_placement['fade']['in'] = {}
|
||||
cvpj_placement['fade']['in']['duration'] = float(get_value(x_track_AudioClip_fades, 'FadeInLength', 0))*8
|
||||
cvpj_placement['fade']['in']['skew'] = float(get_value(x_track_AudioClip_fades, 'FadeInCurveSkew', 0))
|
||||
cvpj_placement['fade']['in']['slope'] = float(get_value(x_track_AudioClip_fades, 'FadeInCurveSlope', 0))
|
||||
cvpj_placement['fade']['out'] = {}
|
||||
cvpj_placement['fade']['out']['duration'] = float(get_value(x_track_AudioClip_fades, 'FadeOutLength', 0))*8
|
||||
cvpj_placement['fade']['out']['skew'] = float(get_value(x_track_AudioClip_fades, 'FadeOutCurveSkew', 0))
|
||||
cvpj_placement['fade']['out']['slope'] = float(get_value(x_track_AudioClip_fades, 'FadeOutCurveSlope', 0))
|
||||
|
||||
cvpj_placement['audiomod'] = {}
|
||||
cvpj_audiomod = cvpj_placement['audiomod']
|
||||
|
||||
if audio_placement_warp_on == 1:
|
||||
cvpj_audiomod['stretch_method'] = 'warp'
|
||||
cvpj_audiomod['stretch_params'] = {}
|
||||
if audio_placement_warp_mode == 0:
|
||||
cvpj_audiomod['stretch_algorithm'] = 'beats'
|
||||
cvpj_audiomod['stretch_params']['TransientResolution'] = int(get_value(x_track_AudioClip, 'TransientResolution', 6))
|
||||
cvpj_audiomod['stretch_params']['TransientLoopMode'] = int(get_value(x_track_AudioClip, 'TransientLoopMode', 2))
|
||||
cvpj_audiomod['stretch_params']['TransientEnvelope'] = int(get_value(x_track_AudioClip, 'TransientEnvelope', 100))
|
||||
if audio_placement_warp_mode == 1:
|
||||
cvpj_audiomod['stretch_algorithm'] = 'ableton_tones'
|
||||
cvpj_audiomod['stretch_params']['GranularityTones'] = float(get_value(x_track_AudioClip, 'GranularityTones', 30))
|
||||
if audio_placement_warp_mode == 2:
|
||||
cvpj_audiomod['stretch_algorithm'] = 'ableton_texture'
|
||||
cvpj_audiomod['stretch_params']['GranularityTexture'] = float(get_value(x_track_AudioClip, 'GranularityTexture', 71.328125))
|
||||
cvpj_audiomod['stretch_params']['FluctuationTexture'] = float(get_value(x_track_AudioClip, 'FluctuationTexture', 27.34375))
|
||||
if audio_placement_warp_mode == 3:
|
||||
cvpj_audiomod['stretch_algorithm'] = 'resample'
|
||||
if audio_placement_warp_mode == 4:
|
||||
cvpj_audiomod['stretch_algorithm'] = 'ableton_complex'
|
||||
if audio_placement_warp_mode == 6:
|
||||
cvpj_audiomod['stretch_algorithm'] = 'stretch_complexpro'
|
||||
cvpj_audiomod['stretch_params']['ComplexProFormants'] = float(get_value(x_track_AudioClip, 'ComplexProFormants', 100))
|
||||
cvpj_audiomod['stretch_params']['ComplexProEnvelope'] = int(get_value(x_track_AudioClip, 'ComplexProEnvelope', 120))
|
||||
|
||||
x_track_AudioClip_WarpMarkers_bef = x_track_AudioClip.findall('WarpMarkers')[0]
|
||||
x_track_AudioClip_WarpMarkers = x_track_AudioClip_WarpMarkers_bef.findall('WarpMarker')
|
||||
t_warpmarkers = []
|
||||
for x_track_AudioClip_WarpMarker in x_track_AudioClip_WarpMarkers:
|
||||
t_warpmarker = {}
|
||||
t_warpmarker['pos'] = float(x_track_AudioClip_WarpMarker.get('BeatTime'))*4
|
||||
t_warpmarker['pos_real'] = float(x_track_AudioClip_WarpMarker.get('SecTime'))
|
||||
onedur = t_warpmarker['pos_real']/audio_sampleref['seconds']
|
||||
t_warpmarkers.append(t_warpmarker)
|
||||
|
||||
cvpj_audiomod['stretch_data'] = t_warpmarkers
|
||||
|
||||
else:
|
||||
cvpj_audiomod['stretch_method'] = None
|
||||
|
||||
audio_placement_PitchCoarse = float(get_value(x_track_AudioClip, 'PitchCoarse', 0))
|
||||
audio_placement_PitchFine = float(get_value(x_track_AudioClip, 'PitchFine', 0))
|
||||
cvpj_audiomod['pitch'] = audio_placement_PitchCoarse + audio_placement_PitchFine/100
|
||||
|
||||
#for value in ["CurrentStart", "CurrentEnd", "StartRelative", "LoopStart", "LoopEnd"]:
|
||||
# print(str(get_value(x_track_AudioClip, value, 0)).ljust(20), end=' ')
|
||||
#print()
|
||||
|
||||
if audio_placement_warp_on == False:
|
||||
if audio_placement_loop_on == 0:
|
||||
cvpj_placement['cut'] = {}
|
||||
cvpj_placement['cut']['type'] = 'cut'
|
||||
data_values.time_from_seconds(cvpj_placement['cut'], 'start', False, audio_placement_loop_l_start/4, 1)
|
||||
data_values.time_from_seconds(cvpj_placement['cut'], 'end', False, audio_placement_loop_l_end/4, 1)
|
||||
else:
|
||||
if audio_placement_loop_on == 0:
|
||||
cvpj_placement['cut'] = {}
|
||||
cvpj_placement['cut']['type'] = 'cut'
|
||||
data_values.time_from_seconds(cvpj_placement['cut'], 'start', True, audio_placement_loop_l_start/8, 1)
|
||||
data_values.time_from_seconds(cvpj_placement['cut'], 'end', True, audio_placement_loop_l_end/8, 1)
|
||||
else:
|
||||
cvpj_placement['cut'] = {}
|
||||
cvpj_placement['cut']['type'] = 'loop'
|
||||
data_values.time_from_steps(cvpj_placement['cut'], 'start', False, audio_placement_loop_start, 1)
|
||||
data_values.time_from_steps(cvpj_placement['cut'], 'loopstart', False, audio_placement_loop_l_start, 1)
|
||||
data_values.time_from_steps(cvpj_placement['cut'], 'loopend', False, audio_placement_loop_l_end, 1)
|
||||
|
||||
tracks_r.add_pl(cvpj_l, track_id, 'audio', cvpj_placement)
|
||||
|
||||
if tracktype == 'ReturnTrack':
|
||||
get_auto(x_track_data)
|
||||
cvpj_returntrackid = 'return_'+str(returnid)
|
||||
fxloc = ['return', None, cvpj_returntrackid]
|
||||
track_vol = get_param(x_track_Mixer, 'Volume', 'float', 0, ['return', cvpj_returntrackid, 'vol'], None)
|
||||
track_pan = get_param(x_track_Mixer, 'Pan', 'float', 0, ['return', cvpj_returntrackid, 'pan'], None)
|
||||
trackfx.return_add(cvpj_l, ['master'], cvpj_returntrackid)
|
||||
trackfx.return_visual(cvpj_l, ['master'], cvpj_returntrackid, name=track_name, color=track_color)
|
||||
trackfx.return_param_add(cvpj_l, ['master'], cvpj_returntrackid, 'vol', track_vol, 'float')
|
||||
trackfx.return_param_add(cvpj_l, ['master'], cvpj_returntrackid, 'pan', track_pan, 'float')
|
||||
returnid += 1
|
||||
|
||||
if tracktype == 'GroupTrack':
|
||||
get_auto(x_track_data)
|
||||
cvpj_grouptrackid = 'group_'+str(track_id)
|
||||
fxloc = ['group', cvpj_grouptrackid]
|
||||
track_vol = get_param(x_track_Mixer, 'Volume', 'float', 0, ['group', cvpj_grouptrackid, 'vol'], None)
|
||||
track_pan = get_param(x_track_Mixer, 'Pan', 'float', 0, ['group', cvpj_grouptrackid, 'pan'], None)
|
||||
|
||||
group_inside_group = None
|
||||
if track_inside_group != -1:
|
||||
group_inside_group = 'group_'+str(track_inside_group)
|
||||
|
||||
trackfx.group_add(cvpj_l, cvpj_grouptrackid, group_inside_group)
|
||||
trackfx.group_visual(cvpj_l, cvpj_grouptrackid, name=track_name, color=track_color)
|
||||
trackfx.group_param_add(cvpj_l, cvpj_grouptrackid, 'vol', track_vol, 'float')
|
||||
trackfx.group_param_add(cvpj_l, cvpj_grouptrackid, 'pan', track_pan, 'float')
|
||||
|
||||
sendcount = 1
|
||||
if fxloc != None:
|
||||
get_auto(x_track_data)
|
||||
for track_sendholder in track_sendholders:
|
||||
sendid = sendcount
|
||||
sendautoid = 'send_'+track_id+'_'+str(sendid)
|
||||
sendlevel = get_param(track_sendholder, 'Send', 'float', 0, ['send', sendautoid, 'amount'], None)
|
||||
if fxloc[0] == 'track': trackfx.send_add(cvpj_l, track_id, 'return_'+str(sendid), sendlevel, sendautoid)
|
||||
if fxloc[0] == 'group': trackfx.group_send_add(cvpj_l, cvpj_grouptrackid, 'return_'+str(sendid), sendlevel, sendautoid)
|
||||
sendcount += 1
|
||||
|
||||
x_track_DeviceChain_inside = x_track_DeviceChain.findall('DeviceChain')[0]
|
||||
x_trackdevices = x_track_DeviceChain_inside.findall('Devices')[0]
|
||||
do_devices(x_trackdevices, track_id, fxloc)
|
||||
|
||||
#for devicename in _______paramfinder_param:
|
||||
# print('"'+devicename+'":', _______paramfinder_param[devicename],',')
|
||||
|
||||
|
||||
get_auto(x_MasterTrack)
|
||||
auto_id.in_output(cvpj_l)
|
||||
|
||||
return json.dumps(cvpj_l)
|
||||
|
|
@ -8,10 +8,10 @@ from functions import note_data
|
|||
from functions import plugins
|
||||
from functions import notelist_data
|
||||
from functions import placement_data
|
||||
from functions import data_dataset
|
||||
from functions import data_values
|
||||
from functions import xtramath
|
||||
from functions import audio_wav
|
||||
from functions_plugin import synth_nonfree_values
|
||||
from functions_tracks import auto_data
|
||||
from functions_tracks import auto_nopl
|
||||
from functions_tracks import fxslot
|
||||
|
@ -40,19 +40,35 @@ amped_colors = {
|
|||
'cyan': [0.20, 0.80, 0.63]
|
||||
}
|
||||
|
||||
def reaper_color_to_cvpj_color(i_color, isreversed):
|
||||
bytecolors = struct.pack('i', i_color)
|
||||
if isreversed == True: return colors.rgb_int_to_rgb_float([bytecolors[0],bytecolors[1],bytecolors[2]])
|
||||
else: return colors.rgb_int_to_rgb_float([bytecolors[2],bytecolors[1],bytecolors[0]])
|
||||
def get_dev_auto(amped_autodata, devid, paramsdata):
|
||||
out = []
|
||||
if devid in amped_autodata:
|
||||
devauto = amped_autodata[devid]
|
||||
for param in paramsdata:
|
||||
if 'name' in param:
|
||||
if param['name'] in devauto:
|
||||
out.append([param['name'], devauto[param['name']]])
|
||||
return out
|
||||
|
||||
def eq_calc_q(band_type, q_val):
|
||||
if band_type in ['low_pass', 'high_pass']: q_val = xtramath.logpowmul(q_val, 2) if q_val != 0 else 1
|
||||
if band_type in ['peak']: q_val = xtramath.logpowmul(q_val, -1) if q_val != 0 else 1
|
||||
return q_val
|
||||
|
||||
def getsamplefile(filename):
|
||||
localpath = os.path.join(projpath, filename)
|
||||
if os.path.exists(filename): return filename
|
||||
else: return localpath
|
||||
|
||||
def do_idparams(paramsdata, pluginid):
|
||||
def do_idparams(paramsdata, device_plugindata, pluginname):
|
||||
for param in paramsdata:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, param['name'], param['value'], 'float', param['name'])
|
||||
paramname = param['name'].replace('/', '__')
|
||||
device_plugindata.param_add_dset(paramname, param['value'], dataset, 'plugin', pluginname)
|
||||
|
||||
def do_idauto(amped_autodata, devid, amped_auto, pluginid):
|
||||
for s_amped_auto in get_dev_auto(amped_autodata, devid, amped_auto):
|
||||
autopoints = auto_nopl.to_pl(s_amped_auto[1])
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin',pluginid,s_amped_auto[0].replace('/', '__')], autopoints)
|
||||
|
||||
def get_contentGuid(contentGuid):
|
||||
if isinstance(contentGuid, dict):
|
||||
|
@ -60,23 +76,23 @@ def get_contentGuid(contentGuid):
|
|||
else:
|
||||
return contentGuid
|
||||
|
||||
def encode_devices(amped_tr_devices, trackid):
|
||||
def encode_devices(amped_tr_devices, trackid, amped_autodata):
|
||||
for amped_tr_device in amped_tr_devices:
|
||||
pluginid = str(amped_tr_device['id'])
|
||||
devid = amped_tr_device['id']
|
||||
pluginid = str(devid)
|
||||
devicetype = [amped_tr_device['className'], amped_tr_device['label']]
|
||||
|
||||
is_instrument = False
|
||||
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, devicetype[1], None)
|
||||
|
||||
if devicetype[0] == 'WAM' and devicetype[1] in ['Augur', 'OBXD', 'Dexed']:
|
||||
is_instrument = True
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-amped', devicetype[1])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'data', amped_tr_device['wamPreset'])
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'native-amped', devicetype[1])
|
||||
device_plugindata.dataval_add('data', amped_tr_device['wamPreset'])
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif devicetype[0] == 'WAM' and devicetype[1] == 'Europa':
|
||||
is_instrument = True
|
||||
plugins.add_plug(cvpj_l, pluginid, 'synth-nonfree', 'Europa')
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'synth-nonfree', 'Europa')
|
||||
wampreset = amped_tr_device['wamPreset']
|
||||
wampreset = json.loads(wampreset)
|
||||
europa_xml = ET.fromstring(wampreset['settings'])
|
||||
|
@ -91,24 +107,30 @@ def encode_devices(amped_tr_devices, trackid):
|
|||
value_type = objsub.get('type')
|
||||
value_value = float(objsub.text) if value_type == 'number' else objsub.text
|
||||
|
||||
cvpj_val_type_name = europa_vals[value_name]
|
||||
if cvpj_val_type_name[0] == 'number':
|
||||
plugins.add_plug_param(cvpj_l, pluginid, cvpj_val_type_name[1], float(value_value), 'float', value_name)
|
||||
if value_type == 'number':
|
||||
device_plugindata.param_add_dset(value_name, value_value, dataset_synth_nonfree, 'plugin', 'europa')
|
||||
else:
|
||||
if value_name in ['Curve1','Curve2','Curve3','Curve4','Curve']:
|
||||
value_value = list(bytes.fromhex(value_value))
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, cvpj_val_type_name[1], value_value)
|
||||
device_plugindata.dataval_add(value_name, value_value)
|
||||
|
||||
if 'encodedSampleData' in wampreset:
|
||||
europa_sampledata = wampreset['encodedSampleData']
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'encodedSampleData', europa_sampledata)
|
||||
device_plugindata.dataval_add('encodedSampleData', europa_sampledata)
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif devicetype[0] == 'WAM' and devicetype[1] in ['Amp Sim Utility']:
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'native-amped', devicetype[1])
|
||||
device_plugindata.dataval_add('data', amped_tr_device['wamPreset'])
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif devicetype == ['Drumpler', 'Drumpler']:
|
||||
is_instrument = True
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-amped', 'Drumpler')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'kit', amped_tr_device['kit'])
|
||||
do_idparams(amped_tr_device['params'], pluginid)
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'native-amped', 'Drumpler')
|
||||
device_plugindata.dataval_add('kit', amped_tr_device['kit'])
|
||||
do_idparams(amped_tr_device['params'], device_plugindata, devicetype[0])
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif devicetype == ['SF2', 'GM Player']:
|
||||
is_instrument = True
|
||||
|
@ -120,25 +142,32 @@ def encode_devices(amped_tr_devices, trackid):
|
|||
if paramname == 'patch': value_patch = paramval
|
||||
if paramname == 'bank': value_bank = paramval
|
||||
if paramname == 'gain': value_gain = paramval
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, value_bank, value_patch)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'gain', paramval, 'float', 'Gain')
|
||||
device_plugindata = plugins.cvpj_plugin('midi', value_bank, value_patch)
|
||||
device_plugindata.param_add('gain', paramval, 'float', 'Gain')
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif devicetype == ['Granny', 'Granny']:
|
||||
is_instrument = True
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-amped', 'Granny')
|
||||
do_idparams(amped_tr_device['params'], pluginid)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'grannySampleGuid', amped_tr_device['grannySampleGuid'])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'grannySampleName', amped_tr_device['grannySampleName'])
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'native-amped', 'Granny')
|
||||
do_idparams(amped_tr_device['params'], device_plugindata, devicetype[0])
|
||||
device_plugindata.dataval_add('grannySampleGuid', amped_tr_device['grannySampleGuid'])
|
||||
device_plugindata.dataval_add('grannySampleName', amped_tr_device['grannySampleName'])
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
do_idauto(amped_autodata, devid, amped_tr_device['params'], pluginid)
|
||||
|
||||
elif devicetype == ['Volt', 'VOLT']:
|
||||
is_instrument = True
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-amped', 'VOLT')
|
||||
do_idparams(amped_tr_device['params'], pluginid)
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'native-amped', 'Volt')
|
||||
do_idparams(amped_tr_device['params'], device_plugindata, devicetype[0])
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
do_idauto(amped_autodata, devid, amped_tr_device['params'], pluginid)
|
||||
|
||||
elif devicetype == ['VoltMini', 'VOLT Mini']:
|
||||
is_instrument = True
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-amped', 'VoltMini')
|
||||
do_idparams(amped_tr_device['params'], pluginid)
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'native-amped', 'VoltMini')
|
||||
do_idparams(amped_tr_device['params'], device_plugindata, devicetype[0])
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
do_idauto(amped_autodata, devid, amped_tr_device['params'], pluginid)
|
||||
|
||||
elif devicetype == ['Sampler', 'Sampler']:
|
||||
is_instrument = True
|
||||
|
@ -150,8 +179,8 @@ def encode_devices(amped_tr_devices, trackid):
|
|||
for param in amped_tr_device['samplerZones']:
|
||||
amped_tr_device['zonefile'][str(param['id'])] = param['contentGuid']
|
||||
|
||||
plugins.add_plug_multisampler(cvpj_l, pluginid)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "percent")
|
||||
device_plugindata = plugins.cvpj_plugin('multisampler', None, None)
|
||||
device_plugindata.dataval_add('point_value_type', "percent")
|
||||
|
||||
samplerdata_voiceLimit = samplerdata['voiceLimit']
|
||||
samplerdata_filter = samplerdata['filter']
|
||||
|
@ -169,15 +198,22 @@ def encode_devices(amped_tr_devices, trackid):
|
|||
cvpj_region['loop']['points'] = [amped_samp_part['looping']['startPositionNorm'], amped_samp_part['looping']['endPositionNorm']]
|
||||
cvpj_region['middlenote'] = amped_samp_part['key']['root']-60
|
||||
cvpj_region['r_key'] = [int(amped_samp_part['key']['min'])-60, int(amped_samp_part['key']['max'])-60]
|
||||
plugins.add_plug_multisampler_region(cvpj_l, pluginid, cvpj_region)
|
||||
device_plugindata.region_add(cvpj_region)
|
||||
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif devicetype == ['EqualizerPro', 'Equalizer']:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'eq-bands')
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, not amped_tr_device['bypass'], 1)
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'eq-bands')
|
||||
device_plugindata.fxdata_add(not amped_tr_device['bypass'], 1)
|
||||
|
||||
eqdata = {}
|
||||
for param in amped_tr_device['params']:
|
||||
data_values.nested_dict_add_value(eqdata, param['name'].split('/'), param['value'])
|
||||
|
||||
eqauto = get_dev_auto(amped_autodata, devid, amped_tr_device['params'])
|
||||
|
||||
bandtypeauto = {}
|
||||
|
||||
for bandnum in eqdata['filter']:
|
||||
banddata = eqdata['filter'][bandnum]
|
||||
bandtype = banddata['type']
|
||||
|
@ -188,34 +224,51 @@ def encode_devices(amped_tr_devices, trackid):
|
|||
if bandtype == 1: eq_bandtype = 'high_pass'
|
||||
if bandtype == 3: eq_bandtype = 'low_shelf'
|
||||
if bandtype == 4: eq_bandtype = 'high_shelf'
|
||||
if eq_bandtype in ['low_pass', 'high_pass']:
|
||||
band_res = xtramath.logpowmul(band_res, 2) if band_res != 0 else 1
|
||||
if eq_bandtype in ['peak']:
|
||||
band_res = xtramath.logpowmul(band_res, -1) if band_res != 0 else 1
|
||||
bandtypeauto[bandnum] = eq_bandtype
|
||||
band_res = eq_calc_q(eq_bandtype, band_res)
|
||||
device_plugindata.eqband_add(int(banddata['active']), banddata['freq'], banddata['gain'], eq_bandtype, band_res, None)
|
||||
|
||||
plugins.add_eqband(cvpj_l, pluginid, int(banddata['active']), banddata['freq'], banddata['gain'], eq_bandtype, band_res, None)
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'gain_out', eqdata['postGain'], 'float', 'Out Gain')
|
||||
for s_amped_auto in eqauto:
|
||||
autoname = s_amped_auto[0].split('/')
|
||||
if autoname[0] == 'filter':
|
||||
autoname_out = None
|
||||
if autoname[2] == 'active': autoname_out = autoname[1]+'_on'
|
||||
if autoname[2] == 'freq': autoname_out = autoname[1]+'_freq'
|
||||
if autoname[2] == 'gain': autoname_out = autoname[1]+'_gain'
|
||||
if autoname[2] == 'q':
|
||||
autoname_out = autoname[1]+'_res'
|
||||
for autopoint in s_amped_auto[1]:
|
||||
bandtype = bandtypeauto[autoname[1]]
|
||||
autopoint['value'] = eq_calc_q(bandtype, autopoint['value'])
|
||||
if autoname_out != None: auto_data.add_pl(cvpj_l, 'float', ['plugin_eq',pluginid,autoname_out], auto_nopl.to_pl(s_amped_auto[1]))
|
||||
|
||||
elif autoname[0] == 'postGain':
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin_eq',pluginid,'gain_out'], auto_nopl.to_pl(s_amped_auto[1]))
|
||||
|
||||
device_plugindata.param_add('gain_out', eqdata['postGain'], 'float', 'Out Gain')
|
||||
|
||||
elif devicetype[0] in ['Compressor', 'Expander']:
|
||||
if devicetype[0] == 'Compressor': plugins.add_plug(cvpj_l, pluginid, 'universal', 'compressor')
|
||||
if devicetype[0] == 'Expander': plugins.add_plug(cvpj_l, pluginid, 'universal', 'expander')
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, not amped_tr_device['bypass'], 1)
|
||||
for param in amped_tr_device['params']:
|
||||
if devicetype[0] == 'Compressor': device_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'compressor')
|
||||
if devicetype[0] == 'Expander': device_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'expander')
|
||||
device_plugindata.fxdata_add(not amped_tr_device['bypass'], 1)
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
for param in amped_tr_device['params']:
|
||||
paramname = param['name']
|
||||
paramvalue = param['value']
|
||||
if paramname == 'preGainDB': plugins.add_plug_param(cvpj_l, pluginid, 'pregain', paramvalue, 'float', 'pregain')
|
||||
if paramname == 'ratio': plugins.add_plug_param(cvpj_l, pluginid, 'ratio', paramvalue, 'float', 'ratio')
|
||||
if paramname == 'thresholdDB': plugins.add_plug_param(cvpj_l, pluginid, 'threshold', paramvalue, 'float', 'threshold')
|
||||
if paramname == 'attackTimeMS': plugins.add_plug_param(cvpj_l, pluginid, 'attack', paramvalue/1000, 'float', 'attack')
|
||||
if paramname == 'releaseTimeMS': plugins.add_plug_param(cvpj_l, pluginid, 'release', paramvalue/1000, 'float', 'release')
|
||||
if paramname == 'postGainDB': plugins.add_plug_param(cvpj_l, pluginid, 'postgain', paramvalue, 'float', 'postgain')
|
||||
if paramname == 'lookaheadTimeMS': plugins.add_plug_param(cvpj_l, pluginid, 'lookahead', paramvalue/1000, 'float', 'lookahead')
|
||||
if paramname == 'softKneeWidth': plugins.add_plug_param(cvpj_l, pluginid, 'knee', paramvalue*6, 'float', 'knee')
|
||||
if paramname == 'preGainDB': device_plugindata.param_add('pregain', paramvalue, 'float', 'pregain')
|
||||
if paramname == 'ratio': device_plugindata.param_add('ratio', paramvalue, 'float', 'ratio')
|
||||
if paramname == 'thresholdDB': device_plugindata.param_add('threshold', paramvalue, 'float', 'threshold')
|
||||
if paramname == 'attackTimeMS': device_plugindata.param_add('attack', paramvalue/1000, 'float', 'attack')
|
||||
if paramname == 'releaseTimeMS': device_plugindata.param_add('release', paramvalue/1000, 'float', 'release')
|
||||
if paramname == 'postGainDB': device_plugindata.param_add('postgain', paramvalue, 'float', 'postgain')
|
||||
if paramname == 'lookaheadTimeMS': device_plugindata.param_add('lookahead', paramvalue/1000, 'float', 'lookahead')
|
||||
if paramname == 'softKneeWidth': device_plugindata.param_add('knee', paramvalue*6, 'float', 'knee')
|
||||
|
||||
if paramname == 'detectMode': plugins.add_plug_data(cvpj_l, pluginid, 'detect_mode', ('rms' if paramvalue == 1 else 'peak') )
|
||||
if paramname == 'circuitMode': plugins.add_plug_data(cvpj_l, pluginid, 'circuit_mode', ('digital' if paramvalue == 1 else 'analog') )
|
||||
if paramname == 'detectMode': device_plugindata.dataval_add('detect_mode', ('rms' if paramvalue == 1 else 'peak') )
|
||||
if paramname == 'circuitMode': device_plugindata.dataval_add('circuit_mode', ('digital' if paramvalue == 1 else 'analog') )
|
||||
|
||||
filter_enabled = False
|
||||
filter_cutoff = 44100
|
||||
|
@ -223,7 +276,7 @@ def encode_devices(amped_tr_devices, trackid):
|
|||
filter_type = 'lowpass'
|
||||
filter_subtype = None
|
||||
|
||||
if paramname == 'filterGainDB': plugins.add_plug_data(cvpj_l, pluginid, 'filter_gain', paramvalue)
|
||||
if paramname == 'filterGainDB': device_plugindata.dataval_add('filter_gain', paramvalue)
|
||||
|
||||
if paramname == 'filterFrequency': filter_cutoff = paramvalue
|
||||
if paramname == 'filterQ': filter_reso = paramvalue
|
||||
|
@ -234,52 +287,100 @@ def encode_devices(amped_tr_devices, trackid):
|
|||
if paramvalue == 1: filter_type = 'highpass'
|
||||
if paramvalue == 2: filter_type = 'bandpass'
|
||||
|
||||
plugins.add_filter(cvpj_l, pluginid, filter_enabled, filter_cutoff, filter_reso, filter_type, filter_subtype)
|
||||
device_plugindata.filter_add(filter_enabled, filter_cutoff, filter_reso, filter_type, filter_subtype)
|
||||
|
||||
for s_amped_auto in get_dev_auto(amped_autodata, devid, amped_tr_device['params']):
|
||||
autoname = s_amped_auto[0]
|
||||
if s_amped_auto[0] == 'preGainDB': autoname = 'pregain'
|
||||
if s_amped_auto[0] == 'ratio': autoname = 'ratio'
|
||||
if s_amped_auto[0] == 'thresholdDB': autoname = 'threshold'
|
||||
if s_amped_auto[0] == 'attackTimeMS': autoname = 'attack'
|
||||
if s_amped_auto[0] == 'releaseTimeMS': autoname = 'release'
|
||||
if s_amped_auto[0] == 'postGainDB': autoname = 'postgain'
|
||||
if s_amped_auto[0] == 'lookaheadTimeMS': autoname = 'lookahead'
|
||||
if s_amped_auto[0] == 'softKneeWidth': autoname = 'knee'
|
||||
|
||||
if 'MS' in s_amped_auto[0]:
|
||||
for autopoint in s_amped_auto[1]: autopoint['value'] = autopoint['value']/1000
|
||||
|
||||
if 'softKneeWidth' in s_amped_auto[0]:
|
||||
for autopoint in s_amped_auto[1]: autopoint['value'] = autopoint['value']*6
|
||||
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin',pluginid,autoname], auto_nopl.to_pl(s_amped_auto[1]))
|
||||
|
||||
elif devicetype[0] == 'Vibrato':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'vibrato')
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, not amped_tr_device['bypass'], 1)
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'vibrato')
|
||||
device_plugindata.fxdata_add(not amped_tr_device['bypass'], 1)
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
for param in amped_tr_device['params']:
|
||||
paramname = param['name']
|
||||
paramvalue = param['value']
|
||||
if paramname == 'delayLfoRateHz': plugins.add_plug_param(cvpj_l, pluginid, 'freq', paramvalue, 'float', 'freq')
|
||||
if paramname == 'delayLfoDepth': plugins.add_plug_param(cvpj_l, pluginid, 'depth', paramvalue, 'float', 'depth')
|
||||
if paramname == 'delayLfoRateHz': device_plugindata.param_add('freq', paramvalue, 'float', 'freq')
|
||||
if paramname == 'delayLfoDepth': device_plugindata.param_add('depth', paramvalue, 'float', 'depth')
|
||||
|
||||
for s_amped_auto in get_dev_auto(amped_autodata, devid, amped_tr_device['params']):
|
||||
autoname = s_amped_auto[0]
|
||||
if s_amped_auto[0] == 'delayLfoRateHz': autoname = 'freq'
|
||||
if s_amped_auto[0] == 'delayLfoDepth': autoname = 'depth'
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin',pluginid,autoname], auto_nopl.to_pl(s_amped_auto[1]))
|
||||
|
||||
elif devicetype[0] == 'Tremolo':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'tremolo')
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, not amped_tr_device['bypass'], 1)
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'tremolo')
|
||||
device_plugindata.fxdata_add(not amped_tr_device['bypass'], 1)
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
for param in amped_tr_device['params']:
|
||||
paramname = param['name']
|
||||
paramvalue = param['value']
|
||||
if paramname == 'lfoARateHz': plugins.add_plug_param(cvpj_l, pluginid, 'freq', paramvalue, 'float', 'freq')
|
||||
if paramname == 'lfoADepth': plugins.add_plug_param(cvpj_l, pluginid, 'depth', paramvalue, 'float', 'depth')
|
||||
if paramname == 'lfoARateHz': device_plugindata.param_add('freq', paramvalue, 'float', 'freq')
|
||||
if paramname == 'lfoADepth': device_plugindata.param_add('depth', paramvalue, 'float', 'depth')
|
||||
|
||||
for s_amped_auto in get_dev_auto(amped_autodata, devid, amped_tr_device['params']):
|
||||
autoname = s_amped_auto[0]
|
||||
if s_amped_auto[0] == 'lfoARateHz': autoname = 'freq'
|
||||
if s_amped_auto[0] == 'lfoADepth': autoname = 'depth'
|
||||
auto_data.add_pl(cvpj_l, 'float', ['plugin',pluginid,autoname], auto_nopl.to_pl(s_amped_auto[1]))
|
||||
|
||||
elif devicetype[0] == 'BitCrusher':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'bitcrush')
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'bitcrush')
|
||||
fx_wet = 1
|
||||
for param in amped_tr_device['params']:
|
||||
paramname = param['name']
|
||||
paramvalue = param['value']
|
||||
if paramname == 'bits': plugins.add_plug_param(cvpj_l, pluginid, 'bits', paramvalue, 'float', 'freq')
|
||||
if paramname == 'down':
|
||||
bits_hz = 100 * 2**(paramvalue*10)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'freq', bits_hz, 'float', 'depth')
|
||||
if paramname == 'bits': device_plugindata.param_add('bits', paramvalue, 'float', 'freq')
|
||||
if paramname == 'down': device_plugindata.param_add('freq', 100*(2**(paramvalue*10)), 'float', 'depth')
|
||||
if paramname == 'mix': fx_wet = paramvalue
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, not amped_tr_device['bypass'], fx_wet)
|
||||
device_plugindata.fxdata_add(not amped_tr_device['bypass'], fx_wet)
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
for s_amped_auto in get_dev_auto(amped_autodata, devid, amped_tr_device['params']):
|
||||
autoloc = ['plugin',pluginid,s_amped_auto[0]]
|
||||
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', autoloc, auto_nopl.to_pl(s_amped_auto[1]))
|
||||
|
||||
|
||||
elif devicetype[0] in ['Chorus',
|
||||
'CompressorMini', 'Delay', 'Distortion', 'Equalizer',
|
||||
'Flanger', 'Gate', 'Limiter', 'LimiterMini', 'Phaser',
|
||||
'Reverb', 'Tremolo']:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-amped', devicetype[0])
|
||||
do_idparams(amped_tr_device['params'], pluginid)
|
||||
device_plugindata = plugins.cvpj_plugin('deftype', 'native-amped', devicetype[0])
|
||||
do_idparams(amped_tr_device['params'], device_plugindata, devicetype[0])
|
||||
device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
do_idauto(amped_autodata, devid, amped_tr_device['params'], pluginid)
|
||||
|
||||
if is_instrument == True: tracks_r.track_inst_pluginid(cvpj_l, trackid, pluginid)
|
||||
else:
|
||||
if trackid == None: fxslot.insert(cvpj_l, ['master'], 'audio', pluginid)
|
||||
else: fxslot.insert(cvpj_l, ['track', trackid], 'audio', pluginid)
|
||||
|
||||
#if devicetype != ['VSTConnection', 'VST/Remote Beta']:
|
||||
# device_plugindata.fxvisual_add(devicetype[1], None)
|
||||
# device_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
# if is_instrument == True: tracks_r.track_inst_pluginid(cvpj_l, trackid, pluginid)
|
||||
# else:
|
||||
# if trackid == None: fxslot.insert(cvpj_l, ['master'], 'audio', pluginid)
|
||||
# else: fxslot.insert(cvpj_l, ['track', trackid], 'audio', pluginid)
|
||||
|
||||
def ampedauto_to_cvpjauto(autopoints):
|
||||
ampedauto = []
|
||||
|
@ -314,8 +415,11 @@ class input_amped(plugin_input.base):
|
|||
global samplefolder
|
||||
global amped_filenames
|
||||
global europa_vals
|
||||
global dataset
|
||||
global dataset_synth_nonfree
|
||||
|
||||
europa_vals = synth_nonfree_values.europa_valnames()
|
||||
dataset = data_dataset.dataset('./data_dset/amped.dset')
|
||||
dataset_synth_nonfree = data_dataset.dataset('./data_dset/synth_nonfree.dset')
|
||||
|
||||
cvpj_l = {}
|
||||
samplefolder = extra_param['samplefolder']
|
||||
|
@ -365,7 +469,17 @@ class input_amped(plugin_input.base):
|
|||
tracks_r.track_param_add(cvpj_l, amped_tr_id, 'pan', amped_tr_pan, 'float')
|
||||
tracks_r.track_param_add(cvpj_l, amped_tr_id, 'enabled', int(not amped_tr_mute), 'bool')
|
||||
tracks_r.track_param_add(cvpj_l, amped_tr_id, 'solo', int(amped_tr_solo), 'bool')
|
||||
encode_devices(amped_tr_devices, amped_tr_id)
|
||||
|
||||
amped_autodata = {}
|
||||
for amped_tr_automation in amped_tr_automations:
|
||||
if 'param' in amped_tr_automation:
|
||||
amped_tr_autoparam = amped_tr_automation['param']
|
||||
devid = amped_tr_autoparam['deviceId']
|
||||
autoname = amped_tr_autoparam['name']
|
||||
if devid not in amped_autodata: amped_autodata[devid] = {}
|
||||
amped_autodata[devid][autoname] = ampedauto_to_cvpjauto(amped_tr_automation['points'])
|
||||
|
||||
encode_devices(amped_tr_devices, amped_tr_id, amped_autodata)
|
||||
for amped_reg in amped_tr_regions:
|
||||
amped_reg_position = amped_reg['position']*4
|
||||
amped_reg_length = amped_reg['length']*4
|
||||
|
|
|
@ -2,17 +2,18 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import note_data
|
||||
from functions import song
|
||||
from functions import plugins
|
||||
from functions import placement_data
|
||||
import xml.etree.ElementTree as ET
|
||||
import plugin_input
|
||||
import json
|
||||
import zipfile
|
||||
from functions_tracks import tracks_r
|
||||
from functions_tracks import tracks_master
|
||||
from functions_tracks import trackfx
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions import data_dataset
|
||||
from functions_tracks import fxslot
|
||||
from functions_tracks import trackfx
|
||||
from functions_tracks import tracks_master
|
||||
from functions_tracks import tracks_r
|
||||
import json
|
||||
import plugin_input
|
||||
import xml.etree.ElementTree as ET
|
||||
import zipfile
|
||||
|
||||
as_pattern_color = {
|
||||
0: [0.07, 0.64, 0.86],
|
||||
|
@ -53,54 +54,61 @@ def make_fxslot(x_device_sound, fx_type, as_device):
|
|||
|
||||
fx_wet = 1
|
||||
if fx_type == 'chorus':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-audiosauna', 'chorus')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "speed", float(getvalue(x_device_sound, 'chorusSpeed', 0))/100, 'float', "Speed")
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-audiosauna', 'chorus')
|
||||
fx_plugindata.param_add("speed", float(getvalue(x_device_sound, 'chorusSpeed', 0))/100, 'float', "Speed")
|
||||
|
||||
if as_device in [0,1]:
|
||||
fx_wet = float(getvalue(x_device_sound, 'chorusMix', 0))/100
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "size", float(getvalue(x_device_sound, 'chorusLevel', 0))/100, 'float', "Size")
|
||||
fx_plugindata.param_add("size", float(getvalue(x_device_sound, 'chorusLevel', 0))/100, 'float', "Size")
|
||||
else:
|
||||
fx_wet = float(getvalue(x_device_sound, 'chorusDryWet', 0))/100
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "size", float(getvalue(x_device_sound, 'chorusSize', 0))/100, 'float', "Size")
|
||||
fx_plugindata.param_add("size", float(getvalue(x_device_sound, 'chorusSize', 0))/100, 'float', "Size")
|
||||
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, True, fx_wet)
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Chorus', None)
|
||||
fx_plugindata.fxdata_add(True, fx_wet)
|
||||
fx_plugindata.fxvisual_add('Chorus', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if fx_type == 'distortion':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-audiosauna', 'distortion')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "overdrive", float(getvalue(x_device_sound, 'overdrive', 0))/100, 'float', "Overdrive")
|
||||
if as_device in [0,1]: plugins.add_plug_param(cvpj_l, pluginid, "modulate", float(getvalue(x_device_sound, 'driveModul', 0))/100, 'float', "Modulate")
|
||||
else: plugins.add_plug_param(cvpj_l, pluginid, "modulate", float(getvalue(x_device_sound, 'modulate', 0))/100, 'float', "Modulate")
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Distortion', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-audiosauna', 'distortion')
|
||||
fx_plugindata.param_add("overdrive", float(getvalue(x_device_sound, 'overdrive', 0))/100, 'float', "Overdrive")
|
||||
if as_device in [0,1]: fx_plugindata.param_add("modulate", float(getvalue(x_device_sound, 'driveModul', 0))/100, 'float', "Modulate")
|
||||
else: fx_plugindata.param_add("modulate", float(getvalue(x_device_sound, 'modulate', 0))/100, 'float', "Modulate")
|
||||
fx_plugindata.fxvisual_add('Distortion', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if fx_type == 'bitcrush':
|
||||
bitrateval = float(getvalue(x_device_sound, 'bitrate', 0))
|
||||
if bitrateval != 0.0:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-audiosauna', 'bitcrush')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "frames", bitrateval, 'float', "Frames")
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Bitcrush', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-audiosauna', 'bitcrush')
|
||||
fx_plugindata.param_add("frames", bitrateval, 'float', "Frames")
|
||||
fx_plugindata.fxvisual_add('Bitcrush', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if fx_type == 'tape_delay':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-audiosauna', 'tape_delay')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "time", float(getvalue(x_device_sound, 'dlyTime', 0)), 'float', "Time")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "damage", float(getvalue(x_device_sound, 'dlyDamage', 0))/100, 'float', "Damage")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "feedback", float(getvalue(x_device_sound, 'dlyFeed', 0))/100, 'float', "Feedback")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "sync", getbool(getvalue(x_device_sound, 'dlySync', 0)), 'float', "Sync")
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Tape Delay', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-audiosauna', 'tape_delay')
|
||||
fx_plugindata.param_add("time", float(getvalue(x_device_sound, 'dlyTime', 0)), 'float', "Time")
|
||||
fx_plugindata.param_add("damage", float(getvalue(x_device_sound, 'dlyDamage', 0))/100, 'float', "Damage")
|
||||
fx_plugindata.param_add("feedback", float(getvalue(x_device_sound, 'dlyFeed', 0))/100, 'float', "Feedback")
|
||||
fx_plugindata.param_add("sync", getbool(getvalue(x_device_sound, 'dlySync', 0)), 'float', "Sync")
|
||||
fx_plugindata.fxvisual_add('Tape Delay', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if fx_type == 'reverb':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-audiosauna', 'reverb')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "time", float(getvalue(x_device_sound, 'rvbTime', 0)), 'float', "Time")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "feedback", float(getvalue(x_device_sound, 'rvbFeed', 0))/100, 'float', "Feedback")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "width", float(getvalue(x_device_sound, 'rvbWidth', 0))/100, 'float', "Width")
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Reverb', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-audiosauna', 'reverb')
|
||||
fx_plugindata.param_add("time", float(getvalue(x_device_sound, 'rvbTime', 0)), 'float', "Time")
|
||||
fx_plugindata.param_add("feedback", float(getvalue(x_device_sound, 'rvbFeed', 0))/100, 'float', "Feedback")
|
||||
fx_plugindata.param_add("width", float(getvalue(x_device_sound, 'rvbWidth', 0))/100, 'float', "Width")
|
||||
fx_plugindata.fxvisual_add('Reverb', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if fx_type == 'amp':
|
||||
ampval = float(getvalue(x_device_sound, 'masterAmp', 0))/100
|
||||
if ampval != 1.0:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-audiosauna', 'amp')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, "level", ampval, 'float', "Level")
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Amp', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-audiosauna', 'amp')
|
||||
fx_plugindata.param_add("level", ampval, 'float', "Level")
|
||||
fx_plugindata.fxvisual_add('Amp', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
|
||||
return pluginid
|
||||
|
||||
|
@ -125,6 +133,8 @@ class input_audiosanua(plugin_input.base):
|
|||
|
||||
cvpj_l = {}
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/audiosauna.dset')
|
||||
|
||||
songdataxml_filename = None
|
||||
|
||||
t_audiosanua_project = zip_data.read('songdata.xml')
|
||||
|
@ -223,19 +233,24 @@ class input_audiosanua(plugin_input.base):
|
|||
devicenum = 0
|
||||
for x_device in xt_devices:
|
||||
v_device_deviceType = int(x_device.get('deviceType'))
|
||||
v_device_visible = x_device.get('visible')
|
||||
v_device_xpos = int(x_device.get('xpos'))
|
||||
v_device_ypos = int(x_device.get('ypos'))
|
||||
|
||||
cvpj_trackid = 'audiosanua'+str(devicenum)
|
||||
|
||||
#cvpj_instdata = {}
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
song.add_visual_window(cvpj_l, 'plugin', pluginid, [v_device_xpos, v_device_ypos], None, getbool(v_device_visible), False)
|
||||
|
||||
if v_device_deviceType == 1 or v_device_deviceType == 0:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-audiosauna', audiosanua_device_id[v_device_deviceType])
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-audiosauna', audiosanua_device_id[v_device_deviceType])
|
||||
x_device_sound = x_device.findall('sound')[0]
|
||||
|
||||
for v_device_param in audiosanua_device_params[v_device_deviceType]:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, v_device_param, float(getvalue(x_device_sound, v_device_param, 0)), 'float', v_device_param)
|
||||
paramlist = dataset.params_list('plugin', str(v_device_deviceType))
|
||||
if paramlist:
|
||||
for paramid in paramlist:
|
||||
inst_plugindata.param_add_dset(paramid, getvalue(x_device_sound, paramid, 0), dataset, 'plugin', str(v_device_deviceType))
|
||||
|
||||
v_attack, v_decay, v_release, v_sustain = setasdr(
|
||||
float(getvalue(x_device_sound, 'attack', 0)),
|
||||
|
@ -244,7 +259,7 @@ class input_audiosanua(plugin_input.base):
|
|||
float(getvalue(x_device_sound, 'sustain', 0))
|
||||
)
|
||||
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'volume', 0, v_attack, 0, v_decay, v_sustain, v_release, 1)
|
||||
inst_plugindata.asdr_env_add('volume', 0, v_attack, 0, v_decay, v_sustain, v_release, 1)
|
||||
|
||||
if v_device_deviceType == 1: oprange = 2
|
||||
if v_device_deviceType == 0: oprange = 4
|
||||
|
@ -256,11 +271,11 @@ class input_audiosanua(plugin_input.base):
|
|||
float(getvalue(x_device_sound, 'dOp'+opnumtxt, 0)),
|
||||
-1,
|
||||
float(getvalue(x_device_sound, 'sOp'+opnumtxt, 0))/100 )
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'op'+opnumtxt, 0, op_attack, 0, op_decay, op_sustain, op_release, 1)
|
||||
|
||||
inst_plugindata.asdr_env_add('op'+opnumtxt, 0, op_attack, 0, op_decay, op_sustain, op_release, 1)
|
||||
|
||||
if v_device_deviceType == 2:
|
||||
plugins.add_plug_multisampler(cvpj_l, pluginid)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "percent")
|
||||
inst_plugindata = plugins.cvpj_plugin('multisampler', None, None)
|
||||
inst_plugindata.dataval_add('point_value_type', "percent")
|
||||
x_device_sound = x_device.findall('sampler')[0]
|
||||
|
||||
x_device_samples = x_device_sound.findall('samples')[0]
|
||||
|
@ -300,7 +315,7 @@ class input_audiosanua(plugin_input.base):
|
|||
cvpj_region['start'] = float(t_smpStart)/100
|
||||
cvpj_region['end'] = float(t_smpEnd)/100
|
||||
cvpj_region['trigger'] = 'normal'
|
||||
plugins.add_plug_multisampler_region(cvpj_l, pluginid, cvpj_region)
|
||||
inst_plugindata.region_add(cvpj_region)
|
||||
|
||||
v_attack, v_decay, v_release, v_sustain = setasdr(
|
||||
float(getvalue(x_device_sound, 'masterAttack', 0)),
|
||||
|
@ -309,8 +324,8 @@ class input_audiosanua(plugin_input.base):
|
|||
float(getvalue(x_device_sound, 'masterSustain', 0))
|
||||
)
|
||||
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'volume', 0, v_attack, 0, v_decay, v_sustain, v_release, 1)
|
||||
|
||||
inst_plugindata.asdr_env_add('volume', 0, v_attack, 0, v_decay, v_sustain, v_release, 1)
|
||||
|
||||
#cvpj_instdata['middlenote'] = int(getvalue(x_device_sound, 'masterTranspose', 0))*-1
|
||||
|
||||
pre_t_cutoff = int(getvalue(x_device_sound, 'cutoff', 0))/100
|
||||
|
@ -323,7 +338,7 @@ class input_audiosanua(plugin_input.base):
|
|||
if audiosauna_filtertype == '1': filter_type = ['highpass', None]
|
||||
if audiosauna_filtertype == '2': filter_type = ["lowpass", "double"]
|
||||
|
||||
plugins.add_filter(cvpj_l, pluginid, True, filter_cutoff, filter_reso, filter_type[0], filter_type[1])
|
||||
inst_plugindata.filter_add(True, filter_cutoff, filter_reso, filter_type[0], filter_type[1])
|
||||
|
||||
f_attack, f_decay, f_release, f_sustain = setasdr(
|
||||
float(getvalue(x_device_sound, 'filterAttack', 0)),
|
||||
|
@ -350,16 +365,15 @@ class input_audiosanua(plugin_input.base):
|
|||
g_lfo_shape = audiosauna_lfoWaveForm
|
||||
g_lfo_speed = audiosauna_lfoTime
|
||||
|
||||
plugins.add_lfo(cvpj_l, pluginid, 'pitch',
|
||||
g_lfo_shape, 'seconds', g_lfo_speed, 0, g_lfo_attack, p_lfo_amount)
|
||||
plugins.add_lfo(cvpj_l, pluginid, 'cutoff',
|
||||
g_lfo_shape, 'seconds', g_lfo_speed, 0, g_lfo_attack, c_lfo_amount)
|
||||
inst_plugindata.lfo_add('pitch', g_lfo_shape, 'seconds', g_lfo_speed, 0, g_lfo_attack, p_lfo_amount)
|
||||
inst_plugindata.lfo_add('cutoff', g_lfo_shape, 'seconds', g_lfo_speed, 0, g_lfo_attack, c_lfo_amount)
|
||||
|
||||
tracks_r.track_inst_pluginid(cvpj_l, cvpj_trackid, pluginid)
|
||||
|
||||
for fx_name in ['distortion', 'bitcrush', 'chorus', 'amp']:
|
||||
fxslot.insert(cvpj_l, ['track', cvpj_trackid], 'audio', make_fxslot(x_proj, fx_name, v_device_deviceType))
|
||||
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
devicenum += 1
|
||||
|
||||
as_loopstart = float(getvalue(x_proj, 'appLoopStart', 0))
|
||||
|
|
|
@ -6,13 +6,14 @@ import json
|
|||
import math
|
||||
import plugin_input
|
||||
import os
|
||||
import struct
|
||||
import zlib
|
||||
import sys
|
||||
import xml.etree.ElementTree as ET
|
||||
from functions_plugin import lmms_auto
|
||||
from functions import note_mod
|
||||
from functions import note_data
|
||||
from functions import notelist_data
|
||||
from functions import data_dataset
|
||||
from functions import colors
|
||||
from functions import auto
|
||||
from functions import plugins
|
||||
|
@ -58,6 +59,13 @@ opl2varnames = [
|
|||
['vibrato_depth', 'vibrato_depth']
|
||||
]
|
||||
|
||||
sid_att = [2, 8, 16, 24, 38, 56, 68, 80, 100, 250, 500, 800, 1000, 3000, 5000, 8000]
|
||||
sid_decrel = [6, 24, 48, 72, 114, 168, 204, 240, 300, 750, 1500, 2400, 3000, 9000, 15000, 24000]
|
||||
sid_wave = ['square', 'triangle', 'saw', 'noise_4bit']
|
||||
|
||||
|
||||
|
||||
|
||||
chord = [[0], [0, 4, 7], [0, 4, 6], [0, 3, 7], [0, 3, 6], [0, 2, 7], [0, 5, 7], [0, 4, 8], [0, 5, 8], [0, 3, 6, 9], [0, 4, 7, 9], [0, 5, 7, 9], [0, 4, 7, 9, 14], [0, 3, 7, 9], [0, 3, 7, 9, 14], [0, 4, 7, 10], [0, 5, 7, 10], [0, 4, 8, 10], [0, 4, 6, 10], [0, 4, 7, 10, 15], [0, 4, 7, 10, 13], [0, 4, 8, 10, 15], [0, 4, 8, 10, 13], [0, 4, 6, 10, 13], [0, 4, 7, 10, 17], [0, 4, 7, 10, 21], [0, 4, 7, 10, 18], [0, 4, 7, 11], [0, 4, 6, 11], [0, 4, 8, 11], [0, 4, 7, 11, 18], [0, 4, 7, 11, 21], [0, 3, 7, 10], [0, 3, 6, 10], [0, 3, 7, 10, 13], [0, 3, 7, 10, 17], [0, 3, 7, 10, 21], [0, 3, 7, 11], [0, 3, 7, 11, 17], [0, 3, 7, 11, 21], [0, 4, 7, 10, 14], [0, 5, 7, 10, 14], [0, 4, 7, 14], [0, 4, 8, 10, 14], [0, 4, 6, 10, 14], [0, 4, 7, 10, 14, 18], [0, 4, 7, 10, 14, 20], [0, 4, 7, 11, 14], [0, 5, 7, 11, 15], [0, 4, 8, 11, 14], [0, 4, 7, 11, 14, 18], [0, 3, 7, 10, 14], [0, 3, 7, 14], [0, 3, 6, 10, 14], [0, 3, 7, 11, 14], [0, 4, 7, 10, 14, 17], [0, 4, 7, 10, 13, 17], [0, 4, 7, 11, 14, 17], [0, 3, 7, 10, 14, 17], [0, 3, 7, 11, 14, 17], [0, 4, 7, 10, 14, 21], [0, 4, 7, 10, 15, 21], [0, 4, 7, 10, 13, 21], [0, 4, 6, 10, 13, 21], [0, 4, 7, 11, 14, 21], [0, 3, 7, 10, 14, 21], [0, 3, 7, 11, 14, 21], [0, 2, 4, 5, 7, 9, 11], [0, 2, 3, 5, 7, 8, 11], [0, 2, 3, 5, 7, 9, 11], [0, 2, 4, 6, 8, 10], [0, 2, 3, 5, 6, 8, 9, 11], [0, 2, 4, 7, 9], [0, 3, 5, 7, 10], [0, 1, 5, 7, 10], [0, 2, 4, 5, 7, 8, 9, 11], [0, 2, 4, 5, 7, 9, 10, 11], [0, 3, 5, 6, 7, 10], [0, 1, 4, 5, 7, 8, 11], [0, 1, 4, 6, 8, 10, 11], [0, 1, 3, 5, 7, 9, 11], [0, 1, 3, 5, 7, 8, 11], [0, 2, 3, 6, 7, 8, 11], [0, 2, 3, 5, 7, 9, 10], [0, 1, 3, 5, 7, 8, 10], [0, 2, 4, 6, 7, 9, 11], [0, 2, 4, 5, 7, 9, 10], [0, 2, 3, 5, 7, 8, 10], [0, 1, 3, 5, 6, 8, 10], [0, 2, 3, 5, 7, 8, 10], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [0, 1, 3, 4, 6, 7, 9, 10], [0, 7], [0, 1, 4, 5, 7, 8, 10], [0, 1, 4, 5, 6, 8, 11]]
|
||||
fxlist = {}
|
||||
fxlist['amplifier'] = 'AmplifierControls'
|
||||
|
@ -78,28 +86,6 @@ fxlist['stereomatrix'] = 'stereomatrixcontrols'
|
|||
fxlist['waveshaper'] = 'waveshapercontrols'
|
||||
fxlist['vsteffect'] = 'vsteffectcontrols'
|
||||
|
||||
plugincolors = {}
|
||||
plugincolors['audiofileprocessor'] = [0.28, 0.28, 0.28]
|
||||
plugincolors['bitinvader'] = [0.86, 0.86, 0.86]
|
||||
plugincolors['papu'] = [0.60, 0.80, 0.14]
|
||||
plugincolors['gigplayer'] = [0.55, 0.00, 0.00]
|
||||
plugincolors['kicker'] = [0.51, 0.58, 0.58]
|
||||
plugincolors['lb302'] = [0.81, 0.65, 0.72]
|
||||
plugincolors['malletsstk'] = [0.55, 0.13, 0.07]
|
||||
plugincolors['monstro'] = [0.65, 0.68, 0.70]
|
||||
plugincolors['nes'] = [0.90, 0.13, 0.09]
|
||||
plugincolors['OPL2'] = [0.03, 0.33, 0.53]
|
||||
plugincolors['organic'] = [0.24, 0.76, 0.13]
|
||||
plugincolors['patman'] = [0.97, 1.00, 0.33]
|
||||
plugincolors['sf2player'] = [0.60, 0.61, 0.62]
|
||||
plugincolors['sfxr'] = [1.00, 0.70, 0.00]
|
||||
plugincolors['sid'] = [0.73, 0.69, 0.63]
|
||||
plugincolors['tripleoscillator'] = [1.00, 0.34, 0.13]
|
||||
plugincolors['vestige'] = [0.06, 0.60, 0.21]
|
||||
plugincolors['vibedstrings'] = [0.39, 0.47, 0.53]
|
||||
plugincolors['watsyn'] = [0.81, 0.87, 0.87]
|
||||
plugincolors['zynaddsubfx'] = [0.75, 0.75, 0.75]
|
||||
|
||||
# ------- functions -------
|
||||
|
||||
|
||||
|
@ -131,11 +117,11 @@ def add_window_data(xmltag, cvpj_l, w_group, w_name):
|
|||
|
||||
|
||||
|
||||
def getvstparams(pluginid, xmldata):
|
||||
def getvstparams(cvpj_plugindata, pluginid, xmldata):
|
||||
if os.path.exists( xmldata.get('plugin')):
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'path', xmldata.get('plugin'))
|
||||
cvpj_plugindata.dataval_add('path', xmldata.get('plugin'))
|
||||
else:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'path', lmms_vstpath+xmldata.get('plugin'))
|
||||
cvpj_plugindata.dataval_add('path', lmms_vstpath+xmldata.get('plugin'))
|
||||
vst_data = xmldata.get('chunk')
|
||||
vst_numparams = xmldata.get('numparams')
|
||||
vst_program = xmldata.get('program')
|
||||
|
@ -145,17 +131,17 @@ def getvstparams(pluginid, xmldata):
|
|||
song.add_visual_window(cvpj_l, 'plugin', pluginid, None, None, bool(int(w_open)), None)
|
||||
|
||||
if vst_program != None:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'current_program', int(vst_program))
|
||||
cvpj_plugindata.dataval_add('current_program', int(vst_program))
|
||||
if vst_data != None:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'datatype', 'chunk')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'chunk', vst_data)
|
||||
cvpj_plugindata.dataval_add('datatype', 'chunk')
|
||||
cvpj_plugindata.dataval_add('chunk', vst_data)
|
||||
elif vst_numparams != None:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'datatype', 'param')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'numparams', int(vst_numparams))
|
||||
cvpj_plugindata.dataval_add('datatype', 'param')
|
||||
cvpj_plugindata.dataval_add('numparams', int(vst_numparams))
|
||||
for param in range(int(vst_numparams)):
|
||||
paramdata = xmldata.get('param'+str(param)).split(':')
|
||||
paramnum = 'vst_param_'+str(param)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, paramnum, float(paramdata[-1]), 'float', paramdata[1])
|
||||
cvpj_plugindata.param_add(paramnum, float(paramdata[-1]), 'float', paramdata[1])
|
||||
for node in xmldata.iter():
|
||||
notetagtxt = node.tag
|
||||
if notetagtxt.startswith('param'):
|
||||
|
@ -188,26 +174,41 @@ def lmms_getvalue(xmltag, xmlname, fallbackval):
|
|||
if xmlval == None: xmlval = fallbackval
|
||||
return xmlval
|
||||
|
||||
def dset_plugparams(pluginname, pluginid, xml_data, cvpj_plugindata):
|
||||
paramlist = dataset.params_list('plugin', pluginname)
|
||||
if paramlist != None:
|
||||
for paramname in paramlist:
|
||||
paramlist = dataset.params_i_get('plugin', pluginname, paramname)
|
||||
pv_noauto,pv_type,pv_def,pv_min,pv_max,pv_name = paramlist
|
||||
if pv_noauto == False:
|
||||
plugval = lmms_auto_getvalue(xml_data, paramname, 0, pv_type, None, ['plugin', pluginid, paramname])
|
||||
cvpj_plugindata.param_add(paramname, plugval, pv_type, pv_name)
|
||||
else:
|
||||
xml_pluginparam = xml_data.get(paramname)
|
||||
if xml_pluginparam: cvpj_plugindata.dataval_add(paramname, xml_pluginparam)
|
||||
|
||||
|
||||
|
||||
# ------- Instruments and Plugins -------
|
||||
|
||||
def exp2sec(value): return (value*value)*5
|
||||
|
||||
def asdflfo_get(trkX_insttr, pluginid):
|
||||
def asdflfo_get(trkX_insttr, inst_plugindata):
|
||||
elcX = trkX_insttr.findall('eldata')
|
||||
if len(elcX) != 0:
|
||||
eldataX = elcX[0]
|
||||
if eldataX.findall('elvol'): asdflfo(pluginid, eldataX.findall('elvol')[0], 'vol')
|
||||
if eldataX.findall('elcut'): asdflfo(pluginid, eldataX.findall('elcut')[0], 'cutoff')
|
||||
if eldataX.findall('elres'): asdflfo(pluginid, eldataX.findall('elres')[0], 'reso')
|
||||
if eldataX.findall('elvol'): asdflfo(inst_plugindata, eldataX.findall('elvol')[0], 'vol')
|
||||
if eldataX.findall('elcut'): asdflfo(inst_plugindata, eldataX.findall('elcut')[0], 'cutoff')
|
||||
if eldataX.findall('elres'): asdflfo(inst_plugindata, eldataX.findall('elres')[0], 'reso')
|
||||
|
||||
if eldataX.get('ftype') != None:
|
||||
filter_cutoff = float(lmms_getvalue(eldataX, 'fcut', 0))
|
||||
filter_reso = float(lmms_getvalue(eldataX, 'fres', 0))
|
||||
filter_enabled = float(lmms_getvalue(eldataX, 'fwet', 0))
|
||||
filter_type, filter_subtype = filtertype[int(eldataX.get('ftype'))]
|
||||
plugins.add_filter(cvpj_l, pluginid, filter_enabled, filter_cutoff, filter_reso, filter_type, filter_subtype)
|
||||
inst_plugindata.filter_add(filter_enabled, filter_cutoff, filter_reso, filter_type, filter_subtype)
|
||||
|
||||
def asdflfo(pluginid, xmlO, asdrtype):
|
||||
def asdflfo(inst_plugindata, xmlO, asdrtype):
|
||||
envelopeparams = {}
|
||||
|
||||
asdr_predelay = exp2sec(float(lmms_getvalue(xmlO, 'pdel', 0)))
|
||||
|
@ -219,7 +220,7 @@ def asdflfo(pluginid, xmlO, asdrtype):
|
|||
asdr_amount = float(lmms_getvalue(xmlO, 'amt', 0))
|
||||
if asdrtype == 'cutoff': asdr_amount *= 6000
|
||||
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, asdrtype, asdr_predelay, asdr_attack, asdr_hold, asdr_decay, asdr_sustain, asdr_release, asdr_amount)
|
||||
inst_plugindata.asdr_env_add(asdrtype, asdr_predelay, asdr_attack, asdr_hold, asdr_decay, asdr_sustain, asdr_release, asdr_amount)
|
||||
|
||||
lfoparams = {}
|
||||
|
||||
|
@ -234,7 +235,7 @@ def asdflfo(pluginid, xmlO, asdrtype):
|
|||
|
||||
lfo_speed = 0
|
||||
if xmlO.get('lspd') != None: lfo_speed = (float(xmlO.get('lspd'))*0.2) if speedx100 == 1 else (float(xmlO.get('lspd'))*20)
|
||||
plugins.add_lfo(cvpj_l, pluginid, asdrtype, lfo_shape, 'seconds', lfo_speed, lfo_predelay, lfo_attack, lfo_amount)
|
||||
inst_plugindata.lfo_add(asdrtype, lfo_shape, 'seconds', lfo_speed, lfo_predelay, lfo_attack, lfo_amount)
|
||||
|
||||
def lmms_decodeplugin(trkX_insttr):
|
||||
trkX_instrument = trkX_insttr.findall('instrument')[0]
|
||||
|
@ -249,23 +250,23 @@ def lmms_decodeplugin(trkX_insttr):
|
|||
xml_plugin = xml_a_plugin[0]
|
||||
|
||||
if pluginname == "sf2player":
|
||||
plugins.add_plug(cvpj_l, pluginid, 'soundfont2', None)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'bank', int(xml_plugin.get('bank')))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'patch', int(xml_plugin.get('patch')))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'file', xml_plugin.get('src'))
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'gain', float(xml_plugin.get('gain')), 'float', 'Gain')
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'soundfont2', None)
|
||||
inst_plugindata.dataval_add('bank', int(xml_plugin.get('bank')))
|
||||
inst_plugindata.dataval_add('patch', int(xml_plugin.get('patch')))
|
||||
inst_plugindata.dataval_add('file', xml_plugin.get('src'))
|
||||
inst_plugindata.param_add('gain', float(xml_plugin.get('gain')), 'float', 'Gain')
|
||||
for cvpj_name, lmmsname in [['chorus_depth','chorusDepth'],['chorus_level','chorusLevel'],['chorus_lines','chorusNum'],['chorus_speed','chorusSpeed'],['reverb_damping','reverbDamping'],['reverb_level','reverbLevel'],['reverb_roomsize','reverbRoomSize'],['reverb_width','reverbWidth']]:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, cvpj_name, float(xml_plugin.get(lmmsname)), 'float', lmmsname)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'chorus_enabled', float(xml_plugin.get('chorusOn')), 'bool', 'chorusOn')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'reverb_enabled', float(xml_plugin.get('reverbOn')), 'bool', 'reverbOn')
|
||||
inst_plugindata.param_add(cvpj_name, float(xml_plugin.get(lmmsname)), 'float', lmmsname)
|
||||
inst_plugindata.param_add('chorus_enabled', float(xml_plugin.get('chorusOn')), 'bool', 'chorusOn')
|
||||
inst_plugindata.param_add('reverb_enabled', float(xml_plugin.get('reverbOn')), 'bool', 'reverbOn')
|
||||
|
||||
elif pluginname == "audiofileprocessor":
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, lmms_getvalue(xml_plugin, 'src', ''))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'reverse', bool(int(lmms_getvalue(xml_plugin, 'reversed', 0))))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'amp', float(lmms_getvalue(xml_plugin, 'amp', 1))/100)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'continueacrossnotes', bool(int(lmms_getvalue(xml_plugin, 'stutter', 0))))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', 'normal')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "percent")
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', lmms_getvalue(xml_plugin, 'src', ''), None)
|
||||
inst_plugindata.dataval_add('reverse', bool(int(lmms_getvalue(xml_plugin, 'reversed', 0))))
|
||||
inst_plugindata.dataval_add('amp', float(lmms_getvalue(xml_plugin, 'amp', 1))/100)
|
||||
inst_plugindata.dataval_add('continueacrossnotes', bool(int(lmms_getvalue(xml_plugin, 'stutter', 0))))
|
||||
inst_plugindata.dataval_add('trigger', 'normal')
|
||||
inst_plugindata.dataval_add('point_value_type', "percent")
|
||||
|
||||
cvpj_loop = {}
|
||||
looped = int(xml_plugin.get('looped'))
|
||||
|
@ -279,59 +280,95 @@ def lmms_decodeplugin(trkX_insttr):
|
|||
cvpj_loop['points'] = [
|
||||
float(looppoint) if looppoint != None else 0,
|
||||
float(startpoint) if startpoint != None else 0]
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', cvpj_loop)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'end', float(lmms_getvalue(xml_plugin, 'eframe', 1)))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'start', float(lmms_getvalue(xml_plugin, 'sframe', 0)))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "percent")
|
||||
inst_plugindata.dataval_add('loop', cvpj_loop)
|
||||
inst_plugindata.dataval_add('end', float(lmms_getvalue(xml_plugin, 'eframe', 1)))
|
||||
inst_plugindata.dataval_add('start', float(lmms_getvalue(xml_plugin, 'sframe', 0)))
|
||||
inst_plugindata.dataval_add('point_value_type', "percent")
|
||||
|
||||
lmms_interpolation = int(xml_plugin.get('interp'))
|
||||
if lmms_interpolation == 0: cvpj_interpolation = "none"
|
||||
if lmms_interpolation == 1: cvpj_interpolation = "linear"
|
||||
if lmms_interpolation == 2: cvpj_interpolation = "sinc"
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'interpolation', cvpj_interpolation)
|
||||
inst_plugindata.dataval_add('interpolation', cvpj_interpolation)
|
||||
|
||||
asdflfo_get(trkX_insttr, pluginid)
|
||||
asdflfo_get(trkX_insttr, inst_plugindata)
|
||||
|
||||
|
||||
elif pluginname == "OPL2" or pluginname == "opulenz":
|
||||
plugins.add_plug(cvpj_l, pluginid, 'fm', 'opl2')
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'fm', 'opl2')
|
||||
for lmms_opname, cvpj_opname in [['op1', 'mod'],['op2', 'car']]:
|
||||
for varname in opl2opvarnames:
|
||||
plugval = lmms_auto_getvalue(xml_plugin, lmms_opname+varname[0], 0, 'int', None, ['plugin', pluginid, cvpj_opname+varname[1]])
|
||||
plugins.add_plug_param(cvpj_l, pluginid, cvpj_opname+varname[1], plugval, 'int', lmms_opname+varname[1])
|
||||
inst_plugindata.param_add(cvpj_opname+varname[1], plugval, 'int', lmms_opname+varname[1])
|
||||
|
||||
for varname in opl2varnames:
|
||||
plugval = lmms_auto_getvalue(xml_plugin, varname[0], 0, 'int', None, ['plugin', pluginid, varname[1]])
|
||||
plugins.add_plug_param(cvpj_l, pluginid, varname[1], plugval, 'int', varname[1])
|
||||
inst_plugindata.param_add(varname[1], plugval, 'int', varname[1])
|
||||
|
||||
elif pluginname == "vestige":
|
||||
plugins.add_plug(cvpj_l, pluginid, 'vst2', 'win')
|
||||
getvstparams(pluginid, xml_plugin)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'vst2', 'win')
|
||||
getvstparams(inst_plugindata, pluginid, xml_plugin)
|
||||
|
||||
else:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-lmms', pluginname)
|
||||
lmms_autovals = lmms_auto.get_params_inst(pluginname)
|
||||
for pluginparam in lmms_autovals[0]:
|
||||
plugval = lmms_auto_getvalue(xml_plugin, pluginparam, 0, 'float', None, ['plugin', pluginid, pluginparam])
|
||||
plugins.add_plug_param(cvpj_l, pluginid, pluginparam, plugval, 'float', pluginparam)
|
||||
for pluginparam in lmms_autovals[1]:
|
||||
xml_pluginparam = xml_plugin.get(pluginparam)
|
||||
if xml_pluginparam:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, pluginparam, xml_pluginparam)
|
||||
asdflfo_get(trkX_insttr, pluginid)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-lmms', pluginname)
|
||||
dset_plugparams(pluginname, pluginid, xml_plugin, inst_plugindata)
|
||||
|
||||
asdflfo_get(trkX_insttr, inst_plugindata)
|
||||
|
||||
if pluginname == "bitinvader":
|
||||
sampleshape = xml_plugin.get('sampleShape')
|
||||
sampleshape = base64.b64decode(sampleshape.encode('ascii'))
|
||||
sampleshape_size = len(sampleshape)//4
|
||||
wave_data = struct.unpack('f'*sampleshape_size, sampleshape)
|
||||
inst_plugindata.wave_add('main', wave_data, -1, 1)
|
||||
inst_plugindata.osc_num_oscs(1)
|
||||
inst_plugindata.osc_opparam_set(0, 'wave_name', 'main')
|
||||
|
||||
if pluginname == "sid":
|
||||
inst_plugindata.osc_num_oscs(3)
|
||||
inst_plugindata.oscdata_add('traits', ['coarse', 'pulse_width'])
|
||||
for num in range(3):
|
||||
sid_waveform = inst_plugindata.param_get('waveform'+str(num), 0)[0]
|
||||
sid_pulsewidth = inst_plugindata.param_get('pulsewidth'+str(num), 0)[0]
|
||||
sid_coarse = inst_plugindata.param_get('coarse'+str(num), 0)[0]
|
||||
sid_attack = inst_plugindata.param_get('attack'+str(num), 0)[0]
|
||||
sid_decay = inst_plugindata.param_get('decay'+str(num), 0)[0]
|
||||
sid_sustain = inst_plugindata.param_get('sustain'+str(num), 0)[0]
|
||||
sid_release = inst_plugindata.param_get('release'+str(num), 0)[0]
|
||||
sid_attack = sid_att[int(sid_attack)]/1000
|
||||
sid_decay = sid_decrel[int(sid_decay)]/1000
|
||||
sid_sustain = sid_sustain/15
|
||||
sid_release = sid_decrel[int(sid_release)]/1000
|
||||
asdr_name = 'osc'+str(num)
|
||||
inst_plugindata.asdr_env_add(asdr_name, 0, sid_attack, 0, sid_decay, sid_sustain, sid_release, 1)
|
||||
inst_plugindata.osc_opparam_set(num, 'shape', sid_wave[int(sid_waveform)])
|
||||
inst_plugindata.osc_opparam_set(num, 'env_adsr', {'vol': asdr_name})
|
||||
inst_plugindata.osc_opparam_set(num, 'pulse_width', int(sid_pulsewidth)/4095)
|
||||
inst_plugindata.osc_opparam_set(num, 'coarse', int(sid_coarse))
|
||||
inst_plugindata.osc_opparam_set(num, 'vol', 1)
|
||||
sid_voice3Off = inst_plugindata.param_get('voice3Off', 0)[0]
|
||||
inst_plugindata.osc_opparam_set(2, 'vol', int(not int(sid_voice3Off)))
|
||||
|
||||
if pluginname == "zynaddsubfx":
|
||||
zdata = xml_plugin.findall('ZynAddSubFX-data')[0]
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'data', base64.b64encode(ET.tostring(zdata, encoding='utf-8')).decode('ascii'))
|
||||
zdata = xml_plugin.findall('ZynAddSubFX-data')
|
||||
if zdata:
|
||||
xsdata = ET.tostring(zdata[0], encoding='utf-8')
|
||||
inst_plugindata.dataval_add('data', base64.b64encode(xsdata).decode('ascii'))
|
||||
|
||||
if pluginname == "tripleoscillator":
|
||||
threeosc_userwavefile0 = xml_plugin.get('userwavefile0')
|
||||
threeosc_userwavefile1 = xml_plugin.get('userwavefile1')
|
||||
threeosc_userwavefile2 = xml_plugin.get('userwavefile2')
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_1', threeosc_userwavefile0)
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_2', threeosc_userwavefile1)
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_3', threeosc_userwavefile2)
|
||||
inst_plugindata.fileref_add('osc_1', threeosc_userwavefile0)
|
||||
inst_plugindata.fileref_add('osc_2', threeosc_userwavefile1)
|
||||
inst_plugindata.fileref_add('osc_3', threeosc_userwavefile2)
|
||||
|
||||
print(pluginname)
|
||||
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
_, plugincolor = dataset.object_get_name_color('plugin', pluginname)
|
||||
|
||||
if pluginname in plugincolors: plugincolor = plugincolors[pluginname]
|
||||
else: plugincolor = None
|
||||
return plugincolor, pluginname, pluginid
|
||||
|
||||
# ------- Notelist -------
|
||||
|
@ -457,17 +494,12 @@ def lmms_decode_inst_track(trkX, trackid):
|
|||
if len(xml_a_arpeggiator) != 0:
|
||||
trkX_arpeggiator = xml_a_arpeggiator[0]
|
||||
pluginid = plugins.get_id()
|
||||
lmms_autovals = lmms_auto.get_params_notefx('arpeggiator')
|
||||
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-lmms', 'arpeggiator')
|
||||
cvpj_l_arpeggiator_enabled = lmms_auto_getvalue(trkX_arpeggiator, 'arp-enabled', 0, 'bool', None, ['slot', pluginid, 'enabled'])
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, cvpj_l_arpeggiator_enabled, None)
|
||||
|
||||
for pluginparam in lmms_autovals[0]:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, pluginparam,
|
||||
lmms_auto_getvalue(trkX_arpeggiator, pluginparam, 0, 'float', None, ['plugin', pluginid, pluginparam])
|
||||
, 'float', pluginparam)
|
||||
|
||||
notefx_plugindata = plugins.cvpj_plugin('deftype', 'native-lmms', 'arpeggiator')
|
||||
notefx_plugindata.fxdata_add(cvpj_l_arpeggiator_enabled, None)
|
||||
dset_plugparams('arpeggiator', pluginid, trkX_arpeggiator, notefx_plugindata)
|
||||
notefx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
fxslot.insert(cvpj_l, ['track', trackid], 'notes', pluginid)
|
||||
|
||||
|
||||
|
@ -475,17 +507,12 @@ def lmms_decode_inst_track(trkX, trackid):
|
|||
if len(xml_a_chordcreator) != 0:
|
||||
trkX_chordcreator = xml_a_chordcreator[0]
|
||||
pluginid = plugins.get_id()
|
||||
lmms_autovals = lmms_auto.get_params_notefx('chordcreator')
|
||||
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-lmms', 'chordcreator')
|
||||
cvpj_l_chordcreator_enabled = lmms_auto_getvalue(trkX_chordcreator, 'chord-enabled', 0, 'bool', None, ['slot', pluginid, 'enabled'])
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, cvpj_l_chordcreator_enabled, None)
|
||||
|
||||
for pluginparam in lmms_autovals[0]:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, pluginparam,
|
||||
lmms_auto_getvalue(trkX_chordcreator, pluginparam, 0, 'float', None, ['plugin', pluginid, pluginparam])
|
||||
, 'float', pluginparam)
|
||||
|
||||
notefx_plugindata = plugins.cvpj_plugin('deftype', 'native-lmms', 'chordcreator')
|
||||
notefx_plugindata.fxdata_add(cvpj_l_chordcreator_enabled, None)
|
||||
dset_plugparams('chordcreator', pluginid, trkX_chordcreator, notefx_plugindata)
|
||||
notefx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
fxslot.insert(cvpj_l, ['track', trackid], 'notes', pluginid)
|
||||
|
||||
|
||||
|
@ -583,7 +610,8 @@ def lmms_decode_auto_track(trkX):
|
|||
# ------- Effects -------
|
||||
|
||||
def get_ladspa_path(ladname):
|
||||
temppath = lmms_ladspapath+ladname
|
||||
if lmms_ladspapath != None: temppath = lmms_ladspapath+ladname
|
||||
else: temppath = ladname
|
||||
|
||||
if sys.platform == 'win32':
|
||||
unixsys = False
|
||||
|
@ -618,65 +646,65 @@ def lmms_decode_effectslot(fxslotX):
|
|||
if fxpluginname == 'eq':
|
||||
fxxml_plugin = fxslotX.findall('Eq')[0]
|
||||
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'eq-bands')
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'eq-bands')
|
||||
|
||||
Outputgain = lmms_auto_getvalue(fxxml_plugin, 'Outputgain', 0, 'float', None, ['slot', pluginid, 'gain_out'])
|
||||
Inputgain = lmms_auto_getvalue(fxxml_plugin, 'Inputgain', 0, 'float', None, ['slot', pluginid, 'gain_in'])
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'gain_out', Outputgain, 'float', 'Out Gain')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'gain_in', Inputgain, 'float', 'In Gain')
|
||||
fx_plugindata.param_add('gain_out', Outputgain, 'float', 'Out Gain')
|
||||
fx_plugindata.param_add('gain_in', Inputgain, 'float', 'In Gain')
|
||||
|
||||
LPactive = lmms_auto_getvalue(fxxml_plugin, 'LPactive', 0, 'int', None, ['slot', pluginid, 'peak_1_on'])
|
||||
LPfreq = lmms_auto_getvalue(fxxml_plugin, 'LPfreq', 0, 'float', None, ['slot', pluginid, 'peak_1_freq'])
|
||||
LPres = lmms_auto_getvalue(fxxml_plugin, 'LPres', 0, 'float', None, ['slot', pluginid, 'peak_1_val'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, LPactive, LPfreq, 0, 'low_pass', LPres, None)
|
||||
fx_plugindata.eqband_add(LPactive, LPfreq, 0, 'low_pass', LPres, None)
|
||||
|
||||
Lowshelfactive = lmms_auto_getvalue(fxxml_plugin, 'Lowshelfactive', 0, 'int', None, ['slot', pluginid, 'peak_2_on'])
|
||||
LowShelffreq = lmms_auto_getvalue(fxxml_plugin, 'LowShelffreq', 0, 'float', None, ['slot', pluginid, 'peak_2_freq'])
|
||||
Lowshelfgain = lmms_auto_getvalue(fxxml_plugin, 'Lowshelfgain', 0, 'float', None, ['slot', pluginid, 'peak_2_gain'])
|
||||
LowShelfres = lmms_auto_getvalue(fxxml_plugin, 'LowShelfres', 0, 'float', None, ['slot', pluginid, 'peak_2_val'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, Lowshelfactive, LowShelffreq, Lowshelfgain, 'low_shelf', LowShelfres, None)
|
||||
fx_plugindata.eqband_add(Lowshelfactive, LowShelffreq, Lowshelfgain, 'low_shelf', LowShelfres, None)
|
||||
|
||||
Peak1active = lmms_auto_getvalue(fxxml_plugin, 'Peak1active', 0, 'int', None, ['slot', pluginid, 'peak_3_on'])
|
||||
Peak1bw = lmms_auto_getvalue(fxxml_plugin, 'Peak1bw', 0, 'float', None, ['slot', pluginid, 'peak_3_val'])
|
||||
Peak1freq = lmms_auto_getvalue(fxxml_plugin, 'Peak1freq', 0, 'float', None, ['slot', pluginid, 'peak_3_freq'])
|
||||
Peak1gain = lmms_auto_getvalue(fxxml_plugin, 'Peak1gain', 0, 'float', None, ['slot', pluginid, 'peak_3_gain'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, Peak1active, Peak1freq, Peak1gain, 'peak', Peak1bw, None)
|
||||
fx_plugindata.eqband_add(Peak1active, Peak1freq, Peak1gain, 'peak', Peak1bw, None)
|
||||
|
||||
Peak2active = lmms_auto_getvalue(fxxml_plugin, 'Peak2active', 0, 'int', None, ['slot', pluginid, 'peak_4_on'])
|
||||
Peak2bw = lmms_auto_getvalue(fxxml_plugin, 'Peak2bw', 0, 'float', None, ['slot', pluginid, 'peak_4_val'])
|
||||
Peak2freq = lmms_auto_getvalue(fxxml_plugin, 'Peak2freq', 0, 'float', None, ['slot', pluginid, 'peak_4_freq'])
|
||||
Peak2gain = lmms_auto_getvalue(fxxml_plugin, 'Peak2gain', 0, 'float', None, ['slot', pluginid, 'peak_4_gain'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, Peak2active, Peak2freq, Peak2gain, 'peak', Peak2bw, None)
|
||||
fx_plugindata.eqband_add(Peak2active, Peak2freq, Peak2gain, 'peak', Peak2bw, None)
|
||||
|
||||
Peak3active = lmms_auto_getvalue(fxxml_plugin, 'Peak3active', 0, 'int', None, ['slot', pluginid, 'peak_5_on'])
|
||||
Peak3bw = lmms_auto_getvalue(fxxml_plugin, 'Peak3bw', 0, 'float', None, ['slot', pluginid, 'peak_5_val'])
|
||||
Peak3freq = lmms_auto_getvalue(fxxml_plugin, 'Peak3freq', 0, 'float', None, ['slot', pluginid, 'peak_5_freq'])
|
||||
Peak3gain = lmms_auto_getvalue(fxxml_plugin, 'Peak3gain', 0, 'float', None, ['slot', pluginid, 'peak_5_gain'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, Peak3active, Peak3freq, Peak3gain, 'peak', Peak3bw, None)
|
||||
fx_plugindata.eqband_add(Peak3active, Peak3freq, Peak3gain, 'peak', Peak3bw, None)
|
||||
|
||||
Peak4active = lmms_auto_getvalue(fxxml_plugin, 'Peak4active', 0, 'int', None, ['slot', pluginid, 'peak_6_on'])
|
||||
Peak4bw = lmms_auto_getvalue(fxxml_plugin, 'Peak4bw', 0, 'float', None, ['slot', pluginid, 'peak_6_val'])
|
||||
Peak4freq = lmms_auto_getvalue(fxxml_plugin, 'Peak4freq', 0, 'float', None, ['slot', pluginid, 'peak_6_freq'])
|
||||
Peak4gain = lmms_auto_getvalue(fxxml_plugin, 'Peak4gain', 0, 'float', None, ['slot', pluginid, 'peak_6_gain'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, Peak4active, Peak4freq, Peak4gain, 'peak', Peak4bw, None)
|
||||
fx_plugindata.eqband_add(Peak4active, Peak4freq, Peak4gain, 'peak', Peak4bw, None)
|
||||
|
||||
Highshelfactive = lmms_auto_getvalue(fxxml_plugin, 'Highshelfactive', 0, 'int', None, ['slot', pluginid, 'peak_7_on'])
|
||||
Highshelffreq = lmms_auto_getvalue(fxxml_plugin, 'Highshelffreq', 0, 'float', None, ['slot', pluginid, 'peak_7_freq'])
|
||||
HighShelfgain = lmms_auto_getvalue(fxxml_plugin, 'HighShelfgain', 0, 'float', None, ['slot', pluginid, 'peak_7_gain'])
|
||||
HighShelfres = lmms_auto_getvalue(fxxml_plugin, 'HighShelfres', 0, 'float', None, ['slot', pluginid, 'peak_7_val'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, Highshelfactive, Highshelffreq, HighShelfgain, 'high_shelf', HighShelfres, None)
|
||||
fx_plugindata.eqband_add(Highshelfactive, Highshelffreq, HighShelfgain, 'high_shelf', HighShelfres, None)
|
||||
|
||||
HPactive = lmms_auto_getvalue(fxxml_plugin, 'HPactive', 0, 'int', None, ['slot', pluginid, 'peak_8_on'])
|
||||
HPfreq = lmms_auto_getvalue(fxxml_plugin, 'HPfreq', 0, 'float', None, ['slot', pluginid, 'peak_8_freq'])
|
||||
HPres = lmms_auto_getvalue(fxxml_plugin, 'HPres', 0, 'float', None, ['slot', pluginid, 'peak_8_val'])
|
||||
plugins.add_eqband(cvpj_l, pluginid, HPactive, HPfreq, 0, 'high_pass', HPres, None)
|
||||
fx_plugindata.eqband_add(HPactive, HPfreq, 0, 'high_pass', HPres, None)
|
||||
|
||||
elif fxpluginname == 'vsteffect':
|
||||
fxxml_plugin = fxslotX.findall(fxlist[fxpluginname])[0]
|
||||
print('[vst2-dll',end='] ')
|
||||
plugins.add_plug(cvpj_l, pluginid, 'vst2', 'win')
|
||||
getvstparams(pluginid, fxxml_plugin)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'vst2', 'win')
|
||||
getvstparams(fx_plugindata, pluginid, fxxml_plugin)
|
||||
|
||||
elif fxpluginname == 'ladspaeffect':
|
||||
fxxml_plugin = fxslotX.findall('ladspacontrols')[0]
|
||||
|
@ -684,20 +712,20 @@ def lmms_decode_effectslot(fxslotX):
|
|||
fxxml_plugin_key = fxslotX.findall('key')[0]
|
||||
fxxml_plugin_ladspacontrols = fxslotX.findall('ladspacontrols')[0]
|
||||
|
||||
plugins.add_plug(cvpj_l, pluginid, 'ladspa', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'ladspa', None)
|
||||
|
||||
for attribute in fxxml_plugin_key.findall('attribute'):
|
||||
attval = attribute.get('value')
|
||||
attname = attribute.get('name')
|
||||
if attname == 'file':
|
||||
if os.path.exists(attval):
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'name', attval)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'path', attval)
|
||||
fx_plugindata.dataval_add('name', attval)
|
||||
fx_plugindata.dataval_add('path', attval)
|
||||
else:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'name', attval)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'path', get_ladspa_path(attval))
|
||||
fx_plugindata.dataval_add('name', attval)
|
||||
fx_plugindata.dataval_add('path', get_ladspa_path(attval))
|
||||
if attname == 'plugin':
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'plugin', attval)
|
||||
fx_plugindata.dataval_add('plugin', attval)
|
||||
|
||||
ladspa_ports = int(fxxml_plugin_ladspacontrols.get('ports'))
|
||||
ladspa_linked = fxxml_plugin_ladspacontrols.get('link')
|
||||
|
@ -707,7 +735,7 @@ def lmms_decode_effectslot(fxslotX):
|
|||
ladspa_ports //= 2
|
||||
if ladspa_linked == "0": seperated_channels = True
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'numparams', ladspa_ports)
|
||||
fx_plugindata.dataval_add('numparams', ladspa_ports)
|
||||
|
||||
for node in fxxml_plugin_ladspacontrols.iter():
|
||||
notetagtxt = node.tag
|
||||
|
@ -717,30 +745,20 @@ def lmms_decode_effectslot(fxslotX):
|
|||
t_data = node.get('data')
|
||||
paramid = 'ladspa_param_'+l_val if l_ch == '0' else 'ladspa_param_'+l_val+'_'+l_ch
|
||||
paramval = float(lmms_auto_getvalue(node, 'data', '0', 'float', None, ['plugin', pluginid, paramid]))
|
||||
plugins.add_plug_param(cvpj_l, pluginid, paramid, paramval, 'float', paramid)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'seperated_channels', seperated_channels)
|
||||
fx_plugindata.param_add(paramid, paramval, 'float', paramid)
|
||||
fx_plugindata.dataval_add('seperated_channels', seperated_channels)
|
||||
|
||||
else:
|
||||
fxxml_plugin = fxslotX.findall(fxlist[fxpluginname])[0]
|
||||
print('['+fxpluginname,end='] ')
|
||||
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-lmms', fxpluginname)
|
||||
|
||||
lmms_autovals = lmms_auto.get_params_fx(fxpluginname)
|
||||
for pluginparam in lmms_autovals[0]:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, pluginparam,
|
||||
lmms_auto_getvalue(fxxml_plugin, pluginparam, 0, 'float', None,
|
||||
['plugin', pluginid, pluginparam]),
|
||||
'float', pluginparam)
|
||||
for pluginparam in lmms_autovals[1]:
|
||||
xml_pluginparam = fxxml_plugin.get(pluginparam)
|
||||
if xml_pluginparam:
|
||||
plugins.add_plug_data(cvpj_l, pluginid, pluginparam, xml_pluginparam)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-lmms', fxpluginname)
|
||||
dset_plugparams(fxpluginname, pluginid, fxxml_plugin, fx_plugindata)
|
||||
|
||||
fxenabled = lmms_auto_getvalue(fxslotX, 'on', 1, 'bool', None, ['slot', pluginid, 'enabled'])
|
||||
fxwet = lmms_auto_getvalue(fxslotX, 'wet', 1, 'float', None, ['slot', pluginid, 'wet'])
|
||||
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, fxenabled, fxwet)
|
||||
fx_plugindata.fxdata_add(fxenabled, fxwet)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
return pluginid
|
||||
|
||||
|
@ -819,13 +837,13 @@ class input_lmms(plugin_input.base):
|
|||
print('[input-lmms] Input Start')
|
||||
global lmms_vstpath
|
||||
global lmms_ladspapath
|
||||
global dataset
|
||||
global cvpj_l
|
||||
|
||||
cvpj_l = {}
|
||||
homepath = os.path.expanduser('~')
|
||||
lmmsconfigpath_win = homepath+'\\.lmmsrc.xml'
|
||||
lmmsconfigpath_unx = homepath+'/.lmmsrc.xml'
|
||||
|
||||
lmmsconfigpath_found = False
|
||||
|
||||
if os.path.exists(lmmsconfigpath_win):
|
||||
|
@ -835,15 +853,22 @@ class input_lmms(plugin_input.base):
|
|||
lmmsconfigpath = lmmsconfigpath_unx
|
||||
lmmsconfigpath_found = True
|
||||
|
||||
if lmmsconfigpath_found == True:
|
||||
lmmsconfX = ET.parse(lmmsconfigpath).getroot()
|
||||
lmmsconf_pathsX = lmmsconfX.findall('paths')[0]
|
||||
lmms_vstpath = lmmsconf_pathsX.get('vstdir')
|
||||
lmms_ladspapath = lmmsconf_pathsX.get('ladspadir')
|
||||
else:
|
||||
try:
|
||||
if lmmsconfigpath_found == True:
|
||||
lmmsconfX = ET.parse(lmmsconfigpath).getroot()
|
||||
lmmsconf_pathsX = lmmsconfX.findall('paths')[0]
|
||||
lmms_vstpath = lmmsconf_pathsX.get('vstdir')
|
||||
lmms_ladspapath = lmmsconf_pathsX.get('ladspadir')
|
||||
else:
|
||||
lmms_vstpath = ''
|
||||
lmms_ladspapath = ''
|
||||
except:
|
||||
lmms_vstpath = ''
|
||||
lmms_ladspapath = ''
|
||||
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/lmms.dset')
|
||||
|
||||
tree = get_xml_tree(input_file)
|
||||
headX = tree.findall('head')[0]
|
||||
songX = tree.findall('song')[0]
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from functions import data_values
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import note_data
|
||||
from functions import plugins
|
||||
from functions import data_dataset
|
||||
from functions import placement_data
|
||||
from functions import song
|
||||
from functions_tracks import auto_nopl
|
||||
|
@ -137,29 +138,19 @@ class input_onlinesequencer(plugin_input.base):
|
|||
def parse(self, input_file, extra_param):
|
||||
global onlseq_notelist
|
||||
global onlseq_customnames
|
||||
global dataset
|
||||
|
||||
cvpj_l = {}
|
||||
|
||||
cvpj_l_keynames_data = {}
|
||||
dataset = data_dataset.dataset('./data_dset/onlineseq.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
onlseq_customnames = {}
|
||||
|
||||
os_data_song_stream = open(input_file, 'rb')
|
||||
os_data_song_data = os_data_song_stream.read()
|
||||
message, typedef = blackboxprotobuf.protobuf_to_json(os_data_song_data)
|
||||
|
||||
idvals_onlineseq_inst = idvals.parse_idvalscsv('data_idvals/onlineseq_inst.csv')
|
||||
idvals_onlineseq_drumkit = idvals.parse_idvalscsv('data_idvals/onlineseq_drumkit.csv')
|
||||
idvals_onlineseq_drumkit_808 = idvals.parse_idvalscsv('data_idvals/onlineseq_drumkit_808.csv')
|
||||
idvals_onlineseq_drumkit_909 = idvals.parse_idvalscsv('data_idvals/onlineseq_drumkit_909.csv')
|
||||
idvals_onlineseq_drumkit_2013 = idvals.parse_idvalscsv('data_idvals/onlineseq_drumkit_2013.csv')
|
||||
idvals_onlineseq_drumkit_retro = idvals.parse_idvalscsv('data_idvals/onlineseq_drumkit_retro.csv')
|
||||
|
||||
cvpj_l_keynames_data['drumkit_midi'] = idvals.idval2drumkeynames(idvals_onlineseq_drumkit)
|
||||
cvpj_l_keynames_data['drumkit_808'] = idvals.idval2drumkeynames(idvals_onlineseq_drumkit_808)
|
||||
cvpj_l_keynames_data['drumkit_909'] = idvals.idval2drumkeynames(idvals_onlineseq_drumkit_909)
|
||||
cvpj_l_keynames_data['drumkit_2013'] = idvals.idval2drumkeynames(idvals_onlineseq_drumkit_2013)
|
||||
cvpj_l_keynames_data['drumkit_retro'] = idvals.idval2drumkeynames(idvals_onlineseq_drumkit_retro)
|
||||
|
||||
os_data = json.loads(message)
|
||||
|
||||
onlseq_data_main = os_data["1"]
|
||||
|
@ -187,39 +178,33 @@ class input_onlinesequencer(plugin_input.base):
|
|||
cvpj_notelist = onlseq_notelist[instid]
|
||||
|
||||
trueinstid = instid%10000
|
||||
|
||||
inst_name = onlseq_customnames[instid] if instid in onlseq_customnames else idvals.get_idval(idvals_onlineseq_inst, str(trueinstid), 'name')
|
||||
inst_color = idvals.get_idval(idvals_onlineseq_inst, str(trueinstid), 'color')
|
||||
inst_gminst = idvals.get_idval(idvals_onlineseq_inst, str(trueinstid), 'gm_inst')
|
||||
inst_isdrum = idvals.get_idval(idvals_onlineseq_inst, str(trueinstid), 'isdrum')
|
||||
|
||||
pluginid = cvpj_instid
|
||||
|
||||
|
||||
onlseq_s_iparams = {}
|
||||
if instid in onlseq_data_instparams: onlseq_s_iparams = onlseq_data_instparams[instid]
|
||||
|
||||
ismidifound = tracks_r.import_dset(cvpj_l, cvpj_instid, str(trueinstid), dataset, dataset_midi, None, None)
|
||||
trk_vol = data_values.get_value(onlseq_s_iparams, 'vol', 1)
|
||||
trk_pan = data_values.get_value(onlseq_s_iparams, 'pan', 0)
|
||||
|
||||
tracks_r.track_create(cvpj_l, cvpj_instid, 'instrument')
|
||||
tracks_r.track_visual(cvpj_l, cvpj_instid, name=inst_name, color=inst_color)
|
||||
tracks_r.track_inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
tracks_r.track_param_add(cvpj_l, cvpj_instid, 'vol', trk_vol, 'float')
|
||||
tracks_r.track_param_add(cvpj_l, cvpj_instid, 'pan', trk_pan, 'float')
|
||||
|
||||
if instid == 13: plugins.add_plug(cvpj_l, pluginid, 'retro', 'sine')
|
||||
elif instid == 14: plugins.add_plug(cvpj_l, pluginid, 'retro', 'square')
|
||||
elif instid == 15: plugins.add_plug(cvpj_l, pluginid, 'retro', 'saw')
|
||||
elif instid == 16: plugins.add_plug(cvpj_l, pluginid, 'retro', 'triangle')
|
||||
else:
|
||||
if inst_gminst != None:
|
||||
if inst_isdrum == True:
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, 128, inst_gminst-1)
|
||||
tracks_r.track_param_add(cvpj_l, cvpj_instid, 'usemasterpitch', False, 'bool')
|
||||
tracks_r.track_dataval_add(cvpj_l, cvpj_instid, 'midi', 'output', {'drums': True, 'program': inst_gminst-1})
|
||||
else:
|
||||
plugins.add_plug_gm_midi(cvpj_l, pluginid, 0, inst_gminst-1)
|
||||
tracks_r.track_param_add(cvpj_l, cvpj_instid, 'usemasterpitch', True, 'bool')
|
||||
tracks_r.track_dataval_add(cvpj_l, cvpj_instid, 'midi', 'output', {'program': inst_gminst-1})
|
||||
if not ismidifound:
|
||||
inst_plugindata = None
|
||||
if instid == 13: inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', 'sine')
|
||||
elif instid == 14: inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', 'square')
|
||||
elif instid == 15: inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', 'saw')
|
||||
elif instid == 16: inst_plugindata = plugins.cvpj_plugin('deftype', 'retro', 'triangle')
|
||||
|
||||
if instid in [13,14,15,16]:
|
||||
inst_plugindata.osc_num_oscs(1)
|
||||
if instid == 13: inst_plugindata.osc_opparam_set(0, 'shape', 'sine')
|
||||
if instid == 14: inst_plugindata.osc_opparam_set(0, 'shape', 'square')
|
||||
if instid == 15: inst_plugindata.osc_opparam_set(0, 'shape', 'saw')
|
||||
if instid == 16: inst_plugindata.osc_opparam_set(0, 'shape', 'triangle')
|
||||
|
||||
if inst_plugindata != None:
|
||||
tracks_r.track_inst_pluginid(cvpj_l, cvpj_instid, cvpj_instid)
|
||||
inst_plugindata.to_cvpj(cvpj_l, cvpj_instid)
|
||||
|
||||
tracks_r.add_pl(cvpj_l, cvpj_instid, 'notes', placement_data.nl2pl(cvpj_notelist))
|
||||
|
||||
|
@ -281,51 +266,51 @@ class input_onlinesequencer(plugin_input.base):
|
|||
autoid = str(used_fx_inst_i)
|
||||
trackid = 'os_'+str(used_fx_inst_i)
|
||||
|
||||
delay_fx_enabled = bool(data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'delay_on', 0))
|
||||
distort_type = data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'distort_type', 0)
|
||||
reverb_type = data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'reverb_type', 0)
|
||||
|
||||
if 'delay' in used_fx_inst[used_fx_inst_i]:
|
||||
pluginid = trackid+'_delay'
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'delay-c')
|
||||
fx_enabled = bool(data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'delay_on', 0))
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'time_type', 'steps')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'time', 2)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'feedback', 0.25)
|
||||
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, fx_enabled, 0.5)
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Delay', None)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'delay-c')
|
||||
fx_plugindata.dataval_add('time_type', 'steps')
|
||||
fx_plugindata.dataval_add('time', 2)
|
||||
fx_plugindata.dataval_add('feedback', 0.25)
|
||||
fx_plugindata.fxdata_add(delay_fx_enabled, 0.5)
|
||||
fx_plugindata.fxvisual_add('Delay', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
fxslot.insert(cvpj_l, ['track', trackid], 'audio', pluginid)
|
||||
|
||||
if 'distort' in used_fx_inst[used_fx_inst_i]:
|
||||
pluginid = trackid+'_distort'
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-onlineseq', 'distort')
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-onlineseq', 'distort')
|
||||
fx_wet = data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'distort_wet', 0)
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, True, fx_wet)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'distort_type',
|
||||
data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'distort_type', 0)
|
||||
, 'int', 'Type')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Distortion', None)
|
||||
fx_plugindata.fxdata_add(True, fx_wet)
|
||||
fx_plugindata.param_add('distort_type', distort_type, 'int', 'Type')
|
||||
fx_plugindata.fxvisual_add('Distortion', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
fxslot.insert(cvpj_l, ['track', trackid], 'audio', pluginid)
|
||||
|
||||
if 'reverb' in used_fx_inst[used_fx_inst_i]:
|
||||
pluginid = trackid+'_reverb'
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-onlineseq', 'reverb')
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-onlineseq', 'reverb')
|
||||
fx_enabled = bool(data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'reverb_on', 0))
|
||||
fx_wet = data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'reverb_wet', 1)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'reverb_type',
|
||||
data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'reverb_type', 0)
|
||||
, 'int', 'Type')
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'Reverb', None)
|
||||
fx_plugindata.param_add('reverb_type', reverb_type, 'int', 'Type')
|
||||
fx_plugindata.fxvisual_add('Reverb', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
fxslot.insert(cvpj_l, ['track', trackid], 'audio', pluginid)
|
||||
|
||||
if 'eq' in used_fx_inst[used_fx_inst_i]:
|
||||
pluginid = trackid+'_eq'
|
||||
fx_enabled = bool(data_values.get_value(onlseq_data_instparams[used_fx_inst_i], 'enable_eq', 0))
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-onlineseq', 'eq')
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, fx_enabled, 1)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-onlineseq', 'eq')
|
||||
fx_plugindata.fxdata_add(fx_enabled, 1)
|
||||
for paramname in ['eq_high', 'eq_mid', 'eq_low']:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, paramname,
|
||||
data_values.get_value(onlseq_data_instparams[used_fx_inst_i], paramname, 0)
|
||||
, 'float', paramname)
|
||||
plugins.add_plug_fxvisual(cvpj_l, pluginid, 'EQ', None)
|
||||
eq_value = data_values.get_value(onlseq_data_instparams[used_fx_inst_i], paramname, 0)
|
||||
fx_plugindata.param_add(paramname, eq_value, 'float', paramname)
|
||||
fx_plugindata.fxvisual_add('EQ', None)
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
fxslot.insert(cvpj_l, ['track', trackid], 'audio', pluginid)
|
||||
|
||||
auto_nopl.to_cvpj(cvpj_l)
|
||||
|
@ -337,7 +322,6 @@ class input_onlinesequencer(plugin_input.base):
|
|||
cvpj_l['do_addloop'] = True
|
||||
cvpj_l['do_singlenotelistcut'] = True
|
||||
|
||||
cvpj_l['keynames_data'] = cvpj_l_keynames_data
|
||||
song.add_param(cvpj_l, 'bpm', bpm)
|
||||
|
||||
return json.dumps(cvpj_l)
|
||||
|
|
|
@ -55,8 +55,6 @@ class input_piyopiyo(plugin_input.base):
|
|||
cvpj_l = {}
|
||||
|
||||
for tracknum in range(3):
|
||||
pluginid = str(tracknum)
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-piyopiyo', 'wave')
|
||||
print("[input-piyopiyo] Track " + str(tracknum+1), end=",")
|
||||
trk_octave = pmdfile.read(1)[0]
|
||||
print(" Oct:" + str(trk_octave), end=",")
|
||||
|
@ -71,18 +69,25 @@ class input_piyopiyo(plugin_input.base):
|
|||
trk_waveform = struct.unpack('b'*256, pmdfile.read(256))
|
||||
trk_envelope = struct.unpack('B'*64, pmdfile.read(64))
|
||||
keyoffset[tracknum] = (trk_octave-2)*12
|
||||
plugins.add_wave(cvpj_l, pluginid, 'main', trk_waveform, -128, 128)
|
||||
plugins.add_env_blocks(cvpj_l, pluginid, 'vol', trk_envelope, 128, None, None)
|
||||
plugins.add_points_from_blocks(cvpj_l, pluginid, 'vol')
|
||||
idval = str(tracknum)
|
||||
|
||||
pluginid = str(tracknum)
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-piyopiyo', 'wave')
|
||||
inst_plugindata.wave_add('main', trk_waveform, -128, 128)
|
||||
inst_plugindata.env_blocks_add('vol', trk_envelope, 1/64, 128, None, None)
|
||||
inst_plugindata.env_points_from_blocks('vol')
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
tracks_r.track_create(cvpj_l, idval, 'instrument')
|
||||
tracks_r.track_visual(cvpj_l, idval, name='Inst #'+str(tracknum), color=track_colors[tracknum])
|
||||
tracks_r.track_inst_pluginid(cvpj_l, idval, pluginid)
|
||||
tracks_r.track_param_add(cvpj_l, idval, 'vol', trk_volume/250, 'float')
|
||||
|
||||
TrackPVol = int.from_bytes(pmdfile.read(4), "little")
|
||||
plugins.add_plug(cvpj_l, "3", 'native-piyopiyo', 'drums')
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-piyopiyo', 'drums')
|
||||
inst_plugindata.to_cvpj(cvpj_l, "3")
|
||||
|
||||
tracks_r.track_create(cvpj_l, "3", 'instrument')
|
||||
tracks_r.track_visual(cvpj_l, "3", name='perc', color=track_colors[3])
|
||||
tracks_r.track_inst_pluginid(cvpj_l, "3", "3")
|
||||
|
|
|
@ -7,14 +7,13 @@ from functions import plugins
|
|||
from functions import xtramath
|
||||
from functions import note_data
|
||||
from functions import placement_data
|
||||
from functions import data_dataset
|
||||
from functions import song
|
||||
from functions_tracks import auto_nopl
|
||||
from functions_tracks import auto_data
|
||||
from functions_tracks import fxslot
|
||||
from functions_tracks import tracks_r
|
||||
from functions_tracks import tracks_master
|
||||
from functions_plugin import soundation_values
|
||||
from functions_plugin import synth_nonfree_values
|
||||
import plugin_input
|
||||
import struct
|
||||
import json
|
||||
|
@ -29,15 +28,15 @@ def get_paramval(i_params, i_name):
|
|||
outval = i_params[i_name]['value']
|
||||
return outval
|
||||
|
||||
def get_param(i_name, i_plugid, i_params):
|
||||
plugins.add_plug_param(cvpj_l, i_plugid, i_name, get_paramval(i_params, i_name), 'float', i_name)
|
||||
def get_param(i_name, plugindata, i_params):
|
||||
plugindata.param_add(i_name, get_paramval(i_params, i_name), 'float', i_name)
|
||||
|
||||
def get_asdr(pluginid, sound_instdata):
|
||||
def get_asdr(pluginid, plugindata, sound_instdata):
|
||||
asdr_a = get_paramval(sound_instdata, 'attack')
|
||||
asdr_s = get_paramval(sound_instdata, 'sustain')
|
||||
asdr_d = get_paramval(sound_instdata, 'decay')
|
||||
asdr_r = get_paramval(sound_instdata, 'release')
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'vol', 0, asdr_a, 0, asdr_d, asdr_s, asdr_r, 1)
|
||||
plugindata.asdr_env_add('vol', 0, asdr_a, 0, asdr_d, asdr_s, asdr_r, 1)
|
||||
|
||||
def parse_clip_notes(sndstat_clip):
|
||||
cvpj_notelist = []
|
||||
|
@ -104,7 +103,9 @@ class input_soundation(plugin_input.base):
|
|||
|
||||
cvpj_l = {}
|
||||
|
||||
europa_vals = synth_nonfree_values.europa_valnames()
|
||||
dataset = data_dataset.dataset('./data_dset/soundation.dset')
|
||||
dataset_synth_nonfree = data_dataset.dataset('./data_dset/synth_nonfree.dset')
|
||||
|
||||
timeSignaturesplit = sndstat_data['timeSignature'].split('/')
|
||||
song.add_timesig(cvpj_l, int(timeSignaturesplit[0]), int(timeSignaturesplit[1]))
|
||||
bpm = sndstat_data['bpm']
|
||||
|
@ -140,10 +141,8 @@ class input_soundation(plugin_input.base):
|
|||
|
||||
if sound_chan_type == 'instrument':
|
||||
trackname = sndstat_chan['userSetName'] if 'userSetName' in sndstat_chan else sndstat_chan['name']
|
||||
pluginid = plugins.get_id()
|
||||
tracks_r.track_create(cvpj_l, trackid, 'instrument')
|
||||
tracks_r.track_visual(cvpj_l, trackid, name=trackname, color=[trackcolor[0], trackcolor[1], trackcolor[2]])
|
||||
tracks_r.track_inst_pluginid(cvpj_l, trackid, pluginid)
|
||||
tracks_r.track_param_add(cvpj_l, trackid, 'vol', sndstat_chan['volume'], 'float')
|
||||
tracks_r.track_param_add(cvpj_l, trackid, 'pan', (sndstat_chan['pan']-0.5)*2, 'float')
|
||||
tracks_r.track_param_add(cvpj_l, trackid, 'enabled', int(not sndstat_chan['mute']), 'bool')
|
||||
|
@ -160,20 +159,24 @@ class input_soundation(plugin_input.base):
|
|||
for sndstat_region in sndstat_chan['regions']:
|
||||
tracks_r.add_pl(cvpj_l, trackid, 'notes', parse_clip_notes(sndstat_region))
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
tracks_r.track_inst_pluginid(cvpj_l, trackid, pluginid)
|
||||
if 'identifier' in sound_instdata:
|
||||
instpluginname = sound_instdata['identifier']
|
||||
inst_plugindata = None
|
||||
|
||||
if instpluginname == 'com.soundation.simple-sampler':
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, '')
|
||||
get_asdr(pluginid, sound_instdata)
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', '', None)
|
||||
|
||||
get_asdr(pluginid, inst_plugindata, sound_instdata)
|
||||
|
||||
v_gain = get_paramval(sound_instdata, 'gain')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'gain', v_gain)
|
||||
inst_plugindata.dataval_add('gain', v_gain)
|
||||
|
||||
v_start = get_paramval(sound_instdata, 'start')
|
||||
v_end = get_paramval(sound_instdata, 'end')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'start', v_start)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'end', v_end)
|
||||
inst_plugindata.dataval_add('start', v_start)
|
||||
inst_plugindata.dataval_add('end', v_end)
|
||||
|
||||
v_loop_mode = get_paramval(sound_instdata, 'loop_mode')
|
||||
v_loop_start = get_paramval(sound_instdata, 'loop_start')
|
||||
|
@ -185,8 +188,8 @@ class input_soundation(plugin_input.base):
|
|||
cvpj_loopdata['mode'] = "normal"
|
||||
cvpj_loopdata['points'] = [v_loop_start, v_loop_end]
|
||||
else: cvpj_loopdata['enabled'] = 0
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', cvpj_loopdata)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "percent")
|
||||
inst_plugindata.dataval_add('loop', cvpj_loopdata)
|
||||
inst_plugindata.dataval_add('point_value_type', "percent")
|
||||
|
||||
v_coarse = (get_paramval(sound_instdata, 'coarse')-0.5)*2
|
||||
v_fine = (get_paramval(sound_instdata, 'fine')-0.5)*2
|
||||
|
@ -204,99 +207,84 @@ class input_soundation(plugin_input.base):
|
|||
if v_interpolation_mode == 0: cvpj_interpolation = "none"
|
||||
if v_interpolation_mode == 1: cvpj_interpolation = "linear"
|
||||
if v_interpolation_mode > 1: cvpj_interpolation = "sinc"
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'interpolation', cvpj_interpolation)
|
||||
inst_plugindata.dataval_add('interpolation', cvpj_interpolation)
|
||||
|
||||
else:
|
||||
if instpluginname != 'com.soundation.europa':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-soundation', instpluginname)
|
||||
elif instpluginname == 'com.soundation.drummachine':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-soundation', instpluginname)
|
||||
kit_name = get_paramval(sound_instdata, 'kit_name')
|
||||
for paramname in ["gain_2", "hold_1", "pitch_6", "gain_1", "decay_5", "gain_5", "hold_0", "hold_2", "pitch_7", "gain_0", "decay_6", "gain_3", "hold_5", "pitch_3", "decay_4", "pitch_4", "gain_6", "decay_7", "pitch_2", "hold_6", "decay_1", "decay_3", "decay_0", "decay_2", "gain_7", "pitch_0", "pitch_5", "hold_3", "pitch_1", "hold_4", "hold_7", "gain_4"]:
|
||||
get_param(paramname, inst_plugindata, sound_instdata)
|
||||
inst_plugindata.dataval_add('kit_name', kit_name)
|
||||
|
||||
if instpluginname == 'com.soundation.GM-2':
|
||||
get_asdr(pluginid, sound_instdata)
|
||||
if 'value' in sound_instdata['sample_pack']:
|
||||
sample_pack = get_paramval(sound_instdata, 'sample_pack')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'sample_pack', sample_pack)
|
||||
elif instpluginname == 'com.soundation.europa':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'synth-nonfree', 'europa')
|
||||
paramlist = dataset_synth_nonfree.params_list('plugin', 'europa')
|
||||
for paramid in paramlist:
|
||||
outval = None
|
||||
if paramid in sound_instdata:
|
||||
if 'value' in sound_instdata[paramid]: outval = sound_instdata[paramid]['value']
|
||||
inst_plugindata.param_add_dset(paramid, outval, dataset_synth_nonfree, 'plugin', 'europa')
|
||||
|
||||
elif instpluginname == 'com.soundation.SAM-1':
|
||||
get_asdr(pluginid, sound_instdata)
|
||||
sound_instdata['sample_pack'] = plugins.add_plug_data(cvpj_l, pluginid, 'sample_pack', None)
|
||||
elif instpluginname == 'com.soundation.GM-2':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-soundation', instpluginname)
|
||||
get_asdr(pluginid, inst_plugindata, sound_instdata)
|
||||
if 'value' in sound_instdata['sample_pack']:
|
||||
sample_pack = get_paramval(sound_instdata, 'sample_pack')
|
||||
inst_plugindata.dataval_add('sample_pack', sample_pack)
|
||||
|
||||
elif instpluginname == 'com.soundation.simple':
|
||||
get_asdr(pluginid, sound_instdata)
|
||||
asdrf_a = get_paramval(sound_instdata, 'filter_attack')
|
||||
asdrf_s = get_paramval(sound_instdata, 'filter_decay')
|
||||
asdrf_d = get_paramval(sound_instdata, 'filter_sustain')
|
||||
asdrf_r = get_paramval(sound_instdata, 'filter_release')
|
||||
asdrf_i = get_paramval(sound_instdata, 'filter_int')
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'cutoff', 0, asdrf_a, 0, asdrf_d, asdrf_s, asdrf_r, asdrf_i)
|
||||
filter_cutoff = xtramath.between_from_one(20, 7500, get_paramval(sound_instdata, 'filter_cutoff'))
|
||||
filter_reso = get_paramval(sound_instdata, 'filter_resonance')
|
||||
plugins.add_filter(cvpj_l, pluginid, True, filter_cutoff, filter_reso, 'lowpass', None)
|
||||
for oscnum in range(4):
|
||||
for paramtype in ['detune','pitch','type','vol']:
|
||||
get_param('osc_'+str(oscnum)+'_'+paramtype, pluginid, sound_instdata)
|
||||
for snd_param in ['noise_vol', 'noise_color']:
|
||||
get_param(snd_param, pluginid, sound_instdata)
|
||||
|
||||
elif instpluginname == 'com.soundation.supersaw':
|
||||
get_asdr(pluginid, sound_instdata)
|
||||
|
||||
elif instpluginname == 'com.soundation.noiser':
|
||||
get_asdr(pluginid, sound_instdata)
|
||||
elif instpluginname == 'com.soundation.noiser':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-soundation', instpluginname)
|
||||
get_asdr(pluginid, inst_plugindata, sound_instdata)
|
||||
|
||||
elif instpluginname == 'com.soundation.drummachine':
|
||||
kit_name = get_paramval(sound_instdata, 'kit_name')
|
||||
for paramname in ["gain_2", "hold_1", "pitch_6", "gain_1", "decay_5", "gain_5", "hold_0", "hold_2", "pitch_7", "gain_0", "decay_6", "gain_3", "hold_5", "pitch_3", "decay_4", "pitch_4", "gain_6", "decay_7", "pitch_2", "hold_6", "decay_1", "decay_3", "decay_0", "decay_2", "gain_7", "pitch_0", "pitch_5", "hold_3", "pitch_1", "hold_4", "hold_7", "gain_4"]:
|
||||
get_param(paramname, pluginid, sound_instdata)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'kit_name', kit_name)
|
||||
elif instpluginname == 'com.soundation.SAM-1':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-soundation', instpluginname)
|
||||
get_asdr(pluginid, inst_plugindata, sound_instdata)
|
||||
sound_instdata['sample_pack'] = inst_plugindata.dataval_add('sample_pack', None)
|
||||
|
||||
elif instpluginname == 'com.soundation.europa':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'synth-nonfree', 'Europa')
|
||||
for paramname in europa_vals:
|
||||
eur_value_type, eur_cvpj_name = europa_vals[paramname]
|
||||
value = sound_instdata["/custom_properties/"+paramname]['value']
|
||||
#print(paramname, eur_value_type, value)
|
||||
if eur_value_type == 'number':
|
||||
plugins.add_plug_param(cvpj_l, pluginid, eur_cvpj_name, float(value), 'float', paramname)
|
||||
else:
|
||||
if paramname in ['Curve1','Curve2','Curve3','Curve4','Curve']:
|
||||
value = value.split(',')
|
||||
value = [int(x) for x in value] if value != [''] else []
|
||||
plugins.add_plug_data(cvpj_l, pluginid, eur_cvpj_name, value)
|
||||
elif instpluginname in ['com.soundation.fm_synth', 'com.soundation.mono', 'com.soundation.spc', 'com.soundation.supersaw', 'com.soundation.the_wub_machine', 'com.soundation.va_synth']:
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-soundation', instpluginname)
|
||||
paramlist = dataset.params_list('plugin', instpluginname)
|
||||
for paramid in paramlist:
|
||||
outval = None
|
||||
if paramid in sound_instdata:
|
||||
if 'value' in sound_instdata[paramid]: outval = sound_instdata[paramid]['value']
|
||||
inst_plugindata.param_add_dset(paramid, outval, dataset, 'plugin', instpluginname)
|
||||
|
||||
elif instpluginname == 'com.soundation.spc':
|
||||
for paramname in soundation_values.spc_vals():
|
||||
get_param(paramname, pluginid, sound_instdata)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'cuts', sound_instdata['cuts'])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'envelopes', sound_instdata['envelopes'])
|
||||
# plugins.add_plug_data(cvpj_l, pluginid, 'pack', sound_instdata['pack'])
|
||||
# get_param('bite', pluginid, sound_instdata)
|
||||
# get_param('msl', pluginid, sound_instdata)
|
||||
# get_param('punch', pluginid, sound_instdata)
|
||||
# for num in range(16):
|
||||
# for paramtype in ['gain','pan','pitch']:
|
||||
# get_param(paramtype+'_'+str(num), pluginid, sound_instdata)
|
||||
if instpluginname == 'com.soundation.spc':
|
||||
inst_plugindata.dataval_add('cuts', sound_instdata['cuts'])
|
||||
inst_plugindata.dataval_add('envelopes', sound_instdata['envelopes'])
|
||||
|
||||
else:
|
||||
snd_params = []
|
||||
if instpluginname == 'com.soundation.va_synth': snd_params = ["aatt", "adec", "arel", "asus", "fatt", "fdec", "fdyn", "feg", "ffreq", "frel", "fres", "fsus", "glide_bend", "glide_mode", "glide_rate", "lfolpf", "lfoosc", "lforate", "octave", "osc_2_fine", "osc_2_mix", "osc_2_noise", "osc_2_octave", "tune"]
|
||||
elif instpluginname == 'com.soundation.supersaw': snd_params = ["detune", "spread"]
|
||||
elif instpluginname == 'com.soundation.fm_synth': snd_params = ['p'+str(x) for x in range(137)]
|
||||
elif instpluginname == 'com.soundation.mono': snd_params = ['filter_int','cutoff','resonance','pw','filter_decay','mix','amp_decay','glide']
|
||||
elif instpluginname == 'com.soundation.the_wub_machine': snd_params = ['filter_cutoff','filter_drive','filter_resonance','filter_type','filth_active','filth_amount','lfo_depth','lfo_keytracking','lfo_loop','lfo_phase','lfo_retrigger','lfo_speed','lfo_type','msl_amount','osc1_gain','osc1_glide','osc1_pan','osc1_pitch','osc1_shape','osc1_type','osc2_gain','osc2_glide','osc2_pan','osc2_pitch','osc2_shape','osc2_type','osc_sub_bypass_filter','osc_sub_gain','osc_sub_glide','osc_sub_shape','osc_sub_volume_lfo','reese_active','unison_active','unison_amount','unison_count']
|
||||
for snd_param in snd_params:
|
||||
get_param(snd_param, pluginid, sound_instdata)
|
||||
if instpluginname == 'com.soundation.supersaw':
|
||||
get_asdr(pluginid, inst_plugindata, sound_instdata)
|
||||
|
||||
elif instpluginname == 'com.soundation.simple':
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-soundation', instpluginname)
|
||||
get_asdr(pluginid, inst_plugindata, sound_instdata)
|
||||
asdrf_a = get_paramval(sound_instdata, 'filter_attack')
|
||||
asdrf_s = get_paramval(sound_instdata, 'filter_decay')
|
||||
asdrf_d = get_paramval(sound_instdata, 'filter_sustain')
|
||||
asdrf_r = get_paramval(sound_instdata, 'filter_release')
|
||||
asdrf_i = get_paramval(sound_instdata, 'filter_int')
|
||||
inst_plugindata.asdr_env_add('cutoff', 0, asdrf_a, 0, asdrf_d, asdrf_s, asdrf_r, asdrf_i)
|
||||
filter_cutoff = xtramath.between_from_one(20, 7500, get_paramval(sound_instdata, 'filter_cutoff'))
|
||||
filter_reso = get_paramval(sound_instdata, 'filter_resonance')
|
||||
inst_plugindata.filter_add(True, filter_cutoff, filter_reso, 'lowpass', None)
|
||||
for oscnum in range(4):
|
||||
for paramtype in ['detune','pitch','type','vol']: get_param('osc_'+str(oscnum)+'_'+paramtype, inst_plugindata, sound_instdata)
|
||||
for snd_param in ['noise_vol', 'noise_color']: get_param(snd_param, inst_plugindata, sound_instdata)
|
||||
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
sound_chan_effects = sndstat_chan['effects']
|
||||
for sound_chan_effect in sound_chan_effects:
|
||||
fxpluginid = plugins.get_id()
|
||||
fxpluginname = sound_chan_effect['identifier']
|
||||
fxenabled = not sound_chan_effect['bypass']
|
||||
if ismaster: fxslot.insert(cvpj_l, ['master'], 'audio', fxpluginid)
|
||||
else: fxslot.insert(cvpj_l, ['track', trackid], 'audio', fxpluginid)
|
||||
fxslot.insert(cvpj_l, ['master'] if ismaster else ['track', trackid], 'audio', fxpluginid)
|
||||
|
||||
if fxpluginname == 'com.soundation.parametric-eq':
|
||||
plugins.add_plug(cvpj_l, fxpluginid, 'universal', 'eq-bands')
|
||||
plugins.add_plug_fxdata(cvpj_l, fxpluginid, fxenabled, 1)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'eq-bands')
|
||||
fx_plugindata.fxdata_add(fxenabled, 1)
|
||||
for eqname in ["highshelf","hpf","lowshelf","lpf","peak1","peak2","peak3","peak4"]:
|
||||
|
||||
eq_bandtype = 'peak'
|
||||
|
@ -325,35 +313,24 @@ class input_soundation(plugin_input.base):
|
|||
band_res = 0.1 * math.exp(band_res)
|
||||
band_res = xtramath.logpowmul(band_res, -1)
|
||||
|
||||
#print(eq_bandtype, band_res)
|
||||
|
||||
plugins.add_eqband(cvpj_l, fxpluginid, int(band_enable), band_freq, band_gain, eq_bandtype, band_res, None)
|
||||
fx_plugindata.eqband_add(int(band_enable), band_freq, band_gain, eq_bandtype, band_res, None)
|
||||
|
||||
master_gain = get_paramval(sound_chan_effect, 'master_gain')
|
||||
master_gain = (master_gain-0.5)*40
|
||||
plugins.add_plug_param(cvpj_l, fxpluginid, 'gain_out', master_gain, 'float', 'Out Gain')
|
||||
fx_plugindata.param_add('gain_out', master_gain, 'float', 'Out Gain')
|
||||
|
||||
else:
|
||||
plugins.add_plug(cvpj_l, fxpluginid, 'native-soundation', fxpluginname)
|
||||
plugins.add_plug_fxdata(cvpj_l, fxpluginid, fxenabled, 1)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-soundation', fxpluginname)
|
||||
fx_plugindata.fxdata_add(fxenabled, 1)
|
||||
|
||||
snd_params = []
|
||||
paramlist = dataset.params_list('plugin', fxpluginname)
|
||||
if paramlist:
|
||||
for paramid in paramlist:
|
||||
outval = None
|
||||
if paramid in sound_chan_effect:
|
||||
if 'value' in sound_chan_effect[paramid]: outval = sound_chan_effect[paramid]['value']
|
||||
fx_plugindata.param_add_dset(paramid, outval, dataset, 'plugin', fxpluginname)
|
||||
|
||||
if fxpluginname == 'com.soundation.compressor': snd_params = ['gain','release','ratio','threshold','attack']
|
||||
elif fxpluginname == 'com.soundation.degrader': snd_params = ['gain','rate','reduction','mix']
|
||||
elif fxpluginname == 'com.soundation.delay': snd_params = ['dry','feedback','feedback_filter','timeBpmSync','timeL','timeLSynced','timeR','timeRSynced','wet']
|
||||
elif fxpluginname == 'com.soundation.distortion': snd_params = ['gain','volume','mode']
|
||||
elif fxpluginname == 'com.soundation.equalizer': snd_params = ['low','mid','high']
|
||||
elif fxpluginname == 'com.soundation.fakie': snd_params = ['attack','hold','release','depth']
|
||||
elif fxpluginname == 'com.soundation.filter': snd_params = ['cutoff','resonance','mode']
|
||||
elif fxpluginname == 'com.soundation.limiter': snd_params = ['attack','gain','release','threshold']
|
||||
elif fxpluginname == 'com.soundation.parametric-eq': snd_params = ["highshelf_enable", "highshelf_freq", "highshelf_gain", "highshelf_res", "hpf_enable", "hpf_freq", "hpf_res", "hpf_slope", "lowshelf_enable", "lowshelf_freq", "lowshelf_gain", "lowshelf_res", "lpf_enable", "lpf_freq", "lpf_res", "lpf_slope", "master_gain", "peak1_enable", "peak1_freq", "peak1_gain", "peak1_res", "peak2_enable", "peak2_freq", "peak2_gain", "peak2_res", "peak3_enable", "peak3_freq", "peak3_gain", "peak3_res", "peak4_enable", "peak4_freq", "peak4_gain", "peak4_res"]
|
||||
elif fxpluginname == 'com.soundation.phaser': snd_params = ['rateBpmSync','rateSynced','feedback','rate','range','freq','wet','dry']
|
||||
elif fxpluginname == 'com.soundation.reverb': snd_params = ['size','damp','width','wet','dry']
|
||||
elif fxpluginname == 'com.soundation.tremolo': snd_params = ['speed','depth','phase']
|
||||
elif fxpluginname == 'com.soundation.wubfilter': snd_params = ['type','cutoff','resonance','drive','lfo_type','lfo_speed','lfo_depth']
|
||||
|
||||
for snd_param in snd_params:
|
||||
get_param(snd_param, fxpluginid, sound_chan_effect)
|
||||
fx_plugindata.to_cvpj(cvpj_l, fxpluginid)
|
||||
|
||||
return json.dumps(cvpj_l)
|
||||
|
|
|
@ -6,7 +6,7 @@ from functions import note_data
|
|||
from functions import song
|
||||
from functions import colors
|
||||
from functions import plugins
|
||||
from functions_plugin import waveform_values
|
||||
from functions import data_dataset
|
||||
from functions_tracks import tracks_r
|
||||
from functions_tracks import fxslot
|
||||
from lxml import etree
|
||||
|
@ -26,12 +26,12 @@ def get_plugins(xml_track, trackid):
|
|||
if plugintype not in ['volume', 'level']:
|
||||
|
||||
if plugintype != None:
|
||||
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
if plugintype == '8bandEq':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'eq-bands')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'num_bands', 8)
|
||||
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'eq-bands')
|
||||
fx_plugindata.dataval_add('num_bands', 8)
|
||||
|
||||
for num in range(8):
|
||||
eqnumtxt = str(num+1)
|
||||
|
@ -57,39 +57,40 @@ def get_plugins(xml_track, trackid):
|
|||
pass
|
||||
else:
|
||||
band_q = (10-float(band_q))/10
|
||||
|
||||
|
||||
band_freq = note_data.note_to_freq(band_freq-72)
|
||||
|
||||
plugins.add_eqband(cvpj_l, pluginid, int(band_enable), band_freq, band_gain, band_shape, band_q, typenames[1])
|
||||
fx_plugindata.eqband_add(int(band_enable), band_freq, band_gain, band_shape, band_q, typenames[1])
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif plugintype == 'comp':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'universal', 'compressor')
|
||||
waveform_pvs = waveform_params[plugintype]
|
||||
for waveform_pv in waveform_pvs:
|
||||
#print('-', waveform_pv)
|
||||
paramtype, paramfb = waveform_pvs[waveform_pv]
|
||||
paramval = xml_getvalue(xml_part, waveform_pv, paramfb)
|
||||
if waveform_pv == 'attack': plugins.add_plug_param(cvpj_l, pluginid, 'attack', float(paramval)/1000, 'float', 'attack')
|
||||
if waveform_pv == 'inputDb': plugins.add_plug_param(cvpj_l, pluginid, 'pregain', float(paramval), 'float', 'pregain')
|
||||
if waveform_pv == 'knee': plugins.add_plug_param(cvpj_l, pluginid, 'knee', float(paramval), 'float', 'knee')
|
||||
if waveform_pv == 'outputDb': plugins.add_plug_param(cvpj_l, pluginid, 'postgain', float(paramval), 'float', 'postgain')
|
||||
if waveform_pv == 'ratio': plugins.add_plug_param(cvpj_l, pluginid, 'ratio', float(paramval), 'float', 'ratio')
|
||||
if waveform_pv == 'release': plugins.add_plug_param(cvpj_l, pluginid, 'release', float(paramval)/1000, 'float', 'release')
|
||||
if waveform_pv == 'sidechainTrigger': plugins.add_plug_param(cvpj_l, pluginid, 'sidechain_on', bool(paramval), 'float', 'sidechain on')
|
||||
if waveform_pv == 'threshold': plugins.add_plug_param(cvpj_l, pluginid, 'threshold', float(paramval), 'float', 'threshold')
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'universal', 'compressor')
|
||||
paramlist = dataset.params_list('plugin', plugintype)
|
||||
if paramlist:
|
||||
for paramid in paramlist:
|
||||
dset_paramdata = dataset.params_i_get('plugin', plugintype, paramid)
|
||||
paramtype, paramfb = dset_paramdata[1], dset_paramdata[2]
|
||||
paramval = xml_getvalue(xml_part, paramid, paramfb)
|
||||
if paramid == 'attack': fx_plugindata.param_add('attack', float(paramval)/1000, 'float', 'attack')
|
||||
if paramid == 'inputDb': fx_plugindata.param_add('pregain', float(paramval), 'float', 'pregain')
|
||||
if paramid == 'knee': fx_plugindata.param_add('knee', float(paramval), 'float', 'knee')
|
||||
if paramid == 'outputDb': fx_plugindata.param_add('postgain', float(paramval), 'float', 'postgain')
|
||||
if paramid == 'ratio': fx_plugindata.param_add('ratio', float(paramval), 'float', 'ratio')
|
||||
if paramid == 'release': fx_plugindata.param_add('release', float(paramval)/1000, 'float', 'release')
|
||||
if paramid == 'sidechainTrigger': fx_plugindata.param_add('sidechain_on', bool(paramval), 'float', 'sidechain on')
|
||||
if paramid == 'threshold': fx_plugindata.param_add('threshold', float(paramval), 'float', 'threshold')
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
elif plugintype in waveform_params:
|
||||
waveform_pvs = waveform_params[plugintype]
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-tracktion', plugintype)
|
||||
plugins.add_plug_fxdata(cvpj_l, pluginid, int(xml_getvalue(xml_part, 'enabled', 1)), 1)
|
||||
|
||||
for waveform_pv in waveform_pvs:
|
||||
paramtype, paramfb = waveform_pvs[waveform_pv]
|
||||
paramval = xml_getvalue(xml_part, waveform_pv, paramfb)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, waveform_pv, paramval, paramtype, waveform_pv)
|
||||
else:
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'native-tracktion', plugintype)
|
||||
paramlist = dataset.params_list('plugin', plugintype)
|
||||
if paramlist:
|
||||
for paramid in paramlist:
|
||||
dset_paramdata = dataset.params_i_get('plugin', plugintype, paramid)
|
||||
paramval = xml_getvalue(xml_part, paramid, dset_paramdata[2])
|
||||
fx_plugindata.param_add_dset(paramid, paramval, dataset, 'plugin', plugintype)
|
||||
fx_plugindata.fxdata_add(int(xml_getvalue(xml_part, 'enabled', 1)), 1)
|
||||
|
||||
if plugintype == 'pitchShifter': plugins.add_plug_data(cvpj_l, pluginid, 'elastiqueOptions', xml_getvalue(xml_part, 'elastiqueOptions', '1/0/0/0/64'))
|
||||
if plugintype == 'lowpass': plugins.add_plug_data(cvpj_l, pluginid, 'mode', xml_getvalue(xml_part, 'mode', 'lowpass'))
|
||||
fx_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
if trackid == None: fxslot.insert(cvpj_l, ['master'], 'audio', pluginid)
|
||||
else: fxslot.insert(cvpj_l, ['track', trackid], 'audio', pluginid)
|
||||
|
@ -109,7 +110,7 @@ class input_cvpj_f(plugin_input.base):
|
|||
}
|
||||
def supported_autodetect(self): return False
|
||||
def parse(self, input_file, extra_param):
|
||||
global waveform_params
|
||||
global dataset
|
||||
global cvpj_l
|
||||
#bytestream = open(input_file, 'r')
|
||||
#file_data = bytestream.read()
|
||||
|
@ -119,7 +120,7 @@ class input_cvpj_f(plugin_input.base):
|
|||
|
||||
cvpj_l = {}
|
||||
|
||||
waveform_params = waveform_values.devicesparam()
|
||||
dataset = data_dataset.dataset('./data_dset/waveform.dset')
|
||||
|
||||
tempo = 120
|
||||
timesig = [4,4]
|
||||
|
|
|
@ -5,7 +5,7 @@ from functions_plugin import format_caustic
|
|||
from functions import audio_wav
|
||||
from functions import auto
|
||||
from functions import data_bytes
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import note_data
|
||||
from functions import plugins
|
||||
from functions import placements
|
||||
|
@ -43,44 +43,11 @@ caustic_fxtype[19] = 'vibrato'
|
|||
caustic_fxtype[20] = 'tremolo'
|
||||
caustic_fxtype[21] = 'autopan'
|
||||
|
||||
master_idnames = {}
|
||||
|
||||
master_idnames[1] = ['delay', 'time']
|
||||
master_idnames[2] = ['delay', 'feedback']
|
||||
master_idnames[3] = ['delay', 'damping']
|
||||
master_idnames[4] = ['delay', 'wet']
|
||||
master_idnames[5] = ['delay', 'pan1']
|
||||
master_idnames[6] = ['delay', 'pan2']
|
||||
master_idnames[7] = ['delay', 'pan3']
|
||||
master_idnames[8] = ['delay', 'pan4']
|
||||
master_idnames[9] = ['delay', 'pan5']
|
||||
|
||||
master_idnames[16] = ['reverb', 'predelay']
|
||||
master_idnames[17] = ['reverb', 'room_size']
|
||||
master_idnames[18] = ['reverb', 'hf_damping']
|
||||
master_idnames[19] = ['reverb', 'diffuse']
|
||||
master_idnames[20] = ['reverb', 'dither_echoes']
|
||||
master_idnames[21] = ['reverb', 'early_reflect']
|
||||
master_idnames[22] = ['reverb', 'er_decay']
|
||||
master_idnames[23] = ['reverb', 'stereo_delay']
|
||||
master_idnames[24] = ['reverb', 'stereo_spread']
|
||||
master_idnames[25] = ['reverb', 'wet']
|
||||
|
||||
master_idnames[30] = ['eq', 'low']
|
||||
master_idnames[31] = ['eq', 'freq_lowmid']
|
||||
master_idnames[32] = ['eq', 'mid']
|
||||
master_idnames[33] = ['eq', 'freq_midhigh']
|
||||
master_idnames[34] = ['eq', 'high']
|
||||
|
||||
master_idnames[35] = ['limiter', 'pre']
|
||||
master_idnames[36] = ['limiter', 'attack']
|
||||
master_idnames[37] = ['limiter', 'release']
|
||||
master_idnames[38] = ['limiter', 'post']
|
||||
master_idnames[39] = ['main', 'master']
|
||||
master_idnames[40] = ['delay', 'muted']
|
||||
master_idnames[41] = ['reverb', 'muted']
|
||||
master_idnames[42] = ['eq', 'muted']
|
||||
master_idnames[43] = ['limiter', 'muted']
|
||||
#master_idnames[39] = ['main', 'master']
|
||||
#master_idnames[40] = ['delay', 'muted']
|
||||
#master_idnames[41] = ['reverb', 'muted']
|
||||
#master_idnames[42] = ['eq', 'muted']
|
||||
#master_idnames[43] = ['limiter', 'muted']
|
||||
|
||||
patletters = ['A','B','C','D']
|
||||
|
||||
|
@ -95,6 +62,31 @@ def parse_notelist(causticpattern, machid):
|
|||
notelist.append(notedata)
|
||||
return notelist
|
||||
|
||||
def add_caustic_fx(cvpj_l, autoloc, CausticFXData, start_plugid):
|
||||
for slotnum in CausticFXData:
|
||||
if CausticFXData[slotnum] != {}:
|
||||
slot_fxslotdata = CausticFXData[slotnum]['controls']
|
||||
fxpluginid = start_plugid+'_slot'+str(slotnum)
|
||||
|
||||
fxtype = caustic_fxtype[CausticFXData[slotnum]['type']]
|
||||
slotfx_plugindata = plugins.cvpj_plugin('deftype', 'native-caustic', fxtype)
|
||||
slotfx_plugindata.fxdata_add(bool(not int(slot_fxslotdata[5])), 1)
|
||||
fx_name, fx_color = dataset.object_get_name_color('plugin_fx', fxtype)
|
||||
slotfx_plugindata.fxvisual_add(fx_name, fx_color)
|
||||
|
||||
paramlist = dataset.params_list('plugin_fx', fxtype)
|
||||
|
||||
if paramlist != None:
|
||||
for paramid in paramlist:
|
||||
if paramid != '5':
|
||||
paramid = int(paramid)
|
||||
paramval = slot_fxslotdata[paramid] if paramid in slot_fxslotdata else None
|
||||
slotfx_plugindata.param_add_dset(str(paramid), paramval, dataset, 'plugin_fx', fxtype)
|
||||
|
||||
slotfx_plugindata.to_cvpj(cvpj_l, fxpluginid)
|
||||
|
||||
fxslot.insert(cvpj_l, autoloc, 'audio', fxpluginid)
|
||||
|
||||
def loopmode_cvpj(wavdata):
|
||||
lm = wavdata['mode']
|
||||
data_end = wavdata['end']
|
||||
|
@ -166,6 +158,7 @@ class input_cvpj_r(plugin_input.base):
|
|||
}
|
||||
def supported_autodetect(self): return False
|
||||
def parse(self, input_file, extra_param):
|
||||
global dataset
|
||||
CausticData = format_caustic.deconstruct_main(input_file)
|
||||
machines = CausticData['Machines']
|
||||
SEQN = CausticData['SEQN']
|
||||
|
@ -174,8 +167,7 @@ class input_cvpj_r(plugin_input.base):
|
|||
MSTR = CausticData['MSTR']
|
||||
AUTO_data = CausticData['AUTO']
|
||||
|
||||
idvals_inst_caustic = idvals.parse_idvalscsv('data_idvals/caustic_inst.csv')
|
||||
idvals_fx_caustic = idvals.parse_idvalscsv('data_idvals/caustic_fx.csv')
|
||||
dataset = data_dataset.dataset('./data_dset/caustic.dset')
|
||||
|
||||
cvpj_l = {}
|
||||
|
||||
|
@ -218,7 +210,8 @@ class input_cvpj_r(plugin_input.base):
|
|||
|
||||
machid = str(machnum)
|
||||
|
||||
cvpj_trackname = machine['name'] if 'name' in machine else idvals.get_idval(idvals_inst_caustic, machine['id'], 'name')
|
||||
dset_name, cvpj_trackcolor = dataset.object_get_name_color('plugin_inst', machine['id'])
|
||||
cvpj_trackname = machine['name'] if 'name' in machine else dset_name
|
||||
|
||||
cvpj_notelistindex = {}
|
||||
|
||||
|
@ -226,8 +219,6 @@ class input_cvpj_r(plugin_input.base):
|
|||
cvpj_trackid = 'MACH'+machid
|
||||
cvpj_instdata = {'pluginid': pluginid}
|
||||
|
||||
cvpj_trackcolor = idvals.get_idval(idvals_inst_caustic, machine['id'], 'color')
|
||||
|
||||
tracks_ri.track_create(cvpj_l, cvpj_trackid, 'instrument')
|
||||
tracks_ri.track_visual(cvpj_l, cvpj_trackid, name=cvpj_trackname, color=cvpj_trackcolor)
|
||||
tracks_ri.track_inst_pluginid(cvpj_l, cvpj_trackid, pluginid)
|
||||
|
@ -252,17 +243,17 @@ class input_cvpj_r(plugin_input.base):
|
|||
|
||||
middlenote += singlewav['key_root']-60
|
||||
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, wave_path)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'length', singlewav['samp_len'])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', "samples")
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', wave_path, None)
|
||||
inst_plugindata.dataval_add('length', singlewav['samp_len'])
|
||||
inst_plugindata.dataval_add('point_value_type', "samples")
|
||||
data_start, data_end, data_trigger, data_loopdata = loopmode_cvpj(singlewav)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'start', data_start)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'end', data_end)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', data_trigger)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', data_loopdata)
|
||||
inst_plugindata.dataval_add('start', data_start)
|
||||
inst_plugindata.dataval_add('end', data_end)
|
||||
inst_plugindata.dataval_add('trigger', data_trigger)
|
||||
inst_plugindata.dataval_add('loop', data_loopdata)
|
||||
|
||||
else:
|
||||
plugins.add_plug_multisampler(cvpj_l, pluginid)
|
||||
inst_plugindata = plugins.cvpj_plugin('multisampler', None, None)
|
||||
samplecount = 0
|
||||
for singlewav in machine['regions']:
|
||||
loopdata = None
|
||||
|
@ -276,7 +267,7 @@ class input_cvpj_r(plugin_input.base):
|
|||
regionparams['pan'] = (singlewav['pan']-0.5)*2
|
||||
regionparams['file'] = wave_path
|
||||
regionparams['start'], regionparams['end'], regionparams['trigger'], regionparams['loop'] = loopmode_cvpj(singlewav)
|
||||
plugins.add_plug_multisampler_region(cvpj_l, pluginid, regionparams)
|
||||
inst_plugindata.region_add(regionparams)
|
||||
samplecount += 1
|
||||
|
||||
pcms_c = machine['controls']
|
||||
|
@ -287,12 +278,13 @@ class input_cvpj_r(plugin_input.base):
|
|||
tracks_ri.track_param_add(cvpj_l, cvpj_trackid, 'pitch', pcms_c[3], 'float')
|
||||
tracks_ri.track_dataval_add(cvpj_l, cvpj_trackid, None, 'middlenote', -middlenote)
|
||||
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'volume', 0, pcms_c[5], 0, pcms_c[6], pcms_c[7], pcms_c[8], 1)
|
||||
inst_plugindata.asdr_env_add('volume', 0, pcms_c[5], 0, pcms_c[6], pcms_c[7], pcms_c[8], 1)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
# -------------------------------- BeatBox --------------------------------
|
||||
elif machine['id'] == 'BBOX':
|
||||
tracks_ri.track_param_add(cvpj_l, cvpj_trackid, 'usemasterpitch', False, 'bool')
|
||||
plugins.add_plug_multisampler(cvpj_l, pluginid)
|
||||
inst_plugindata = plugins.cvpj_plugin('multisampler', None, None)
|
||||
samplecount = 0
|
||||
bbox_key = -12
|
||||
for bbox_sample in machine['samples']:
|
||||
|
@ -308,22 +300,23 @@ class input_cvpj_r(plugin_input.base):
|
|||
regionparams['trigger'] = 'oneshot'
|
||||
regionparams['loop'] = {}
|
||||
regionparams['loop']['enabled'] = 0
|
||||
plugins.add_plug_multisampler_region(cvpj_l, pluginid, regionparams)
|
||||
inst_plugindata.region_add(regionparams)
|
||||
samplecount += 1
|
||||
bbox_key += 1
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
elif machine['id'] == 'NULL':
|
||||
pass
|
||||
else:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'native-caustic', machine['id'])
|
||||
inst_plugindata = plugins.cvpj_plugin('deftype', 'native-caustic', machine['id'])
|
||||
if 'controls' in machine:
|
||||
for paramid in machine['controls']:
|
||||
plugins.add_plug_param(cvpj_l, pluginid, str(paramid), machine['controls'][paramid], 'float', str(paramid))
|
||||
if 'customwaveform1' in machine:
|
||||
wavedata = list(struct.unpack("<"+("h"*660), machine['customwaveform1']))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'customwaveform1', wavedata)
|
||||
if 'customwaveform2' in machine:
|
||||
wavedata = list(struct.unpack("<"+("h"*660), machine['customwaveform2']))
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'customwaveform2', wavedata)
|
||||
paramlist = dataset.params_list('plugin', machine['id'])
|
||||
for paramid in paramlist:
|
||||
paramdata = params_i_get('plugin', machine['id'], paramid)
|
||||
inst_plugindata.param_add_dset(str(paramid), machine['controls'][int(paramid)], dataset, 'plugin_inst', machine['id'])
|
||||
|
||||
if 'customwaveform1' in machine: inst_plugindata.wave_add('customwaveform1', list(struct.unpack("<"+("h"*660), machine['customwaveform1'])), -157, 157)
|
||||
if 'customwaveform2' in machine: inst_plugindata.wave_add('customwaveform2', list(struct.unpack("<"+("h"*660), machine['customwaveform2'])), -157, 157)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
tracks_ri.track_param_add(cvpj_l, cvpj_trackid, 'vol', mach_mixer_vol[machnum-1], 'float')
|
||||
tracks_ri.track_param_add(cvpj_l, cvpj_trackid, 'pan', mach_mixer_pan[machnum-1], 'float')
|
||||
|
@ -341,20 +334,7 @@ class input_cvpj_r(plugin_input.base):
|
|||
tracks_ri.notelistindex_add(cvpj_l, patid, cvpj_trackid, notelist)
|
||||
tracks_ri.notelistindex_visual(cvpj_l, patid, cvpj_trackid, name=pattern)
|
||||
|
||||
if machnum in CausticData['EFFX']:
|
||||
CausticFXData = CausticData['EFFX'][machnum]
|
||||
for slotnum in CausticFXData:
|
||||
if CausticFXData[slotnum] != {}:
|
||||
slot_fxslotdata = CausticFXData[slotnum]['controls']
|
||||
fxpluginid = 'machine'+str(machnum)+'_slot'+str(slotnum)
|
||||
|
||||
plugins.add_plug(cvpj_l, fxpluginid, 'native-caustic', caustic_fxtype[CausticFXData[slotnum]['type']])
|
||||
plugins.add_plug_fxdata(cvpj_l, fxpluginid, int(not int(slot_fxslotdata[5])), 1)
|
||||
|
||||
for paramid in slot_fxslotdata:
|
||||
plugins.add_plug_param(cvpj_l, fxpluginid, str(paramid), slot_fxslotdata[paramid], 'float', str(paramid))
|
||||
|
||||
fxslot.insert(cvpj_l, ['track', cvpj_trackid], 'audio', fxpluginid)
|
||||
if machnum in CausticData['EFFX']: add_caustic_fx(cvpj_l, ['track', cvpj_trackid], CausticData['EFFX'][machnum], 'machine'+str(machnum))
|
||||
|
||||
slot_mixereqfxslotdata = {}
|
||||
slot_mixereqfxslotdata['bass'] = mach_mixer_eq_low[machnum-1]
|
||||
|
@ -365,19 +345,22 @@ class input_cvpj_r(plugin_input.base):
|
|||
trackfx.send_add(cvpj_l, cvpj_trackid, 'master_reverb', mach_mixer_send_reverb[machnum-1], cvpj_trackid+'_send_reverb')
|
||||
|
||||
mixereq_plugid = 'machine'+str(machnum)+'_eq'
|
||||
plugins.add_plug(cvpj_l, mixereq_plugid, 'native-caustic', 'mixer_eq')
|
||||
plugins.add_plug_param(cvpj_l, mixereq_plugid, 'bass', mach_mixer_eq_low[machnum-1], 'float', 'bass')
|
||||
plugins.add_plug_param(cvpj_l, mixereq_plugid, 'mid', mach_mixer_eq_mid[machnum-1], 'float', 'mid')
|
||||
plugins.add_plug_param(cvpj_l, mixereq_plugid, 'high', mach_mixer_eq_high[machnum-1], 'float', 'high')
|
||||
mixereq_plugindata = plugins.cvpj_plugin('deftype', 'native-caustic', 'mixer_eq')
|
||||
mixereq_plugindata.fxvisual_add('Mixer EQ', [0.67, 0.67, 0.67])
|
||||
|
||||
mixereq_plugindata.param_add_minmax('bass', mach_mixer_eq_low[machnum-1], 'float', 'bass', [0,2])
|
||||
mixereq_plugindata.param_add_minmax('mid', mach_mixer_eq_mid[machnum-1], 'float', 'mid', [0,2])
|
||||
mixereq_plugindata.param_add_minmax('high', mach_mixer_eq_high[machnum-1], 'float', 'high', [0,2])
|
||||
mixereq_plugindata.to_cvpj(cvpj_l, mixereq_plugid)
|
||||
fxslot.insert(cvpj_l, ['track', cvpj_trackid], 'audio', mixereq_plugid)
|
||||
plugins.add_plug_fxvisual(cvpj_l, mixereq_plugid, 'Mixer EQ', [0.67, 0.67, 0.67])
|
||||
|
||||
width_plugid = 'machine'+str(machnum)+'_width'
|
||||
plugins.add_plug(cvpj_l, width_plugid, 'native-caustic', 'width')
|
||||
plugins.add_plug_param(cvpj_l, width_plugid, 'width', mach_mixer_width[machnum-1], 'float', 'width')
|
||||
width_plugindata = plugins.cvpj_plugin('deftype', 'native-caustic', 'width')
|
||||
width_plugindata.fxvisual_add('Width', [0.66, 0.61, 0.76])
|
||||
width_plugindata.param_add_minmax('width', mach_mixer_width[machnum-1], 'float', 'width', [-1,1])
|
||||
width_plugindata.to_cvpj(cvpj_l, width_plugid)
|
||||
fxslot.insert(cvpj_l, ['track', cvpj_trackid], 'audio', width_plugid)
|
||||
plugins.add_plug_fxvisual(cvpj_l, width_plugid, 'Width', [0.66, 0.61, 0.76])
|
||||
|
||||
|
||||
t_track_placements = {}
|
||||
|
||||
for SEQNe in SEQN:
|
||||
|
@ -442,22 +425,14 @@ class input_cvpj_r(plugin_input.base):
|
|||
mixerid = 'MIXER_'+str(mixernum+1)
|
||||
for machnum in range(7):
|
||||
auto_machid = machnum+1+(mixernum*7)
|
||||
if machnum in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['track', 'MACH'+str(auto_machid), 'vol'], 'float', AUTO_data[mixerid][machnum], 4, 'normal')
|
||||
if (machnum*2)+8 in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['send', 'MACH'+str(auto_machid)+'_send_delay', 'amount'], 'float', AUTO_data[mixerid][(machnum*2)+8], 4, 'normal')
|
||||
if (machnum*2)+9 in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['send', 'MACH'+str(auto_machid)+'_send_reverb', 'amount'], 'float', AUTO_data[mixerid][(machnum*2)+9], 4, 'normal')
|
||||
if machnum+24 in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_eq', 'bass'], 'float', AUTO_data[mixerid][machnum+24], 4, 'normal')
|
||||
if machnum+32 in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_eq', 'mid'], 'float', AUTO_data[mixerid][machnum+32], 4, 'normal')
|
||||
if machnum+40 in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_eq', 'high'], 'float', AUTO_data[mixerid][machnum+40], 4, 'normal')
|
||||
if machnum+64 in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['track', 'MACH'+str(auto_machid), 'pan'], 'float', auto.twopoints_addmul(AUTO_data[mixerid][machnum+64],-0.5,2), 4, 'normal')
|
||||
if machnum+72 in AUTO_data[mixerid]:
|
||||
auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_width', 'width'], 'float', AUTO_data[mixerid][machnum+72], 4, 'normal')
|
||||
if machnum in AUTO_data[mixerid]: auto_nopl.twopoints(['track', 'MACH'+str(auto_machid), 'vol'], 'float', AUTO_data[mixerid][machnum], 4, 'normal')
|
||||
if (machnum*2)+8 in AUTO_data[mixerid]: auto_nopl.twopoints(['send', 'MACH'+str(auto_machid)+'_send_delay', 'amount'], 'float', AUTO_data[mixerid][(machnum*2)+8], 4, 'normal')
|
||||
if (machnum*2)+9 in AUTO_data[mixerid]: auto_nopl.twopoints(['send', 'MACH'+str(auto_machid)+'_send_reverb', 'amount'], 'float', AUTO_data[mixerid][(machnum*2)+9], 4, 'normal')
|
||||
if machnum+24 in AUTO_data[mixerid]: auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_eq', 'bass'], 'float', AUTO_data[mixerid][machnum+24], 4, 'normal')
|
||||
if machnum+32 in AUTO_data[mixerid]: auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_eq', 'mid'], 'float', AUTO_data[mixerid][machnum+32], 4, 'normal')
|
||||
if machnum+40 in AUTO_data[mixerid]: auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_eq', 'high'], 'float', AUTO_data[mixerid][machnum+40], 4, 'normal')
|
||||
if machnum+64 in AUTO_data[mixerid]: auto_nopl.twopoints(['track', 'MACH'+str(auto_machid), 'pan'], 'float', auto.twopoints_addmul(AUTO_data[mixerid][machnum+64],-0.5,2), 4, 'normal')
|
||||
if machnum+72 in AUTO_data[mixerid]: auto_nopl.twopoints(['plugin', 'machine'+str(auto_machid)+'_width', 'width'], 'float', AUTO_data[mixerid][machnum+72], 4, 'normal')
|
||||
|
||||
for mixernum in range(2):
|
||||
mixerid = 'FX_'+str(mixernum+1)
|
||||
|
@ -467,77 +442,53 @@ class input_cvpj_r(plugin_input.base):
|
|||
autofx_ctrl = autonum-(autofx_slot*8)-(autofx_num*16)
|
||||
cvpj_fx_autoid = 'machine'+str(autofx_num+1+(mixernum*7))+'_slot'+str(autofx_slot+1)
|
||||
|
||||
if autofx_ctrl == 5:
|
||||
auto_nopl.twopoints(['slot', cvpj_fx_autoid, 'enabled'], 'bool', auto.twopoints_addmul(AUTO_data[mixerid][autonum],-1,-1), 4, 'normal')
|
||||
else:
|
||||
auto_nopl.twopoints(['plugin', cvpj_fx_autoid, str(autofx_ctrl)], 'float', AUTO_data[mixerid][autonum], 4, 'normal')
|
||||
|
||||
master_params = {}
|
||||
|
||||
for causticidnum in MSTR['CCOL']:
|
||||
if causticidnum in master_idnames:
|
||||
t_fxtypeparam = master_idnames[causticidnum]
|
||||
if t_fxtypeparam[0] not in master_params: master_params[t_fxtypeparam[0]] = {}
|
||||
master_params[t_fxtypeparam[0]][t_fxtypeparam[1]] = MSTR['CCOL'][causticidnum]
|
||||
if autofx_ctrl == 5: auto_nopl.twopoints(['slot', cvpj_fx_autoid, 'enabled'], 'bool', auto.twopoints_addmul(AUTO_data[mixerid][autonum],-1,-1), 4, 'normal')
|
||||
else: auto_nopl.twopoints(['plugin', cvpj_fx_autoid, str(autofx_ctrl)], 'float', AUTO_data[mixerid][autonum], 4, 'normal')
|
||||
|
||||
master_fxchaindata = []
|
||||
|
||||
if 'EFFX' in MSTR:
|
||||
CausticFXData = MSTR['EFFX']
|
||||
for slotnum in CausticFXData:
|
||||
if CausticFXData[slotnum] != {}:
|
||||
slot_fxslotdata = CausticFXData[slotnum]['controls']
|
||||
if 'EFFX' in MSTR: add_caustic_fx(cvpj_l, ['master'], MSTR['EFFX'], 'master_slot')
|
||||
|
||||
masterslotplugid = 'master_slot'+str(slotnum)
|
||||
for fxid in ['master_delay','master_reverb','master_eq','master_limiter']:
|
||||
mfx_name, mfx_color = dataset.object_get_name_color('plugin_master_fx', fxid)
|
||||
|
||||
fxtype = caustic_fxtype[CausticFXData[slotnum]['type']]
|
||||
cvpj_fx_name = idvals.get_idval(idvals_fx_caustic, fxtype, 'name')
|
||||
cvpj_fx_color = idvals.get_idval(idvals_fx_caustic, fxtype, 'color')
|
||||
if fxid in ['master_delay','master_reverb']:
|
||||
trackfx.return_add(cvpj_l, ['master'], fxid)
|
||||
trackfx.return_visual(cvpj_l, ['master'], fxid, name=mfx_name, color=mfx_color)
|
||||
fxslot.insert(cvpj_l, ['return', None, fxid], 'audio', fxid)
|
||||
else:
|
||||
fxslot.insert(cvpj_l, ['master'], 'audio', fxid)
|
||||
|
||||
plugins.add_plug(cvpj_l, masterslotplugid, 'native-caustic', fxtype)
|
||||
plugins.add_plug_fxdata(cvpj_l, masterslotplugid, not int(slot_fxslotdata[5]), None)
|
||||
plugins.add_plug_fxvisual(cvpj_l, masterslotplugid, cvpj_fx_name, cvpj_fx_color)
|
||||
fxslot.insert(cvpj_l, ['master'], 'audio', masterslotplugid)
|
||||
masterfx_plugindata = plugins.cvpj_plugin('deftype', 'native-caustic', fxid)
|
||||
masterfx_plugindata.fxvisual_add(mfx_name, mfx_color)
|
||||
|
||||
for paramid in slot_fxslotdata:
|
||||
plugins.add_plug_param(cvpj_l, masterslotplugid, paramid, slot_fxslotdata[paramid], 'float', str(paramid))
|
||||
if fxid == 'master_delay': masterfx_plugindata.fxdata_add(not bool(MSTR['CCOL'][40]), 1)
|
||||
if fxid == 'master_reverb': masterfx_plugindata.fxdata_add(not bool(MSTR['CCOL'][41]), 1)
|
||||
if fxid == 'master_eq': masterfx_plugindata.fxdata_add(not bool(MSTR['CCOL'][42]), 1)
|
||||
if fxid == 'master_limiter': masterfx_plugindata.fxdata_add(not bool(MSTR['CCOL'][43]), 1)
|
||||
|
||||
|
||||
for fxids in [
|
||||
['master_delay', 'delay', 'Delay', [0.64, 0.78, 0.87]],
|
||||
['master_reverb', 'reverb', 'Reverb', [0.83, 0.82, 0.51]]
|
||||
]:
|
||||
trackfx.return_add(cvpj_l, ['master'], fxids[0])
|
||||
trackfx.return_visual(cvpj_l, ['master'], fxids[0], name=fxids[2], color=fxids[3])
|
||||
plugins.add_plug(cvpj_l, fxids[0], 'native-caustic', fxids[0])
|
||||
plugins.add_plug_fxdata(cvpj_l, fxids[0], True, master_params[fxids[1]]['wet'])
|
||||
fxslot.insert(cvpj_l, ['return', None, fxids[0]], 'audio', fxids[0])
|
||||
plugins.add_plug_fxvisual(cvpj_l, fxids[0], fxids[2], fxids[3])
|
||||
for paramid in master_params[fxids[1]]:
|
||||
plugins.add_plug_param(cvpj_l, fxids[0], paramid, master_params[fxids[1]][paramid], 'float', str(paramid))
|
||||
|
||||
|
||||
for fxids in [
|
||||
['master_eq', 'eq', 'Equalizer', [0.76, 0.27, 0.27]],
|
||||
['master_limiter', 'limiter', 'Limiter', [0.62, 0.49, 0.42]]
|
||||
]:
|
||||
plugins.add_plug(cvpj_l, fxids[0], 'native-caustic', fxids[0])
|
||||
plugins.add_plug_fxdata(cvpj_l, fxids[0], not int(master_params[fxids[1]]['muted']), 1)
|
||||
fxslot.insert(cvpj_l, ['master'], 'audio', fxids[0])
|
||||
plugins.add_plug_fxvisual(cvpj_l, fxids[0], fxids[2], fxids[3])
|
||||
for paramid in master_params[fxids[1]]:
|
||||
plugins.add_plug_param(cvpj_l, fxids[0], paramid, master_params[fxids[1]][paramid], 'float', str(paramid))
|
||||
|
||||
|
||||
#print(AUTO_data)
|
||||
paramlist = dataset.params_list('plugin_master_fx', fxid)
|
||||
if paramlist != None:
|
||||
for paramid in paramlist:
|
||||
paramid = int(paramid)
|
||||
paramval = MSTR['CCOL'][paramid] if paramid in MSTR['CCOL'] else None
|
||||
masterfx_plugindata.param_add_dset(str(paramid), paramval, dataset, 'plugin_master_fx', fxid)
|
||||
masterfx_plugindata.to_cvpj(cvpj_l, fxid)
|
||||
|
||||
for autonum in AUTO_data['MASTER']:
|
||||
if autonum in master_idnames:
|
||||
t_fxtypeparam = master_idnames[autonum]
|
||||
if t_fxtypeparam[0] in ['eq', 'limiter']:
|
||||
auto_nopl.twopoints(['plugin', 'master_'+t_fxtypeparam[0], t_fxtypeparam[1]], 'float', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
if t_fxtypeparam == ['main', 'master']:
|
||||
auto_nopl.twopoints(['main', 'vol'], 'float', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
if autonum in MSTR['CCOL']:
|
||||
t_fxtypeparam = MSTR['CCOL'][autonum]
|
||||
defparams = dataset.params_i_get('plugin_master_fx', fxid, str(autonum))
|
||||
if 1 <= autonum <= 9: auto_nopl.twopoints(['plugin', 'master_limiter', str(autonum)], defparams[1], AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
if 16 <= autonum <= 25: auto_nopl.twopoints(['plugin', 'master_reverb', str(autonum)], defparams[1], AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
if 30 <= autonum <= 34: auto_nopl.twopoints(['plugin', 'master_eq', str(autonum)], defparams[1], AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
if 35 <= autonum <= 38: auto_nopl.twopoints(['plugin', 'master_limiter', str(autonum)], defparams[1], AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
elif autonum == 39: auto_nopl.twopoints(['master', 'vol'], 'float', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
#elif autonum == 40: auto_nopl.twopoints(['slot', 'master_delay'], 'bool', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
#elif autonum == 41: auto_nopl.twopoints(['slot', 'master_reverb'], 'bool', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
#elif autonum == 42: auto_nopl.twopoints(['slot', 'master_eq'], 'bool', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
#elif autonum == 43: auto_nopl.twopoints(['slot', 'master_limiter'], 'bool', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
|
||||
elif autonum >= 64:
|
||||
autonum_calc = autonum - 64
|
||||
autofx_slot = (autonum_calc//8)
|
||||
|
@ -549,7 +500,7 @@ class input_cvpj_r(plugin_input.base):
|
|||
else:
|
||||
auto_nopl.twopoints(['plugin', cvpj_fx_autoid, str(autofx_ctrl-64)], 'float', AUTO_data['MASTER'][autonum], 4, 'normal')
|
||||
|
||||
tracks_master.create(cvpj_l, master_params['main']['master'])
|
||||
tracks_master.create(cvpj_l, MSTR['CCOL'][39])
|
||||
tracks_master.visual(cvpj_l, name='Master', color=[0.52, 0.52, 0.52])
|
||||
auto_nopl.to_cvpj(cvpj_l)
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
from functions import audio_wav
|
||||
from functions import auto
|
||||
from functions import data_bytes
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import note_data
|
||||
from functions import note_mod
|
||||
from functions import notelist_data
|
||||
|
@ -50,7 +50,8 @@ class input_soundclub2(plugin_input.base):
|
|||
|
||||
samplefolder = extra_param['samplefolder']
|
||||
|
||||
idvals_inst_soundclub2 = idvals.parse_idvalscsv('data_idvals/soundclub2_inst.csv')
|
||||
dataset = data_dataset.dataset('./data_dset/soundclub2.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
cvpj_l = {}
|
||||
|
||||
|
@ -147,12 +148,7 @@ class input_soundclub2(plugin_input.base):
|
|||
if sc2_insdata[0] == 1:
|
||||
t_instname = sc2_insdata[1:].decode('ascii')
|
||||
print(t_instname)
|
||||
sc2idvinst_instname = idvals.get_idval(idvals_inst_soundclub2, t_instname, 'name')
|
||||
sc2idvinst_gminst = idvals.get_idval(idvals_inst_soundclub2, t_instname, 'gm_inst')
|
||||
if sc2idvinst_gminst != None: plugins.add_plug_gm_midi(cvpj_l, pluginid, 0, sc2idvinst_gminst)
|
||||
tracks_ri.track_create(cvpj_l, cvpj_instid, 'instrument')
|
||||
tracks_ri.track_visual(cvpj_l, trackid, name=sc2_insdata[1:].decode('ascii'))
|
||||
tracks_ri.track_inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
tracks_ri.import_dset(cvpj_l, cvpj_instid, t_instname, dataset, dataset_midi, t_instname, None)
|
||||
|
||||
elif sc2_insdata[0] == 0:
|
||||
bio_sc2_insdata = data_bytes.to_bytesio(sc2_insdata)
|
||||
|
@ -167,21 +163,24 @@ class input_soundclub2(plugin_input.base):
|
|||
|
||||
wave_path = samplefolder + 'sc2_'+str(cur_instnum)+'.wav'
|
||||
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, wave_path)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'point_value_type', 'samples')
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', wave_path, None)
|
||||
inst_plugindata.dataval_add('point_value_type', 'samples')
|
||||
|
||||
if sc2_i_loopstart != 4294967295:
|
||||
loopdata = {'loop':[sc2_i_loopstart, sc2_i_samplesize]}
|
||||
cvpj_loop = {'enabled': 1, 'mode': "normal", 'points': [sc2_i_loopstart, sc2_i_samplesize]}
|
||||
else:
|
||||
loopdata = None
|
||||
cvpj_loop = {'enabled': 0}
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'loop', cvpj_loop)
|
||||
inst_plugindata.dataval_add('loop', cvpj_loop)
|
||||
inst_plugindata.dataval_add('length', sc2_i_samplesize)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
audio_wav.generate(wave_path, cvpj_wavdata, 1, sc2_i_freq, 8, cvpj_loop)
|
||||
|
||||
tracks_ri.track_create(cvpj_l, cvpj_instid, 'instrument')
|
||||
tracks_ri.track_visual(cvpj_l, cvpj_instid, name=cvpj_instname)
|
||||
tracks_ri.track_inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
tracks_ri.track_param_add(cvpj_l, cvpj_instid, 'vol', 0.3, 'float')
|
||||
|
||||
tracks_ri.add_pl(cvpj_l, cvpj_instid, 'notes', [])
|
||||
cur_instnum += 1
|
||||
|
|
|
@ -181,8 +181,11 @@ class input_1bitdragon(plugin_input.base):
|
|||
tracks_master.create(cvpj_l, onebitd_volume)
|
||||
tracks_master.visual(cvpj_l, name='Master')
|
||||
|
||||
plugins.add_plug(cvpj_l, 'master-reverb', 'simple', 'reverb')
|
||||
plugins.add_plug_fxdata(cvpj_l, 'master-reverb', int(onebitd_reverb), 0.5)
|
||||
fx_plugindata = plugins.cvpj_plugin('deftype', 'simple', 'reverb')
|
||||
fx_plugindata.fxvisual_add('Reverb', None)
|
||||
fx_plugindata.fxdata_add(onebitd_reverb, 0.5)
|
||||
fx_plugindata.to_cvpj(cvpj_l, 'master-reverb')
|
||||
|
||||
fxslot.insert(cvpj_l, ['master'], 'audio', 'master-reverb')
|
||||
|
||||
return json.dumps(cvpj_l)
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
from functions import note_data
|
||||
from functions import placement_data
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import auto
|
||||
from functions import data_bytes
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_rm
|
||||
from functions_tracks import auto_nopl
|
||||
from functions_plugparams import params_fm
|
||||
from functions_plugdata import plugin_fm
|
||||
|
||||
import plugin_input
|
||||
import json
|
||||
|
@ -155,7 +155,8 @@ class input_adlib_rol(plugin_input.base):
|
|||
global cvpj_l
|
||||
song_file = open(input_file, 'rb')
|
||||
cvpj_l = {}
|
||||
idvals_inst_adlib_rol = idvals.parse_idvalscsv('data_idvals/adlib_rol_inst.csv')
|
||||
dataset = data_dataset.dataset('./data_dset/adlib_rol.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
adlib_bnk = None
|
||||
if 'extrafile' in extra_param:
|
||||
|
@ -163,7 +164,7 @@ class input_adlib_rol(plugin_input.base):
|
|||
numinst = len(adlib_bnk[0])
|
||||
for instname in adlib_bnk[0]:
|
||||
instname_upper = instname.upper()
|
||||
adlibrol_instname = idvals.get_idval(idvals_inst_adlib_rol, instname_upper, 'name')
|
||||
adlibrol_instname, _ = dataset.object_get_name_color('inst', instname_upper)
|
||||
tracks_rm.inst_create(cvpj_l, instname_upper)
|
||||
tracks_rm.inst_visual(cvpj_l, instname_upper, name=adlibrol_instname)
|
||||
tracks_rm.inst_pluginid(cvpj_l, instname_upper, instname_upper)
|
||||
|
@ -173,8 +174,6 @@ class input_adlib_rol(plugin_input.base):
|
|||
|
||||
fmdata = params_fm.fm_data('opl2')
|
||||
|
||||
plugins.add_plug(cvpj_l, instname_upper, 'fm', 'opl2')
|
||||
|
||||
tracks_rm.inst_dataval_add(cvpj_l, instname_upper, 'instdata', 'middlenote', 0)
|
||||
if opl2data[0][0] == 1: fmdata.set_param('perctype', opl2data[0][1]-6)
|
||||
else:
|
||||
|
@ -212,14 +211,8 @@ class input_adlib_rol(plugin_input.base):
|
|||
fmdata.to_cvpj(cvpj_l, instname_upper)
|
||||
|
||||
else:
|
||||
for instassocgm in idvals_inst_adlib_rol:
|
||||
gmmidiinst = idvals_inst_adlib_rol[instassocgm]['gm_inst']
|
||||
rolname = idvals_inst_adlib_rol[instassocgm]['name']
|
||||
tracks_rm.inst_create(cvpj_l, instassocgm)
|
||||
tracks_rm.inst_visual(cvpj_l, instassocgm, name=rolname)
|
||||
if gmmidiinst != None:
|
||||
plugins.add_plug_gm_midi(cvpj_l, instassocgm, 0, gmmidiinst-1)
|
||||
tracks_rm.inst_pluginid(cvpj_l, instassocgm, instassocgm)
|
||||
for instid in dataset.midito_list('inst'):
|
||||
tracks_rm.import_dset(cvpj_l, instid, dataset, dataset_midi, None, None)
|
||||
|
||||
rol_header_majorVersion = int.from_bytes(song_file.read(2), 'little')
|
||||
print("[input-adlib_rol] majorVersion: " + str(rol_header_majorVersion))
|
||||
|
|
|
@ -6,7 +6,6 @@ import json
|
|||
import struct
|
||||
import os.path
|
||||
|
||||
from functions_plugparams import opl_sbi
|
||||
from functions import audio_wav
|
||||
from functions import data_bytes
|
||||
from functions import placement_data
|
||||
|
@ -16,7 +15,7 @@ from functions import note_data
|
|||
from functions import params
|
||||
from functions_tracks import tracks_rm
|
||||
from functions_tracks import auto_nopl
|
||||
from functions_plugparams import params_fm
|
||||
from functions_plugdata import plugin_fm
|
||||
|
||||
def add_point(i_list, time, value):
|
||||
if time not in i_list: i_list[time] = []
|
||||
|
@ -132,11 +131,10 @@ class input_sop(plugin_input.base):
|
|||
tracks_rm.inst_visual(cvpj_l, cvpj_instname, name=instname, color=[0.39, 0.16, 0.78])
|
||||
|
||||
if sop_data_s_inst[0] in [1,6,7,8,9,10]:
|
||||
fmdata = params_fm.fm_data('opl2')
|
||||
fmdata = plugin_fm.fm_data('opl2')
|
||||
|
||||
tracks_rm.inst_pluginid(cvpj_l, cvpj_instname, cvpj_instname)
|
||||
#tracks_rm.inst_dataval_add(cvpj_l, cvpj_instname, 'instdata', 'middlenote', 24)
|
||||
plugins.add_plug(cvpj_l, cvpj_instname, 'fm', 'opl2')
|
||||
|
||||
sbidata = sop_data_s_inst[3]
|
||||
iMod = [sbidata[0], sbidata[1], sbidata[2], sbidata[3], sbidata[4]]
|
||||
|
@ -154,7 +152,7 @@ class input_sop(plugin_input.base):
|
|||
|
||||
tracks_rm.inst_pluginid(cvpj_l, cvpj_instname, cvpj_instname)
|
||||
#tracks_rm.inst_dataval_add(cvpj_l, cvpj_instname, 'instdata', 'middlenote', 24)
|
||||
plugins.add_plug(cvpj_l, cvpj_instname, 'fm', 'opl3')
|
||||
|
||||
fouropdata = sop_data_s_inst[3]
|
||||
|
||||
op1_data = [fouropdata[0], fouropdata[1], fouropdata[2], fouropdata[3], fouropdata[4]]
|
||||
|
|
|
@ -7,11 +7,11 @@ import os.path
|
|||
import struct
|
||||
from functions import placements
|
||||
from functions import placement_data
|
||||
from functions import plugins
|
||||
from functions import auto
|
||||
from functions import note_data
|
||||
from functions import data_bytes
|
||||
from functions import data_values
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_rm
|
||||
from functions_tracks import auto_data
|
||||
|
@ -294,39 +294,38 @@ class input_lc(plugin_input.base):
|
|||
tracks_rm.add_pl(cvpj_l, str(num), 'notes', cvpj_placements)
|
||||
|
||||
for used_instrument in used_instruments:
|
||||
pluginid = plugins.get_id()
|
||||
|
||||
cvpj_instid = str(used_instrument[0])+'_'+used_instrument[1]
|
||||
|
||||
cvpj_instdata = {}
|
||||
if used_instrument[1] == 'Sine':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'sine')
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'sine')
|
||||
elif used_instrument[1] == 'Square':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'square')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'duty', 0)
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'square')
|
||||
plugindata.dataval_add('duty', 0)
|
||||
elif used_instrument[1] == 'Triangle':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'triangle')
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'triangle')
|
||||
elif used_instrument[1] == 'Saw':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'saw')
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'saw')
|
||||
elif used_instrument[1] == 'Noise':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'noise')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'type', '4bit')
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'noise')
|
||||
plugindata.dataval_add('type', '4bit')
|
||||
elif used_instrument[1] == 'FreqNoise':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'noise')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'type', '1bit_short')
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'noise')
|
||||
plugindata.dataval_add('type', '1bit_short')
|
||||
elif used_instrument[1] == 'Pulse25':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'square')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'duty', 1)
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'square')
|
||||
plugindata.dataval_add('duty', 1)
|
||||
elif used_instrument[1] == 'Pulse125':
|
||||
plugins.add_plug(cvpj_l, pluginid, 'retro', 'square')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'duty', 2)
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'retro', 'square')
|
||||
plugindata.dataval_add('duty', 2)
|
||||
else:
|
||||
plugins.add_plug(cvpj_l, pluginid, 'lovelycomposer', used_instrument[1])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'duty', 2)
|
||||
plugindata = plugins.cvpj_plugin('deftype', 'lovelycomposer', used_instrument[1])
|
||||
|
||||
plugindata.to_cvpj(cvpj_l, cvpj_instid)
|
||||
|
||||
tracks_rm.inst_create(cvpj_l, cvpj_instid)
|
||||
tracks_rm.inst_visual(cvpj_l, cvpj_instid, name=used_instrument[1], color=lc_colors[used_instrument[0]])
|
||||
tracks_rm.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
tracks_rm.inst_pluginid(cvpj_l, cvpj_instid, cvpj_instid)
|
||||
|
||||
tracks_rm.inst_create(cvpj_l, 'chord')
|
||||
tracks_rm.inst_visual(cvpj_l, 'chord', name='Chord', color=lc_colors[4])
|
||||
|
|
|
@ -5,7 +5,7 @@ import plugin_input
|
|||
import json
|
||||
import math
|
||||
from functions import data_bytes
|
||||
from functions import idvals
|
||||
from functions import data_dataset
|
||||
from functions import plugins
|
||||
from functions import note_data
|
||||
from functions import placement_data
|
||||
|
@ -31,16 +31,12 @@ class input_gt_mnbs(plugin_input.base):
|
|||
def getdawcapabilities(self): return {}
|
||||
def supported_autodetect(self): return False
|
||||
def parse(self, input_file, extra_param):
|
||||
|
||||
cvpj_l = {}
|
||||
song_message = ""
|
||||
|
||||
|
||||
nbs_file = open(input_file, 'rb')
|
||||
nbs_file.seek(0,2)
|
||||
nbs_len = nbs_file.tell()
|
||||
nbs_file.seek(0)
|
||||
|
||||
idvals_inst_mnbs = idvals.parse_idvalscsv('data_idvals/noteblockstudio_inst.csv')
|
||||
nbs_len = nbs_file.__sizeof__()
|
||||
dataset = data_dataset.dataset('./data_dset/noteblockstudio.dset')
|
||||
dataset_midi = data_dataset.dataset('./data_dset/midi.dset')
|
||||
|
||||
# PART 1: HEADER
|
||||
nbs_startbyte = int.from_bytes(nbs_file.read(2), "little")
|
||||
|
@ -126,19 +122,7 @@ class input_gt_mnbs(plugin_input.base):
|
|||
# OUTPUT
|
||||
for instnum in range(16):
|
||||
instid = 'NoteBlock'+str(instnum)
|
||||
cvpj_instname = idvals.get_idval(idvals_inst_mnbs, str(instnum), 'name')
|
||||
cvpj_instcolor = idvals.get_idval(idvals_inst_mnbs, str(instnum), 'color')
|
||||
cvpj_instgm = idvals.get_idval(idvals_inst_mnbs, str(instnum), 'gm_inst')
|
||||
|
||||
tracks_rm.inst_create(cvpj_l, instid)
|
||||
tracks_rm.inst_visual(cvpj_l, instid, name=cvpj_instname, color=cvpj_instcolor)
|
||||
|
||||
if cvpj_instgm != None:
|
||||
plugid = plugins.get_id()
|
||||
plugins.add_plug_gm_midi(cvpj_l, plugid, 0, cvpj_instgm-1)
|
||||
tracks_rm.inst_pluginid(cvpj_l, instid, plugid)
|
||||
tracks_rm.inst_dataval_add(cvpj_l, instid, 'midi', 'output', {'program': cvpj_instgm})
|
||||
|
||||
tracks_rm.import_dset(cvpj_l, instid, instid, dataset, dataset_midi, None, None)
|
||||
|
||||
# PART 4: CUSTOM INSTRUMENTS
|
||||
custominstid = 16
|
||||
|
@ -150,15 +134,16 @@ class input_gt_mnbs(plugin_input.base):
|
|||
custominst_key = nbs_file.read(1)[0]
|
||||
custominst_presskey = nbs_file.read(1)[0]
|
||||
#print(custominst_name, custominst_file, custominst_key, custominst_presskey)
|
||||
plugid = plugins.get_id()
|
||||
|
||||
instid = 'NoteBlock'+str(instnum)
|
||||
|
||||
tracks_rm.inst_create(cvpj_l, instid)
|
||||
tracks_rm.inst_visual(cvpj_l, instid, name=custominst_name)
|
||||
tracks_rm.inst_pluginid(cvpj_l, instid, plugid)
|
||||
tracks_rm.inst_pluginid(cvpj_l, instid, instid)
|
||||
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, plugid, custominst_file)
|
||||
plugindata = plugins.cvpj_plugindata.cvpj_plugin('sampler', 'single')
|
||||
plugindata.dataval_add('file', custominst_file)
|
||||
plugindata.to_cvpj(cvpj_l, instid)
|
||||
custominstid += 1
|
||||
|
||||
for nbs_layer in nbs_notes:
|
||||
|
|
|
@ -467,11 +467,14 @@ class input_pxtone(plugin_input.base):
|
|||
|
||||
plugindata = t_voice_data[voicenum][1]
|
||||
if t_voice_data[voicenum][0] == 'sampler':
|
||||
plugins.add_plug_sampler_singlefile(cvpj_l, pluginid, plugindata['file'])
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('sampler', plugindata['file'], None)
|
||||
inst_plugindata.dataval_add('trigger', plugindata['trigger'])
|
||||
inst_plugindata.dataval_add('interpolation', plugindata['interpolation'])
|
||||
inst_plugindata.asdr_env_add('vol', 0, 0, 0, 0, 1, 0, 1)
|
||||
inst_plugindata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
tracks_rm.inst_pluginid(cvpj_l, cvpj_instid, pluginid)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'trigger', plugindata['trigger'])
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'interpolation', plugindata['interpolation'])
|
||||
plugins.add_asdr_env(cvpj_l, pluginid, 'vol', 0, 0, 0, 0, 1, 0, 1)
|
||||
|
||||
tracks_rm.inst_param_add(cvpj_l, cvpj_instid, 'vol', cvpj_instvol, 'float')
|
||||
tracks_rm.inst_dataval_add(cvpj_l, cvpj_instid, 'instdata', 'middlenote', t_voice_data[voicenum][2])
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -90,37 +90,37 @@ def amped_makedevice(className, label):
|
|||
amped_device["bypass"] = False
|
||||
return amped_device
|
||||
|
||||
def do_idparams(pluginid):
|
||||
def do_idparams(cvpj_plugindata):
|
||||
paramout = []
|
||||
paramlist = plugins.get_plug_paramlist(cvpj_l, pluginid)
|
||||
paramlist = cvpj_plugindata.param_list()
|
||||
for paramnum in range(len(paramlist)):
|
||||
paramdata = plugins.get_plug_param(cvpj_l, pluginid, paramlist[paramnum], 0)
|
||||
paramdata = cvpj_plugindata.param_get(paramlist[paramnum], 0)
|
||||
paramout.append({"id": paramnum, "name": paramdata[2], "value": paramdata[0]})
|
||||
return paramout
|
||||
|
||||
def amped_parse_effects(fxchain_audio):
|
||||
outdata = []
|
||||
for pluginid in fxchain_audio:
|
||||
plugtype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
fxdata = data_values.nested_dict_get_value(cvpj_l, ['plugins', pluginid])
|
||||
fx_on, fx_wet = plugins.get_plug_fxdata(cvpj_l, pluginid)
|
||||
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
plugtype = cvpj_plugindata.type_get()
|
||||
fx_on, fx_wet = cvpj_plugindata.fxdata_get()
|
||||
|
||||
fx_on = not fx_on
|
||||
|
||||
if plugtype[0] == 'universal' and plugtype[1] in ['compressor', 'expander']:
|
||||
device_params = []
|
||||
|
||||
preGainDB = plugins.get_plug_param(cvpj_l, pluginid, 'pregain', 0)[0]
|
||||
ratio = plugins.get_plug_param(cvpj_l, pluginid, 'ratio', 0)[0]
|
||||
thresholdDB = plugins.get_plug_param(cvpj_l, pluginid, 'threshold', 0)[0]
|
||||
attackTimeMS = plugins.get_plug_param(cvpj_l, pluginid, 'attack', 0)[0]*1000
|
||||
releaseTimeMS = plugins.get_plug_param(cvpj_l, pluginid, 'release', 0)[0]*1000
|
||||
postGainDB = plugins.get_plug_param(cvpj_l, pluginid, 'postgain', 0)[0]
|
||||
lookaheadTimeMS = plugins.get_plug_param(cvpj_l, pluginid, 'lookahead', 0)[0]*1000
|
||||
softKneeWidth = plugins.get_plug_param(cvpj_l, pluginid, 'knee', 0)[0]/6
|
||||
preGainDB = cvpj_plugindata.param_get('pregain', 0)[0]
|
||||
ratio = cvpj_plugindata.param_get('ratio', 0)[0]
|
||||
thresholdDB = cvpj_plugindata.param_get('threshold', 0)[0]
|
||||
attackTimeMS = cvpj_plugindata.param_get('attack', 0)[0]*1000
|
||||
releaseTimeMS = cvpj_plugindata.param_get('release', 0)[0]*1000
|
||||
postGainDB = cvpj_plugindata.param_get('postgain', 0)[0]
|
||||
lookaheadTimeMS = cvpj_plugindata.param_get('lookahead', 0)[0]*1000
|
||||
softKneeWidth = cvpj_plugindata.param_get('knee', 0)[0]/6
|
||||
|
||||
detect_mode = plugins.get_plug_dataval(cvpj_l, pluginid, 'detect_mode', 'rms')
|
||||
circuit_mode = plugins.get_plug_dataval(cvpj_l, pluginid, 'circuit_mode', 'digital')
|
||||
detect_mode = cvpj_plugindata.dataval_get('detect_mode', 'rms')
|
||||
circuit_mode = cvpj_plugindata.dataval_get('circuit_mode', 'digital')
|
||||
|
||||
detectMode = 1
|
||||
if detect_mode == 'peak': detectMode = 0
|
||||
|
@ -128,7 +128,7 @@ def amped_parse_effects(fxchain_audio):
|
|||
circuitMode = 1
|
||||
if detect_mode == 'analog': detectMode = 0
|
||||
|
||||
filt_enabled, filt_cutoff, filt_reso, filt_type, filt_subtype = plugins.get_filter(cvpj_l, pluginid)
|
||||
filt_enabled, filt_cutoff, filt_reso, filt_type, filt_subtype = cvpj_plugindata.filter_get()
|
||||
|
||||
filterMode = 0
|
||||
if filt_type == 'lowpass': filterMode = 0
|
||||
|
@ -137,7 +137,7 @@ def amped_parse_effects(fxchain_audio):
|
|||
|
||||
filterFrequency = filt_cutoff
|
||||
filterQ = filt_reso
|
||||
filterGainDB = plugins.get_plug_dataval(cvpj_l, pluginid, 'filter_gain', 0)
|
||||
filterGainDB = cvpj_plugindata.dataval_get('filter_gain', 0)
|
||||
filterActive = int(filt_enabled)
|
||||
filterAudition = 0
|
||||
|
||||
|
@ -166,10 +166,10 @@ def amped_parse_effects(fxchain_audio):
|
|||
outdata.append(devicedata)
|
||||
|
||||
elif plugtype == ['universal', 'delay-c']:
|
||||
d_time_type = plugins.get_plug_dataval(cvpj_l, pluginid, 'time_type', 'seconds')
|
||||
d_time = plugins.get_plug_dataval(cvpj_l, pluginid, 'time', 1)
|
||||
d_wet = plugins.get_plug_dataval(cvpj_l, pluginid, 'wet', fx_wet)
|
||||
d_feedback = plugins.get_plug_dataval(cvpj_l, pluginid, 'feedback', 0.0)
|
||||
d_time_type = cvpj_plugindata.dataval_get('time_type', 'seconds')
|
||||
d_time = cvpj_plugindata.dataval_get('time', 1)
|
||||
d_wet = cvpj_plugindata.dataval_get('wet', fx_wet)
|
||||
d_feedback = cvpj_plugindata.dataval_get('feedback', 0.0)
|
||||
devicedata = amped_makedevice('Delay', 'Delay')
|
||||
|
||||
device_params = []
|
||||
|
@ -193,7 +193,7 @@ def amped_parse_effects(fxchain_audio):
|
|||
devicedata['bypass'] = fx_on
|
||||
out_params = []
|
||||
|
||||
banddata = plugins.get_eqband(cvpj_l, pluginid, None)
|
||||
banddata = cvpj_plugindata.eqband_get(None)
|
||||
|
||||
paramnum = 0
|
||||
|
||||
|
@ -230,15 +230,15 @@ def amped_parse_effects(fxchain_audio):
|
|||
|
||||
paramnum += 5
|
||||
|
||||
postGain = plugins.get_plug_param(cvpj_l, pluginid, 'gain_out', 0)[0]
|
||||
postGain = cvpj_plugindata.param_get('gain_out', 0)[0]
|
||||
|
||||
out_params.append({"id": paramnum, "name": 'postGain', "value": postGain})
|
||||
devicedata['params'] = out_params
|
||||
outdata.append(devicedata)
|
||||
|
||||
elif plugtype == ['universal', 'vibrato']:
|
||||
d_freq = plugins.get_plug_param(cvpj_l, pluginid, 'freq', 0)[0]
|
||||
d_depth = plugins.get_plug_param(cvpj_l, pluginid, 'depth', 0)[0]
|
||||
d_freq = cvpj_plugindata.param_get('freq', 0)[0]
|
||||
d_depth = cvpj_plugindata.param_get('depth', 0)[0]
|
||||
devicedata = amped_makedevice('Vibrato', 'Vibrato')
|
||||
devicedata['bypass'] = fx_on
|
||||
device_params = []
|
||||
|
@ -248,8 +248,8 @@ def amped_parse_effects(fxchain_audio):
|
|||
outdata.append(devicedata)
|
||||
|
||||
elif plugtype == ['universal', 'tremolo']:
|
||||
d_freq = plugins.get_plug_param(cvpj_l, pluginid, 'freq', 0)[0]
|
||||
d_depth = plugins.get_plug_param(cvpj_l, pluginid, 'depth', 0)[0]
|
||||
d_freq = cvpj_plugindata.param_get('freq', 0)[0]
|
||||
d_depth = cvpj_plugindata.param_get('depth', 0)[0]
|
||||
devicedata = amped_makedevice('Tremolo', 'Tremolo')
|
||||
devicedata['bypass'] = fx_on
|
||||
device_params = []
|
||||
|
@ -259,8 +259,8 @@ def amped_parse_effects(fxchain_audio):
|
|||
outdata.append(devicedata)
|
||||
|
||||
elif plugtype == ['universal', 'bitcrush']:
|
||||
b_bits = plugins.get_plug_param(cvpj_l, pluginid, 'bits', 0)[0]
|
||||
b_freq = plugins.get_plug_param(cvpj_l, pluginid, 'freq', 0)[0]
|
||||
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
|
||||
|
||||
|
@ -284,7 +284,7 @@ def amped_parse_effects(fxchain_audio):
|
|||
if plugtype[1] == "Distortion Machine": wamClassName = 'WASABI_SC.DistoMachine'
|
||||
if plugtype[1] == "Metal Machine": wamClassName = 'WASABI_SC.MetalMachine'
|
||||
devicedata['wamClassName'] = wamClassName
|
||||
devicedata['wamPreset'] = plugins.get_plug_dataval(cvpj_l, pluginid, 'data', '{}')
|
||||
devicedata['wamPreset'] = cvpj_plugindata.dataval_get('data', '{}')
|
||||
outdata.append(devicedata)
|
||||
|
||||
elif plugtype[1] in ['BitCrusher', 'Chorus',
|
||||
|
@ -299,7 +299,7 @@ def amped_parse_effects(fxchain_audio):
|
|||
if classname == 'EqualizerPro': classlabel = 'Equalizer'
|
||||
devicedata = amped_makedevice(classname, classlabel)
|
||||
devicedata['bypass'] = fx_on
|
||||
devicedata['params'] = do_idparams(pluginid)
|
||||
devicedata['params'] = do_idparams(cvpj_plugindata)
|
||||
outdata.append(devicedata)
|
||||
|
||||
return outdata
|
||||
|
@ -364,7 +364,8 @@ class output_cvpj_f(plugin_output.base):
|
|||
cvpj_instadata = cvpj_trackdata['instdata']
|
||||
pluginid = cvpj_instadata['pluginid'] if 'pluginid' in cvpj_instadata else None
|
||||
if pluginid != None:
|
||||
plugtype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
plugtype = cvpj_plugindata.type_get()
|
||||
|
||||
if plugtype == ['synth-nonfree', 'Europa']:
|
||||
inst_supported = True
|
||||
|
@ -385,9 +386,9 @@ class output_cvpj_f(plugin_output.base):
|
|||
for eur_value_name in europa_vals:
|
||||
eur_value_type, cvpj_val_name = europa_vals[eur_value_name]
|
||||
if eur_value_type == 'number':
|
||||
eur_value_value = plugins.get_plug_param(cvpj_l, pluginid, cvpj_val_name, 0)[0]
|
||||
eur_value_value = cvpj_plugindata.param_get(cvpj_val_name, 0)[0]
|
||||
else:
|
||||
eur_value_value = plugins.get_plug_dataval(cvpj_l, pluginid, cvpj_val_name, 0)
|
||||
eur_value_value = cvpj_plugindata.dataval_get(cvpj_val_name, 0)
|
||||
if eur_value_name in ['Curve1','Curve2','Curve3','Curve4','Curve']: eur_value_value = bytes(eur_value_value).hex().upper()
|
||||
|
||||
europa_value_obj = ET.SubElement(europa_obj, "Value")
|
||||
|
@ -395,7 +396,7 @@ class output_cvpj_f(plugin_output.base):
|
|||
europa_value_obj.set('type',eur_value_type)
|
||||
europa_value_obj.text = str(eur_value_value)
|
||||
wamPreset['settings'] = ET.tostring(europa_patch).decode()
|
||||
wamPreset['encodedSampleData'] = plugins.get_plug_dataval(cvpj_l, pluginid, 'encodedSampleData', [])
|
||||
wamPreset['encodedSampleData'] = cvpj_plugindata.dataval_get('encodedSampleData', [])
|
||||
|
||||
europa_data['wamPreset'] = json.dumps(wamPreset)
|
||||
|
||||
|
@ -403,8 +404,8 @@ class output_cvpj_f(plugin_output.base):
|
|||
|
||||
elif plugtype[0] == 'midi':
|
||||
inst_supported = True
|
||||
midi_bank = plugins.get_plug_dataval(cvpj_l, pluginid, 'bank', 0)
|
||||
midi_patch = plugins.get_plug_dataval(cvpj_l, pluginid, 'inst', 0)
|
||||
midi_bank = cvpj_plugindata.dataval_get('bank', 0)
|
||||
midi_patch = cvpj_plugindata.dataval_get('inst', 0)
|
||||
sf2data = amped_makedevice('SF2','GM Player')
|
||||
sf2params = []
|
||||
sf2params.append(amped_makeparam(0, 'patch', 0))
|
||||
|
@ -419,10 +420,10 @@ class output_cvpj_f(plugin_output.base):
|
|||
elif plugtype == ['vst2', 'win']:
|
||||
inst_supported = True
|
||||
vstcondata = amped_makedevice('VSTConnection',"VST/Remote Beta")
|
||||
vstdatatype = plugins.get_plug_dataval(cvpj_l, pluginid, 'datatype', '')
|
||||
vstdatatype = cvpj_plugindata.dataval_get('datatype', '')
|
||||
if vstdatatype == 'chunk':
|
||||
vstcondata['pluginPath'] = plugins.get_plug_dataval(cvpj_l, pluginid, 'path', 'path')
|
||||
vstcondata['pluginState'] = plugins.get_plug_dataval(cvpj_l, pluginid, 'chunk', '')
|
||||
vstcondata['pluginPath'] = cvpj_plugindata.dataval_get('path', 'path')
|
||||
vstcondata['pluginState'] = cvpj_plugindata.dataval_get('chunk', '')
|
||||
amped_trackdata["devices"].append(vstcondata)
|
||||
|
||||
if inst_supported == False:
|
||||
|
@ -442,7 +443,7 @@ class output_cvpj_f(plugin_output.base):
|
|||
# samplerdata['samplerZones'] = []
|
||||
# a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = plugins.get_asdr_env(cvpj_l, pluginid, 'vol')
|
||||
|
||||
# filepath = plugins.get_plug_dataval(cvpj_l, pluginid, 'file', '')
|
||||
# filepath = cvpj_plugindata.dataval_get('file', '')
|
||||
# audioid = addsample(zip_amped, filepath)
|
||||
|
||||
# samplervalues = {}
|
||||
|
|
|
@ -1,530 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_output
|
||||
import json
|
||||
import math
|
||||
import base64
|
||||
import struct
|
||||
from bs4 import BeautifulSoup
|
||||
from functions_plugin import format_flp_enc
|
||||
from functions_plugin import flp_enc_plugins
|
||||
from functions import note_mod
|
||||
from functions import data_values
|
||||
from functions import audio
|
||||
from functions import notelist_data
|
||||
from functions import xtramath
|
||||
from functions import plugins
|
||||
from functions import params
|
||||
from functions import song
|
||||
from functions_tracks import tracks_mi
|
||||
|
||||
filename_len = {}
|
||||
|
||||
def decode_color(color):
|
||||
return int.from_bytes(bytes([int(color[0]*255), int(color[1]*255), int(color[2]*255)]), "little")
|
||||
|
||||
class output_cvpjs(plugin_output.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'output'
|
||||
def getshortname(self): return 'flp'
|
||||
def getname(self): return 'FL Studio'
|
||||
def gettype(self): return 'mi'
|
||||
def plugin_archs(self): return ['amd64', 'i386']
|
||||
def getdawcapabilities(self):
|
||||
return {
|
||||
'fxrack': True,
|
||||
'fxrack_params': ['enabled','vol','pan'],
|
||||
'track_lanes': True,
|
||||
'placement_cut': True,
|
||||
'placement_audio_stretch': ['rate', 'rate_ignoretempo']
|
||||
}
|
||||
def getsupportedplugformats(self): return ['vst2', 'vst3']
|
||||
def getsupportedplugins(self): return ['sampler:single', 'soundfont2']
|
||||
def getfileextension(self): return 'flp'
|
||||
def parse(self, convproj_json, output_file):
|
||||
cvpj_l = json.loads(convproj_json)
|
||||
|
||||
FLP_Data = {}
|
||||
|
||||
FLP_Data['FL_Main'] = {}
|
||||
FL_Main = FLP_Data['FL_Main']
|
||||
|
||||
FLP_Data['FL_Channels'] = {}
|
||||
FL_Channels = FLP_Data['FL_Channels']
|
||||
instrumentsorder = cvpj_l['instruments_order'] if 'instruments_order' in cvpj_l else []
|
||||
CVPJ_Instruments = cvpj_l['instruments_data'] if 'instruments_data' in cvpj_l else {}
|
||||
CVPJ_Samples = {}
|
||||
if 'sampleindex' in cvpj_l: CVPJ_Samples = cvpj_l['sampleindex']
|
||||
|
||||
FLP_Data['FL_Patterns'] = {}
|
||||
FL_Patterns = FLP_Data['FL_Patterns']
|
||||
CVPJ_NotelistIndex = cvpj_l['notelistindex']
|
||||
|
||||
FLP_Data['FL_Arrangements'] = {}
|
||||
FL_Arrangements = FLP_Data['FL_Arrangements']
|
||||
|
||||
FLP_Data['FL_TimeMarkers'] = {}
|
||||
FL_TimeMarkers = FLP_Data['FL_TimeMarkers']
|
||||
|
||||
FLP_Data['FL_Tracks'] = {}
|
||||
FL_Tracks = FLP_Data['FL_Tracks']
|
||||
CVPJ_playlist = cvpj_l['playlist']
|
||||
|
||||
FLP_Data['FL_Mixer'] = {}
|
||||
FL_Mixer = FLP_Data['FL_Mixer']
|
||||
|
||||
FLP_Data['FL_FilterGroups'] = []
|
||||
FL_FilterGroups = FLP_Data['FL_FilterGroups']
|
||||
|
||||
ppq = 960
|
||||
FL_Main['ppq'] = ppq
|
||||
|
||||
FL_Main['ShowInfo'] = 0
|
||||
|
||||
sampleinfo = {}
|
||||
samplestretch = {}
|
||||
|
||||
if 'info' in cvpj_l:
|
||||
infoJ = cvpj_l['info']
|
||||
FL_Main['ShowInfo'] = 1
|
||||
if 'title' in infoJ:
|
||||
if 'title' not in ['', None]: FL_Main['Title'] = infoJ['title']
|
||||
else: FL_Main['Title'] = ''
|
||||
|
||||
if 'author' in infoJ:
|
||||
if 'author' not in ['', None]: FL_Main['Author'] = infoJ['author']
|
||||
else: FL_Main['Author'] = ''
|
||||
|
||||
if 'url' in infoJ:
|
||||
if 'url' not in ['', None]: FL_Main['URL'] = infoJ['url']
|
||||
else: FL_Main['URL'] = ''
|
||||
|
||||
if 'genre' in infoJ:
|
||||
if 'genre' not in ['', None]: FL_Main['Genre'] = infoJ['genre']
|
||||
else: FL_Main['Genre'] = ''
|
||||
|
||||
if 'message' in infoJ:
|
||||
if infoJ['message']['type'] == 'html':
|
||||
bst = BeautifulSoup(infoJ['message']['text'], "html.parser")
|
||||
FL_Main['Comment'] = bst.get_text().replace("\n", "\r")
|
||||
if infoJ['message']['type'] == 'text':
|
||||
FL_Main['Comment'] = infoJ['message']['text'].replace("\r\n", "\r").replace("\n", "\r")
|
||||
else:
|
||||
FL_Main['Comment'] = ''
|
||||
else:
|
||||
FL_Main['Title'] = ''
|
||||
FL_Main['Author'] = ''
|
||||
FL_Main['Genre'] = ''
|
||||
FL_Main['Comment'] = ''
|
||||
|
||||
FL_Main['ProjectDataPath'] = ''
|
||||
|
||||
FL_Main['Numerator'], FL_Main['Denominator'] = song.get_timesig(cvpj_l)
|
||||
FL_Main['Tempo'] = params.get(cvpj_l, [], 'bpm', 140)[0]
|
||||
FL_Main['MainPitch'] = struct.unpack('H', struct.pack('h', int(params.get(cvpj_l, [], 'pitch', 0)[0])))[0]
|
||||
FL_Main['Shuffle'] = params.get(cvpj_l, [], 'shuffle', 0)[0]*128
|
||||
|
||||
tempomul = (120/FL_Main['Tempo'])
|
||||
|
||||
samples_id = {}
|
||||
inst_id = {}
|
||||
inst_id_count = 0
|
||||
|
||||
for instentry in instrumentsorder:
|
||||
inst_id[instentry] = str(inst_id_count)
|
||||
inst_id_count += 1
|
||||
|
||||
for sampleentry in CVPJ_Samples:
|
||||
inst_id[sampleentry] = str(inst_id_count)
|
||||
samples_id[sampleentry] = str(inst_id_count)
|
||||
inst_id_count += 1
|
||||
|
||||
for CVPJ_Entry in CVPJ_Instruments:
|
||||
T_Main = {}
|
||||
CVPJ_Data = CVPJ_Instruments[CVPJ_Entry]
|
||||
|
||||
T_Main['volume'] = params.get(CVPJ_Data, [], 'vol', 1)[0]
|
||||
T_Main['pan'] = params.get(CVPJ_Data, [], 'pan', 0)[0]
|
||||
T_Main['enabled'] = int(params.get(CVPJ_Data, [], 'enabled', True)[0])
|
||||
T_Main['pitch'] = params.get(CVPJ_Data, [], 'pitch', 0)[0]
|
||||
T_Main['main_pitch'] = int(params.get(CVPJ_Data, [], 'usemasterpitch', True)[0])
|
||||
|
||||
middlenote = data_values.nested_dict_get_value(CVPJ_Data, ['instdata', 'middlenote'])
|
||||
if middlenote == None: middlenote = 0
|
||||
|
||||
T_Main['middlenote'] = middlenote+60
|
||||
|
||||
if 'name' in CVPJ_Data: T_Main['name'] = CVPJ_Data['name'] if CVPJ_Data['name'] != None else ''
|
||||
|
||||
T_Main['fxchannel'] = tracks_mi.inst_fxrackchan_get(cvpj_l, CVPJ_Entry)
|
||||
|
||||
T_Main['type'] = 0
|
||||
T_Main['plugin'] = ''
|
||||
|
||||
if 'instdata' in CVPJ_Data:
|
||||
CVPJ_Inst = CVPJ_Data['instdata']
|
||||
|
||||
if 'pluginid' in CVPJ_Inst:
|
||||
pluginid = CVPJ_Inst['pluginid']
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
|
||||
fl_plugin, fl_pluginparams = flp_enc_plugins.setparams(cvpj_l, pluginid)
|
||||
|
||||
if plugintype == ['sampler', 'single']:
|
||||
T_Main['type'] = 0
|
||||
T_Main['plugin'] = ''
|
||||
cvpj_plugindata = plugins.get_plug_data(cvpj_l, pluginid)
|
||||
T_Main['samplefilename'] = data_values.get_value(cvpj_plugindata, 'file', '')
|
||||
|
||||
elif fl_plugin != None:
|
||||
|
||||
plug_opened = False
|
||||
pos_x, pos_y = [0,0]
|
||||
size_x, size_y = [0,0]
|
||||
|
||||
out_pos, out_size, out_open, out_max = song.get_visual_window(cvpj_l, 'plugin', pluginid, None, None, None, None)
|
||||
|
||||
if out_pos != None: pos_x, pos_y = out_pos
|
||||
if out_size != None: size_x, size_y = out_size
|
||||
if out_open != None: plug_opened = out_open
|
||||
|
||||
|
||||
fl_plugindata = b'\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00'
|
||||
fl_plugindata += b'Q' if plug_opened else b'P'
|
||||
fl_plugindata += b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
|
||||
|
||||
fl_plugindata += struct.pack('iiii', pos_x, pos_y, size_x, size_y)
|
||||
|
||||
T_Main['plugindata'] = fl_plugindata
|
||||
T_Main['type'] = 2
|
||||
T_Main['plugin'] = fl_plugin
|
||||
T_Main['pluginparams'] = fl_pluginparams
|
||||
|
||||
if 'poly' in CVPJ_Data:
|
||||
if 'max' in CVPJ_Data['poly']:
|
||||
T_Main['polymax'] = CVPJ_Data['poly']['max']
|
||||
if 'color' in CVPJ_Data:
|
||||
T_Main['color'] = decode_color(CVPJ_Data['color'])
|
||||
|
||||
FL_Channels[inst_id[CVPJ_Entry]] = T_Main
|
||||
|
||||
|
||||
for CVPJ_Entry in CVPJ_Samples:
|
||||
T_Main = {}
|
||||
CVPJ_Data = CVPJ_Samples[CVPJ_Entry]
|
||||
T_Main['type'] = 4
|
||||
|
||||
samplefilename = ""
|
||||
|
||||
if 'vol' in CVPJ_Data: T_Main['volume'] = CVPJ_Data['vol']
|
||||
if 'pan' in CVPJ_Data: T_Main['pan'] = CVPJ_Data['pan']
|
||||
if 'name' in CVPJ_Data: T_Main['name'] = CVPJ_Data['name']
|
||||
if 'enabled' in CVPJ_Data: T_Main['enabled'] = CVPJ_Data['enabled']
|
||||
if 'fxrack_channel' in CVPJ_Data: T_Main['fxchannel'] = CVPJ_Data['fxrack_channel']
|
||||
if 'color' in CVPJ_Data: T_Main['color'] = decode_color(CVPJ_Data['color'])
|
||||
if 'file' in CVPJ_Data:
|
||||
T_Main['samplefilename'] = CVPJ_Data['file']
|
||||
samplefilename = CVPJ_Data['file']
|
||||
sampleinfo[CVPJ_Entry] = audio.get_audiofile_info(samplefilename)
|
||||
audioinfo = sampleinfo[CVPJ_Entry]
|
||||
|
||||
audiorate = 1
|
||||
|
||||
if 'audiomod' in CVPJ_Data:
|
||||
|
||||
cvpj_audiomod = CVPJ_Data['audiomod']
|
||||
|
||||
if 'stretch_algorithm' in cvpj_audiomod:
|
||||
if cvpj_audiomod['stretch_algorithm'] == 'resample': T_Main['stretchingmode'] = 0
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'elastique_v3': T_Main['stretchingmode'] = 1
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'elastique_v3_mono': T_Main['stretchingmode'] = 2
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'slice_stretch': T_Main['stretchingmode'] = 3
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'auto': T_Main['stretchingmode'] = 4
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'slice_map': T_Main['stretchingmode'] = 5
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'elastique_v2': T_Main['stretchingmode'] = 6
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'elastique_v2_transient': T_Main['stretchingmode'] = 7
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'elastique_v2_mono': T_Main['stretchingmode'] = 8
|
||||
elif cvpj_audiomod['stretch_algorithm'] == 'elastique_v2_speech': T_Main['stretchingmode'] = 9
|
||||
else: T_Main['stretchingmode'] = -1
|
||||
else: T_Main['stretchingmode'] = -1
|
||||
|
||||
if 'pitch' in cvpj_audiomod: T_Main['stretchingpitch'] = int(cvpj_audiomod['pitch']*100)
|
||||
|
||||
if 'stretch_data' in cvpj_audiomod:
|
||||
timedata = cvpj_audiomod['stretch_data']
|
||||
|
||||
if cvpj_audiomod['stretch_method'] == 'rate_tempo':
|
||||
audiorate = timedata['rate']
|
||||
samplestretch[CVPJ_Entry] = ['rate_tempo', audiorate]
|
||||
T_Main['stretchingtime'] = int( (audioinfo['dur_sec']*384)/audiorate )
|
||||
|
||||
if cvpj_audiomod['stretch_method'] == 'rate_ignoretempo':
|
||||
audiorate = timedata['rate']
|
||||
samplestretch[CVPJ_Entry] = ['rate_ignoretempo', audiorate]
|
||||
T_Main['stretchingtime'] = int( ((audioinfo['dur_sec']*384)/audiorate)/tempomul )
|
||||
|
||||
if cvpj_audiomod['stretch_method'] == 'rate_speed':
|
||||
audiorate = timedata['rate']
|
||||
samplestretch[CVPJ_Entry] = ['rate_speed', audiorate]
|
||||
T_Main['stretchingmultiplier'] = int( math.log2(1/audiorate)*10000 )
|
||||
|
||||
else:
|
||||
samplestretch[CVPJ_Entry] = ['normal', 1]
|
||||
|
||||
else:
|
||||
samplestretch[CVPJ_Entry] = ['normal', 1]
|
||||
|
||||
FL_Channels[inst_id[CVPJ_Entry]] = T_Main
|
||||
|
||||
|
||||
|
||||
pat_id = {}
|
||||
pat_id_count = 1
|
||||
patternssorder = []
|
||||
|
||||
for CVPJ_NotelistEntry in CVPJ_NotelistIndex:
|
||||
pat_id[CVPJ_NotelistEntry] = pat_id_count
|
||||
pat_id_count += 1
|
||||
#print(pat_id)
|
||||
|
||||
for pat_entry in pat_id:
|
||||
FL_Patterns[str(pat_id[pat_entry])] = {}
|
||||
FL_Pattern = FL_Patterns[str(pat_id[pat_entry])]
|
||||
T_Pattern = CVPJ_NotelistIndex[pat_entry]
|
||||
if 'color' in T_Pattern: FL_Pattern['color'] = decode_color(T_Pattern['color'])
|
||||
if 'name' in T_Pattern: FL_Pattern['name'] = T_Pattern['name']
|
||||
if 'notelist' in T_Pattern:
|
||||
T_Notelist = notelist_data.sort(T_Pattern['notelist'])
|
||||
FL_Pattern['notes'] = []
|
||||
slidenotes = []
|
||||
for note in T_Notelist:
|
||||
if note['instrument'] in inst_id:
|
||||
#print(note)
|
||||
FL_Note = {}
|
||||
FL_Note['rack'] = int(inst_id[note['instrument']])
|
||||
M_FL_Note_Key = int(note['key'])+60
|
||||
M_FL_Note_Pos = int((note['position']*ppq)/4)
|
||||
M_FL_Note_Dur = int((note['duration']*ppq)/4)
|
||||
if 'finepitch' in note: FL_Note['finep'] = int((note['finepitch']/10)+120)
|
||||
if 'release' in note: FL_Note['rel'] = int(xtramath.clamp(note['release'],0,1)*128)
|
||||
if 'vol' in note: FL_Note['velocity'] = int(xtramath.clamp(note['vol'],0,1)*100)
|
||||
if 'cutoff' in note: FL_Note['mod_x'] = int(xtramath.clamp(note['cutoff'],0,1)*255)
|
||||
if 'reso' in note: FL_Note['mod_y'] = int(xtramath.clamp(note['reso'],0,1)*255)
|
||||
if 'pan' in note: FL_Note['pan'] = int((xtramath.clamp(float(note['pan']),-1,1)*64)+64)
|
||||
FL_Note['pos'] = M_FL_Note_Pos
|
||||
FL_Note['dur'] = M_FL_Note_Dur
|
||||
FL_Note['key'] = M_FL_Note_Key
|
||||
FL_Pattern['notes'].append(FL_Note)
|
||||
|
||||
if 'notemod' in note:
|
||||
note_mod.notemod_conv(note)
|
||||
if 'slide' in note['notemod']:
|
||||
for slidenote in note['notemod']['slide']:
|
||||
FL_Note = {}
|
||||
FL_Note['rack'] = int(inst_id[note['instrument']])
|
||||
FL_Note['key'] = int(slidenote['key'] + note['key'])+60
|
||||
FL_Note['pos'] = M_FL_Note_Pos + int((slidenote['position']*ppq)/4)
|
||||
FL_Note['dur'] = int((slidenote['duration']*ppq)/4)
|
||||
FL_Note['flags'] = 16392
|
||||
if 'finepitch' in slidenote: FL_Note['finep'] = int((slidenote['finepitch']/10)+120)
|
||||
if 'release' in slidenote: FL_Note['rel'] = int(xtramath.clamp(slidenote['release'],0,1)*128)
|
||||
if 'vol' in slidenote: FL_Note['velocity'] = int(xtramath.clamp(slidenote['vol'],0,1)*100)
|
||||
elif 'vol' in note: FL_Note['velocity'] = int(xtramath.clamp(note['vol'],0,1)*100)
|
||||
if 'cutoff' in slidenote: FL_Note['mod_x'] = int(xtramath.clamp(slidenote['cutoff'],0,1)*255)
|
||||
if 'reso' in slidenote: FL_Note['mod_y'] = int(xtramath.clamp(slidenote['reso'],0,1)*255)
|
||||
if 'pan' in slidenote: FL_Note['pan'] = int((xtramath.clamp(float(slidenote['pan']),-1,1)*64)+64)
|
||||
FL_Pattern['notes'].append(FL_Note)
|
||||
|
||||
|
||||
if len(FL_Patterns) > 999:
|
||||
print('[error] FLP patterns over 999 is unsupported.')
|
||||
exit()
|
||||
|
||||
if len(FL_Channels) > 256:
|
||||
print('[error] FLP channels over 256 is unsupported.')
|
||||
exit()
|
||||
|
||||
FL_Playlist_BeforeSort = {}
|
||||
FL_Playlist_Sorted = {}
|
||||
FL_Playlist = []
|
||||
for CVPJ_playlistrow in CVPJ_playlist:
|
||||
CVPJ_playlistitem = CVPJ_playlist[CVPJ_playlistrow]
|
||||
|
||||
|
||||
if 'placements_notes' in CVPJ_playlistitem:
|
||||
for CVPJ_Placement in CVPJ_playlistitem['placements_notes']:
|
||||
if CVPJ_Placement['fromindex'] in pat_id:
|
||||
FL_playlistitem = {}
|
||||
FL_playlistitem['position'] = int((CVPJ_Placement['position']*ppq)/4)
|
||||
FL_playlistitem['patternbase'] = 20480
|
||||
FL_playlistitem['itemindex'] = int(pat_id[CVPJ_Placement['fromindex']] + FL_playlistitem['patternbase'])
|
||||
if 'duration' in CVPJ_Placement:
|
||||
FL_playlistitem['length'] = int((CVPJ_Placement['duration']*ppq)/4)
|
||||
if CVPJ_Placement != 0:
|
||||
FL_playlistitem['startoffset'] = 0
|
||||
FL_playlistitem['endoffset'] = int((CVPJ_Placement['duration']*ppq)/4)
|
||||
else:
|
||||
FL_playlistitem['length'] = notelist_data.getduration(CVPJ_NotelistIndex[CVPJ_Placement['fromindex']]['notelist'])
|
||||
FL_playlistitem['unknown1'] = 120
|
||||
FL_playlistitem['unknown2'] = 25664
|
||||
FL_playlistitem['unknown3'] = 32896
|
||||
FL_playlistitem['flags'] = 64
|
||||
FL_playlistitem['trackindex'] = (-500 + int(CVPJ_playlistrow))*-1
|
||||
if 'muted' in CVPJ_Placement:
|
||||
if CVPJ_Placement['muted'] == True:
|
||||
FL_playlistitem['flags'] = 12352
|
||||
if 'cut' in CVPJ_Placement:
|
||||
if 'type' in CVPJ_Placement['cut']:
|
||||
if CVPJ_Placement['cut']['type'] == 'cut':
|
||||
if 'start' in CVPJ_Placement['cut']: FL_playlistitem['startoffset'] = int((CVPJ_Placement['cut']['start']*ppq)/4)
|
||||
if 'end' in CVPJ_Placement['cut']: FL_playlistitem['endoffset'] = int((CVPJ_Placement['cut']['end']*ppq)/4)
|
||||
if FL_playlistitem['position'] not in FL_Playlist_BeforeSort:
|
||||
FL_Playlist_BeforeSort[FL_playlistitem['position']] = []
|
||||
FL_Playlist_BeforeSort[FL_playlistitem['position']].append(FL_playlistitem)
|
||||
|
||||
|
||||
if 'placements_audio' in CVPJ_playlistitem:
|
||||
for CVPJ_Placement in CVPJ_playlistitem['placements_audio']:
|
||||
if CVPJ_Placement['fromindex'] in samples_id:
|
||||
|
||||
if CVPJ_Placement['fromindex'] in samplestretch:
|
||||
pl_stretch = samplestretch[CVPJ_Placement['fromindex']]
|
||||
else: pl_stretch = [None, 1]
|
||||
|
||||
sampleid = samples_id[CVPJ_Placement['fromindex']]
|
||||
FL_playlistitem = {}
|
||||
FL_playlistitem['position'] = int((CVPJ_Placement['position']*ppq)/4)
|
||||
FL_playlistitem['patternbase'] = 20480
|
||||
FL_playlistitem['itemindex'] = sampleid
|
||||
FL_playlistitem['length'] = int((CVPJ_Placement['duration']*ppq)/4)
|
||||
FL_playlistitem['startoffset'] = 0
|
||||
FL_playlistitem['endoffset'] = CVPJ_Placement['duration']
|
||||
|
||||
FL_playlistitem['unknown1'] = 120
|
||||
FL_playlistitem['unknown2'] = 25664
|
||||
FL_playlistitem['unknown3'] = 32896
|
||||
FL_playlistitem['flags'] = 64
|
||||
FL_playlistitem['trackindex'] = (-500 + int(CVPJ_playlistrow))*-1
|
||||
if 'muted' in CVPJ_Placement:
|
||||
if CVPJ_Placement['muted'] == True:
|
||||
FL_playlistitem['flags'] = 12352
|
||||
|
||||
if 'cut' in CVPJ_Placement:
|
||||
if 'type' in CVPJ_Placement['cut']:
|
||||
cutdata = CVPJ_Placement['cut']
|
||||
if cutdata['type'] == 'cut':
|
||||
if pl_stretch[0] == 'rate_tempo':
|
||||
if 'start' in cutdata:
|
||||
FL_playlistitem['startoffset'] = cutdata['start']*pl_stretch[1]
|
||||
FL_playlistitem['endoffset'] = CVPJ_Placement['duration']*pl_stretch[1] + FL_playlistitem['startoffset']
|
||||
elif pl_stretch[0] == 'rate_ignoretempo':
|
||||
if 'start' in cutdata:
|
||||
FL_playlistitem['startoffset'] = cutdata['start']*tempomul
|
||||
FL_playlistitem['endoffset'] = CVPJ_Placement['duration']*tempomul + FL_playlistitem['startoffset']
|
||||
elif pl_stretch[0] == 'rate_speed':
|
||||
if 'start' in cutdata:
|
||||
FL_playlistitem['startoffset'] = (cutdata['start']*tempomul)*pl_stretch[1]
|
||||
FL_playlistitem['endoffset'] = (CVPJ_Placement['duration']*tempomul)*pl_stretch[1] + FL_playlistitem['startoffset']
|
||||
else:
|
||||
if 'start' in cutdata:
|
||||
FL_playlistitem['startoffset'] = cutdata['start']
|
||||
FL_playlistitem['endoffset'] = cutdata['start']+FL_playlistitem['length']
|
||||
|
||||
#for value in ['startoffset', 'endoffset']:
|
||||
# outprint = None
|
||||
# if value in FL_playlistitem: outprint = round(FL_playlistitem[value], 6)
|
||||
# print(str(outprint).ljust(13), end=' ')
|
||||
#print(pl_stretch)
|
||||
|
||||
if FL_playlistitem['position'] not in FL_Playlist_BeforeSort:
|
||||
FL_Playlist_BeforeSort[FL_playlistitem['position']] = []
|
||||
FL_Playlist_BeforeSort[FL_playlistitem['position']].append(FL_playlistitem)
|
||||
|
||||
|
||||
if str(CVPJ_playlistrow) not in FL_Tracks:
|
||||
FL_Tracks[str(CVPJ_playlistrow)] = {}
|
||||
if 'color' in CVPJ_playlistitem:
|
||||
FL_Tracks[str(CVPJ_playlistrow)]['color'] = decode_color(CVPJ_playlistitem['color'])
|
||||
if 'name' in CVPJ_playlistitem:
|
||||
FL_Tracks[str(CVPJ_playlistrow)]['name'] = CVPJ_playlistitem['name']
|
||||
if 'size' in CVPJ_playlistitem:
|
||||
FL_Tracks[str(CVPJ_playlistrow)]['height'] = CVPJ_playlistitem['size']
|
||||
if 'enabled' in CVPJ_playlistitem:
|
||||
FL_Tracks[str(CVPJ_playlistrow)]['enabled'] = CVPJ_playlistitem['enabled']
|
||||
FL_Playlist_Sorted = dict(sorted(FL_Playlist_BeforeSort.items(), key=lambda item: item[0]))
|
||||
|
||||
for itemposition in FL_Playlist_Sorted:
|
||||
playlistposvalues = FL_Playlist_Sorted[itemposition]
|
||||
for itemrow in playlistposvalues:
|
||||
FL_Playlist.append(itemrow)
|
||||
|
||||
if 'timemarkers' in cvpj_l:
|
||||
CVPJ_TimeMarkers = cvpj_l['timemarkers']
|
||||
markernum = 0
|
||||
for timemarker in CVPJ_TimeMarkers:
|
||||
markernum += 1
|
||||
FL_TimeMarker = {}
|
||||
if 'name' in timemarker: FL_TimeMarker['name'] = timemarker['name']
|
||||
else: FL_TimeMarker['name'] = ""
|
||||
FL_TimeMarker['pos'] = int((timemarker['position']*ppq)/4)
|
||||
if 'type' in timemarker:
|
||||
if timemarker['type'] == 'start': FL_TimeMarker['type'] = 5
|
||||
elif timemarker['type'] == 'loop': FL_TimeMarker['type'] = 4
|
||||
elif timemarker['type'] == 'loop_area':
|
||||
FL_TimeMarkers[str(markernum)] = {'name': "", 'type':2, 'pos':int((timemarker['end']*ppq)/4)}
|
||||
FL_TimeMarker['type'] = 1
|
||||
markernum += 1
|
||||
elif timemarker['type'] == 'markerloop': FL_TimeMarker['type'] = 1
|
||||
elif timemarker['type'] == 'markerskip': FL_TimeMarker['type'] = 2
|
||||
elif timemarker['type'] == 'pause': FL_TimeMarker['type'] = 3
|
||||
elif timemarker['type'] == 'timesig':
|
||||
FL_TimeMarker['type'] = 8
|
||||
FL_TimeMarker['numerator'] = timemarker['numerator']
|
||||
FL_TimeMarker['denominator'] = timemarker['denominator']
|
||||
elif timemarker['type'] == 'punchin': FL_TimeMarker['type'] = 9
|
||||
elif timemarker['type'] == 'punchout': FL_TimeMarker['type'] = 10
|
||||
else: FL_TimeMarker['type'] = 0
|
||||
else: FL_TimeMarker['type'] = 0
|
||||
FL_TimeMarkers[str(markernum)] = FL_TimeMarker
|
||||
|
||||
if 'fxrack' in cvpj_l:
|
||||
for cvpj_fx in cvpj_l['fxrack']:
|
||||
cvpj_fxdata = cvpj_l['fxrack'][cvpj_fx]
|
||||
FL_Mixer[cvpj_fx] = {}
|
||||
if 'name' in cvpj_fxdata:
|
||||
FL_Mixer[cvpj_fx]['name'] = cvpj_fxdata['name']
|
||||
if 'color' in cvpj_fxdata:
|
||||
FL_Mixer[cvpj_fx]['color'] = decode_color(cvpj_fxdata['color'])
|
||||
|
||||
if 'chain_fx_audio' in cvpj_fxdata:
|
||||
slotnum = 0
|
||||
FL_Mixer[cvpj_fx]['slots'] = {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
|
||||
|
||||
for pluginid in cvpj_fxdata['chain_fx_audio']:
|
||||
|
||||
fl_plugin, fl_pluginparams = flp_enc_plugins.setparams(cvpj_l, pluginid)
|
||||
if fl_plugin != None:
|
||||
FL_Mixer[cvpj_fx]['slots'][slotnum] = {}
|
||||
slotdata = FL_Mixer[cvpj_fx]['slots'][slotnum]
|
||||
slotdata['plugin'] = fl_plugin
|
||||
slotdata['pluginparams'] = fl_pluginparams
|
||||
fx_name, fx_color = plugins.get_plug_fxvisual(cvpj_l, fl_plugin)
|
||||
|
||||
if fx_name: slotdata['name'] = fx_name
|
||||
if fx_color: slotdata['color'] = decode_color(fx_color)
|
||||
|
||||
|
||||
slotnum += 1
|
||||
if slotnum == 10: break
|
||||
|
||||
FL_Arrangements['0'] = {}
|
||||
FL_Arrangements['0']['items'] = FL_Playlist
|
||||
FL_Arrangements['0']['name'] = 'Arrangement'
|
||||
FL_Arrangements['0']['tracks'] = FL_Tracks
|
||||
FL_Arrangements['0']['timemarkers'] = FL_TimeMarkers
|
||||
|
||||
|
||||
|
||||
format_flp_enc.make(FLP_Data, output_file)
|
|
@ -7,7 +7,7 @@ import lxml.etree as ET
|
|||
import math
|
||||
import plugin_output
|
||||
from pathlib import Path
|
||||
from functions_plugin import lmms_auto
|
||||
from functions import data_dataset
|
||||
from functions import auto
|
||||
from functions import placements
|
||||
from functions import data_values
|
||||
|
@ -67,7 +67,26 @@ patternscount_forprinting = 0
|
|||
notescount_forprinting = 0
|
||||
trackscount_forprinting = 0
|
||||
|
||||
# ------- functions -------
|
||||
def dset_plugparams(pluginname, pluginid, xml_data, cvpj_plugindata):
|
||||
global dataset
|
||||
paramlist = dataset.params_list('plugin', pluginname)
|
||||
if paramlist != None:
|
||||
for paramname in paramlist:
|
||||
paramlist = dataset.params_i_get('plugin', pluginname, paramname)
|
||||
pv_noauto,pv_type,pv_def,pv_min,pv_max,pv_name = paramlist
|
||||
if pv_noauto == False:
|
||||
pl_val, pl_type, pl_name = cvpj_plugindata.param_get(paramname, pv_def)
|
||||
create_param_auto(xml_data, paramname, ['plugin', pluginid, paramname], pl_val, None, 'Plugin', pv_name, True)
|
||||
else:
|
||||
xml_data.set(paramname, str(cvpj_plugindata.dataval_get(paramname, pv_def)) )
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# ---------------------------------------------------------------- functions ----------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
def add_window_data(xmltag, cvpj_l, w_group, w_name, w_pos, w_size, w_open, w_max):
|
||||
out_pos, out_size, out_open, out_max = song.get_visual_window(cvpj_l, w_group, w_name, w_pos, w_size, w_open, w_max)
|
||||
|
@ -83,27 +102,49 @@ def add_window_data(xmltag, cvpj_l, w_group, w_name, w_pos, w_size, w_open, w_ma
|
|||
xmltag.set("width", str(out_size[0]))
|
||||
xmltag.set("height", str(out_size[1]))
|
||||
|
||||
def add_keyatt(xmltag, i_dict):
|
||||
xml_key = ET.SubElement(xmltag, 'key')
|
||||
for item in i_dict.items():
|
||||
xml_key_file = ET.SubElement(xml_key, 'attribute')
|
||||
xml_key_file.set('name', str(item[0]))
|
||||
xml_key_file.set('value', str(item[1]))
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# ------------------------------------------------------------------ math -------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
def oneto100(input): return round(float(input) * 100)
|
||||
|
||||
def sec2exp(value): return math.sqrt(value/5)
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# ------------------------------------------------------------------- vst -------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
def setvstparams(cvpj_plugindata, pluginid, xmldata):
|
||||
vstpath = data_values.get_value(cvpj_plugindata, 'path', '')
|
||||
vstpath = cvpj_plugindata.dataval_get('path', '')
|
||||
|
||||
current_program = data_values.get_value(cvpj_plugindata, 'current_program', 0)
|
||||
current_program = cvpj_plugindata.dataval_get('current_program', 0)
|
||||
xmldata.set('program', str(current_program) )
|
||||
xmldata.set('plugin', vstpath)
|
||||
|
||||
xml_vst_key = ET.SubElement(xmldata, 'key')
|
||||
xml_vst_key_file = ET.SubElement(xml_vst_key, 'attribute')
|
||||
xml_vst_key_file.set('name', 'file')
|
||||
xml_vst_key_file.set('value', vstpath)
|
||||
add_keyatt(xmldata, {'file': vstpath})
|
||||
|
||||
middlenotefix = data_values.get_value(cvpj_plugindata, 'middlenotefix', 0)
|
||||
|
||||
datatype = data_values.get_value(cvpj_plugindata, 'datatype', 'none')
|
||||
numparams = data_values.get_value(cvpj_plugindata, 'numparams', 0)
|
||||
middlenotefix = cvpj_plugindata.dataval_get('middlenotefix', 0)
|
||||
datatype = cvpj_plugindata.dataval_get('datatype', 'none')
|
||||
numparams = cvpj_plugindata.dataval_get('numparams', 0)
|
||||
|
||||
|
||||
if datatype == 'bank':
|
||||
bank_programs = data_values.get_value(cvpj_plugindata, 'programs', 0)
|
||||
bank_programs = cvpj_plugindata.dataval_get('programs', 0)
|
||||
cur_bank_prog = bank_programs[current_program]
|
||||
bankprog_type = cur_bank_prog['datatype']
|
||||
|
||||
|
@ -115,12 +156,12 @@ def setvstparams(cvpj_plugindata, pluginid, xmldata):
|
|||
xmldata.set('param'+str(param), str(param)+':noname:'+str(pval) )
|
||||
|
||||
if datatype == 'chunk':
|
||||
xmldata.set('chunk', data_values.get_value(cvpj_plugindata, 'chunk', 0))
|
||||
xmldata.set('chunk', cvpj_plugindata.dataval_get('chunk', ''))
|
||||
|
||||
if datatype == 'param':
|
||||
xmldata.set('numparams', str(data_values.get_value(cvpj_plugindata, 'numparams', 0)))
|
||||
xmldata.set('numparams', str(numparams))
|
||||
for param in range(numparams):
|
||||
pval, ptype, pname = plugins.get_plug_param(cvpj_l, pluginid, 'vst_param_'+str(param), 0)
|
||||
pval, ptype, pname = cvpj_plugindata.param_get('vst_param_'+str(param), 0)
|
||||
xmldata.set('param'+str(param), str(param)+':'+pname+':'+str(pval))
|
||||
|
||||
pluginautoid = auto_id.out_getlist(['plugin', pluginid])
|
||||
|
@ -131,26 +172,118 @@ def setvstparams(cvpj_plugindata, pluginid, xmldata):
|
|||
paramvisname = int(paramname[10:])+1
|
||||
aid_id, aid_data = auto_id.out_get(['plugin', pluginid, paramname])
|
||||
if aid_id != None and len(aid_data['placements']) != 0:
|
||||
lmms_make_main_auto_track(aid_id, aid_data, 'VST2: #'+str(paramvisname))
|
||||
make_auto_track(aid_id, aid_data, 'VST2: #'+str(paramvisname))
|
||||
autovarX = ET.SubElement(xmldata, 'param'+paramid)
|
||||
autovarX.set('scale_type', 'linear')
|
||||
autovarX.set('id', str(aid_id))
|
||||
|
||||
return middlenotefix
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# ------------------------------------------------------------------ auto -------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
def onetime2lmmstime(input): return int(round(float(input * 12)))
|
||||
def auto_add_main(xmltag, j_name, x_name, i_fallback, i_addmul, v_name):
|
||||
i_value = params.get(cvpj_l, [], j_name, i_fallback)[0]
|
||||
create_param_auto(xmltag, x_name, ['main', j_name], i_value, i_addmul, 'Main', v_name, True)
|
||||
|
||||
def oneto100(input): return round(float(input) * 100)
|
||||
def auto_add_track(xmltag, j_name, x_name, i_fallback, i_addmul, i_trackid, v_trackname, v_name):
|
||||
i_value = params.get(cvpj_l, ['track_data', i_trackid], j_name, i_fallback)[0]
|
||||
create_param_auto(xmltag, x_name, ['track', i_trackid, j_name], i_value, i_addmul, v_trackname, v_name, True)
|
||||
|
||||
def sec2exp(value): return math.sqrt(value/5)
|
||||
def auto_add_fxmixer(xmltag, j_name, x_name, i_fallback, i_addmul, i_fxnum, v_name):
|
||||
i_value = params.get(cvpj_l, ['fxmixer', i_fxnum], j_name, i_fallback)[0]
|
||||
create_param_auto(xmltag, x_name, ['fxmixer', i_fxnum, j_name], i_value, i_addmul, 'FX '+str(i_fxnum), v_name, True)
|
||||
|
||||
# ------- Instruments and Plugins -------
|
||||
def auto_add_plugin(xmltag, j_name, x_name, i_fallback, i_addmul, i_pluginid, cvpj_plugindata):
|
||||
pval, ptype, pname = cvpj_plugindata.param_get(j_name, i_fallback)
|
||||
create_param_auto(xmltag, x_name, ['plugin', i_pluginid, j_name], float(pval), i_addmul, 'Plugin', pname, True)
|
||||
|
||||
def asdrlfo_set(pluginid, trkX_insttr):
|
||||
#def add_auto_unused(paramlist, pluginautoid, pluginid, i_name):
|
||||
# if pluginautoid != None:
|
||||
# for paramid in pluginautoid:
|
||||
# add_auto_placements(1, None, ['plugin', pluginid], paramid, None, paramid, None, paramid, i_name, paramid)
|
||||
#
|
||||
def create_param_auto(x_tag, x_name, autoloc, i_value, i_addmul, v_type, v_name, writeparamxml):
|
||||
if i_addmul != None: i_value = (i_value+i_addmul[0])*i_addmul[1]
|
||||
if isinstance(i_value, bool): i_value = int(i_value)
|
||||
aid_id, aid_data = auto_id.out_get(autoloc)
|
||||
if x_tag != None:
|
||||
if aid_data != None and aid_id != None:
|
||||
if len(aid_data['placements']) != 0:
|
||||
writeparamxml = False
|
||||
if i_addmul != None: aid_data['placements'] = auto.multiply(aid_data['placements'], i_addmul[0], i_addmul[1])
|
||||
make_auto_track(aid_id, aid_data, v_type+': '+v_name)
|
||||
autovarX = ET.SubElement(x_tag, x_name)
|
||||
autovarX.set('value', str(i_value))
|
||||
autovarX.set('scale_type', 'linear')
|
||||
autovarX.set('id', str(aid_id))
|
||||
|
||||
elif aid_id != None and aid_data != None:
|
||||
writeparamxml = False
|
||||
make_auto_track(aid_id, aid_data, v_type+': '+v_name)
|
||||
|
||||
if writeparamxml:
|
||||
x_tag.set(x_name, str(i_value))
|
||||
|
||||
def parse_auto(xmltag, i_points, i_val_type):
|
||||
curpoint = 0
|
||||
for point in i_points:
|
||||
if 'type' in point and curpoint != 0 and i_val_type != 'bool ':
|
||||
if point['type'] == 'instant':
|
||||
xml_time = ET.SubElement(xmltag, "time")
|
||||
xml_time.set('value', str(prevvalue))
|
||||
xml_time.set('pos', str(int(point['position']*12)-1))
|
||||
xml_time = ET.SubElement(xmltag, "time")
|
||||
if i_val_type == 'float': xml_time.set('value', str(point['value']))
|
||||
elif i_val_type == 'int': xml_time.set('value', str(int(point['value'])))
|
||||
else: xml_time.set('value', str(int(point['value'])))
|
||||
xml_time.set('pos', str(int(point['position']*12)))
|
||||
prevvalue = point['value']
|
||||
curpoint += 1
|
||||
|
||||
def make_auto_track(autoidnum, autodata, visualname):
|
||||
global trkcX
|
||||
print('[output-lmms] Automation Track: '+visualname)
|
||||
xml_autotrack = ET.SubElement(trkcX, "track")
|
||||
xml_autotrack.set('type', '5')
|
||||
xml_autotrack.set('solo', '0')
|
||||
xml_autotrack.set('muted', '0')
|
||||
xml_autotrack.set('name', visualname)
|
||||
|
||||
autodata_type = autodata['type']
|
||||
autodata_placements = autodata['placements']
|
||||
|
||||
for autoplacement in autodata_placements:
|
||||
xml_automationpattern = ET.SubElement(xml_autotrack, "automationpattern")
|
||||
xml_automationpattern.set('pos', str(int(autoplacement['position']*12)))
|
||||
xml_automationpattern.set('len', str(int(autoplacement['duration']*12)))
|
||||
xml_automationpattern.set('tens', "0")
|
||||
xml_automationpattern.set('name', visualname)
|
||||
xml_automationpattern.set('mute', "0")
|
||||
xml_automationpattern.set('prog', "1" if autodata_type != 'bool' else "0")
|
||||
prevvalue = 0
|
||||
if 'points' in autoplacement: parse_auto(xml_automationpattern, autoplacement['points'], autodata_type)
|
||||
if autoidnum != None:
|
||||
xml_object = ET.SubElement(xml_automationpattern, "object")
|
||||
xml_object.set('id', str(autoidnum))
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# ----------------------------------------------- Instruments and Plugins -------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
def asdrlfo_set(inst_plugindata, trkX_insttr):
|
||||
eldataX = ET.SubElement(trkX_insttr, "eldata")
|
||||
|
||||
filt_enabled, filt_cutoff, filt_reso, filt_type, filt_subtype = plugins.get_filter(cvpj_l, pluginid)
|
||||
filt_enabled, filt_cutoff, filt_reso, filt_type, filt_subtype = inst_plugindata.filter_get()
|
||||
eldataX.set('fcut', str(filt_cutoff))
|
||||
filtertable_e = [filt_type, filt_subtype]
|
||||
lmms_filternum = None
|
||||
|
@ -195,19 +328,14 @@ def asdrlfo_set(pluginid, trkX_insttr):
|
|||
eldataX.set('fwet', str(int(filt_enabled)))
|
||||
eldataX.set('fres', str(filt_reso))
|
||||
|
||||
asdrlfo(pluginid, eldataX, 'vol', 'vol')
|
||||
asdrlfo(pluginid, eldataX, 'cutoff', 'cut')
|
||||
asdrlfo(pluginid, eldataX, 'reso', 'res')
|
||||
|
||||
def asdrlfo(pluginid, xmlobj, asdrtype, xmltype):
|
||||
asdrlfo(inst_plugindata, eldataX, 'vol', 'vol')
|
||||
asdrlfo(inst_plugindata, eldataX, 'cutoff', 'cut')
|
||||
asdrlfo(inst_plugindata, eldataX, 'reso', 'res')
|
||||
|
||||
def asdrlfo(inst_plugindata, xmlobj, asdrtype, xmltype):
|
||||
elmodX = ET.SubElement(xmlobj, 'el' + xmltype)
|
||||
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = plugins.get_asdr_env(cvpj_l, pluginid, asdrtype)
|
||||
t_attack, t_decay, t_release = plugins.get_asdr_env_tension(cvpj_l, pluginid, asdrtype)
|
||||
a_attack *= pow(2, min(t_attack*3.14, 0))
|
||||
a_decay *= pow(2, min(t_decay*3.14, 0))
|
||||
a_release *= pow(2, min(t_release*3.14, 0))
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = inst_plugindata.asdr_env_get_fake_tension(asdrtype)
|
||||
|
||||
if asdrtype == 'cutoff': elmodX.set('amt', str(a_amount/6000))
|
||||
else: elmodX.set('amt', str(float(a_amount)))
|
||||
|
@ -218,7 +346,7 @@ def asdrlfo(pluginid, xmlobj, asdrtype, xmltype):
|
|||
elmodX.set('sustain', str(a_sustain))
|
||||
elmodX.set('rel', str(sec2exp(a_release)))
|
||||
|
||||
l_predelay, l_attack, l_shape, l_speed_type, l_speed_time, l_amount = plugins.get_lfo(cvpj_l, pluginid, asdrtype)
|
||||
l_predelay, l_attack, l_shape, l_speed_type, l_speed_time, l_amount = inst_plugindata.lfo_get(asdrtype)
|
||||
if asdrtype == 'cutoff': elmodX.set('lamt', str(l_amount/1500))
|
||||
else: elmodX.set('lamt', str(l_amount))
|
||||
elmodX.set('lpdel', str(l_predelay))
|
||||
|
@ -233,37 +361,6 @@ def asdrlfo(pluginid, xmlobj, asdrtype, xmltype):
|
|||
elmodX.set('lspd', str(lfospeed))
|
||||
elmodX.set('lshp', str(lfoshape[l_shape]))
|
||||
|
||||
def get_plugin_param(pluginautoid, xmltag, xmlname, pluginid, paramname, fallback, **kwargs):
|
||||
isslot = data_values.get_value(kwargs, 'isslot', False)
|
||||
pluginparam = plugins.get_plug_param(cvpj_l, pluginid, paramname, fallback)
|
||||
|
||||
aid_id, aid_data = auto_id.out_get(['plugin', pluginid, paramname])
|
||||
|
||||
if pluginparam[1] != 'bool': outparam = pluginparam[0]
|
||||
else: outparam = int(pluginparam[0])
|
||||
|
||||
if pluginparam[2] != '': v_name = pluginparam[2]
|
||||
else: v_name = paramname
|
||||
|
||||
visname = 'Plugin: '+v_name
|
||||
|
||||
if 'visualname' in kwargs: visname = kwargs['visualname']
|
||||
|
||||
if aid_id != None and len(aid_data['placements']) != 0:
|
||||
aid_data['placements'] = auto.multiply(aid_data['placements'], 0, 1)
|
||||
lmms_make_main_auto_track(aid_id, aid_data, visname)
|
||||
autovarX = ET.SubElement(xmltag, xmlname)
|
||||
autovarX.set('value', str(outparam))
|
||||
autovarX.set('scale_type', 'linear')
|
||||
autovarX.set('id', str(aid_id))
|
||||
for name in kwargs:
|
||||
autovarX.set(name, str(kwargs[name]))
|
||||
return autovarX
|
||||
else:
|
||||
xmltag.set(xmlname, str(outparam))
|
||||
|
||||
|
||||
|
||||
def lmms_encode_plugin(xmltag, trkJ, trackid, trackname, trkX_insttr):
|
||||
instJ = data_values.get_value(trkJ, 'instdata', {})
|
||||
xml_instrumentpreplugin = ET.SubElement(xmltag, "instrument")
|
||||
|
@ -273,85 +370,90 @@ def lmms_encode_plugin(xmltag, trkJ, trackid, trackname, trkX_insttr):
|
|||
|
||||
if 'pluginid' in instJ:
|
||||
pluginid = instJ['pluginid']
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
|
||||
visual_plugname = str(plugintype[0])+' ('+str(plugintype[1])+')'
|
||||
|
||||
cvpj_plugindata = plugins.get_plug_data(cvpj_l, pluginid)
|
||||
|
||||
inst_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
plugintype = inst_plugindata.type_get()
|
||||
pluginautoid = auto_id.out_getlist(['plugin', pluginid])
|
||||
visual_plugname = str(plugintype[0])+' ('+str(plugintype[1])+')'
|
||||
|
||||
if plugintype == ['sampler', 'single']:
|
||||
print('[output-lmms] Plugin: Sampler (Single) > audiofileprocessor')
|
||||
xml_instrumentpreplugin.set('name', "audiofileprocessor")
|
||||
xml_sampler = ET.SubElement(xml_instrumentpreplugin, "audiofileprocessor")
|
||||
|
||||
xml_sampler.set('reversed', str(int(data_values.get_value(cvpj_plugindata, 'reverse', 0))))
|
||||
xml_sampler.set('amp', str(oneto100(data_values.get_value(cvpj_plugindata, 'amp', 1))))
|
||||
xml_sampler.set('stutter', str(int(data_values.get_value(cvpj_plugindata, 'continueacrossnotes', False))))
|
||||
xml_sampler.set('src', data_values.get_value(cvpj_plugindata, 'file', ''))
|
||||
xml_sampler.set('reversed', str(int( inst_plugindata.dataval_get('reverse', 0) )))
|
||||
xml_sampler.set('amp', str(oneto100( inst_plugindata.dataval_get('amp', 1) )))
|
||||
xml_sampler.set('stutter', str(int( inst_plugindata.dataval_get('continueacrossnotes', False) )))
|
||||
xml_sampler.set('src', inst_plugindata.dataval_get('file', ''))
|
||||
|
||||
point_value_type = data_values.get_value(cvpj_plugindata, 'point_value_type', 'samples')
|
||||
point_value_type = inst_plugindata.dataval_get('point_value_type', 'samples')
|
||||
sample_length = inst_plugindata.dataval_get('length', None)
|
||||
sample_start = inst_plugindata.dataval_get('start', 0)
|
||||
sample_loop = inst_plugindata.dataval_get('loop', 0)
|
||||
|
||||
if point_value_type == 'samples' and 'length' in cvpj_plugindata:
|
||||
trkJ_length = cvpj_plugindata['length']
|
||||
if trkJ_length != 0:
|
||||
xml_sampler.set('sframe', str(cvpj_plugindata['start']/trkJ_length) if 'start' in cvpj_plugindata else '0')
|
||||
if 'loop' in cvpj_plugindata:
|
||||
trkJ_loop = cvpj_plugindata['loop']
|
||||
if 'points' in trkJ_loop:
|
||||
trkJ_loop_points = trkJ_loop['points']
|
||||
start = trkJ_loop_points[0] / trkJ_length
|
||||
end = trkJ_loop_points[1] / trkJ_length
|
||||
if end == 0 or start == end: end = 1.0
|
||||
xml_sampler.set('lframe', str(start))
|
||||
xml_sampler.set('eframe', str(end))
|
||||
out_start = 0
|
||||
out_loop = 0
|
||||
out_end = 1
|
||||
|
||||
if point_value_type == 'samples' and sample_length:
|
||||
if sample_length != 0:
|
||||
out_start = sample_start/sample_length
|
||||
|
||||
if sample_loop:
|
||||
if 'points' in sample_loop:
|
||||
sample_loop_points = sample_loop['points']
|
||||
out_loop = sample_loop_points[0] / sample_length
|
||||
out_end = sample_loop_points[1] / sample_length
|
||||
if out_end == 0 or out_start == out_end: out_end = 1.0
|
||||
|
||||
if point_value_type == 'percent':
|
||||
xml_sampler.set('sframe', str(cvpj_plugindata['start']) if 'start' in cvpj_plugindata else '0')
|
||||
if 'loop' in cvpj_plugindata:
|
||||
trkJ_loop = cvpj_plugindata['loop']
|
||||
if 'points' in trkJ_loop:
|
||||
trkJ_loop_points = trkJ_loop['points']
|
||||
xml_sampler.set('lframe', str(trkJ_loop_points[0]))
|
||||
xml_sampler.set('eframe', str(trkJ_loop_points[1]))
|
||||
out_start = sample_start
|
||||
if sample_loop:
|
||||
if 'points' in sample_loop:
|
||||
trkJ_loop_points = sample_loop['points']
|
||||
out_loop = trkJ_loop_points[0]
|
||||
out_end = trkJ_loop_points[1]
|
||||
|
||||
xml_sampler.set('sframe', str(out_start))
|
||||
xml_sampler.set('lframe', str(out_loop))
|
||||
xml_sampler.set('eframe', str(out_end))
|
||||
|
||||
loopenabled = 0
|
||||
loopmode = "normal"
|
||||
if 'loop' in cvpj_plugindata:
|
||||
trkJ_loop = cvpj_plugindata['loop']
|
||||
if 'enabled' in trkJ_loop: loopenabled = trkJ_loop['enabled']
|
||||
if 'mode' in trkJ_loop: loopmode = trkJ_loop['mode']
|
||||
if sample_loop:
|
||||
if 'enabled' in sample_loop: loopenabled = sample_loop['enabled']
|
||||
if 'mode' in sample_loop: loopmode = sample_loop['mode']
|
||||
if loopenabled == 0: xml_sampler.set('looped', '0')
|
||||
if loopenabled == 1:
|
||||
if loopmode == "normal": xml_sampler.set('looped', '1')
|
||||
if loopmode == "pingpong": xml_sampler.set('looped', '2')
|
||||
interpolation = "none"
|
||||
if 'interpolation' in cvpj_plugindata: interpolation = cvpj_plugindata['interpolation']
|
||||
|
||||
interpolation = inst_plugindata.dataval_get('interpolation', "sinc")
|
||||
if interpolation == "none": xml_sampler.set('interp', '0')
|
||||
if interpolation == "linear": xml_sampler.set('interp', '1')
|
||||
if interpolation == "sinc": xml_sampler.set('interp', '2')
|
||||
elif interpolation == "linear": xml_sampler.set('interp', '1')
|
||||
elif interpolation == "sinc": xml_sampler.set('interp', '2')
|
||||
else: xml_sampler.set('interp', '2')
|
||||
|
||||
middlenotefix += 3
|
||||
|
||||
elif plugintype[0] == 'soundfont2':
|
||||
print('[output-lmms] Plugin: soundfont2 > sf2player')
|
||||
xml_instrumentpreplugin.set('name', "sf2player")
|
||||
xml_sf2 = ET.SubElement(xml_instrumentpreplugin, "sf2player")
|
||||
xml_sf2.set('bank', str(int(data_values.get_value(cvpj_plugindata, 'bank', 0))))
|
||||
xml_sf2.set('patch', str(int(data_values.get_value(cvpj_plugindata, 'patch', 0))))
|
||||
xml_sf2.set('src', str(data_values.get_value(cvpj_plugindata, 'file', '')))
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'gain', pluginid, 'gain', 1)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'chorusDepth', pluginid, 'chorus_depth', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'chorusLevel', pluginid, 'chorus_level', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'chorusNum', pluginid, 'chorus_lines', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'chorusOn', pluginid, 'chorus_enabled', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'chorusSpeed', pluginid, 'chorus_speed', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'reverbDamping', pluginid, 'reverb_damping', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'reverbLevel', pluginid, 'reverb_level', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'reverbOn', pluginid, 'reverb_enabled', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'reverbRoomSize', pluginid, 'reverb_roomsize', 0)
|
||||
get_plugin_param(pluginautoid, xml_sf2, 'reverbWidth', pluginid, 'reverb_width', 0)
|
||||
xml_sf2.set('bank', str(int(inst_plugindata.dataval_get('bank', 0))))
|
||||
xml_sf2.set('patch', str(int(inst_plugindata.dataval_get('patch', 0))))
|
||||
xml_sf2.set('src', str(inst_plugindata.dataval_get('file', '')))
|
||||
auto_add_plugin(xml_sf2, 'gain', 'gain', 1, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'chorusDepth', 'chorus_depth', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'chorusLevel', 'chorus_level', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'chorusNum', 'chorus_lines', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'chorusOn', 'chorus_enabled', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'chorusSpeed', 'chorus_speed', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'reverbDamping', 'reverb_damping', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'reverbLevel', 'reverb_level', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'reverbOn', 'reverb_enabled', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'reverbRoomSize', 'reverb_roomsize', 0, None, pluginid, inst_plugindata)
|
||||
auto_add_plugin(xml_sf2, 'reverbWidth', 'reverb_width', 0, None, pluginid, inst_plugindata)
|
||||
middlenotefix += 12
|
||||
|
||||
elif plugintype == ['fm', 'opl2']:
|
||||
|
@ -360,48 +462,45 @@ def lmms_encode_plugin(xmltag, trkJ, trackid, trackname, trkX_insttr):
|
|||
xml_opl2 = ET.SubElement(xml_instrumentpreplugin, "OPL2")
|
||||
for lmms_opname, cvpj_opname in [['op1', 'mod'],['op2', 'car']]:
|
||||
for varname in opl2opvarnames:
|
||||
get_plugin_param(pluginautoid, xml_opl2, lmms_opname+varname[0], pluginid, cvpj_opname+varname[1], 0)
|
||||
auto_add_plugin(xml_opl2, cvpj_opname+varname[1], lmms_opname+varname[0], 0, None, pluginid, inst_plugindata)
|
||||
for varname in opl2varnames:
|
||||
get_plugin_param(pluginautoid, xml_opl2, varname[0], pluginid, varname[1], 0)
|
||||
auto_add_plugin(xml_opl2, varname[1], varname[0], 0, None, pluginid, inst_plugindata)
|
||||
middlenotefix = 24
|
||||
|
||||
elif plugintype == ['vst2', 'win']:
|
||||
print('[output-lmms] Plugin: vst2 > vestige')
|
||||
xml_instrumentpreplugin.set('name', "vestige")
|
||||
xml_vst = ET.SubElement(xml_instrumentpreplugin, "vestige")
|
||||
middlenotefix += setvstparams(cvpj_plugindata, pluginid, xml_vst)
|
||||
middlenotefix += setvstparams(inst_plugindata, pluginid, xml_vst)
|
||||
|
||||
elif plugintype[0] == 'native-lmms':
|
||||
print('[output-lmms] Plugin: '+plugintype[1]+' > '+plugintype[1])
|
||||
xml_instrumentpreplugin.set('name', plugintype[1])
|
||||
xml_lmmsnat = ET.SubElement(xml_instrumentpreplugin, plugintype[1])
|
||||
lmms_autovals = lmms_auto.get_params_inst(plugintype[1])
|
||||
for pluginparam in lmms_autovals[0]:
|
||||
get_plugin_param(pluginautoid, xml_lmmsnat, pluginparam, pluginid, pluginparam, 0)
|
||||
for pluginparam in lmms_autovals[1]:
|
||||
xml_lmmsnat.set(pluginparam,
|
||||
str(plugins.get_plug_dataval(cvpj_l, pluginid, pluginparam, ''))
|
||||
)
|
||||
|
||||
dset_plugparams(plugintype[1], pluginid, xml_lmmsnat, inst_plugindata)
|
||||
|
||||
if plugintype[1] == 'zynaddsubfx':
|
||||
zdata = cvpj_plugindata['data'].encode('ascii')
|
||||
zdataxs = ET.fromstring(base64.b64decode(zdata).decode('ascii'))
|
||||
xml_lmmsnat.append(zdataxs)
|
||||
zdata = inst_plugindata.dataval_get('data', None)
|
||||
if zdata != None:
|
||||
zdataxs = ET.fromstring(base64.b64decode(zdata.encode('ascii')).decode('ascii'))
|
||||
xml_lmmsnat.append(zdataxs)
|
||||
if plugintype[1] == 'tripleoscillator':
|
||||
for names in [['userwavefile0', 'osc_1'],
|
||||
['userwavefile1', 'osc_2'],
|
||||
['userwavefile2', 'osc_3']]:
|
||||
filedata = plugins.get_fileref(cvpj_l, pluginid, names[1])
|
||||
filedata = inst_plugindata.fileref_get(names[1])
|
||||
if filedata != None: xml_lmmsnat.set(names[0], filedata['path'])
|
||||
|
||||
else:
|
||||
print('[output-lmms] Plugin: '+visual_plugname+' > None')
|
||||
xml_instrumentpreplugin.set('name', "audiofileprocessor")
|
||||
paramlist = plugins.get_plug_paramlist(cvpj_l, pluginid)
|
||||
#paramlist = plugins.get_plug_paramlist(cvpj_l, pluginid)
|
||||
|
||||
if trackname not in ['', None]: visual_plugname = trackname
|
||||
add_auto_unused(paramlist, pluginautoid, pluginid, visual_plugname)
|
||||
#if trackname not in ['', None]: visual_plugname = trackname
|
||||
#add_auto_unused(paramlist, pluginautoid, pluginid, visual_plugname)
|
||||
|
||||
asdrlfo_set(pluginid, trkX_insttr)
|
||||
asdrlfo_set(inst_plugindata, trkX_insttr)
|
||||
|
||||
else:
|
||||
plugintype = [None, None]
|
||||
|
@ -469,8 +568,6 @@ def lmms_encode_inst_track(xmltag, trkJ, trackid, trkplacementsJ):
|
|||
|
||||
#instrumenttrack
|
||||
trkX_insttr = ET.SubElement(xmltag, "instrumenttrack")
|
||||
trkX_insttr.set('usemasterpitch', "1")
|
||||
trkX_insttr.set('pitch', "0")
|
||||
instplugin = instJ['pluginid'] if 'pluginid' in instJ else None
|
||||
|
||||
if instplugin != None:
|
||||
|
@ -479,38 +576,31 @@ def lmms_encode_inst_track(xmltag, trkJ, trackid, trkplacementsJ):
|
|||
trkX_insttr.set('fxch', str(tracks_r.track_fxrackchan_get(cvpj_l, trackid)))
|
||||
trkX_insttr.set('pitchrange', "12")
|
||||
|
||||
add_auto_placements(1, [0, 100], ['track', trackid], 'usemasterpitch', trkJ, 'usemasterpitch', trkX_insttr, 'usemasterpitch', trackname, 'Use Master Pitch')
|
||||
add_auto_placements(1, [0, 100], ['track', trackid], 'vol', trkJ, 'vol', trkX_insttr, 'vol', trackname, 'Volume')
|
||||
add_auto_placements(0, [0, 100], ['track', trackid], 'pan', trkJ, 'pan', trkX_insttr, 'pan', trackname, 'Pan')
|
||||
add_auto_placements(1, [-1, -1], ['track', trackid], 'enabled', trkJ, 'enabled', xmltag, 'muted', trackname, 'Muted')
|
||||
add_auto_placements(0, [0, 100], ['track', trackid], 'pitch', trkJ, 'pitch', trkX_insttr, 'pitch', trackname, 'Pitch')
|
||||
auto_add_track(trkX_insttr, 'usemasterpitch', 'usemasterpitch', 1, None, trackid, trackname, 'Use Master Pitch')
|
||||
auto_add_track(trkX_insttr, 'vol', 'vol', 1, [0, 100], trackid, trackname, 'Vol')
|
||||
auto_add_track(trkX_insttr, 'pan', 'pan', 0, [0, 100], trackid, trackname, 'Pan')
|
||||
auto_add_track(xmltag, 'enabled', 'muted', 1, [-1, -1], trackid, trackname, 'On')
|
||||
auto_add_track(trkX_insttr, 'pitch', 'pitch', 0, [0, 100], trackid, trackname, 'Pitch')
|
||||
|
||||
if 'chain_fx_notes' in trkJ:
|
||||
trkJ_notefx = trkJ['chain_fx_notes']
|
||||
|
||||
for pluginid in trkJ_notefx:
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
notefx_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
plugintype = notefx_plugindata.type_get()
|
||||
|
||||
if plugintype[0] == 'native-lmms' and plugintype[1] in ['arpeggiator', 'chordcreator']:
|
||||
pluginautoid = auto_id.out_getlist(['plugin', pluginid])
|
||||
slotautoid = auto_id.out_getlist(['slot', pluginid])
|
||||
|
||||
fxdata = data_values.nested_dict_get_value(cvpj_l, ['plugins', pluginid])
|
||||
i_enabled, i_wet = notefx_plugindata.fxdata_get()
|
||||
|
||||
if plugintype[1] == 'arpeggiator':
|
||||
trkX_notefx = ET.SubElement(trkX_insttr, "arpeggiator")
|
||||
paramlist = ['arpgate', 'arprange', 'arpmode', 'arpdir', 'arpmiss', 'arpskip', 'arptime', 'arpcycle', 'arp']
|
||||
add_auto_placements(0, None, ['slot', pluginid], 'enabled', fxdata, 'enabled', trkX_notefx, 'arp-enabled', 'Arp', 'On', isslot=True)
|
||||
create_param_auto(trkX_notefx, 'arp-enabled', ['slot', pluginid, 'enabled'], i_enabled, None, 'Arp', 'On', True)
|
||||
dset_plugparams(plugintype[1], pluginid, trkX_notefx, notefx_plugindata)
|
||||
|
||||
if plugintype[1] == 'chordcreator':
|
||||
trkX_notefx = ET.SubElement(trkX_insttr, "chordcreator")
|
||||
paramlist = ['chordrange', 'chord']
|
||||
add_auto_placements(0, None, ['slot', pluginid], 'enabled', fxdata, 'enabled', trkX_notefx, 'chord-enabled', 'Chord', 'On', isslot=True)
|
||||
|
||||
for paramid in paramlist:
|
||||
get_plugin_param(pluginautoid, trkX_notefx, paramid, pluginid, paramid, 0)
|
||||
|
||||
|
||||
create_param_auto(trkX_notefx, 'chord-enabled', ['slot', pluginid, 'enabled'], i_enabled, None, 'Chord', 'On', True)
|
||||
dset_plugparams(plugintype[1], pluginid, trkX_notefx, notefx_plugindata)
|
||||
|
||||
print('[output-lmms] Instrument Track')
|
||||
if 'name' in trkJ: print('[output-lmms] Name: ' + trkJ['name'])
|
||||
|
@ -607,9 +697,9 @@ def lmms_encode_audio_track(xmltag, trkJ, trackid, trkplacementsJ):
|
|||
|
||||
trkX_samptr = ET.SubElement(xmltag, "sampletrack")
|
||||
|
||||
add_auto_placements(1, [-1, -1], ['track', trackid], 'enabled', trkJ, 'enabled', xmltag, 'muted', trackname, 'Muted')
|
||||
add_auto_placements(1, [0, 100], ['track', trackid], 'vol', trkJ, 'vol', trkX_samptr, 'vol', trackname, 'Volume')
|
||||
add_auto_placements(0, [0, 100], ['track', trackid], 'pan', trkJ, 'pan', trkX_samptr, 'pan', trackname, 'Pan')
|
||||
auto_add_track(trkX_samptr, 'vol', 'vol', 1, [0, 100], trackid, trackname, 'Vol')
|
||||
auto_add_track(trkX_samptr, 'pan', 'pan', 0, [0, 100], trackid, trackname, 'Pan')
|
||||
auto_add_track(xmltag, 'enabled', 'muted', 1, [-1, -1], trackid, trackname, 'On')
|
||||
|
||||
trkX_samptr.set('fxch', str(tracks_r.track_fxrackchan_get(cvpj_l, trackid)))
|
||||
|
||||
|
@ -642,10 +732,15 @@ def lmms_encode_audio_track(xmltag, trkJ, trackid, trkplacementsJ):
|
|||
|
||||
# ------- Effects -------
|
||||
|
||||
def lmms_encode_effectplugin(pluginid, fxslotX):
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
def lmms_encode_effectslot(pluginid, fxcX):
|
||||
fx_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
i_enabled, i_wet = fx_plugindata.fxdata_get()
|
||||
|
||||
cvpj_plugindata = plugins.get_plug_data(cvpj_l, pluginid)
|
||||
fxslotX = ET.SubElement(fxcX, "effect")
|
||||
create_param_auto(fxslotX, 'on', ['slot', pluginid, 'enabled'], i_enabled, None, 'Slot', 'On', True)
|
||||
create_param_auto(fxslotX, 'wet', ['slot', pluginid, 'wet'], i_wet, None, 'Slot', 'Wet', True)
|
||||
|
||||
plugintype = fx_plugindata.type_get()
|
||||
|
||||
pluginautoid = auto_id.out_getlist(['plugin', pluginid])
|
||||
|
||||
|
@ -659,47 +754,16 @@ def lmms_encode_effectplugin(pluginid, fxslotX):
|
|||
xml_lmmsreverbsc.set('color', '10000')
|
||||
|
||||
elif plugintype == ['universal', 'eq-bands']:
|
||||
#used, active, freq, gain, res/bw
|
||||
data_LP, data_Lowshelf, data_Peaks, data_HighShelf, data_HP = fx_plugindata.eqband_get_limited(None)
|
||||
|
||||
print('[output-lmms] Audio FX: [eq] ')
|
||||
fxslotX.set('name', 'eq')
|
||||
xml_lmmseq = ET.SubElement(fxslotX, 'Eq')
|
||||
|
||||
data_LP = [False,0,0,0,0]
|
||||
data_Lowshelf = [False,0,0,0,0]
|
||||
data_Peaks = [[False,0,0,0,0],[False,0,0,0,0],[False,0,0,0,0],[False,0,0,0,0]]
|
||||
data_HighShelf = [False,0,0,0,0]
|
||||
data_HP = [False,0,0,0,0]
|
||||
|
||||
banddata = plugins.get_eqband(cvpj_l, pluginid, None)
|
||||
|
||||
for s_band in banddata:
|
||||
bandtype = s_band['type']
|
||||
|
||||
band_on = s_band['on']
|
||||
band_freq = s_band['freq']
|
||||
band_gain = s_band['gain']
|
||||
band_res = s_band['var']
|
||||
|
||||
part = [True, band_on, band_freq, band_gain, band_res]
|
||||
|
||||
if bandtype == 'low_pass' and band_on: data_LP = part
|
||||
if bandtype == 'low_shelf' and band_on: data_Lowshelf = part
|
||||
if bandtype == 'peak' and band_on:
|
||||
for peaknum in range(4):
|
||||
peakdata = data_Peaks[peaknum]
|
||||
if peakdata[0] == False:
|
||||
data_Peaks[peaknum] = part
|
||||
break
|
||||
if bandtype == 'high_shelf' and band_on: data_HighShelf = part
|
||||
if bandtype == 'high_pass' and band_on: data_HP = part
|
||||
|
||||
xml_lmmseq.set('LPactive', str(data_LP[1]))
|
||||
xml_lmmseq.set('LPfreq', str(data_LP[2]))
|
||||
xml_lmmseq.set('LPres', str(data_LP[4]))
|
||||
|
||||
#print(data_LP, data_Lowshelf, data_HighShelf, data_HP)
|
||||
|
||||
xml_lmmseq.set('Lowshelfactive', str(data_Lowshelf[1]))
|
||||
xml_lmmseq.set('LowShelffreq', str(data_Lowshelf[2]))
|
||||
xml_lmmseq.set('Lowshelfgain', str(data_Lowshelf[3]))
|
||||
|
@ -720,87 +784,82 @@ def lmms_encode_effectplugin(pluginid, fxslotX):
|
|||
xml_lmmseq.set('HPfreq', str(data_HP[2]))
|
||||
xml_lmmseq.set('HPres', str(data_HP[4]))
|
||||
|
||||
get_plugin_param(pluginautoid, xml_lmmseq, 'Outputgain', pluginid, 'gain_out', 0)
|
||||
get_plugin_param(pluginautoid, xml_lmmseq, 'Inputgain', pluginid, 'gain_in', 0)
|
||||
xml_lmmseq.set('Outputgain', str( fx_plugindata.param_get('gain_out', 0) ))
|
||||
xml_lmmseq.set('Inputgain', str( fx_plugindata.param_get('gain_in', 0) ))
|
||||
|
||||
elif plugintype == ['universal', 'delay-c']:
|
||||
print('[output-lmms] Audio FX: [delay] ')
|
||||
fxslotX.set('name', 'delay')
|
||||
xml_lmmsdelay = ET.SubElement(fxslotX, 'Delay')
|
||||
|
||||
d_time_type = plugins.get_plug_dataval(cvpj_l, pluginid, 'time_type', 'seconds')
|
||||
d_time = plugins.get_plug_dataval(cvpj_l, pluginid, 'time', 1)
|
||||
d_wet = plugins.get_plug_dataval(cvpj_l, pluginid, 'wet', 0.5)
|
||||
d_feedback = plugins.get_plug_dataval(cvpj_l, pluginid, 'feedback', 0.0)
|
||||
d_time_type = fx_plugindata.dataval_get('time_type', 'seconds')
|
||||
d_time = fx_plugindata.dataval_get('time', 1)
|
||||
d_wet = fx_plugindata.dataval_get('wet', 0.5)
|
||||
d_feedback = fx_plugindata.dataval_get('feedback', 0.0)
|
||||
|
||||
if d_time_type == 'seconds':
|
||||
get_plugin_param(pluginautoid, xml_lmmsdelay, 'DelayTimeSamples', pluginid, 'time_seconds', d_time)
|
||||
xml_lmmsdelay.set('DelayTimeSamples', str(d_time))
|
||||
if d_time_type == 'steps':
|
||||
get_plugin_param(pluginautoid, xml_lmmsdelay, 'DelayTimeSamples', pluginid, 'time_seconds', (d_time/8)*((lmms_bpm)/120))
|
||||
xml_lmmsdelay.set('DelayTimeSamples', str((d_time/8)*((lmms_bpm)/120)))
|
||||
|
||||
get_plugin_param(pluginautoid, xml_lmmsdelay, 'FeebackAmount', pluginid, 'feedback', d_feedback)
|
||||
get_plugin_param(pluginautoid, xml_lmmsdelay, 'LfoAmount', pluginid, 'lfo_amount', 0)
|
||||
get_plugin_param(pluginautoid, xml_lmmsdelay, 'LfoFrequency', pluginid, 'lfo_freq', 0)
|
||||
get_plugin_param(pluginautoid, xml_lmmsdelay, 'OutGain', pluginid, 'gain_out', 0)
|
||||
xml_lmmsdelay.set('FeebackAmount', str(d_feedback))
|
||||
xml_lmmsdelay.set('LfoAmount', str( fx_plugindata.param_get('lfo_amount', 0) ))
|
||||
xml_lmmsdelay.set('LfoFrequency', str( fx_plugindata.param_get('lfo_freq', 0) ))
|
||||
xml_lmmsdelay.set('OutGain', str( fx_plugindata.param_get('gain_out', 0) ))
|
||||
|
||||
elif plugintype == ['vst2', 'win']:
|
||||
print('[output-lmms] Audio FX: [vst2] ')
|
||||
fxslotX.set('name', 'vsteffect')
|
||||
xml_vst = ET.SubElement(fxslotX, "vsteffectcontrols")
|
||||
setvstparams(cvpj_plugindata, pluginid, xml_vst)
|
||||
setvstparams(fx_plugindata, pluginid, xml_vst)
|
||||
|
||||
elif plugintype[0] == 'native-lmms':
|
||||
lmms_autovals = lmms_auto.get_params_fx(plugintype[1])
|
||||
xml_name = fxlist[plugintype[1]]
|
||||
fxslotX.set('name', plugintype[1])
|
||||
print('[output-lmms] Audio FX: ['+plugintype[1]+'] ')
|
||||
xml_lmmsnat = ET.SubElement(fxslotX, xml_name)
|
||||
for pluginparam in lmms_autovals[0]:
|
||||
get_plugin_param(pluginautoid, xml_lmmsnat, pluginparam, pluginid, pluginparam, 0)
|
||||
for pluginparam in lmms_autovals[1]:
|
||||
xml_lmmsnat.set(pluginparam, str(data_values.get_value(cvpj_plugindata, pluginparam, 0)))
|
||||
dset_plugparams(plugintype[1], pluginid, xml_lmmsnat, fx_plugindata)
|
||||
|
||||
elif plugintype[0] == 'ladspa':
|
||||
print('[output-lmms] Audio FX: [ladspa] ')
|
||||
fxslotX.set('name', 'ladspaeffect')
|
||||
|
||||
ladspa_file = data_values.get_value(cvpj_plugindata, 'path', '')
|
||||
|
||||
ladspa_plugin = data_values.get_value(cvpj_plugindata, 'plugin', '')
|
||||
ladspa_sep_chan = data_values.get_value(cvpj_plugindata, 'seperated_channels', False)
|
||||
ladspa_numparams = data_values.get_value(cvpj_plugindata, 'numparams', '1')
|
||||
|
||||
ladspa_file = fx_plugindata.dataval_get('path', '')
|
||||
ladspa_plugin = fx_plugindata.dataval_get('plugin', '')
|
||||
ladspa_sep_chan = fx_plugindata.dataval_get('seperated_channels', False)
|
||||
ladspa_numparams = fx_plugindata.dataval_get('numparams', 0)
|
||||
xml_ladspa = ET.SubElement(fxslotX, 'ladspacontrols')
|
||||
xml_ladspa_key = ET.SubElement(fxslotX, 'key')
|
||||
xml_ladspa_key_file = ET.SubElement(xml_ladspa_key, 'attribute')
|
||||
xml_ladspa_key_file.set('name', 'file')
|
||||
xml_ladspa_key_file.set('value', Path(ladspa_file).stem)
|
||||
xml_ladspa_key_plugin = ET.SubElement(xml_ladspa_key, 'attribute')
|
||||
xml_ladspa_key_plugin.set('name', 'plugin')
|
||||
xml_ladspa_key_plugin.set('value', ladspa_plugin)
|
||||
xml_ladspa.set('ports', str(ladspa_numparams*2))
|
||||
xml_ladspa.set('link', str(int(not ladspa_sep_chan)))
|
||||
|
||||
if ladspa_file != None: add_keyatt(fxslotX, {'file': Path(ladspa_file).stem, 'plugin': ladspa_plugin})
|
||||
for param in range(ladspa_numparams):
|
||||
paramid = 'ladspa_param_'+str(param)
|
||||
paramvisname = 'LADSPA: #'+str(param+1)
|
||||
paramxml = get_plugin_param(pluginautoid, xml_ladspa, 'port0'+str(param), pluginid, paramid, 0, visualname=paramvisname)
|
||||
get_plugin_param(pluginautoid, xml_ladspa, 'port1'+str(param), pluginid, paramid+'_1', 0, visualname=paramvisname)
|
||||
for channum in range(2):
|
||||
cvpj_paramid = 'ladspa_param_'+str(param)
|
||||
if channum == 1: cvpj_paramid += '_1'
|
||||
lmms_paramid = 'port'+str(channum)+str(param)
|
||||
cvpj_paramvisname = 'LADSPA: #'+str(param+1)
|
||||
|
||||
aid_id, aid_data = auto_id.out_get(['plugin', pluginid, cvpj_paramid])
|
||||
lmms_paramdata = ET.SubElement(xml_ladspa, lmms_paramid)
|
||||
paramval = fx_plugindata.param_get(cvpj_paramid, 0)[0]
|
||||
if channum == 0: lmms_paramdata.set('link', str(int(not ladspa_sep_chan)))
|
||||
if aid_id == None:
|
||||
lmms_paramdata.set('data', str(paramval))
|
||||
else:
|
||||
lmms_paramdata_data = ET.SubElement(lmms_paramdata, 'data')
|
||||
lmms_paramdata_data.set('value', str(paramval))
|
||||
lmms_paramdata_data.set('scale_type', 'linear')
|
||||
lmms_paramdata_data.set('id', str(aid_id))
|
||||
make_auto_track(aid_id, aid_data, cvpj_paramvisname)
|
||||
|
||||
else:
|
||||
fxslotX.set('name', 'stereomatrix')
|
||||
xml_lmmsnat = ET.SubElement(fxslotX, 'stereomatrixcontrols')
|
||||
paramlist = plugins.get_plug_paramlist(cvpj_l, pluginid)
|
||||
add_auto_unused(paramlist, pluginautoid, pluginid, 'FX Plug')
|
||||
# paramlist = plugins.get_plug_paramlist(cvpj_l, pluginid)
|
||||
# add_auto_unused(paramlist, pluginautoid, pluginid, 'FX Plug')
|
||||
|
||||
|
||||
def lmms_encode_effectslot(pluginid, fxcX):
|
||||
fxdata = data_values.nested_dict_get_value(cvpj_l, ['plugins', pluginid])
|
||||
|
||||
if fxdata != None:
|
||||
fxslotX = ET.SubElement(fxcX, "effect")
|
||||
add_auto_placements(1, None, ['slot', pluginid], 'enabled', fxdata, 'enabled', fxslotX, 'on', 'Slot', 'On', isslot=True)
|
||||
add_auto_placements(1, None, ['slot', pluginid], 'wet', fxdata, 'wet', fxslotX, 'wet', 'Slot', 'Wet', isslot=True)
|
||||
lmms_encode_effectplugin(pluginid, fxslotX)
|
||||
|
||||
def lmms_encode_fxchain(xmltag, json_fxchannel):
|
||||
if 'chain_fx_audio' in json_fxchannel:
|
||||
fxcX = ET.SubElement(xmltag, "fxchain")
|
||||
|
@ -829,7 +888,7 @@ def lmms_encode_fxmixer(xmltag, json_fxrack):
|
|||
|
||||
if 'color' in fxchannelJ: fxcX.set('color', '#' + colors.rgb_float_to_hex(fxchannelJ['color']))
|
||||
|
||||
add_auto_placements(1, None, ['fxmixer', num], 'vol', fxchannelJ, 'vol', fxcX, 'volume', 'FX '+str(num), 'Volume')
|
||||
auto_add_fxmixer(fxcX, 'vol', 'volume', 1, None, num, 'Volume')
|
||||
fxcX.set('muted', str(fxchannelJ['muted'] if 'muted' in fxchannelJ else 0))
|
||||
|
||||
lmms_encode_fxchain(fxcX, fxchannelJ)
|
||||
|
@ -841,8 +900,8 @@ def lmms_encode_fxmixer(xmltag, json_fxrack):
|
|||
sendX.set('channel', str(json_send['channel']))
|
||||
sendautoid = None
|
||||
if 'sendautoid' in json_send:
|
||||
sendautoid = ['send', json_send['sendautoid']]
|
||||
add_auto_placements(json_send['amount'], None, sendautoid, 'amount', json_send, 'amount', sendX, 'amount', 'Send '+num+' > '+str(json_send['channel']), 'Amount')
|
||||
visual_name = 'Send '+str(num)+' > '+str(json_send['channel'])
|
||||
create_param_auto(sendX, 'amount', ['send', json_send['sendautoid'], 'amount'], json_send['amount'], None, visual_name, 'Amount', True)
|
||||
else:
|
||||
sendX.set('amount', str(json_send['amount']))
|
||||
else:
|
||||
|
@ -852,86 +911,6 @@ def lmms_encode_fxmixer(xmltag, json_fxrack):
|
|||
|
||||
print('[output-lmms]')
|
||||
|
||||
# ------- Automation -------
|
||||
|
||||
def parse_auto(xml_automationpattern, l_points, val_type):
|
||||
curpoint = 0
|
||||
for point in l_points:
|
||||
if 'type' in point and curpoint != 0 and val_type != 'bool ':
|
||||
if point['type'] == 'instant':
|
||||
xml_time = ET.SubElement(xml_automationpattern, "time")
|
||||
xml_time.set('value', str(prevvalue))
|
||||
xml_time.set('pos', str(int(point['position']*12)-1))
|
||||
xml_time = ET.SubElement(xml_automationpattern, "time")
|
||||
if val_type == 'float': xml_time.set('value', str(point['value']))
|
||||
elif val_type == 'int': xml_time.set('value', str(int(point['value'])))
|
||||
else: xml_time.set('value', str(int(point['value'])))
|
||||
xml_time.set('pos', str(int(point['position']*12)))
|
||||
prevvalue = point['value']
|
||||
curpoint += 1
|
||||
|
||||
def lmms_make_main_auto_track(autoidnum, autodata, visualname):
|
||||
global trkcX
|
||||
print('[output-lmms] Automation Track: '+visualname)
|
||||
xml_autotrack = ET.SubElement(trkcX, "track")
|
||||
xml_autotrack.set('type', '5')
|
||||
xml_autotrack.set('solo', '0')
|
||||
xml_autotrack.set('muted', '0')
|
||||
xml_autotrack.set('name', visualname)
|
||||
|
||||
autodata_type = autodata['type']
|
||||
autodata_placements = autodata['placements']
|
||||
|
||||
for autoplacement in autodata_placements:
|
||||
xml_automationpattern = ET.SubElement(xml_autotrack, "automationpattern")
|
||||
xml_automationpattern.set('pos', str(int(autoplacement['position']*12)))
|
||||
xml_automationpattern.set('len', str(int(autoplacement['duration']*12)))
|
||||
xml_automationpattern.set('tens', "0")
|
||||
xml_automationpattern.set('name', visualname)
|
||||
xml_automationpattern.set('mute', "0")
|
||||
xml_automationpattern.set('prog', "1" if autodata_type != 'bool' else "0")
|
||||
prevvalue = 0
|
||||
if 'points' in autoplacement:
|
||||
parse_auto(xml_automationpattern, autoplacement['points'], autodata_type)
|
||||
if autoidnum != None:
|
||||
xml_object = ET.SubElement(xml_automationpattern, "object")
|
||||
xml_object.set('id', str(autoidnum))
|
||||
|
||||
def add_auto_placements(i_fallback, i_addmul, i_id, i_autoname, j_tag, j_name, x_tag, x_name, v_type, v_name, **kwargs):
|
||||
i_value = i_fallback
|
||||
isslot = data_values.get_value(kwargs, 'isslot', False)
|
||||
|
||||
if j_tag != None:
|
||||
if isslot == False: paramdata = params.get(j_tag, [], j_name, i_fallback)
|
||||
else: paramdata = params.get(j_tag, [], j_name, i_fallback, groupname='params_slot')
|
||||
if paramdata != None: i_value = paramdata[0]
|
||||
|
||||
if i_addmul != None: i_value = (i_value+i_addmul[0])*i_addmul[1]
|
||||
|
||||
if isinstance(i_value, bool):
|
||||
i_value = int(i_value)
|
||||
|
||||
if i_id != None and i_autoname != None: aid_id, aid_data = auto_id.out_get(i_id+[i_autoname])
|
||||
else: aid_id, aid_data = None, None
|
||||
|
||||
if x_tag != None:
|
||||
if aid_id != None and len(aid_data['placements']) != 0:
|
||||
if i_addmul != None: aid_data['placements'] = auto.multiply(aid_data['placements'], i_addmul[0], i_addmul[1])
|
||||
lmms_make_main_auto_track(aid_id, aid_data, v_type+': '+v_name)
|
||||
autovarX = ET.SubElement(x_tag, x_name)
|
||||
autovarX.set('value', str(i_value))
|
||||
autovarX.set('scale_type', 'linear')
|
||||
autovarX.set('id', str(aid_id))
|
||||
else:
|
||||
x_tag.set(x_name, str(i_value))
|
||||
elif aid_id != None and aid_data != None:
|
||||
lmms_make_main_auto_track(aid_id, aid_data, v_type+': '+v_name)
|
||||
|
||||
def add_auto_unused(paramlist, pluginautoid, pluginid, i_name):
|
||||
if pluginautoid != None:
|
||||
for paramid in pluginautoid:
|
||||
add_auto_placements(1, None, ['plugin', pluginid], paramid, None, paramid, None, paramid, i_name, paramid)
|
||||
|
||||
# ------- Main -------
|
||||
|
||||
def lmms_encode_tracks(xmltag, trksJ, trkorderJ, trkplacementsJ):
|
||||
|
@ -962,12 +941,15 @@ class output_lmms(plugin_output.base):
|
|||
global trkcX
|
||||
global cvpj_l
|
||||
global lmms_bpm
|
||||
global dataset
|
||||
|
||||
autoidnum = 340000
|
||||
print('[output-lmms] Output Start')
|
||||
|
||||
cvpj_l = json.loads(convproj_json)
|
||||
|
||||
dataset = data_dataset.dataset('./data_dset/lmms.dset')
|
||||
|
||||
auto_id.out_load(cvpj_l)
|
||||
|
||||
trksJ = cvpj_l['track_data'] if 'track_data' in cvpj_l else {}
|
||||
|
@ -988,9 +970,9 @@ class output_lmms(plugin_output.base):
|
|||
|
||||
lmms_bpm = params.get(cvpj_l, [], 'bpm', 140)[0]
|
||||
|
||||
add_auto_placements(120, None, ['main'], 'bpm', cvpj_l, 'bpm', headX, 'bpm', 'Song', 'Tempo')
|
||||
add_auto_placements(0, None, ['main'], 'pitch', cvpj_l, 'pitch', headX, 'masterpitch', 'Song', 'Pitch')
|
||||
add_auto_placements(1, [0, 100], ['main'], 'vol', cvpj_l, 'vol', headX, 'mastervol', 'Song', 'Volume')
|
||||
auto_add_main(headX, 'bpm', 'bpm', 120, None, 'Tempo')
|
||||
auto_add_main(headX, 'pitch', 'masterpitch', 0, None, 'Pitch')
|
||||
auto_add_main(headX, 'vol', 'mastervol', 1, [0, 100], 'Volume')
|
||||
|
||||
timesig = song.get_timesig(cvpj_l)
|
||||
headX.set("timesig_numerator", str(timesig[0]))
|
||||
|
@ -1010,19 +992,20 @@ class output_lmms(plugin_output.base):
|
|||
Xautomationeditor = ET.SubElement(songX, "automationeditor")
|
||||
add_window_data(Xautomationeditor, cvpj_l, 'main', 'automation_editor', [1,1], [860,400], False, False)
|
||||
|
||||
|
||||
notes_nothing = True
|
||||
if 'info' in cvpj_l:
|
||||
infoJ = cvpj_l['info']
|
||||
if 'message' in infoJ:
|
||||
notes_nothing = False
|
||||
notesX = ET.SubElement(songX, "projectnotes")
|
||||
add_window_data(notesX, cvpj_l, 'main', 'project_notes', [728, 5], [389, 300], True, False)
|
||||
|
||||
if 'type' in infoJ['message']:
|
||||
if infoJ['message']['type'] == 'html': notesX.text = ET.CDATA(infoJ['message']['text'])
|
||||
if infoJ['message']['type'] == 'text': notesX.text = ET.CDATA(infoJ['message']['text'].replace('\n', '<br/>').replace('\r', '<br/>'))
|
||||
else:
|
||||
notesX = ET.SubElement(songX, "projectnotes")
|
||||
notesX.text = ET.CDATA("")
|
||||
else:
|
||||
|
||||
if notes_nothing:
|
||||
notesX = ET.SubElement(songX, "projectnotes")
|
||||
notesX.text = ET.CDATA("")
|
||||
|
||||
|
|
|
@ -1,309 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_output
|
||||
import json
|
||||
import lxml.etree as ET
|
||||
import mido
|
||||
import zlib
|
||||
import os
|
||||
import base64
|
||||
from functions import placements
|
||||
from functions import colors
|
||||
from functions import params
|
||||
from functions import data_values
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_r
|
||||
|
||||
def addvalue(xmltag, name, value):
|
||||
x_temp = ET.SubElement(xmltag, name)
|
||||
x_temp.text = str(value)
|
||||
|
||||
def addcontroller(xmltag, i_id, i_value, i_color):
|
||||
x_temp = ET.SubElement(xmltag, 'controller')
|
||||
x_temp.set('id', str(i_id))
|
||||
x_temp.set('cur', str(i_value))
|
||||
x_temp.set('color', i_color)
|
||||
x_temp.set('visible', '0')
|
||||
|
||||
def addroute_audioout(xmltag, in_channel, in_track, in_type, in_name):
|
||||
x_Route = ET.SubElement(xmltag, "Route")
|
||||
x_Route.set('channel', str(in_channel))
|
||||
x_RouteSource = ET.SubElement(x_Route, "source")
|
||||
x_RouteSource.set('track', str(in_track))
|
||||
x_RouteDest = ET.SubElement(x_Route, "dest")
|
||||
x_RouteDest.set('type', str(in_type))
|
||||
x_RouteDest.set('name', str(in_name))
|
||||
|
||||
def addroute_audio(xmltag, in_source, in_dest):
|
||||
x_Route = ET.SubElement(xmltag, "Route")
|
||||
x_RouteSource = ET.SubElement(x_Route, "source")
|
||||
x_RouteSource.set('track', str(in_source))
|
||||
x_RouteDest = ET.SubElement(x_Route, "dest")
|
||||
x_RouteDest.set('track', str(in_dest))
|
||||
|
||||
def maketrack_master(x_song):
|
||||
global tracknum
|
||||
x_AudioOutput = ET.SubElement(x_song, "AudioOutput")
|
||||
addvalue(x_AudioOutput, 'name', 'Out')
|
||||
addvalue(x_AudioOutput, 'record', 0)
|
||||
addvalue(x_AudioOutput, 'mute', 0)
|
||||
addvalue(x_AudioOutput, 'solo', 0)
|
||||
addvalue(x_AudioOutput, 'off', 0)
|
||||
addvalue(x_AudioOutput, 'channels', 2)
|
||||
addvalue(x_AudioOutput, 'height', 24)
|
||||
addvalue(x_AudioOutput, 'locked', 0)
|
||||
addvalue(x_AudioOutput, 'recMonitor', 0)
|
||||
addvalue(x_AudioOutput, 'prefader', 0)
|
||||
addvalue(x_AudioOutput, 'sendMetronome', 1)
|
||||
addvalue(x_AudioOutput, 'automation', 0)
|
||||
addvalue(x_AudioOutput, 'gain', 1)
|
||||
tracknum += 1
|
||||
|
||||
def maketrack_synth(xmltag, insttrackdata, portnum):
|
||||
global tracknum
|
||||
print('[output-muse] Synth Track '+str(tracknum)+':', insttrackdata['name'])
|
||||
global NoteStep
|
||||
global synthidnum
|
||||
routelist.append([tracknum, 0])
|
||||
x_synthtrack = ET.SubElement(xmltag, "SynthI")
|
||||
if 'name' in insttrackdata: addvalue(x_synthtrack, 'name', insttrackdata['name'])
|
||||
else: addvalue(x_synthtrack, 'name', 'Out')
|
||||
if 'vol' in insttrackdata: addcontroller(x_synthtrack, 0, insttrackdata['vol'], '#ff0000')
|
||||
addvalue(x_synthtrack, 'record', 0)
|
||||
track_mute = insttrackdata['muted'] if 'muted' in insttrackdata else 0
|
||||
if 'color' in insttrackdata: addvalue(x_synthtrack, 'color', '#'+colors.rgb_float_to_hex(insttrackdata['color']))
|
||||
addvalue(x_synthtrack, 'solo', 0)
|
||||
addvalue(x_synthtrack, 'channels', 2)
|
||||
addvalue(x_synthtrack, 'height', 24)
|
||||
addvalue(x_synthtrack, 'locked', 0)
|
||||
addvalue(x_synthtrack, 'recMonitor', 0)
|
||||
addvalue(x_synthtrack, 'selected', 0)
|
||||
addvalue(x_synthtrack, 'selectionOrder', 0)
|
||||
addvalue(x_synthtrack, 'prefader', 0)
|
||||
addvalue(x_synthtrack, 'sendMetronome', 0)
|
||||
addvalue(x_synthtrack, 'off', 0)
|
||||
addvalue(x_synthtrack, 'automation', 0)
|
||||
addvalue(x_synthtrack, 'port', portnum)
|
||||
|
||||
if 'chain_fx_audio' in insttrackdata:
|
||||
chain_fx_audio = insttrackdata['chain_fx_audio']
|
||||
for pluginid in chain_fx_audio:
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
if plugintype[0] == 'ladspa':
|
||||
cvpj_plugindata = plugins.get_plug_data(cvpj_l, pluginid)
|
||||
x_fx_plugin = ET.SubElement(x_synthtrack, "plugin")
|
||||
x_fx_plugin.set('file', cvpj_plugindata['name'])
|
||||
x_fx_plugin.set('label', cvpj_plugindata['plugin'])
|
||||
x_fx_plugin.set('channel', '1')
|
||||
for paramnum in range(cvpj_plugindata['numparams']):
|
||||
pval, ptype, pname = plugins.get_plug_param(cvpj_l, pluginid, 'ladspa_param_'+str(paramnum), 0)
|
||||
x_fx_control = ET.SubElement(x_fx_plugin, "control")
|
||||
x_fx_control.set('name', pname)
|
||||
x_fx_control.set('val', str(pval))
|
||||
|
||||
if 'instdata' in insttrackdata:
|
||||
insttrackdata_instdata = insttrackdata['instdata']
|
||||
if 'pluginid' in insttrackdata_instdata:
|
||||
pluginid = insttrackdata_instdata['pluginid']
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
if plugintype == ['vst2', 'lin']:
|
||||
cvpj_plugindata = plugins.get_plug_data(cvpj_l, pluginid)
|
||||
addvalue(x_synthtrack, 'synthType', 'VST (synths)')
|
||||
vstpath = data_values.get_value(cvpj_plugindata, 'path', '')
|
||||
vstname = os.path.splitext(os.path.basename(vstpath))[0]
|
||||
addvalue(x_synthtrack, 'class', vstname)
|
||||
datatype = data_values.get_value(cvpj_plugindata, 'datatype', 'none')
|
||||
if datatype == 'chunk':
|
||||
vstdata = data_values.get_value(cvpj_plugindata, 'chunk', '')
|
||||
vstdata_bytes = base64.b64decode(vstdata)
|
||||
musevst = b''
|
||||
musevst += len(vstdata_bytes).to_bytes(4, 'big')
|
||||
musevst += zlib.compress(vstdata_bytes)
|
||||
addvalue(x_synthtrack, 'customData', base64.b64encode(musevst).decode('ascii'))
|
||||
else:
|
||||
numparams = data_values.get_value(cvpj_plugindata, 'numparams', 0)
|
||||
for param in range(numparams):
|
||||
pval, ptype, pname = plugins.get_plug_param(cvpj_l, pluginid, 'vst_param_'+str(param), 0)
|
||||
addvalue(x_synthtrack, 'param', pval)
|
||||
|
||||
else:
|
||||
addvalue(x_synthtrack, 'synthType', 'MESS')
|
||||
addvalue(x_synthtrack, 'class', 'vam')
|
||||
track_mute = 1
|
||||
|
||||
else:
|
||||
addvalue(x_synthtrack, 'synthType', 'MESS')
|
||||
addvalue(x_synthtrack, 'class', 'vam')
|
||||
track_mute = 1
|
||||
else:
|
||||
addvalue(x_synthtrack, 'synthType', 'MESS')
|
||||
addvalue(x_synthtrack, 'class', 'vam')
|
||||
track_mute = 1
|
||||
|
||||
addvalue(x_synthtrack, 'mute', track_mute)
|
||||
|
||||
tracknum += 1
|
||||
synthidnum += 1
|
||||
|
||||
def maketrack_midi(xmltag, cvpj_trackplacements, trackname, portnum, insttrackdata):
|
||||
global tracknum
|
||||
print('[output-muse] Midi Track '+str(tracknum)+':', insttrackdata['name'])
|
||||
global NoteStep
|
||||
global synthidnum
|
||||
track_transposition = 0
|
||||
x_miditrack = ET.SubElement(xmltag, "miditrack")
|
||||
if 'color' in insttrackdata: addvalue(x_miditrack, 'color', '#'+colors.rgb_float_to_hex(insttrackdata['color']))
|
||||
if 'name' in insttrackdata: addvalue(x_miditrack, 'name', insttrackdata['name'])
|
||||
if 'instdata' in insttrackdata:
|
||||
if 'middlenote' in insttrackdata['instdata']:
|
||||
track_transposition = -insttrackdata['instdata']['middlenote']
|
||||
|
||||
addvalue(x_miditrack, 'height', 70)
|
||||
addvalue(x_miditrack, 'record', 0)
|
||||
addvalue(x_miditrack, 'mute', 0)
|
||||
addvalue(x_miditrack, 'solo', 0)
|
||||
addvalue(x_miditrack, 'device', portnum)
|
||||
addvalue(x_miditrack, 'off', 0)
|
||||
addvalue(x_miditrack, 'transposition', track_transposition)
|
||||
for placement in cvpj_trackplacements:
|
||||
x_part = ET.SubElement(x_miditrack, "part")
|
||||
if 'name' in placement: addvalue(x_part, 'name', placement['name'])
|
||||
p_dur = int(placement['duration']*NoteStep)
|
||||
p_pos = int(placement['position']*NoteStep)
|
||||
if p_dur != 0:
|
||||
x_poslen = ET.SubElement(x_part, 'poslen')
|
||||
x_poslen.set('len', str(p_dur))
|
||||
x_poslen.set('tick', str(p_pos))
|
||||
if 'notelist' in placement:
|
||||
notelist = placement['notelist']
|
||||
for note in notelist:
|
||||
x_event = ET.SubElement(x_part, "event")
|
||||
x_event.set('tick', str(int(note['position']*NoteStep)+p_pos))
|
||||
x_event.set('len', str(int(note['duration']*NoteStep)))
|
||||
x_event.set('a', str(note['key']+60))
|
||||
if 'vol' in note: x_event.set('b', str(int(note['vol']*100)))
|
||||
else: x_event.set('b', '100')
|
||||
tracknum += 1
|
||||
|
||||
def add_timesig(x_siglist, pos, numerator, denominator):
|
||||
x_sig = ET.SubElement(x_siglist, "sig")
|
||||
x_sig.set('at', str(int(pos*NoteStep)))
|
||||
addvalue(x_sig, 'tick', 0)
|
||||
addvalue(x_sig, 'nom', str(int(numerator)))
|
||||
addvalue(x_sig, 'denom', str(int(denominator)))
|
||||
|
||||
class output_cvpj(plugin_output.base):
|
||||
def __init__(self): pass
|
||||
def getname(self): return 'MusE'
|
||||
def is_dawvert_plugin(self): return 'output'
|
||||
def getshortname(self): return 'muse'
|
||||
def gettype(self): return 'r'
|
||||
def plugin_archs(self): return None
|
||||
def getdawcapabilities(self):
|
||||
return {
|
||||
'track_lanes': True,
|
||||
'placement_cut': True,
|
||||
'auto_nopl': True,
|
||||
}
|
||||
def getsupportedplugformats(self): return ['vst2']
|
||||
def getsupportedplugins(self): return []
|
||||
def getfileextension(self): return 'med'
|
||||
def parse(self, convproj_json, output_file):
|
||||
global NoteStep
|
||||
global tracknum
|
||||
global synthidnum
|
||||
global routelist
|
||||
global cvpj_l
|
||||
|
||||
tracknum = 0
|
||||
synthidnum = 5
|
||||
|
||||
cvpj_l = json.loads(convproj_json)
|
||||
|
||||
midiDivision = 384
|
||||
NoteStep = midiDivision/4
|
||||
|
||||
x_muse = ET.Element("muse")
|
||||
x_muse.set('version', "3.4")
|
||||
x_song = ET.SubElement(x_muse, "song")
|
||||
addvalue(x_song, 'info', '')
|
||||
addvalue(x_song, 'showinfo', 1)
|
||||
|
||||
loop_on, loop_start, loop_end = song.get_loopdata(cvpj_l, 'r')
|
||||
|
||||
addvalue(x_song, 'cpos', 0) #start
|
||||
addvalue(x_song, 'rpos', int(loop_end*NoteStep)) #end
|
||||
addvalue(x_song, 'lpos', int(loop_start*NoteStep))
|
||||
addvalue(x_song, 'master', 1)
|
||||
addvalue(x_song, 'loop', int(loop_on))
|
||||
addvalue(x_song, 'punchin', 0)
|
||||
addvalue(x_song, 'punchout', 0)
|
||||
addvalue(x_song, 'record', 0)
|
||||
addvalue(x_song, 'solo', 0)
|
||||
addvalue(x_song, 'recmode', 0)
|
||||
addvalue(x_song, 'cycle', 0)
|
||||
addvalue(x_song, 'click', 0)
|
||||
addvalue(x_song, 'quantize', 0)
|
||||
addvalue(x_song, 'len', 1000000)
|
||||
addvalue(x_song, 'follow', 1)
|
||||
addvalue(x_song, 'midiDivision', midiDivision)
|
||||
addvalue(x_song, 'sampleRate', 44100)
|
||||
|
||||
# ---------------------------------- master track ----------------------------------
|
||||
|
||||
maketrack_master(x_song)
|
||||
|
||||
routelist = []
|
||||
|
||||
for cvpj_trackid, cvpj_trackdata, track_placements in tracks_r.iter(cvpj_l):
|
||||
if cvpj_trackdata['type'] == 'instrument':
|
||||
track_placements_islaned = bool(track_placements['laned']) if 'laned' in track_placements else False
|
||||
|
||||
if track_placements_islaned == False:
|
||||
if 'notes' in track_placements:
|
||||
maketrack_midi(x_song, track_placements['notes'], cvpj_trackdata['name'], synthidnum, cvpj_trackdata)
|
||||
else:
|
||||
for laneid in track_placements['laneorder']:
|
||||
lanedata = track_placements['lanedata'][laneid]
|
||||
lanename = lanedata['name'] if 'name' in lanedata else ''
|
||||
maketrack_midi(x_song, lanedata['notes'], lanename, synthidnum, cvpj_trackdata)
|
||||
|
||||
maketrack_synth(x_song, cvpj_trackdata, synthidnum)
|
||||
|
||||
addroute_audioout(x_song, 0, 0, 1, "system:playback_1")
|
||||
addroute_audioout(x_song, 1, 0, 1, "system:playback_2")
|
||||
|
||||
for routeid in routelist:
|
||||
addroute_audio(x_song, routeid[0], routeid[1])
|
||||
|
||||
muse_bpm = int(params.get(cvpj_l, [], 'bpm', 120)[0])
|
||||
|
||||
muse_numerator, muse_denominator = song.get_timesig(cvpj_l)
|
||||
|
||||
x_tempolist = ET.SubElement(x_song, "tempolist")
|
||||
x_tempolist.set('fix', "0")
|
||||
x_tempo = ET.SubElement(x_tempolist, "tempo")
|
||||
x_tempo.set('at', "21474837")
|
||||
addvalue(x_tempo, 'tick', 0)
|
||||
addvalue(x_tempo, 'val', mido.bpm2tempo(muse_bpm))
|
||||
|
||||
x_siglist = ET.SubElement(x_song, "siglist")
|
||||
|
||||
x_sig = ET.SubElement(x_siglist, "sig")
|
||||
x_sig.set('at', "21474836")
|
||||
addvalue(x_sig, 'tick', 0)
|
||||
addvalue(x_sig, 'nom', str(int(muse_numerator)))
|
||||
addvalue(x_sig, 'denom', str(int(muse_denominator)))
|
||||
|
||||
#if 'timemarkers' in cvpj_l:
|
||||
# for cvpj_timemarker in cvpj_l['timemarkers']:
|
||||
# if 'type' in cvpj_timemarker:
|
||||
# if cvpj_timemarker['type'] == 'timesig':
|
||||
# add_timesig(x_siglist, cvpj_timemarker['position'], cvpj_timemarker['numerator'], cvpj_timemarker['denominator'])
|
||||
|
||||
outfile = ET.ElementTree(x_muse)
|
||||
ET.indent(outfile)
|
||||
outfile.write(output_file, encoding='utf-8', xml_declaration = True)
|
||||
|
|
@ -75,21 +75,27 @@ class output_onlineseq(plugin_output.base):
|
|||
midiinst = None
|
||||
|
||||
if 'instdata' in cvpj_trackdata:
|
||||
pluginid = data_values.get_value(cvpj_trackdata['instdata'], 'pluginid', 1.0)
|
||||
plugintype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
cvpj_plugindata = plugins.get_plug_data(cvpj_l, pluginid)
|
||||
cvpj_instdata = cvpj_trackdata['instdata']
|
||||
|
||||
if plugintype[0] == 'midi':
|
||||
if cvpj_plugindata['bank'] != 128: midiinst = cvpj_plugindata['inst']
|
||||
else: midiinst = -1
|
||||
if plugintype[0] == 'soundfont2':
|
||||
if cvpj_plugindata['bank'] != 128: midiinst = cvpj_plugindata['patch']
|
||||
else: midiinst = -1
|
||||
if plugintype[0] == 'retro':
|
||||
if plugintype[1] == 'sine': onlineseqinst = 13
|
||||
if plugintype[1] == 'square': onlineseqinst = 14
|
||||
if plugintype[1] == 'triangle': onlineseqinst = 16
|
||||
if plugintype[1] == 'saw': onlineseqinst = 15
|
||||
if 'pluginid' in cvpj_instdata:
|
||||
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, cvpj_instdata['pluginid'])
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
|
||||
if plugintype[0] == 'midi':
|
||||
midi_bank = cvpj_plugindata.dataval_get('bank', 0)
|
||||
midi_inst = cvpj_plugindata.dataval_get('inst', 0)
|
||||
if midi_bank != 128: midiinst = midi_inst
|
||||
else: midiinst = -1
|
||||
if plugintype[0] == 'soundfont2':
|
||||
midi_bank = cvpj_plugindata.dataval_get('bank', 0)
|
||||
midi_inst = cvpj_plugindata.dataval_get('patch', 0)
|
||||
if midi_bank != 128: midiinst = midi_inst
|
||||
else: midiinst = -1
|
||||
if plugintype[0] == 'retro':
|
||||
if plugintype[1] == 'sine': onlineseqinst = 13
|
||||
if plugintype[1] == 'square': onlineseqinst = 14
|
||||
if plugintype[1] == 'triangle': onlineseqinst = 16
|
||||
if plugintype[1] == 'saw': onlineseqinst = 15
|
||||
|
||||
t_instid = idvals.get_idval(idvals_onlineseq_inst, str(midiinst), 'outid')
|
||||
|
||||
|
|
|
@ -15,21 +15,27 @@ from functions import colors
|
|||
from functions import notelist_data
|
||||
from functions import params
|
||||
from functions import xtramath
|
||||
from functions import plugins
|
||||
from functions import song
|
||||
from functions_tracks import tracks_r
|
||||
|
||||
def make_vst2(rpp_fxchain, cvpj_plugindata):
|
||||
vst_fx_name = cvpj_plugindata['plugin']['name']
|
||||
vst_fx_path = cvpj_plugindata['plugin']['path']
|
||||
vst_fx_version = cvpj_plugindata['plugin']['version']
|
||||
vst_fx_fourid = cvpj_plugindata['plugin']['fourid']
|
||||
vst_fx_name = cvpj_plugindata.dataval_get('name', None)
|
||||
vst_fx_path = cvpj_plugindata.dataval_get('path', None)
|
||||
vst_fx_version = cvpj_plugindata.dataval_get('version', None)
|
||||
vst_fx_fourid = cvpj_plugindata.dataval_get('fourid', None)
|
||||
vst_fx_datatype = cvpj_plugindata.dataval_get('datatype', None)
|
||||
vst_fx_numparams = cvpj_plugindata.dataval_get('numparams', 0)
|
||||
vst_fx_chunk = cvpj_plugindata.dataval_get('chunk', None)
|
||||
|
||||
if cvpj_plugindata['datatype'] == 'chunk': vstparams = base64.b64decode(cvpj_plugindata['data'].encode())
|
||||
if cvpj_plugindata['datatype'] == 'param':
|
||||
if vst_fx_datatype == 'chunk':
|
||||
vstparams = base64.b64decode(vst_fx_chunk.encode())
|
||||
if vst_fx_datatype == 'param':
|
||||
floatdata = []
|
||||
for num in range(cvpj_plugindata['numparams']):
|
||||
floatdata.append(float(cvpj_plugindata['params'][str(num)]['value']))
|
||||
vstparams = struct.pack('f'*cvpj_plugindata['numparams'], *floatdata)
|
||||
for num in range(vst_fx_numparams):
|
||||
pval, ptype, pname = cvpj_plugindata.param_get('vst_param_'+str(num), 0)
|
||||
floatdata.append(float(pval))
|
||||
vstparams = struct.pack('f'*vst_fx_numparams, *floatdata)
|
||||
|
||||
vstdata = []
|
||||
|
||||
|
@ -336,10 +342,15 @@ class output_reaper(plugin_output.base):
|
|||
|
||||
if 'instdata' in cvpj_trackdata:
|
||||
cvpj_instdata = cvpj_trackdata['instdata']
|
||||
if 'plugin' in cvpj_instdata:
|
||||
if cvpj_instdata['plugin'] in ['vst2-dll', 'vst2-so']:
|
||||
cvpj_plugindata = cvpj_instdata['plugindata']
|
||||
make_vst2(rpp_fxchain, cvpj_plugindata)
|
||||
|
||||
if 'pluginid' in cvpj_instdata:
|
||||
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, cvpj_instdata['pluginid'])
|
||||
i_enabled, i_wet = fx_plugindata.fxdata_get()
|
||||
plugintype = fx_plugindata.type_get()
|
||||
|
||||
if plugintype[0] == 'vst2':
|
||||
cvpj_plugindata = cvpj_instdata['plugindata']
|
||||
make_vst2(rpp_fxchain, cvpj_plugindata)
|
||||
|
||||
rpp_trackdata.children.append(rpp_obj_data('FXCHAIN', [], rpp_fxchain))
|
||||
|
||||
|
|
|
@ -45,74 +45,59 @@ def add_sndinstparam(i_dict, i_name, i_value, i_auto):
|
|||
if i_auto == True: i_dict[i_name] = {"value": i_value, "automation": []}
|
||||
else: i_dict[i_name] = {"value": i_value}
|
||||
|
||||
def cvpjidata_to_sngparam(i_dict, pluginid, i_name, i_fallback):
|
||||
value = plugins.get_plug_dataval(cvpj_l, pluginid, i_name, i_fallback)
|
||||
def cvpjidata_to_sngparam(cvpj_plugindata, i_dict, pluginid, i_name, i_fallback):
|
||||
value = cvpj_plugindata.dataval_get(i_name, i_fallback)
|
||||
add_sndinstparam(i_dict, i_name, value, False)
|
||||
|
||||
def cvpjiparam_to_sngparam(i_dict, pluginid, i_name, i_fallback, i_auto):
|
||||
value = plugins.get_plug_param(cvpj_l, pluginid, i_name, i_fallback)[0]
|
||||
def cvpjiparam_to_sngparam(cvpj_plugindata, i_dict, pluginid, i_name, i_fallback, i_auto):
|
||||
value = cvpj_plugindata.param_get(i_name, i_fallback)[0]
|
||||
add_sndinstparam(i_dict, i_name, value, i_auto)
|
||||
|
||||
|
||||
def eq_calc_pass(i_value):
|
||||
i_value = xtramath.logpowmul(i_value, 0.5)
|
||||
i_value = math.log(i_value / 0.1)
|
||||
i_value = i_value / math.log(162)
|
||||
return i_value
|
||||
|
||||
def eq_calc_shelf(i_value):
|
||||
i_value = math.log(i_value / 0.1)
|
||||
i_value = i_value / math.log(162)
|
||||
return i_value
|
||||
|
||||
|
||||
def add_fx(sng_trkdata, s_trackdata):
|
||||
sng_fxchain = sng_trkdata['effects']
|
||||
if 'chain_fx_audio' in s_trackdata:
|
||||
chainfxdata = s_trackdata['chain_fx_audio']
|
||||
for fxpluginid in chainfxdata:
|
||||
plugtype = plugins.get_plug_type(cvpj_l, fxpluginid)
|
||||
fxdata = data_values.nested_dict_get_value(cvpj_l, ['plugins', fxpluginid])
|
||||
fx_on, fx_wet = plugins.get_plug_fxdata(cvpj_l, fxpluginid)
|
||||
fx_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, fxpluginid)
|
||||
plugtype = fx_plugindata.type_get()
|
||||
fx_on, fx_wet = fx_plugindata.fxdata_get()
|
||||
|
||||
if plugtype == ['universal', 'eq-bands']:
|
||||
sng_fxdata = {}
|
||||
sng_fxdata['identifier'] = 'com.soundation.parametric-eq'
|
||||
sng_fxdata['bypass'] = not fx_on
|
||||
|
||||
data_LP = [False,0,0,0,0]
|
||||
data_Lowshelf = [False,0,0,0,0]
|
||||
data_Peaks = [[False,0,0,0,0],[False,0,0,0,0],[False,0,0,0,0],[False,0,0,0,0]]
|
||||
data_HighShelf = [False,0,0,0,0]
|
||||
data_HP = [False,0,0,0,0]
|
||||
data_LP, data_Lowshelf, data_Peaks, data_HighShelf, data_HP = fx_plugindata.eqband_get_limited(None)
|
||||
|
||||
banddata = plugins.get_eqband(cvpj_l, fxpluginid, None)
|
||||
|
||||
for s_band in banddata:
|
||||
bandtype = s_band['type']
|
||||
|
||||
band_on = float(s_band['on'])
|
||||
band_freq = s_band['freq']
|
||||
band_gain = s_band['gain']
|
||||
band_res = s_band['var']
|
||||
|
||||
band_freq = math.log(band_freq / 20) / math.log(1000)
|
||||
band_gain = (band_gain/40)+0.5
|
||||
|
||||
if bandtype in ['low_pass', 'high_pass']:
|
||||
band_res = xtramath.logpowmul(band_res, 0.5)
|
||||
band_res = math.log(band_res / 0.1)
|
||||
band_res = band_res / math.log(162)
|
||||
elif bandtype in ['low_shelf', 'high_shelf']:
|
||||
band_res = math.log(band_res / 0.1)
|
||||
band_res = band_res / math.log(162)
|
||||
else:
|
||||
for num in range(4):
|
||||
band_res = data_Peaks[num][4]
|
||||
if band_res != 0:
|
||||
band_res = xtramath.logpowmul(band_res, -1)
|
||||
band_res = math.log( band_res / 0.1)
|
||||
band_res = band_res / math.log(162)
|
||||
#print(bandtype, band_res)
|
||||
else: band_res = 0
|
||||
data_Peaks[num][4] = band_res
|
||||
|
||||
part = [True, band_on, band_freq, band_gain, band_res]
|
||||
data_LP[4] = eq_calc_pass(data_LP[4]) if data_LP[4] != 0 else 1
|
||||
data_HP[4] = eq_calc_pass(data_HP[4]) if data_HP[4] != 0 else 1
|
||||
|
||||
if bandtype == 'low_pass' and band_on: data_LP = part
|
||||
if bandtype == 'low_shelf' and band_on: data_Lowshelf = part
|
||||
if bandtype == 'peak' and band_on:
|
||||
for peaknum in range(4):
|
||||
peakdata = data_Peaks[peaknum]
|
||||
if peakdata[0] == False:
|
||||
data_Peaks[peaknum] = part
|
||||
break
|
||||
if bandtype == 'high_shelf' and band_on: data_HighShelf = part
|
||||
if bandtype == 'high_pass' and band_on: data_HP = part
|
||||
data_Lowshelf[4] = eq_calc_shelf(data_Lowshelf[4]) if data_Lowshelf[4] != 0 else 1
|
||||
data_HighShelf[4] = eq_calc_shelf(data_HighShelf[4]) if data_HighShelf[4] != 0 else 1
|
||||
|
||||
gain_out = plugins.get_plug_param(cvpj_l, fxpluginid, 'gain_out', 0)[0]
|
||||
gain_out = fx_plugindata.param_get('gain_out', 0)[0]
|
||||
|
||||
add_sndinstparam(sng_fxdata, 'highshelf_enable', data_HighShelf[1], True)
|
||||
add_sndinstparam(sng_fxdata, 'highshelf_freq', data_HighShelf[2], True)
|
||||
|
@ -167,7 +152,7 @@ def add_fx(sng_trkdata, s_trackdata):
|
|||
elif fxpluginname == 'com.soundation.wubfilter': snd_params = ['type','cutoff','resonance','drive','lfo_type','lfo_speed','lfo_depth']
|
||||
|
||||
for snd_param in snd_params:
|
||||
cvpjiparam_to_sngparam(sng_fxdata, fxpluginid, snd_param, 0, True)
|
||||
cvpjiparam_to_sngparam(fx_plugindata, sng_fxdata, fxpluginid, snd_param, 0, True)
|
||||
|
||||
sng_fxchain.append(sng_fxdata)
|
||||
|
||||
|
@ -353,8 +338,9 @@ class output_soundation(plugin_output.base):
|
|||
pluginid = data_values.nested_dict_get_value(s_trackdata, ['instdata', 'pluginid'])
|
||||
|
||||
if pluginid != None:
|
||||
plugtype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = plugins.get_asdr_env(cvpj_l, pluginid, 'vol')
|
||||
cvpj_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
plugtype = cvpj_plugindata.type_get()
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = cvpj_plugindata.asdr_env_get('vol')
|
||||
|
||||
if plugtype == ['synth-nonfree', 'Europa']:
|
||||
inst_supported = True
|
||||
|
@ -363,9 +349,9 @@ class output_soundation(plugin_output.base):
|
|||
eur_value_type, cvpj_val_name = europa_vals[paramname]
|
||||
|
||||
if eur_value_type == 'number':
|
||||
eur_value_value = plugins.get_plug_param(cvpj_l, pluginid, cvpj_val_name, 0)[0]
|
||||
eur_value_value = cvpj_plugindata.param_get(cvpj_val_name, 0)[0]
|
||||
else:
|
||||
eur_value_value = plugins.get_plug_dataval(cvpj_l, pluginid, cvpj_val_name, 0)
|
||||
eur_value_value = cvpj_plugindata.dataval_get(cvpj_val_name, 0)
|
||||
if paramname in ['Curve1','Curve2','Curve3','Curve4','Curve']:
|
||||
eur_value_value = ','.join([str(x).zfill(2) for x in eur_value_value])
|
||||
|
||||
|
@ -376,54 +362,54 @@ class output_soundation(plugin_output.base):
|
|||
inst_supported = True
|
||||
sng_instparams['identifier'] = plugtype[1]
|
||||
if plugtype[1] == 'com.soundation.GM-2':
|
||||
cvpjidata_to_sngparam(sng_instparams, pluginid, 'sample_pack', '2_0_Bright_Yamaha_Grand.smplpck')
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = plugins.get_asdr_env(cvpj_l, pluginid, 'vol')
|
||||
cvpjidata_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, 'sample_pack', '2_0_Bright_Yamaha_Grand.smplpck')
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = cvpj_plugindata.asdr_env_get('vol')
|
||||
set_asdr(sng_instparams, a_attack, a_sustain, a_decay, a_release)
|
||||
|
||||
elif plugtype[1] == 'com.soundation.SAM-1':
|
||||
sample_pack = plugins.get_plug_dataval(cvpj_l, pluginid, 'sample_pack', None)
|
||||
sample_pack = cvpj_plugindata.dataval_get('sample_pack', None)
|
||||
sng_instparams['sample_pack'] = sample_pack
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = plugins.get_asdr_env(cvpj_l, pluginid, 'vol')
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = cvpj_plugindata.asdr_env_get('vol')
|
||||
set_asdr(sng_instparams, a_attack, a_sustain, a_decay, a_release)
|
||||
|
||||
elif plugtype[1] == 'com.soundation.simple':
|
||||
|
||||
for oscnum in range(4):
|
||||
for paramtype in ['detune','pitch','type','vol']:
|
||||
cvpjiparam_to_sngparam(sng_instparams, pluginid, 'osc_'+str(oscnum)+'_'+paramtype, 0, True)
|
||||
cvpjiparam_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, 'osc_'+str(oscnum)+'_'+paramtype, 0, True)
|
||||
|
||||
f_predelay, f_attack, f_hold, f_decay, f_sustain, f_release, f_amount = plugins.get_asdr_env(cvpj_l, pluginid, 'cutoff')
|
||||
f_predelay, f_attack, f_hold, f_decay, f_sustain, f_release, f_amount = cvpj_plugindata.asdr_env_get('cutoff')
|
||||
add_sndinstparam(sng_instparams, 'filter_attack', f_attack, True)
|
||||
add_sndinstparam(sng_instparams, 'filter_decay', f_decay, True)
|
||||
add_sndinstparam(sng_instparams, 'filter_sustain', f_sustain, True)
|
||||
add_sndinstparam(sng_instparams, 'filter_release', f_release, True)
|
||||
add_sndinstparam(sng_instparams, 'filter_int', f_amount, True)
|
||||
|
||||
f_enabled, f_cutoff, f_reso, f_type, f_subtype = plugins.get_filter(cvpj_l, pluginid)
|
||||
f_enabled, f_cutoff, f_reso, f_type, f_subtype = cvpj_plugindata.filter_get()
|
||||
add_sndinstparam(sng_instparams, 'filter_cutoff', xtramath.between_to_one(20, 7500, f_cutoff), True)
|
||||
add_sndinstparam(sng_instparams, 'filter_resonance', f_reso, True)
|
||||
|
||||
for snd_param in ['noise_vol', 'noise_color']:
|
||||
cvpjiparam_to_sngparam(sng_instparams, pluginid, snd_param, 0, True)
|
||||
cvpjiparam_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, snd_param, 0, True)
|
||||
|
||||
elif plugtype[1] == 'com.soundation.supersaw':
|
||||
set_asdr(sng_instparams, a_attack, a_sustain, a_decay, a_release)
|
||||
for snd_param in ["detune", "spread"]:
|
||||
cvpjiparam_to_sngparam(sng_instparams, pluginid, snd_param, 0, True)
|
||||
cvpjiparam_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, snd_param, 0, True)
|
||||
|
||||
elif plugtype[1] == 'com.soundation.noiser':
|
||||
set_asdr(sng_instparams, a_attack, a_sustain, a_decay, a_release)
|
||||
|
||||
elif plugtype[1] == 'com.soundation.drummachine':
|
||||
for paramname in ["gain_2", "hold_1", "pitch_6", "gain_1", "decay_5", "gain_5", "hold_0", "hold_2", "pitch_7", "gain_0", "decay_6", "gain_3", "hold_5", "pitch_3", "decay_4", "pitch_4", "gain_6", "decay_7", "pitch_2", "hold_6", "decay_1", "decay_3", "decay_0", "decay_2", "gain_7", "pitch_0", "pitch_5", "hold_3", "pitch_1", "hold_4", "hold_7", "gain_4"]:
|
||||
cvpjiparam_to_sngparam(sng_instparams, pluginid, paramname, 0, True)
|
||||
cvpjidata_to_sngparam(sng_instparams, pluginid, 'kit_name', '')
|
||||
cvpjiparam_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, paramname, 0, True)
|
||||
cvpjidata_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, 'kit_name', '')
|
||||
|
||||
elif plugtype[1] == 'com.soundation.spc':
|
||||
for paramname in soundation_values.spc_vals():
|
||||
cvpjiparam_to_sngparam(sng_instparams, pluginid, paramname, 0, True)
|
||||
cvpjiparam_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, paramname, 0, True)
|
||||
for dataname in ['cuts','envelopes']:
|
||||
sng_instparams[dataname] = plugins.get_plug_dataval(cvpj_l, pluginid, dataname, '')
|
||||
sng_instparams[dataname] = cvpj_plugindata.dataval_get(dataname, '')
|
||||
|
||||
elif plugtype[1] in ['com.soundation.va_synth','com.soundation.fm_synth','com.soundation.the_wub_machine','com.soundation.mono']:
|
||||
if plugtype[1] == 'com.soundation.va_synth': snd_params = ["aatt", "adec", "arel", "asus", "fatt", "fdec", "fdyn", "feg", "ffreq", "frel", "fres", "fsus", "glide_bend", "glide_mode", "glide_rate", "lfolpf", "lfoosc", "lforate", "octave", "osc_2_fine", "osc_2_mix", "osc_2_noise", "osc_2_octave", "tune"]
|
||||
|
@ -431,12 +417,12 @@ class output_soundation(plugin_output.base):
|
|||
elif plugtype[1] == 'com.soundation.mono': snd_params = ['filter_int','cutoff','resonance','pw','filter_decay','mix','amp_decay','glide']
|
||||
elif plugtype[1] == 'com.soundation.the_wub_machine': snd_params = ['filter_cutoff','filter_drive','filter_resonance','filter_type','filth_active','filth_amount','lfo_depth','lfo_keytracking','lfo_loop','lfo_phase','lfo_retrigger','lfo_speed','lfo_type','msl_amount','osc1_gain','osc1_glide','osc1_pan','osc1_pitch','osc1_shape','osc1_type','osc2_gain','osc2_glide','osc2_pan','osc2_pitch','osc2_shape','osc2_type','osc_sub_bypass_filter','osc_sub_gain','osc_sub_glide','osc_sub_shape','osc_sub_volume_lfo','reese_active','unison_active','unison_amount','unison_count']
|
||||
for snd_param in snd_params:
|
||||
cvpjiparam_to_sngparam(sng_instparams, pluginid, snd_param, 0, True)
|
||||
cvpjiparam_to_sngparam(cvpj_plugindata, sng_instparams, pluginid, snd_param, 0, True)
|
||||
|
||||
elif plugtype[0] == 'midi':
|
||||
inst_supported = True
|
||||
midibank = plugins.get_plug_dataval(cvpj_l, pluginid, 'bank', 0)
|
||||
midiinst = plugins.get_plug_dataval(cvpj_l, pluginid, 'inst', 0)+1
|
||||
midibank = cvpj_plugindata.dataval_get('bank', 0)
|
||||
midiinst = cvpj_plugindata.dataval_get('inst', 0)+1
|
||||
gm2_samplepack = idvals.get_idval(idvals_inst_gm2, str(midiinst)+'_'+str(midibank), 'url')
|
||||
if gm2_samplepack == None and midibank not in [0, 128]:
|
||||
gm2_samplepack = idvals.get_idval(idvals_inst_gm2, str(midiinst)+'_0', 'url')
|
||||
|
@ -523,4 +509,4 @@ class output_soundation(plugin_output.base):
|
|||
sng_output["loopEnd"] = int(timemarkdata['end']*ticksdiv)
|
||||
|
||||
with open(output_file, "w") as fileout:
|
||||
json.dump(sng_output, fileout, indent=2)
|
||||
json.dump(sng_output, fileout, indent=4)
|
|
@ -55,17 +55,18 @@ delaytime = [
|
|||
|
||||
def get_plugins(xml_tag, cvpj_fxids):
|
||||
for cvpj_fxid in cvpj_fxids:
|
||||
plugtype = plugins.get_plug_type(cvpj_l, cvpj_fxid)
|
||||
fx_on, fx_wet = plugins.get_plug_fxdata(cvpj_l, cvpj_fxid)
|
||||
fx_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, cvpj_fxid)
|
||||
plugtype = fx_plugindata.type_get()
|
||||
fx_on, fx_wet = fx_plugindata.fxdata_get()
|
||||
|
||||
if plugtype == ['universal', 'eq-bands']:
|
||||
wf_PLUGIN = ET.SubElement(xml_tag, "PLUGIN")
|
||||
wf_PLUGIN.set('type', '8bandEq')
|
||||
wf_PLUGIN.set('presetDirty', '1')
|
||||
num_bands = plugins.get_plug_dataval(cvpj_l, cvpj_fxid, 'num_bands', 8)
|
||||
num_bands = fx_plugindata.dataval_get('num_bands', 8)
|
||||
|
||||
cvpj_bands_a = plugins.get_eqband(cvpj_l, cvpj_fxid, None)
|
||||
cvpj_bands_b = plugins.get_eqband(cvpj_l, cvpj_fxid, 'b')
|
||||
cvpj_bands_a = fx_plugindata.eqband_get(None)
|
||||
cvpj_bands_b = fx_plugindata.eqband_get('b')
|
||||
|
||||
for typedata in [['lm',cvpj_bands_a], ['rs',cvpj_bands_b]]:
|
||||
for num in range(min(len(typedata[1]),8)):
|
||||
|
@ -101,9 +102,9 @@ def get_plugins(xml_tag, cvpj_fxids):
|
|||
|
||||
|
||||
elif plugtype == ['universal', 'delay-c']:
|
||||
d_time_type = plugins.get_plug_dataval(cvpj_l, cvpj_fxid, 'time_type', 'seconds')
|
||||
d_time = plugins.get_plug_dataval(cvpj_l, cvpj_fxid, 'time', 1)
|
||||
d_feedback = plugins.get_plug_dataval(cvpj_l, cvpj_fxid, 'feedback', 0.0)
|
||||
d_time_type = fx_plugindata.dataval_get('time_type', 'seconds')
|
||||
d_time = fx_plugindata.dataval_get('time', 1)
|
||||
d_feedback = fx_plugindata.dataval_get('feedback', 0.0)
|
||||
|
||||
wf_PLUGIN = ET.SubElement(xml_tag, "PLUGIN")
|
||||
wf_PLUGIN.set('type', 'stereoDelay')
|
||||
|
@ -136,14 +137,14 @@ def get_plugins(xml_tag, cvpj_fxids):
|
|||
wf_PLUGIN.set('presetDirty', '1')
|
||||
wf_PLUGIN.set('enabled', str(fx_on))
|
||||
|
||||
v_attack = plugins.get_plug_param(cvpj_l, cvpj_fxid, 'attack', 0)[0]*1000
|
||||
v_postgain = plugins.get_plug_param(cvpj_l, cvpj_fxid, 'postgain', 0)[0]
|
||||
v_pregain = plugins.get_plug_param(cvpj_l, cvpj_fxid, 'pregain', 0)[0]
|
||||
v_ratio = plugins.get_plug_param(cvpj_l, cvpj_fxid, 'ratio', 0)[0]
|
||||
v_knee = plugins.get_plug_param(cvpj_l, cvpj_fxid, 'knee', 0)[0]
|
||||
v_release = plugins.get_plug_param(cvpj_l, cvpj_fxid, 'release', 0)[0]*1000
|
||||
v_sidechain_on = int(plugins.get_plug_param(cvpj_l, cvpj_fxid, 'sidechain_on', 0)[0])
|
||||
v_threshold = plugins.get_plug_param(cvpj_l, cvpj_fxid, 'threshold', 0)[0]
|
||||
v_attack = cvpj_plugindata.param_get('attack', 0)[0]*1000
|
||||
v_postgain = cvpj_plugindata.param_get('postgain', 0)[0]
|
||||
v_pregain = cvpj_plugindata.param_get('pregain', 0)[0]
|
||||
v_ratio = cvpj_plugindata.param_get('ratio', 0)[0]
|
||||
v_knee = cvpj_plugindata.param_get('knee', 0)[0]
|
||||
v_release = cvpj_plugindata.param_get('release', 0)[0]*1000
|
||||
v_sidechain_on = int(cvpj_plugindata.param_get('sidechain_on', 0)[0])
|
||||
v_threshold = cvpj_plugindata.param_get('threshold', 0)[0]
|
||||
|
||||
wf_PLUGIN.set('threshold', str(v_threshold))
|
||||
wf_PLUGIN.set('ratio', str(v_ratio))
|
||||
|
@ -162,7 +163,7 @@ def get_plugins(xml_tag, cvpj_fxids):
|
|||
|
||||
for waveform_param in waveform_params[plugtype[1]]:
|
||||
defvaluevals = waveform_params[plugtype[1]][waveform_param]
|
||||
paramdata = plugins.get_plug_param(cvpj_l, cvpj_fxid, waveform_param, defvaluevals[1])[0]
|
||||
paramdata = cvpj_plugindata.param_get(waveform_param, defvaluevals[1])[0]
|
||||
wf_PLUGIN.set(waveform_param, str(paramdata))
|
||||
|
||||
|
||||
|
|
|
@ -222,11 +222,12 @@ class output_wavtool(plugin_output.base):
|
|||
middlenote = middlenote+60 if middlenote != None else 0
|
||||
|
||||
if pluginid != None:
|
||||
plugtype = plugins.get_plug_type(cvpj_l, pluginid)
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = plugins.get_asdr_env(cvpj_l, pluginid, 'vol')
|
||||
inst_plugindata = plugins.cvpj_plugin('cvpj', cvpj_l, pluginid)
|
||||
plugtype = inst_plugindata.type_get()
|
||||
a_predelay, a_attack, a_hold, a_decay, a_sustain, a_release, a_amount = inst_plugindata.asdr_env_get('vol')
|
||||
if plugtype == ['sampler', 'single']:
|
||||
inst_supported = True
|
||||
filename = plugins.get_plug_dataval(cvpj_l, pluginid, 'file', '')
|
||||
filename = inst_plugindata.dataval_get('file', '')
|
||||
if os.path.exists(filename):
|
||||
audiouuid = addsample(zip_wt, filename, True)
|
||||
adddevice_d(wt_devices, wt_trackid_Instrument, 'MonoSampler', 'JS', 'c4888b49-3a72-4b0a-bd4a-a06e9937000a', wt_trackid, 160, 10)
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
import plugin_plugconv
|
||||
|
||||
from functions import plugins
|
||||
from functions import data_bytes
|
||||
from functions import xtramath
|
||||
from functions_tracks import auto_data
|
||||
|
||||
|
@ -12,41 +10,42 @@ class plugconv(plugin_plugconv.base):
|
|||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['native-amped', None, 'amped'], ['native-ableton', None, 'ableton'], True, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
#print(plugintype[1])
|
||||
|
||||
if plugintype[1] == 'Chorus':
|
||||
print('[plug-conv] Amped to Ableton: Chorus > Chorus2:',pluginid)
|
||||
auto_data.del_plugin(cvpj_l, pluginid)
|
||||
amped_delayLfoDepth = plugins.get_plug_param(cvpj_l, pluginid, 'delayLfoDepth', 0.15)[0]
|
||||
amped_delayLfoRateHz = plugins.get_plug_param(cvpj_l, pluginid, 'delayLfoRateHz', 0.7585000000000001)[0]
|
||||
amped_mix = plugins.get_plug_param(cvpj_l, pluginid, 'mix', 0.85)[0]
|
||||
amped_tone = plugins.get_plug_param(cvpj_l, pluginid, 'tone', 0.2)[0]
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-ableton', 'Chorus2')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Rate', amped_delayLfoRateHz, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'DryWet', amped_mix, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Amount', xtramath.clamp(amped_delayLfoDepth*2,0,1), 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Mode', 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Width', 1, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'OutputGain', 1, 'float', "")
|
||||
amped_delayLfoDepth = cvpj_plugindata.param_get('delayLfoDepth', 0.15)[0]
|
||||
amped_delayLfoRateHz = cvpj_plugindata.param_get('delayLfoRateHz', 0.7585000000000001)[0]
|
||||
amped_mix = cvpj_plugindata.param_get('mix', 0.85)[0]
|
||||
amped_tone = cvpj_plugindata.param_get('tone', 0.2)[0]
|
||||
cvpj_plugindata.replace('native-ableton', 'Chorus2')
|
||||
cvpj_plugindata.param_add('Rate', amped_delayLfoRateHz, 'float', "")
|
||||
cvpj_plugindata.param_add('DryWet', amped_mix, 'float', "")
|
||||
cvpj_plugindata.param_add('Amount', xtramath.clamp(amped_delayLfoDepth*2,0,1), 'float', "")
|
||||
cvpj_plugindata.param_add('Mode', 0, 'int', "")
|
||||
cvpj_plugindata.param_add('Width', 1, 'float', "")
|
||||
cvpj_plugindata.param_add('OutputGain', 1, 'float', "")
|
||||
return True
|
||||
|
||||
if plugintype[1] == 'Phaser':
|
||||
print('[plug-conv] Amped to Ableton: Phaser > PhaserNew:',pluginid)
|
||||
auto_data.del_plugin(cvpj_l, pluginid)
|
||||
amped_feedback = plugins.get_plug_param(cvpj_l, pluginid, 'feedback', 0.0)[0]
|
||||
amped_hzmin = plugins.get_plug_param(cvpj_l, pluginid, 'hzmin', 400.0)[0]
|
||||
amped_hzrange = plugins.get_plug_param(cvpj_l, pluginid, 'hzrange', 4.0)[0]
|
||||
amped_mix = plugins.get_plug_param(cvpj_l, pluginid, 'mix', 1.0)[0]
|
||||
amped_rate = plugins.get_plug_param(cvpj_l, pluginid, 'rate', 1.5)[0]
|
||||
amped_stages = plugins.get_plug_param(cvpj_l, pluginid, 'stages', 8.0)[0]
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-ableton', 'PhaserNew')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Feedback', amped_feedback/4, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'CenterFrequency', amped_hzmin, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Spread', amped_hzrange/20, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'DryWet', amped_mix, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Modulation_Frequency', amped_rate/2, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Notches', amped_stages, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Modulation_Amount', 0.20, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'OutputGain', 1, 'float', "")
|
||||
amped_feedback = cvpj_plugindata.param_get('feedback', 0.0)[0]
|
||||
amped_hzmin = cvpj_plugindata.param_get('hzmin', 400.0)[0]
|
||||
amped_hzrange = cvpj_plugindata.param_get('hzrange', 4.0)[0]
|
||||
amped_mix = cvpj_plugindata.param_get('mix', 1.0)[0]
|
||||
amped_rate = cvpj_plugindata.param_get('rate', 1.5)[0]
|
||||
amped_stages = cvpj_plugindata.param_get('stages', 8.0)[0]
|
||||
cvpj_plugindata.replace('native-ableton', 'PhaserNew')
|
||||
cvpj_plugindata.param_add('Feedback', amped_feedback/4, 'float', "")
|
||||
cvpj_plugindata.param_add('CenterFrequency', amped_hzmin, 'float', "")
|
||||
cvpj_plugindata.param_add('Spread', amped_hzrange/20, 'float', "")
|
||||
cvpj_plugindata.param_add('DryWet', amped_mix, 'float', "")
|
||||
cvpj_plugindata.param_add('Modulation_Frequency', amped_rate/2, 'float', "")
|
||||
cvpj_plugindata.param_add('Notches', amped_stages, 'float', "")
|
||||
cvpj_plugindata.param_add('Modulation_Amount', 0.20, 'float', "")
|
||||
cvpj_plugindata.param_add('OutputGain', 1, 'float', "")
|
||||
return True
|
|
@ -3,57 +3,47 @@
|
|||
|
||||
import plugin_plugconv
|
||||
|
||||
import base64
|
||||
import struct
|
||||
import os
|
||||
import math
|
||||
import lxml.etree as ET
|
||||
|
||||
from functions_plugin import ableton_values
|
||||
from functions import note_data
|
||||
from functions import data_bytes
|
||||
from functions import data_values
|
||||
from functions import plugin_vst2
|
||||
from functions import plugins
|
||||
from functions_tracks import auto_data
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['native-flstudio', None, 'flp'], ['native-ableton', None, 'ableton'], True, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
|
||||
if plugintype[1] == None: plugintype[1] = ''
|
||||
|
||||
if plugintype[1].lower() == 'fruity balance':
|
||||
print('[plug-conv] FL Studio to Ableton: Fruity Balance > StereoGain:',pluginid)
|
||||
auto_data.del_plugin(cvpj_l, pluginid)
|
||||
bal_pan = plugins.get_plug_param(cvpj_l, pluginid, 'pan', 0)[0]
|
||||
bal_vol = plugins.get_plug_param(cvpj_l, pluginid, 'vol', 256)[0]
|
||||
bal_pan = cvpj_plugindata.param_get('pan', 0)[0]
|
||||
bal_vol = cvpj_plugindata.param_get('vol', 256)[0]
|
||||
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-ableton', 'StereoGain')
|
||||
cvpj_plugindata.replace('native-ableton', 'StereoGain')
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'PhaseInvertL', False, 'bool', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'PhaseInvertR', False, 'bool', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'ChannelMode', 1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'StereoWidth', 1, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'MidSideBalance', 1, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Mono', False, 'bool', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'BassMono', False, 'bool', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'BassMonoFrequency', 120, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Balance', bal_pan/128, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Gain', 0, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'LegacyGain', ((bal_vol/256)-1)*35, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Mute', False, 'bool', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'DcFilter', False, 'bool', "")
|
||||
cvpj_plugindata.param_add('PhaseInvertL', False, 'bool', "")
|
||||
cvpj_plugindata.param_add('PhaseInvertR', False, 'bool', "")
|
||||
cvpj_plugindata.param_add('ChannelMode', 1, 'int', "")
|
||||
cvpj_plugindata.param_add('StereoWidth', 1, 'float', "")
|
||||
cvpj_plugindata.param_add('MidSideBalance', 1, 'float', "")
|
||||
cvpj_plugindata.param_add('Mono', False, 'bool', "")
|
||||
cvpj_plugindata.param_add('BassMono', False, 'bool', "")
|
||||
cvpj_plugindata.param_add('BassMonoFrequency', 120, 'float', "")
|
||||
cvpj_plugindata.param_add('Balance', bal_pan/128, 'float', "")
|
||||
cvpj_plugindata.param_add('Gain', 0, 'float', "")
|
||||
cvpj_plugindata.param_add('LegacyGain', ((bal_vol/256)-1)*35, 'float', "")
|
||||
cvpj_plugindata.param_add('Mute', False, 'bool', "")
|
||||
cvpj_plugindata.param_add('DcFilter', False, 'bool', "")
|
||||
return True
|
||||
|
||||
if plugintype[1].lower() == 'fruity convolver':
|
||||
print('[plug-conv] FL Studio to Ableton: Fruity convolver > Hybrid:',pluginid)
|
||||
auto_data.del_plugin(cvpj_l, pluginid)
|
||||
conv_file = plugins.get_plug_dataval(cvpj_l, pluginid, 'file', 0)
|
||||
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-ableton', 'Hybrid')
|
||||
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'sample', conv_file)
|
||||
conv_file = cvpj_plugindata.dataval_get('file', 0)
|
||||
cvpj_plugindata.replace('native-ableton', 'Hybrid')
|
||||
cvpj_plugindata.dataval_get('sample', conv_file)
|
||||
return True
|
||||
|
|
|
@ -12,28 +12,29 @@ class plugconv(plugin_plugconv.base):
|
|||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['universal', None, None], ['native-ableton', None, 'ableton'], True, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
#print(plugintype[1])
|
||||
|
||||
if plugintype[1] == 'Vibrato':
|
||||
print('[plug-conv] Amped to Ableton: Vibrato > Chorus2:',pluginid)
|
||||
auto_data.del_plugin(cvpj_l, pluginid)
|
||||
amped_delayLfoDepth = plugins.get_plug_param(cvpj_l, pluginid, 'delayLfoDepth', 0.15)[0]
|
||||
amped_delayLfoRateHz = plugins.get_plug_param(cvpj_l, pluginid, 'delayLfoRateHz', 0.7585000000000001)[0]
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-ableton', 'Chorus2')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Mode', 2, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Width', 1, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'OutputGain', 1, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'DryWet', 1, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Rate', amped_delayLfoRateHz, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'Amount', amped_delayLfoDepth/2, 'float', "")
|
||||
amped_delayLfoDepth = cvpj_plugindata.param_get('delayLfoDepth', 0.15)[0]
|
||||
amped_delayLfoRateHz = cvpj_plugindata.param_get('delayLfoRateHz', 0.7585000000000001)[0]
|
||||
cvpj_plugindata.replace('native-ableton', 'Chorus2')
|
||||
cvpj_plugindata.param_add('Mode', 2, 'int', "")
|
||||
cvpj_plugindata.param_add('Width', 1, 'float', "")
|
||||
cvpj_plugindata.param_add('OutputGain', 1, 'float', "")
|
||||
cvpj_plugindata.param_add('DryWet', 1, 'float', "")
|
||||
cvpj_plugindata.param_add('Rate', amped_delayLfoRateHz, 'float', "")
|
||||
cvpj_plugindata.param_add('Amount', amped_delayLfoDepth/2, 'float', "")
|
||||
return True
|
||||
|
||||
if plugintype[1] == 'Tremolo':
|
||||
print('[plug-conv] Amped to Ableton: Tremolo > AutoPan:',pluginid)
|
||||
auto_data.del_plugin(cvpj_l, pluginid)
|
||||
amped_lfoADepth = plugins.get_plug_param(cvpj_l, pluginid, 'lfoADepth', 0.15)[0]
|
||||
amped_lfoARateHz = plugins.get_plug_param(cvpj_l, pluginid, 'lfoARateHz', 0.7585000000000001)[0]
|
||||
amped_lfoADepth = cvpj_plugindata.param_get('lfoADepth', 0.15)[0]
|
||||
amped_lfoARateHz = cvpj_plugindata.param_get('lfoARateHz', 0.7585000000000001)[0]
|
||||
|
||||
als_lfo_data = {
|
||||
"BeatQuantize": 2.0,
|
||||
|
@ -52,6 +53,6 @@ class plugconv(plugin_plugconv.base):
|
|||
"StereoMode": 0,
|
||||
"Type": 0
|
||||
}
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-ableton', 'AutoPan')
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'lfo_data', als_lfo_data)
|
||||
cvpj_plugindata.replace('native-ableton', 'AutoPan')
|
||||
cvpj_plugindata.dataval_add('lfo_data', als_lfo_data)
|
||||
return True
|
|
@ -8,49 +8,37 @@ import struct
|
|||
import os
|
||||
import math
|
||||
|
||||
from functions import plugins
|
||||
from functions_tracks import auto_data
|
||||
|
||||
def getparam(paramname):
|
||||
global pluginid_g
|
||||
global cvpj_l_g
|
||||
paramval = plugins.get_plug_param(cvpj_l_g, pluginid_g, paramname, 0)
|
||||
return paramval[0]
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['native-lmms', None, 'lmms'], ['native-flstudio', None, 'flp'], True, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
global pluginid_g
|
||||
global cvpj_l_g
|
||||
pluginid_g = pluginid
|
||||
cvpj_l_g = cvpj_l
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
|
||||
if plugintype[1] == 'stereomatrix':
|
||||
print('[plug-conv] LMMS to FL Studio: Stereo Matrix > Fruity Stereo Shaper:',pluginid)
|
||||
|
||||
fl_r_l = getparam('r-l')*12800
|
||||
fl_l_l = getparam('l-l')*12800
|
||||
fl_r_r = getparam('r-r')*12800
|
||||
fl_l_r = getparam('l-r')*12800
|
||||
fl_r_l = cvpj_plugindata.param_get('r-l', 0)*12800
|
||||
fl_l_l = cvpj_plugindata.param_get('l-l', 0)*12800
|
||||
fl_r_r = cvpj_plugindata.param_get('r-r', 0)*12800
|
||||
fl_l_r = cvpj_plugindata.param_get('l-r', 0)*12800
|
||||
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-flstudio', 'fruity stereo shaper')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'r2l', fl_r_l, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'l2l', fl_l_l, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'r2r', fl_r_r, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'l2r', fl_l_r, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'delay', 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'dephase', 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'iodiff', 0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'prepost', 0, 'int', "")
|
||||
cvpj_plugindata.replace('native-flstudio', 'fruity stereo shaper')
|
||||
cvpj_plugindata.param_add('r2l', fl_r_l, 'int', "")
|
||||
cvpj_plugindata.param_add('l2l', fl_l_l, 'int', "")
|
||||
cvpj_plugindata.param_add('r2r', fl_r_r, 'int', "")
|
||||
cvpj_plugindata.param_add('l2r', fl_l_r, 'int', "")
|
||||
cvpj_plugindata.param_add('delay', 0, 'int', "")
|
||||
cvpj_plugindata.param_add('dephase', 0, 'int', "")
|
||||
cvpj_plugindata.param_add('iodiff', 0, 'int', "")
|
||||
cvpj_plugindata.param_add('prepost', 0, 'int', "")
|
||||
return True
|
||||
|
||||
if plugintype[1] == 'spectrumanalyzer':
|
||||
print('[plug-conv] LMMS to FL Studio: Spectrum Analyzer > Fruity Spectroman:',pluginid)
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-flstudio', 'fruity spectroman')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'amp', 128, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'scale', 128, 'int', "")
|
||||
cvpj_plugindata.replace('native-flstudio', 'fruity spectroman')
|
||||
cvpj_plugindata.param_add('amp', 128, 'int', "")
|
||||
cvpj_plugindata.param_add('scale', 128, 'int', "")
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_plugconv
|
||||
|
||||
import base64
|
||||
import struct
|
||||
import os
|
||||
import math
|
||||
|
||||
from functions import plugins
|
||||
from functions import xtramath
|
||||
from functions_tracks import auto_data
|
||||
|
||||
def getparam(paramname):
|
||||
global pluginid_g
|
||||
global cvpj_l_g
|
||||
paramval = plugins.get_plug_param(cvpj_l_g, pluginid_g, paramname, 0)
|
||||
return paramval[0]
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['universal', None, None], ['native-flstudio', None, 'flp'], True, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
global pluginid_g
|
||||
global cvpj_l_g
|
||||
pluginid_g = pluginid
|
||||
cvpj_l_g = cvpj_l
|
||||
|
||||
if plugintype[1] == 'eq-bands':
|
||||
main_lvl = plugins.get_plug_param(cvpj_l, pluginid, 'gain_out', 0)[0]*100
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-flstudio', 'fruity parametric eq 2')
|
||||
banddata = plugins.get_eqband(cvpj_l, pluginid, None)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'main_lvl', main_lvl, 'int', "")
|
||||
|
||||
bandnum = 0
|
||||
for s_band in banddata:
|
||||
bandtype = s_band['type']
|
||||
|
||||
band_on = s_band['on']
|
||||
band_freq = s_band['freq']
|
||||
band_gain = s_band['gain']
|
||||
band_res = s_band['var']
|
||||
|
||||
part = [True, band_on, band_freq, band_gain, band_res]
|
||||
|
||||
band_shape = 0
|
||||
if band_on == 1:
|
||||
if bandtype == 'low_pass': band_shape = 1
|
||||
if bandtype == 'band_pass': band_shape = 2
|
||||
if bandtype == 'high_pass': band_shape = 3
|
||||
if bandtype == 'notch': band_shape = 4
|
||||
if bandtype == 'low_shelf': band_shape = 5
|
||||
if bandtype == 'peak': band_shape = 6
|
||||
if bandtype == 'high_shelf': band_shape = 7
|
||||
|
||||
band_freq = math.log(band_freq / 20) / math.log(1000)
|
||||
|
||||
if band_on == 1:
|
||||
bandstarttxt = str(bandnum+1)
|
||||
|
||||
if bandtype in ['low_shelf', 'high_shelf']: band_res = 1-(band_res/1.2)
|
||||
elif bandtype in ['low_pass', 'high_pass']:
|
||||
band_res = math.log(band_res, 2) / 10
|
||||
band_res = xtramath.between_to_one(1, -1, band_res)
|
||||
else:
|
||||
band_res = band_res/4
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, bandstarttxt+'_gain', band_gain*100, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, bandstarttxt+'_freq', band_freq*65536, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, bandstarttxt+'_width', band_res*65536, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, bandstarttxt+'_type', band_shape, 'int', "")
|
||||
bandnum += 1
|
|
@ -1,51 +1,38 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import base64
|
||||
import struct
|
||||
import os
|
||||
import math
|
||||
|
||||
from functions import note_data
|
||||
from functions import data_bytes
|
||||
from functions import data_values
|
||||
from functions import plugin_vst2
|
||||
from functions import plugins
|
||||
from functions import xtramath
|
||||
from functions_plugparams import wave
|
||||
|
||||
import plugin_plugconv
|
||||
from functions_plugparams import wave
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['native-jummbox', None, 'jummbox'], ['native-lmms', None, 'lmms'], True, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
if plugintype[1] in ['custom chip', 'chip', 'harmonics']:
|
||||
print('[plug-conv] Beepbox to LMMS: '+plugintype[1]+' > TripleOscillator:',pluginid)
|
||||
plugdata = plugins.get_plug_data(cvpj_l, pluginid)
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-lmms', 'tripleoscillator')
|
||||
|
||||
samplefolder = extra_json['samplefolder']
|
||||
os.makedirs(extra_json['samplefolder'], exist_ok=True)
|
||||
|
||||
os.makedirs(samplefolder, exist_ok=True)
|
||||
wave_path = os.path.join(samplefolder, pluginid+'_wave.wav')
|
||||
|
||||
if plugintype[1] in ['custom chip', 'chip']:
|
||||
wave.wave2file(cvpj_l, pluginid, 'chipwave', wave_path)
|
||||
if plugintype[1] in ['harmonics']:
|
||||
wave.harm2file(cvpj_l, pluginid, 'harmonics', wave_path)
|
||||
if plugintype[1] in ['custom chip', 'chip']: wave.wave2file(cvpj_plugindata, 'chipwave', wave_path)
|
||||
if plugintype[1] in ['harmonics']: wave.harm2file(cvpj_plugindata, 'harmonics', wave_path)
|
||||
|
||||
unisontype = plugins.get_plug_dataval(cvpj_l, pluginid, 'unison', 'none')
|
||||
cvpj_plugindata.replace('native-lmms', 'tripleoscillator')
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'vol0', 15, 'int', "")
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_1', wave_path)
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_2', wave_path)
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_3', wave_path)
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'wavetype0', 7, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'wavetype1', 7, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'wavetype2', 7, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'coarse0', -12, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'coarse1', -12, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'coarse2', -12, 'int', "")
|
||||
cvpj_plugindata.param_add('vol0', 15, 'int', "")
|
||||
cvpj_plugindata.fileref_add('osc_1', wave_path)
|
||||
cvpj_plugindata.fileref_add('osc_2', wave_path)
|
||||
cvpj_plugindata.fileref_add('osc_3', wave_path)
|
||||
cvpj_plugindata.param_add('wavetype0', 7, 'int', "")
|
||||
cvpj_plugindata.param_add('wavetype1', 7, 'int', "")
|
||||
cvpj_plugindata.param_add('wavetype2', 7, 'int', "")
|
||||
cvpj_plugindata.param_add('coarse0', -12, 'int', "")
|
||||
cvpj_plugindata.param_add('coarse1', -12, 'int', "")
|
||||
cvpj_plugindata.param_add('coarse2', -12, 'int', "")
|
||||
return True
|
||||
else: return False
|
|
@ -3,11 +3,6 @@
|
|||
|
||||
import plugin_plugconv
|
||||
|
||||
import base64
|
||||
import struct
|
||||
import os
|
||||
import math
|
||||
|
||||
from functions import plugins
|
||||
from functions_tracks import auto_data
|
||||
|
||||
|
@ -22,20 +17,19 @@ threeosc_shapes = {
|
|||
|
||||
|
||||
def getparam(paramname):
|
||||
global pluginid_g
|
||||
global cvpj_l_g
|
||||
paramval = plugins.get_plug_param(cvpj_l_g, pluginid_g, paramname, 0)
|
||||
global cvpj_plugindata_g
|
||||
paramval = cvpj_plugindata_g.param_get(paramname, 0)
|
||||
return paramval[0]
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['native-flstudio', None, 'flp'], ['native-lmms', None, 'lmms'], True, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
global pluginid_g
|
||||
global cvpj_l_g
|
||||
pluginid_g = pluginid
|
||||
cvpj_l_g = cvpj_l
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
global cvpj_plugindata_g
|
||||
cvpj_plugindata_g = cvpj_plugindata
|
||||
|
||||
plugintype = cvpj_plugindata.type_get()
|
||||
|
||||
if plugintype[1] == None: plugintype[1] = ''
|
||||
|
||||
|
@ -44,11 +38,11 @@ class plugconv(plugin_plugconv.base):
|
|||
auto_data.del_plugin(cvpj_l, pluginid)
|
||||
bal_pan = getparam('pan')
|
||||
bal_vol = getparam('vol')
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-lmms', 'amplifier')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'pan', (bal_pan/128)*100, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'right', 100, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'volume', (bal_vol/256)*100, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'left', 100, 'int', "")
|
||||
cvpj_plugindata.replace('native-lmms', 'amplifier')
|
||||
cvpj_plugindata.param_add('pan', (bal_pan/128)*100, 'int', "")
|
||||
cvpj_plugindata.param_add('right', 100, 'int', "")
|
||||
cvpj_plugindata.param_add('volume', (bal_vol/256)*100, 'int', "")
|
||||
cvpj_plugindata.param_add('left', 100, 'int', "")
|
||||
return True
|
||||
|
||||
if plugintype[1].lower() == 'fruity stereo shaper':
|
||||
|
@ -58,11 +52,11 @@ class plugconv(plugin_plugconv.base):
|
|||
fl_shape_l2l = getparam('l2l')/12800
|
||||
fl_shape_r2r = getparam('r2r')/12800
|
||||
fl_shape_l2r = getparam('l2r')/12800
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-lmms', 'stereomatrix')
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'l-r', fl_shape_l2r, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'r-l', fl_shape_r2l, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'r-r', fl_shape_r2r, 'float', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'l-l', fl_shape_l2l, 'float', "")
|
||||
cvpj_plugindata.replace('native-lmms', 'stereomatrix')
|
||||
cvpj_plugindata.param_add('l-r', fl_shape_l2r, 'float', "")
|
||||
cvpj_plugindata.param_add('r-l', fl_shape_r2l, 'float', "")
|
||||
cvpj_plugindata.param_add('r-r', fl_shape_r2r, 'float', "")
|
||||
cvpj_plugindata.param_add('l-l', fl_shape_l2l, 'float', "")
|
||||
return True
|
||||
|
||||
if plugintype[1].lower() == '3x osc':
|
||||
|
@ -131,47 +125,47 @@ class plugconv(plugin_plugconv.base):
|
|||
lmms_userwavefile1 = 0
|
||||
lmms_userwavefile2 = 0
|
||||
|
||||
filedata = plugins.get_fileref(cvpj_l, pluginid, 'audiofile')
|
||||
filedata = cvpj_plugindata.fileref_get('audiofile')
|
||||
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'native-lmms', 'tripleoscillator')
|
||||
cvpj_plugindata.replace('native-lmms', 'tripleoscillator')
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'coarse0', lmms_coarse0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'coarse1', lmms_coarse1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'coarse2', lmms_coarse2, 'int', "")
|
||||
cvpj_plugindata.param_add('coarse0', lmms_coarse0, 'int', "")
|
||||
cvpj_plugindata.param_add('coarse1', lmms_coarse1, 'int', "")
|
||||
cvpj_plugindata.param_add('coarse2', lmms_coarse2, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'finel0', lmms_finel0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'finel1', lmms_finel1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'finel2', lmms_finel2, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'finer0', lmms_finer0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'finer1', lmms_finer1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'finer2', lmms_finer2, 'int', "")
|
||||
cvpj_plugindata.param_add('finel0', lmms_finel0, 'int', "")
|
||||
cvpj_plugindata.param_add('finel1', lmms_finel1, 'int', "")
|
||||
cvpj_plugindata.param_add('finel2', lmms_finel2, 'int', "")
|
||||
cvpj_plugindata.param_add('finer0', lmms_finer0, 'int', "")
|
||||
cvpj_plugindata.param_add('finer1', lmms_finer1, 'int', "")
|
||||
cvpj_plugindata.param_add('finer2', lmms_finer2, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'modalgo1', lmms_modalgo1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'modalgo2', lmms_modalgo2, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'modalgo3', lmms_modalgo3, 'int', "")
|
||||
cvpj_plugindata.param_add('modalgo1', lmms_modalgo1, 'int', "")
|
||||
cvpj_plugindata.param_add('modalgo2', lmms_modalgo2, 'int', "")
|
||||
cvpj_plugindata.param_add('modalgo3', lmms_modalgo3, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'pan0', lmms_pan0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'pan1', lmms_pan1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'pan2', lmms_pan2, 'int', "")
|
||||
cvpj_plugindata.param_add('pan0', lmms_pan0, 'int', "")
|
||||
cvpj_plugindata.param_add('pan1', lmms_pan1, 'int', "")
|
||||
cvpj_plugindata.param_add('pan2', lmms_pan2, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'phoffset0', lmms_phoffset0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'phoffset1', lmms_phoffset1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'phoffset2', lmms_phoffset2, 'int', "")
|
||||
cvpj_plugindata.param_add('phoffset0', lmms_phoffset0, 'int', "")
|
||||
cvpj_plugindata.param_add('phoffset1', lmms_phoffset1, 'int', "")
|
||||
cvpj_plugindata.param_add('phoffset2', lmms_phoffset2, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'stphdetun0', lmms_stphdetun0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'stphdetun1', lmms_stphdetun1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'stphdetun2', lmms_stphdetun2, 'int', "")
|
||||
cvpj_plugindata.param_add('stphdetun0', lmms_stphdetun0, 'int', "")
|
||||
cvpj_plugindata.param_add('stphdetun1', lmms_stphdetun1, 'int', "")
|
||||
cvpj_plugindata.param_add('stphdetun2', lmms_stphdetun2, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'vol0', lmms_vol0*33, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'vol1', lmms_vol1*33, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'vol2', lmms_vol2*33, 'int', "")
|
||||
cvpj_plugindata.param_add('vol0', lmms_vol0*33, 'int', "")
|
||||
cvpj_plugindata.param_add('vol1', lmms_vol1*33, 'int', "")
|
||||
cvpj_plugindata.param_add('vol2', lmms_vol2*33, 'int', "")
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'wavetype0', lmms_wavetype0, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'wavetype1', lmms_wavetype1, 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'wavetype2', lmms_wavetype2, 'int', "")
|
||||
cvpj_plugindata.param_add('wavetype0', lmms_wavetype0, 'int', "")
|
||||
cvpj_plugindata.param_add('wavetype1', lmms_wavetype1, 'int', "")
|
||||
cvpj_plugindata.param_add('wavetype2', lmms_wavetype2, 'int', "")
|
||||
|
||||
if filedata != None:
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_1', filedata['path'])
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_2', filedata['path'])
|
||||
plugins.add_fileref(cvpj_l, pluginid, 'osc_3', filedata['path'])
|
||||
cvpj_plugindata.fileref_add('osc_1', filedata['path'])
|
||||
cvpj_plugindata.fileref_add('osc_2', filedata['path'])
|
||||
cvpj_plugindata.fileref_add('osc_3', filedata['path'])
|
||||
return True
|
|
@ -1,90 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
vrc7patch = {}
|
||||
vrc7patch[1] = [3,33,5,6,232,129,66,39]
|
||||
vrc7patch[2] = [19,65,20,13,216,246,35,18]
|
||||
vrc7patch[3] = [17,17,8,8,250,178,32,18]
|
||||
vrc7patch[4] = [49,97,12,7,168,100,97,39]
|
||||
vrc7patch[5] = [50,33,30,6,225,118,1,40]
|
||||
vrc7patch[6] = [2,1,6,0,163,226,244,244]
|
||||
vrc7patch[7] = [33,97,29,7,130,129,17,7]
|
||||
vrc7patch[8] = [35,33,34,23,162,114,1,23]
|
||||
vrc7patch[9] = [53,17,37,0,64,115,114,1]
|
||||
vrc7patch[10] = [181,1,15,15,168,165,81,2]
|
||||
vrc7patch[11] = [23,193,36,7,248,248,34,18]
|
||||
vrc7patch[12] = [113,35,17,6,101,116,24,22]
|
||||
vrc7patch[13] = [1,2,211,5,201,149,3,2]
|
||||
vrc7patch[14] = [97,99,12,0,148,192,51,246]
|
||||
vrc7patch[15] = [33,114,13,0,193,213,86,6]
|
||||
|
||||
import plugin_plugconv
|
||||
|
||||
from functions import plugins
|
||||
from functions import data_bytes
|
||||
from functions_plugparams import params_fm
|
||||
import math
|
||||
import struct
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['fm', 'vrc7', None], ['fm', 'opl2', None], False, True
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
print('[plug-conv] Converting VRC7 to OPL2:',pluginid)
|
||||
use_patch = plugins.get_plug_dataval(cvpj_l, pluginid, 'use_patch', False)
|
||||
patch = plugins.get_plug_dataval(cvpj_l, pluginid, 'patch', 0)
|
||||
vrcregs = plugins.get_plug_dataval(cvpj_l, pluginid, 'regs', [0,0,0,0,0,0,0,0])
|
||||
|
||||
if use_patch == True: vrcregs = vrc7patch[patch]
|
||||
else: vrcregs = plugins.get_plug_dataval(cvpj_l, pluginid, 'regs', [0,0,0,0,0,0,0,0])
|
||||
|
||||
vrc_mod_flags, vrc_mod_mul = data_bytes.splitbyte(vrcregs[0])
|
||||
vrc_mod_trem, vrc_mod_vib, vrc_mod_sust, vrc_mod_krs = data_bytes.to_bin(vrc_mod_flags, 4)
|
||||
vrc_car_flags, vrc_car_mul = data_bytes.splitbyte(vrcregs[1])
|
||||
vrc_car_trem, vrc_car_vib, vrc_car_sust, vrc_car_krs = data_bytes.to_bin(vrc_car_flags, 4)
|
||||
vrc_mod_kls = vrcregs[2] >> 6
|
||||
vrc_mod_out = vrcregs[2] & 0x3F
|
||||
vrc_car_kls = vrcregs[3] >> 6
|
||||
vrc_fb = vrcregs[3] & 0x07
|
||||
vrc_mod_wave = int(bool(vrcregs[3] & 0x08))
|
||||
vrc_car_wave = int(bool(vrcregs[3] & 0x10))
|
||||
vrc_mod_att, vrc_mod_dec = data_bytes.splitbyte(vrcregs[4])
|
||||
vrc_car_att, vrc_car_dec = data_bytes.splitbyte(vrcregs[5])
|
||||
vrc_mod_sus, vrc_mod_rel = data_bytes.splitbyte(vrcregs[6])
|
||||
vrc_car_sus, vrc_car_rel = data_bytes.splitbyte(vrcregs[7])
|
||||
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'fm', 'opl2')
|
||||
fmdata = params_fm.fm_data('opl2')
|
||||
|
||||
fmdata.set_param('fm', 0)
|
||||
fmdata.set_param('feedback', vrc_fb)
|
||||
|
||||
fmdata.set_op_param(0, 'env_attack', vrc_mod_att)
|
||||
fmdata.set_op_param(0, 'env_decay', vrc_mod_dec)
|
||||
fmdata.set_op_param(0, 'env_release', vrc_mod_rel)
|
||||
fmdata.set_op_param(0, 'env_sustain', vrc_mod_sus)
|
||||
fmdata.set_op_param(0, 'freqmul', vrc_mod_mul)
|
||||
fmdata.set_op_param(0, 'ksl', vrc_mod_kls)
|
||||
fmdata.set_op_param(0, 'ksr', vrc_mod_krs)
|
||||
fmdata.set_op_param(0, 'level', vrc_mod_out)
|
||||
fmdata.set_op_param(0, 'tremolo', vrc_mod_trem)
|
||||
fmdata.set_op_param(0, 'vibrato', vrc_mod_vib)
|
||||
fmdata.set_op_param(0, 'waveform', vrc_mod_wave)
|
||||
fmdata.set_op_param(0, 'sustained', vrc_mod_sust)
|
||||
|
||||
fmdata.set_op_param(1, 'env_attack', vrc_car_att)
|
||||
fmdata.set_op_param(1, 'env_decay', (vrc_car_dec*-1)+15)
|
||||
fmdata.set_op_param(1, 'env_release', (vrc_car_rel*-1)+15)
|
||||
fmdata.set_op_param(1, 'env_sustain', vrc_car_sus)
|
||||
fmdata.set_op_param(1, 'freqmul', vrc_car_mul)
|
||||
fmdata.set_op_param(1, 'ksl', vrc_car_kls)
|
||||
fmdata.set_op_param(1, 'ksr', vrc_car_krs)
|
||||
fmdata.set_op_param(1, 'tremolo', vrc_car_trem)
|
||||
fmdata.set_op_param(1, 'vibrato', vrc_car_vib)
|
||||
fmdata.set_op_param(1, 'waveform', vrc_car_wave)
|
||||
fmdata.set_op_param(1, 'sustained', vrc_car_sust)
|
||||
|
||||
fmdata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
return True
|
|
@ -1,54 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_plugconv
|
||||
|
||||
from functions import plugins
|
||||
from functions import data_bytes
|
||||
from functions import idvals
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['valsound', None, None], ['fm', 'opm', None], False, True
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
print('[plug-conv] Converting Valsound ['+plugintype[1]+'] to OPM:',pluginid)
|
||||
|
||||
idvaldata = None
|
||||
if idvaldata == None: idvaldata = idvals.parse_idvalscsv('data_idvals/valsound_opm.csv')
|
||||
|
||||
valsound = plugintype[1]
|
||||
|
||||
opm_main = idvals.get_idval(idvaldata, valsound, 'opm_main')
|
||||
opm_op1 = idvals.get_idval(idvaldata, valsound, 'opm_op1')
|
||||
opm_op2 = idvals.get_idval(idvaldata, valsound, 'opm_op2')
|
||||
opm_op3 = idvals.get_idval(idvaldata, valsound, 'opm_op3')
|
||||
opm_op4 = idvals.get_idval(idvaldata, valsound, 'opm_op4')
|
||||
|
||||
opm_main = [int(i) for i in opm_main.split(',')]
|
||||
opm_op1 = [int(i) for i in opm_op1.split(',')]
|
||||
opm_op2 = [int(i) for i in opm_op2.split(',')]
|
||||
opm_op3 = [int(i) for i in opm_op3.split(',')]
|
||||
opm_op4 = [int(i) for i in opm_op4.split(',')]
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'algorithm', opm_main[0], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, 'feedback', opm_main[1], 'int', "")
|
||||
|
||||
opdata = [opm_op1, opm_op2, opm_op3, opm_op4]
|
||||
|
||||
for opnum in range(4):
|
||||
op_data = opdata[opnum]
|
||||
op_num = 'op'+str(opnum)
|
||||
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_env_attack', op_data[0], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_env_decay', op_data[1], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_env_decay2', op_data[2], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_env_release', op_data[3], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_env_sustain', op_data[4], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_level', op_data[5], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_keyscale', op_data[6], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_freqmul', op_data[7], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_detune', op_data[8], 'int', "")
|
||||
plugins.add_plug_param(cvpj_l, pluginid, op_num+'_detune2', op_data[9], 'int', "")
|
||||
|
||||
return True
|
|
@ -1,48 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 SatyrDiamond
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import plugin_plugconv
|
||||
|
||||
from functions import plugins
|
||||
from functions import idvals
|
||||
from functions_plugparams import params_fm
|
||||
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['fm', 'epsm', None], ['fm', 'opn2', None], False, True
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
epsmregs = plugins.get_plug_dataval(cvpj_l, pluginid, 'regs', None)
|
||||
|
||||
if epsmregs != None:
|
||||
print('[plug-conv] Converting EPSM to OPN2:',pluginid)
|
||||
epsmopregs = [epsmregs[2:9], epsmregs[9:16], epsmregs[16:23], epsmregs[23:30]]
|
||||
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'fm', 'opn2')
|
||||
fmdata = params_fm.fm_data('opn2')
|
||||
|
||||
fmdata.set_param('algorithm', epsmregs[0]&0x0F)
|
||||
fmdata.set_param('feedback', ((epsmregs[0]>>3)*2)+1)
|
||||
fmdata.set_param('fms', epsmregs[1]&0x0F)
|
||||
fmdata.set_param('ams', (epsmregs[1]>>4)&0x03)
|
||||
fmdata.set_param('lfo_enable', epsmregs[30]>>3)
|
||||
fmdata.set_param('lfo_frequency', epsmregs[30]&0x07)
|
||||
|
||||
for opnum in range(4):
|
||||
op_reg = epsmopregs[opnum]
|
||||
fmdata.set_op_param(opnum, 'am', op_reg[3] >> 7)
|
||||
fmdata.set_op_param(opnum, 'detune', op_reg[0] >> 4)
|
||||
fmdata.set_op_param(opnum, 'env_attack', op_reg[2] & 0x3F)
|
||||
fmdata.set_op_param(opnum, 'env_decay', op_reg[3] & 0x3F)
|
||||
fmdata.set_op_param(opnum, 'env_decay2', op_reg[4])
|
||||
fmdata.set_op_param(opnum, 'env_release', op_reg[5] & 0x0F)
|
||||
fmdata.set_op_param(opnum, 'env_sustain', op_reg[5] >> 4)
|
||||
fmdata.set_op_param(opnum, 'freqmul', op_reg[0] & 0x0F)
|
||||
fmdata.set_op_param(opnum, 'level', (op_reg[1]*-1)+127)
|
||||
fmdata.set_op_param(opnum, 'ratescale', op_reg[2] >> 6)
|
||||
fmdata.set_op_param(opnum, 'ssg_enable', op_reg[6] >> 3)
|
||||
fmdata.set_op_param(opnum, 'ssg_mode', op_reg[6] & 0x08)
|
||||
|
||||
fmdata.to_cvpj(cvpj_l, pluginid)
|
||||
|
||||
return True
|
|
@ -6,20 +6,20 @@ import plugin_plugconv
|
|||
from functions import plugins
|
||||
from functions import data_bytes
|
||||
|
||||
class plugconv_vrc7_opl2(plugin_plugconv.base):
|
||||
class plugconv(plugin_plugconv.base):
|
||||
def __init__(self): pass
|
||||
def is_dawvert_plugin(self): return 'plugconv'
|
||||
def getplugconvinfo(self): return ['midi', None, None], ['soundfont2', None, None], False, False
|
||||
def convert(self, cvpj_l, pluginid, plugintype, extra_json):
|
||||
def convert(self, cvpj_l, pluginid, cvpj_plugindata, extra_json):
|
||||
if 'soundfont' in extra_json:
|
||||
print('[plug-conv] MIDI to SoundFont2:',pluginid)
|
||||
sffile = extra_json['soundfont']
|
||||
v_bank = plugins.get_plug_dataval(cvpj_l, pluginid, 'bank', 0)
|
||||
v_inst = plugins.get_plug_dataval(cvpj_l, pluginid, 'inst', 0)
|
||||
plugins.replace_plug(cvpj_l, pluginid, 'soundfont2', None)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'bank', v_bank)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'patch', v_inst)
|
||||
plugins.add_plug_data(cvpj_l, pluginid, 'file', sffile)
|
||||
v_bank = cvpj_plugindata.dataval_get('bank', 0)
|
||||
v_inst = cvpj_plugindata.dataval_get('inst', 0)
|
||||
cvpj_plugindata.replace('soundfont2', None)
|
||||
cvpj_plugindata.dataval_add('bank', v_bank)
|
||||
cvpj_plugindata.dataval_add('patch', v_inst)
|
||||
cvpj_plugindata.dataval_add('file', sffile)
|
||||
return True
|
||||
print('[plug-conv] No Soundfont Argument Defined:',pluginid)
|
||||
return False
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue