Jump to content

OpenMusic: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Theropode (talk | contribs)
No edit summary
Theropode (talk | contribs)
as
Line 29: Line 29:
=OpenMusic contributions=
=OpenMusic contributions=


OpenMusic kept the patching metaphor that PatchWork had successfully borrowed from Max, and also the appearance of the musical editors which were however replaced by Bill Schoedstadt's Common Music Notation package, and later on completely rewritten in order to achieve better interaction, and a novel hybridation between conflicting space-time domains (signal, notation, algorithms etc.)
OpenMusic kept the patching metaphor that PatchWork had successfully borrowed from Max, and also the appearance of the musical editors which were however replaced by Bill Schoedstadt's Common Music Notation package, and later on completely rewritten in order to achieve better interaction, and hybridation between conflicting space-time domains (signal, notation, algorithms etc.)


It then provided a completely novel abstract machine that could successfully subsume the whole range of functional AND object programming and a new graphical paradigm for object programming (based on the concept of Factory and object persistence). It was the first ever full range visual programming based on intensive meta-programming techniques. OpenMusic was secondly founded on an integrated, universal representation of time, based on an object-design of time-units embedded into time-hierarchies, with local and global computations ensuring that exact integer calculations keep coherence throughout all the levels. This particular feature allows one to mix «continuous» time (in m.s.) and symbolic metrical time in complex structures.
It then provided an original abstract machine that could efficiently subsume the whole range of functional and object programming as well as a new graphical paradigm for object programming (based on the concept of Factory and object persistence). OpenMusic has been recorded as the first full range visual programming based on intensive meta-programming (MOP : Meta-Object Protocol) techniques.
Thirdly, this complex time model made it possible to develop novel graphical metaphors for representing higheer scale time-forms, such as in the Maquette object.


OpenMusic is secondly founded on an integrated, universal representation of time, based on an object-design of time-units embedded into time-hierarchies, with local and global computations ensuring that exact integer calculations keep coherence throughout all the levels. This particular feature allows one to mix «continuous» time (in m.s.) and symbolic metrical time in complex structures.
The concept behind Maquettes, which is that you can plunge a computation (a patch) into a time structure (a maquette) it self embedded into higher order time-structures (maquettes) with functional or logical relationships (patch cords inside maquettes), then take this whole complex form in time and plunge it into a patch, thus becoming back a single source point in a computation, then ... is still today absolutely unique and Makes OpenMusic a singular software achievement.

OpenMusic owes a lot to all its predecessors (from Crime to PatchWork) and has built on a rich history of Ircam CAC programming. In its turn, it has become a source of influence, and some of its major concepts (the factories object/class graphical reifications, the maquette concept etc. ) have, to our great pleasure, been retained in other great nvironments (PWGL, PD)
Thirdly, this complex time model makes it possible to integrate expressive graphical metaphors for representing higher-scale time-forms, such as in the Maquette object.

The concept behind Maquettes, which implies that one can plunge a computation (a patch) into a time structure (a maquette), itself embedded into higher order time-structures (maquettes), with functional or logical relationships (patch cords inside maquettes), then take this whole complex time construction and plunge it into a patch, thus returning it back to a single computational source point , then back again in a Maquette and so on, opened up an unseen access for composers to the intimate relation between time, calculation and structure.

OpenMusic owes a lot to all its predecessors (from Crime to PatchWork) and has built on the history of Ircam CAC programming. In its turn, it has become a source of inspiration, and some of its major concepts (the factories object/class graphical reifications, the maquette concept etc. ) have been retained and included in other great music creation environments (PWGL, PD).


=Versions=
=Versions=

Revision as of 17:51, 8 April 2013


OpenMusic (OM) is an object-oriented visual programming environment for musical composition based on Common Lisp. It may also be used as an all-purpose visual interface to Lisp programming.


A visual CAC environment

OpenMusic is a rich graphical programming language environment for Computer-Assisted Composition (CAC) developed at Ircam in the Music Representation team . It is free and opensource under the LGPL licence.

The initial OpenMusic version by Assayag and Agon was released in 1998. With regards to previous Ircam textual or graphical music creativity tools (Formes, Crime, Esquisse, pre-Form, Max, Carla, PatchWork) OpenMusic featured a full meta-programming framework for the sound graphical implementation of functional programming concepts (abstraction, recursion, higher-order functions, closures, curryfication, ...) as well as a novel graphical programming metaphor unleashing the full power of the CLOS object-oriented programming system. OpenMusic also introduces novel representations for form and time structures such as the Maquette object with a persistent workspace in the fashion of SmallTalk.

A genealogy of CAC at Ircam

OpenMusic takes place in a genealogy of music creation softwares at ircam that dates back to the early Eighties.

In the mid eighties, the Formes environment (Cointe, Rodet) and the CRIME environment (Assayag, Malherbe, Riotte) represented the first generation of CAC software. Formes was oriented towards the scheduling of musical process and complex sound synthesis architectures, and Crime being the very first Compositional (in the formal sense) one, featuring formal languages for specifying scores and complex canonical musical notation.

The next periode (late 80’s) was deeply marked by the uprising of Max (initially, Patcher by M. Puckette) on the live performance front. On the CAC front, several new prototypal environments popped up inspired by the Crime formal approach and its use of traditional music notation, by the brillant process calculus introduced by Formes, or otherwise by the work of Composers (Tristan Murail, Magnus Lindberg) who were developing their own prototypes. Among these were Esquisse, pre-Formes, Carla. It is interesting to note that, all of these programs, except Max (C) and Carla (Prolog) were developed in Lisp, thus establishing an Ircam functional programming tradition that has lasted until OpenMusic.

At the end of this period, the PatchWork environment (a collaborative work by Laurson, Duthen and Baisnee with a tremendous input by Tristan Murail among other composers) set up another important landmark. Deeply influenced by the success of Max’s patching metaphor, it provided for the first time this kind of graphical programming scheme to the realm of CAC and its libraries reincorporated many pieces of code from Crime and Esquisse. Patchwork was a big success and became mainstream in CAC. It was distributed through the Ircam Forum and maintained until the late 90’s by the Music Representation team. However, due to several important flaws in the design PatchWork got close to the glass ceiling and couldn’t be modified towards strong evolutions anymore. The main problems were : the visual language was not strongly founded and thus not a complete equivalent of a full programming language, the CLOS language was not encompassed by the visual metaphor, thus limiting languages’s expressivity, there was no uniform time model strongly object-modelled from the single note to the big size maquette, from the continuous time expressed in ms to the symbolic metric time.

The Music Representation team (Agon, Assayag) decided at this time (mid 90’s) to lay the foundations for a the next generation of Ircam CAC software, to become OpenMusic (later on, Larson and his colleagues had the same concern and remodeled the concepts and tools behind PatchWork under the form of PWGL, another free, but not opensource, cross-platform CAC visual language)

OpenMusic contributions

OpenMusic kept the patching metaphor that PatchWork had successfully borrowed from Max, and also the appearance of the musical editors which were however replaced by Bill Schoedstadt's Common Music Notation package, and later on completely rewritten in order to achieve better interaction, and hybridation between conflicting space-time domains (signal, notation, algorithms etc.)

It then provided an original abstract machine that could efficiently subsume the whole range of functional and object programming as well as a new graphical paradigm for object programming (based on the concept of Factory and object persistence). OpenMusic has been recorded as the first full range visual programming based on intensive meta-programming (MOP : Meta-Object Protocol) techniques.

OpenMusic is secondly founded on an integrated, universal representation of time, based on an object-design of time-units embedded into time-hierarchies, with local and global computations ensuring that exact integer calculations keep coherence throughout all the levels. This particular feature allows one to mix «continuous» time (in m.s.) and symbolic metrical time in complex structures.

Thirdly, this complex time model makes it possible to integrate expressive graphical metaphors for representing higher-scale time-forms, such as in the Maquette object.

The concept behind Maquettes, which implies that one can plunge a computation (a patch) into a time structure (a maquette), itself embedded into higher order time-structures (maquettes), with functional or logical relationships (patch cords inside maquettes), then take this whole complex time construction and plunge it into a patch, thus returning it back to a single computational source point , then back again in a Maquette and so on, opened up an unseen access for composers to the intimate relation between time, calculation and structure.

OpenMusic owes a lot to all its predecessors (from Crime to PatchWork) and has built on the history of Ircam CAC programming. In its turn, it has become a source of inspiration, and some of its major concepts (the factories object/class graphical reifications, the maquette concept etc. ) have been retained and included in other great music creation environments (PWGL, PD).

Versions

OpenMusic was initially designed for Mac OS 9 platforms, and the ported to OSX (OM 4.8) using Macintosh Common Lisp (MCL). OM 5 (2005) was a multiplatform implementation of the visual language, developed for MacOSX on MCL and for Windows on Allegro Common Lisp. After the transition of Macintosh computers to Intel processors, the OpenMusic development migrated to the LispWorks Common Lisp implementation, and is now also available for MacOSX and Windows platform. The source code is open and released under the GNU Lesser General Public License (LGPL).


A typical OM program or 'patch'.

Programming in OpenMusic

Programs in OpenMusic are created by connecting together (a process known as 'patching') either pre-defined or user-defined modules, in a similar manner to graphical signal-processing environments such as Max/MSP or Pd. Unlike such environments, however, the result of an OpenMusic computation will typically be displayed in conventional music notation, which can then be directly manipulated, if so required, via an editor. A substantial body of specialized libraries has been contributed by users, which extends OpenMusic's functionality into such areas as constraint programming, aleatoric composition, spectral music, minimalist music, music theory, fractals, music information retrieval, sound synthesis etc.

Composers using OpenMusic

Patches and scores in OMPatches and maquettes in OM

References

  • OpenMusic Homepage, with full OM class and function reference, tutorials and instructions on building OM from source.
  • IRCAM