Additive synthesizer 16 harmonics with envelopes Mathieu Bezkorowagny, 1996 Adjusted by Mike O'Donnell, 3 March 2003 - 21 April 2003 Modified by Eric Heller to get rid of split stereo output and to add a frequency modulator to the main graph. Mon Apr 28 2003 cslider total_time -max 300 -min 0 -init 2 cslider gain -rel lin -res .01 -min 0 -max 4 -init 1 cslider fund -rel lin -unit Hz -res .001 -min 20 -max 1000 -init 110 cgraph waveshape -rel lin -min -1 -max 1 -init 0 -gen 31 csepar cgraph harm1 -min 0 -max 100 -init 0.0 -gen 11 cgraph harm2 -min 0 -max 100 -init 0.0 -gen 12 cgraph harm3 -min 0 -max 100 -init 0.0 -gen 13 cgraph harm4 -min 0 -max 100 -init 0.0 -gen 14 cgraph harm5 -min 0 -max 100 -init 0.0 -gen 15 cgraph harm6 -min 0 -max 100 -init 0.0 -gen 16 cgraph harm7 -min 0 -max 100 -init 0.0 -gen 17 cgraph harm8 -min 0 -max 100 -init 0.0 -gen 18 cgraph harm9 -min 0 -max 100 -init 0.0 -gen 19 cgraph harm10 -min 0 -max 100 -init 0.0 -gen 20 cgraph harm11 -min 0 -max 100 -init 0.0 -gen 21 cgraph harm12 -min 0 -max 100 -init 0.0 -gen 22 cgraph harm13 -min 0 -max 100 -init 0.0 -gen 23 cgraph harm14 -min 0 -max 100 -init 0.0 -gen 24 cgraph harm15 -min 0 -max 100 -init 0.0 -gen 25 cgraph harm16 -min 0 -max 100 -init 0.0 -gen 26 csepar cgraph freqmod -unit Hz -rel lin -min -50 -max 50 -init 0.0 cgraph envelope -rel li -min 0 -max 1 -func "0 0 .01 .8 .99 .8 1 0" -gen 29 ctoggle sinus -init 0 ctoggle balance -init 0 gkbanjo init 76 instr 1 anorma oscil 10000, 1000, 1 knorm= gkgain kfund= gkfund isina=i(gksinus) if isina = 1 goto sinp iform = 31 goto gof sinp: iform = 1 gof: kamp1 = gkharm1 kamp2 = gkharm2 kamp3 = gkharm3 kamp4 = gkharm4 kamp5 = gkharm5 kamp6 = gkharm6 kamp7 = gkharm7 kamp8 = gkharm8 kamp9 = gkharm9 kamp10 = gkharm10 kamp11 = gkharm11 kamp12 = gkharm12 kamp13 = gkharm13 kamp14 = gkharm14 kamp15 = gkharm15 kamp16 = gkharm16 kshift = gkfreqshift ah1 oscili kamp1, kfund*1+kshift, iform ah2 oscili kamp2, kfund*2+kshift, iform ah3 oscili kamp3, kfund*3+kshift, iform ah4 oscili kamp4, kfund*4+kshift, iform ah5 oscili kamp5, kfund*5+kshift, iform ah6 oscili kamp6, kfund*6+kshift, iform ah7 oscili kamp7, kfund*7+kshift, iform ah8 oscili kamp8, kfund*8+kshift, iform ah9 oscili kamp9, kfund*9+kshift, iform ah10 oscili kamp10, kfund*10+kshift, iform ah11 oscili kamp11, kfund*11+kshift, iform ah12 oscili kamp12, kfund*12+kshift, iform ah13 oscili kamp13, kfund*13+kshift, iform ah14 oscili kamp14, kfund*14+kshift, iform ah15 oscili kamp15, kfund*15+kshift, iform ah16 oscili kamp16, kfund*16+kshift, iform asomme= (ah1+ah2+ah3+ah4+ah5+ah6+ah7+ah8+ah9+ah10+ah11+ah12+ah13+ah14+ah15+ah16) if gkbalance == 0 goto outer asomme balance asomme, anorma outer: out asomme* knorm*gkenvelope endin gkbanjo init 76 instr 1 anorma oscil 10000, 1000, 1 knorm= gkgain kfund= gkfund isina=i(gksinus) if isina = 1 goto sinp iform = 31 goto gof sinp: iform = 1 gof: kamp1 = ampdb(gkharm1) kamp2 = ampdb(gkharm2) kamp3 = ampdb(gkharm3) kamp4 = ampdb(gkharm4) kamp5 = ampdb(gkharm5) kamp6 = ampdb(gkharm6) kamp7 = ampdb(gkharm7) kamp8 = ampdb(gkharm8) kamp9 = ampdb(gkharm9) kamp10 = ampdb(gkharm10) kamp11 = ampdb(gkharm11) kamp12 = ampdb(gkharm12) kamp13 = ampdb(gkharm13) kamp14 = ampdb(gkharm14) kamp15 = ampdb(gkharm15) kamp16 = ampdb(gkharm16) ah1 oscili kamp1, (kfund+gkfreqmod)*1, iform ah2 oscili kamp2, (kfund+gkfreqmod)*2, iform ah3 oscili kamp3, (kfund+gkfreqmod)*3, iform ah4 oscili kamp4, (kfund+gkfreqmod)*4, iform ah5 oscili kamp5, (kfund+gkfreqmod)*5, iform ah6 oscili kamp6, (kfund+gkfreqmod)*6, iform ah7 oscili kamp7, (kfund+gkfreqmod)*7, iform ah8 oscili kamp8, (kfund+gkfreqmod)*8, iform ah9 oscili kamp9, (kfund+gkfreqmod)*9, iform ah10 oscili kamp10, (kfund+gkfreqmod)*10, iform ah11 oscili kamp11, (kfund+gkfreqmod)*11, iform ah12 oscili kamp12, (kfund+gkfreqmod)*12, iform ah13 oscili kamp13, (kfund+gkfreqmod)*13, iform ah14 oscili kamp14, (kfund+gkfreqmod)*14, iform ah15 oscili kamp15, (kfund+gkfreqmod)*15, iform ah16 oscili kamp16, (kfund+gkfreqmod)*16, iform asomme= (ah1+ah2+ah3+ah4+ah5+ah6+ah7+ah8+ah9+ah10+ah11+ah12+ah13+ah14+ah15+ah16) asommed= (ah1+ah3+ah5+ah7+ah9+ah11+ah13+ah15) asommeg= (ah2+ah4+ah6+ah8+ah10+ah12+ah14+ah16) if gkbalance == 0 goto outer asommed balance asommed, anorma asommeg balance asommeg, anorma outer: outs asomme* knorm*gkenvelope, asomme* knorm*gkenvelope endin f1 0 8192 10 1 0 .2 0 .1 0 0 .2 .1 .5 2 i1 0.001 [total_time]