;;; 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