Autonomous live music generator (2012)
Fig 1. The web-based control unit.
Project Groover was a service which autonomously composed, sequenced, mixed and mastered musical microgrooves at 140 BPM into a non-stop radio stream. The web interface allowed listeners to download grooves as individual files, and to also train the composition AI through an instant feedback mechanism. The ultimate goal of Project Groover was the algorithmic generation of a music album-like set of songs with minimal human guidance.
In 2012 I sought to improve my understanding of realtime audio production and streaming and was particularly interested in better integration of scripting languages into the sequencing and mixing workflow. The study quickly evolved into an exploration of algorithmic composition. The project took approx. 100 hours to develop and reused pre-existing and publically available software libraries as much as possible.
Fig 2. How it sounded - listen to an archived stream of Project Groover with a Winamp compatible player (10 hour playlist).Fig 3. Listen to the Project Groover Remixes album on Soundcloud (50 min).
Key lessons of this project:
- Modularisation proved particularly effective for prototyping - e.g. as the sequencer took a stream of XML note data as input it became trivial to update the song generator without stopping the stream.
- A significant amount of work was saved through integration of the VST standard, allowing the reuse of the existing collection of compressors, EQ etc. effect libraries for mixing and mastering.
- The state of open source/free streaming software was surprisingly underdeveloped even in 2012, and invariably required a bit of hacking and scripting in order to achieve good reliability.
This project also raised some interesting hypothetical legal questions (which I have not found a clear cut answer for yet) in the field of copyright, such as whether or not e.g. a thousand servers streaming (essentially making available to the public) new generated music 24/7 would sooner or later infringe some existing music, or pre-empt some yet to be commerically published music for that matter.
- One 8-core Xeon server with a 100 Mbit network connection
- Song composer/generator written in Perl, producing a constant stream of note control data in XML
- A custom C# sequencer and VST host for rendering the XML note sheet into a 44100 Kbps raw audio stream
- Streaming infrastructure implemented using ezstream, icecast, lame and ffmpeg