midigrep should only match one event no matter how many patterns are
looking for the event (ie break out of the loop as soon as a match
is detected).

midigrep should do a better job with reallocs

make a release_driver function that undoes what init_dev allocates.
modify note_on caching in driver so we can turn note back on at the
    proper velocity if a channel becomes enables and a note is currently on.


In tclmidi:
  write doc on libtclmidi.a, the internal C++ interface
  new commands for pause/resume
  Use real time (ie seconds or parts thereof - use smpte? or somethig
like 1/100 or 1/120 of second?) as event time stamps, not SMF ticks,
which are relative to tempo changes.  Or at least communicate to
the driver in that fashion.
  MidiTime events should complain if the denominator is a bad value
(like 4/5 time).
  midisplit should split each channel into a separate track
  mplay should check for more than 16 channels and automatically split
the song into 2 (or more songs) and play each through multiple syched
devices.
  make a midigrep command

In Driver:
  GUS (and other sound card) support
  Find tester for SVR4
  Pause/Resume - time remaining between events?
  Read and write events using a real clock instead of SMF ticks.  (see above)
  Make a makefile for installing driver under BSD.
  Handle Start, Stop, Continue events?
  Send/Receive MIDI Clocks

Long term:
  Write a graphical notation program based on tclmidi and/or libmidi++.a
That was why I rewrote tclmidi, wasn't it?
