|
|
|
(
|
|
|
|
// MAIN LAUNCH (loads necessary files and definitions)
|
|
|
|
|
|
|
|
var appEnvironment;
|
|
|
|
|
|
|
|
//push new environment
|
|
|
|
appEnvironment = Environment.make;
|
|
|
|
appEnvironment.push;
|
|
|
|
|
|
|
|
s.waitForBoot({
|
|
|
|
|
|
|
|
~hash = Date.getDate.hash.asString;
|
|
|
|
|
|
|
|
// load all files
|
|
|
|
"cicc_musical_data_generator.scd".loadRelative;
|
|
|
|
"cicc_sonifier.scd".loadRelative;
|
|
|
|
"cicc_gui.scd".loadRelative;
|
|
|
|
"cicc_transcriber.scd".loadRelative;
|
|
|
|
|
|
|
|
// generate all the data
|
|
|
|
~genAll = {arg seed;
|
|
|
|
~allMusicData = ~genMusicData.value(seed);
|
|
|
|
~patterns = ~allMusicData[0];
|
|
|
|
~scoreData = ~allMusicData[1];
|
|
|
|
~sectionOffsets = ~allMusicData[2];
|
|
|
|
~currentSection = 0;
|
|
|
|
~currentSubsection = 0;
|
|
|
|
~isPlaying = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
// set the global variables
|
|
|
|
~tempoClock = TempoClock.new(90 / 60);
|
|
|
|
~dir = thisProcess.nowExecutingPath.dirname;
|
|
|
|
"loading app".postln;
|
|
|
|
~genAll.value(20200525);
|
|
|
|
~play = Synth.new(\masterPlayerControl ++ ~hash);
|
|
|
|
{
|
|
|
|
var center, interval, freq1, freq2, tremRate;
|
|
|
|
center = 50 - 12.0.rand;
|
|
|
|
interval = 3.0.rand + 2;
|
|
|
|
freq1 = (center + (interval / 2)).midicps;
|
|
|
|
freq2 = (center - (interval / 2)).midicps;
|
|
|
|
tremRate = 50 + 4.0.rand2;
|
|
|
|
~interludeTremelo = Synth.new(\interludeTremelo ++ ~hash, [\freq1, freq1, \freq2, freq2, \tremRate, tremRate]);
|
|
|
|
}.value;
|
|
|
|
~autoAdvance = true;
|
|
|
|
~interludes = false;
|
|
|
|
~sectionOrder = ~patterns.size.collect({arg sec; sec});
|
|
|
|
~generateGUI.value;
|
|
|
|
"ready".postln;
|
|
|
|
});
|
|
|
|
appEnvironment.pop;
|
|
|
|
)
|