diff --git a/convergence.sc b/convergence.sc index d680da8..a6bbcda 100644 --- a/convergence.sc +++ b/convergence.sc @@ -51,10 +51,12 @@ ) }), - instruments1 = this.getInstruments(instruments), + instruments_ = this.getInstruments(instruments), + + player_ = this.getPlayer(player, canon, instruments_), + + data = (melody: melody, cp: cp, voices: voices, instruments: instruments_, player: player); - data = (melody: melody, cp: cp, voices: voices); - player = this.getPlayer(player, canon, instruments1); ^( canon: canon, data: data, diff --git a/helpers.sc b/helpers.sc index 9a09092..aec0d04 100644 --- a/helpers.sc +++ b/helpers.sc @@ -1,26 +1,26 @@ +Can { - //~melody ::[Float] -> [Float] -> [(dur, note)] + //melody ::[Float] -> [Float] -> [(dur, note)] *melody {|durs, notes| ^[durs.size, notes.size].minItem.collect({|i| (dur: durs[i], note: notes[i]) }) } - //~convvoices :: ([Float], [Float], [Float]) -> [(tempo, transp, amp)] + //convvoices :: ([Float], [Float], [Float]) -> [(tempo, transp, amp)] *convoices { | tempos, transps, amps = ([])| ^[tempos.size, transps.size].minItem.collect({|i| (tempo: tempos[i], transp: transps[i], amp: amps[i] ? 1) }) } - //~makeDivVoices :: ([Float], [Float]) ->[(transp: Float, amp: Float)] + //divoices :: ([Float], [Float]) ->[(transp: Float, amp: Float)] *divoices { |transps, amps = ([])| ^transps.collect({|transp, i| (transp: transp, amp: amps[i] ? 1) }) } - //~makeDivTempos :: ([Float], [Float], Boolean) ->[(tempo: Float, percentage: Float)] + //divtempos :: ([Float], [Float], Boolean) ->[(tempo: Float, percentage: Float)] *divtempos { | tempos, percentageForTempo, normalize= false| var percentages = if(normalize, {percentageForTempo.normalizeSum*100}, {percentageForTempo}); @@ -29,10 +29,14 @@ }); } - //~mergeCanons :: Canon -> Canon -> Canon + //mergeCanons :: Canon -> Canon -> Canon *mergeCanons {|a, b| + var canon = a.canon ++ b.canon; + var player = this.getPlayer(a.data.player, canon, a.data.instruments); ^( - canon: a.canon ++ b.canon, + canon: canon, + player: player, + play: {player.play}, data: ( voices: a.data.voices ++ b.data.voices, cp: [a.data.cp, b.data.cp].minItem,//for now we keep only the first cp, for the visualizer purposes, it does not affect the cp in the canons that will sound diff --git a/study14Nancarrow.sc b/study14Nancarrow.sc index a57098d..c4833bb 100644 --- a/study14Nancarrow.sc +++ b/study14Nancarrow.sc @@ -1,418 +1,416 @@ +ThePresetCan { - // Study 14 of Conlon Nancarrow + // Study 14 by Conlon Nancarrow *nancarrowStudy14 { var convertNoteNamestoMidi = _.collect({|dur_note| - ( - dur: dur_note.dur, - note: if(dur_note.note == \rest, - {dur_note.note}, - {dur_note.note.namemidi} - ) - ) -}); + ( + dur: dur_note.dur, + note: if(dur_note.note == \rest, + {dur_note.note}, + {dur_note.note.namemidi} + ) + ) + }); var upperStaff = [ - (dur: 3/8, note: 56), - (dur: 1/8, note: 55), - (dur: 1/8, note: 52), - (dur: 1/8, note: 48), - (dur: 1/8, note: 43), - (dur: 5/8, note: 47), - (dur: 1/8, note: 50), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 63), - (dur: 1/8, note: 64), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 47), - (dur: 1/8, note: 45), - (dur: 1/8, note: 41), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 52), - (dur: 1/8, note: 51), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 60), - (dur: 1/8, note: 59), - (dur: 1/4, note: \rest), - (dur: 3/8, note: 57), - (dur: 2/8, note: 56), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 52), - (dur: 1/8, note: 51), - (dur: 1/8, note: 47), - (dur: 1/8, note: 48), - (dur: 1/8, note: \rest), - (dur: 1/2, note: 55), - (dur: 1/8, note: 54), - (dur: 1/8, note: 52), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 57), - (dur: 3/8, note: \rest), - (dur: 5/8, note: 60), - (dur: 1/8, note: 59), - (dur: 3/8, note: \rest), - (dur: 3/8, note: 62), - (dur: 1/8, note: 60), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 64), - (dur: 1/8, note: 57), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 42), - (dur: 1/8, note: 43), - (dur: 1/8, note: 40), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 50), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 55), - (dur: 1/8, note: 54), - (dur: 1/4, note: \rest), - (dur: 5/8, note: 59), - (dur: 1/8, note: 60), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 56), - (dur: 1/8, note: 57), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 61), - (dur: 1/8, note: 59), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 54), - (dur: 1/8, note: 52), - (dur: 1/8, note: 48), - (dur: 6/8, note: \rest), - (dur: 1/8, note: 66), - (dur: 5/8, note: \rest), - (dur: 1/8, note: 49), - (dur: 1/8, note: 54), - (dur: 1/8, note: 55), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 57), - (dur: 1/8, note: 50), - (dur: 5/8, note: \rest), - (dur: 1/8, note: 55), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 62), - (dur: 1/2, note: \rest), - (dur: 1/8, note: 54), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 59), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 61), - (dur: 1/8, note: 62), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 59), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 64), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 55), - (dur: 1/8, note: 60), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 59), - (dur: 6/8, note: \rest), - (dur: 1/8, note: 50), - (dur: 1/8, note: 49), - (dur: 1/8, note: 54), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 61), - (dur: 1/8, note: 53), - (dur: 1/8, note: 52), - (dur: 1/8, note: 57), - (dur: 3/8, note: 60), - (dur: 1/8, note: 59), - (dur: 1/8, note: 57), - (dur: 1/8, note: 56), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 52), - (dur: 1/2, note: 55), - (dur: 1/8, note: 54), - (dur: 1/8, note: 47), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 62), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 60), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 64), - (dur: 1/8, note: 63), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 59), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 52), - (dur: 1/8, note: 51), - (dur: 1/8, note: 47), - (dur: 1/2, note: 50), - (dur: 1/8, note: 49), - (dur: 7/8, note: \rest), - (dur: 1/8, note: 56), - (dur: 1/8, note: 57), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 64), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 48), - (dur: 1/8, note: 47), - (dur: 1/8, note: 59), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 54), - (dur: 1/8, note: 66), - (dur: 1/8, note: 67), - (dur: 1/8, note: 64), - (dur: 1/4, note: \rest), - (dur: 1/8, note: [59, 63, 66]), - (dur: 1/4, note: \rest), - (dur: 4/8, note: 61), - (dur: 1/8, note: 62), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 63), - (dur: 1/8, note: [61, 64]), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 56), - (dur: 1/8, note: 57), - (dur: 6/8, note: \rest), - (dur: 1/8, note: 59), - (dur: 1/8, note: [57, 60]), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 54), - (dur: 1/8, note: [47, 50]), - (dur: 1/4, note: \rest), - (dur: 3/8, note: 55), - (dur: 1/8, note: 54), - (dur: 1/8, note: \rest), - (dur: 5/8, note: 52), - (dur: 1/8, note: 51), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 62), - (dur: 1/8, note: 61), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 64), - (dur: 3/8, note: \rest), - (dur: 1/8, note: [55, 59]), - (dur: 1/2, note: \rest), - (dur: 1/8, note: 66), - (dur: 3/8, note: \rest), - (dur: 3/8, note: 62), - (dur: 1/8, note: 61), - (dur: 3/4, note: \rest), - (dur: 1/8, note: 56), - (dur: 1/8, note: 63), - (dur: 1/8, note: 64), - (dur: 1/8, note: 61), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 67), - (dur: 1/4, note: \rest), - (dur: 1/2, note: 72), - (dur: 1/8, note: 71), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 57), - (dur: 1/4, note: \rest), - (dur: 1/2, note: 63), - (dur: 1/8, note: 64), - (dur: 3/8, note: \rest) -]; + (dur: 3/8, note: 56), + (dur: 1/8, note: 55), + (dur: 1/8, note: 52), + (dur: 1/8, note: 48), + (dur: 1/8, note: 43), + (dur: 5/8, note: 47), + (dur: 1/8, note: 50), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 63), + (dur: 1/8, note: 64), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 47), + (dur: 1/8, note: 45), + (dur: 1/8, note: 41), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 52), + (dur: 1/8, note: 51), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 60), + (dur: 1/8, note: 59), + (dur: 1/4, note: \rest), + (dur: 3/8, note: 57), + (dur: 2/8, note: 56), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 52), + (dur: 1/8, note: 51), + (dur: 1/8, note: 47), + (dur: 1/8, note: 48), + (dur: 1/8, note: \rest), + (dur: 1/2, note: 55), + (dur: 1/8, note: 54), + (dur: 1/8, note: 52), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 57), + (dur: 3/8, note: \rest), + (dur: 5/8, note: 60), + (dur: 1/8, note: 59), + (dur: 3/8, note: \rest), + (dur: 3/8, note: 62), + (dur: 1/8, note: 60), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 64), + (dur: 1/8, note: 57), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 42), + (dur: 1/8, note: 43), + (dur: 1/8, note: 40), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 50), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 55), + (dur: 1/8, note: 54), + (dur: 1/4, note: \rest), + (dur: 5/8, note: 59), + (dur: 1/8, note: 60), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 56), + (dur: 1/8, note: 57), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 61), + (dur: 1/8, note: 59), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 54), + (dur: 1/8, note: 52), + (dur: 1/8, note: 48), + (dur: 6/8, note: \rest), + (dur: 1/8, note: 66), + (dur: 5/8, note: \rest), + (dur: 1/8, note: 49), + (dur: 1/8, note: 54), + (dur: 1/8, note: 55), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 57), + (dur: 1/8, note: 50), + (dur: 5/8, note: \rest), + (dur: 1/8, note: 55), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 62), + (dur: 1/2, note: \rest), + (dur: 1/8, note: 54), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 59), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 61), + (dur: 1/8, note: 62), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 59), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 64), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 55), + (dur: 1/8, note: 60), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 59), + (dur: 6/8, note: \rest), + (dur: 1/8, note: 50), + (dur: 1/8, note: 49), + (dur: 1/8, note: 54), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 61), + (dur: 1/8, note: 53), + (dur: 1/8, note: 52), + (dur: 1/8, note: 57), + (dur: 3/8, note: 60), + (dur: 1/8, note: 59), + (dur: 1/8, note: 57), + (dur: 1/8, note: 56), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 52), + (dur: 1/2, note: 55), + (dur: 1/8, note: 54), + (dur: 1/8, note: 47), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 62), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 60), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 64), + (dur: 1/8, note: 63), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 59), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 52), + (dur: 1/8, note: 51), + (dur: 1/8, note: 47), + (dur: 1/2, note: 50), + (dur: 1/8, note: 49), + (dur: 7/8, note: \rest), + (dur: 1/8, note: 56), + (dur: 1/8, note: 57), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 64), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 48), + (dur: 1/8, note: 47), + (dur: 1/8, note: 59), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 54), + (dur: 1/8, note: 66), + (dur: 1/8, note: 67), + (dur: 1/8, note: 64), + (dur: 1/4, note: \rest), + (dur: 1/8, note: [59, 63, 66]), + (dur: 1/4, note: \rest), + (dur: 4/8, note: 61), + (dur: 1/8, note: 62), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 63), + (dur: 1/8, note: [61, 64]), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 56), + (dur: 1/8, note: 57), + (dur: 6/8, note: \rest), + (dur: 1/8, note: 59), + (dur: 1/8, note: [57, 60]), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 54), + (dur: 1/8, note: [47, 50]), + (dur: 1/4, note: \rest), + (dur: 3/8, note: 55), + (dur: 1/8, note: 54), + (dur: 1/8, note: \rest), + (dur: 5/8, note: 52), + (dur: 1/8, note: 51), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 62), + (dur: 1/8, note: 61), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 64), + (dur: 3/8, note: \rest), + (dur: 1/8, note: [55, 59]), + (dur: 1/2, note: \rest), + (dur: 1/8, note: 66), + (dur: 3/8, note: \rest), + (dur: 3/8, note: 62), + (dur: 1/8, note: 61), + (dur: 3/4, note: \rest), + (dur: 1/8, note: 56), + (dur: 1/8, note: 63), + (dur: 1/8, note: 64), + (dur: 1/8, note: 61), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 67), + (dur: 1/4, note: \rest), + (dur: 1/2, note: 72), + (dur: 1/8, note: 71), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 57), + (dur: 1/4, note: \rest), + (dur: 1/2, note: 63), + (dur: 1/8, note: 64), + (dur: 3/8, note: \rest) + ]; var lowerStaff = convertNoteNamestoMidi.([ - (dur:1/8, note: [\E1, \B1, \E2]), - (dur: 1, note: \rest), - (dur: 1/8, note: \C1), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \B0), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \A0), - (dur: 1/2, note: \rest), - (dur: 6/8, note: 'F#0'), - (dur: 1/8, note: \B0), - (dur: 3/8, note: \rest), - (dur: 1/8, note: \D2), - (dur: 1/8, note: \G2), - (dur: 1/2, note: \rest), - (dur: 1/8, note: \B0), - (dur: 1/8, note: [\E1, \B1]), - (dur: 1, note: \rest), - (dur: 1/8, note: \A1), - (dur: 3/8, note: \rest), - (dur: 1/8, note: \B1), - (dur: 1/8, note: \E1), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 'D#1'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'F#2'), - (dur: 1/8, note: \D1), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \G1), - (dur: 1/8, note: \B1), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'F#0'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \E2), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'F#1'), - (dur: 1/4, note: \rest), - (dur: 1/8, note: [\B0, \B1]), - (dur: 7/8, note: \rest), - (dur: 1/8, note: \E0), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \B1), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \E2), - (dur: 1/8, note: 'D#2'), - (dur: 1/2, note: \rest), - (dur: 1/8, note: \A1), - (dur: 1/8, note: [\G0, \G1]), - (dur: 5/8, note: \rest), - (dur: 1/8, note: 'F#2'), - (dur: 1/8, note: \B1), - (dur: 3/8, note: \rest), - (dur: 1/8, note: \G2), - (dur: 5/8, note: \rest), - (dur: 1/8, note: \B0), - (dur: 1/8, note: \E1), - (dur: 1/8, note: 'D#1'), - (dur: 1/4, note: \rest), - (dur: 1/8, note: 'F#2'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'G#1'), - (dur: 1/8, note: [\A0, \A1]), - (dur: 1/2, note: \rest), - (dur: 1/8, note: \E2), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 'F#2'), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \A1), - (dur: 1/8, note: 'G#1'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \E2), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \E1), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \B2), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \G2), - (dur: 1/8, note: \rest), - (dur: 1/8, note: [\B1, 'D#2']), - (dur: 3/8, note: \rest), - (dur: 1/8, note: [\E2, 'G#2']), - (dur: 1/2, note: \rest), - (dur: 1/8, note: 'G#2'), - (dur: 3/8, note: \rest), - (dur: 1/8, note: \C2), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \E2), - (dur: 1/2, note: \rest), - (dur: 1/8, note: \G2), - (dur: 1/8, note: \D2), - (dur: 1/8, note: \E2), - (dur: 1/8, note: \F2), - (dur: 1/8, note: \E2), - (dur: 3/8, note: \rest), - (dur: 1/8, note: 'F#1'),//convergence point - (dur: 10/8, note: \rest), - (dur: 1/8, note: \B1), - (dur: 6/8, note: \rest), - (dur: 1/8, note: \A1), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \G1), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \E2), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \A2), - (dur: 1/8, note: 'F#2'), - (dur: 1/8, note: \G2), - (dur: 1/2, note: \rest), - (dur: 1/8, note: \A1), - (dur: 1/8, note: \D2), - (dur: 1/8, note: \G2), - (dur: 1/2, note: \rest), - (dur: 1/8, note: 'F#1'), - (dur: 5/8, note: \rest), - (dur: 1/8, note: \E1), - (dur: 1/8, note: \A1), - (dur: 1/8, note: \G1), - (dur: 1/4, note: \rest), - (dur: 1/8, note: [\B0, \D1]), - (dur: 3/8, note: \rest), - (dur: 1/8, note: [\D2, 'F#2']), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \E2), - (dur: 16/8, note: \rest), - (dur: 1/8, note: \B2), - (dur: 1/8, note: [\E2, \G2]), - (dur: 3/8, note: \rest), - (dur: 1/8, note: \B1), - (dur: 1, note: \rest), - (dur: 1/8, note: ['F#1', 'C#2']), - (dur: 1/8, note: 'D#2'), - (dur: 1/8, note: \E2), - (dur: 4/8, note: \rest), - (dur: 1/8, note: \E1), - (dur: 7/8, note: \rest), - (dur: 1/8, note: 'C#1'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: ['F#1', 'C#2']), - (dur: 1/2, note: \rest), - (dur: 1/8, note: ['G#0', 'G#1']), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \B0), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \C2), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'F#1'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: \B1), - (dur: 1/2, note: \rest), - (dur: 1/8, note: [\A1, \E2]), - (dur: 5/8, note: \rest), - (dur: 1/8, note: 'D#2'), - (dur: 1/8, note: 'F#2'), - (dur: 1/8, note: 'F#1'), - (dur: 1/4, note: \rest), - (dur: 1/8, note: \E2), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'G#1'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'F#0'), - (dur: 1/8, note: 'F#1'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'C#2'), - (dur: 1/8, note: 'C#1'), - (dur: 7/8, note: \rest), - (dur: 1/8, note: \B2), - (dur: 1/8, note: 'D#2'), - (dur: 1/8, note: \rest), - (dur: 1/8, note: 'F#2'), - (dur: 1/8, note: \D3), - (dur: 1/2, note: \rest), - (dur: 1/8, note: \F1), - (dur: 1/8, note: 'C#2'), - (dur: 4/8, note: \rest), - (dur: 1/8, note: \B1), - (dur: 1/8, note: [\E1, \E2]), - (dur: 3/8, note: \rest) -]); + (dur:1/8, note: [\E1, \B1, \E2]), + (dur: 1, note: \rest), + (dur: 1/8, note: \C1), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \B0), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \A0), + (dur: 1/2, note: \rest), + (dur: 6/8, note: 'F#0'), + (dur: 1/8, note: \B0), + (dur: 3/8, note: \rest), + (dur: 1/8, note: \D2), + (dur: 1/8, note: \G2), + (dur: 1/2, note: \rest), + (dur: 1/8, note: \B0), + (dur: 1/8, note: [\E1, \B1]), + (dur: 1, note: \rest), + (dur: 1/8, note: \A1), + (dur: 3/8, note: \rest), + (dur: 1/8, note: \B1), + (dur: 1/8, note: \E1), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 'D#1'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'F#2'), + (dur: 1/8, note: \D1), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \G1), + (dur: 1/8, note: \B1), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'F#0'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \E2), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'F#1'), + (dur: 1/4, note: \rest), + (dur: 1/8, note: [\B0, \B1]), + (dur: 7/8, note: \rest), + (dur: 1/8, note: \E0), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \B1), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \E2), + (dur: 1/8, note: 'D#2'), + (dur: 1/2, note: \rest), + (dur: 1/8, note: \A1), + (dur: 1/8, note: [\G0, \G1]), + (dur: 5/8, note: \rest), + (dur: 1/8, note: 'F#2'), + (dur: 1/8, note: \B1), + (dur: 3/8, note: \rest), + (dur: 1/8, note: \G2), + (dur: 5/8, note: \rest), + (dur: 1/8, note: \B0), + (dur: 1/8, note: \E1), + (dur: 1/8, note: 'D#1'), + (dur: 1/4, note: \rest), + (dur: 1/8, note: 'F#2'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'G#1'), + (dur: 1/8, note: [\A0, \A1]), + (dur: 1/2, note: \rest), + (dur: 1/8, note: \E2), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 'F#2'), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \A1), + (dur: 1/8, note: 'G#1'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \E2), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \E1), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \B2), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \G2), + (dur: 1/8, note: \rest), + (dur: 1/8, note: [\B1, 'D#2']), + (dur: 3/8, note: \rest), + (dur: 1/8, note: [\E2, 'G#2']), + (dur: 1/2, note: \rest), + (dur: 1/8, note: 'G#2'), + (dur: 3/8, note: \rest), + (dur: 1/8, note: \C2), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \E2), + (dur: 1/2, note: \rest), + (dur: 1/8, note: \G2), + (dur: 1/8, note: \D2), + (dur: 1/8, note: \E2), + (dur: 1/8, note: \F2), + (dur: 1/8, note: \E2), + (dur: 3/8, note: \rest), + (dur: 1/8, note: 'F#1'),//convergence point + (dur: 10/8, note: \rest), + (dur: 1/8, note: \B1), + (dur: 6/8, note: \rest), + (dur: 1/8, note: \A1), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \G1), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \E2), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \A2), + (dur: 1/8, note: 'F#2'), + (dur: 1/8, note: \G2), + (dur: 1/2, note: \rest), + (dur: 1/8, note: \A1), + (dur: 1/8, note: \D2), + (dur: 1/8, note: \G2), + (dur: 1/2, note: \rest), + (dur: 1/8, note: 'F#1'), + (dur: 5/8, note: \rest), + (dur: 1/8, note: \E1), + (dur: 1/8, note: \A1), + (dur: 1/8, note: \G1), + (dur: 1/4, note: \rest), + (dur: 1/8, note: [\B0, \D1]), + (dur: 3/8, note: \rest), + (dur: 1/8, note: [\D2, 'F#2']), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \E2), + (dur: 16/8, note: \rest), + (dur: 1/8, note: \B2), + (dur: 1/8, note: [\E2, \G2]), + (dur: 3/8, note: \rest), + (dur: 1/8, note: \B1), + (dur: 1, note: \rest), + (dur: 1/8, note: ['F#1', 'C#2']), + (dur: 1/8, note: 'D#2'), + (dur: 1/8, note: \E2), + (dur: 4/8, note: \rest), + (dur: 1/8, note: \E1), + (dur: 7/8, note: \rest), + (dur: 1/8, note: 'C#1'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: ['F#1', 'C#2']), + (dur: 1/2, note: \rest), + (dur: 1/8, note: ['G#0', 'G#1']), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \B0), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \C2), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'F#1'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: \B1), + (dur: 1/2, note: \rest), + (dur: 1/8, note: [\A1, \E2]), + (dur: 5/8, note: \rest), + (dur: 1/8, note: 'D#2'), + (dur: 1/8, note: 'F#2'), + (dur: 1/8, note: 'F#1'), + (dur: 1/4, note: \rest), + (dur: 1/8, note: \E2), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'G#1'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'F#0'), + (dur: 1/8, note: 'F#1'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'C#2'), + (dur: 1/8, note: 'C#1'), + (dur: 7/8, note: \rest), + (dur: 1/8, note: \B2), + (dur: 1/8, note: 'D#2'), + (dur: 1/8, note: \rest), + (dur: 1/8, note: 'F#2'), + (dur: 1/8, note: \D3), + (dur: 1/2, note: \rest), + (dur: 1/8, note: \F1), + (dur: 1/8, note: 'C#2'), + (dur: 4/8, note: \rest), + (dur: 1/8, note: \B1), + (dur: 1/8, note: [\E1, \E2]), + (dur: 3/8, note: \rest) + ]); var canonConfig = {|cp, tempo, melody| - ( - melody: melody, - cp: cp, - voices: [ - (tempo: tempo, transp: 0), - (tempo: tempo*5/4, transp: 17), - ] - ) -}; + Can.converge( + melody: melody, + cp: cp, + voices: [ + (tempo: tempo, transp: 0), + (tempo: tempo*5/4, transp: 17), + ] + ) + }; var tempo = 120; var canon = Can.mergeCanons( - canonConfig.(tempo, 94, upperStaff), canonConfig.(tempo, 90, lowerStaff)//converge points are different for each canon only in the algorithm, this is because voices are independent and each one has a different number of events - // .collect(canonConfig.(110, _)) -// .collect(Can.converge) -); - - - ^canon + canonConfig.(tempo, 94, upperStaff).postln, canonConfig.(tempo, 90, lowerStaff)//converge points are different for each canon only in the algorithm, this is because voices are independent and each one has a different number of events + // .collect(canonConfig.(110, _)) + // .collect(Can.converge) + ).postln; + ^canon } } \ No newline at end of file