; fm1.orc Demonstration von einfacher FM (foscil) 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 icfreq = p6 imfreq = p7 imindex = p8 asig foscil iamp,ifreq,icfreq,imfreq,imindex,1 out asig endin ; fm1.sco Demonstration von einfacher FM (foscil) f 1 0 4097 10 1 ; viele Stuetzwerte ; instr start dauer ampl freq cfreq mfreq mindex ;variation des Modulationsindex i 1 0 2 20000 100 1 1.5 1 i 1 3 2 20000 100 1 1.5 2 i 1 6 2 20000 100 1 1.5 3 ;variation der Modulationsfrequenz i 1 9 2 20000 100 1 1.5 3 i 1 12 2 20000 100 1 1.8 3 i 1 15 2 20000 100 1 2.5 3 ;variation von Modulationsfrequenz und Index i 1 18 2 20000 100 1 1.5 2 i 1 21 2 20000 100 1 1.8 3 i 1 24 2 20000 100 1 2.5 4 e
; 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 ; fm3.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
und hier noch was richtig kompliziertes:
;==========================================================================; ; Schottstaedt FM String Instrument from Dodge ; ; ; ;p4 = amp p5 = pch p6 = rise p7 = dec p8 = vibdel p9 = vibwth p10 = vibrte ; ;==========================================================================; sr = 44100 kr = 2205 ksmps = 20 nchnls = 2 instr 1 iamp = p4 ifc = cpspch(p5) ;S = fc +- ifm1 +- kfm2 +- lfm3 ifm1 = ifc ifm2 = ifc*3 ifm3 = ifc*4 indx1 = 7.5/log(ifc) ;range from ca 2 to 1 indx2 = 15/sqrt(ifc) ;range from ca 2.6 to .5 indx3 = 1.25/sqrt(ifc) ;range from ca .2 to .038 kvib init 0 timout 0,p8,transient ;delays vibrato for p8 seconds kvbctl linen 1,.5,p3-p8,.1 ;vibrato control envelope krnd randi .0075,15 ;random deviation in vib width kvib oscili kvbctl*p9+krnd,p10*kvbctl,1 ;vibrato generator transient: timout .2,p3,continue ;execute for .2 secs only ktrans linseg 1,.2,0,1,0 ;transient envelope anoise randi ktrans,.2*ifc ;noise... attack oscil anoise,2000,1 ;...centered around 2kHz continue: amod1 oscili ifm1*(indx1+ktrans),ifm1,1 amod2 oscili ifm2*(indx2+ktrans),ifm2,1 amod3 oscili ifm3*(indx3+ktrans),ifm3,1 asig oscili iamp,(ifc+amod1+amod2+amod3)*(1+kvib),1 asig linen asig+attack,p6,p3,p7 outs asig,asig endin
; Test Score for Schottstaedt String f01 0 512 10 1 ;parms: start dur amp pch rise dec vibdel vibwth vibrate i01 0 2 15000 5.00 .2 .2 .75 .03 5.5 i01 + . . 6.00 i01 + . . 7.00 i01 + . . 8.00 i01 + . . 9.00 i01 + . . 10.00 e