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