-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathModularClassList.sc
84 lines (66 loc) · 5.47 KB
/
ModularClassList.sc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
ModularClassList {
classvar <>whichArray, <>classArray, classDictionary;
*new {arg whichArrayIn;
whichArray = whichArrayIn;
this.init2;
}
*init2 {
//to do: group these classes into groups and make separate menus for each classification of effect - Sythesis, Reverb, BufPlayers...
switch(whichArray,
'normal', {
classArray = ["AtdV","GlassSines","GlassSines3", "FilterDelays", "PulsatingDelays", "BitCrusher", "TriggerDelays", "OverLapSamples", "LoopBuf", "Combulation", "BuchlaFilters", "BuchlaModelSolo", "ReverbDrone", "ShifterFeedback", "Compander", "Distortion2D", "CycleGripper", "Mixer", "Freeze", "AmpMod", "SignalSwitcher", "LoopMachine", "GrainAge", "GingerMan", "SwoopDown", "EQ", "DistortMono", "GrainFreezeNoise", "TFreeze", "PulseBP", "DownShift", "InterruptDistortion", "GrabNLoop", "HarmDoublerUp", "GrainFreezeDrums", "AmpFollower", "EightDelays2", "Melter", "GVerb", "HarmonicDoubler2", "Cutter", "LongDelay", "Filters", "ShifterX2", "Record", "RingModStereo", "BitInterrupter", "InterruptDelays", "InterruptLoop"/*, "CutterThrough"*/, "SpecDelay", "EnvGen", "FilterGrainsB", "ScaleShifterB", "UpDownSines", "SinArray", "SweepingNoise", "SpaceJunk", "BandPassFreeze", "NoisePulse", "GFNoiseMini", "Mute", "ResonDraw", "TestSine", "SampleMashup", "CrackleSynth", "LargeArcLoops", "SampleBank", "Timer", "LoopMachineOverLap", "Convolution", "FeedbackControl", "DistGrains", "MixerSolo", "MixerSoloMono", "GreatExpectations", "GFNoiseMiniSky", "MuteSky", "LowPass", "VDelayInline", "MantaToMidi"/*, "RageTrombones"*/, "Sampler", "TVFeedback", "FeedbackSynth", "DelayLine", "VST", "SinOsc", "PinkNoise"/*, "MFCCHarmonySynth"*/, "Gain", /*"MFCCTimbreSynth", "MFCCTimbreSynth2", */"BrynHarrison", "StraightLoop2", "PitchShift", "NN_Synths", "KlankFilter", "SpaceInterruption", "SpaceTrigger", "DJMixer", "TinyLoops", "ProtoType", "RingMod2", "LPFInterupter", "AmpMod2", "NessStretchRT", "DustAmpMod", "SnareSwitch", "FB100", "FB100B", "Tectonics", "Matrix4GL", "SuperSaw","HarmonicAnalysis","AnalogDrums","Proteus_Test", "Proteus_FX"].sort;
},
'feedback', {classArray = ["Convolution", "CombFilter", "KlankFilter", "KlankFilter2","OscilMidBump", "Compander", "DistortMono", "PinkNoise", "LoopBuf", "AnalysisFilters", "SignalSwitcher", "TVFeedback", "Mixer", "RingModStereo", "LongDelay", "FeedbackControl"].sort},
'installation', {classArray = ["EQ"]},
'Matrices', {classArray = ["LoopVidBuf2", "SnareSwitch", "DustAmpMod", "Compander", "BuchlaFilters", "BitCrusher", "Freeze", "Mixer"].sort},
'wubbels', {
classArray = ["WubbelsSine", "WubbelsSine2", "WubbelsSine3", "FilterDelays", "AutoTune", "RhythmicDelays", "Mixer", "EQ", "Compander", "LoopBuf", "MincekSine", "Mute", "AutoTuneFake", "OverlapWubbels"].sort;
},'stocky', {
classArray = ["Mikrophonie", "PitchShift"].sort;
},'atdV', {
classArray = ["GlassSines3", "RingMod", "FilterDelays", "PulsatingDelays", "BitCrusher", "TriggerDelays", "OverLapSamples", "LoopBuf", "Combulation", "BuchlaFilters", "BuchlaModelSolo", "ReverbDrone", "ShifterFeedback", "Compander", "MantaBuffers", "Distortion2D", "CycleGripper", "Mixer", "Freeze", "AmpMod", "SignalSwitcher", "SignalSwitcher4", "LoopMachine", "LoopBuf2", "GrainAge", "GingerMan", "SwoopDown", "EQ", "DistortMono", "GrainFreezeNoise", "TFreeze", "PulseBP", "DownShift", "InterruptDistortion", "StraightLoop", "Sand", "GrabNLoop", "AtdV", "FloatShifter", "HarmDoublerUp", "GrainFreezeDrums", "StarDust", "AmpFollower", "StraightDelays", "EightDelays2", "SpecMul", "Melter", "GVerb", "HarmonicDoubler2", "Cutter", "LongDelay", "Filters", "ShifterX2", "Record", "RingModStereo", "InterruptSine", "MiniGripper", "BitInterrupter", "SampleBank", "DecimateGrains"].sort;
},'lucerneVideo', {
classArray = ["LucerneVideo", "ShifterX2", "SignalSwitcher"].sort;
}
);
classDictionary = IdentityDictionary.new;
classArray.do{arg item, i;
if(item=="Mixer",{
classDictionary.add('Mixer'->{arg synthGroup, outBus; ModularMainMixer(synthGroup, outBus).init2(2, false)});
},{
classDictionary.add(item.asSymbol->(("{arg synthGroup, outBus; "++item++"_Mod(synthGroup, outBus)}").compile.value));
})
};
try { PathName(PathName(NN_Synth_Mod.filenameSymbol.asString).pathOnly).folders.collect{arg folder;
folder.files.select{arg file;
file.extension=="sc"
}
}.flatten.collect{arg item; item.fileNameWithoutExtension}.do{arg item;
classDictionary.add((item.asString++"_NNMod").asSymbol->(("{arg synthGroup, outBus; "++item++"_NNMod(synthGroup, outBus)}").compile.value));
};
};
}
*initModule {arg className, synthGroup, bus;
var item;
item = classDictionary[className.asSymbol].value(synthGroup, bus);
className = className.asString;
if((className=="SignalSwitcher")||(className=="RingModStereo")||(className=="Convolution")||(className=="AmpFollower")||(className=="TVFeedback")||(className=="DJMixer")||(className=="SpaceInterruption")||(className=="SpaceTrigger")||(className=="NessStretchRT")||(className=="NessStretchRTBells")||(className=="Tectonics"),{
item.init2(2,false)
});
^item
}
*initAnalogSynthModule {arg className, synthGroup, localBusses;
^classDictionary[className.asSymbol].value(synthGroup, localBusses);
}
*initNN_Synth{arg className, synthGroup, outBus;
^classDictionary[className.asSymbol].value(synthGroup, outBus);
}
*initMixer {arg group, outBus, numMixers;
var temp;
temp = ModularMainMixer(group, outBus, numMixers, false);
^temp;
}
*checkSynthName {arg name;
if(classArray.indexOfEqual(name)!=nil,{^true},{^false})
}
}