OVERVIEW
  Tclmidi is language designed for creating and editing standard
MIDI files.  With the proper device interface it will also play
and record 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 adds a few new commands specific to manipulating MIDI
files, and playing/recording them.  You'll need to have TCL-7.4
installed on your system to build tclmidi (I don't know if TCL-7.5 will
work).
  I've tried to be POSIX complient while writing tclmidi.  It has
been built on numerous machines and should compile on any Unix
like machine with a C++ compiler.
  Tclmidi comes with a device driver to interface with a few types of
MIDI cards and also support for using your serial port as a MIDI
interface.  Supported cards include MPU401, MQX32, Gravis UltraSound
and SoundBlaster (though both the GUS and SB support is limited to the
MIDI ports, the driver does not yet use these board to generate their
own sounds - the SB hasn't been tested much either).  It will also support
some features of the different cards, including the SMPTE support found
on the MQX32.
  The driver tries to be OS independent too.  90% of the driver is
completely portable, only the remaining 10% needs to be rewritten to
support a new UNIX varient.  This distribution comes with support for
BSD/OS, Linux, FreeBSD, NetBSD and Unixware (though the Unixware driver
isn't completely tested).  These five cover a wide range of systems and
one should make a good basis for a port to a new system.

WHAT'S NEW IN TCLMIDI-3.0.0
  Support for multiple devices, in synch if desired.  You can play and
record for multiple MIDI devices simultaneously.  You can also slave
one device to another so their timing stays in synch.  Since adding
support for this changed some of the existing tclmidi commands, I
bumped the tclmidi release number to 3.0.
  There are also some bug fixes, and support for using a serial port
as a MIDI interface.

REQUIREMENTS
  You need tcl-7.4 installed (though tcl-7.5 might work too - I don't know).
You don't need the source though, as all the information tclmidi needs can
be found in the installed header files and libtcl.a.
  You also need a C++ compiler.  G++ is free and works.

COMPILATION NOTES
  Take a look at the Makefile and edit the stuff at the top.
Then just "make" and "make install".  You might also want to
"make tkmidi" and "make install-tkmidi".  To install the man
pages choose one of "make install-man-cooked" or "make install-man-raw".
The cooked formats the man pages before installing them, raw
does not.

WINDOWS SUPPORT
  Is no longer included.  But may appear again when I upgrade to
tcl-7.5.

MISSING THINGS
  Scripts.  I've included four, mplay, mrec, minfo and midtocl.
If you write some good ones, send them to me and I'll include
them.  Lucho Georgiev has written a few, which can be found in
the contrib directory.  I'm hoping others will contribute too.
  Xdrum support.  Xdrum won't work with this version of tclmidi.
I'll eventually redo xdrum to work with tclmidi, but it might
be a while.  I also want to write a X based score editor based
on this stuff.  That will probably take *quite* a while.

MAILING LIST
  I've set up a mailing list for tclmidi discussion.  To subscribe,
send mail to tclmidi-request@boogie.com and include the phrase
"subscribe" in the body of the message.  The subject line is
ignored, so don't put the phrase there.  To send mail to the list,
email tclmidi@boogie.com.

SPECIAL THANKS
  Thanks goes to all those who have helped me get this thing working.
Extra special thanks goes to the following for putting up with a lot
of system crashes and debugging to make the driver ports usable.
Thank them for getting the driver to work.  Blame me for any bugs
you find.
    Ralf Jaegar  <raja@rajas.rhein-main.de>  -  Linux
    Andreas Gustafsson <gson@niksula.hut.fi> -  NetBSD
    Luchezar Georgiev <lucho@tu-varna.bg>    -  Linux
    Greg Wolodkin <greg@eecs.berkeley.edu>   -  SMPTE, Linux
    Alberto Vignani <alberto.vignani@pmn.it> -  Linux
    Allaoua Bouabdallah <alawa@tao.aiuniv-paris8.fr> - UnixWare
    John Utz <spaz@u.washington.edu>         -  FreeBSD
    Dejan Vucinic <dejan@mit.edu>            -  Serial interface

  And of course I'd like to thank everyone who has been using
tclmidi, finding bugs and helping me test.

mike
durian@boogie.com
