You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.5 KiB
Plaintext
66 lines
1.5 KiB
Plaintext
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;
|
|
) |