diff options
Diffstat (limited to 'loquelic_pm.dsp')
-rw-r--r-- | loquelic_pm.dsp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/loquelic_pm.dsp b/loquelic_pm.dsp new file mode 100644 index 0000000..fc1536e --- /dev/null +++ b/loquelic_pm.dsp @@ -0,0 +1,36 @@ +import("stdfaust.lib"); +import("src/util.dsp"); + +UIGroupOscA(x) = vgroup("Oscillator A", x); +UIFreqA = UIGroupOscA(hslider("Frequency", 440.0, 20.0, 10000.0, 1)); +UIMorphA = UIGroupOscA(hslider("Morph", 0.5, 0.0, 1.0, 0.001)); + +UIGroupOscB(x) = vgroup("Oscillator B", x); +UIFreqB = UIGroupOscB(hslider("Frequency", 440.0, 20.0, 10000.0, 1)); +UIMorphB = UIGroupOscB(hslider("Morph", 0.5, 0.0, 1.0, 0.001)); + +UIFoldGain = hslider("Fold", 1.0, 0.0, 5.0, 0.01); +UIMix = hslider("Mix", -1.0, -1.0, 1.0, 0.001); +UIMod = hslider("Modulation", 0.0, 0.0, 1.0, 0.001); + +process = + pmoscillators ~ (scaletwo(UIMod) : crossconnect) + : \(a, b).(a, a*b, b) + : blendthree(UIMix) + : *(UIFoldGain) + : fold +with { + pmsinemorph(morph, freq, pmod) = + freq + : phase + pmod + : fmod(_, 1.0) + : knee(morph) + : sin(_*2.0*ma.PI); + + pmoscillators = + pmsinemorph(UIMorphA, UIFreqA) + , pmsinemorph(UIMorphB, UIFreqB); + + scaletwo(s) = par(i, 2, *(s)); + crossconnect = route(2,2,1,2,2,1); +}; |