Blame as10k1/examples/tremolo.asm

Packit 427e91
;;; Tremolo Effect 
Packit 427e91
;;; By:	 Daniel Bertrand
Packit 427e91
;;; Oct 29, 2000
Packit 427e91
Packit 427e91
	include "emu_constants.asm"
Packit 427e91
	name "tremolo"
Packit 427e91
Packit 427e91
in	IO
Packit 427e91
out	equ	in
Packit 427e91
	
Packit 427e91
	
Packit 427e91
;;; sinewave generator:
Packit 427e91
delta control 10e-4,0,1e-2 ; controls frequency (2*pi*freq/48000)
Packit 427e91
cosx sta #0.5		 
Packit 427e91
sinx sta 0		
Packit 427e91
depth control &0.001,0,&0.001
Packit 427e91
Packit 427e91
Packit 427e91
tmp  dyn	
Packit 427e91
	
Packit 427e91
delay	delay	&0.01
Packit 427e91
wrt	twrite	delay,0
Packit 427e91
rd	tread	delay,0	
Packit 427e91
rd2	tread	delay,0
Packit 427e91
c1000	sta	$1000
Packit 427e91
	
Packit 427e91
	macs	wrt,in,C_0,C_0
Packit 427e91
;;; sinwave generator:	
Packit 427e91
	macs  sinx,sinx,delta,cosx       
Packit 427e91
	macs1 cosx,cosx,delta,sinx 
Packit 427e91
Packit 427e91
;;; calulate address = depth*sin(wt)+0.5*depth
Packit 427e91
	
Packit 427e91
	
Packit 427e91
	macs tmp,c1000,depth,C_2^30
Packit 427e91
	macs tmp,tmp,sinx,depth
Packit 427e91
	acc3 rd.a,tmp,C_0,wrt.a	
Packit 427e91
	
Packit 427e91
	macints rd2.a,rd.a,C_8,C_256  ;;;next address 
Packit 427e91
	
Packit 427e91
;;; get fractional address:	
Packit 427e91
	macints tmp,C_0,rd.a,C_LSshift
Packit 427e91
;;; linear interpolate fraction between the 2 reads
Packit 427e91
;;; output result	
Packit 427e91
	
Packit 427e91
			
Packit 427e91
	interp  out,rd,tmp,rd2
Packit 427e91
Packit 427e91
	
Packit 427e91
	end
Packit 427e91