; 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