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.
32 lines
846 B
Plaintext
32 lines
846 B
Plaintext
(
|
|
SynthDef(\voiceEvolving, {
|
|
arg out=0, bufnum, amp=0.5, windowSize=1024;
|
|
var in, chain, sig;
|
|
var smearAmt, shiftAmt, wipeTrig;
|
|
|
|
in = PlayBuf.ar(1, bufnum, BufRateScale.kr(bufnum), loop: 1);
|
|
|
|
// FFT processing
|
|
chain = FFT(LocalBuf(windowSize), in);
|
|
|
|
// Slowly changing modulation sources
|
|
smearAmt = LFNoise1.kr(0.1).range(5, 50); // how smeared the spectrum is
|
|
shiftAmt = LFNoise1.kr(0.07).range(-30, 30); // shifting bins in pitch space
|
|
wipeTrig = Dust.kr(0.3); // occasional spectral dropouts
|
|
|
|
// PV mutations
|
|
chain = PV_MagSmear(chain, smearAmt);
|
|
chain = PV_BinShift(chain, shiftAmt);
|
|
chain = PV_RandWipe(chain, wipeTrig);
|
|
|
|
sig = IFFT(chain) * amp;
|
|
|
|
// Optional: gentle filtering
|
|
sig = LPF.ar(sig, 1000);
|
|
|
|
Out.ar(out, sig.dup);
|
|
}).add;
|
|
)
|
|
|
|
Synth(\voiceEvolving, [\bufnum, b, \amp, 0.4]);
|