KeyKit is a graphical environment and programming language for MIDI synthesis and algorithmic composition. It was originally developed by Tim Thompson and released by AT&T.

Overview

Tim Thompson is a software engineer and the originator of various software titles, including Keykit and Stevie (predecessor of the now widely distributed and popular text editor Vim). Keykit (originally named "Keynote") was developed by Thompson in his spare time while he worked for AT&T. However, it was not related to his actual job there. Keynote was originally released through the AT&T Toolchest, and in 1995 was released as KeyKit with a license making it freely available for non-commercial use.

Keykit

Keykit is noteworthy for its versatility and expressiveness. Complex algorithmic arrangements can be produced with as much detail and sophistication as required, and the software works on multiple platforms and operating systems. It is not dependent on peripherals or sound cards from a specific vendor. These are unique advantages over similar "music workstation" products with the same or similar functionality for algorithmic composition and computer generated music.

Keykit

Language features

variables, functions, classes, and dynamic typing

supports object-oriented programming

always-active MIDI recording

multi-tasking environment

library functions and classes (both built-in and user-definable) multi-platform multi-os and not dependent on specific peripherals

Keykit

GUI features

Features: GUI-based multi-track sequencer pop-up context menus built-in and user-definable "tools"

Limitations

interoperability: no support for COM/OLE, Jack, VST, ReWire

no support for audio processing (MIDI only)

See also

Algorithmic composition

List of MIDI editors and sequencers

List of music software

External links

Keykit Download

Tim Thompson software

Tune Toys: interactive web-based algorithmic composition (based on KeyKit engine) Video demo of keykit from 1994 Article about KeyKit from Linux Journal, March 2005

Audio programming languages

Dynamically typed programming languages

Object-oriented programming languages