Cactus / OM#

OM# (om-sharp) is a computer-assisted composition environment derived from OpenMusic: a visual programming language dedicated to musical structure generation and processing.
The visual language is based on Common Lisp, and allows to create programs that are interpreted in this language. Visual programs are made by assembling and connecting icons representing Lisp functions and data structures, built-in control structures (e.g. loops), and other program constructs. The visual language can therefore be used for general-purpose programming, and reuse any existing Common Lisp code. A set of in-built tools and external libraries make it a powerful environment for music composition: various classes implementing musical structures are provided, associated with graphical editors including common music notation, MIDI, OSC, 2D/3D curves, and audio buffers.


→ OM# is available on macOS, Windows, and Linux



Source repository:

What’s new ?


OM# includes a brand-new generation of tools and features in your computer-assisted composition environment:

→ See also this ICMC paper (2017) for a quick overview.


OM# can load patches created in OpenMusic. See the how to import OpenMusic patches.
Most OpenMusic external libraries are easily portable (or already ported). See how to create or adapt a library.
Report any problems in porting or converting libraries or patches on the discussion forum (see below).

Help | Bug reports | Community

A discussion group is hosted on Ircam Forumnet.
→ Create an account in order to post questions and replies.
Subscribe to group notifications using Watching / Tracking and other options.

Externals / Libraries

External libraries are packages containing additional pieces of code that can be loaded dynamically in an OM# session. A few of them are readily available and listed below, as well as a number of compatible OpenMusic libraries.

OM# external libraries are structured as a simple folder, called either “libname” or “libname x.y” (where “libname” is the name of the library, and “x.y” is a version number), containing a loader file named libname.omlib.

→ Unzip the external libraries in a common container directory and specify directory in the Preferences/Libraries/

OM# externals
Compatible OpenMusic libraries
"Classic" libraries Connection with external/DSP tools


OM# has been used as a support for research and production in a number of recent projects. See related papers below: