"Natural selection is a mechanism for generating an exceedingly high degree of improbability."
Sir Ronald Aylmer Fisher (1890-1962)

Introducing P-Farm

P-Farm 0.3, Windows version has arrived for :

Yamaha V50 ~194K
Yamaha YS100 ~193K
Roland Juno-106 ~193K

What is P-Farm ?

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]

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. My Yamaha synth 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 :

Does it work for all 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 ( time consuming )translation function between MIDI-equipment and GA.

P-Farm is still under development. In it's final form P-Farm will be a freeware program running under Windows. It will contain drivers for :

Other programmers will be invited to write drivers for their MIDI-equipment.

At this moment there are three experimental windows versions available.
P-Farm 0.3 for Yamaha V50 ~194K which requires :
  • Windows 3.1 or Windows 95
  • Midi card installed in Windows
  • Yamaha V50
P-Farm 0.3 for Yamaha YS100 ~193K which requires :
  • Windows 3.1 or Windows 95
  • Midi card installed in Windows
  • Yamaha YS100 ( but probably also works with YS200, DX11, DX21, DX27, DX100 and TX81Z )
P-Farm 0.3 for Roland Juno-106 ~193K which requires :
  • Windows 3.1 or Windows 95
  • Midi card installed in Windows
  • Roland Juno-106
If you own a V50 or compatible synth (DX11, YS100, YS200, B200, TQ5, DX21, DX100 TX81Z or WT11), you can check out these 15 voices. These are raw sysex dumps. Let me know what you think of them.


See also

Mark Smucker's Evolutionary Computation and Artificial Life Page
John Mount's International Interactive Genetic Art II
The MIDI Farm Internet
Synth.Site
V 50 Patch Page
avg@xs4all.nl - Arno van Goch - Last update : Sep 14 1996