1Vocode { 2 *ar {arg src, harm, noise, anabwscale = 0.5, outbw = 0.01, freqmul = 1, mul = 1, add = 0; 3 var freqArray, bwArray, ana, amps, freqs, pch, haspch, sigout; 4 freqArray = [50, 150, 250, 350, 450, 570, 700, 840, 1000, 1170, 1370, 1600, 1850, 2150, 5 2500, 2900, 3400, 4000, 4800]; 6 bwArray = [50, 50, 50, 50, 60, 70, 80, 80, 100, 110, 130, 150, 180, 200, 250, 400, 500, 7 600, 700] * anabwscale; 8 ana = BPF.ar(src, freqArray, bwArray / freqArray); 9 amps = Amplitude.ar(ana); //should be ana 10 freqs = Array.fill(freqArray.size, 11 {arg i; 12 Pitch.kr(ana[i], freqArray[i], freqArray[i] - bwArray[i], 13 freqArray[i] + bwArray[i])[0]} 14 ); 15 #pch, haspch = Pitch.kr(src, 100, 60, 440); 16 haspch = Lag2.kr(haspch, 0.01); 17 sigout = (harm * haspch) + (noise * (1 - haspch)) ; 18 ^(Resonz.ar(sigout, freqs * freqmul, outbw) * amps).sum.madd(mul, add); 19 } 20} 21 22VocodeBand { 23 *ar {arg src, band = 0, harm, noise, anabwscale = 0.5, outbw = 0.01, freqmul = 1, mul = 1, 24 add = 0; 25 var freqArray, bwArray, ana, amps, freqs, pch, haspch, sigout, freq, bw; 26 freqArray = [50, 150, 250, 350, 450, 570, 700, 840, 1000, 1170, 1370, 1600, 1850, 2150, 27 2500, 2900, 3400, 4000, 4800]; 28 bwArray = [50, 50, 50, 50, 60, 70, 80, 80, 100, 110, 130, 150, 180, 200, 250, 400, 500, 29 600, 700] * anabwscale; 30 freq = freqArray[band]; 31 bw = bwArray[band]; 32 ana = BPF.ar(src, freq, bw / freq); 33 amps = Amplitude.ar(ana); //should be ana 34 freqs = Pitch.kr(ana, freq, freq - bw, freq + bw)[0]; 35 #pch, haspch = Pitch.kr(src, 100, 60, 440); 36 haspch = Lag2.kr(haspch, 0.01); 37 sigout = (harm * haspch) + (noise * (1 - haspch)) ; 38 ^(Resonz.ar(sigout, freq * freqmul, outbw) * amps).madd(mul, add); 39 } 40}