«Yet another molecular music box» by coreyker
on 24 Dec'14 14:13 inAn attempt at coding this algorithm: http://www.synthtopia.com/content/2014/12/22/the-molecular-music-box-how-simple-rules-can-lead-to-rich-patterns/
I haven't really checked for errors, but is sounds ok.
There are a few other SC versions as well. See for example:
http://www.kimri.org/blog/?p=487
and
http://sccode.org/1-4Ww
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
( // first run synthdef
SynthDef(\piano, {|midinote, outBus=0|
Out.ar(outBus, MdaPiano.ar(midinote.midicps, decay:0.5)); // from sc3-plugins
}).add;
)
( // now the rest
~dur = {|len1=4, len2=3|
Plazy({
var dur = len1;
inf.do{|n|
var overlap = (n % len1 == 0) || (n % len2 == 0);
if(n>=len1 && dur==len1 && overlap,
{
dur=len2;
},
{
if(n>0 && dur==len2 && overlap,
{
dur=len1;
});
}
);
dur.yield;
};
}).asStream;
};
~note = { |root=48|
Plazy({
var scale = Scale.major.degrees.flat;
inf.do{|n|
var oct = (n / scale.size).floor;
var degree = 12*oct + scale.wrapAt(n) + root;
degree.yield;
}
}).asStream;
};
r = Routine({
var durStream = ~dur.value(9, 14.5);
var noteStream = ~note.value(48);
inf.do {
var dur = durStream.next();
var note = noteStream.next();
fork{
inf.do{
Synth(\piano, [\midinote, note]);
4.yield; // loop duration
};
};
dur.yield;
};
});
r.play(TempoClock(2));
)
reception
comments