1. showMusic - a pure Tcl/Tk interface to MIDI instruments
    Currently packaged as a .kit file


    1. You can choose what key signature to work in, both graphically or based on the number of sharps/flats.
    2. Several signatures appear identical, but have different meanings. You can change the meaning.
    3. The staves are 'hot'. If you hover over a valid place (based on the signature) then the line will be highlighted, and a click will generate a note.
    4. The line that transforms the stave area into the keyboard area (via the guideline) contains markers. The solid markers are the primary ones, root=red , third=green , fifth=blue.
      The other notes in the scale are either marked with a black circle if they are officially in the scale, or grey if the are not in the scale.
    5. The guidelines are hot and clickable.
    6. The keyboard area is clickable, but unlike the stave area in does not care what key you are in.
    7. The time controller is scrollable, and also has sub-behavours:
      • You can click and drag an event to a different place.
      • You can hover over an event and then use your mousewheel to shorten or lengthen an event.

    MIDI : showMusic loads a primitive routine to connect to MIDI, to send realtime events. Unfortunately I only have Linux systems to test this on, so the only interface module is inc/LinuxMIDI-IO.tcl. The system uses source inc/$tcl_platform(os)MIDI-IO.tcl to load the interface. If the file cannot be found for that OS, it loads inc/unknownMIDI-IO.tcl which provides dummy procs for sendMidiNoteOn and sendMidiNoteOff.
    Additional OS dependent code would be very welcome.

    The time controller and the play button are exceedingly primitive at the moment. There is no way of choosing the tempo, changing the tempo during the replay, repeating a section etc etc. Any improvements will be warmly welcomed. Please add any other controls etc in a seperate window; I have plans for the remaing real-estate as can be seen by reading the code.

    The help engine was cobbled together from tclhttpd3.5.1/bin/mini/mini1.1.tcl and http://wiki.tcl.tk/15244 and http://wiki.tcl.tk/557

    The reload button currently reloads the procs for Play , Save and dump.

    Save is purely a dummy routine at the moment.

  2. EAI packages for Tcl
    The biggy: a set of Tcl packages that lets you create a fully interactive 3D world from Tcl, and interact with events from the 3D world. If you have ever looked at VRML 2.0 / X3D, and then felt sick because everything is so heavily intertwined with Java, then this is for you.
    Language rant:
    Why anyone would want to write this (in Java):
    1. Node fog ;
    2. EventInSFString S3 ;
    3. fog = browser.getNode("Z1") ;
    4. S3 = (EventInSFString) fog.getEventIn("set_fogType") ;
    5. S3.setValue("EXPONENTIAL") ;

    When they can write this (in itcl)
    1. Node fog
    2. fog getNode {Z1}
    3. set S3 [fog getEventIn "set_fogType"]
    4. $S3 setValue {EXPONENTIAL}

    Or even shorter (in itcl)
    1. Node fog
    2. fog getNode {Z1}
    3. [fog getEventIn "set_fogType"] setValue {EXPONENTIAL}

     
  3. OSC TCL library
    This code helps your Tcl code talk to OSC compliant hardware and software. Unlike most OSC libraries osclib.kit deliberately does not handle the UDP comms, it only handles the encoding and decoding, and it is up to you to handle the transmission.

    This code benefited greatly from advice freely given by Alex Ferrieux
    This code was essential at one stage to make EAI work, but the EAI library has been re-written to work without it. However, OSC is one of the protocols favoured to work with multi-touch interfaces, and this library will therefore be usefull in other situations.

    Additional code selftest.kit is a sample that (a) shows how to use the OSC library code and (b) encodes and decodes a collection of arbitary data for testing purposes.

    sendtest.kit and recievetest.kit show how to use the library with UDP. You will also need a config file

    Install the kits (osclib, selftest, sendtest, recievetest and Tcllib from sourceforge or equi4) and the config file all in the same directory.

    You will need a 'batteries included' kit (containing UDP) from somewhere like kbskit.sourceforge.net.
     

  4. Vkeybd:
    While this code is still available here, I am nowdays instead using 'showMusic' above.
    I have enhanced vkeybd with the ability to send OSC messages, and with a piano-roll display and key signature information. The enhancements have been sent back to Takashi Iwai; hopefully for eventual inclusion. Until then, a modified version can be downloaded from here. The new files should be moved to /usr/share/bin after unpacking.
     
Notes: Currently working on: Dave dot Joubert , googlemail