
Change log for beta version 0.1 to current beta.
This entire file will be deleted when we achieve a 1.0 milestone?????

Feburary 16/2003

Released version 0.1 to the world.

=================================

May 4/2003

Added new error message to USE. It now checks for a matching filename
is a different case. Should help for this common error. I've not done
the same for INCLUDE, and it's probably not necessary????

----------

Added a few more chords. I'm not going to document these here, they are
updated in the docs.

-----------

Fixed up the read() code so that it returns lists. The BEGIN/END logic
has been moved to read() as well, which fixes the earlier problem
with repeats not working properly. NOTE for docs: BEGIN/END are local
to a file, and an error occurs if you try USE or INCLUDE while
a BEGIN is active.

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

Continuation lines! Multiple lines in a file can be concatenated by
ending successive lines with a single '\'. For example:

    Chord Define G1	1 4 90 0 90 0 ; \
       2.5 8 90 0 90 0; \
       3 4 90 0 90 0; \
       4 4 90 0 90 0  
       
Get translated to the single line:

	Chord Define G1	1 4 90 0 90 0 ; 2.5 8 90 0 90 0; 3 4 90 0 90 0; 4 4 90 0 90 0  
 
Comments are stripped AFTER lines are appended. So:

    Chord Define G1	1 4 90 0 90 0 ; // This is a comment \
       2.5 8 90 0 90 0
       
Becomes:

    Chord Define G1	1 4 90 0 90 0 ;

NOTE: The 2nd line as well as the comment have been deleted!
    
We could change this, but the whole ugliness of continuation lines probably
suggests that the way we have it is the right way. Comments?
    
    
Note that you can use continuation lines at any point in your input. 

INPUT FILE FORMAT CHANGE!!!!!!!!!!! With this the trailing '@' to indicate
the end of a DEFINE has been eliminated. In fact, having a trailing '@' will
generate an error. They have been deleted from all my files....

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

The docs have been split into two different files. The reference to the
standard library has been taken out of the reference manual and is
now a separate file (lib.ps). As well, a tutorial has been started.

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

Test for proper python version added.

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

BEGIN/END Blocks can now be nested. This means that you can do something like:

	Begin Chord
		Begin Define
			C1234 4 
		End
		Octave 4
		Voice Piano1
	End
	
This is most useful for Doc blocks.

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

Documentation blocks. Please see the ref-man for detail, but a new set of
commands for embedding documentation in library files has been added. Also,
added a -x option to print out (eXtract) the doc strings.

The syntax for DefGroove has been expanded to permit a trailing comment.

	DefGroove Waltz This is a waltz groove
	
Defines the groove, but it also does a:

	Doc Defines This is a waltz groove
	
This should help in maintaining library docs!


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

Added new comand:

	Chord | BASS | etc. LIMIT <value>
	
This limits the number of notes of a chord used. Mostly, this will kill
off the odd sounding (to some people) of the higher notes in chord, esp.
when the chord is an 11th, 13th, etc. 


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

Added new command:

	EOF
	
This stops the processing of a file. Useful if you just want to
test the first part. Note that the rest of the file is NOT PARSED.


May 15, 2003 - released 0.2

==========================================

New command: Duplicate. This duplicates each note for Scale, Chord, Apreggio,
and Bass by the specified ocatve.

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

July 19, 2003

Fixed up error reporting to include filename being processed.

Added several lib files.

August 2, 2003 - released 0.3

===============================================

Aug 28, 2003

Added CUT command.


Septebmer 18, 2003

Variable support, conditionals, label and goto have been added.
This is a big addition (and probably has bugs!).
Read the new chapter in the manual "Varaibles..." for all the details.


Changed the input reading routine again. Continuation lines and comments
have been changed once again. Comments are now stripped after line joining.


October 19, 2003 - released 0.4


Modified InvertChord function. Chords are no longer rotated; just the
notes are changed.

December 4, 2003

Added new command:

	Debug [mode=on/off] Modes debug, patterns, sequence, runtime, warnings, expand.
	
This is the same as the commandline options -dpsrwe


Changed command line options a bit. All document extractions are now part of -D.

Added commands to extract midi inst. and chord info (see -D)

Reworked chords into a class.

December 5, 2003

The file extenstion .mma has been created. For song files using an extension is optional,
but for lib files using automatic groove detection it is mandatory. Simply, when
mma opens a file it first checks to see if the filename as given exists. If it does
not exist AND the filename does not end with ".mma", the extension is added. The deliberate
exception is that when libraries are searched/processed with the -g option only
files with a .mma extension are processed.

A lot of testing is done to make sure that files can be specified with or without
the .mma extension. And tests are done to strip the extension when creating
the midi file. If you find a bug here, please shout at me!

December 11, 2003

Added LYRIC command. See the docs for details, but the short version is:

	lyric My lyrics are not so good. 
	
This adds the text in the current bar, so it should appear before the chord
data. Lyrics are added a MIDI Meta-event  data ($FF $05) in the Meta track.


December 17, 2003

The LIMIT command has been changed. No longer can you specify different
values for each bar in the sequence. Just didn't make musical sense. Shout
at me if you think you need it.

December 19, 2003

Changed the defaults for searching for the library. We now set up the
path depending on what library can be found.

December 22, 2003

Added DIRECTION UP/DOWN code to walking bass.

Added -o option to display complete filenames as they are opened. Handy to
figure what lib files are really being used. 

Chord voicing: This has been a lot of work (THANKS ALAIN!). I think it
is working well enough to set it free in the real world. Please read the
new chapter in the reference manual dealing with voicing! This is a big
change and makes tracks much more musical.


December 26, 2003

Okay--this is a big release! And there are a lot of changes NOT
listed above (sorry). I'll try to be more prompt in future releases.
And, yes, I think we are approaching 1.0!

Released 0.5.

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

MAJOR CHANGE: MMA is now modular Python! 

Install note: the python modules for mma MUST be in one of the following
locations:

	/usr/local/share/mma/modules		-- the preferred location
	/usr/share/mma/modules				-- alternate
	./modules							-- permits running from working dir
	

The library location has been changed. The standard lib is now in
on of:

	/usr/local/share/mma/lib/stdlib
	/usr/share/mma/lib/stdlib
	./lib/stdlib
	
The idea is that other template libs should be put into the lib
directory.

This does create a problem for people with USE directives calling
standard files. You really should get rid of the USE and rely
on 'mma -g' and the database it creates, or change the paths
in USE to include the subdir. IE, change "use rhumba" to "use stdlib/rhumba".

To complete this, we've modifed the -g code (and made it much simpler). It now
runs MUCH faster. It also scans subdirectories. And, if there is a special
file "MMAIGNORE" in a directory, that dir will be ignored (including subdirs).

The SetLibPath command has been modified. It now looks for a '+'
as a leading char in any of the args, or by itself. If found, ALL
the paths in the command are APPENDED to the current path; otherwise
the libpath is set to path(s).

Rewritten part of the tutorial. Originally we used "Happy Birthday" as
an example song, but that song is under copyright (really!) and we
can't legally include the score for it. So, we're using "Fella Bird"
instead.

Added MIDI command to send arbitrary MIDI data to any track. See docs!

Added the IncPath directive. This sets the search path for MMAstart, MMAend
and Include paths.

MMAstart and MMAend can now have multiple values. 

February 7, 2004

Again, way too long in releasing this. But, the modularization changes
keep biting back. I think it's stable now. Feedback appreciated!

Fixed bug in random chord movement which caused chords to float off
the keyboard.

February 9, 2004

Released 0.6

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

February 10, 2004

The chord table has been changed. Duplicates are now listed in
a synonym table. Added code to properly handle this in the doc
generator as well.


Minor change to FERMATA. If the offset is negative (FERMATA -1 1 150) then
all note-on events in the specified beat are cancelled. See docs for detailed
explanation.


Added RIFF. A riff is a one bar override to an existing pattern.
See the new chapter on RIFFs in the docs.

Better error detection in main module when loading modules.

In specifying note durations the dotted and double dotted notation has
be added. So, "2." = "2+4" = "4+4+4"; "2.." == "2+4+8".

The notation in patterns '3' was generating a 1/4 note triplet, not a 1/8 as
advertised. Fixed (you may have pattern/lib issues).

MIDI tracks are now automatically allocated. The -c command now parses
the entire file and then reports MIDI channel usage (no file is produced).

The MIDI commands for Portamento, Pan, TrackName and ChannelVolume are
now stacked in the track buffers. They are sent into the MIDI stream when
musical data is created for the track. This saves on creating MIDI
tracks with only directives, but no data. Also makes it easier to
assign these events to the track, not the channel.

Add the MELODY and SOLO tracks. This lets you add any kind of music
to your tracks. Added the commands KEYSIG, AUTOSOLOTRACKS and HARMONY.
See the new chapter in the docs.

I've spent a few days on the docs and have successfully implementing
latex2html for all the files. This means that there is now an HTML
version of the docs in addition to the ps standard.


Added COPY command. This takes a useful subset of parms from one track
and copies it to another. Useful in libs when you want a set of tracks
with the same articulation, voicing, etc.

April 19, 2004

Released 0.7

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

