111 lines
3.4 KiB
Plaintext
111 lines
3.4 KiB
Plaintext
|
|
(
|
||
|
|
var primes, hsArrayToFreq, hsArrayDimDiff, file, seq, phraseLengths, musicData, patterns, fund, seqIndex;
|
||
|
|
|
||
|
|
thisThread.randSeed = 1954111620240509; //everything in between
|
||
|
|
//thisThread.randSeed = 20240509; //rise yitgadal
|
||
|
|
fund = 100;
|
||
|
|
|
||
|
|
~m1 = NetAddr("192.168.4.200", 54001);
|
||
|
|
~m2 = NetAddr("192.168.4.202", 54000);
|
||
|
|
~m3 = NetAddr("192.168.4.203", 54000);
|
||
|
|
|
||
|
|
primes = [2, 3, 5, 7, 11, 13, 17];
|
||
|
|
|
||
|
|
hsArrayToFreq = {
|
||
|
|
arg array;
|
||
|
|
array.collect({arg dim, d; pow(primes[d], dim)}).product
|
||
|
|
};
|
||
|
|
|
||
|
|
hsArrayDimDiff = {
|
||
|
|
arg array1, array2;
|
||
|
|
var fArray;
|
||
|
|
fArray = array2.drop(1) - array1.drop(1);
|
||
|
|
if(fArray.sum == 0, {1}, {(primes[fArray.abs.indexOf(1) + 1] * fArray.sum)})
|
||
|
|
};
|
||
|
|
|
||
|
|
//file = File("/home/mwinter/Portfolio/compact_sets/sirens.txt".standardizePath,"r");
|
||
|
|
//file = File("/home/mwinter/Sketches/compact_sets/rise_yitgadal.txt".standardizePath,"r");
|
||
|
|
file = File("/home/mwinter/Portfolio/compact_sets/everything_in_between.txt".standardizePath,"r");
|
||
|
|
seq = file.readAllString.interpret;
|
||
|
|
|
||
|
|
//seq = seq.collect({arg item; item.sort});
|
||
|
|
seq = seq.collect({arg chord, index;
|
||
|
|
var ref_ins;
|
||
|
|
ref_ins = if(index == 0, {
|
||
|
|
[0] // this should actually check which is the 'centered' pitch
|
||
|
|
}, {
|
||
|
|
[seq[index - 1], chord].postln.flop.collect({arg pair, p; if(pair[0] == pair[1], {p}, {-1})}).postln.removeEvery([-1])
|
||
|
|
});
|
||
|
|
chord.collect({arg pitch;
|
||
|
|
var dimDiff;
|
||
|
|
ref_ins.postln;
|
||
|
|
if(ref_ins.size == 1, {
|
||
|
|
[pitch, [ref_ins[0], hsArrayDimDiff.value(chord[ref_ins[0]], pitch)]]
|
||
|
|
}, {
|
||
|
|
var min_ref_ins;
|
||
|
|
min_ref_ins = ref_ins.minItem({arg ins; (chord[ins].drop(1) - pitch.drop(1)).abs.sum});
|
||
|
|
[pitch.postln, [min_ref_ins.postln, hsArrayDimDiff.value(chord[min_ref_ins], pitch)]]
|
||
|
|
});
|
||
|
|
})
|
||
|
|
});
|
||
|
|
|
||
|
|
seq = seq.collect({arg chord; chord; chord.collect({arg pitch; fund * hsArrayToFreq.value(pitch[0])}).postln});
|
||
|
|
seq.postln;
|
||
|
|
|
||
|
|
|
||
|
|
seqIndex = -1;
|
||
|
|
w = Window.new("compact sets siren player");
|
||
|
|
w.view.keyDownAction = { arg view, char, modifiers, unicode, keycode;
|
||
|
|
[char, keycode].postln;
|
||
|
|
if((keycode == 44) && ((seqIndex - 1) >= 0), {
|
||
|
|
seqIndex = seqIndex - 1;
|
||
|
|
~m1.sendMsg("/freq", 1, seq[seqIndex][0].postln);
|
||
|
|
~m1.sendMsg("/freq", 2, seq[seqIndex][1].postln);
|
||
|
|
~m1.sendMsg("/freq", 3, seq[seqIndex][2].postln);
|
||
|
|
});
|
||
|
|
|
||
|
|
if((keycode == 46) && ((seqIndex + 1) < seq.size), {
|
||
|
|
seqIndex = seqIndex + 1;
|
||
|
|
~m1.sendMsg("/freq", 1, seq[seqIndex][0].postln);
|
||
|
|
~m1.sendMsg("/freq", 2, seq[seqIndex][1].postln);
|
||
|
|
~m1.sendMsg("/freq", 3, seq[seqIndex][2].postln);
|
||
|
|
});
|
||
|
|
if((keycode == 47) && ((seqIndex - 1) >= 0) && ((seqIndex + 1) < seq.size), {
|
||
|
|
~m1.sendMsg("/freq", 1, seq[seqIndex][0].postln);
|
||
|
|
~m1.sendMsg("/freq", 2, seq[seqIndex][1].postln);
|
||
|
|
~m1.sendMsg("/freq", 3, seq[seqIndex][2].postln);
|
||
|
|
});
|
||
|
|
};
|
||
|
|
w.front;
|
||
|
|
|
||
|
|
/*
|
||
|
|
~musicData = musicData;
|
||
|
|
|
||
|
|
~patterns = Ppar(
|
||
|
|
musicData.collect({arg voice, v;
|
||
|
|
var freqs, durs, attacks, delays, sustains, rels, amps;
|
||
|
|
# freqs, durs, attacks, delays, sustains, rels, amps = voice.flop;
|
||
|
|
//# durs, attacks, delays, sustains, rels = [durs, attacks, delays, sustains, rels].collect({arg data; data / 16});
|
||
|
|
Pbind(
|
||
|
|
\instrument, \string_model,
|
||
|
|
\freq, Pseq(freqs, 1),
|
||
|
|
\dur, Pseq(durs, 1),
|
||
|
|
\attack, Pseq(attacks, 1),
|
||
|
|
\sustain, Pseq(sustains, 1),
|
||
|
|
\release, Pseq(rels, 1),
|
||
|
|
\amp, Pseq(amps, 1),
|
||
|
|
\del, Pseq(delays, 1),
|
||
|
|
\busIndex, v
|
||
|
|
)
|
||
|
|
});
|
||
|
|
);
|
||
|
|
|
||
|
|
~patterns.play
|
||
|
|
*/
|
||
|
|
)
|
||
|
|
|
||
|
|
(
|
||
|
|
w = Window.new("I catch keystrokes");
|
||
|
|
w.view.keyDownAction = { arg view, char, modifiers, unicode, keycode; [char, keycode].postln; };
|
||
|
|
w.front;
|
||
|
|
)
|