It can this be really useful of there are better alternativs like PureData?
KeyKit used to be called Keynote. It is a programming language and graphical user interface for MIDI, useful for both algorithmic and realtime musical experimentation. A screenshot showing a collection of its graphical tools is shown here. Here is more information about the features of KeyKit, and here is a FAQ - Frequently Asked Questions. For examples of music created with KeyKit, visit the home page of Tim Thompson, or Stephane Rollandin’s GeoMaestro. KeyKit is being made freely available by AT&T for non-commercial use.
KeyKit is an awk-like language developed by Tim Thompson and designed specifically for manipulating MIDI data. The full KeyKit system includes a multi-window and multi-tasking graphical user interface, and can be used for both algorithmic and realtime applications. The language itself has only a few built-in functions for graphics - the entire user interface is written in KeyKit itself, and is hence completely customizable and extensible by the user. The current version works best on Windows NT and Windows 95, but the software is designed to be portable. Previous versions have been ported to a wide variety of systems, including UNIX, DOS, Mac, Amiga, and even Plan 9.
Language Features
* Multi-tasking. This is extremely important for musical uses, and allows any number of tools and operations to be used simultaneously.
* Object-oriented. An over-used buzzword, to be sure, but KeyKit allows you to define classes containing methods and data. Data elements within a class can be added on-the-fly.
* Recording is always on. No matter what KeyKit is doing, it is always recording MIDI input. This is used extensively within the graphical interface - you never have to turn “record” mode on, and you never have to worry about losing that brilliant riff you just improvised.
* MIDI is a data type. Phrases of MIDI data are treated as a first-class data type. Merging, concatenation, selection, and looping are all done with built-in language operators and syntax. Standard MIDI files can be read and written.
* No declarations Variables are not declared, and the type of data within a variable is determined on-the-fly. Arrays can contain data of any type, including arrays.
* Etc. etc. etc… Function references can be passed as arguments, allowing parameterized operations to be specified in a flexible way. Variable numbers of arguments can also be passed around conveniently.