OVERVIEW Tclmidi is a language designed for creating and editing standard MIDI files. Since tclmidi is a language supporting function calls, recursion and conditionals, you can use these features for editing, sequencing and writing complex scripts. The brave might even want to try their hand at algorithmic composition. The basis of tclmidi is John Ousterhout's popular TCL language. Tclmidi is implemented as a loadable library so you can embed it in any TCL script along with any other TCL extension you might find useful. This include the TK graphics extensions. WHAT'S NEW IN TCLMIDI-4.0 Quite a lot actually. I've ripped out all my driver code. This means you will no longer be able to use tclmidi to play or record midi files. It was just getting too difficult to support all the different OSes as well as the different adapters. Sorry. I've also completely reimplemented the code behind the tclmidi commands. Previous releases implemented the TCL extensions in C++ (and if you've been using tclmidi a very long time, you might remember a version called tclm that used C). In the past year or so I've discovered the wonderful language called Eiffel. Tclmidi is now written in Eiffel and based on a MIDI Eiffel library I wrote called midi-eiffel. Eiffel is a great language and I strongly recommend it to every one. In fact, you'd probably be better off writing your MIDI applications directly in Eiffel with help of the midi-eiffel library. Aside from the typical problems found with any new major software release, you should find this new version of tclmidi more robust, fuller featured and easier to understand. INCOMPATIBILITIES There are a few incompatibilities. By default I now number both tracks and channels starting from 1 instead of 0. If you want the old behavior, you can compile with -DCOMPAT_3. There are also a couple commands that just aren't backwards compatible. The MetaSMPTE event comes to mind. It now has an extra parameter that specifies the timecode format (24 frames per second, 25, 30 drop frame or 30 non-drop frame). I consider this a bug fix. The same goes for the MetaKey event. I have no idea what I was thinking before. A minor key with no accidentals is not "C Minor," it is "A Minor." Again, another bug fix. REQUIREMENTS You need tcl-8.0 or tcl-8.1. You also need SmallEiffel. There are different Eiffel compilers available and their standard libraries are not compitible. I chose SmallEiffel because it is both fast and free. Furthermore, you need SmallEiffel version -0.79 not the latest -0.78 version (they're counting backwards from -1.00). Tclmidi tickles a bug in -0.78. Hopefully this will be fixed soon. You will also need the midi-eiffel package. I might eventually bundle the two together, but for now they're separate. Of course it is possible I've already bundled midi-eiffel with tclmidi and just forgot to update the file. If there's a directory here called midi-eiffel, then you probably don't need to download midi-eiffel. See below for the location of tclmidi and midi-eiffel. MAILING LIST There is a low traffic mailing for tclmidi. To subscribe, send mail to tclmidi-request@boogie.com with the phrase "subscribe" in the body of the message. You can mail the list at tclmidi@boogie.com WHERE TO FIND TCLMIDI Have you ever wanted to upgrade a software package, but you couldn't remember where you found it - despite having the sources available? Or found a message saying to download an extension "from the same place you found this"? I hate that. I'm telling you right here that you can download the latest version of tclmidi and midi-eiffel from ftp.boogie.com. I'll do my best to keep this site alive. WHERE TO FIND SMALLEIFFEL Check out this URL: http://www.loria.fr/SmallEiffel Since tclmidi requires an older version of SmallEiffel at the time of this writing, I'll also keep SmallEiffel-0.79 available at ftp.boogie.com. Mike Durian durian@boogie.com June 26, 1999