Skip to content

Instantly share code, notes, and snippets.

@ryanlaws
Last active July 11, 2021 00:24
Show Gist options
  • Save ryanlaws/5df2118a5fcd99ad68cfcc388044e2fd to your computer and use it in GitHub Desktop.
Save ryanlaws/5df2118a5fcd99ad68cfcc388044e2fd to your computer and use it in GitHub Desktop.
FC2 working set
//JUNK
s.quit;
s.boot;
(~stopwatch = Routine { var ct = 0;
loop { ct.postln; 1.wait; ct = ct + 1 }
}.play;)
~stopwatch.stop;
Ndef.clear
s.options.recHeaderFormat = 'wav'
s.prepareForRecord
s.record;
s.stopRecording;
~buf = Buffer.alloc(s, 12 * 48000, 4);
// SOURCE / START
(Ndef(\micAndTrig).fadeTime = 2;
Ndef(\micAndTrig, {|thresh=0.01, dec=0.5|
var in = SoundIn.ar([0, 1]);
var trig = Mix.ar((in - thresh)).max(0).sign.lagud(0, 0.01).sign;
var env = (Slope.ar(trig) > 0).lagud(0, dec);
in = (in * 10).tanh * env;
[in[0], in[1], trig, env];
}).play)
(Ndef(\mic, { Ndef.ar(\micAndTrig)[[0,1]] });
Ndef(\trig, { Ndef.ar(\micAndTrig)[2] });
Ndef(\env, { Ndef.ar(\micAndTrig)[3] });
Ndef(\mouse8, { MouseX.kr(0, 8).poll(2) });
Ndef(\mouse12, { MouseX.kr(0, 8).poll(2) });
)
Ndef(\micAndTrig).set(\thresh, 0.01);
// DELAY
(Ndef(\delay).fadeTime = 5;
Ndef(\delay, {|speed=0.2,
center=0.5,
radius=0.001, decay=5,
base=5, width=19000|
var in = \in.ar(0!2) + \in2.ar(0!2) + \in3.ar(0!2);
LPF.ar(
HPF.ar(
CombL.ar(in, 5,
SinOsc.kr(speed, [0, 0.2], radius, center),
decay, 0.3),
base),
width);
}).play)
(Ndef(\delay) <<>.in Ndef(\mic);
Ndef(\delay).lag(\center, 5);
Ndef(\delay).lag(\radius, 2);
Ndef(\delay).lag(\base, 3);
Ndef(\delay).lag(\width, 3);)
Ndef(\delay).set(\center, 1/4)
Ndef(\delay).set(\center, 0.2167)
Ndef(\delay).set(\radius, 0.001)
Ndef(\delay).set(\speed, 60.5)
Ndef(\delay).set(\base, 3000)
Ndef(\delay).set(\width, 5000)
Ndef(\delay).set(\decay, 10)
// RECORDER
(~bufWr = {
var start = 0, end = 12, length = end - start;
var env = EnvGen.kr(Env.perc(0, length), doneAction: 2);
var phasor = Phasor.ar(0, 1,
start * SampleRate.ir, end * SampleRate.ir);
BufWr.ar(Ndef.ar(\delay), ~buf, phasor);
Silence.ar;
}.play)
the quick brown fox jumps over the lazy dog
the
quick
brown
fox
jumps
~buf.plot;
// CORE CLOCK
(Ndef(\phasor, {|len=64, rate=1|
Phasor.ar(0, SampleRate.ir.reciprocal * rate, 0, len);
}))
(Ndef(\phasor).lag(\rate, 20);
Ndef(\phasor).lag(\len, 8);)
Ndef(\phasor).set(\rate, 0.000)
Ndef(\phasor).set(\len, 64)
// PLAYER
~id = \p1;
(Ndef(~id).fadeTime = 2;
Ndef(~id, { |mod=1, mod2=9001, offset=2, offset0=0 pre=3, post=0.3, speed=1
hp=20, lpbase=18000, lpenv=0, envpow=1|
var phasor, trigp, osc, trigo, env, lp;
phasor = Ndef.ar(\phasor) % mod + offset0 % mod2 * speed;
osc = BufRd.ar(4, ~buf, phasor + offset * 48000, 0, 1);
env = osc[0][3] ** envpow;
osc = osc[0][[0, 1]];
lp = (env * lpenv + lpbase).max(5).min(20000);
LPF.ar(HPF.ar(osc, hp), lp, pre).tanh * post;
}).play;
)
(Ndef(~id).lag(\mod, 0);
Ndef(~id).lag(\mod2, 0);
Ndef(~id).lag(\offset, 2);
Ndef(~id).lag(\offset, 2);
Ndef(~id).lag(\pre, 1);
Ndef(~id).lag(\post, 8);
Ndef(~id).lag(\speed, 5);)
~id = \p3;
Ndef(~id) <<>.offset Ndef(\mouse8);
Ndef(~id).set(\offset, 1.8)
~id = \p3;
Ndef(~id).set(\post,0.5);
Ndef(~id).set(\pre,20);
Ndef(~id).set(\hp,20, \lpbase,500, \lpenv,9000, \envpow,10);
Ndef(~id).set(\hp,4000, \lpbase,18000);
Ndef(~id).set(\mod,2)
Ndef(~id).set(\mod2,9999)
Ndef(~id).set(\offset,3.76)
~id = \p2
Ndef(~id).set(\speed,1)
// THREE...
(Ndef(\p1) <<>.offset Ndef(\mouse8);
Ndef(\p2) <<>.offset Ndef(\mouse8);
Ndef(\p3) <<>.offset Ndef(\mouse8);)
// TWO...
(Ndef(\p1).lag(\offset, 12);
Ndef(\p2).lag(\offset, 12);
Ndef(\p3).lag(\offset, 12);)
// ONE...
(Ndef(\p1).lag(\mod, 12);
Ndef(\p2).lag(\mod, 12);
Ndef(\p3).lag(\mod, 12);
Ndef(\p1).set(\mod, 1/60);
Ndef(\p2).set(\mod, 1/76);
Ndef(\p3).set(\mod, 1/107);)
// ZERO
(Ndef(\delay) <<>.in Ndef(\p1);
Ndef(\delay) <<>.in2 Ndef(\p2);
Ndef(\delay) <<>.in3 Ndef(\p3);)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment