here's a sketch of what the future 
documentation will be:

program args
---

  arg 1 = filename of input composition file
  arg 2 = filename of output WAV file

file format
---

   - hiearchical tag-based format somewhat
     similar to HTML.  syntax is loosely
     C-style, with brackets bounding tag
     contents; i.e tagname { tag contents }.

   - each file must specify a global
     bpm (beats per minute) value, to 
     provide as a reference in song
     construction.  the bpm is more 
     properly called mpm or measures
     per minute, since each "beat" (bpm)
     or "measure" (mpm) can be divided
     into a given number of sub-beats,
     via the measure division attribute
     of the sample tag.
 
   - tags are as follows:

  drumm - root tag; contains 
          a list of tags.
  {
    flowrate
    {
      bpm (an int)
    }
    files - contains a list of all
    {       files used 
      file 
      {
        path (a string)
        name (a string)
      }
    }  
    letsdrumm - tag to start a
    {	        composition; simply
                contains a list of samples

      sample - main tags used to
      {        layout the compositon
        name (a string)
	minute number (an int)
	measure number (an int)
	measure divison (an int)
	  -- how many beats per measure?
	measure offset (an int)
      }
    }
  }

  - thus, the simplest song file is 62 bytes:
      drumm{flowrate{1}files{file{a a}}letsdrumm{sample{a 0 0 4 0}}}