;==========================================
;An FM MIDI instrument that uses continuous 
;controller 7 and velocity to affect both
;the index & the final signal amplitude.
;It also uses the ModWheet (CC1) to control
;the depth and rate of vibrato.
;The velocity is used to look up the carrier
;and modulator factors in a table (f03).
;==========================================
	sr	=	44100
	kr	=	4410
	ksmps	=	10
	nchnls	=	1

	massign	1,10		;assign midi chan 1 to instr 10
	ctrlinit	1,7,80,1,80	;initialize ctrl 1 & 7 on chan 1 to 32 & 80
	
	instr 10
ivel	veloc	0,7	;8 possibilities for velocity
imodfac	table	ivel,4	;func 4 has mod factors
icarfac	table	ivel,3	;func 3 has carrier factors
	print	ivel,imodfac,icarfac	
imaxndx	=	30
ivibwth	=	.025
ivibhz	=	6
kmodwh	midictrl 1,0,1		;get controller 1 (ModWheel) 
kvol	midictrl 7,0,1		;get controller 7 (Volume)
kscale	tablei	kvol,2,1	;function 2 has an exponential rise
iamp	ampmidi	5000
kamp	=	iamp*kscale
kindex	=	imaxndx*kscale*iamp/5000
amp	interp	kamp
icps	cpsmidi
;vibrato module!
kvibwth	=	kmodwh*ivibwth
klfohz	=	kmodwh*ivibhz
klfo	oscil	kvibwth,klfohz,1
kvib	=	1 + klfo
kcps	=	icps * kvib
agate	linenr	amp,.01,.1,.01
asig	foscil	agate,kcps,icarfac,imodfac,kindex,1
	out	asig
	endin                
        

;the sine
f1 0 8192 10 1
;exponential function for amp scaling
f2 0 8193 5  .1	8193 1
;data function for carrier factors
f3 0 8    -2	1 2 3 4 1 2 3 4
;data function for modulator factors
f4 0 8    -2    1 1 1 1 2 3 2 3
f0	30
e

Download miditst5.orc

Download miditest.mid

Download miditst5.sco