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: Theory-Install.zip
|
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.
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.
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.
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.