<- C I ->
Toot Contents

Toot 7: Crossfade

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.

     instr 7                         ; toot7.orc
     ifunc1 = p11                    ; initial waveform
     ifunc2 = p12                    ; crossfade waveform
     ifad1 = p3 - (p13 * p3)         ; calculate initial fade
     ifad2 = p3 - ifad1              ; calculate remaining dur
     irel = .01                      ; set vibrato release
     idel1 = p3 - (p10 * p3)         ; calculate initial delay
     isus   = p3 - (idel1- irel)     ; calculate remaining dur
     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
 
   f1 0 2048 10 1                                           ; Sine
   f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111           ; Sawtooth
   f3 0 2048 10 1 0  .3  0   .2  0  .14  0   .111           ; Square
   f4 0 2048 10 1 1 1 1 .7 .5 .3 .1                         ; Pulse
;ins  strt  dur  amp   frq    atk rel vibrt vbdpt vibdel startwave  endwave  crosstime
 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        .1
e

<- C I ->
Toot Contents
Prepared from the MIT Media Lab Csound Manual, PJN, Nov 1994.