Here's version 0.94 of tkseq, which started as a simple collection of
shell scripts to take advantage of Mike Durian's tclmidi tcl extensions.

If you can run Tk, then you should be able to run this.  No compilation
necessary -- it's just one big ugly script.  For installation details
see the file INSTALL.

N.B. I have added GUS-specific changes in moving from 0.93 to 0.94 -- I
tried to do it in such a way as not to break anything, but I don't know.
Also I haven't documented much of the GUS-specific stuff yet, but I'm
not sure if anyone besides me is in a position to use it anyway so we'll
cross that bridge later.  Do let me know if it these changes cause you
problems, though, as they shouldn't and I'll fix 'em if they do.

The rest should be self-explanatory, although perhaps a few comments on the
existing operations are in order:

  File menu:     load/save/exit     typical stuff

  Realtime menu: play/record/stop   controls playing of loaded midi files

  Settings menu: here you can play with some internal parameters,
                 set the division and the default quantization.  Also
                 there's a setting for internal clock / SMPTE clock.
                 If you don't have a MusicQuest MQX-32M I can't make
                 any promises about SMPTE.  Let me know if you're 
                 using it though, and we can probably get it working
                 if your card supports it.

   View menu:    some controls to let you decide what you want to see.
                 The only reason you might want to turn some of these off
                 would be speed -- if you have a huge MIDI file and a 
                 slow computer, you might turn off Measure view and see
                 if that helps.

  Track menu:    here is where the good stuff is.  The basic idea is that
                 you use the mouse to select a number of tracks, and then
                 choose an operation from this menu.

       [group 1: looking and listening]

                 List:  like Mike's `minfo' command, this shows you
                        a list of MIDI events on a per-track basis.
                        Thanks to Tk, you can edit these in a backwards
                        sort of way.  Most of the events can be edited
                        in other ways, so this method of editing isn't
                        meant to be easy or fancy.  What you see are 
                        the raw tclmidi events, with channel numbering
                        starting at 0.  That means drums are on ch 9.
                 Mute:  allows you to silence tracks without modifying
                        the MIDI file.  Note that you have to mute a
                        track *before* you start playing the MIDI file..
                        it doesn't happen in real time.  Also note that
                        now Mute and Solo can be accomplished by clicking
                        on the <Mute> field for a given track.
                 Solo:  Essentially mutes all other tracks, allowing this
                        one to play by itself.  See above Re: double-click.
                 Name:  Lets you change the MetaSequenceName event on 
                        a track without having to hack on the MIDI stream.
                 View:  Piano roll view.  No editing yet, but at least
                        you can see what you're doing.
                Score:  Watch out.  This only works for one or two tracks
                        at most -- it exec's midi2tex, followed by TeX,
                        followed by xdvi.  There is no checking to see if
                        you have these installed on your system ;-)  I
                        think scoring music must be one of the tougher
                        tasks around, so I'm not doing much with this. It
                        is kinda neat to be able to pop up the sheet music
                        while it's playing, though.

       [group 2: track configuration]

              Channel: force all events in the track to go out a certain
                       channel.  You can also accomplish this by double-
                       clicking on the <Ch> field for any track.
              Program: Insert, delete and modify Program events.  Same as
                       above, you can do the same thing by double-clicking
                       in the <Pr> field for any track.
            Parameter: Same for parameter events.  Not bound to any double-
                       click event, though.

       [group 3: moving tracks around]

                 Copy: makes an identical twin of each selected track,
                       using the first available track.
                Merge: combines any number of tracks into a single one
               Remove: completely removes the track from your song, and
                       shuffles the other tracks down into the open slot.

       [group 3: moving notes around]

                Erase: Leaves the track but removes all the notes.  It
                       actually leaves MetaSequenceName and MetaEOT, but
                       nothing else.  Great for second takes.
               Offset: Move events by a specified number of SMF ticks.
                       Positive numbers make things happen later.
             Quantize: Forces notes to *start* on a quantization note.
                       Make sure you choose the quantization level first-
                       (under Settings).. the default is 16ths.  Currently
                       nothing is done about note *ending* times (length).
            Randomize: For this you'll need my random number additions
                       to tcl -- they are roughly in a distributable
                       form, at least as a patch to tclmidi.  Let me know
                       if you want 'em.  Basically this lets you move
                       notes around randomly, so your drum machine sounds
                       less like one.
            Transpose: Change the pitch of all notes by a specified number
                       of semitones.  Positive numbers make things higher
                       in pitch.

Good luck, and have fun.

Greg Wolodkin		greg@eecs.berkeley.edu
