Homepage of Arno van Goch


P-Farm is a MIDI patch-editor that uses a genetic algorithm (GA) to create new patches.

Midi patch editor
A program to edit patches on MIDI equipment. In most cases a program to edit sounds on a MIDI-synthesizer
Genetic Algorithm (GA)
A type of evolutionary computation devised by John Holland. A model of machine learning that uses a genetic/evolutionary metaphor. Implementations typically use fixed-length character strings to represent their genetic information, together with a population of individuals which undergo crossover and mutation in order to find interesting regions of the search space. - [from the comp.ai.genetic FAQ]

P-Farm can be used with the following synthesizers:

  • Yamaha V-50, YS100, YS200, DX11, DX21, DX27, DX100, TX81Z
  • Roland Juno-106

The program is freeware and can be downloaded here.

What does that all mean?

On most synths a sound is internally stored as an array of parameters. These parameters define the sound. It does not take a lot of parameters to create a huge set of possible sounds.

Only 3 parameters of 1 byte are enough to create 17 million possible sounds. The Yamaha V50 synthesizer uses about 200 parameters. 200 bytes are nothing when speaking of memory-storage, but they create a staggering amount of possible sounds. It takes more than a lifetime to hear all those sounds.

The problem is that a lot of these possible sounds are crap. If one should randomly create sounds, changes are just too high that the sounds are crap. Genetic algorithms have proven to be a good tool to efficiently explore these huge sets of possible solutions (search space). Starting with a population of good sounds, we can watch them evolve to a totally different population of good sounds.

To make the sounds ready for the GA all we have to do is to view the array of parameters that define the sound as the "genetic material" of that sound. The parameters are the "genes". We then create a population of individual sounds.

The GA uses the following functions :

Genes from two individuals are mixed to create a third individual. This is an important function because 'good' genes are reused again in different combinations
During crossover some genes might mutate. This introduces new genes that might be useful
Survival of the fittest
The 'good' individuals, having 'good' genes, have a better change of reproduction ( spreading their genes ) than 'bad' individuals

Could this work for all sorts of MIDI-data?

Probably not. The efficiency of a GA is largely depending on the way in which the possible solutions are encoded. Basically P-Farm works directly on the encoded MIDI-data so it is depending on the way the MIDI-equipment encodes it's data. As said before, most synths encode their sounds as an array of parameters. If these parameters are largely independent of each other we have something to work with. However, on a sampler sounds are encoded as an array of continuous data. Breaking this up, as the crossover function would do, will hardly create any good sounds. The only solution then is to use a different encoding, and use a translation function between MIDI-equipment and GA.