Theory Music Reference

This is a general overview of an application which simultaneously displays various musical instruments and sheet-music images according to a model scale or chord started in 1979 with DEC-Basic+II.  There are versions running on Macintosh (C - MPW, Common-Lisp), Unix (GCC, Emacs-Lisp), and Windows (C++, MFC, MsDev), which are currently being merged into a single multi-platform source tree for easier development.   There is also a Web accessible version for demonstration (JavaScript, C, HTML).

All versions use hierarchical menus, particularly for, but not limited to, scale selection.  These menus are created at program start-up from text database files which can be modified (carefully) and commented.  Images are created algorithmically upon menu selections rather than fetched from other files, and can be saved as files if desired.

This current version also can play and illustrate MIDI files on a variety of formatters, and channels may be selected to specifically show particular voices on specific instruments.  A work in progress, but it is available for download here:



The previous version for Windows makes use of many features from Microsoft Foundation Classes such as context-menus, image format dialogs, tool and status bars, layout profiling, help-files, and so on.

Currently work is underway to convert these help-files into HTML for more general use; here is a draft of a glossary item:


The linked image is a full-size screen shot showing MsDev in the background, the MDI application, and a page from the associated Windows-Help file.

The current versions for Unix and Macintosh look similar as the same C code is used underneath.  Lisp code is used in either case to construct menus, and organize window frames.

When invoked from Macintosh Common Lisp, the formatter component of the application runs a preset script constructed according to the scale/chord model and instruments displayed.  Then associated Fred windows for each instrument are reverted subsequently.  


The image linked here shows some screen state of this version with its build folder in the background.


The formatter can be used directly as a standard shell application since help is available for all built-in commands.  This component has been built for most platforms including Unix, Macintosh and Windows.

Usage under Emacs-Lisp is similar except that commands are sent to a maintained process, from which results are stuffed into each instrument buffer.  

This process buffer may also accept the usual commands for the shell version. 


This image is linked to an example screen state with Emacs-Lisp version built for Debian Linux using Window-Maker over HOB X-Server for Windows through PuTTY:


A Server-Client model, mostly in C, has also been implemented for demonstration purposes encapsulating the same formatter.  In this case the Server process on some internal system listens for specific TCP connections, and the Client, running on the Web server, generates HTML from the Server results, using JavaScript to manage state, construct menus, and dispatch requests.

This version is currently limited to showing one formatted text image per request, although the model state is preserved.  The menu has also been abbreviated from the full versions.


It works for both Netscape and Explorer, and should be accessible from this link:


Versions for release are being assembled and in general will include the formatter component built for the given platform as a stand-alone application, which may facilitate other sorts of custom scripting by the user if needed.