I’m fiddling with the vocoders from Eli Fieldsteel tutorials, but when I use SoundIn.ar instead of PlayBuf, it does sound less convincing somehow. Any idea why?
(
x = SynthDef(\vocoder, {
var mod, car, bpfmod, num = 30, track, bpfcar,
bpfhz = (1..num).linexp(1, num, 25, 16000),
q = \q.kr(20);
// create modulator & carrier
//mod = PlayBuf.ar(1, b, BufRateScale.ir(b), loop: 1);
mod = SoundIn.ar();
car = CombL.ar(WhiteNoise.ar(1), 1/20, 1/\freq.kr(50), 3);
// track spectrum of modulator
bpfmod = BPF.ar(mod, bpfhz, 1/q, q.sqrt);
track = Amplitude.kr(bpfmod).lag3(0.03) * 2;
// apply spectrum to carrier
bpfcar = BPF.ar(car, bpfhz, 1/q, q.sqrt) * track;
Out.ar(0, Splay.ar(bpfcar.scramble, spread: 0.1));
}).play;
)
(
//basic vocoder effect, i.e. daft punk, imogen heap, etc
SynthDef(\pvcalc2, {
var sig, sig2, chain, chain2, size=1024;
//sig = PlayBuf.ar(1, \buf.kr(0), BufRateScale.ir(\buf.kr(0)), loop:1);
sig = SoundIn.ar(\in.kr(0));
sig2 = Saw.ar([40,47,52,56,58,61,63].midicps * \trnsp.kr(0).midiratio, 0.05).sum;
chain = FFT(LocalBuf(size), sig);
chain2 = FFT(LocalBuf(size), sig2);
chain = chain.pvcalc2(chain2, size, {
arg mag, phs, mag2, phs2;
mag = (mag * \blend.kr(1)) + (mag2 * (1-\blend.kr(1)));
[mag, phs2];
});
sig = IFFT(chain) * \amp.kr(0.2)!2;
Out.ar(\out.kr(0), sig);
}).add;
)