2 1 -b64 -A -s -m7 -B0 -Lstdin -R ; Example FM instruments from Dodge, Chowning, Moore sr=44100 kr=4410 ksmps=10 ; Simple FM instrument, Dodge page 112 instr 1 ifm = cpspch(p4) ifc = cpspch(p5) iac = p6 iimax = p7 kmodamp linseg iimax*ifm,p3,0 amod oscil kmodamp,ifm,1 acarfrq = amod + ifc kcaramp linseg iac,p3,0 aout oscil kcaramp,acarfrq,1 out aout endin ; Basic Chowning FM instrument, Dodge page 114 instr 2 ifc = cpspch(p4) irat = p5 ifm = ifc * irat iac = p6 iimax = p7 ienvm = p8 ienvc = p9 kmodamp oscil iimax*ifm,1/p3,ienvm amod oscil kmodamp,ifm,1 acarfrq = amod + ifc kcaramp oscil iac,1/p3,ienvc aout oscil kcaramp,acarfrq,1 out aout endin ; Chowning FM clarinet, Dodge page 114 instr 3 ifc = cpspch(p4) irat = p5 ifm = ifc * irat iac = p6 iimax = p7 iimin = p10 ienvm = p8 ienvc = p9 kmodamp oscil (iimax-iimin)*ifm,1/p3,ienvm kmodamp = kmodamp + (iimin*ifm) amod oscil kmodamp,ifm,1 acarfrq = amod + ifc kcaramp oscil iac,1/p3,ienvc aout oscil kcaramp,acarfrq,1 out aout endin ; Two carrier FM instrument for formant simulation instr 4 ifc1 = cpspch(p4) ifc2 = int((p9/ifc1)+.5)*ifc1 irat = p5 ifm = ifc1 * irat iac = p6 iimax1 = p7 iimax2 = p8 kmodamp expseg 1,p3/4,(iimax1*ifm),p3/2,(iimax1*ifm),p3/4,1 amod oscil kmodamp,ifm,1 acarfrq1 = amod + ifc1 acarfrq2 = (amod * iimax2/iimax1) + ifc2 kcaramp expseg 1,p3/4,(iac),p3/2,(iac),p3/4,1 acar1 oscil kcaramp,acarfrq1,1 acar2 oscil kcaramp,acarfrq2,1 out acar1+acar2 endin ; Bells, Drums and Brass f1 0 1024 10 1 f2 0 1024 5 1000 1024 1 f3 0 1024 5 800 128 1000 896 1 f4 0 1024 7 1000 128 0 896 0 f5 0 1024 7 0 128 1000 128 800 512 700 256 0 ; first some bell tones ; start length freq ratio amp index mod_env car_env i2 0 15 9.01 1.4 10000 10 2 2 i2 1 15 9.03 1.4 10000 10 2 2 i2 2 15 9.07 1.4 10000 10 2 2 i2 3 15 8.06 1.4 10000 10 2 2 i2 4 15 9.09 1.4 10000 10 2 2 ; then some "drums" ; start length freq ratio amp index mod_env car_env i2 7 .2 7.01 .6875 10000 25 4 3 i2 7.6 .4 7.03 .6875 10000 25 4 3 i2 8 .3 6.07 .6875 10000 25 4 3 i2 8.4 .4 6.06 .6875 10000 25 4 3 i2 9.1 .2 7.09 .6875 10000 25 4 3 i2 9.3 .4 6.01 .6875 10000 25 4 3 i2 10 .3 7.03 .6875 10000 25 4 3 i2 10.5 .5 6.07 .6875 10000 25 4 3 i2 11.2 .2 6.06 .6875 10000 25 4 3 i2 11.4 .4 5.09 .6875 10000 25 4 3 ; then the "brass" ; start length freq ratio amp index mod_env car_env i2 12 .6 9.09 1 10000 10 5 5 i2 13 .6 9.06 1 10000 10 5 5 i2 15 .6 9.07 1 10000 10 5 5 i2 16 .6 8.03 1 10000 10 5 5 i2 17 .6 9.01 1 10000 10 5 5