Vocoders by Eli (SoundIn)

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;
)
2 Likes

my guess is different signal levels, you could try using Compander after soundIn

1 Like