fun void background(string file, int chan) { SinOsc s => dac.chan(chan); [53, 56, 58, 60, 65] @=> int array[]; DataReader data; data.setDataSource(file); data.start(); data.scaledVal(); s.gain(1); while (!data.isFinished()) { data.nextVal() => float w; w % 5 => float floatIndex; floatIndex $ int => int index; s.freq(Std.mtof(array[index])); 405::ms => now; } } fun void solo(string file, int chan) { //[58, 61, 63, 64, 65, 68, 70, 73, 75, 76, 77, 80, 82] @=> int array[]; [65, 68, 70, 72, 75, 77, 80, 82, 84, 87, 89] @=> int array[]; 3.24::second => now; DataReader data; data.setDataSource(file); data.start(); data.scaledVal(); SawOsc s => NRev rev => dac.chan(chan); s.gain(.3); while (!data.isFinished()) { data.nextVal() => float w; w % 11 => float floatIndex; rev.mix(w % 10 / 20); floatIndex $ int => int index; s.freq(Std.mtof(array[index])); s.gain(.06); if (w % 2 > 0) { 405::ms => now; } else { 270::ms => now; data.nextVal() => float w; w % 11 => float floatIndex; floatIndex $ int => int index; s.freq(Std.mtof(array[index])); 135::ms => now; } } } "/user/g/gbrodman/Downloads/US-monthly-wholesale.txt" => string filename; spork ~ solo(filename, 0); spork ~ background(filename, 1); 1::day => now;