diff --git a/aphex_twin_rhubarb_EF.scd b/eli_fieldsteel_examples/aphex_twin_rhubarb_EF.scd similarity index 62% rename from aphex_twin_rhubarb_EF.scd rename to eli_fieldsteel_examples/aphex_twin_rhubarb_EF.scd index 4e99d34..fdc7125 100644 --- a/aphex_twin_rhubarb_EF.scd +++ b/eli_fieldsteel_examples/aphex_twin_rhubarb_EF.scd @@ -6,26 +6,29 @@ s.waitForBoot({ SynthDef(\rhubarb, { var bn, pn, osc, sig, env, freq = \freq.ir(440); - bn = Crackle.ar(1!4); - bn = LPF.ar(bn, 10); // Low-pass filter to reduce high frequencies - bn = GlitchBPF.ar(bn, freq * {Rand(-0.1, 0.1).midiratio}.dup(4), \rq.ir(0.01), 24); - osc = LFSaw.ar(freq * {Rand(-0.1, 0.1).midiratio}.dup(4), {Rand(0.48, 0.52)}.dup(4)); + bn = Crackle.ar(1.99!4); // EMF: I find crackle is more interesting with a choas parameter closer to 2 + bn = LPF.ar(bn, 1000); // EMF: 10 is such a low cutoff frequency that you're essentially muting the crackle UGen. Raised to something higher + bn = GlitchBPF.ar(bn, freq * {Rand(-0.2, 0.2).midiratio}.dup(4), \rq.ir(0.01), 24); + osc = LFSaw.ar(freq * {Rand(-0.2, 0.2).midiratio}.dup(4), {Rand(0.48, 0.52)}.dup(4)); osc = LPF.ar(osc, (freq * 2).clip(20, 20000)); osc = osc * LFDNoise3.kr(0.1!4).exprange(1.1, 1.5); - osc = Fold.ar(osc, -20, 20); - osc = LPF.ar(osc, 600).tanh(20) * 0.12; - env = Env.asr(\atk.kr(0.35), \dec.kr(3), \sus.kr(1), \rel.kr(2), \crv.ir(-2)).ar(2, \gate.kr(1)); - sig = bn + osc + PinkNoise.ar(0.015!4 * LFDNoise3.kr(1).exprange(0.35, 1)); + osc = Fold.ar(osc, -20, 20); // EMF: wavefolding only happens if the input signal amplitude exceeds the bounds provided. osc has a pretty normal range and won't ever exceed ±20. You can see in the previous line (LFDNoise3) I'm only amplifying it by a maximum factor of 1.5. It's actually small boundary values with Fold that cause audible results (change to the folding min/max to -0.1, +0.1 and you'll notice the sound changes significantly) + osc = LPF.ar(osc, 400).tanh(20) * 0.12; + env = Env.asr(\atk.kr(0.35), \sus.kr(1), \rel.kr(2), \crv.ir(-2)).ar(2, \gate.kr(1)); + + // EMF: Passed pink noise through lowpass filter before mixing to better mirror spectral profile of original track + sig = bn + osc + LPF.ar(PinkNoise.ar(0.015!4 * LFDNoise3.kr(1).exprange(0.35, 1)), 3000); sig = sig * LFDNoise3.kr(0.1!4).exprange(1.1, 1.2); - sig = Splay.ar(sig, spread:10); + sig = Splay.ar(sig, spread: 10); // EMF: spread caps out at 1, larger values don't do anything extra sig = sig.tanh * \amp.ir(0.25); /*sig = sig + BPF.ar(sig, 400, 0.3, 1, 0); sig = sig + GlitchBPF.ar(sig, 400, 1, 1, 0) * 0.1;*/ - sig = sig + CombL.ar(sig, maxdelaytime:0.2, delaytime:0.2, decaytime: 1.0) * 0.4; + // EMF: reduced Comb mul parameter to less than 1, the delay felt too prominent + sig = sig + CombL.ar(sig, maxdelaytime:0.2, delaytime:0.2, decaytime: 1.0, mul: 0.3) * 0.4; - sig = sig * env; + sig = sig * env * 4; // EMF upscaled output gain to a healthier level Out.ar(\out.ir(0), sig); }).add; @@ -56,7 +59,7 @@ s.waitForBoot({ [ 57, 61, 64 ], [ 52, 56, 59 ], Prand([[ 33, 50, 54, 57], [ 50, 54, 57 ]], 1), - ], inf), + ], inf) - 0.1, \amp, 1, \atk, Pwhite(0.2, 0.5), \rel, Pexprand(1.2, 2.5), diff --git a/eli_fieldsteel_examples/autechre_tri_repetae_revision.scd b/eli_fieldsteel_examples/autechre_tri_repetae_revision.scd new file mode 100644 index 0000000..d648f38 --- /dev/null +++ b/eli_fieldsteel_examples/autechre_tri_repetae_revision.scd @@ -0,0 +1,28 @@ +( +{ + var sig, freq; + freq = LFNoise2.kr(4).exprange(10, 20); + sig = LFSaw.ar(freq!2); + sig = LPF.ar(sig, 1000); + sig = sig * 0.2; +}.play +) + + +// EMF: newer version +( +{ + var sig, freq; + + // EMF: using LFSaw instead of noise generator to control frequency, better imitation of the original + freq = LFSaw.kr(0.35.neg).range(0.5, 27).lincurve(0.5, 27, 0.5, 27, -4); + sig = LFSaw.ar(freq ! 2); + + // EMF: experimenting with lowpass/highpass parallel sum. very rough approximation of what i hear, needs tweaking + sig = [ + LPF.ar(sig, VarSaw.kr(0.35, 0.5, width: 0.02).exprange(200, 10000).lag(0.05), 0.2), + HPF.ar(sig, VarSaw.kr(0.35, 0.5, width: 0.02).exprange(20, 3000).lag(0.05)); + ].sum; + sig = sig * 0.2; +}.play +) \ No newline at end of file