Bestimmte Generatoren von CSound können nicht alle Signalklassen erzeugen oder können nicht alle Signalklassen verarbeiten. Dies wird im Manual durch den ersten Buchstaben des angegebenen Parameters oder Ausgangssignals dargestellt, der sich im Wesentlichen an das o.g. Schema hält. Ausnahmen sind: k-rate Eingänge können immer auch i-rate Eingänge sein, ist der erste Buchstabe ein x, so können alle Signalklassen verwendet werden. Außerdem können bestimmte Eingänge ,,offen`` Bleiben. Diese werden dann in eckige Klammern eingeschlossen.
Beispiele:
krmsr,krmso,kerr,kcps | lpread | ktimpnt,ifilcod,inpoles,ifrmrate |
ar | lpreson | asig |
kr | linen | kamp,irise,idur,idec |
ar | linen | xamp,irise,idur,idec |
D.h.: der Generator lpread erzeugt 4 k-rate Signale, benötigt ein k-rate und ein i-rate signal, 2 weitere i-rate signale sind optional und mit sinnvollen Werten vorbelegt. Der Generator lpreson erzeigt ein a-rate Signal und benötigt ein a-rate Signal. Der Generator linen kann k-rate oder a-rate signale erzeugen. Erzeugt er ein k-rate Signal, muß am Eingang amp ebenfalls ein k-rate Signal (oder i-rate Signal) anliegen. Erzeugt er ein a-rate Signal, kann Jedes Signal an diesem Eingang anliegen. Außerdem benötigt er noch 3 i-rate Signale.
Nun aber die Beispiele: Grundsätzlich werden wir ab jetzt unsere Klänge mit einer Hüllkurve versehen. Dazu probieren wir zunächst einige Hüllkurven aus, indem wir einen einfachen ADSR-Generator bauen, den wir von der Partitur aus mit verschiedenen Werten versehen:
; huellk.orc Demonstration von einfachen Huellkurven (linseg) sr = 44100 ; samplerate 44.1 kHz kr = 441 ; Kontrollrate, 441 Hz ksmps = 100 ; Anzahl Audiosamples pro Kontrollsample nchnls = 1 ; Mono instr 1 iamp = p4 ifreq = p5 iattack = p6 idecay = p7 isustain = p8 irelease = p9 kamp linseg 0,iattack,iamp,idecay,isustain,p3-(iattack+idecay+irelease), isustain,irelease,0 asig oscil kamp,ifreq,1 out asig endin instr 2 iamp = p4 ifreq = p5 iattack = p6 idecay = p7 isustain = p8 irelease = p9 kamp expseg 0.0001,iattack,iamp,idecay,isustain,p3-(iattack+idecay+irelease), isustain,irelease,0.0001 asig oscil kamp,ifreq,1 out asig endin ; huellk.sco Demonstration von einfachen Huellkurven (linseg) f 1 0 4097 10 5 0 3 0 1 ; mal was anderes als immer nur Sinus ; instr start dauer ampl freq attack decay sustain, release i 1 0 5 20000 200 0.01 0.1 5000 0.5 i 1 6 5 20000 200 3 0.1 20000 1.8 i 1 12 5 5000 200 1 1.5 20000 0.3 ; i2 hat exponentielle Huellkurven! i 2 18 5 20000 200 0.01 0.1 5000 0.5 i 2 24 5 20000 200 3 0.1 20000 1.8 i 2 30 5 5000 200 1 1.5 20000 0.3 e
Als nächstes eine Frequenzmodulation mit foscil. Die Frequenz des modulierenden Generators soll sich dabei exponentiell ändern. Die Grenzwerte kommen aus der Partitur:
; fm2.orc Variable Modulationsfrequenz sr = 44100 ; samplerate 44.1 kHz kr = 441 ; Kontrollrate, 441 Hz ksmps = 100 ; Anzahl Audiosamples pro Kontrollsample nchnls = 1 ; Mono instr 1 iamp = p4 ifreq = p5 imfreqs = p6 imfreqe = p7 kamp linseg 0,0.3,iamp,p3-0.8,iamp,0.5,0 kmodfreq expon imfreqs,p3,imfreqe asig foscil kamp,ifreq,1,kmodfreq,3,1 out asig endin ; fm2.sco Variable Modulationsfrequenz f 1 0 4097 10 1 ; Sinus ; instr start dauer ampl freq mfreqs mfreqe i 1 0 10 20000 200 0.001 3.0 i 1 12 2 20000 300 1.5 0.002 i 1 15 20 20000 300 1.5 0.002 e
Nun wollen wir zusätzlich den Modulationsindex verändern. Auch hier sollen die Grenzwerte aus der Partitur kommen
; fm3.orc Variable Modulationsfrequenz und index sr = 44100 ; samplerate 44.1 kHz kr = 441 ; Kontrollrate, 441 Hz ksmps = 100 ; Anzahl Audiosamples pro Kontrollsample nchnls = 1 ; Mono instr 1 iamp = p4 ifreq = p5 imfreqs = p6 imfreqe = p7 imindxs = p8 imindxe = p9 kamp linseg 0,0.3,iamp,p3-0.8,iamp,0.5,0 kmodfreq expon imfreqs,p3,imfreqe kmodindx line imindxs,p3,imindxee asig foscil kamp,ifreq,1,kmodfreq,kmodindx,1 out asig endin ; fm2.sco Variable Modulationsfrequenz f 1 0 4097 10 1 ; Sinus ; instr start dauer ampl freq mfreqs mfreqe mindxs mindxe ; zunaechst konstante Modfreq i 1 0 10 20000 100 1.2 1.2 1 5 i 1 12 2 20000 120 1.5 1.5 5 1 i 1 15 10 20000 130 1.3 1.3 5 1 ; nun alles Variabel i 1 27 5 20000 120 3.1 1.2 1 5 i 1 34 2 20000 100 1.5 0.05 5 1 i 1 38 10 20000 130 0.05 1.5 5 1 i 1 50 10 20000 140 1.5 0.05 5 1 e