(
/*********************/
/*** SynthDef KICK ***/
SynthDef(\kick, { arg i_out, env_out, bps, amp, duck_width=1, duck_fadespeed=1;
var imp, attack, decay, env, duck_env, kick;
// rhythmische Hüllkurve aus Impulsen
imp = Impulse.kr(bps/2) + Impulse.kr(bps/4,0.25);
// Verändern der Impuls-Form für den Sound
attack = 0.2;
decay = 0.8;
env = Decay2.kr(imp, attack/bps, decay/bps);
// Verändern der Impuls-Form für das Sideshaining Signal, u.a. Umkehrung des Signals durch "1 - Signal"
duck_env = 1 - (duck_fadespeed * Decay2.kr(imp, (attack/bps)*duck_width, (decay/bps)*duck_width));
// Perkussiver Sound durch dynamisch gefilterten Mix aus SinOSC und BrownNoise
kick = Pan2.ar(LPF.ar(HPF.ar(BrownNoise.ar(env)*SinOsc.ar(140),50),EnvGen.kr(Env.new([0,0,1000,5000,0],[4,16,4,10]),doneAction:0)));
// Ausgabe des Sounds
Out.ar(i_out,[kick,kick]*amp);
// Parallele Ausgabe des Sidechaining Signals auf separatem Kanal
Out.kr(env_out,duck_env);
}).store;
/*********************/
/*********************/
/*** SynthDef WAVE ***/
SynthDef(\wave, { arg i_out, env_in, freq, amp;
var duck_env, wave;
// Greife das Sidechaining-Signal auf...
duck_env = In.kr(env_in,1);
// ...und benutze es als Lautstärke-Kurve.
wave = LFSaw.ar([freq,freq*1.5,freq/2,freq/3,freq/4],0,duck_env);
// Sound-Ausgabe
Out.ar(i_out,[wave,wave]*amp);
}).store;
/*********************/
/**********************/
/*** SynthDef WAVE2 ***/
SynthDef(\wave2, { arg i_out, env_in, freq, amp;
var duck_env, wave;
// Greife auch hier das Sidechaining-Signal auf...
duck_env = In.kr(env_in,1);
// ...und benutze es für Variationen in Lautstärke und Frequenz.
wave = SinOsc.ar([freq,freq*2,freq*4,freq/2]*(duck_env+0.5),0,1-(duck_env+0.5));
// Sound-Ausgabe
Out.ar(i_out,[wave,wave]*amp);
}).store;
/**********************/
a = Pbind(
\instrument, Pseq([\kick],1),
\i_out, 0, // (Kanal für die Soundausgabe)
\env_out, 1, // Kanal für die Ausgabe des Sidechaining-Signals
\bps, 2,
\amp, 2.6,
\duck_width, 2.2,
\duck_fadespeed, 2
);
b = Pbind(
\instrument, Pseq([\wave],1),
\i_out, 0, // (Kanal für die Soundausgabe)
\env_in, 1, // Kanal für die Eingabe des Sidechaining-Signals
\freq, 220,
\amp, 0.03
);
c = Pbind(
\instrument, Pseq([\wave2],1),
\i_out, 0, // (Kanal für die Soundausgabe)
\env_in, 1, // Kanal für die Eingabe des Sidechaining-Signals
\freq, 55,
\amp, 0.2
);
a.play;
b.play;
c.play;
)
Programm 2, Loop mit Delay-Sound und Beat:
(
SynthDef(\delayedImpulse, { arg i_out, amp=1, freq=440, bps=2;
var shape, env, sound, delay1, delay2, delay3;
shape = Decay2.kr(Impulse.kr(bps/2),0.2/bps,0.6/bps,1+(bps/3));
env = shape * EnvGen.kr(Env.new([0, 1, 1, 0],[0, 2/bps, 0]), doneAction:2);
sound = LPF.ar(Pan2.ar(LFSaw.ar(freq,0,env),0.0),freq*2);
delay1 = DelayL.ar(sound,1/bps,0.52/bps,0.35);
delay2 = DelayL.ar(sound,1/bps,0.79/bps,0.3);
delay3 = DelayL.ar(sound,1/bps,1.08/bps,0.25);
Out.ar(i_out,[sound+delay2,sound+delay1+delay3]*amp);
}).store;
SynthDef(\pulsingPlane, { arg i_out, amp=1, freq=440, bps=2, panstart=0.0;
var shape, sound;
shape = Decay2.kr(Impulse.kr(bps,0.5),1/bps,2/bps,1+(bps/3),0.2);
sound = Pan2.ar(LPF.ar(LFSaw.ar(freq,0,shape),freq*20),SinOsc.kr(bps/16,panstart*2*pi));
Out.ar(i_out,sound*amp);
}).store;
SynthDef(\snare, { arg i_out, amp=1, bps=2;
var shape, sound;
shape = Decay2.kr(Impulse.kr(bps,0.5),0.01,0.1,1.5);
sound = Pan2.ar(WhiteNoise.ar(shape));
Out.ar(i_out,sound*amp);
}).store;
SynthDef(\hihat, { arg i_out, amp=1, bps=2;
var shape, sound;
shape = Decay2.kr(Impulse.kr(bps,0),0.02,0.05,4) * EnvGen.kr(Env.new([0, 1, 1, 0],[0, 1/bps, 0]), doneAction:2);
sound = Pan2.ar(PinkNoise.ar(shape));
Out.ar(i_out,sound*amp);
}).store;
SynthDef(\bassdrum, { arg i_out, amp=1, bps=2;
var shape, sound;
shape = Decay2.kr(Impulse.kr(bps,0),0,0.4,4) * EnvGen.kr(Env.new([0, 0.6, 0.2, 0],[0, 1/bps, 0]), doneAction:2);
sound = Pan2.ar(LPF.ar(HPF.ar(BrownNoise.ar(shape)*SinOsc.ar(140),60),300));
Out.ar(i_out,sound*amp);
}).store;
a = Pbind(
\instrument, \delayedImpulse,
\midinote, Pseq([
48, 60, 67, 65, 64, 60, 64, 55,
60, 45, 52, 52, 48, 48, 48, 43
], inf),
\bps, 2,
\dur, 0.5,
\amp, 1.5
);
b = Pbind(
\instrument, \pulsingPlane,
\midinote, Pseq([48, 60, 65, 64, 36], 1),
\bps, 1,
\dur, 8,
\amp, Pseq([0.1, 0.07, 0.07, 0.07, 0.2], 1),
\panstart, 1.0
);
c = Pbind(
\instrument, \snare,
\bps, 1,
\dur, inf,
\amp, 1
);
d = Pbind(
\instrument, \hihat,
\bps, 8,
\dur, 0.125,
\amp, Pseq([
1.0, 0, 0.9, 0, 0, 0.1, 0.8, 0.4,
1.2, 0.6, 0.6, 0, 0, 0.1, 0, 0.1
], inf)
);
e = Pbind(
\instrument, \bassdrum,
\bps, 4,
\dur, 0.25,
\amp, Pseq([
0.8, 0, 0, 0,
0, 1.0, 0, 0.7
], inf)
);
a.play;
b.play;
c.play;
d.play;
e.play;
)
Programm 1, Rhythmischer Akkord:
(
SynthDef(\minor7Chord, { arg freq=330, bpm=160, delay=4;
var hertz, notelength, chord, filter, env, env2;
hertz = bpm/60;
chord = (LFPulse.kr(hertz,iphase:0,width:0.4,mul:0.45) + LFPulse.kr(hertz,iphase:0.33,width:0.28,mul:0.4)) * Mix(Saw.ar(freq * [0.375,1,1.1875,1.5,1.78125]));
filter = LPF.ar(chord,freq*2);
env = EnvGen.ar(Env.new([0,1,0],[0.01,delay/hertz]), doneAction:2);
env2 = EnvGen.ar(Env.new([0,0.8,0],[0.3,0.8*delay/hertz]), doneAction:2);
Out.ar(0, [filter*env,filter*env2]);
};
).store;
Pdef(\variation,
Pbind(
\instrument, \minor7Chord,
\freq, Pseq([
220,110,165,220,
220,330,275,220,
220,330,495,220,
220,110,495,448
],inf),
\bpm, 140,
\delay, 4,
\dur, 176/140
)
);
Pdef(\variation).play;
)