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.
131 lines
3.0 KiB
131 lines
3.0 KiB
(
|
|
var sin_dict = BmDspAlgs.getDict("synths/distorted_sin.scd");
|
|
sin_dict.makeSourceNdef(\sin_bass);
|
|
|
|
// TODO: use vars later
|
|
~granular_sampler_dict = BmDspAlgs.getDict("samplers/granular_sampler.scd");
|
|
~granular_sampler_dict[\postAmp] = true;
|
|
~granular_sampler_dict.makeSourceSynthDef.add();
|
|
|
|
~layered_grain = ();
|
|
~layered_grain[\name] = \layered_grain;
|
|
~layered_grain[\slots] = (
|
|
percussion: 1,
|
|
percussion_2: 2,
|
|
noises: 2,
|
|
pad: 3,
|
|
ambience: 4,
|
|
ambience_2: 6,
|
|
ambience2: 5
|
|
);
|
|
|
|
Ndef(~layered_grain[\name]).clear;
|
|
Ndef(~layered_grain[\name]).ar(2);
|
|
Ndef(~layered_grain[\name]).prime(~granular_sampler_dict[\name]);
|
|
|
|
~melodic_grain = ();
|
|
~melodic_grain[\name] = \melodic_grain;
|
|
~melodic_grain[\slots] = (
|
|
percussion: 1,
|
|
noises: 2,
|
|
pad: 3,
|
|
ambience: 4,
|
|
ambience2: 5
|
|
);
|
|
|
|
Ndef(~melodic_grain[\name]).clear;
|
|
Ndef(~melodic_grain[\name]).ar(2);
|
|
Ndef(~melodic_grain[\name]).prime(~granular_sampler_dict[\name]);
|
|
|
|
// global fx chain
|
|
Ndef(~layered_grain[\name]).put(148, \filter -> {
|
|
| in |
|
|
Compander.ar(
|
|
in,
|
|
in,
|
|
\treshHold.kr(0.33),
|
|
\slopeBelow.kr(1.5),
|
|
\slopeAbove.kr(0.33),
|
|
\clampTime.kr(0.15),
|
|
\relaxTime.kr(0.6)
|
|
);
|
|
});
|
|
|
|
Ndef(~layered_grain[\name]).put(149, \filter -> {
|
|
| in |
|
|
XFade2.ar(in, Convolution2.ar(in, ~sun_imp), \impulseDryWet.kr(-0.75));
|
|
});
|
|
|
|
Ndef(~layered_grain[\name]).put(150, \filter -> {
|
|
| in |
|
|
MiVerb.ar(in, \rTime.kr(0.2), \rDryWet.kr(0.1));
|
|
});
|
|
|
|
Ndef(~melodic_grain[\name]).put(149, \filter -> {
|
|
| in |
|
|
var d = in;
|
|
4.do({
|
|
| i |
|
|
var it = i + 1;
|
|
d = d + AllpassL.ar(d, 0.5, 0.1 * it, it.reciprocal, it.reciprocal);
|
|
});
|
|
in + d;
|
|
});
|
|
|
|
Ndef(~melodic_grain[\name]).set(\wet149, 0.33);
|
|
|
|
Ndef(~melodic_grain[\name]).put(150, \filter -> {
|
|
| in |
|
|
MiVerb.ar(in, \rTime.kr(0.2), \rDryWet.kr(0.1));
|
|
});
|
|
|
|
|
|
Spec.add(\treshHold, [0.0, 1.0, \lin]);
|
|
Spec.add(\slopeBelow, [1.0, 2.0, \lin]);
|
|
Spec.add(\slopeAbove, [0.0, 1.0, \lin]);
|
|
Spec.add(\clampTime, [0.01, 2.0, \lin]);
|
|
Spec.add(\relaxTime, [0.01, 2.0, \lin]);
|
|
Spec.add(\impulseDryWet, [-1.0, 1.0, \lin]);
|
|
Spec.add(\attack, [0.01, 2.0, \lin]);
|
|
|
|
Ndef(~layered_grain[\name]).play;
|
|
Ndef(~melodic_grain[\name]).play;
|
|
|
|
//Control nodes
|
|
Ndef(\main_pad_amp).clear;
|
|
Ndef(\main_pad_amp).kr(1);
|
|
Ndef(\main_pad_amp).put(0, {
|
|
var e = Env([0.0, \from.kr(-20.dbamp), \to.kr(-6.dbamp)], [0.0, \time.kr(10)], \curve.kr(1));
|
|
EnvGen.kr(e, \gate.tr(0));
|
|
});
|
|
Ndef(\main_pad_amp).play;
|
|
|
|
Ndef(\percussion_amp).clear;
|
|
Ndef(\percussion_amp).kr(1);
|
|
Ndef(\percussion_amp).put(0, {
|
|
var e = Env([0.0, \from.kr(-20.dbamp), \to.kr(-6.dbamp)], [0.0, \time.kr(10)]);
|
|
EnvGen.kr(e, \gate.tr(0));
|
|
});
|
|
Ndef(\percussion_amp).play;
|
|
|
|
Ndef(\pad1_pan_mod).clear;
|
|
Ndef(\pad1_pan_mod).kr(1);
|
|
Ndef(\pad1_pan_mod).put(0, {
|
|
SinOsc.kr(\freq.kr(1), \phase.kr(0.0)).range(\from.kr(-0.25), \to.kr(0.0));
|
|
});
|
|
Ndef(\pad1_pan_mod).play;
|
|
|
|
Ndef(\pad1_pan_mod).copy(\pad2_pan_mod);
|
|
Ndef(\pad2_pan_mod).set([\from, 0.0, \to, 0.25, \phase, 1.5]);
|
|
Ndef(\pad2_pan_mod).play;
|
|
|
|
Ndef(\pad_dir_mod, {
|
|
Pulse.kr(1).range(0.8, 1.0);
|
|
});
|
|
|
|
Ndef(\pad_dir_mod).play;
|
|
|
|
Ndef(\main_pad_amp).copy(\envMod4);
|
|
Ndef(\envMod4).play;
|
|
)
|