TOE - a Library for Building MIDI Applications
TOE is a programming library for building MIDI applications.
TOE is built using SWIG. This makes it possible to call it from a variety of languages such as Python, Scheme, Ocaml, Java, Perl, and Tcl/Tk. Currently Python and Scheme (the Chicken implementation) are supported. Support for other languages can be added reasonably easily. (See my blog entries on Sep. 26, Sep. 27, Sep. 29, and Sep. 30).
The SWIG typemaps for Python and Chicken support Objective-C style exception handling (Oct. 24) and Unicode (Oct. 3 and Oct. 4). Since only Objective-C code and CFPropertyListRef objects are used at the API, TOE is also readily accessible from Cocoa/Objective C applications.
TOE introduces the notion of device descriptions and device name resolution which handle addressing of and provide persistent handles to MIDI devices in an intuitive manner (Oct. 7, Oct. 10, and Oct. 14).
TOE provides the function Devices, which returns the device descriptions of the source, destination, or sysex devices in the MIDI setup (Oct. 10).
TOE provides the class Sysex and the class methods Send, NumOfBytesSent, CancelSend, Receive, and NumOfBytesReceived for data transfer to and from sysex devices (Oct. 13).
TOE provides the class Destination to represent MIDI devices that can receive MIDI data. The class method Send can be used to send MIDI data to a destination (Oct. 17). The class methods Banks and Programs return a list of symbolic names of banks and programs (i.e., patches) of a destination, respectively (Oct. 21). The class methods BankSelect and ProgramChange converts symbolic bank and program names to the MIDI data that can to be send to a destination to select the bank and program, respectively (Oct. 24 and Oct. 25).
The SWIG interface definition file TOE.i in the Xcode project summarizes the current definition of the TOE API.
Since the project uses SWIG, you must have it installed to build TOE. Chicken must also be installed if you want to build the Chicken Extension target. The latest versions, SWIG 1.3.27 and Chicken 2.2, are used.
TOE requires OS X 10.4 and Xcode 2.1.
The association of MIDI name documents (or .midnam files) to a MIDI device is recorded in OS X in its name configuration property. The name configuration properties of MIDI devices in a MIDI setup can be edited using NameConfigSetup utilities I have written (this one or an older one).
TOE is released under the four-clause BSD license (Oct. 18).
TOE is an ongoing project.
TOE Tools
BiaBReader - Routines for extracting chord sequences from Band-in-a-Box format files [the plain text file].
Note that this code, and other high-level modules of TOE to be released, are released under a more restricted, "non-commercial use" software license. See copyright notices in the files for details.