<info>
Resonator bank
6 parallel delays with modulation
DC shift in source will lead to out-of-range samples.

Alex Sanielevici, Louis Dufort & Jean Piche, 1996-98
</info>
<tk_interface>
cfilein	source 

cslider	ingain -label "Input Gain" -un x -res .01 -min .01 -max 2 -init .5
cslider	outgain  -label  "Output Gain" -un x -res .01 -min .01 -max 2 -init .9
cslider	total_time	-label "Total Duration" -un sec. -res	1 -min 1	-max 300 	-init 30
ctoggle	loop -label "Loop source" -init 0
ctoggle	remdc -label  "Remove DC"
cslider	delayoff -label "Delay Offset"  -rel lin -res .0001  -min 0 -max .1 -init 0

cgraph	level1	 -label  "Delay 1 Level" -min 	0.0001 	-max 1 	-int .9
cgraph	delay1 	 -label "Delay 1" -un sec.  	-rel		log	-min .0001 	-max 	.04	-init .0012 	
csepar

cgraph	level2 	 -label  "Delay 2 Level" 	 -min 0.0001  	-max 	1 	-init .9 	
cgraph	delay2 	 -label  "Delay 2"  -un sec.		 -rel	log	-min .0001 	 -max 	.04	-init .0013 	
csepar

cgraph	level3 	 -label  "Delay 3 Level" 		-min 0.0001  	-max 	1 -init .9 	
cgraph	delay3 	 -label  "Delay 3"  -un sec. 		 -rel	log	-min .0001  	-max 	.04 	-init .0014 	
csepar

cgraph	level4 	 -label  "Delay 4 Level" 	-min 0.0001 	 	-max 1 	-init 	.9	
cgraph	delay4 	 -label  "Delay 4"  -un sec. 	 -rel		log	-min .0001 	 -max 	.04	-init .0015 	
csepar

cgraph	level5 	 -label  "Delay 5 Level" 	-min 0.0001  	-max 	1 	-init .9 	
cgraph	delay5 	 -label  "Delay 5"  -un sec. 	 -rel		log	-min .0001  	-max 	.04 	-init .0016 	
csepar

cgraph	level6  -label 	 "Delay 6 Level" 	-min 0.0001 	 	-max 1 		-init .9 	
cgraph	delay6 	 -label  "Delay 6"  -un sec. 	 -rel		log	-min .0001  	-max 	.04 	-init .0017 	
csepar

cgraph	feedback  	 -label  "Feedback"  -un % 	-min 	.0 	-max .999999		-init .995	
csepar  

cgraph	delaydev  	 -label  "Delay Deviation"  -un % 	-min 	.0 	-max 1.0		-init .0	
cgraph	devfreq  	 -label   "Delay Frequency" -un Hz 	 	-min 		.2 	-max 20	-init 18
</tk_interface>
<mono>
instr 1

klevel1			= 	gklevel1
kdel1			= 	gkdelay1
klevel2			=	gklevel2
kdel2			= 	gkdelay2
klevel3			=	gklevel3
kdel3			= 	gkdelay3
klevel4			=	gklevel4
kdel4			= 	gkdelay4
klevel5			=	gklevel5
kdel5			= 	gkdelay5
klevel6			=	gklevel6
kdel6			= 	gkdelay6
irmdc			=	i(gkremdc)

kfeedback			=	gkfeedback  

kdev			=	gkdelaydev  
kdevfrq 			=	gkdevfreq
kgain			=	gkoutgain 

iloop			=	i(gkloop)

idelmax = .241
kdelmin	=	1/kr+gkdelayoff


kdunp = 0
kfac	=	[sinfo source sr] / sr
a1 	diskin  	"[source]", kfac, [offsource], iloop
a1	=	a1*gkingain

if irmdc == 0 goto nodc

 a1  butterhp  a1, 10 
 a1  butterhp  a1, 10



nodc:
irandseed	=	i(kfeedback+kdel1) *0.1

kmod1	randi	kdev, kdevfrq, (irandseed+.5)*.1265
kmod2	randi	kdev, kdevfrq, (irandseed+.5)*.4598
kmod3	randi	kdev, kdevfrq, (irandseed+.5)*.7894
kmod4	randi	kdev, kdevfrq, (irandseed+.5)*.9851
kmod5	randi	kdev, kdevfrq, (irandseed+.5)*.2358
kmod6	randi	kdev, kdevfrq, (irandseed+.5)*.3489
kmod7	randi	kdev, kdevfrq, (irandseed+.5)*.4455
kmod8	randi	kdev, kdevfrq, (irandseed+.5)*.8858
kmod9	randi	kdev, kdevfrq, (irandseed+.5)*.5624
kmod10	randi	kdev, kdevfrq, (irandseed+.5)*.9036
kmod11	randi	kdev, kdevfrq, (irandseed+.5)*.3788
kmod12	randi	kdev, kdevfrq, (irandseed+.5)*.8999


ad1	delayr	idelmax
adel1	deltapi	 kdel1+(kmod1*gkdelay1)+kdelmin
	delayw	a1+(kfeedback*adel1)



ad3	delayr	idelmax
adel3	deltapi	kdel2+(kmod2*gkdelay2) +kdelmin
	delayw	a1+(kfeedback*adel3)


ad5	delayr	idelmax
adel5	deltapi	kdel3+(kmod3*gkdelay3) +kdelmin
	delayw	a1+(kfeedback*adel5)


ad7	delayr	idelmax
adel7	deltapi	kdel4+(kmod4*gkdelay4)+kdelmin
	delayw	a1+(kfeedback*adel7)


ad9	delayr	idelmax
adel9	deltapi	kdel5+(kmod5*gkdelay5) +kdelmin
	delayw	a1+(kfeedback*adel9)


ad11	delayr	idelmax
adel11	deltapi	kdel6+(kmod6*gkdelay6)+kdelmin
	delayw	a1+(kfeedback*adel11)


aleft	=	(adel1*klevel1+adel3*klevel2+adel5*klevel3+adel7*klevel4+adel9*klevel5+adel11*klevel6)/6

output:
	out	aleft*kgain
													endin
</mono>
<stereo>
instr 1

klevel1			= 	gklevel1
kdel1			= 	gkdelay1
klevel2			=	gklevel2
kdel2			= 	gkdelay2
klevel3			=	gklevel3
kdel3			= 	gkdelay3
klevel4			=	gklevel4
kdel4			= 	gkdelay4
klevel5			=	gklevel5
kdel5			= 	gkdelay5
klevel6			=	gklevel6
kdel6			= 	gkdelay6
irmdc			=	i(gkremdc)

kfeedback			=	gkfeedback  

kdev			=	gkdelaydev  
kdevfrq 			=	gkdevfreq
kgain			=	gkoutgain 

iloop			=	i(gkloop)

idelmax = .241
kdelmin	=	1/kr+gkdelayoff


ktype  = 0
kfac	=	[sinfo source sr] / sr
a1, a2 	diskin  	"[source]", kfac, [offsource], iloop
a1	=	a1*gkingain
a2	=	a2*gkingain

if irmdc == 0 goto nodc

 a1  butterhp  a1, 10 
 a1  butterhp  a1, 10
 a2  butterhp  a2, 10 
 a2  butterhp  a2, 10


adel1 init 0
adel2 init 0
adel3 init 0
adel4 init 0
adel5 init 0
adel6 init 0
adel7 init 0
adel8 init 0
adel9 init 0
adel10 init 0
adel11 init 0
adel12 init 0


nodc:
irandseed	=	i(kfeedback+kdel1) *0.1

kmod1	randi	kdev, kdevfrq, (irandseed+.5)*.1265
kmod2	randi	kdev, kdevfrq, (irandseed+.5)*.4598
kmod3	randi	kdev, kdevfrq, (irandseed+.5)*.7894
kmod4	randi	kdev, kdevfrq, (irandseed+.5)*.9851
kmod5	randi	kdev, kdevfrq, (irandseed+.5)*.2358
kmod6	randi	kdev, kdevfrq, (irandseed+.5)*.3489
kmod7	randi	kdev, kdevfrq, (irandseed+.5)*.4455
kmod8	randi	kdev, kdevfrq, (irandseed+.5)*.8858
kmod9	randi	kdev, kdevfrq, (irandseed+.5)*.5624
kmod10	randi	kdev, kdevfrq, (irandseed+.5)*.9036
kmod11	randi	kdev, kdevfrq, (irandseed+.5)*.3788
kmod12	randi	kdev, kdevfrq, (irandseed+.5)*.8999


ad1	delayr	idelmax
adel1	deltapi	 kdel1+(kmod1*gkdelay1)+kdelmin
	delayw	a1+(kfeedback*adel6)

ad2	delayr	idelmax
adel2	deltapi	kdel1+(kmod1*gkdelay1)+kdelmin
	delayw	a2+(kfeedback*adel11)

ad3	delayr	idelmax
adel3	deltapi	kdel2+(kmod2*gkdelay2) +kdelmin
	delayw	a1+(kfeedback*adel10)

ad4	delayr	idelmax
adel4	deltapi	kdel2+(kmod2*gkdelay2)+kdelmin
	delayw	a2+(kfeedback*adel9)

ad5	delayr	idelmax
adel5	deltapi	kdel3+(kmod3*gkdelay3) +kdelmin
	delayw	a1+(kfeedback*adel8)

ad6	delayr	idelmax
adel6	deltapi	kdel3+(kmod3*gkdelay3)+kdelmin
	delayw	a2+(kfeedback*adel1)

ad7	delayr	idelmax
adel7	deltapi	kdel4+(kmod4*gkdelay4)+kdelmin
	delayw	a1+(kfeedback*adel12)

ad8	delayr	idelmax
adel8	deltapi	kdel4+(kmod4*gkdelay4)+kdelmin
	delayw	a2+(kfeedback*adel5)

ad9	delayr	idelmax
adel9	deltapi	kdel5+(kmod5*gkdelay5) +kdelmin
	delayw	a1+(kfeedback*adel4)

ad10	delayr	idelmax
adel10	deltapi	kdel5+(kmod5*gkdelay6)+kdelmin
	delayw	a2+(kfeedback*adel3)

ad11	delayr	idelmax
adel11	deltapi	kdel6+(kmod6*gkdelay6)+kdelmin
	delayw	a1+(kfeedback*adel2)

ad12	delayr	idelmax
adel12	deltapi	kdel6+(kmod6*gkdelay5)+kdelmin
	delayw	a2+(kfeedback*adel7)

aleft	=	(adel1*klevel1+adel3*klevel2+adel5*klevel3+adel7*klevel4+adel9*klevel5+adel11*klevel6)/6
aright	=	(adel2*klevel1+adel4*klevel2+adel6*klevel3+adel8*klevel4+adel10*klevel5+adel12*klevel6)/6
;
;
output:
	outs	aleft*kgain, aright*kgain
													endin
</stereo>
<quad>

</quad>
<score>
#minimum
</score>
