Strudelify

Cinque giorni

Michele Zarrillo

KeyC majorTempo70 bpm
0:00/0:00
// Cinque giorni — Michele Zarrillo
// 70 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 73 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B@2 C D E F G H I J K L@2 M N O P Q R S T U V W X Y Z AA AB E F G H AC M N AD AC M N AD AE AF AG AH AI AJ AK AL AM
  AN AO AP AQ AR AS AT AU AV@3 AW@8 AX@2 ~
>`.pickRestart({
  A: "~@30 g3@6 c4@6 g4@5 ~",
  B: "[g4@12 f4@12 e4@12 d4@6 ~@21 g3@3 c4@3 e4@3 [g3,b3,d4]@12 [g3,c4,e4]@11 ~, ~@42 e4@17 ~ [c3,e4]@7 ~@29, ~@24 c2@11 ~ [a1,a2]@12, ~@18 g2@5 ~@9]/2", // G C A
  C: "e4@2 d4 f4@3 e4@2", D: "c4 ~@2 d4 e4@4, ~@3 g3@20 ~, ~ c4@3",
  E: "[g3,a#3,f4]@11 ~ [g3,a#3,f4]@11 ~ [g3,a#3,d#4]@11 ~ [g3,a#3,d#4]@9 ~@3, d#2@23 ~", // Gm7 D#
  F: "[f3,g#3,a#3,d#4]@10 ~@2 [f3,g#3,a#3,d#4]@11 ~ [f3,g#3,a#3,d4]@10 ~@2 [f3,g#3,a#3,d4]@8 ~@4, [a#1,a#2]@11 ~", // Fm7 A#7 A#
  G: "[f3,a#3,d4]@11 ~ [f3,a#3,d4]@10 ~@2 [f3,a#3,d4]@10 ~@2 [f3,a#3,d4]@10 ~@2, g2, g1@7 ~", // A#
  H: "~@6 g3@5 ~ [a#3,d#4]@6 ~@6 [d4,f4]@11 ~ [g3,d#4,g4]@12, [c2,c3]@7 c2@9, [a#3,d#4]@5 ~@4 g3@8 ~@7, ~@24 c3@23 ~", // D#5 Dm Cm C D#5
  I: "[g3,a#3,f4]@11 ~ [g3,a#3,f4]@11 ~ [g3,a#3,d#4]@10 ~@2 [g3,a#3,d#4]@10 ~@2, d#2@47 ~, d#3@19 ~@5", // Gm7 D#
  J: "[f3,g#3,a#3,d#4]@11 ~ [f3,g#3,a#3,d#4]@11 ~ [f3,g#3,a#3,d4]@10 ~@2 [f3,g#3,a#3,d4]@10 ~@2, [a#1,a#2]@23 ~", // Fm7 A#7 A#
  K: "[f3,a#3,d4]@10 ~@2 [f3,a#3,d4]@10 ~@2 [f3,a#3,d4]@10 ~ [f3,a#3,d4]@11 ~@2, g2@47 ~, g1@7 ~", // A#
  L: "[~@5 g3@5 ~@2 [a#3,d#4]@6 ~@6 c3@5 ~@6 [d#4,g4]@11 ~ [c4,g4]@10 ~@3 [c4,g4]@11 ~ [c4,f4]@10 ~@2 [c4,f4]@10 ~@2, [c2,c3]@21 c2@7 ~ c2@17 ~ [g#1,g#2]@47 ~@2, [a#3,d#4]@10 ~@2 g3@4 ~@2 g3@29 ~@49, ~@12 [d4,f4]@4 c3@7 ~@25]/2", // D#5 D# C5 F5 C G# D#5 Dm
  M: "[a#3,f4]@11 ~ [a#3,f4]@11 ~ [a#3,d#4]@11 ~ [a#3,d#4]@10 ~@2, [g1,g2]@23 ~", // A#5 D#5 G
  N: "[a3,d#4]@6 f#3@5 ~@7 f#3@4 ~@2 [a3,d4]@6 f#3@4 ~@2 [a3,d4]@6 f#3@4 ~@2, [f#1,f#2]@47 ~, ~@6 [a3,d#4]@5 ~@13", // Adim D5 F# Adim
  O: "~@6 e3@5 ~@7 e3@6 [g3,c4]@5 ~ g3@6 c4@6 g4@5 ~, [e1,e2]@23 ~, [g3,d4]@5 ~ [g3,d4]@5 ~@13", // C5 E G5
  P: "[c4,g4]@6 g3@6 [c4,g4]@7 g3@5 [c4,f4]@6 f3@6 [c4,f4]@6 f3@5 ~, [g#1,g#2]@47 ~", // C5 F5 G#
  Q: "[a#3,f4]@6 g3@6 ~@6 g3@6 [a#3,d#4]@6 g3@6 [a#3,d#4]@6 g3@5 ~, [g1,g2]@23 ~, ~@12 [a#3,f4]@11 ~@25", // A#5 D#5 G A#5
  R: "[a3,d#4]@6 f#3@6 [a3,d#4]@6 ~ d#4@4 ~ [a3,d4]@6 f#3@6 [a3,d4]@7 f#3@4 ~, [f#1,f#2]@23 ~, ~@3 f#3 ~@4", // Adim D5 F#
  S: "[g3,d4]@6 e3@6 [g3,d4]@6 e3@6 [g3,c4]@6 g3@6 g4@11 ~, [e1,e2]@47 ~", // G5 C5 E
  T: "[g3,c4,d4,g4]@30 g3@6 c4@5 ~ g4@5 ~, [c1,c2]@47 ~", U: "g4@12 f4@12 e4@12 d4@7 ~@5",
  V: "e4@6 ~@9 g3@3 ~@2 e4@3 ~ [g3,b3,d4]@12 [g3,c4,e4]@12, c2@9 c4@2 ~@13, ~@6 g2@13 ~@5 [a1,a2]@24, ~@12 [c3,e4]@7 ~@29", // G C A C
  W: "e4 d4 f4 e4", X: "~@30 g3@6 c4@6 g4@5 ~, c4@25 ~@23, ~@18 [c1,c2]@17 ~@13", Y: "g4@12 a4@12 f4@12 e4@11 ~",
  Z: "[c2,c3,g3,c4,e4]@11 ~ [b1,b2,g3,d4]@12 [a1,a2,g3,c4]@12 [g1,g2,g3,c4,e4]@11 ~", // C G Am7 C
  AA: "[f3,e4] d4 f4 e4, [f2,a3,c4] [g3,b3], ~@24 g2@17 ~@7", // Fmaj7 F G
  AB: "~@9 e4@3 d4@11 ~, [c1,c2]@47 ~, ~@3 g3@20 ~, ~@12 c4@35 ~", // C
  AC: "[c4,g4]@10 ~@2 [c4,g4]@11 ~ [c4,f4]@10 ~@2 [c4,f4]@10 ~@2, [g#1,g#2]@47 ~", // C5 F5 G#
  AD: "~@6 e3@5 ~@7 e3@6 [g3,c4]@6 e3@6 [g3,c4]@6 e3@5 ~, [e1,e2]@23 ~, [g3,d4]@5 ~ [g3,d4]@5 ~@13", // C5 E G5
  AE: "[g3,c4,d4,g4]@29 ~ g3@6 c4@6 g4@5 ~, [c1,c2]@43 ~@5", // Gsus4 C
  AF: "[a3,c4,g4]@11 ~ [a3,c4,f4]@12 [g3,b3,e4]@11 ~ [g3,b3,d4]@11 ~, [f1,f2]@23 ~ g2@23 ~, ~@24 g1@17 ~@7", // Am7 F Em G F
  AG: "c2@10 ~@11 e4@3 [g3,b3,d4]@11 ~ [g3,c4,e4]@11 ~, c3@23 ~@25, [g3,c4,e4]@15 g3@7 ~@26, ~@12 c2@11 ~ [a1,a2]@23 ~, ~@18 c4@5 ~@25", // G C A
  AH: "[a3,c4,e4]@12 [a3,c4,d4]@11 ~ [g1,f4]@12 e4@11 ~, f2@23 ~ [g2,g3,b3]@24", // Am D7 G7 G
  AI: "[c2,c3,g3,c4,e4]@15 ~@3 [c1,c2]@3 ~@21 g4@5 ~, ~ [c1,c2], ~@15 g3@8 ~, ~@36 c4@11 ~", // C
  AJ: "[a3,c4,g4]@11 ~ [f1,a3,c4,f4]@12 [g3,b3,e4]@11 ~ [g3,b3,d4]@12, f2@23 ~ g2@23 ~, ~@3 g1@2 ~", // Am7 F Em G
  AK: "[c2,c3,g3,c4,e4]@12 [b1,b2,g3,b3,d4]@12 [a1,a2,g3,c4,e4]@12 [g1,g2,g3,c4,e4]@11 ~", // C G Am7 C
  AL: "[f3,a3,e4]@11 ~ [f3,a3,d4]@11 ~ [g3,b3,f4]@11 ~ [g3,b3,e4]@11 ~, f2@24 g2@23 ~", // Fmaj7 Dm G7 Em
  AM: "[c2,c3,e3,g3,c4]@33 ~@2 g3@4 c4@2 g4@6 ~", // C
  AN: "[a#3,d4,f4]@11 ~ [a#3,d4,f4]@11 ~ [c2,g3,c4,e4]@12 [e2,g3,c4,g4]@11 ~, c3@35 ~@13, c2@11 ~@13", // A# C
  AO: "[a3,g4]@10 ~@2 [a3,g4]@10 ~@2 [a3,c4]@11 ~ c4@3 a3@3 c4@5 ~, f2@23 ~, c4@22 ~@2 f4@23 ~", // A7 Am
  AP: "[b3,d4,f4]@10 ~@8 g#3@2 ~@4 b3@6 ~ b3@3 ~@8 g#3@3 ~@3, g#2@25 ~@23, ~@6 [b3,d4,f4]@5 ~ [b2,d4,f4]@6 [d3,b3,d4,f4]@5 ~", // Bdim
  AQ: "e3@4 ~@2 e3@4 ~@2 e3@3 ~@3 e3@4 ~@8 e3@4 ~@2 [c4,e4]@7 ~@5, [a1,a2]@43 ~@5, [b3,c4]@11 ~ [a3,c4]@11 ~ [b3,d4]@11 ~@13", // C A Cmaj7 Am Bm
  AR: "[a#3,f4]@10 ~@2 [a#3,f4]@11 ~ [g3,c4,e4]@11 ~ [e2,g3,c4,g4]@12, [c2,c3]@3 ~, d4@23 ~@25", // A#5 C
  AS: "[a3,c4,g4]@11 ~@7 a3@4 ~@2 a3@4 ~@2 a3@5 ~ [c4,f4]@6 a3@3 ~@3, f2@15 ~, ~@12 [c4,g4]@11 ~ f3@21 ~@3, ~@24 [c4,f4]@11 ~@13", // Am7 F5 C5 F5
  AT: "~@5 g#3@5 ~@8 g#3@4 ~@8 g#3@4 ~@2 [d3,b3,d4,f4]@6 g#3@4 ~@2, g#2@25 ~@23, [b3,d4,f4]@5 ~ [b3,d4,f4]@5 ~ [b2,b3,d4,f4]@6 ~@6", // Bdim
  AU: "[g5,a5]@6 c5@6 [g5,a5]@6 c5@6 [f5,a5]@6 c5@6 [f5,a5]@7 c5@5, [f2,f3]@47 ~", // Gsus2 F
  AV: "[[d5,e5,g5]@6 g4@6 [d5,e5,g5]@6 g4@6 [c5,e5,g5]@6 g4@6 [c5,e5,g5]@6 g4@3 ~@3 [f5,g5]@6 a#4@5 [f5,g5]@6 a#4@6 [d#5,g5]@6 a#4@5 [d#5,g5]@7 a#4@4 ~@2 [b4,d5,g5]@6 g4@5 [b4,d5,g5]@7 g4@6 [b4,d5,g5]@7 g3@6 c4@6 ~ g4@5, [e2,e3]@45 ~@2 d#2@45 ~@3 g2@38 ~@11, ~@48 d#3@44 ~@3 g3@27 ~@22]/3", // Em7 C Fsus2 D# G E
  AW: "[~@2 g4@10 ~@2 [a3,c4,f4]@10 ~ [g3,b3,e4]@11 ~ [g3,b3,d4]@6 ~@20 g3@3 ~@2 e4@3 ~ [g3,b3,d4]@11 [g3,c4,e4]@11 ~ [a3,e4]@11 ~ [a3,d4]@10 ~ f4@11 e4@11 ~ g3@11 ~ g3@4 ~ g3@4 ~@2 [c4,e4]@6 ~@11 g4@5 ~ g4@10 ~@7 a3@4 ~@2 [g3,b3,e4]@11 [g3,b3,d4]@11 ~ [c2,c3,g3,c4,e4]@11 [b1,b2,g3,b3,d4]@12 ~ [a1,a2,g3,c4,e4]@11 [g1,g2,g3,c4,e4]@11 ~ [a3,c4,e4]@11 ~@2 [a3,c4,e4]@12 [g3,d4]@11 ~@3 [g3,d4]@9 ~@5 c4@12 [g3,a3,c4]@11 ~@2 [g3,a3,c4]@7 ~@15 g4@4, ~ [a3,c4]@11 ~@31 [g3,c4,e4]@17 e4@6 c4@5 ~@47 [g3,b3]@16 ~@6 [c4,e4]@11 ~ [c4,e4]@11 ~ g3@3 ~@3 g3@16 ~ a3@15 ~@103 b3@21 ~@5 [f3,a3]@13 ~@22 g3@18, ~@2 [f2,f3]@23 g2@23 ~ c2@22 ~ a1@16 ~@53 c2@40 ~@6 [f2,f3,c4]@23 g2@22 ~@48 f2@26 ~@24 c3@12 ~@31 c4@11, ~@49 c3@18 ~@5 a2@22 ~ [f2,c4]@22 ~ g2@23 c3@46 ~@118 g2@26 ~ f2@52, ~@175 c4@11 ~@12 f4@10 ~@124 f1@8 ~@44]/8", // F Em G C A5 D5 C Em …
  AX: "[~@7 c1@86 ~@3, ~@2 e3@91 ~@3, ~@4 [c3,d3]@89 ~@3, ~@5 g2@88 ~@3, ~@2 c2@29 ~]/2", // Csus2
})).s("gm_piano").gain(0.56).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B@2 C@2 ~@8 D E F G D H@2 I@2 J K L M N O@2 P ~@14 Q ~@7 R ~ S@3 T@2 U@3 ~@7 V W@2 ~
>`.pickRestart({
  A: "~@30 g3@6 c4@6 g4@5 ~", B: "[g4@12 f4@12 e4@10 ~ e4 d4@6 e4@29 ~@16 g3@3 c4@3 e4@3, ~@17 f4 ~@30]/2",
  C: "[e4@12 d4@6 f4@18 e4@10 ~ c4@45 ~@4, ~@23 [c#4,d4] ~@24]/2", D: "g4@23 ~ f4@23 ~", E: "f4@23 ~ d#4@20 ~@4",
  F: "d#4@21 ~ d#4@2 d4@22 ~@2, ~@21 f4@2 ~@25", G: "d4@24 c4@6 g3@6 c4@6 g4@5 ~",
  H: "[f4@23 ~ d#4@19 ~@2 d4 ~ d#4@25 d4@22 ~@2, ~@22 c4 ~@25]/2",
  I: "[d4@24 c4@21 ~@45 g4@5 ~, ~@23 c3@19 c4@5 ~, ~@47 e3@48 ~, ~@47 g3@7 g3@6 d4@35 ~, ~@48 c4@18 g3@6 c4@6 g3@17 ~]/2",
  J: "[c3,f3,a3]@23 ~ [d3,g3,b3]@23 ~", // F G
  K: "~@18 e4@5 ~ [g3,b3,d4]@11 ~ [e3,g3,c4]@11 ~, e4@3 ~@5, ~@6 g3@17 ~@25, ~@12 c4@11 ~@25", // G C
  L: "[f3,a3,c4]@21 ~@3 b3@23 ~, ~@11 d3@12 ~, ~@23 g3@24 ~", M: "~@7 g4, c4@3 c4@3 c4@2, ~ e3@7, ~@2 g3@3 g3@3, ~ e4",
  N: "g4@11 a4@12 ~ f4@12 e4@11 ~",
  O: "[[g3,c4,e4]@11 ~@2 d4@10 ~ [e3,a3,c4]@12 [e3,g3,c4]@8 ~@4 c4@23 ~@2 b3@23, ~@12 [g3,b3]@11 ~@23 f3@25 d3@25, ~@47 a3@24 ~ g3@24]/2", // C Am C G
  P: "[e3,g3,c4]@11 ~@5", Q: "~@17 c4@3 e4@3 ~ d4@11 ~ e4@12, ~@15 g3@4 ~@29", R: "g4@11 ~ f4@10 ~@2",
  S: "[~@18 c4@6 ~@18 e3@5 ~@2 d4@5 [f3,a#3,d4]@6 [f3,a#3,d4]@6 [f3,a#3,d4]@4 ~@2 e4@6 ~ e4@5 [g3,e4]@6 [g3,e4]@4 ~@2 c4@6 [f3,a3,c4]@6 ~ c4@5 ~ c4@4 ~ [a3,c4]@5 ~ c4@5 ~ c4@5 ~ [a3,c4]@6, b3@24 [b3,d4]@24 ~@71 f3@6 [f3,a3]@6 [f3,a3]@6 f3@6 ~, ~@6 e3@18 ~@6 e3@12 ~@5 [f3,a#3]@7 ~@17 [g3,c4]@7 [g3,c4]@6 ~@11 [f3,a3]@7 ~@6 [f3,a3]@6 [f3,a3]@6 ~@24, ~@6 a3@6 ~@6 [c4,e4]@6 ~@18 c4@5 ~@25]/3", // A# C F Am Bm F A#5 C5 …
  T: "[~@48 c4@11 ~@13 f4@21 ~@3, ~@47 f3@46 ~@3, ~@47 a3@19 a3@26 ~@4, ~@20 c4@11 ~]/2",
  U: "[g3@6 ~@18 c4@15 ~@27 a#3@5 ~@18 a#3@4 ~@2 [d4,g4]@22 ~@27, e4@39 ~@8 [f4,g4]@12 [f4,g4]@13 ~@72, d4@12 d4@27 ~@32 [d#4,g4]@12 [d#4,g4]@11 b3@23 ~@27, ~@6 g3@12 g3@21 ~@14 a#3@13 ~@10 a#3@13 ~@4 g3@24 ~@27]/3", // G5 Fsus2 D#
  V: "~@30 g3@7 c4@7 g4@4", W: "[~@5 c4@82 ~@9, ~@2 [c3,e3]@85 ~@9, ~@3 g3@83 ~@10]/2",
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.4)

// chords · synth strings 1
const synth_strings_1 = note("<~ A@4 B@4 C@6 D@6 E F@8 G@4 H@8 I J@8 K@4 L@3 M@4 N O@4 P@6>".pickRestart({
  A: "[[f2,f3,a3,c4]@23 [g2,b3,d4]@24 ~ c3@23 ~ b3@11 e4@12 ~ f2@23 ~ g2@23 ~ [e3,c4]@45 ~@3, ~@23 g3@72 [f3,a3]@24 [b3,d4]@25 ~@48, ~@47 [c4,e4]@24 d4@12 c4@37 ~@23 c3@46 ~@3, ~@72 a2@25 ~@22 g3@69 ~@4]/4", // F G C F Bm C
  B: "[f4@23 ~@73 g2@47 [g3,d#4]@24 [d4,f4]@13 [d#4,g4]@11 ~, a#3@191 ~, g3@47 g#3@48 f3@48 ~@49, ~@23 d#4@48 d4@72 ~@49, ~@48 a#2@49 ~@46 c3@48 ~]/4", // Cm Dm D#
  C: "[f4@23 ~@73 [g2,f3]@48 [g3,d#4]@24 [d4,f4]@11 [d#4,g4]@12 ~@73 d#4@24, a#3@4 ~ [g2,a#3], [d#2,g3]@47 a#2@49 ~@48 c3@48 g#2@49 ~@47, ~@23 d#4@48 d4@73 ~@47 c4@50 ~@47, ~@48 g#3@48 ~@95 g4@25 f4@48 ~@24]/6", // G7 Cm Dm D# Gm D#
  D: "[~@72 c4@23 ~@169 c4@24, [f#2,f#3,a3]@47 e3@48 g4@25 f4@48 d#4@48 d4@49 ~@23, ~@23 d4@49 ~@23 c4@49 ~@48 f#3@44 ~@52, ~ [e2,g3] g#2 [g2,a#3] [f#2,a3] [e2,e3,g3]]/6", // F#m Em Gm F#m Em
  E: "[c2,c3,e3,g3,c4]@47 ~", // C
  F: "[[f2,f3,a3,c4]@23 [g2,b3,d4]@25 [c3,c4,e4]@23 [b3,d4]@12 e4@12 [f2,f3,a3]@25 [g2,b3,d4]@24 [c3,e4]@47 [f2,f3,a3]@25 [g2,b3,d4]@24 [c3,c4,e4]@12 [b2,b3,d4]@12 a2@12 g2@11 [f2,f3,a3]@25 [g2,b3,d4]@24 [c2,c3,e3,c4]@46 ~@2, ~@23 g3@71 ~@26 g3@70 ~@26 g3@69 ~@27 g3@69 ~@3, ~@71 a2@25 ~@168 e4@24 ~@96, ~@83 c4@38 ~@23 c4@72 ~@48 c4@49 ~@71]/8", // F G C Bm F G C F …
  G: "[f4@24 ~@72 g2@47 ~ [g3,d#4]@23 [d4,f4]@13 [d#4,g4]@12, a#3, [d#2,g3]@48 [a#2,g#3]@47 f3@46 ~@2 c3@48 ~, ~@24 d#4@47 d4@73 ~@48]/4", // Cm Dm D# A#7
  H: "[g4@23 ~@145 c4@24, [g#2,c4]@48 [g2,a#3]@48 [f#2,a3]@47 [e2,g3]@49, ~ f4@2 d#4@2 d4@2 ~]/4", // G# Gm F#m Em
  I: "[c2,c3,e3,g3,c4]", // C
  J: "[[f2,f3,a3,c4]@24 [g2,b3,d4]@24 [c3,c4,e4]@24 [b3,d4]@12 e4@11 [f2,f3,a3]@25 [g2,b3,d4]@23 ~ [c3,e4]@48 [f2,f3,a3]@24 [g2,b3,d4]@24 [c3,c4,e4]@11 ~ [b3,d4]@11 a2@12 g2@12 ~ [f2,f3]@24 [g2,b3,d4]@24 [c3,c4,e4]@48, ~@24 g3@70 ~@26 g3@70 ~@26 g3@70 ~ a3@25 g3@72, ~@72 a2@24 ~@155 b2@12 e4@24 ~@97, ~@84 c4@37 ~@22 c4@73 ~@47 c4@49 ~@72]/8", // F G C Bm F G C F …
  K: "[[a#3,d4,f4]@24 ~@11 e2@12 g4@25 f4@23 [g#2,g#3,d4]@48 ~@24 [b3,d4]@12 [c4,e4]@13, c3@36 ~@11 f2@48 ~@49 a2@48, ~@24 c4@72 ~@47 e4@24 ~@25, ~@24 [g3,e4]@23 a3@44 ~@4 b3@60 a3@37, ~@6 c4 ~]/4", // A# G#dim Bm C
  L: "[[a#3,d4,f4]@24 ~@12 e2@12 g4@24 f4@23 [g#2,g#3,b3,d4]@49, c3@3 ~ f2@4 ~@4, ~ c4@3 ~@2, ~@24 [g3,e4]@24 a3@43 ~@53]/3", // A# G#dim C
  M: "[g3@23 f3@23 ~ d4@24 c4@24 f4@24 d#4@23 [g2,b3,d4]@50, [f2,a3,c4]@47 g3@145, ~@47 e2@48 [d#2,a#3]@47 ~@50]/4", // G F D#5
  N: "~ [f2,f3,a3,c4]@24 [g2,g3,b3,d4]@23", // F G
  O: "[[c3,c4,e4]@23 ~@12 e4@12 ~ f3@20 ~ [g2,b3,d4]@23 [c3,e4]@47 [f2,f3,a3]@23 [g2,b3,d4]@23 [c3,c4,e4]@7, ~@23 [b3,d4]@12 c4@34 g3@68 ~@25 g3@30, ~@24 a2@23 [f2,a3]@23 ~@22 c4@70 ~@30]/4", // C G C F G C Bm F
  P: "[~@4 [b2,b3,d4]@12 a2@12 g2@11 [f2,f3,a3]@26 [g2,g3,b3,d4]@27 [f2,f3,a3]@55 [c2,c3,e3,g3]@118 ~@23, ~@16 c4@49 ~@27 c4@172 ~@24, ~@2 e4@3 ~@31]/6", // Bm F G F C
})).s("gm_synth_strings_1").gain(0.32).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@17 A@4 B@6 C@4 ~@6 D@5 E@2 F@6 G ~@3 H@3 I J@6 K@3 L@6>".pickRestart({
  A: "[g4@24 f4@47 d#4@49 d4@47 c4@25]/4",
  B: "[c2@30 g3@6 c4@6 ~@17 f4@12 ~@12 d4@13 ~@29 g3@6 ~@25 d4@11 ~@55 g4@6 c5@5 ~@18 a5@12 f5@12 e5@13, ~@42 g4@19 ~@10 e4@12 ~@13 e4@29 ~@6 c4@36 f4@12 e4@38 ~@16 g5@18 ~@37, ~@47 f3@25 g3@46 ~ b3@12 e3@12 [f3,a3]@25 d3@23 c4@36 ~@61, ~@48 a3@24 [d3,b3]@24 ~@24 d3@12 ~@5 e4@20 ~@10 g3@61 ~@11 [f3,a3]@24 ~@25]/6", // F G F
  C: "[~@12 d5@12 e5@12 g5@12 ~@12 d4@11 f4@13 e4@12 c4@48 ~@48, ~@24 e4@37 ~@10 g5@74 ~@47, ~@2 a5 ~@5]/4",
  D: "[~@30 g3@6 c4@6 g4@29 f4@49 ~@24 d#5@24 [d4,d5]@47 [c4,c5]@25, ~@5 d#4@2 ~@3]/5", // D C
  E: "[c2@9 ~ [g3,g4]@2 [c4,c5]@2 [g4,g5]@6 [f4,f5]@4 [e4,e5]@4 [d4,d5]@4]/2", // G C G F E D
  F: "[[e4,e5]@12 [d4,d5]@6 [e4,e5]@12 [d4,d5]@6 [f4,f5]@6 [e4,e5]@20 ~ [g3,g4]@3 [c4,c5]@3 [g4,g5]@9 [a4,a5]@6 [f4,f5]@6 [e4,e5]@12 [d4,d5]@6 [c4,c5]@6 [e4,e5]@12 [d4,d5]@6 [f4,f5]@6 [e4,e5]@6]/6", // E D E D F E G C …
  G: "[c4,c5]@47 ~", // C
  H: "[b4@12 a4@11 [b4,d5]@12 [c5,e5]@12 ~ [f4,a#4]@24 [g4,c5,e5]@23 ~@24 f5@24 ~, c5@24 ~@23 d5@24 ~@24 g5@25 ~@24, ~@2 [a4,c5]]/3", // Bm C A#5 C Am
  I: "[f4,g#4,b4,e5]@47 ~", // E
  J: "[[a4,f5]@47 [g4,g5]@48 [f5,g5]@24 [d#5,g5]@23 ~ g5@27 ~@4 [g3,g4]@6 [c4,c5]@6 [g4,g5]@19 [f4,f5]@12 [e4,e5]@11 ~ d4@6 [e4,e5]@31 ~@3 [g3,g4]@6 [c4,c5]@6 [e4,e5]@7, c5@95 a#4@47 [b4,d5]@28 ~@58 d5@7 ~@53]/6", // Dm G Fsus2 D# G C G F …
  K: "[~@10 [d4,d5]@11 [f4,f5]@11 ~@27 e2@3 g2@3 a2@2 ~ a2@3 g2@2 ~ g2@3 ~@2 d2@3 c2@3 a1@3 g1@3 [c5,c6]@23 [d5,d6]@23 [e5,e6]@7, ~@32 e5@45 e2@4 ~@63, ~@33 e4@47 ~@64]/3", // D F C D E
  L: "[~@4 [d5,d6]@12 [c5,c6]@11 [e5,e6]@12 [a4,a5]@26 [b4,b5]@27 ~ [f3,a3,c4]@55 [c2,e3,g3,c4,c5]@119 ~@21, ~@46 c5@27 ~@71]/6", // D C E A B F C
})).s("gm_string_ensemble_1").gain(0.48).pan(0.4)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@21 A@3 B@7 ~@42>".pickRestart({
  A: "[~@47 c3@25 ~@23 [e3,c4]@25 ~@24]/3", // C
  B: "[~@23 b3@24 e3@37 ~@11 c4@24 [d3,b3]@24 [c4,e4]@13 [b3,d4]@12 ~@23 a3@24 b3@25 e3@48 ~@48, ~@119 g3@73 ~@23 g3@74 ~@47, ~@7 c4@2 ~@5]/7", // G C Bm
})).s("gm_string_ensemble_1").gain(0.32).pan(0.4)

// other · timpani
const timpani = note("<~@21 A ~@3 B ~@16 C ~@3 D ~@14 E F ~@10>".pickRestart({
  A: "c2 ~@15 [c2,d2] c2 d2 c2 d2 c2 d2 [c2,d2] c2 ~@23", B: "~@9 c2 ~@14", C: "c2 ~@23", D: "~@9 c2 ~@2 c2 ~@11",
  E: "~@23 c2 ~ [c2,d2] d2 c2 d2 c2 d2 c2 d2 c2 d2 ~ [c2,d2] c2 d2 c2 d2 c2 d2 c2 d2 c2 d2 [c2,d2]", F: "~ c2 ~@46",
})).s("gm_timpani").gain(0.48)

// other · timpani · soft notes
const timpani_soft = note("<~@21 [~@12 c2 d2 c2 d2 ~@32] ~@51>").s("gm_timpani").gain(0.24)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@30 A B C D E F G H I J K L@2 ~@30>".pickRestart({
  A: "~@7 g3, f4@18 f4@29 ~, ~ g3@4 g3@2 ~, ~@12 a#3@24 a#3@11 ~, ~@24 d#4@23 ~",
  B: "~@12 a#3@12 ~@18 f3@5 ~, d#4@24 d4@23 ~, ~ f3@2 ~@2 f3@2 ~, ~@36 a#3@11 ~",
  C: "~@12 a#3@11 ~@19 f3@4 ~@2, d4@23 ~ f4@22 ~@2, ~@3 f3@6 ~@9 a#3@5 ~",
  D: "~@12 a#3@11 ~ [a#3,d4,f4]@11 ~ [a#3,d#4,g4]@10 ~@2, d#4@23 ~@25, ~ g3@2 ~@5", // A# D#
  E: "~@9 g4@3 ~@9 g#3@2 ~, g4@18 ~@6 f4@23 ~, ~@6 g#3@17 ~@7 g#3@12 ~@6, ~@12 c4@11 ~@13 c4@10 ~@2",
  F: "~@18 g3@6 ~@18 g3@5 ~, f4@24 d#4@23 ~, ~@12 a#3@12 ~@12 a#3@11 ~",
  G: "~@12 a3@12 ~@18 f#3@5 ~, d#4@24 d4@23 ~, ~@36 a3@11 ~",
  H: "~@12 g3@12 ~@18 g4@5 ~, d4@24 c4@12 c4@11 ~, ~@6 e3@12 ~@12 g3@17 ~",
  I: "~@3 g#3 ~@2 c4@2, g4 f4, ~ g#3@2 ~@5, ~ c4 ~@2",
  J: "~@2 a#3@2 ~@3 g3, f4@24 d#4@23 ~, ~ g3@2 ~@2 g3@2 ~, ~@36 a#3@11 ~", K: "~ a3 ~ a3, d#4 d4",
  L: "[~@12 g3@11 ~@19 e3@4 ~@2 d4@47 ~, d4@23 ~ c4@22 ~@50, ~@30 e3@12 ~@4 c3@49 ~, ~@36 g3@10 ~ [e3,g3]@48 ~]/2", // Em
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.2)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@31 A B C ~ D E F G H I J ~@31>".pickRestart({
  A: "~@3 f3 ~@4", B: "~@3 f3 ~ f3@2 ~", C: "~@18 g3@5 ~@25", D: "~ g3@2 ~@2 g3@2 ~", E: "~ f#3@2 f#3 ~ f#3@2 ~",
  F: "~@3 e3 ~@4", G: "~@5 g#3@2 g#3", H: "~@3 g3 ~@4", I: "~ f#3@2 f#3 ~ f#3@2 f#3", J: "~ e3@2 e3 ~@4",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.2)

// bass · electric bass finger
const bass = note("<~@30 A@2 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC@3 AD AE@7 AF@3>".pickRestart({
  A: "[d#1@17 ~ d#1@4 ~@2 d#1@18 a#1@23 ~ a#1@5 ~ a#1@18 f1@3 f#1@3]/2", B: "g1@17 ~ g1@5 ~ g1@21 ~@3",
  C: "c2@17 ~ c2@5 ~ c2@10 ~@2 c2@3 d#2@3 c2@6", D: "g#1@16 ~@2 g#1@3 ~@3 g#1@18 a#1@3 g#1@3",
  E: "g1@16 ~@2 g1@3 ~@3 g1@10 ~@2 d#2@11 ~", F: "f#1@16 ~@2 f#1@4 ~@2 f#1@23 ~",
  G: "e1@15 ~@3 e1@4 ~@2 e1@17 ~ f1@3 g1@3", H: "g#1@16 ~@2 g#1@4 ~@2 g#1@18 a#1@3 g#1@3", I: "g1@17 ~ g1@5 ~ g1@24",
  J: "f#1@17 ~ f#1@4 ~@2 f#1@24", K: "e1@8 ~ e1@2 ~ e1@12", L: "c1@23 ~", M: "f1@8 ~ f1@3 g1@11 ~",
  N: "c1@17 ~ g1@3 c2@3 a1@11 ~ a1@10 ~@2", O: "f1@17 ~ f1@6 g1@23 ~", P: "c1@16 ~@2 c1@5 ~ c1@11 ~ c2@11 ~",
  Q: "f1@17 ~ f1@6 g1@17 ~ g1@3 a1@3", R: "c2@12 b1@11 ~ a1@12 g1@12", S: "f1@16 ~@2 f1@6 g1@21 ~@3",
  T: "c2@5 ~ g2 d3 c3@7 ~", U: "c2@18 ~@3 c2 ~@2 c2@11 ~ e1@12", V: "f1@16 ~@2 f1@5 ~ f1@22 ~@2",
  W: "g#1@24 b1@12 d2@11 ~", X: "a1@16 ~@2 a1@3 ~@3 a1@23 ~", Y: "c2@19 ~@2 c2 ~@2 c2@11 ~ e1@12",
  Z: "f1@20 ~ c2 ~@2 f2@22 ~@2", AA: "g#1@16 ~@2 g#1@6 b1@12 d2@11 ~", AB: "f2@15 c3@3 g3@5 ~",
  AC: "[e3@23 ~ c3@12 e2@11 d#2@40 ~@2 d#2@3 f2@3 g2@24 g1@25]/3", AD: "~ f1@16 ~@2 f1@5 ~ g1@23",
  AE: "[~ c1@13 ~ c1@3 g1@3 c2@3 a1@11 a1@12 f1@16 ~ f1@6 g1@20 ~@3 c2@13 ~ e2@3 g2@3 a2@3 a2@3 g2@3 g2@3 ~@2 d2@3 c2@3 a1@3 g1@3 f1@16 ~ f1@6 g1@15 ~@2 g1@3 a1@3 c2@12 b1@12 a1@11 g1@12 f1@17 ~@2 f1@6 g1@27 ~ f1@51, ~@125 e2@4 ~@207]/7",
  AF: "[~@2 c1@49 ~@21]/3",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · distortion guitar
const distortion_guitar = note("<~@42 A B C@2 D E F G H ~@11 I J@6 ~@4>".pickRestart({
  A: "[c2,g2]", B: "[f2,c3] [g2,d3]", C: "[[c3,g3]@23 ~ [a2,e3]@23 [f2,c3]@24 ~ [g2,d3]@23 ~]/2",
  D: "[c3,g3]@23 ~ [c3,g3]@23 ~", E: "[f2,c3]@24 [g2,d3]@23 ~", F: "c3@12 b2@12 a2@12 g2@11 ~",
  G: "[f2,c3]@23 ~ [g2,d3]@23 ~", H: "[c3,g3]", I: "~@2 f2@23 [g2,d3]@23, ~ c3@24 ~@23",
  J: "[[c3,g3]@24 [a2,e3]@23 [f2,c3]@22 ~ d3@23 [c3,g3]@45 ~ [f2,c3]@23 [g2,d3]@23 c3@11 b2@12 ~ a2@11 g2@12 [f2,c3]@25 [g2,d3]@24 ~@7, ~@69 g2@23 ~@196]/6", // C5 A5 F5 C5 F5 G5 F5 G5
})).s("gm_distortion_guitar").gain(0.42).pan(0.7)

// other · french horn
const french_horn = note("<~@59 A@2 B ~@11>".pickRestart({
  A: "[~@45 d4 ~ d4@3 g3@2 ~ g3@35 ~@4 d4 ~ d4@2]/2", B: "~ g3@2 ~ g3@21 ~@23",
})).s("gm_french_horn").gain(0.72).pan(0.9)

// other · overdriven guitar
const overdriven_guitar = note("<~@61 A B@4 ~@7>".pickRestart({
  A: "~@29 g3@7 c4@6 g4@6",
  B: "[~ g4@13 f4@8 ~ f4@2 e4@12 d4@6 e4@29 ~@5 g3@6 c4@6 e4@5 e4@12 d4@6 f4@17 e4@5 ~ e4@14 d4@7 c4@2 d4@2 d4@3 ~ c4@22 ~@6, ~@11 g4 ~@84]/4",
})).s("gm_overdriven_guitar").gain(0.56).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@30 A@12 B A C A@2 D E A@2 F@3 A F@2 A G H I ~ J K L M N O ~@5>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x ~ x!2", D: "x ~@5 x ~ x ~@2 x ~@4", E: "x ~@2 x ~@4 x ~@2 x ~@4",
  F: "x ~@6 x!2 ~@7", G: "x", H: "x ~@46 x", I: "~@47 x", J: "~ x ~@17 x ~@5 x ~@22", K: "~ x ~@16 x ~@5 x ~@22 x",
  L: "~@16 x ~@5 x ~@22 x ~@2", M: "~@43 x ~@4", N: "~@12 x ~@5 x ~@8 x ~@13 x ~@6", O: "~@2 x ~@14 x ~@7 x ~@14 x ~@7",
})).gain(0.72)
// … 69 more lines

More by Michele Zarrillo