Better error messages needed, esp in cases like this:

	Cm
	Goove foobar
	...
	
Here the mispelling of Groove is reported as an unknown chord.

Another error reporting problem comes with this:

	Groove Bass-Foe Somegroove
	
If the user intended Bass-Foo (not Foe) there is no error reported.

---> Not sure if the parsing routines will permit anything better.

--------

Look at the cresc code. It changes volume(s) at the end of each bar, and
it would be nice to change this to beats. I think some table driven code
will work here... just a have a list of volumes for each track and pop off
a value after every beat...


---------

Specify chord notes manually? Might be nice to create a 'custom' chord
from time to time ...

	C C6 Cm(c g e&+) Cm
	
In this case the 3rd chord would be called a Cm (we'll still need a name
for certain routines) but the notes will be as specified. In this case
we've just taken the 3rd (the minor tone) and put it up an octave.

PROBLEM: what do we do with the scale list associated with each chord?

-----------------

The '/' is reserved in groove names. In the future we'll write code so that a groove can specify a groove in a specific file. Example:

	Groove bvrhumba/rhumba
	
would load the 'rhumba' groove from the file 'bvrhumba.mma'.

----------

Extended voicing? With lots of synths offering more than GM voices we might want to have a bank/voice in addition to just voice. I'm thinking that to extend the current voice command all would be needed is to change to have an optional BANK appended to the voice with a comma. So:

	Voice 66,52
	
would select voice 66 from bank 52. The only problem with all this is that it will create MIDI files quite specific to a synth, and I'm not sure I want to do that or do I want to stick with GM?

This might be covered at this point with the MIDIVoice. I think this item can be deleted!

----------

LYRIC: attach each single word to a (SOLO-)note (resp. its timing)
	like:  { 4g[what]; 4e[if]; 8e[the]; 8g[lyrics;]; }

PROBLEMS: I did an initial cut of some code and found it got very complicted very fast. Here's what I tried (assume the solo/lyric string from above):

	1. Since the lyrics extract routines are called before the solo extract we need to reverse the order. Simple?
	
	2. Now, in extractSolo(), we can strip out the stuff in []s and create a new temp string. First problem comes up in the string [lyrics;] which split(';) destroys. To start with we'll have to encode ';'s in []s.
	
	3. We'll need a bunch of flags so that we don't duplicate lyrics in tracks being duplicated. Probably easy to just ignore lyrics for harmonyonly tracks.
	
	4. We'll need a check to make sure we don't have a lyric in a {} line and [].
	
	5. Once the lyric is extracted, I think we can just pass it to the lyric class, but I didn't get that far.
	
I'm really wondering if this feature is needed????
	
-----------


Modify the MIDISEQ syntax to allow for a range of beats/values. Perhaps something like:

   MIDIDEF Wow  1 Modulation 10-50,10,3
   
which would end up inserting 10 modulation events with value 10 to 50
(10, 14, 18 ... 40) at beats 1 to 3 (1, 1.2, 1.4 .. 3). Syntax is
awkward here, but it's the general idea to have:
		
		<beat> <ctrl> <value range>,<steps><final beat>
		
		
-----------------

More options for the SCALE track. Perhaps an INTERVAL command which would
let the user pick out notes from a scale to use:

	INTERVALS=1,3,5,6
	
which, assuming a Cmaj chord, would loop though the notes C, E, G, A.
Enhancments to the syntax might include: '+', '-' to change the octave
and 'b/&' and '#' to select an accidental:

	INTERVALS=1,3&,5,1+
	
would do: C1, Eb, G, C2

Rather than screwing with the scale stuff ... I think this
might be working already in bass patterns with the addition of
offsets 1..7 and #/b modifiers. If someone thinks we still need
more in scale, shout. Otherwise this is going to be deleted.

-----------

Support for slash chords? I don't see why something like Am/C shouldn't
be translated into a Am inversion. This should prevent any further operations
on the chord (ie. voicing, etc).

