CAdditiveInstrument is first initialized by a pointer to the parameter xml node,
        which it uses to populate the parameters such as sound definitions. Afterward it
        is given the Note, from which it reads things like the starting and ending frequency
        as well as the starting and ending sound definition. Internally it uses a vector of
        CSoundDef classes to hold the sound definitions, each represents a summation of sin
        waves.  It also uses a CCrossFade and CADSR node to represent the fading between
        CSoundDef and Envelope, respectively.  It uses the proper CSoundDefs as sources for
        the CCrossFade node and the CCrossFade node as source for the CADSR node.  When
        Generate is called on the CADSR node it is called recursivly on the child nodes and
        then interpolated via the ADSR rules.
        In generating the soundwave, it checks the envelope to see how far along we are, and uses
        that percentage to interpolate both the frequency and cross-fading.