Architecture

A Rock Game is a modular software written in Scala that makes use of the of the sequencing capabilities of the underlying JVM and the MIDI sound system. Instead of relying on standard hardware synthesis it is interfaced through the Steinberg VST (Virtual inSTrument) programming interfaces to software instruments, which allow software synthesis of realistic instruments on cheap general purpose hardware comparable in quality to high-end hardware synthesizers as those used by GenJam.

The system presents a user interface that allows control over the genetic algorithm. The user interface displays a selection of the music patterns for each type (drum patterns, chords/guitar, melody patterns) and allows the user to graphically choose the desired pattern, which results in a vote up, or discard an undesired one to get another bred from the underlying population.

Under the user interface, the genetic algorithm takes care of managing the population, discarding bad patterns and breeding new ones to propose to the user for evaluation. The three types of pattern, drum, chord and melody patterns, are kept in three different sets while having the same representation as bit strings and the same set of genetic operations, as we will see later. This makes the system uniform and the genetic algorithm completely independent from each type of pattern.

The task of producing different interpretations to each set of strings is assigned to the phenotype system, which has three modules that are able to express drum, chord and melody patterns in the form of MIDI events. This information goes to the sequencer, which receives the patterns and puts them together in a loop.



Subsections
Alessandro Bruni 2011-02-18