adding that weird lofi synthesizer
This commit is contained in:
@ -331,28 +331,55 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
|||||||
d.nnkick = z;
|
d.nnkick = z;
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
(
|
(
|
||||||
z = SynthDef('kraut', {
|
["lpf", "bpf", "hpf"].do({
|
||||||
/*
|
arg synth_type, index;
|
||||||
* time: frequency sweep time
|
z = SynthDef(("chip" ++ synth_type).asSymbol , {
|
||||||
* tune: frequency division
|
arg out=0;
|
||||||
* harmonics: nb of harmonics
|
var vibrato = SinOsc.ar(
|
||||||
* curve: distortion
|
\vibspeed.kr(2)).range(
|
||||||
* modSpeed: frequency bias
|
\vibdepth.kr(0).neg,
|
||||||
*/
|
\vibdepth.kr
|
||||||
arg out;
|
) * \vibrato.kr(1);
|
||||||
var sweepFreq = XLine.ar(\freq.kr(400) * 1.99, \freq.kr, \attack.kr(0.05) / \time.kr(2));
|
var pitchEnv = XLine.ar(1/4, 1, \glide.kr(0.1) / 10);
|
||||||
var frequencyBias = SinOsc.ar(\modSpeed.kr(8)).range(0.99, 1);
|
var filtEnv = Env.perc(\fattack.kr(0.01), \frelease.kr(1.0)).kr(doneAction: 0);
|
||||||
var sin = SinOscFB.ar([
|
var detune = \detune.kr(0);
|
||||||
sweepFreq * \tune.kr(1) * frequencyBias,
|
var basePitch = pitchEnv * \freq.kr(400);
|
||||||
sweepFreq / \tune.kr * frequencyBias],
|
var sound = AY.ar(
|
||||||
feedback: \harmonics.kr(0.25));
|
tonea: AY.freqtotone(basePitch + vibrato + detune),
|
||||||
var env = Env.perc(\attack.kr, \release.kr(0.5)).ar(doneAction: 2);
|
toneb: AY.freqtotone(basePitch * \ratio.kr(1) + vibrato - detune),
|
||||||
var sound = sin.lincurve(-1, 1, -1, 1, \curve.kr(4));
|
tonec: AY.freqtotone(basePitch / \ratio.kr + vibrato + (detune/2)),
|
||||||
sound = sound * \amp.kr(-6).dbamp;
|
noise: \noise.kr(0).linlin(0, 1, 0, 31),
|
||||||
OffsetOut.ar(out, Pan2.ar(sound, \pan.kr(0)));
|
control: \control.kr(0.125).linlin(0, 1, 0, 63),
|
||||||
|
vola: \vola.kr(15),
|
||||||
|
volb: \volb.kr(15),
|
||||||
|
volc: \volc.kr(15),
|
||||||
|
envfreq: \envfreq.kr(4),
|
||||||
|
envstyle: \envstyle.kr(1),
|
||||||
|
chiptype: \type.kr(0)
|
||||||
|
);
|
||||||
|
var env = Env.asr(
|
||||||
|
\attack.kr(0.01),
|
||||||
|
\sustain.kr(0),
|
||||||
|
\release.kr(0.125/2)
|
||||||
|
);
|
||||||
|
env = EnvGen.ar(
|
||||||
|
env,
|
||||||
|
gate: \gate.kr(1.0),
|
||||||
|
doneAction: 2
|
||||||
|
);
|
||||||
|
sound = VadimFilter.ar(
|
||||||
|
sound,
|
||||||
|
freq: \cutoff.kr(10000) * filtEnv,
|
||||||
|
resonance: \resonance.kr(0.5),
|
||||||
|
type: index
|
||||||
|
);
|
||||||
|
sound = sound * env * \amp.kr(1.0);
|
||||||
|
Out.ar(out, Pan2.ar(sound ! 2, \pan.kr(0.0)));
|
||||||
}).add;
|
}).add;
|
||||||
d.kraut = z;
|
d[z.name] = z;
|
||||||
|
});
|
||||||
);
|
);
|
||||||
|
|
||||||
z = nil; // We don't need that variable anymore
|
z = nil; // We don't need that variable anymore
|
||||||
|
|||||||
Reference in New Issue
Block a user