OM# Documentation

OM# is a visual programming language dedicated to musical structure generation and processing.

→ Back to the main project page


The main state and settings of the working environment in OM# are controlled from the “Session” and “Preferences” windows.

How to import OpenMusic patches

Visual Programming

A patch is a visual program: the graphical equivalent to a Lisp expression (or of a set of Lisp expressions). It contains boxes connected together via patch cords (also simply called connections).

Boxes can represent either Lisp functions, other embedded or external visual programs (sub-patches), simple values or object constructors.

A patch can also include inputs and outputs (to receive arguments or return values when it is embedded in another patch), textual comments, and specific active components (e.g. buttons, sliders, etc.) used to set values and arguments for other boxes.

Use Ctrl/⌘+N to open a new patch window. See Document management for more info on opening/saving/managing patches.

Recap’ of basic shortcuts

Lisp Programming

Player and Temporal Structures


The sequencer is a visual programming tool extending the notion of patch with a temporal dimension. The geometrical and temporal layout of its contents are programmable and determine a musical form which can be computed, edited, and rendered in time.

Objects and Editors of the Basic Tools Package

→ Explore the “Basic Tools” package, for instance from the “Function and Classes Reference” (menu “Help”), to discover hundreds of functions dedicated to the processing of lists, and other structured data in this package using arithmetic, combinatorial, and other mathematical or algorithmic methods.


OM# provides an extensive set of tools for the manipulation of musical structures, located in the “Score” package.

→ See MIDI Settings for how to play (and hear!) score objects in OM#.


MIDI (Musical Instrument Digital Interface) is a standard protocol and file format designed for musical software and device to communicate and exchange control data. The MIDI protocol is used in OM# to “play” musical structures: a synthesizer must be connected to receive and render scores and other musical data. OM# also provides a set of tools and function to import, process or generate MIDI data.


Audio programming in Common Lisp is fun, and can even perform pretty well. OM# provides a library of tools which allow manipulating audio files and audio buffers in visual programs. These tools can be combined to implement digital sound processing or associated with other external tools for audio synthesis or analysis.

Space / 3D

The tools in the 3D package extend the basic tools with data structures, editors and other utilities dediacted to the representation and processing of spatial structures (e.g. trajectories for sound spatialization, or positioning and movements of other objects).


OSC (OpenSoundControl) is a common data transport specification (or encoding) for realtime message communication among audio, music, or multimedia applications and hardware.

See also the odot external for OM#.


SDIF (Sound Description Interchange Format) is a standard for the representation, storage and interchange of a variety of sound descriptions including time-domain, spectral, or sinusoidal models. It is used to store, import and export results of sound analyses or sound synthesis parameters.
The tools in the SDIF package will help you to extract and convert the SDIF data in OM# visual programs, and help you to create your own SDIF files starting from data generated in OM#.