Standalone Generative Music Platforms
August 31st 2007Here 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.