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|
|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?|
|JMSL||Java||Yes||Commercial â€“ No OSS||Yes||Yes||Yes||Yes||Yes||Yes|
|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.