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.
91 lines
1.5 KiB
Plaintext
91 lines
1.5 KiB
Plaintext
(
|
|
{
|
|
var freq = 220;
|
|
var trig = Impulse.kr(1); // re-pluck every second
|
|
var burst = SinOsc.ar(freq) * EnvGen.kr(Env.perc(0.001, 0.05), trig); // short sine burst
|
|
Pluck.ar(
|
|
burst,
|
|
trig,
|
|
0.2, // max delay time
|
|
1/freq, // delay time = 1 / frequency
|
|
3, // decay
|
|
0.5 // damping
|
|
) * 0.4;
|
|
}.play;
|
|
)
|
|
|
|
|
|
|
|
(
|
|
SynthDef(\envPluckSine, {
|
|
|out=0, freq=220, amp=0.4, sustain=1.5|
|
|
var trig, env, sig;
|
|
|
|
trig = Impulse.kr(1); // triggers every second
|
|
|
|
env = EnvGen.kr(Env.perc(0.001, sustain), trig);
|
|
|
|
sig = SinOsc.ar(freq) * env * amp;
|
|
|
|
Out.ar(out, sig.dup); // stereo
|
|
}).add;
|
|
)
|
|
|
|
|
|
|
|
(
|
|
SynthDef(\pluckedSine, {
|
|
|out=0, freq=220, amp=0.4, decay=3, coef=0.5|
|
|
var trig, burst, pluck;
|
|
|
|
trig = Impulse.kr(0); // trigger manually
|
|
|
|
burst = SinOsc.ar(freq) * EnvGen.kr(Env.perc(0.001, 0.05), trig);
|
|
|
|
pluck = Pluck.ar(
|
|
burst,
|
|
trig,
|
|
0.2, // max delay time
|
|
1 / freq, // delay time = 1 / freq
|
|
decay,
|
|
coef
|
|
);
|
|
|
|
Out.ar(out, pluck.dup * amp);
|
|
}).add;
|
|
)
|
|
|
|
|
|
|
|
(
|
|
~notes = Array.newClear(128);
|
|
|
|
MIDIdef.noteOn(\noteOnTest, {
|
|
arg vel, nn, chan, src;
|
|
[vel, nn].postln;
|
|
|
|
if (chan == 0, {
|
|
~notes[nn] = Synth.new(
|
|
\prophet5style,
|
|
[
|
|
\freq, nn.midicps,
|
|
\amp, vel.linexp(1,127,0.01,0.3),
|
|
// \gate, 1,
|
|
|
|
]
|
|
);
|
|
});
|
|
});
|
|
|
|
MIDIdef.noteOff(\noteOffTest, {
|
|
arg vel, nn, chan;
|
|
[vel, nn].postln;
|
|
|
|
if (chan == 0, {
|
|
~notes[nn].set(\gate, 0);
|
|
~notes[nn] = nil;
|
|
});
|
|
});
|
|
)
|
|
|