QUICK-REF - CsoundManual - Top of this section - Previous - Contents - Index - Next

Toot 13: Spectral Fusion

For our final instrument, we will employ three unique synthesis methods-Physical Modeling, Formant-Wave Synthesis, and Non-linear Distortion. Three of Csound's most powerful unit generators-pluck, fof, and foscil, make this complex task a fairly simple one. The Reference Manual describes these as follows:

     a1    pluck   kamp, kcps, icps, ifn, imeth [, iparm1, iparm2]

pluck simulates the sound of naturally decaying plucked strings by filling a cyclic decay buffer with noise and then smoothing it over time according to one of several methods. The unit is based on the Karplus-Strong algorithm.

     a2    fof    xamp, xfund, xform, koct, kband, kris, kdur kdec,
                   iolaps, ifna, ifnb, itotdur[, iphs][, ifmode]

fof simulates the sound of the male voice by producing a set of harmonically related partials (a formant region) whose spectral envelope can be controlled over time. It is a special form of granular synthesis, based on the CHANT program from IRCAM by Xavier Rodet et al.

     a1    foscil   xamp, kcps, kcar, kmod, kndx, ifn [, iphs]

foscil is a composite unit which banks two oscillators in a simple FM configuration, wherein the audio-rate output of one (the "modulator") is used to modulate the frequency input of another (the "carrier.")

The plan for our instrument is to have the plucked string attack dissolve into an FM sustain which transforms into a vocal release. The orchestra and score are as follows:

 instr 13                         ; toot13.orc
    iamp         = ampdb(p4) / 2  ; amplitude, scaled for two sources
    ipluckamp    = p6             ; % of total amp, 1=dB amp as in p4
    ipluckdur    = p7*p3          ; % of total dur, 1=entire dur of note
    ipluckoff    = p3 - ipluckdur
    ifmamp       = p8             ; % of total amp, 1=dB amp as in p4
    ifmrise      = p9*p3          ; % of total dur, 1=entire dur of note
    ifmdec       = p10*p3         ; % of total duration
    ifmoff       = p3 - (ifmrise + ifmdec)
    index        = p11
    ivibdepth    = p12
    ivibrate     = p13
    iformantamp  = p14            ; % of total amp, 1=dB amp as in p4
    iformantrise = p15*p3         ; % of total dur, 1=entire dur of note
    iformantdec  = p3 - iformantrise

    kpluck       linseg    ipluckamp, ipluckdur, 0, ipluckoff, 0
    apluck1      pluck     iamp, p5, p5, 0, 1
    apluck2      pluck     iamp, p5*1.003, p5*1.003, 0, 1
    apluck       =         kpluck * (apluck1+apluck2)

    kfm          linseg    0, ifmrise, ifmamp, ifmdec, 0, ifmoff, 0
    kndx         =         kfm * index
    afm1         foscil    iamp, p5, 1, 2, kndx, 1
    afm2         foscil    iamp, p5*1.003, 1.003, 2.003, kndx, 1
    afm          =         kfm * (afm1+afm2)

    kfrmnt       linseg    0, iformantrise, iformantamp, iformantdec, 0
    kvib         oscil     ivibdepth,ivibrate,1
    afrmnt1      fof       iamp, p5+kvib, 650, 0, 40, .003, .017, .007, 4, 1, 2, p3
    afrmnt2      fof       iamp, (p5*1.001)+kvib*.009, 650, 0, 40, .003,.017,.007, 10,1,2,p3
    aformnt      =         kfrmnt * (afrmnt1+afrmnt2)

                 out       apluck + afm + aformnt
 endin

 f1  0  8192   10   1                     ; sine wave
 f2  0  2048   19  .5  1  270  1         ; sigmoid rise

;ins st   dr   mp   frq  plkmp plkdr fmp fmris fmdec indx vbdp vbrt  frmp fris
 i13 0    5    80   200  .8   .3    .7   .2   .35    8    1    5     3     .5
 i13 +    8    80   100  .    .4    .7   .35  .35    7    1    6     3     .7
 i13 .   13    80   50   .    .3    .7   .2   .4     6    1    4     3     .6


QUICK-REF - CsoundManual - Top of this section - Previous - Contents - Index - Next

HTML Csound Manual - © Jean Piché & Peter J. Nix, 1994-97