next up previous contents
Nächste Seite: lineare vs. exponentielle FM Aufwärts: Einführung Vorherige Seite: Frequenzmodulation   Inhalt

Beispiele zur FM


; 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



Unterabschnitte

Thomas Neuhaus
2001-01-14