>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