As mentioned in my previous post, I am developing a system for doing algorithmic music composition, also known as score generation or generative music, on Android smartphones (it also runs on ordinary personal computers).
I’ve named the system Silencio, because it is loosely based on concepts from my earlier, Java Silence package (see: Michael Gogins, ”Music Graphs for Algorithmic Composition and Synthesis with an Extensible Implementation in Java,” Proceedings of the International Computer Music Conference, September 1998). Note that most of Silence has found its way into CsoundAC, the Csound Algorithmic Composition system.
Silencio, in a very much alpha version, is now actually working. You can find it on Google Code and if you want to run it on a personal computer, check it out using Subversion (or just download the few files) and run the SilencioTest.lua script. If you want to run it on an Android phone, install the Android Scripting Environment on your phone, then mount your phone as a USB drive on your computer and copy the files from your computer to the scripts directory on your phone. I will make a regular Android package at some point.
Silencio is written in pure Lua and runs on Android smartphones that have the Android Scripting Environment installed, as well as on regular personal computers that have Lua or LuaJIT installed. I highly recommend LuaJIT for Intel-based personal computers, it enables Lua code to run only 3 times slower than C++, which is amazing for a dynamic language.
The current feature set of Silencio is short:
- Event objects represent musical notes, grains of sound, or elements of a control gesture.
- Score objects contain sets of Event objects and represent musical scores on a low-level, note-based, absolute-time form.
- Scores serve as containers for generated scores and have methods for:
- Appending new Events.
- Saving the score as a Csound score file.
- Saving the score as a standard Format 0 MIDI sequence file (many thanks to Peter J. Billam, composer and programmer, for his excellent MIDI Lua package for the ease of doing this!), with your choice of MIDI program to channel assignments.
- Automatic playback, on the phone, of the generated MIDI sequences.
- Embed a Csound orchestra in the Score object, which can be used to render that score if the platform supports Csound.
I will be adding new features soon…