<info>
Low-Shelf / MidQ1 / MidQ2 / Hi-shelf
Jean Piche, 1996
</info>
<tk_interface>
cfilein name
cslider low 			-un db 		-or v  -res .01 			-min -24 		-co red1 -max 24 		-init 0
cslider lowfrq 			-un hz 		-or v  -res .1 			-min 50 		-co red2 -max 700 		-init 100
cslider mid1 			-un db 		-or v  -res .01 			-min -24 		-co blue1 -max 24 		-init 0
cslider midfrq1 		-un hz 			-or v  -res .1 			-min 500 		-co blue2 -max 2000 -init 1000
cslider midq1 			-un q 		-or v  -res .01 			-min .01 		-co blue3 -max 1 		-init .25
cslider mid2 			-un db 		-or v  -res .01 			-min -24 		-co green1 -max 24 		-init 0
cslider midfrq2 		-un hz 			-or v  -res .1 			-min 1500 	-co green2 -max 6000 -init 3000
cslider midq2 			-un q 		-or v  -res .01 			-min .01 		-co green3 -max 1 		-init .25
cslider hi 			-un db 		-or v  -res .01 			-min -24 		-co yellow1 -max 24 		-init 0
cslider hifrq 			-un hz 		-or v  -res .1 			-min 5000 	-co yellow2 -max 15000 			-init 7500
cslider gain 			-un x 		-or h  -res .01 			-min 0 		-co magenta -max 2 		-init 1
ctoggle loop -label "Loop input sound" -init 0
cslider total_time -unit s -ori h -min 1 -res .01 -max 300 -init 30
</tk_interface>
<mono>
	instr 1



iloop 	init 	i(gkloop)
kfac 	=	[sinfo name sr]/sr
a1 	diskin  	"[name]", kfac, [offname], iloop


klow 		= 	gklow/24
klowfr 		= 	gklowfrq
kmid1		=	gkmid1/24
kmidf1		=	gkmidfrq1
kmidq1		=	gkmidq1
kmid2		=	gkmid2/24
kmidf2		=	gkmidfrq2
kmidq2		=	gkmidq2
khi		=	gkhi/24
khifr 		= 	gkhifrq
kgain		=	gkgain

if klow = 0 goto sec
if klow < 0 goto moins

asi	butterlp	a1, klowfr
asi	=	a1+ asi*klow*5
goto mid1

moins:
asi	butterhp	a1, klowfr
asi	=	a1*(1-abs(klow))+asi*abs(klow)
goto mid1

sec:
asi = a1
goto mid1

mid1:
if kmid1 = 0 goto midseco
if kmid1 < 0 goto moinsmid

asap	butterbp	asi, kmidf1, kmidf1*kmidq1
asap	=	asi+ asap*kmid1*5
goto mid2

moinsmid:
asap	butterbr	asi, kmidf1, kmidf1*kmidq1
asap	=	asi*(1-abs(kmid1))+asap*abs(kmid1)
goto mid2

midseco:
asap = asi

mid2:
if kmid2 = 0 goto mid2seco
if kmid2 < 0 goto moins2mid

asout	butterbp	asap, kmidf2, kmidf2*kmidq2
asout	=	asap+ asout*kmid2*5
goto hi

moins2mid:
asout	butterbr	asap, kmidf2, kmidf2*kmidq2
asout	=	asap*(1-abs(kmid2))+asout*abs(kmid2)
goto hi

mid2seco:
asout = asap

hi:
if khi = 0 goto seco
if khi < 0 goto moinshi

asit	butterhp	asout, khifr
asit	=	asout+ asit*khi*5
goto out

moinshi:
asit	butterlp	asout, khifr
asit	=	asout*(1-abs(khi))+asit*abs(khi)
goto out

seco:
asit = asout

out:
		out	asit*kgain

			endin
</mono>
<stereo>
	instr 1

iloop 	init 	i(gkloop)
kfac 	=	[sinfo name sr]/sr
a1,a2 	diskin  	"[name]", kfac, [offname], iloop

klow 		= 	gklow/24
klowfr 		= 	gklowfrq
kmid1		=	gkmid1/24
kmidf1		=	gkmidfrq1
kmidq1		=	gkmidq1
kmid2		=	gkmid2/24
kmidf2		=	gkmidfrq2
kmidq2		=	gkmidq2
khi		=	gkhi/24
khifr 		= 	gkhifrq
kgain		=	gkgain

if klow = 0 goto sec
if klow < 0 goto moins

asi	butterlp	a1, klowfr
aso	butterlp	a2, klowfr
asi	=	a1+ asi*klow*5
aso	=	a2+ aso*klow*5
goto mid1

moins:
asi	butterhp	a1, klowfr
aso	butterhp	a2, klowfr
asi	=	a1*(1-abs(klow))+asi*abs(klow)
aso	=	a2*(1-abs(klow))+aso*abs(klow)
goto mid1

sec:
asi = a1
aso = a2
goto mid1


mid1:
if kmid1 = 0 goto midseco
if kmid1 < 0 goto moinsmid

asap	butterbp	asi, kmidf1, kmidf1*kmidq1
asat	butterbp	aso, kmidf1, kmidf1*kmidq1
asap	=	asi+ asap*kmid1*5
asat	=	aso+ asat*kmid1*5
goto mid2

moinsmid:
asap	butterbr	asi, kmidf1, kmidf1*kmidq1
asat	butterbr	aso, kmidf1, kmidf1*kmidq1
asap	=	asi*(1-abs(kmid1))+asap*abs(kmid1)
asat	=	aso*(1-abs(kmid1))+asat*abs(kmid1)
goto mid2

midseco:
asap = asi
asat = aso

mid2:
if kmid2 = 0 goto mid2seco
if kmid2 < 0 goto moins2mid

asout	butterbp	asap, kmidf2, kmidf2*kmidq2
asoug	butterbp	asat, kmidf2, kmidf2*kmidq2
asout	=	asap+ asout*kmid2*5
asoug	=	asat+ asoug*kmid2*5
goto hi

moins2mid:
asout	butterbr	asap, kmidf2, kmidf2*kmidq2
asoug	butterbr	asat, kmidf2, kmidf2*kmidq2
asout	=	asap*(1-abs(kmid2))+asout*abs(kmid2)
asoug	=	asat*(1-abs(kmid2))+asoug*abs(kmid2)
goto hi

mid2seco:
asout = asap
asoug = asat

hi:
if khi = 0 goto seco
if khi < 0 goto moinshi

asit	butterhp	asout, khifr
asot	butterhp	asoug, khifr
asit	=	asout+ asit*khi*5
asot	=	asoug+ asot*khi*5
goto out

moinshi:
asit	butterlp	asout, khifr
asot	butterlp	asoug, khifr
asit	=	asout*(1-abs(khi))+asit*abs(khi)
asot	=	asoug*(1-abs(khi))+asot*abs(khi)
goto out

seco:
asit = asout
asot = asoug

out:
		outs	asit*kgain, asot*kgain

		endin
</stereo>
<quad>

</quad>
<score>
#min
</score>
