Examples: Recursive Channel Vocoder

Connect MIDI keyboard to play multi-band Butterworth channel vocoder (by Victor Lazzarini).

Download vocoder.csd
massign 0, 2

instr 1 // dispatch
 schedule(3, 0, -1, p4, p5, p6, p7)
 chnset(diskin:a("fox.wav",1,0,1), "input")
 chnclear("excite")
endin
schedule(1, 0, -1, 80, 8000, 8, 4)

instr 2 // MIDI synth
 fo:k cpsmidib 2
 chnmix(linenr:a(ampmidi(8), 0.01, 0.1, 0.01)*
        (vco2(1, fo*0.99) + vco2(1, fo*1.01)), "excite")
endin

instr 3  // recursive vocoder bands
 out(butterbp(butterbp(chnget:a("excite"), p4, p4/p6), p4, p4/p6) *
     rms(butterbp(butterbp(chnget:a("input"), p4, p4/p6), p4, p4/p6)))
 nxt:i = p4*2^(p7/12)
 if nxt < p5 then
  schedule(p1+0.001, 0, -1, nxt, p5, p6, p7)
 endif
endin