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