diff --git a/even_harmonics.scd b/even_harmonics.scd new file mode 100644 index 0000000..b7b9eca --- /dev/null +++ b/even_harmonics.scd @@ -0,0 +1,29 @@ +( +SynthDef(\evenHarms, { + arg freq = 30, phaseRate = 1, phaseDepth = 100, cutoffBase = 800, cutoffModFreq = 50, amp = 0.5, atk = 0.01, rel = 1; + var sig, phaseMod, env, cutoff; + + sig = Mix.fill(10, { |i| + var harmonicNum = 2 * (i + 1); + phaseMod = SinOsc.kr(phaseRate + i * 0.1).range(0, phaseDepth); + SinOsc.ar(freq * harmonicNum, phaseMod, 1 / (i + 1)) + }); + + cutoff = cutoffBase + SinOsc.kr(cutoffModFreq).range(-400, 400); + sig = LPF.ar(sig, cutoff); + + env = EnvGen.kr(Env.perc(atk, rel), doneAction: 2); + Out.ar(0, sig.dup * env * amp); +}).add; +) + + +( +t = TempoClock.new(180/60); + +Pbind(\instrument, \evenHarms, + \freq, Pseq([190, 201, 188, 160, 80], inf), + // \dur, Pwhite(0.2, 2), + // \dur, 1 +).play(t); +) \ No newline at end of file diff --git a/mark_fell_kinda.scd b/mark_fell_kinda.scd index c56a97d..232cb7d 100644 --- a/mark_fell_kinda.scd +++ b/mark_fell_kinda.scd @@ -1,3 +1,5 @@ +s.boot + // A SynthDef without samples, using oscillators and generative modulation ( SynthDef(\fellGenerative, { |out = 0, amp = 0.3, dur = 1, freq = 440| @@ -25,7 +27,7 @@ SynthDef(\fellGenerative, { |out = 0, amp = 0.3, dur = 1, freq = 440| sig = sig * env * amp; // Apply amplitude envelope // Output the sound with pan control - Out.ar(out, Pan2.ar(sqig, pan)); + Out.ar(out, Pan2.ar(sig, pan)); }).add; ) diff --git a/shoegaze_guitar.scd b/shoegaze_guitar.scd new file mode 100644 index 0000000..2ccbd21 --- /dev/null +++ b/shoegaze_guitar.scd @@ -0,0 +1,66 @@ +s.boot; + +( +SynthDef(\guitar, { + arg freq; // A2 + var env; + var trig = Impulse.kr(); + + // Simulated pick attack — short noise burst + var pickEnv = Decay2.kr(trig, 0.001, 0.03); + var pickNoise = WhiteNoise.ar(0.4) * pickEnv; + + // Plucked string body + var string = Pluck.ar( + WhiteNoise.ar(0.5), + trig, + delaytime: 1/freq, + maxdelaytime: 0.1, + decaytime: 4, + coef: 0.4 + ); + + // Mix pick noise and string + var signal = string + pickNoise; + + // Optional: low-pass to tame brightness (like tone knob or cab sim) + signal = LPF.ar(signal, 8000); + + env = EnvGen.kr(Env.perc(attackTime: 0.1, releaseTime: 0.2, level: 1, curve: -4), doneAction:2); + + // Mono signal + Out.ar(0, signal * env); +}).play; +) + + + + +( +~clock = TempoClock.new(90/60); + +Pbind( + \instrument, \guitar, + // \freq, Pseq([[60, 63], [50, 59, 67], [48, 54, 60] ], inf).midicps, + \freq, Pseq([60], inf).midicps, + \dur, Pseq([ + 0.05, 0.03, 0.03, // strum delays for chord 1 + 0.5, 0.5, // rest for "&" + 0.05, 0.03, 0.03, // chord 2 strum + 0.05, 0.03, 0.03, // chord 2 "&" strum + // continue for whole pattern +], inf)).play(~clock); +) + +( +Pbind( + \instrument, \guitar, + \freq, Pseq([[60, 63], [50, 59, 67], [48, 54, 60] ], inf).midicps, + \dur, Pseq([ + 0.05, 0.03, 0.03, // strum delays for chord 1 + 0.5, 0.5, // rest for "&" + 0.05, 0.03, 0.03, // chord 2 strum + 0.05, 0.03, 0.03, // chord 2 "&" strum + // continue for whole pattern + ], inf)).play; +) \ No newline at end of file