//////////dictionnaire d’instruments
///// Vous pouvez ajouter de nouveaux instruments en mettant du code en-dessous, dans la syntaxe: /// SynthDef (“nomInstr”, { argumentsModifiables } /// son = code /// Out.ar(son) /// })
//synth muy important
SynthDef(sampler, { |out, bufnum, freq = 1, amp = 1, atk, decay, sustain, rel|
var sig, env; //env=EnvGen.kr(Env.adsr(atk, decay, sustain, rel, amp)); env= EnvGen.kr(Env.linen(atk,sustain, rel, amp), doneAction:2); sig = PlayBuf.ar(1, bufnum, rate: freq/1000, doneAction: 2) * env; Out.ar(out, sig ! 2)
}).add;
SynthDef(bell, { |out, accent = 0, amp = 0.1, decayScale = 1|
var exc = PinkNoise.ar(amp) * Decay2.kr(Impulse.kr(0), 0.01, 0.05), sig = Klank.ar(`[ { ExpRand(400, 1600) } ! 4, 1 ! 4, { ExpRand(0.1, 0.4) } ! 4 ], exc, freqscale: accent + 1, decayscale: decayScale); DetectSilence.ar(sig, doneAction: 2); Out.ar(out, sig ! 2)
}).add;
SynthDef(sax, { |out, freq, amp=0.1, gate=1|
var num = 16; var harms = Array.series(num, 1, 1) * Array.exprand(num, 0.995, 1.001); var snd = SinOsc.ar(freq * SinOsc.kr(Rand(2.0,5.0),0,Rand(0.001, 0.01),1) * harms, mul:Array.geom(num, 1, 0.63)); snd = Splay.ar(snd); snd = BBandPass.ar(snd, freq * XLine.kr(0.1,4,0.01), 2); snd = snd * amp * EnvGen.ar(Env.adsr(0.001, 0.2, 0.7, 0.2), gate, doneAction:2); Out.ar(out, snd!2);
}).add;
SynthDef(wobble, { arg out=0, amp=0.1, gate=1, pan=0, spread=0.8, freq, doneAction=2;
var sig, sig1, sig2, sig3; sig1 = LFSaw.ar(freq * 1 + (0.04 * [1,-1])); sig2 = LFSaw.ar(freq * 0.99 ); sig3 = LFSaw.ar(freq * 1 ); sig = sig1 + sig2 + sig3; sig = (sig*50).tanh; sig = sig * EnvGen.ar(\adsr.kr(Env.adsr(0.01,0.1,0.8,0.1)),gate,doneAction:doneAction); sig = Splay.ar(sig, spread, amp, pan); Out.ar(out, sig);
}).add;
SynthDef(fatsaw,
{ arg freq=440, amp=0.3, fat=0.0033, ffreq=2000, atk=0.001, dec=0.3, sus=0.5, rls=0.1,gate=1; var f1,f2,f3,f4,synth; f1=freq-(freq*fat); f2=freq-(freq*fat/2); f3=freq+(freq*fat/2); f4=freq+(freq*fat); synth = LFSaw.ar([f1,f2,f3,f4],[0,0.001,0.002,0.004,0.008]); synth = synth * EnvGen.kr(Env([0,1,sus,0],[atk,dec,rls],'lin',2),gate,doneAction:0); synth=Splay.ar(synth,0.7); synth=RLPF.ar(synth,ffreq*Linen.kr(gate,0.1,0.4,0.2,0),0.4); Out.ar([0,1],synth*amp);
},[0.1,0.3,4,2]).add;
SynthDef(“plucking”, {arg amp = 0.1, freq = 440, decay = 5, coef = 0.1;
var env, snd; env = EnvGen.kr(Env.linen(0, decay, 0), doneAction: 2); snd = Pluck.ar(
in: WhiteNoise.ar(amp), trig: Impulse.kr(0), maxdelaytime: 0.1, delaytime: freq.reciprocal, decaytime: decay, coef: coef); Out.ar(0, [snd, snd]);
}).add;
///////// Lignes de fin pour mettre le bouzin en route
s.boot;
m=NetAddr(“127.0.0.1”, 3333); m.sendMsg(“/portSC”, NetAddr.langPort);
OSCFunc.newMatching(
{ |message, time, addr, responder| message[1].asString.interpret }, "/SC", n
); Scale.major.semitones.asArray;