Rixiform Inc.

Standalone Generative Music Platforms

August 31st 2007

Here is a quick summary of some research I just engaged in. I have been searching to find a suitable generative music development environment with the following attributes:

  • Ability to make standalone applications with no dependencies (e.g. does not require a separate installation of a script, a generative music platform, and scripting virtual machine).
  • Scripting in a widely used language (Java, Python, or Ruby) for multi-environment code reuse.
  • An open source licensing arrangement (GPL, MIT-X, LGPL, etc) or widely available and extensible commercial platform (like Max/MSP)
  • Easy GUI development
  • Good documentation
  • Multiple OS support

Here is a summary of my findings. Please note that there may be some errors in this chart, and that I don’t mean to harsh on anyone’s dev environment.

Tool Language Standalone License Easy GUI Reusable Scripting Good Docs Win Mac Linux Notes
ChucK ChucK No GPL No No Yes Yes Yes Yes
CLM Lisp No BSD No No No Yes Yes Yes
Csound Python Maybe LGPL No Yes Yes Yes Yes Yes
Rtcmix C/C++ Yes GPL No Yes Yes Yes Yes Yes Win through Max

Python Maybe GPL No Yes Yes ? Yes Yes Win python supported?
PD Python, Ruby No GPL Yes Yes No Yes Yes Yes
JMSL Java Yes Commercial – No OSS Yes Yes Yes Yes Yes Yes
Max/Msp Javascript Yes Commercial Yes No Yes Yes Yes No

Java Yes, with JRE Commercial Yes Yes Yes Yes Yes No Bundle with JRE

Python No Commercial – GPL (py/pyext) Yes Yes Yes Yes Yes
Need py/pyext patch

Jython Yes – Jython Commercial Yes Yes Yes Yes Yes No Through MXJ

Jruby Yes – Jruby Commercial Yes Yes Yes Yes Yes No Through MXJ

Examining this chart the Max/MSP platform satisfies the greatest number of these criteria. Some notes on Max/MSP:

  • Developing standalone applications in Max with Java requires that the JRE is bundled with the application to avoid dependency on a preexisting JRE. As of this writing, a new version of the MXJ external may be necessary to get this working.
  • Py/Pyext supports python. However a standalone application with Py/Pyext would require that python was also installed. This could be discouraging to the non-technical and/or busy user.
  • Jython and Jruby seem quite possible through MXJ. More testing is necessary to verify that they do indeed function properly. I have found no first hand reports.
  • Max/MSP heavily supports javascript. The issue with javascript is it does not appear that many other generative music platforms also support it directly (e.g. not directly supported by ChucK, Csound, RtcMix; I’m not sure about PD.). The most desirable scripting language support would be Python as it is supported by Max/MSP, ChucK, Csound, Rtcmix, and PD. Although, for the record I would love to see more support for Ruby in these environments.