I’ve updated my NatureToolkit Quark with two new classes. GAWorkbench and GAPmatch. As usual, full documentation is provided with examples so be sure to check them out.
This is a general purpose and modular genetic algorithm class for SuperCollider. Genetic algorithm is a search technique used for finding approximate solutions to search and optimization problems. They use techniques derived from evolutionary biology like inheritance, mutation, (artificial) selection and crossover.
GAWorkbench is a general purpose class that provides an easy interface to interact with your data to be used with GA’s. It can be used for solving general most probably music related computational search problems and can also be used for exploring sound spaces, finding suitable parameters for synthesis networks etc.
GAPmatch is a fast parameter estimation system that intends to work at near-interactive speeds to aid sound design and maybe live performances. To achieve this, it uses a fast search technique called “Genetic Algorithm” which mimics the evolutionary continuum that we observe in nature. It wraps a GAWorkbench instance (described above) for this specific purpose.
In terms of its functionality in the SC environment, parameter estimation means this: You have a SynthDef that is known to be capable of synthesizing a particular type of sound, but finding the right parameters is a time consuming and in some situations a tedious task. Or you have built a raw SynthDef for a synthesis algorithm which exposes a few dozens of parameters and it’s impossible to conduct them at that state. Or you are trying to tune a physical modelling instrument… Situations can vary. This parameter estimation system basically takes an input sound, an input SynthDef and its parameter ranges, and it tries to find the parameters for this particular synthesizer so that the output of the synth is faithful to the attributes of your input sound. From that stage on, you can alter the parameters by yourself to change the synthesized sound in various ways.
Execution of genetic algorithms demands heavy computing resources, and this class can parallelize the task (the fitness calculation stage) across multiple scservers on your local machine (to utilize multiple CPU cores on your machine) and networked machines.
An article I’ve submitted for peer review that describes the inner workings of the system in depth will be provided when I have the permission to do so. Until then, the documentation and sources should provide necessary info.
(You need to have BatUGens and BatPVUgens installed from sc3-plugins for this to work)
I’ve also gone ahead and recorded a little screencast to introduce GAWorkbench and show GAPmatch it in action:
Let me know what you think of it.