>From dek Tue Jan 27 18:22 EST 1987 remote from cbnds
Subject: CMU MIDI Toolkit

As promised, here's a brief description of the CMU MIDI Toolkit (CMT):

    CMT is a collection of programs developed at the Center for Art & Technology
at Carnegie-Mellon University and is available for $20 (unless it's gone up
since last summer) to cover the costs of duplication & shipping.  The address
to write to is:
	Center for Art & Technology
	College of Fine Arts
	Carnegie Mellon University
	Pittsburgh, PA  15213-3890

    The package includes two DS/DD 5.25" floppy disks and a 70+ page
8.5" x 11" manual.  I assume that the programs were written on a real
IBM PC, but everything seems to work fine on my PC 6300.  The source code
(which is included) is written in Lattice C and assembler.  Unfortunately,
I have a different C compiler and no assembler, so I could only make
modifications after an extensive porting effort.  The programs included are:

	adagio - Plays score files via the synth(s) connected to the MPU-401.
	transcri - Reads the MPU-401 MIDI in and generates a score file.
	record - Plays score file while simultaneously generating new score
		data from the MIDI in.
	tuning - Creates tuning files to specify non-equal temperament.
	dxget - Records system exclusive messages in a file.
	dxput - Sends files created by dxget back to the synthesizer.
	mm - Prints an English translation of an incoming MIDI data stream.

Most of my use of the CMT has consisted of using an ordinary text editor
to produce score files, which I then play using 'adagio'.

Pros:
    - Cheap.
    - Works pretty well for what it's designed to do.  I don't really want
	to enter music from my MIDI keyboard because I can't play worth
	beans, so the 'adagio' philosophy suits me fine.
    - Can support non-equal-tempered tunings via a file that tells how far
	to pitch bend each of the notes to get to the pitch
	you want for it.  Any given MIDI channel can only be played mono-
	phonically with this approach, of course.  I have not tried this.
    - Can send certain MIDI commands (e.g., pitch bend, patch changes) at
	specified times.  However, it can't send data for all the MIDI
	controllers.
    - Can change tempo at any point.  Also, you can scale the tempo of a
	whole song up and down by just changing one number, with fast parts
	staying proportionally faster than the slow parts.

Cons:
    - Doesn't support release velocity.  (This may not be a problem for you.)
    - Finest time resolution is .01 seconds.  The manual claims this is the
	limit of human perception, but all those articles in "Keyboard"
	about MIDI delay don't support this.  I cannot prove either view
	from personal experience.
    - Doesn't have a good notation for note timing relationships.  That is,
	there's no clean way to make it play legato vs. stacatto (although
	it can be done).  Also, there's no clean way to get notes to play
	ahead of or behind the beat (although that can be done, too).  This
	issue is probably my biggest gripe with CMT because it makes it
	very hard to get typed-in scores to sound natural.
    - Has no notion of measures, so there's no easy way to just play part
	of a song (although that can be done, too, by putting each measure
	in a separate file (ugh!) and then telling 'adagio' which files you
	want to hear).
    - The executables are compiled using the small memory model, which means
	that, according to the manual, a single song can only contain about
	4000 notes.  With the proper compiler/assembler, this could easily
	be overcome, since source code is included.
    - The score files produced by the 'transcribe' program give all note
	times in 100th's of a second.  It doesn't use a tempo indication to
	figure out whether you just played a quarter note, or whatever.
    - Can't send certain handy MIDI commands, like 'omni off'.  This is a
	problem for me because my poor old Poly-61 comes up in omni mode
	and there's no front pannel way to turn that off.

				David Kirsh

