define(SFTEST,99)
define(SFINIT,[
; functions : optional : 98 (soundin. numbers) & 99 (durations)
; p4  = soundin. number or, if negative, index pointer to funcs. 98 & 99
; p5 = ampfac  ; p6 = skip from front of soundfile
; p7 = exponential fade in time ; p8 = exponential fade out time
isfnum init p4
idur init p3
if p4 > 0 goto gotit
	isfnum table abs(p4),98
	idur table abs(p4),99
 ; to prevent hangs, when true dur. is slightly < than dur. provided by sndinfo
          idur = idur - .005
	timout 0,idur,gotit
   	turnoff   ;shut down when duration in table 99 is reached
gotit:
])dnl
define(SFBODY,[
iampfac  = (p5 =0?1:p5 )     
; fade-in & fade-out defaults & checks:
	ip7  = (p7 =0?.001:p7 )
	ip8  = (p8 =0?.001:p8 )
	ip7  = (p7 >100? (p7 -100) * idur : ip7 )
	ip8  = (p8 >100? (p8 -100) * idur : ip8 )
        ip7 = (p7 < 0 ? abs(p7) * idur : ip7)
        ip8 = (p8 < 0 ? abs(p8) * idur : ip8)
	ifades = ip7 + ip8
	if ifades < idur goto noproblem
	print idur, ifades
noproblem:
a3 expseg .01,ip7 ,iampfac,idur-(ip7 +ip8 ),iampfac,ip8 ,.01
a1 = a1*a3
])dnl 
