| another old message i had waiting:
from hans mikelson long ago, in response to a question about feedback
fm:
> a1 init 0
>
> aenv adsr iatt, idec, islev, irel
>
> a1 oscil aenv, ifqc*(1+a1), 1
>
> outs a1, a1
>
> endin
>
> The pitch tends to drift somewhat though I think.
>
actually for real feedback fm you need something a bit more complicated
than that, where you can control the modulation index. below is a simple
and naively commented orchestra
; ============================================================
; fdbckfm.orc
sr = 44100
kr = 44100
ksmps = 1
instr 1 ; feedback fm
iamp = p4 ; max amplitude
ifc = p5 ; center frq
indx = p6 ; max. modulation index
afrq init ifc ; initialize oscil frq to center frq
a1 oscil 1,afrq,1 ; oscillator, normalized to 1
kndx line 0,p3,indx ; vary modulation index
afm = afrq * a1 ; calculate modulation frq
adev = afm * kndx ; calculate deviation frq
afrq = ifc + adev ; calculate oscil frq
kamp linseg 0, .1, iamp, p3-.2, iamp, .1, 0
aout = a1 * kamp
out aout
endin
; ============================================================
; fdbckfm.sco
f1 0 8192 10 1
i1 0 3 25000 300 .9
i1 3.2 4 25000 300 2
e
; ============================================================
it's very important to note that the range of usable modulation indexes
in feedback fm is significantly lower than in simple fm, generally I <
1.
in my orchestra pitch tends to raise when I gets close to 1, and for I >
1.2 aprox the system becomes unstable, as you can see in the second
note. i'm not sure if that's something inherent to the technique, or
maybe it's a problem with this particular implementation.
i would appreciate some comments.
|