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.
47 lines
1.6 KiB
Plaintext
47 lines
1.6 KiB
Plaintext
(
|
|
s.waitForBoot {
|
|
~buf1 = Buffer.read(s, "/home/lcoogan/snd/samples/freesound/vocals/ymaaela/333264__ymaaela__female-vocal-cut-ups-collage.mono.wav");
|
|
~buf2 = Buffer.read(s, "/home/lcoogan/snd/samples/scarlett/clickin.mono.wav");
|
|
~buf3 = Buffer.read(s, "/home/lcoogan/snd/samples/scarlett/scarlett singing.mono.wav");
|
|
|
|
SynthDef(\crossfade3Buf, { |out=0, buf1, buf2, buf3, gain1=1, gain2=0, gain3=0, rate=1.2|
|
|
var sig1 = PlayBuf.ar(1, buf1, rate * BufRateScale.kr(buf1), loop: 1);
|
|
var sig2 = PlayBuf.ar(1, buf2, rate * BufRateScale.kr(buf2), loop: 1);
|
|
var sig3 = PlayBuf.ar(1, buf3, rate * BufRateScale.kr(buf3), loop: 1);
|
|
|
|
var mix = sig1 * gain1 + sig2 * gain2 + sig3 * gain3;
|
|
|
|
mix = GVerb.ar(mix, damping:1);
|
|
Out.ar(out, mix ! 2);
|
|
}).add;
|
|
|
|
s.sync;
|
|
|
|
~synth = Synth(\crossfade3Buf, [
|
|
\buf1, ~buf1.bufnum,
|
|
\buf2, ~buf2.bufnum,
|
|
\buf3, ~buf3.bufnum,
|
|
\gain1, 0,
|
|
\gain2, 0,
|
|
\gain3, 1
|
|
]);
|
|
|
|
Routine({
|
|
var prevGains = [1.0, 0.0, 0.0];
|
|
loop {
|
|
var newGains = Array.fill(3, { rrand(0.0, 1.0) });
|
|
var sum = newGains.sum;
|
|
newGains = newGains.collect { |g| g / sum }; // normalize gains to sum to 1
|
|
|
|
// Smoothly interpolate each gain from prev to new over 1 second using \lag
|
|
~synth.set(\gain1, newGains[0], \lag, 0);
|
|
~synth.set(\gain2, newGains[1], \lag, 0);
|
|
~synth.set(\gain3, newGains[2], \lag, 0);
|
|
|
|
prevGains = newGains;
|
|
0.1.wait;
|
|
}
|
|
}).play;
|
|
};
|
|
)
|