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

Toot 4: Chorusing

Next we'll animate the basic sound by mixing it with two slightly detuned copies of itself. We'll employ Csound's "cpspch" value converter which will allow us to specify the pitches by octave and pitch-class rather than by frequency, and we'll use the "ampdb" converter to specify loudness in dB rather than linearly.

Since we are adding the outputs of three oscillators, each with the same amplitude envelope, we'll scale the amplitude before we mix them. Both "iscale" and "inote" are arbitrary names to make the design a bit easier to read. Each is an i-rate variable, evaluated when the instrument is initialized.

  instr 4                            ; toot4.orc
   iamp    = ampdb(p4)               ; convert decibels to linear amp
   iscale  = iamp * .333             ; scale the amp at initialization
   inote   = cpspch(p5)              ; convert "octave.pitch" to cps
   k1  linen     iscale, p6, p3, p7  ; p4=amp
   a3  oscil     k1, inote*.996, 1   ; p5=freq
   a2  oscil     k1, inote*1.004, 1  ; p6=attack time
   a1  oscil     k1, inote, 1        ; p7=release time
   a1  =         a1 + a2 + a3 
       out       a1             
  endin     

  f1 0 4096 10 1                                 ; sine wave
;instr    start  duration  amp(p4)   freq(p5)  attack(p6) release(p7)
  i4       0     1         75        8.04     .1          .7
  i4       1     1         70        8.02     .07         .6
  i4       2     1         75        8.00     .05         .5
  i4       3     1         70        8.02     .05         .4
  i4       4     1         85        8.04     .1          .5
  i4       5     1         80        8.04     .05         .5
  i4       6     2         90        8.04     .03          1
e


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

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