[CM] Realtime CM on OSX/Linux

Rick Taube taube@uiuc.edu
Fri, 29 Jul 2005 15:37:48 -0500

CM now supports "real time" scheduling and receiving on OSX and
Linux. This is a major new feature and it would not have been possible
without Todd Ingalls, who has invested considerable time and energy
over the past weeks in designing and implementning the new
functionality along with me.  I also want to thank Immanuell Litzroth
for his help getting CM's Portmidi code working on Linux.

The new realtime features should work in OpenMCL/OSX, SBCL 0.9.0/Linux,
CMUCL/Linux but the implementations are not equally good (see below),
and there are still some issues and bugs that have not been resolved.
A Gauche implementation is definately planned.

The main entry points into the new realtime code are documented here:


We have been testing mainly on OSX using Max via Portmidi. Real time
Supercollier is also now possible (although not yet complete or
documented.) A lowlevel OSC stream is in the works for supporting
realtime with other OSC aware program such as CSound, Max, and PD.

The bottom line:

   OSX: Things seem to work quite well in OpenMCL. Todd's tests
   shoveled tons of data between Max and CM and timing was generally
   accurate to within a millisecond or two. Things can crap out, but it
   seems you have to push and pull a lot of data before that
   happens. At more reasonable data rates his tests ran for 15 minutes
   without problems.

   Linux: SBCL 0.9.0 has native threads and so it is probably a better
   choice than CMUCL to try the rt code out in. Ive only "lightly"
   tested the new features on Linux (I confirmed that the examples
   basically work). Someone who knows PD and how to route MIDI between
   apps on Linux could help us determine how good/useable the current
   realtime code actually is. Given my current time constraints and
   limited knowledge of linux audio/midi routing I won't invest much
   more time into the Linux side until someone more knoweldegable than
   I am is willing to help us improve it.


In unrelated news, the CM homepage (commonmusic.sf.net) now reflects
the current source tree rather than the last stable release, so I will
be using Pinhead much less in the future. A crontab entry syncs the
home tree to CVS every four hours and also saves a nightly snapshot
tarball linked to the download section on the new homepage.