(
s = Server.local;
s.boot;
p = ProxySpace.push(s);
)
currentEnvironment.clear;
ProxySpace.pop; // restauration de l'environnement originel
// Stethoscope(s);
//MODULATION
(
~modulation = {|freq = 1, amp = 1|
LFSaw.kr(freq, mul: amp.midicps).abs * 2 - 1 }; //modulation de freq;
)
(
SynthDef(\sinInstr, { |freq, modFreq |
Out.ar(0,
LFSaw.ar(freq + modFreq).abs * 2 - 1
* EnvGen.kr(Env([0, 1 , 0.3, 0.1, 0], [0.001, 0.2, 0.2, 0.2] ), doneAction: 2)
.dup
)
}).send(s);
)
(
~out = Pbind(
\dur, 0.5,
\instrument, \sinInstr,
\freq, Prand(([0, 3, 5, 7, 10]+48).midicps, inf),
\modFreq, ~modulation
)
)
~modulation.set(\amp, 0, \freq, 5.43)
=======================================================
//PULSEWIDTH MODULATION
(
~pwModulation = {|freq = 1, amp = 1, add = 0.5|
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
SynthDef(\pwInstr, { |pulsefreq = 440, pwWidth=0.5, mul = 1 |
Out.ar(0,
Pulse.ar(pulsefreq , pwWidth, mul)
* EnvGen.kr(Env([0, 1 , 0.3, 0.1, 0], [0.001, 0.1, 0.2, 0.2] ), doneAction: 2)
.dup
)
}).store;
)
(
~out = Pbind(
\dur, 0.2,
\instrument, \pwInstr,
\pulsefreq, Prand(([0, 3, 5, 7, 10]+ 32).midicps, inf),
\pwWidth, ~pwModulation
)
)
~pwModulation.set(\amp,0.4, \freq, 1)
=======================================================
// FILTRE MULTIMODE
(
~pwModulation = {|freq = 1, amp = 1, add = 0.5|
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
~filterModulation = {|freq = 1, amp = 1|
LFSaw.kr(freq, amp.midicps).abs * 2 - 1
}; //modulation de freq;
)
(
SynthDef(\pwInstr, { |i_out = 0, pulsefreq = 440, pwWidth=0.5, mul = 1 |
Out.ar(i_out,
Pulse.ar([pulsefreq, pulsefreq * LFNoise2.kr(0.3, 0.02 ).midiratio] , pwWidth, mul)
* EnvGen.kr(Env([0, 1 , 0.3, 0.1, 0], [0.001, 0.02, 0.2, 0.1] ), doneAction: 2)
)
}).store;
)
(
~osc = Pbind(
\dur, 0.2,
\instrument, \pwInstr,
\pulsefreq, Prand(([0, 3, 5, 7, 10]+ 32).midicps, inf),
\pwWidth, ~pwModulation
)
)
~osc.stop
~pwModulation.set(\amp,0.4, \freq, 1);
(
~multiFilter = { | hp=50, band=10000, rq = 2, lp=500, witch = 0, filterMod = 0|
LPF.ar(
HPF.ar(
Select.ar(witch, [BPF.ar(~osc.ar, band * filterMod.midiratio , rq) , BRF.ar(~osc.ar, band * filterMod.midiratio, rq)])
,hp)
,lp)
}
)
~multiFilter.play;
~multiFilter.set(\hp, 20, \lp, 10000, \band, 1000, \rq, 0.3, \witch, 0)
~multiFilter.map(\filterMod, ~filterModulation);
~filterModulation.set(\amp, 12, \freq, 1);
=======================================================
//MODULATION DE FILTRE
(
~pwModulation = {|freq = 1, amp = 1, add = 0.5|
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
SynthDef(\pwInstr, { |i_out = 0, pulsefreq = 440, pwWidth=0.5, mul = 1 |
Out.ar(i_out,
Pulse.ar([pulsefreq, pulsefreq * LFNoise2.kr(0.3, 0.02 ).midiratio] , pwWidth, mul)
* EnvGen.kr(Env([0, 1 , 0.3, 0.1, 0], [0.001, 0.5, 0.5, 1] ), doneAction: 2)
)
}).store;
)
(
~osc = Pbind(
\dur, 3,
\instrument, \pwInstr,
\pulsefreq, Prand(([0, 3, 5, 7, 10]+ 60).midicps, inf),
\pwWidth, ~pwModulation
)
)
~pwModulation.set(\amp,0.4, \freq, 2);
(
~bpFilter = { | lp=10000, filterMod = 0|
BRF.ar( //élimine la résonance.
RLPF.ar(RLPF.ar(RLPF.ar(
~osc.ar, lp * filterMod ), lp * filterMod) , lp * filterMod
), lp * filterMod
)
}
)
(
~filterModulation = {|freq = 1, amp = 1|
LFSaw.kr(freq, amp).abs
}; //modulation de freq;
)
~bpFilter.play;
~bpFilter.set(\lp, 6000 );
~bpFilter.map(\filterMod, ~filterModulation);
~filterModulation.set(\freq, 8);
=======================================================
// MODULATION DE FILTRE 2
p.clock = TempoClock.default;
p.clock.tempo = 2.0;
p.clock.tempo = 1.0;
(
~pwModulation = {|freq = 1, amp = 1|
LFSaw.kr(freq, amp).abs
}; //modulation de freq;
)
(
SynthDef(\pwInstr, { |i_out = 0, pulsefreq = 440, pwWidth=0.5, mul = 1 |
Out.ar(i_out,
Pulse.ar([pulsefreq, pulsefreq * LFNoise2.kr(0.3, 0.02 ).midiratio] , pwWidth, mul)
* EnvGen.kr(Env([0, 1 , 0.3, 0.1, 0], [0.001, 0.5, 0.5, 1] ), doneAction: 2)
)
}).store;
)
(
~osc = Pbind(
\dur, 1,
\instrument, \pwInstr,
\pulsefreq, Prand(([0, 3, 5, 7, 10]+ 60).midicps, inf),
\pwWidth, ~pwModulation
)
)
~pwModulation.set(\amp,0.5, \freq, p.clock.tempo * 4);
(
~bpFilter = { | lp=10000, filterMod = 0, mix = 0|
var f, internLP;
internLP = lp * filterMod * (1 - mix + (~osc.ar * mix.abs) );
f = {|in, iter = 0|
iter = iter - 1;
if (iter >= 0)
{in = f.(in, iter )}; LPF.ar(in, internLP)
};
BRF.ar( //élimine la résonance.
f.(~osc.ar, 1)
, internLP
)
}
)
(
~filterModulation = {|freq = 1, amp = 1|
LFSaw.kr(freq, amp).abs
}; //modulation de freq;
)
~bpFilter.play;
~bpFilter.set(\lp, 10000, \mix, 0.2);
~bpFilter.map(\filterMod, ~filterModulation);
~filterModulation.set(\freq, p.clock.tempo * 4);
=====================================================
//BRUIT FILTRANT + MODULATION D'AMPLITUDE
(
~noiseShaper = { | freq = 60, rq = 1.0, mul = 1 |
var f, noise;
noise = WhiteNoise.ar(100);
f = {|in, iter = 0, freqMul = 1|
iter = iter - 1;
if (iter >= 0)
{in = f.(in, iter )}; BPF.ar(in, freq, rq)
};
[f.(noise, 3), f.(noise, 3, 3), f.(noise, 3, 5)]
}
)
(
SynthDef(\AMedSine, { |i_out = 0, rq = 1, freq = 440, amAmount = 0, mul = 1, harms = #[1,2] | //bpfFreq =440
var f, noise, noiseArray;
noise = BrownNoise.ar(100);
f = {|in, iter = 0, freqMul = 1|
iter = iter - 1;
if (iter >= 0)
{in = f.(in, iter, freqMul )}; BPF.ar(in, freq * freqMul.postln, rq)
};
//harms = [1, 2, 5, 7];
noiseArray = harms.collect({|item, i| f.(noise, 4, item) }) ;
Out.ar(i_out,
Mix.ar(SinOsc.ar(freq+LFNoise2.kr(1, 1.midiratio) , 0, mul * (1 - amAmount + (noiseArray * amAmount)) /noiseArray.size ) ).dup
* EnvGen.kr(Env([0, 1 , 0.2, 0.1, 0], [0.001, 0.2, 0.2, 0.1] ), doneAction: 2)
)
}).store;
)
(
~osc = Pbind(
\dur, 0.1,
\instrument, \AMedSine,
\freq, Prand(([0, 3, 5, 7, 10]+ 60).midicps, inf),
\rq, 0.1,
\harms, Pfunc({ Array.fill(7, {rrand(1, 6.0)}) }),
\amAmount, 0.3 ,
\mul, Pfunc({rrand(0.002, 0.1)})
)
)
~osc.play
=====================================================
//OSCILLATEUR FORMANTIQUE PAS CHER
(
b = v = nil; n = 16;
n.do({|it, i|
v = v.add(Array.fill(512, { sum3rand(1.0) } ));
b = b.add(Buffer.alloc(s, 512));
b[i].loadCollection(v[i]) ;
})
)
(
e = Env([0, 1 , 0.4, 0.1, 0], [0.4, 0.6, 0.4, 2] );
SynthDef(\formantOsc, { |i_out = 0, freq, bufnum = 0, start = 0, lp = 10000, hp = 20, rq = 2.0, mul = 0.5 |
var refFreq = 200, sig, env;
sig = BufRd.ar(1, bufnum, Phasor.ar(Impulse.ar([freq, freq + LFNoise2.kr(1, 0.2).midiratio] ), refFreq / (SampleRate.ir/ BufFrames.kr(bufnum)), start: start, end: BufFrames.kr(bufnum) * (refFreq/ freq)));
env = EnvGen.kr(e, doneAction: 2) * mul;
Out.ar(i_out,
HPF.ar(RLPF.ar(sig, env * 1000 + lp, rq ) , hp )
* env
)
}).store;
SynthDef(\oscSlv, { |i_out = 0, freq, mul = 0.5 |
Out.ar(i_out,
SinOsc.ar([freq, freq + LFNoise2.kr(1, 0.2).midiratio], mul: mul )
* EnvGen.kr(e, doneAction: 2)
)
}).store;
)
(
x = PatternProxy.basicNew;
x.source = Pseq(([[0, 3, 5], [7, 10, 12]]+ 60).midicps, inf);
d = PatternProxy.basicNew;
d.source = Pseq([4, 2, 2], inf);
)
(
~formant = Pbind(
\dur, d,
\instrument, \formantOsc,
\freq, x ,
\bufnum, Pfunc({(n - 1).rand })
//,\start, Pfunc({100.rand }),
, \lp, 200
,\rq , 0.3,
\mul, 0.5
);
~sin = Pbind(
\dur, d,
\instrument,\oscSlv,
\freq, x,
\mul, 0
);
)
(
~formant.play;
~sin.play;
)
==================================================
//PLUS D'OSCILLATEURS DANS UNE VOIX
//(AJOUT D'UNE SUBOCTAVE)
(
~osc1 = {|freq = 329, amp = 0.5, gt = 1|
Pulse.ar(Lag2.kr(freq, MouseX.kr(0.0001, 0.1)), LFNoise2.kr(8, 0.2, 0.6), mul: amp)
* EnvGen.kr(Env.perc, gate: gt).dup
};
)
(
~oscSlave1 = {|freq = 329, amp = 0.5, gt = 1|
Saw.ar([freq, freq * LFNoise2.kr(0.4, 0.3).midiratio], mul: amp)
* EnvGen.kr(Env.perc, gate: gt) };
)
(
f = Pxrand([0, 3, 12, 10], inf);f = f.asStream;
r = Prand([1]/4, inf); r = r.asStream; //rythme
t = 130;t = t/60; //tempo
Routine({
inf.do({ var freq, delta;freq = f.next; delta = r.next/t;
[~osc1, ~oscSlave1].do({|item, i|
var freqMul;
freqMul = #[0.5, 1];
item.set(\freq, (freq+ 48).midicps * freqMul[i] , \gt , 1, \amp, rrand(0.2, 0.8));
0.01.wait;
item.set(\gt, 0.0)
});
delta.wait;
})
}).play;
//~osc1.play;~oscSlave1.play;
)
(
~fx = {
var z;
z = ~osc1.ar+ ~oscSlave1.ar;
Resonz.ar(z, MouseY.kr(30, 2000));
};
)
(//modulation du filtre par la subOctave
~fx = {
BPF.ar( ~osc1.ar + ~oscSlave1.ar, ~oscSlave1.ar.abs * MouseY.kr(50, 10000) );
};
)
~fx.play;
=======================================
//option2 avec deux LFO contrôlés par ~osc1 (pulse)
(
~osc1 = {|freq = 329, amp = 0.5, gt = 1, pw = 0.5|
LFPulse.ar(Lag2.kr(freq, MouseX.kr(0.0001, 0.1)), 0, pw , mul: amp) //width: LFNoise2.kr(8, 0.2, 0.6)
* EnvGen.kr(Env.perc, gate: gt).dup
};
)
(
~pwModulation = {|freq = 1, amp = 1, add = 0.5|
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
~oscSlave1 = {|freq = 329, amp = 0.5, gt = 1|
Saw.ar([freq, freq * LFNoise2.kr(0.4, 0.3).midiratio],pi, mul: amp)
* EnvGen.kr(Env.perc, gate: gt) };
)
(
~lfos = {|freq, freq1, freq2, amp = 1, mul2 = 100|
var l1, l2;
l1 = SinOsc.ar(freq * freq1 , mul: amp * ~osc1.ar);
l2 = SinOsc.ar(freq * freq2 , mul: amp * ~osc1.ar.neg );
l1+l2 *mul2
};
)
(
~res = { |rq = 1|
var l1, l2;
l1 = ~osc1.ar + rq;
l2 = ~osc1.ar.neg + rq ;
l1+l2
};
)
(
u.stop;
f = Pxrand([0, 3, 12, Pwrand([10,Pshuf([-2,0,3,5,6,7]+12)], [0.95, 0.05])], inf);f = f.asStream;
r = Prand([1]/4, inf); r = r.asStream; //rythme
t = 130; t = t/60; //tempo
u = Routine({
inf.do({ var freq, fond = 24, delta;
freq = f.next; delta = r.next/t;
freq = freq + fond;
[~osc1, ~oscSlave1].do({|item, i|
var freqMul;
freqMul = #[0.5, 1];
item.set(\freq, (freq+ fond).midicps * freqMul[i] , \gt , 1, \amp, rrand(0.1, 1));
0.01.wait;
item.set(\gt, 0.0)
});
~lfos.set(\freq, freq.midicps / 4);
delta.wait;
})
});
u.play;
//~osc1.play;~oscSlave1.play;
)
~lfos.set( \amp, 1, \mul2, 1000, \freq1, 0.132, \freq2, 0.375);
~res.set(\rq, 0.4);
~osc1.map(\pw, ~pwModulation);
~pwModulation.set(\freq, 1);
(//mod of filter by subOctave
~fx = {
var func;
func = {|in, iter = 0|
iter = iter - 1;
if (iter >= 0)
{in = func.(in, iter )};
RLPF.ar(in, MouseY.kr(500, 10000) + ~lfos.ar.abs , ~res.ar) * 0.5
};
func.( ~osc1.ar + ~oscSlave1.ar, 2 ) ;
};
)
~fx.play;
=======================================
//option3 ~osc1 (pulse)& slave sont pulse pw
(
~osc1 = {|freq = 329, amp = 0.5, gt = 1, pw = 0.5, detune = 0.1, glide = 0.01|
LFPulse.ar(Lag2.kr([freq, freq * LFNoise2.kr(0.6, detune).midiratio], glide ),0, pw , mul: amp) //width: LFNoise2.kr(8, 0.2, 0.6)
* EnvGen.kr(Env.perc, gate: gt)
};
)
(
~pwModulation1 = {|freq = 1, amp = 1, add = 0.5|
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
~pwModulation2 = {|freq = 1, amp = 1, add = 0.5|
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
~oscSlave1 = {|freq = 329, amp = 0.5, pw = 0.5, gt = 1 , detune = 0.1, glide = 0.01|
LFPulse.ar(Lag2.kr([freq, freq * LFNoise2.kr(1, detune).midiratio], glide ), pi, pw, mul: amp)
* EnvGen.kr(Env.perc, gate: gt)
};
)
(
~lfos = {|freq, freq1, freq2, amp = 1, mul2 = 100|
var l1, l2;
l1 = SinOsc.ar(freq * freq1 , mul: amp * ~osc1.ar);
l2 = SinOsc.ar(freq * freq2 , mul: amp * ~osc1.ar.neg );
l1+l2 *mul2
};
)
(
~res = { |rq = 1|
var l1, l2;
l1 = ~osc1.ar + rq;
l2 = ~osc1.ar.neg + rq ;
l1+l2
};
)
(
u.stop;
f = Pxrand([0, 3, 12, Pwrand([10,Pshuf([-2,0,3,5,6,7]+12)], [0.95, 0.05])], inf);f = f.asStream;
r = Prand([1]/4, inf); r = r.asStream; //rythme
t = 130; t = t/60; //tempo
u = Routine({
inf.do({ var freq, fond = 21, delta;
freq = f.next; delta = r.next/t;
freq = freq + fond;
[~osc1, ~oscSlave1].do({|item, i|
var freqMul;
freqMul = #[1, 0.5];//.reverse; //inverser...
item.set(\freq, (freq+ fond).midicps * freqMul[i] , \gt , 1, \amp, rrand(0.1, 1));
0.01.wait;
item.set(\gt, 0.0)
});
~lfos.set(\freq, freq.midicps / 4);
delta.wait;
})
});
u.play;
//~osc1.play;~oscSlave1.play;
)
(
~lfos.set( \amp, 1, \mul2, 1000, \freq1, 0.132, \freq2, 0.375);
~res.set(\rq, 0.5);
~osc1.map(\pw, ~pwModulation1);
~oscSlave1.map(\pw, ~pwModulation2);
~osc1.set(\detune, 0.1, \glide, 0.03);
~oscSlave1.set(\detune, 0.2, \glide, 0.04);
~pwModulation1.set(\freq, 0.4);
~pwModulation2.set(\freq, 1);
)
(//mod of filter by subOctave
~fx = {
var func;
func = {|in, iter = 0|
iter = iter - 1;
if (iter >= 0)
{in = func.(in, iter )};
RLPF.ar(in, MouseY.kr(10000, 800) + ~lfos.ar.abs , ~res.ar) * 0.5
};
func.( ~osc1.ar + ~oscSlave1.ar, 2 ) ;
};
)
~fx.play;
=======================================
option4
un master et deux oscillateurs esclaves utilisés, la plus basse freq, ainsi que la plus haute sont modulés par PWM
(
~osc1 = {|freq = 329, env = 1, amp = 0.5, gt = 1, pw = 0.5, detune = 0.1, glide = 0.01|
LFPulse.ar(Lag2.kr([freq, freq * LFNoise2.kr(0.6, detune).midiratio], glide ),0, pw , mul: amp) //width: LFNoise2.kr(8, 0.2, 0.6)
* env
};
)
(
~pwModulation1 = {|freq = 1, amp = 1, add = 0.5| //pwmod pour ~osc1
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
~pwModulation2 = {|freq = 1, amp = 1, add = 0.5| //pwmod pour ~oscSlave2
LFSaw.kr(freq, amp, add).abs
}; //modulation de freq;
)
(
~oscSlave1 = {|freq = 329, env = 1, amp = 0.5, gt = 1 , detune = 0.1, glide = 0.01|
LFPulse.ar(Lag2.kr([freq, freq * LFNoise2.kr(1, detune).midiratio], glide ), pi, mul: amp)
* env
};
)
(
~oscSlave2 = {|freq = 329, env = 1, amp = 0.5, pw = 0.5, gt = 1 , detune = 0.1, glide = 0.01|
LFPulse.ar(Lag2.kr([freq, freq * LFNoise2.kr(1, detune).midiratio], glide ), pw, mul: amp)
* env
};
)
(
~env = {|gt| EnvGen.kr(Env([0, 1, 0.3, 0.2, 0], [0.4, 2, 5, 1]), gate: gt) }
)
(
u.stop;
f = Pxrand([0, 3, 12, Pwrand([10,Pshuf([-2,0,3,5,6,7]+12)], [0.95, 0.05])], inf);f = f.asStream;
r = Prand([3], inf); r = r.asStream; //rythme
t = 60; t = t/60; //tempo
u = Routine({
inf.do({ var freq, fond = 20, delta;
freq = f.next; delta = r.next/t;
freq = freq + fond;
[~osc1, ~oscSlave1, ~oscSlave2].do({|item, i|
var freqMul;
freqMul = #[1, 0.6674, 2];
item.set(\freq, (freq+ fond).midicps * freqMul[i] , \amp, rrand(0.1, 1));
0.01.wait;
item.set(\gt, 0.0)
});
~env.set(\gt, 1);
0.01.wait;
~env.set(\gt, 0);
~lfos.set(\freq, freq.midicps / 4);
delta.wait;
})
});
u.play;
//~osc1.play;~oscSlave1.play;
)
(
~lfos.set( \amp, 1, \mul2, 1000, \freq1, 0.132, \freq2, 0.375);
~res.set(\rq, 0.5);
~osc1.map(\pw, ~pwModulation1);
~oscSlave2.map(\pw, ~pwModulation2);
~osc1.set(\detune, 0.1, \glide, 0.1);
~oscSlave1.set(\detune, 0.1, \glide, 0.1);
~oscSlave2.set(\detune, 0.1, \glide, 0.1);
~pwModulation1.set(\freq, 1.122);
~pwModulation2.set(\freq, 0.630);
)
(
[~osc1, ~oscSlave1, ~oscSlave2].do({|item|
item.map(\env, ~env) })
)
(
~filter1 = { |freq = 10000, minFreq = 200|
var func;
func = {|in, iter = 0|
iter = iter - 1;
if (iter >= 0)
{in = func.(in, iter )}; LPF.ar(in, freq * 1000 + minFreq )
};
func.( ~osc1.ar + ~oscSlave1.ar + ~oscSlave2.ar , 2 ) * 0.5
}
)
(//extra thick, noisy sound
~filter2 = { |freq = 4000 |
var func, direct;
func = {|in, iter = 0|
iter = iter - 1;
if (iter >= 0)
{in = func.(in, iter )}; HPF.ar( LPF.ar(in, freq ),freq)
};
direct = Mix.ar( func.( ~osc1.ar + ~oscSlave1.ar + ~oscSlave2.ar , 1 ) ) ;
[DelayC.ar(direct,0.1, LFNoise2.kr(1, 0.003, 0.1)), direct]
};
)
(
~delay = {
var buf, direct;
buf = Buffer.alloc(s,44100 * 2, 2);
direct = ~filter1.ar * 0.4 + ~filter2.ar;
PingPong.ar(buf.bufnum, ~filter1.ar, t/4, 0.8, 1).neg * 0.3 + direct
//AllpassL.ar(direct,2, 1 , 0.6)
}
)
~filter1.stop;~filter1.play;
~filter2.stop;~filter2.play;
~filter1.map(\freq, ~env );
~filter2.set(\freq, 4000);
~delay.play
There are no comments on this page. [Add comment]