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. 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. 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. 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.