RTS: Real time scheduling in common music

Heinrich Taube, Todd Ingalls

Research output: Contribution to conferencePaperpeer-review


RTS is a real time scheduler for the Common Music algorithmic composition system. RTS enables compositional algorithms written in Lisp to generate sound in real time and to communicate with concurrently executing applications via OSC [1], Portmidi [2] and Midishare [3] connections. One of the nicest features of the RTS scheduler is that it can be "invisible" to musical algorithms, that is, a given musical algorithm is able to execute in either real time or non-real time modes without any change to its code. This allows a composer to use the identical suite of algorithms for both file-based and interactive work simply by switching scheduling modes, without having to change how the algorithms themselves are expressed. Of course real-time execution can limit how much computation can happen in a given execution slice and so the RTS system also provides a library of compositional tools specifically designed with real time execution in mind for composers that want to optimize their algorithms for real time use. The RTS scheduler is based on POSIX threads [4] and is implemented as an optional software system that can be loaded into Common Music on demand, whenever the composer wants to work in real time. RTS can run in any Common Lisp or Scheme that supports callbacks and foreign function calling. The current bindings support OpenMCL [5], SBCL [6] and Gauche Scheme [7] on both Linux and OS X. A version may be available for SBCL/Windows in the future.

Original languageEnglish (US)
Number of pages4
StatePublished - 2007
EventInternational Computer Music Conference, ICMC 2007 - Copenhagen, Denmark
Duration: Aug 27 2007Aug 31 2007


ConferenceInternational Computer Music Conference, ICMC 2007

ASJC Scopus subject areas

  • Media Technology
  • Computer Science Applications
  • Music


Dive into the research topics of 'RTS: Real time scheduling in common music'. Together they form a unique fingerprint.

Cite this