Toot 7

Now we will add the ability to do a linear crossfade between any two of our four basic waveforms. We will employ our delayed vibrato scheme to regulate the speed of the crossfade.

The schematic drawing below is the graphical representation of the connection of the opcodes in this tootorial.

[TOOT 7 Schematic]

TOOT 7 Schematic

<CsoundSynthesizer>
<CsOptions>
-odac
</CsOptions>
<CsInstruments>

          instr 7

ifunc1    =         p11                                ; initial waveform
ifunc2    =         p12                                ; crossfade waveform

ifad1     =         p3 * p13                           ; calculate initial fade (% of dur)
ifad2     =         p3 - ifad1                         ; calculate remaining duration

irel      =         .01                                ; set vibrato release time
idel1     =         p3 * p10                           ; calculate initial delay (% of dur)
isus      =         p3 - (idel1 + irel)                ; calculate remaining duration

iamp      =         ampdb(p4)
iscale    =         iamp * .166                        ; p4=amp
inote     =         cpspch(p5)                         ; p5=freq

k3        linseg    0, idel1, p9, isus, p9, irel, 0    ; p6=attack time
k2        oscil     k3, p8, 1                          ; p7=release time
k1        linen     iscale, p6, p3, p7                 ; p8=vib rate
a6        oscil     k1, inote*.998+k2, ifunc2          ; p9=vib depth
a5        oscil     k1, inote*1.002+k2, ifunc2         ; p10=vib delay (0-1)
a4        oscil     k1, inote+k2, ifunc2               ; p11=initial wave
a3        oscil     k1, inote*.997+k2, ifunc1          ; p12=cross wave
a2        oscil     k1, inote*1.003+k2, ifunc1         ; p13=fade time
a1        oscil     k1, inote+k2, ifunc1

kfade     linseg    1, ifad1, 0, ifad2, 1
afunc1    =         kfade * (a1+a2+a3)
afunc2    =         (1 - kfade) * (a4+a5+a6)

          out       afunc1 + afunc2

          endin

</CsInstruments>
<CsScore>

f1   0    2048 10   1                                                                ; Sine
f2   0    2048 10   1    0.5  0.3  0.25 0.2  0.167     0.14      0.125     .111      ; Sawtooth
f3   0    2048 10   1    0    0.3  0    0.2  0         0.14      0         .111      ; Square
f4   0    2048 10   1    1    1    1    0.7  0.5       0.3       0.1                 ; Pulse


;in st    dur  amp  frq       atk  rel  vbrt vbdp vbdl stw  ndw  crstm
i7   0    5    96   8.07      .03  .1   5    6    .99  1    2    .1
i7   6    5    96   8.09      .03  .1   5    6    .99  1    3    .1
i7  12    8    96   8.07      .03  .1   5    6    .99  1    4    .

e
</CsScore>
</CsoundSynthesizer>