Skip to content

cac-t-u-s/cac-t-u-s.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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


Download

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



What's new ?

   

   

OM# brings a bunch of new of tools and features in your computer-assisted composition environment:

  • Patching interfaces and environment with easier box inspection / display control / automatic alignment / connections / etc.
  • No workspace to set-up: open your documents and simply organize them in your usual file-system.
  • Interactive visualization of Lisp code corresponding to visual programs.
  • A native implementation of the reactive mode for visual program execution.
  • New loops. Embed iterative processes in standard patches. Use a collection of new collectors and memory utilities.
  • A set of interface components: list-selection, switch, button, slider, ... / Lock your patch for faster interaction.
  • A redesigned sequencer interface including dual program/tracks-based visualization, meta-programming tools, and reactive execution modes.
  • Human-readable, easily editable text format for patches and other documents. Possibility to read and edit patches as text.
  • New score editors, BPF/BPC editors, etc. Nicer display. Easier edit.
  • Versatile containers handling the storage, visualization and editing of collection of objects.
  • A time-based model for "executable" objects, including dynamic function execution and data send/transfer possibility.
  • Dynamic-memory allocated audio buffers.
  • Tools and editors for the representation and manipulation of musical objects (score, sounds, MIDI tracks, ...)
  • A framework for handling OSC structures and communication
  • ...

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


Help | Bug reports | Community

→ Use Discussions to report problems, suggest features or enhancements, or just discuss about the project!


Sources

OM# is a free software distributed under the GPLv3 license.

→ Source repository: https://github.com/cac-t-u-s/om-sharp/

As a Common Lisp program, OM# can be considered just as an extension of Lisp including the specific built-in features of the application. The application is developed with the latest LispWorks compiler (7.1.2), which provides multi-platform support and graphical/GUI toolkits in Common Lisp. A limited "Personal" edition of LispWorks 7 is now available: its limited heap size requires compiling sources in several successive runs, and it is not possible to create new OM# executables with it, however, it allows loading and running/using/editing the program from its sources.

Alternatively, the OM# executable also includes a Lisp interpreter which can load and evaluate modifications and extensions of the program sources.


Compatibility

OM# can load patches created in OpenMusic. See 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).


Externals | Libraries

External libraries are packages containing additional pieces of code that can be loaded dynamically in an OM# session. There exist a few specific libraries distributed here (see list 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.olib (or .omlib).

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

OM# libraries
csound
A simple interface with the Csound synthesis language.
odot
Support for OSC encoding/decoding usnig CNMAT's libo library and "o." expression language.
spat
A connection with IRCAM's Spat library for spatial audio control and rendering.
mathtools
An adaptation of OpenMusic's "Mathtools" package for mathematical music analysis and representations.
Compatible OpenMusic libraries
"Classics" Externals/DSP tools Third-party

Publications

About the general design and implementation of OM#:

OM# was also used as a support for research and production in a number of other projects:


Contributing coffee

Support the development of OM#: Buy me a coffee!


Credits | Contacts

Design and development: J. Bresson, with contributions by D. Bouche, J. Garcia, A. Vinjar, and other contributors. This project uses code and features from the OpenMusic project by IRCAM - STMS lab.

Contact: https://j-bresson.github.io