sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; ; This is fm-bell written by Michael McNabb and distributed with ; CLM (Common Lisp Music). The CLM original is in the file ; fmex.ins. ; ; TODO - the envelopes are parametric in CLM. ; Potentially they should be put in a table in the score. instr 1 isinetbl = 1 idur = p3 iamp = p4 ifreq = p5 indx = p6 ifm1index = 32.0 * ifreq ifm2index = 4.0 * (8.0 - ifreq / 50.0) ifm3index = ifm2index * 0.705 * (1.4 - ifreq / 250.0) ifm4index = 32.0 * (20.0 - ifreq / 20.0) imod1freq = ifreq * 2.0 imod2freq = ifreq * 1.41 imod3freq = ifreq * 2.82 imod4freq = ifreq * 2.4 icar1freq = ifreq icar2freq = ifreq icar3freq = ifreq * 2.4 ; index envelope kindxenv expseg 1.0, idur, .01 ; amp envelope kampenv expseg .01, .002, 1, idur-.002, .01 ; modulator 1 amod1phs phasor imod1freq amod1sig tablei amod1phs, isinetbl, 1, 0, 1 amod1sig = (ifm1index * indx * kindxenv) * amod1sig ; carrier 1 acar1phs phasor icar1freq + amod1sig acar1sig tablei acar1phs, isinetbl, 1, 0, 1 ; modulator 2 amod2phs phasor imod2freq amod2sig tablei amod2phs, isinetbl, 1, 0, 1 ; modulator 3 amod3phs phasor imod3freq amod3sig tablei amod3phs, isinetbl, 1, 0, 1 ; amod2sig now sums amod2sig and amod3sig amod2sig = kindxenv * ((ifm2index * amod2sig) + (ifm3index * amod3sig)) ; carrier 2 acar2phs phasor icar2freq + amod2sig acar2sig tablei acar2phs, isinetbl, 1, 0, 1 ; modulator 4 amod4phs phasor imod4freq amod4sig tablei amod4phs, isinetbl, 1, 0, 1 amod4sig = (ifm4index * indx * kindxenv) * amod4sig ; carrier 3 acar3phs phasor icar3freq + amod4sig acar3sig tablei acar3phs, isinetbl, 1, 0, 1 out iamp * kampenv * (acar1sig + (0.15 * acar2sig) + (0.15 * acar3sig)) endin
Score:
; Table #1: sinewave f 1 0 1024 10 1 ; 1 2 3 4 5 6 ; # st drn amp freq index i 1 0 5.0 20000 233.046 0.750 e