HMSL stands for Hierarchical Music Specification Language. HMSL is a
programming language and software environment for experimental music
composition, performance and research. Our goal is to provide tools
needed by experimental composers and performers without restricting
musical style. We have tried to make HMSL as flexible as possible. The
source code for HMSL is provided for the composer to even change HMSL
itself, although that is seldom necessary. Some of the tools HMSL
provides are:

? a language for creating and executing musical data, processes, and
functions in complex hierarchical forms

? software tools for algorithmic composition including intelligent
data structures, process control, real-time user-definable stimulus
response support, and many other utilities, including distribution
functions (randomness), math routines, and other forms of data
manipulation

? support for controlling MIDI synthesizers, parsing and mapping MIDI
input, sending system exclusive messages, reading and writing standard
MIDI files, and synchronizing with other MIDI systems

? support for Amiga local sound, samples and waveforms

? graphical editor for manipulating abstract numerical data such as
melodies, samples or system exclusive MIDI parameters

? a text based Score Entry System

? a simple Sequencer that can be customized by the user

? a User Interface toolbox for designing custom mouse driven
compositions or editors

? a flexible scheduling system for accurately timed complex musical
events

? a variable rate real time clock, 20-1000 ticks/second

? many example pieces

These features are integrated into a polyphonic, real-time musical
environment which allows for dynamic alteration of any of its
functions, self-modification, and a high degree of user-machine
interaction.

The Organization of HMSL

The HMSL software environment is organized into layers. The composer
may use tools from any layer at any time. The foundation of HMSL is
the Forth language. Forth is an interactive general purpose
programming language that lends itself well to experimental systems.
On top of Forth are a number of toolboxes. One of these is the MIDI
toolbox, with support for sending MIDI commands and responding to MIDI
input. Other toolboxes include Timing Support, Graphics, distribution
functions, file I/O support, a source level debugger, arithmetic
tools, etc.

Compatibility
Architecture: 68k