sc_learning_diary / phenosynth.scd

Full commit
Sample.dir = "/Users/dan/Library/Application Support/Ableton/Library/Samples/";
~sample ="tests/cariboutesque.aif");

~globalOuts =\audio, 0, 2);
~control =, ~globalOuts);
~ind = PSSynthDefPhenome.newRandom;
~ind.chromosome;{~control.playIndividual(PSSynthDefPhenome.newRandom)});{|a,b,c| [a,b,c].postln;});\audio, 60, 1).scope;



* provide a way to unwarp as well as warp chromosomes
* support multi-channel listeners ( is hardcoded to 1 channel atm) 
* LFOs
  * support creatures which vocalise only sporadically (saving CPU, or at least saving earspace)
* give lifespans using the exponential distribution \lambda \e ^-\lambda \e
* TODO: scale birthRate and deathRate so that they fit eventual fitness
* reseed population when they all die
* better aging calculations
* sort out the interactions of all these different tick rates and periods.
* Handle "free controls", values that are passed in live by the user. (esp for
  * alter chromosome if Specs are changed through UI or any other means, using
    all that Dependent business

* Give the faintest of indications that I do care about tests

* allow custom evolvability mappings and starting chromosome.
* I've just noticed that MCLD has been facing the same problem and made
  classes similar in spirit to mine, as regards selecting the phenotypes
  rather than genotypes, as the NLTK does: - see also
* do free/cleanup logic
* normalise fitness gain w/respect to energy expenditure (i.e. amplitude)
* less arbitrary immigration
* consistently use either class or instance methods for selection/mutation

Thanks to Martin Marier and Crucial Felix for tips that make this go, and
James Nichols for the peer pressure to do it.