Als erstes eine leicht modifizerte Version von toot10 aus dem Tutorial von R. Boulanger, das die verschiedenen Filtertype auf Rauschen und auf Bandbreitenbegrenzten Puls anwendet.
Bei der Filtrierung kommt es oft zu Amplituden, die völlig verschiedenen von denen des Ausgangssignal sind. Diese entstehen z.B. durch Rückkopplungen oder aber durch massive Abschwächungen, da das Signal nicht genügend Anteile des zu Filternden Teils hat. CSound bietet die Möglichkeit, den verlorenen (oder übersteuernden) Pegel wieder auszugleichen.
Der Unitgenerator rms liefert die Energie des Eingangssignals
als gemittelten Wert von
(rms = root mean square) über
einer Periode ders Kontrollfrequenz. Der Unitgenerator gain adjustiert
den rms-Wert eines Signals auf einen angegebenen Wert, und der
Unitgenerator balance kombiniert die beiden, indem er ein
Signal erzeugt, das aus einem zweiten Signal besteht, aber den
rms-Wert eines Vergleichssignals besitzt.
; toot10.orc
sr = 44100
kr = 4410
ksmps = 10
nchnls = 2
instr 10
iattack = .01
irelease = .2
iwhite = 10000
idur = p3
iamp = p4
isweepstart = p5
isweepend = p6
ibandwidth = p7
ibalance = p8 ; 1 = left, .5 = center, 0 = right
isignal = p9 ; 0 = noise, 1 = pulse
ifilt = p10 ; 0 = tone 1 = atone 2 = reson 3 = areson
kamp linen iamp, iattack, idur, irelease
ksweep expon isweepstart, idur, isweepend
if isignal == 1 goto usepulse
asig rand iwhite
goto contin
usepulse:
asig gbuzz iwhite,50,200,0,0.95,1
contin:
if ifilt == 0 goto usetone
if ifilt == 1 goto useatone
if ifilt == 2 goto usereson
afilt areson asig, ksweep, ibandwidth,2
goto output
usetone:
afilt0 tone asig, ksweep
afilt tone afilt0, ksweep ; use 12dB Filter
goto output
useatone:
afilt0 atone asig, ksweep
afilt atone afilt0, ksweep
goto output
usereson:
afilt reson asig, ksweep, ibandwidth,2
output:
abalance balance afilt,asig
arampsig = kamp * abalance
outs arampsig * ibalance, arampsig * (1 - ibalance)
endin
; toot10.sco
f 1 0 1025 9 1 1 90
; ins strt dur amp stsw ndsw bdw bal(0-1) sound filter
i10 0 10 1 10000 20 20 .1 0 0
i10 12 10 . 8 8000 100 .9
f0 24
s
i10 0 10 1 10000 20 20 .1 1 0
i10 12 10 . 8 8000 100 .9
f0 24
s
i10 0 10 1 10000 20 20 .1 0 1
i10 12 10 . 8 8000 100 .9
f0 24
s
i10 0 10 1 10000 20 20 .1 1 1
i10 12 10 . 8 8000 100 .9
f0 24
s
i10 0 10 1 10000 20 20 .1 0 2
i10 12 10 . 8 8000 100 .9
f0 24
s
i10 0 10 1 10000 20 20 .1 1 2
i10 12 10 . 8 8000 100 .9
f0 24
s
i10 0 10 1 10000 20 20 .1 0 3
i10 12 10 . 8 8000 100 .9
f0 24
s
i10 0 10 1 10000 20 20 .1 1 3
i10 12 10 . 8 8000 100 .9
f0 24
s
e