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