GenJam Populi: Training an IGA via Audience-Mediated Performance John A. Biles William G. Eign Rochester Institute of Technology Xerox Corporation (716)475-7453 (716)422-0688 jab@cs.rit.edu weign.wbst102a@xerox.com ABSTRACT: This demonstration will explore audience participation in the training of an interactive genetic algorithm (IGA) by concurrently allowing several attendees to serve as “human fitness functions” for GenJam, an IGA that improvises jazz solos. In addition to providing an opportunity for hands-on experience training an IGA, we will discuss the use of multiple concurrent mentors as a solution to the fitness bottleneck inherent in musical IGAs, and we will explore artistic and pragmatic aspects of audience-mediated performance. 1 IGAs and the Fitness Bottleneck Genetic algorithms, or GAs (Goldberg, D.) apply the principles of natural genetics to artificial search problems. The paradigm can be viewed as breeding successive generations of potential or partial solutions to a problem until a solution emerges that meets some criterion. An individual member of a population is represented as a string of symbols (its genotype), which can be mapped to a potential problem solution (its phenotype). An important requirement for using a genetic algorithm is the ability to determine the fitness of a given individual as an indicator of how well it solves the problem at hand. If an algorithm exists that can at least determine which of two given individuals is better, the GA can be run off-line with no human intervention, and hundreds or thousands of generations of large populations are possible. In subjective domains, however, this fitness function often cannot be expressed algorithmically. Interactive genetic algorithms (IGAs) use a human mentor to evaluate each individual and assign fitness values. In musical domains, where each individual might represent a sound sample (Takala, T.), a rhythm measure (Horowitz, D.), or a melodic fragment (Biles, J.), the human fitness function represents a limiting factor in the GA’s operation because the mentor must listen to each musical sample in real time in order to indicate its fitness. This fitness bottleneck severely constrained the design of GenJam, an IGA that learns to improvise jazz solos to the accompaniment of a synthesized rhythm section (Biles, J.). GenJam’s original interface allows a single mentor to provide real-time feedback by typing ‘g’ (for good) or ‘b’ (for bad) while GenJam improvises solos. When the ‘g’ key is typed, the fitness values for the currently playing measure and phrase individuals are incremented. When the ‘b’ key is typed, they are decremented. Empirically- derived delays allow time for the mentor to perceive and react to the melodic material before giving feedback. In an attempt to address the fitness bottleneck, we have developed an enhanced mentor’s interface that allows several mentors to provide concurrent feedback to GenJam as it performs. The naive assumption is that multiple mentors parallelize the human fitness function, thereby speeding up the acquisition of fitness feedback and enhancing its reliability. The interface uses readily available components to implement the following simple design. There are several button boxes available, one for each mentor. Each box provides a “good” and a “bad” button, each of which can be clicked at will. Holding a button down does not repeat its feedback, so mentors must explicitly click “good” or “bad” each time they wish to register a non-neutral opinion. The button boxes are connected to a micro-controller driven collector, which maps the button clicks to MIDI control change messages, which it sends over a standard MIDI cable to the Yamaha MU-80 tone generator’s MIDI IN terminal and, through the MU-80’s interface, to the host computer. The controller number used is 50, which is ignored by the MU-80. The GenJam software recognizes the control parameter messages with a ctrlchange event handler supported by the underlying CMU MIDI Toolkit environment (Dannenberg, R.). Even data values map to “good,” and odd values map to “bad.”