Presentation

Elody is a music composition environment based on a visual functional language, a direct-handling user interface and Internet facilities. It is written in Java and uses the real-time MIDI services of MidiShare.

Elody allows algorithmic descriptions and transformations of musical structures and compositional processes. Its design tries to promote a creative and experimental attitude (including for the programming activity), as well as Internet users collaboration.

Working with Elody consists in building musical objects by combining simple primitive objects (notes or rest), or programs. The user interface is based on drag&drop and visual functionalities. Each user action results in an immediate sound and graphical feedback.


Audio devices

Elody generate MIDI messages that are played on external MIDI devices or on the internal sampler.


Musical constructors

All functionnalities are available by way of visual constructors. A constructor is a particular way to create new expressions by combining existing ones in sequence or in parallel for example. Visual constructors are represented by one or several arguments boxes. When the user drop expressions in these boxes, they are combined and this produce an accessible and reusable result. The constructors perform no real computation. The resulting expression is a tree whose root is labeled with the constructor name and branches which are the used sub-expressions. Therefore an expression always keep track of all its components and the way to combine them: the intentional description.

Here is the description of the different musical constructors currently available:


Editors

Editors allow to work on Elody's objects by editing and modifying them.

Here is the description of the different musical editors currently available:


Renderers

The evaluation of an expression, that is the transition from the intentional description to the corresponding extensional description, is only done for graphical and sound rendering. Users always handle non-evaluated, intentional descriptions.

Here is the description of the different renderers currently available:

Elody objects displayed in a piano-roll like representation can immediately be played using the Ctrl+Click command. This allows to play objects even if they are not in a player.


Programming

One of the main purpose of a music composition environment is to allow to express intentional descriptions with all the required generality, and to maintain the relation with the corresponding extensional description. Reaching generality and abstraction within intentional description presuppose a kind of programming. The homogeneous language approach adopted in Elody tries to insert the programming activity in a conceptual framework directly related to the existing skills and knowledge of the user. Instead of providing the user with a separate programming language with specific concepts, syntax, semantic and editings tools, the key idea of the homogeneous language approach is to extend in a consistent way the domain of objects the user manipulates with his editing tools to include user-defined programs. This is achieved mainly by introducing the concepts of abstraction and application of the lambda-calculus.

Elody is based on this approach. User-defined programs are abstractions: generalized musical expressions obtained by making variable parts of the existing expression. These abstractions can be applied to other objects to produce a new result, or composed to build new programs. Therefore Elody makes not real distinction between musical objects and programs. Programs are just musical objects with variables parts. They are visualized, manipulated and assembled in a consistent way like any other musical objects.


Real-time Interactions

A simple model of description of interactions with an input stream has been introduced in Elody. Interactions are currently limited to transformation processes composed and applied on the real-time input stream. The real-time stream is an infinite sequence that contains all events received in real-time by the system. Although this sequence is only known when the expression is evaluated and reduced, it is possible to manipulate it like a known object. The system is in charge of translating actions described by the user into effective operations that will operate in real-time, during expression rendering. The user makes a specification in terms of temporal organization and manipulation of the real-time stream, the rendering engine will execute low level side effect operations according to the specification.


File management

Several tools are available to manage Elody documents. Elody expressions can be saved in several different formats. The HTML format save Elody expressions in their intentional description thus keeping all the history of their construction. MIDIFile format allows to save the extensional description to be used in conventionnal notation softwares or sequencers. GUIDO format is used for conventional musical score notation.


Tools

Additional tools are available.


Windows

Here are some useful shortcuts for managing the windows organization:



DISCLAIMER - Elody is a research product currently in development. The musical language specification is not frozen yet and may change in future versions.