From 96a3f2621a619d891b7f014cf9667c72d013bd09 Mon Sep 17 00:00:00 2001 From: Leo Coogan Date: Thu, 19 Jun 2025 17:11:15 -0400 Subject: [PATCH] update --- design/electricity.scd | 14 +++++++++++++ harsh_light_slows_sight.scd | 40 +++++++++++++++++++++++++++++++------ 2 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 design/electricity.scd diff --git a/design/electricity.scd b/design/electricity.scd new file mode 100644 index 0000000..8abc057 --- /dev/null +++ b/design/electricity.scd @@ -0,0 +1,14 @@ +// Elecricity +/* +If you want more of that zap, consider: + + Amplitude bursts (Decay2, Env.perc) + + Bandpass-filtered noise for crackle + + Randomly gated high-frequency FM + + Slew limiting + distortion to simulate arcs +*/ + +Ndef(\f3,{WeaklyNonlinear.ar(SinOsc.ar(70), Impulse.kr(20), ratex:0.1, ratey:20, freq:440, initx:10 + SinOsc.kr(40), inity:20 + SinOsc.kr(20), alpha:SinOsc.kr(1), xexponent:0, beta:0, yexponent:0).dup * 0.1}).play; \ No newline at end of file diff --git a/harsh_light_slows_sight.scd b/harsh_light_slows_sight.scd index 0276899..2360ba3 100644 --- a/harsh_light_slows_sight.scd +++ b/harsh_light_slows_sight.scd @@ -1,16 +1,42 @@ -Ndef(\f1,{SinOscFB.ar(freq:142, feedback:Saw.ar(20 * SinOsc.ar(20)) + SinOsc.ar(0.1)).dup * 0.1}).play; - ( +Ndef(\f1,{SinOscFB.ar(freq:142, feedback:Saw.ar(20 * SinOsc.ar(20)) + SinOsc.ar(0.1)).dup * 0.1}).add; + + Ndef(\f2,{ var freq = MouseX.kr(100, 400); var input = SinOsc.ar(freq, 0, 0.1); var response = WeaklyNonlinear.ar(input); var filt = RLPF.ar(response, XLine.kr(500, 5000, 10), 0.3); Pan2.ar(0.1 * filt, 0); -}).play; -) +}).add; -Ndef(\f3,{WeaklyNonlinear.ar(SinOsc.ar(70), Impulse.kr(20), ratex:0.1, ratey:20, freq:440, initx:10 + SinOsc.kr(40), inity:20 + SinOsc.kr(20), alpha:SinOsc.kr(1), xexponent:0, beta:0, yexponent:0).dup * 0.1}).play; + +Ndef(\f3,{WeaklyNonlinear.ar(SinOsc.ar(70), Impulse.kr(20), ratex:0.1, ratey:20, freq:440, initx:10 + SinOsc.kr(40), inity:20 + SinOsc.kr(20), alpha:SinOsc.kr(1), xexponent:0, beta:0, yexponent:0).dup * 0.1}).add; + + +Ndef(\f4, { + var f1 = 197.9; + var f2 = 210.3; + var f3 = 239.7; + + // feedback amounts + var fbAmt = Line.kr(0, 1, 8); // can modulate later + // var fbAmt = 0; + + var x1, x2, x3; + var sig; + + // Indirect feedback cycle sorta + x1 = SinOscFB.ar(f1, SinOscFB.ar(f2, 1 * SinOsc.kr(10), mul:1 + SinOsc.kr(30))); + x2 = SinOscFB.ar(f2, x1); + x3 = SinOscFB.ar(f3, x2 * fbAmt); + + // Mix and protect ears + sig = Limiter.ar((x1 + x2 + x3).dup * 0.2); + sig = AllpassC.ar(sig, maxdelaytime:0.2 + SinOsc.kr(0.1), delaytime:0.8 + SinOsc.kr(0.1), decaytime:0.0, mul:1.0); +}).add; +) +) ( ClipTimeline('azzz').tracks = [ ( 'index': 0, 'recordArmed': false, 'recordBus': 0, 'muted': false ), ( 'index': 1, 'recordArmed': false, 'recordBus': 0, 'muted': false ), ( 'index': 2, 'recordArmed': false, 'recordBus': 0, 'muted': false ), ( 'index': 3, 'recordArmed': false, 'recordBus': 0, 'muted': false ) ]; @@ -20,7 +46,9 @@ ClipTimeline('azzz').eventList = TimelineEventList.newFrom([ PlayerEvent((\absTime: 0.0, \dur: 4.0, \legato: 1, \midinote: 0.0, \playDur: 4.0, \receiver: PlayerWrapper(Ndef('f1')), \relDur: 4.0, \sustain: 4.0, \type: 'player', )), PlayerEvent((\absTime: 4.0, \dur: 4.0, \legato: 1, \midinote: 1.0, \playDur: 4.0, \receiver: PlayerWrapper(Ndef('f2')), \relDur: 4.0, \sustain: 4.0, \type: 'player', )), PlayerEvent((\absTime: 8.0, \dur: 4.0, \legato: 1, \midinote: 2.0, \playDur: 4.0, \receiver: PlayerWrapper(Ndef('f3')), \relDur: 4.0, \sustain: 4.0, \type: 'player', )), - (\absTime: 12.0, \dur: 0, \label: 'end', \playDur: 0, \relDur: 0, \type: 'end', ), + PlayerEvent((\absTime: 12.0, \dur: 4.0, \legato: 1, \midinote: 3.0, \playDur: 4.0, \receiver: PlayerWrapper(Ndef('f4')), \relDur: 4.0, \sustain: 4.0, \type: 'player', )), + + (\absTime: 16, \dur: 0, \label: 'end', \playDur: 0, \relDur: 0, \type: 'end', ), ]); }.value; );