Project hosted by:

In a nutshell, Allegory brings sound transformation tools into a Haskell environment. To use Allegory, therefore, one must have (or develop) a basic knowledge of Haskell.

A working knowledge of Csound may also be helpful, although is not required. Those so inclined should find it a relatively simply matter to extend the approach taken here to "realization engines" other than Csound.

The Allegory project is divided into three parts, each of which consists of one or a number of modules. Each module has its own documentation.

To begin with, there is the core module Allegory, which defines the type 'Sound' as an abstraction of a computation that can produce a sound file on disk, and then defines operations that combine, compose and relate multiple such computations.

Secondly, there are Haskell bindings to various other pieces of software: module Sndfile is a Greencard based binding to the libsndfile library, mostly useful for querying the characteristics of existing sound files; module Csound is a text-based pseudo-binding to Csound 4.

Thirdly, there are various sound generators, processors and miniature languages built up on the basis of the official Allegory modules. Although this collection is quite substantial, it is not an "official" component of the Allegory project, and is included mostly as an example of how to create useful things using the official Allegory modules. These 'unofficial' definitions are found in two modules: Montage and Generators.

One final and important general note: the various Allegory modules expect that in their working environment there will be 3 directories named "results", "temps" and "sources" - this is set at the top of the source code for the module Allegory and can be changed if desired.