A gene expression programming based evolutionary audio synthesizer by Valentin Lageard.
- pyo :
sudo pip3 install pyo
Launch the notebook and evaluate all cells.
In the last cell, a modest command interface allows you to :
- [1-16] : Listen individual synth from 1 to 16.
- [s] : Stop the current playing synth.
- [r] : Reproduce this population to get the new population.
- [1-16]=[0-4] : Assign fitness [0-4] to the individual [1-16]
Usually you'll want to listen to all synth in a generation, assign them fitnesses, then reproduce to get a new generation.
- Generate n ugen graphs.
- Let the user select the favorite ugen graphs.
- Regenerate n ugen graphs based on user selection and genetic operators.
pyo ugens are wrapped in functions allowing to control how the genome is expressed as parameters of pyo ugens.
Implemented in gep.py
.
To get next generation :
- Select wheel.
- Primitive mutation.
- Segment inversion.
- Non-root segment transposition.
- Root segment transposition.
- 1 point recombination.
- 2 point recombination.
- Gene recombination.
Version | Changes |
---|---|
0.1 | First working prototype |
0.2 | Tk gui, tanh compression added, ugens with inputs managed, more ugens |
0.3 | Multigenic chromosomes, multichromsomals individuals, more flexible gep architecture, general refactoring |
- Implement more ugens.
- Create an exponential interpolation fitting the psychoacoustic frequency curve to constrain frequencies.
- Add manual elitism.
- Modify algorithm to check for empty synths and regenerate them to have only synth with a root function.
- Modify algorithm to check for audio frequencies in synths and regenerate them to have only synths with sound.
- Make a nice graphical interface.
- Develop a way to selectively inject ugens in genome to constrain a range of application.
Assigning fitness :
- Manually assign a fitness.
- Select between : no reproduction, reproduce, reproduce a lot.
Selecting the primitive set :
- By selecting each manually.
- By assigning weights to families of ugens. Needs a select_primitive function for generation and mutation.
Keyboard mode :
- Plug a MIDI keyboard and constrain the synths to have a midi to frequency converter.
- A. Allik. Gene expression synthesis.
- C. Ferreira. Gene expression programming: a new adaptive algorithm for solving problems.
- C. Ferreira. Gene Expression Programming: Mathematical Modeling by an Artificial Intelligence.