( // 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; )