/////////////////////////////////////////////////////////// //// SEQUENCER / TIMELINE ///////////////////////////////// /////////////////////////////////////////////////////////// (( // TEMPO AND CLOCK DISPLAY //////////////// ~t1 = TempoClock.new(45/60, 4); ~t2 = TempoClock.new(2, 4); ~postClockInfo = {}; ~postClockInfo = { ("beat:" +((~t1.beats.floor)%~t1.beatsPerBar + 1) ).postln; ("bar:" +(~t1.bar) ).postln; "".postln; 1 }); ////////////////////////////////////////////// // SET CLOCK INFO PRINTOUT RUNNING ~t1.schedAbs( ~t1.nextBar, {~postClockInfo.value;} ); z = Pseq([ // START SEQUENCER /* Ppar( [~synth2_pree], 1 ), // STASIS INTRO - in parallel Ppar( [~synth1_intr, ~synth2_intr], 1 ), // STASIS INTRO - in parallel Rest(1), // MARKER = PREPARE*/ Ppar( [~synth1_0000, ~synth2_0001, ~hh_intr, ~kick_one_], 1 ), // OCTAVES Ppar( [~synth1_0001, ~synth2_0002, ~d_intr, ~hh_main, ~kick_intr], 1 ), // OCTAVES Ppar( [~synth1_0002, ~synth2_0003, ~d_main, ~hh_main, ~kick_main], 1 ), // ARPPEGIO //Ppar( [~synth1_midl, ~synth2_midl, ~d_midl ], 1 ), // in parallel //Ppar( [~kick_amen, ~snare_amen ], 1 ), // DRUM BREAK - TODO ~drum_break Ppar( [~synth1_0004, ~synth2_0004, ~d_main, ~hh_wild, ~kick_main, ~snare_intr], 1 ), Ppar( [~synth1_0006, ~synth2_0005, ~d_wild, ~hh_main, ~kick_main, ~snare_main], 1 ), Ppar( [~drop_0000, ~drop_0001], 1 ), // 12-tone scale DROP Ppar( [~synth1_0003, ~synth2_0005, ~d_wild, ~hh_main, ~kick_main, ~snare_main], 1 ), // drop 2 here Ppar( [~synth1_0000, ~synth2_0006, ~hh_intr, ~kick_intr], 1 ), Ppar( [~synth1_outr, ~synth2_outr], 2 ), // chromatic slides ], 1 ).play(~t1, quant:1)); // CONTROLS ---------------------- z.play(); z.pause; z.stop; z.start; z.resume; /////////////////////////////////// /////////////////////////////////// /////////////////////////////////// // TODO break into subsections to livecode section cues