‹ My Plugins Available as Windows Binaries Japanese Fire Patrol ›

n FM7 Patches

2008-07-07 05:21 supercollider

About letting the computer generate SuperCollider code automatically... Stefan Kersten made a very nice plugin for SuperCollider. It's called FM7 and implements a 6x6 phase modulation oscillator matrix. While trying it out, I wrote some code (pasted in below) that automatically generates parameters for it. So every 8th bar it'll construct a new patch around the FM7. In these patches, the FM7 parameters are UGens with random frequency, phase, range and offset.

At times, I start the generator, lean back and listen. When something good catches my ears, I copy the generated code from the post window. Here are some ok ones I've collected... n_fm7patches and below are MP3 excerpts of the same. But the best ones I, of course, keep to myself.

By randomly generating patches and synths like this I lose a lot of control and time listening to all the generated patches. Most are crap sounding. But on the other hand, the blind randomness sometimes comes up with so strange rhythms and sounds that I never would've been able to think of myself. And the time lost could be minimised using, for instance, genetic algorithms or other types of searches in this huge parameter space.

Get FM7 by installing sc3-plugins.

s.boot

//--more repetitive 2ch instant clicks 'n cuts with code generation /f0
//when you hear something you like, you can save it by copy&paste from the post window
(
Routine.run{
  var syn, time= 16;  //allow each patch to run for 16sec / 8bars
  inf.do{|i|
    ("\n//fm7 patch"+i+"generated on"+Date.localtime).post;
    syn= ("
      (
      var x= #"++({{{1.5.linrand.round(0.5)}!4}!3}!6).asCompileString++";
      var y= #"++({{{1.5.linrand.round(0.5)}!4}!6}!6).asCompileString++";
      {
        var ctls= x.collect{|a| a.collect{|b| LFSaw.kr(*b)}};
        var mods= y.collect{|a| a.collect{|b| LFSaw.kr(*b)}};
        var chans= #[0, 1];
        FM7.ar(ctls, mods).slice(chans)*0.5;
      }.play)").postln.interpret;
    time.wait;
    syn.free;
  };
};
)

‹ My Plugins Available as Windows Binaries Japanese Fire Patrol ›