Exploring Analogue Synth Techniques by Jacob Joaquin email jacobjoaquin@gmail.com web www.thumbuki.com/csound/articles/east/ (C)2007 Jacob Joaquin sr = 44100 kr = 4410 ksmps = 10 nchnls = 2 instr 1 idur = p3 iamp = p4 iwave = p5 ifpch = p6 ifenv = p7 ifacc = p8 ifpan = p9 ifpwm = p10 ifvcf = p11 ifres = p12 ilength = ftlen(ifpch) ilenv = ftlen(ifenv) ilpwm = ftlen(ifpwm) ilvcf = ftlen(ifvcf) ilres = ftlen(ifres) aclock phasor 1/idur kclock downsamp aclock ktpch table kclock * ilength, ifpch, 0, 0, 1 atenv table aclock * ilenv * ilength , ifenv, 0, 0, 1 atacc table aclock * ilength, ifacc, 0, 0, 1 atpan table aclock * ilength, ifpan, 0, 0, 1 ktpwm table kclock * ilpwm * ilength, ifpwm, 0, 0, 1 atvcf table aclock * ilvcf, ifvcf, 0, 0, 1 atres table aclock * ilres, ifres, 0, 0, 1 kpch = cpspch(ktpch) avco1 vco 1, kpch, iwave, ktpwm, 1, 1/(cpspch(7.00)) avco2 vco 1, kpch*.994, iwave, ktpwm, 1, 1/(cpspch(7.00)) avco = (avco1 + avco2) * .5 avcf moogvcf avco, atvcf, atres avcf = avcf * iamp * atenv * atacc agate linseg 0, .0625, 1, idur - .125, 1, .0625, 0 outs avcf * (sqrt(1-atpan)) * agate, avcf * sqrt(atpan) * agate endin f1 0 8192 10 1 f100 0 8 -2 7.00 7.03 7.02 7.06 7.05 7.09 7.08 7.12 f101 0 4 -2 6.04 6.08 6.11 7.04 f200 0 8192 -7 0 4096 1 4096 0 f201 0 256 -5 .001 64 1 192 .001 f300 0 8 -2 2 1 2 1 1 2 0 1 f301 0 4 -2 2 1 1 1 f302 0 8 -2 2 0 1 0 1 0 2 0 f400 0 8 -2 1 0 1 .25 .75 0 .5 .25 f500 0 8192 -7 1 8192 0 f501 0 8192 -7 1 4096 0 4096 1 f600 0 8192 -7 500 8192 6000 f601 0 8 -2 6000 500 1000 200 4000 2000 1000 500 f700 0 8 -2 .5 .2 .7 .1 .4 .2 .6 .8 f701 0 8192 -7 .9 8192 0 f702 0 8192 -5 .8 4096 .2 4096 .8 t 0 90 i1 0 4 10000 1 101 200 301 400 501 600 701 i1 + 2 10000 . 100 200 300 . 500 . 700 i1 + 4 10000 . 101 201 301 . . . 701 i1 + 4 10000 . 100 201 300 . 501 601 702 i1 + 4 10000 . 100 201 302 . . . . e