< Prev           Iterated Dynamics Version 1.0          Page 141 Next >
 5.13.3 Envelopes

  Here's some more information about the concept of a note envelope for
  those unfamiliar with sound synthesis terminology, it's all about how
  the dynamics of a note are defined (i.e the way in which the loudness
  changes during the life of a note)

   Graph of a note's volume during it's life cycle:

      /\______                     /\_______
  __/          \_____ ... _______/          \_________
  0011111111110000000 ... 0000000111111111110000000000
    A  D  S   R                  AAADSSSSSSSR

  The string of 0's and 1's represents the keyon/off state of the voice,
  1's indicate the key being held down. The attack, decay, sustain, and
  release portions of the envelope are represented by ADSR, this is what
  happens:

  When the note is first triggered on the volume rises to peak volume at a
  rate determined by the attack value.

  Once at the full level the decay period starts and the volume dies down
  (at a rate set by the decay value) to a level that is set by the sustain
  value.

  The note continues to sound at this volume until triggered off (the
  'key' is released) whereupon it dies down to zero volume at the release
  rate.

  And so on.  Now, with the current voice assignment method, while orbits
  are being generated continuously, timing looks like this (with four note
  polyphony in this example)

     Voice:
       1 *111.....*111....
       2 .*111.....*111...
       3 ..*111.....*111..
       4 ...*111.....*111.
       5 ....*111.....*111
       6 .....*111.....*11
       7 ......*111.....*1
       8 .......*111.....*
       9 ........*111.....
  orbit: 12345678901234567

  Where:
        . = key off (silent or releasing note)
        * = note assigned a value and triggered on, attack, decay, sustain
        phase
            begins
        1 = note held on, you'll notice that above there are only ever
        four
            notes held on at any one time, though more than four may be sounding
            if there is a long release value.