mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04: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
|
|
|