;  #############################################################
;  soundfile exapp2-2 : F.M. instrument with 2 or 3 modulators
;  #############################################################
; Functions needed: 50 51 52 100
;  p6 = attack time (.001-.01) ;	p7 = % tremolo (.2 - .33)
;  p8 = 1st tremolo (2. - 5.);		p9 = 2nd tremolo rate      
;  p10 = c:m1             		p11 = c:m2                
;  p12 = c:m3                   	p13 = modulation indx 
;  p14 = function to vary tremolo rate (usually 50; also 52,51)
;  p15 = attack hardness        ; p16 atss for mod. indx


instr 66       
i1 = (p4<15? cpspch(p4): p4)    ; pch or cps input
i2 = octcps(i1)
i3 = (18-i2)*.1                 ; scalar
; AMPLITUDE ENVELOPE
a4 linseg 0,p6,1.,.05/p15-p6,(p15+i3+1)/3*.56,.1*p3,.3,.15*p3,.12,.25*p3,.06,.5*p3-(.05/p15),0
p5 = i3*((p15+1)/2)*p5
a4 = a4*p5
; TREMOLO
k1 randi p15*.07,2.2/p15
k2 oscil p9-p8,1/p3,p14		;varies rate of tremolo
k2 oscili p7+k1*p7,p8+k2,100   	;tremolo
; Random Amplitude Deviation
k1 expseg p15*.2,p15*p6,p15*.05,p3,p15*.04
k1 randi k1,50/p15
a4=a4+((k2+k1)*a4)    		;TOTAL AMPLITUDE      

; Random frequency deviation
k1 expseg p15*.9*i3,p6,p15*.003,p3,.002
i4 = 800/(i3>1?i3:(1/i3))
i4 = (i4<(4000-1)?i4:4000-1)
k2 expseg 750/(i3>1?i3:1/i3),p6,45/i3,p3,60/i3
k1 randi k1*.5*i1,k2
k1 = i1+k1                      ; FREQUENCY
; Freq. Modulation - 3 oscillators
k2 expseg p15,p15*i3*.055,p15*.6,.1*p3,.3,.15*p3,.12,.25*p3,.06,.5*p3-.055,.01
k2 = k2*p13*i3  		; MODULATION INDEX

; modulating oscillator 1
k3 = p10*k1					
a1 oscili k2*k3,k3,100
; Freq. Modulation oscillator 2
k4 = p11*k1
a2 oscili k2*k4,k4,100
if p12=0 goto doit
; Freq. Modulation oscillator 3
k4 = p12 * k1
a3 oscili k2*k4,k4,100
a2 = a2+a3

doit:
k2 expon p15,p3,i3*p16*p13      ; modulation depth
a1 oscili a4,k1+(k2*(a1+a2)),100  ; carrier

out a1       
endin
