You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bmSClib/DSP/examples/apply_preset.scd

121 lines
2.4 KiB

s.boot;
// load instrument and presets
(
var perc_gen_source = (("SC_ALGS_PATH".getenv)+/+"synths/perc_gen/instr.scd").load;
~perc_gen_dict = NodeDictionary.newFrom(perc_gen_source);
~perc_gen_presets = (("SC_ALGS_PATH".getenv)+/+"synths/perc_gen/presets.scd").load;
)
~perc_gen_presets.do({
|preset|
preset.key.postln;
// Make Ndef with same name as preset name
~perc_gen_dict.makeSourceNDef(preset.key);
// Apply settings
preset.value.do({|v| Ndef(preset.key).set(v[0], v[1])});
Ndef(preset.key).play;
});
// add some Tdefs
Tdef(\kick, {
loop{
Ndef(~perc_gen_presets[0].key).set(\amp, 8.dbamp);
Ndef(~perc_gen_presets[0].key).set(\gate, 1);
1.wait;
}
}).play;
Tdef(\kick2, {
(1/3).wait;
loop{
Ndef(~perc_gen_presets[0].key).set(\amp, 4.dbamp);
Ndef(~perc_gen_presets[0].key).set(\gate, 1);
1.wait;
}
}).play;
Tdef(\hat, {
var amps = Pseq([1, 1, 0, 1, 0, 1]).loop.asStream;
loop{
Ndef(~perc_gen_presets[1].key).set(\gate, 1);
Ndef(~perc_gen_presets[1].key).set(\amp, -6.dbamp * amps.next);
(1/6).wait;
}
}).play;
Tdef(\snare, {
loop{
Ndef(~perc_gen_presets[4].key).set(\amp, -8.dbamp);
Ndef(~perc_gen_presets[4].key).set(\gate, 1);
(4/3).wait;
}
}).play;
Tdef(\wood, {
var amps = Pbjorklund(4, 7).loop.asStream;
loop{
Ndef(~perc_gen_presets[3].key).set(\gate, 1);
Ndef(~perc_gen_presets[3].key).set(\amp, -6.dbamp * amps.next);
(1/8).wait;
}
}).play;
Ndef(\fx).ar(2);
Ndef(\fx, {
var in = \in.ar([0, 0]);
var t1 = \t1.kr(0.5);
var t2 = \t2.kr(0.5);
[in[0] + CombC.ar(in[0], 1.0, t1, 2.0), in[1] + CombC.ar(in[1], 1.0, t2, 2.0)];
});
Ndef(\fx).play;
(
// WORKS ONLY FOR LAST!
[0, 1, 3, 4].do({
|index|
Ndef(\fx) <<>.in Ndef(~perc_gen_presets[index].key);
});
)
// constrol fx delay time
Tdef(\fxdelay, {
var dTimes1 = Pseq([1/8, 1/16, 1/3]).loop.asStream;
var dTimes2 = Pseq([1/16, 1/3, 1/8]).loop.asStream;
loop{
Ndef(\fx).set(\t1, dTimes1);
Ndef(\fx).set(\t2, dTimes2);
(4/3).wait;
}
}).play;
(
Ndef(\fx2).ar(2);
Ndef(\fx2, {
var in = \in.ar([0, 0]);
var sig = PitchShift.ar(in, 0.2, Lag.kr(LFSaw.kr(0.1).range(0.2, 0.25)), 1/2);
sig = DiodeRingMod.ar(sig, LFPulse.ar(160));
FreeVerb.ar(sig, 0.8, 1.0, 0.25) * 10;
});
Ndef(\fx2).play;
)
Ndef(\fx2) <<>.in Ndef(~perc_gen_presets[1].key)
Tdef(\fxswitch, {
var source = Pseq([1, 3]).loop.asStream;
loop{
Ndef(\fx2) <<>.in Ndef(~perc_gen_presets[source.next].key);
6.wait;
}
}).play;
Tdef(\fxswitch).stop
(
Ndef.clear;
Tdef.clear;
)