GA Gendy is my research based final year project for my Music Informatics undergraduate degree. It is a stand-alone synthesizer program built in java based upon Xenakis' generative dynamic stochastic synthesis algorithm ("Gendyn") originally written in BASIC. The technique appears in compositions GENDY3 (1991) and S.709 (1994) (Luque, 2006, p. 5). I have then used an unsupervised genetic algorithm (GA) training procedure to try and train Gendyn's parameters to produce output that timbrally matches a supplied audio clip.
The program is written in java and has a fully functional graphical user interface, including a full graphical envelope system. Gendyn partly relies upon use of probability distributions and I have introduced custom probability distributions using a linearly interpolated breakpoint system. The custom distribution also has an envelope system which interpolates between custom probability states.
The synthesis procedure works as follows. First an initial waveform is generated from linearly interpolated breakpoints each of which has a duration and amplitude attributed. It could be considered a form of “waveshaping synthesis” (Hoffmann, 2009, p. 138). In other words, a waveform is drawn dot-to-dot and each dot (or breakpoint) has a position in time (duration) and change in pressure (amplitude).
The waveform is repeated through time. Each time the waveform repeats it undergoes a “stochastic alteration” (Xenakis, 1992, p. 290). At each repetition breakpoints move by (first order) random walk using a chosen probability distribution in both time and amplitude. A second order random walk controls the range in which the first order random walk can move. The repetition can be frequency restricted whereby the breakpoints never make the waveform's sum length longer or shorter. Or it can be unrestricted and pitch is free to change over time as breakpoint durations are shortened and lengthened. Already a number of parameters need to be addressed:
• Duration and amplitude random walk absolute limits,
• number of breakpoints,
• frequency (the timegap to be divided into breakpoints),
• amplitude and duration probability distribution choices (total of 8 choices),
• and amplitude and duration probability distribution parameters.
There are 7 mathematical probability distributions which I have taken from Nick Collins' SuperCollider Ugen. These are Linear, Cauchy, Logistic, Hyperbolic cosine, Arcsine, Exponential, and Sinusoidal (not quite finished) distributions.
There is an additional probability distribution which is a custom one made from 15 linearly interpolated breakpoints. The resulting sound is a “non-linear stochastic distortion of the waveform through time” (Hoffmann, 2000, p. 32). This can translate generally from gently modulated steady tones to fiercely noisy timbres and many more in between. It is this large range of possible sounds which makes the Gendyn system an ideal candidate for GA exploration.
Many outputs can be likened to a “bright “buzzy” tone not unlike a sawtooth wave” (Brown & Jenkins, 2004, p. 4) but can achieve anything from stable tones to unique modulation effects to noisy complexities. Peter Hoffman re-implemented Gendyn in C++ with a GUI in 4GL (Hoffmann, The New GENDYN Program, 2000) and Andrew R. Brown created an interactive implementation in Java (called the IDSS) with real time controls and percussive options. (Brown A. R., 2005).
GAs are suitable for exploring large search spaces where a solution to a problem is not necessarily known or easily mathematically tractable. The search space is often enormous and highly dimensional depending on the number of synthesizer parameters (Dahlstedt, 2001, p. 3). These parameters can also be highly interdependent and one small mutation could entirely subvert the characteristic sound constructed from other parameters (Dahlstedt, 2007, p. 82). A supervised GA can take user input as its fitness function but this is much slower than an unsupervised GA which can somehow calculate fitness with a fitness function. However, a fitness function can not quantify the "goodness" of a sound so the goal must be more specific.
Matt Yee-King’s Synthbot is a host VST application that evolves any VST synthesizer plug-in to match a target sound (Yee-King, Synthbot: An Unsupervised Software Synthesizer Programmer). Kaare Wehn created an unsupervised GA system with a target sound which used a series of synthesizers as its population. Each synthesizer is a complex series of interconnected unit generators, the topology of these connections makes up the genotype of each individual in the population (Wehn, 1998, p. 2).
The GA is generational and the population is replaced at every epoch. I have used CoMIRVA's MFCC class in order to analyse Gendyn output and target sound files for timbral similarity. There are 2 mutation operators and a mixture of crossover operators. A battery of tests were run showing that it could pick up on aspects of the target sound but not produce something that necessarily sounds exactly like it. Using the GA allowed me to test the true boundaries of the Gendyn system, unleashing its potential but exposing its limitations.
Many novel algorithmic strategies are implemented including my own interpolation algorithm, custom probability distribution function, mirror function, numerical compression function and more.
Download the full report with full bibliography here.
Brown, A., & Jenkins, G. (2004). The Interactive Dynamic Stochastic Synthesizer. Australasian Computer Music Conference. Wellington, New Zealand.
Brown, A. R. (2005). Extending Dynamic Stochastic Synthesis. International Computer Music Conference, (pp. 5-9 ). Barcelona, Spain.
Dahlstedt, P. (2007). Evolution in Creative Sound Design. In E. R. Miranda, & J. A. Biles, Evolutionary Computer Music (pp. 79-99). Secaucus, NJ: Springer-Verlag New York, Inc.
Dahlstedt, P. (2001). Creating and Exploring Huge Parameter Spaces: Interactive Evolution as a Tool for Sound Generation. Proceedings of the International Computer Music Conference (pp. 1-8). Havana, Cuba: Innovative Design, Chalmers University of Technology.
Hoffmann, P. (2009). Music Out of Nothing? A Rigorous Approach to Algorithmic Composition by Iannis Xenakis. Berlin: Technische Universitat Berlin.
Hoffmann, P. (2000). The New GENDYN Program. Computer Music Journal , 31-38.
Luque, S. (2006). Stochastic Synthesis: Origins and Extensions. 1-38.
Wehn, K. (1998). Using Ideas from Natural Selection to Evolve Synthesized Sounds. Proceedings of the Digital Audio Effects DAFX98 workshop, (pp. 1-5). Barcelona.
Xenakis, I. (1992). XIII Dynamic Stochastic Synthesis. In I. Xenakis, Formalized music : thought and mathematics in composition / Iannis Xenakis (pp. 289-322). Stuyvesant, NY: Pendragon Press.
Yee-King, M. (n.d.). Synthbot: An Unsupervised Software Synthesizer Programmer. Retrieved 2010 йил 24-October from Yee-King Adaptive: http://www.yeeking.net/pdf/roth_yee-king_ICMC2008.pdf