mirror of
				https://github.com/alsa-project/alsa-tools.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			852 B
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			852 B
		
	
	
	
		
			NASM
		
	
	
	
	
	
;;; Tremolo Effect 
 | 
						|
;;; By:	 Daniel Bertrand
 | 
						|
;;; Oct 29, 2000
 | 
						|
 | 
						|
	include "emu_constants.asm"
 | 
						|
	name "tremolo"
 | 
						|
 | 
						|
in	IO
 | 
						|
out	equ	in
 | 
						|
	
 | 
						|
	
 | 
						|
;;; sinewave generator:
 | 
						|
delta control 10e-4,0,1e-2 ; controls frequency (2*pi*freq/48000)
 | 
						|
cosx sta #0.5		 
 | 
						|
sinx sta 0		
 | 
						|
depth control &0.001,0,&0.001
 | 
						|
 | 
						|
 | 
						|
tmp  dyn	
 | 
						|
	
 | 
						|
delay	delay	&0.01
 | 
						|
wrt	twrite	delay,0
 | 
						|
rd	tread	delay,0	
 | 
						|
rd2	tread	delay,0
 | 
						|
c1000	sta	$1000
 | 
						|
	
 | 
						|
	macs	wrt,in,C_0,C_0
 | 
						|
;;; sinwave generator:	
 | 
						|
	macs  sinx,sinx,delta,cosx       
 | 
						|
	macs1 cosx,cosx,delta,sinx 
 | 
						|
 | 
						|
;;; calulate address = depth*sin(wt)+0.5*depth
 | 
						|
	
 | 
						|
	
 | 
						|
	macs tmp,c1000,depth,C_2^30
 | 
						|
	macs tmp,tmp,sinx,depth
 | 
						|
	acc3 rd.a,tmp,C_0,wrt.a	
 | 
						|
	
 | 
						|
	macints rd2.a,rd.a,C_8,C_256  ;;;next address 
 | 
						|
	
 | 
						|
;;; get fractional address:	
 | 
						|
	macints tmp,C_0,rd.a,C_LSshift
 | 
						|
;;; linear interpolate fraction between the 2 reads
 | 
						|
;;; output result	
 | 
						|
	
 | 
						|
			
 | 
						|
	interp  out,rd,tmp,rd2
 | 
						|
 | 
						|
	
 | 
						|
	end
 | 
						|
			
 |