published on
// three texture studies for disklavier
// no. 1, strobomites
// daniel j. thompson (2018)
( // this SuperCollider program will possess a Disklavier to play the first study.
var mOut=MIDIOut.new(0),
vGen1 = {
| numVoices=6, bpm=400, ampLo=0.5, ampHi=1 |
c=60/bpm; a=[0,2,-4];
p=((Array.fill(3, { |in| (Array.fill(42, { |i| (((10+(8*i))-10)%84)+10 })
+Array.fill(6, { |i| [1,1,0,0,1,0].rotate(i) })).flat+a[in] }).flat-10)%84)+10;
w=Array.fill(numVoices, { |i| \rest!(1+(6*i)+(36*(i*0.5)*((i+1)%2))+(36*((i-1)*0.5)*(i%2))) });
d=Array.fill(3, { |i| (c * (0.5**(a[i]/12)))!252 }).flat;
l=d.size; g=l*0.618.round;
(d.sum/60).postln;
Array.fill(numVoices,
{ |i| x=w[i].size;
Pbind(
\type, \midi, \midicmd, \noteOn, \midiout, mOut, \chan, 0,
\midinote, Pseq(w[i]++(p+12),1),
\dur, Pseq((c!x)++d,1),
\sustain, Pseq((c!x)++(d*0.25),1),
\amp, Pseq((Array.fill(42, { |in| 1*(0.5**(in/(42+(2*i)))) })
* (((0.75!10)++[1]).rotate(5*i))
* Array.fill(l, { |i| if((i+1)<=g, { 0.8*(1.25**(i/g)) },
{ 1*(0.25**((i-g)/(l-g))) })})).normalize(ampLo,ampHi),inf)
)}).do({ |i| i.play })
};
vGen1.value(12,380,0.4,1);
)
- Genre
- Generative/Algorithmic