[ Home Page ] [ Eiffel Archive ] [ Eiffel Classes and Clusters ]

Arc de Triomphe clipart (2486 bytes)

Tclmidi Library - midi editor

Written by Mike Durian.

tclmidi-4_1_tar.gz (11,564 bytes) source code

ftp://ftp.boogie.com/pub/midi latest version location (Mikes place)


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.


Not much since version 4.0b1. The only change is to support the latest SmallEiffel compile, version -0.77b2. This version fixes a bug that kept version -0.78 from compling the midi-eiffel library which is required for tclmidi. I've also decided I don't like my b1, b2, etc. style of beta designations. From now only there will only be numeric changes. If a version is particularly iffy, I'll mention it. Since 4.0b1 wasn't out very long, I'll keep the "WHAT'S NEW" section for it here as well.


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.


There are a few incompatibilities with the old 3.x tclmidi release. 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.


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, at the time of this writing, the last official release of SmallEiffel is version -0.78. This version has a bug that keeps the midi-eiffel code (and thus tclmidi) from compiling. The SmallEiffel team recently release version -0.77b2 which fixes this bug. Please use version -0.77b2 or a more recent version (keeping in mind that SmallEiffel is counting backwards from -1.00 towards 0). You will also need the midi-eiffel package. I might eventually bundle the two together, but for now they're separate.


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


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.


Check out this URL: http://SmallEiffel.loria.fr/index.html SmallEiffel is truly a fabulous compiler, and Eiffel is a great language. Hats off to Dominique Colnet, Olivier Zendra and everybody else involved with SmallEiffel.
Mike Durian
September 6, 1999

[ Home Page ] [ Eiffel Archive ] [ Eiffel Classes and Clusters ]