<info>
pichej, Mon Dec 15 14:00:25 EST 1997
New Module
</info>
<tk_interface>
cfilein name -label "Sound to Normalize"
</tk_interface>
<mono>

</mono>
<stereo>
						instr 1
							endin
</stereo>
<quad>

</quad>
<score>
#tcl


set tclswitch 1
toplevel .normalizing
pack [label .normalizing.m -text "NORMALIZING:\n$value(name)\nShould'nt be too long..."] -padx 10 -pady 10
tkwait visibility .normalizing.m


set dudu [lindex $soundInInfo(name) 2]
set srr [lindex $soundInInfo(name) 0]
set ch $nchnls([lindex $soundInInfo(name) 1])
$path(winOutNom) delete 0 end


switch -- $ch  {

2 {

set orc "
nchnls = $ch
							instr 1
ka1h init 0
ka1l init 0
ka2h init 0
ka2l init 0
a1, a2 soundin  \"$value(name)\"
k1 downsamp a1
k2 downsamp a2
ka1h = (ka1h < k1? k1:ka1h)
ka1l= (ka1l > k1? k1:ka1l)
ka2h = (ka2h < k2? k2:ka2h)
ka2l= (ka2l > k2? k2:ka2l)
gka1h = ka1h
gka1l = ka1l
gka2h = ka2h
gka2l = ka2l
							endin
							instr 2
ia1h = 32768/i(gka1h)
ia1l = 32768/abs(i(gka1l))
ia2h = 32768/i(gka2h)
ia2l = 32768/abs(i(gka2l))
ifacta1 = (ia1h < ia1l?ia1h:ia1l)
ifacta2 = (ia2h < ia2l?ia2h:ia2l)
a1, a2 soundin  \"$value(name)\"
ar = a1 *ifacta1
ag = a2 *ifacta2
outs 	ar, ag
							endin
"
} 

1 {
set orc "
nchnls = $ch
							instr 1
ka1h init 0
ka1l init 0
a1 soundin  \"$value(name)\"
k1 downsamp a1
ka1h = (ka1h < k1? k1:ka1h)
ka1l= (ka1l > k1? k1:ka1l)
gka1h = ka1h
gka1l = ka1l
							endin
							instr 2
ia1h = 32768/i(gka1h)
ia1l = 32768/abs(i(gka1l))
ifacta1 = (ia1h < ia1l?ia1h:ia1l)
a1 soundin  \"$value(name)\"
ar = a1 *ifacta1
out 	ar
							endin
"
}


4 {


set orc "
nchnls = $ch
							instr 1
ka1h init 0
ka1l init 0
ka2h init 0
ka2l init 0
ka3h init 0
ka3l init 0
ka4h init 0
ka4l init 0
a1, a2, a3, a4 soundin  \"$value(name)\"
k1 downsamp a1
k2 downsamp a2
k3 downsamp a3
k4 downsamp a4
ka1h = (ka1h < k1? k1:ka1h)
ka1l= (ka1l > k1? k1:ka1l)
ka2h = (ka2h < k2? k2:ka2h)
ka2l= (ka2l > k2? k2:ka2l)
ka3h = (ka3h < k3? k3:ka3h)
ka3l= (ka3l > k3? k3:ka3l)
ka4h = (ka4h < k4? k4:ka4h)
ka4l= (ka4l > k4? k4:ka4l)
gka1h = ka1h
gka1l = ka1l
gka2h = ka2h
gka2l = ka2l
gka3h = ka3h
gka3l = ka3l
gka4h = ka4h
gka4l = ka4l
							endin
							instr 2
ia1h = 32768/i(gka1h)
ia1l = 32768/abs(i(gka1l))
ia2h = 32768/i(gka2h)
ia2l = 32768/abs(i(gka2l))
ia3h = 32768/i(gka3h)
ia3l = 32768/abs(i(gka3l))
ia4h = 32768/i(gka4h)
ia4l = 32768/abs(i(gka4l))
ifacta1 = (ia1h < ia1l?ia1h:ia1l)
ifacta2 = (ia2h < ia2l?ia2h:ia2l)
ifacta3 = (ia3h < ia3l?ia3h:ia3l)
ifacta4 = (ia4h < ia4l?ia4h:ia4l)
a1, a2, a3, a4 soundin  \"$value(name)\"
ar = a1 *ifacta1
ag = a2 *ifacta2
ag3 = a3 *ifacta3
ag4 = a4 *ifacta4
outs 	ar, ag, ag3, ag4
						endin
"
}
}


set sco "
i1 0 $dudu
i2 $dudu $dudu
"
set orf [open $prefs(TMPDIR)/tempnorm.orc w+]
set scof [open $prefs(TMPDIR)/tempnorm.sco w+]
puts $orf $orc
puts $scof $sco
close $orf
close $scof
catch [exec  $prefs(help:CSND)  -A -d -r $srr -k $srr -o  $prefs(TMPDIR)/tmpnorm.aiff $prefs(TMPDIR)/tempnorm.orc  $prefs(TMPDIR)/tempnorm.sco]


switch -- $ch {

2 {
set orr "
nchnls = $ch
							instr 2
a1, a2 soundin  \"$prefs(TMPDIR)/tmpnorm.aiff\", $dudu
outs 	a1, a2
							endin
"
}

1 {
set orr "
nchnls = $ch
							instr 2
a1 soundin  \"$prefs(TMPDIR)/tmpnorm.aiff\", $dudu
out 	a1
							endin
"
}


4 {
set orr "
nchnls = $ch
							instr 2
a1, a2, a3, a4  soundin  \"$prefs(TMPDIR)/tmpnorm.aiff\", $dudu
outq 	a1, a2, a3, a4
							endin
"
}
}

set scrr  "
i2 0 $dudu
e
"
set orf [open $prefs(TMPDIR)/tempnorm.orc w+]
set scof [open $prefs(TMPDIR)/tempnorm.sco w+]

puts $orf $orr
puts $scof $scrr
close $orf
close $scof
catch [exec  $prefs(help:CSND)  -A -d -r $srr -k $srr -o $value(name).norm $prefs(TMPDIR)/tempnorm.orc  $prefs(TMPDIR)/tempnorm.sco ] 
file delete $prefs(TMPDIR)/tmpnorm.aiff
destroy .normalizing
$path(winOutNom) insert 0 [file tail $value(name)].norm
set soundName $value(name).norm

</score>
