Strudelify

La regola dell'amico

883

KeyE♭ majorTempo128 bpm
0:00/0:00
// La regola dell'amico — 883
// 128 bpm, 4/4, key Eb 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 129 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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.

// bass · electric bass finger
const bass = note(`<
  ~@11 A B@2 C@2 D@2 E F G@2 H I J K L@2 M@8 N@4 O P Q R S@2 T@2 O P Q R S@2 U@2 V@8 M@16 O P Q R S@2 T@2 O P Q R S@2
  U@2 W@7 ~ M@24 ~
>`.pickRestart({
  A: "~@3 f2", B: "[c2@3 e2]/2", C: "[f2@30 f2 ~]/2", D: "[e2@7 a2@6 g2@3]/2", E: "f2", F: "g2", G: "f2@12 ~@2 f2 ~",
  H: "e2@4 ab2@2 ~ ab2", I: "a2@5 g2@3", J: "f2@6 ~ f2", K: "e2", L: "[d2@2 d3@2 e2@2 e3@2 f2@2 gb2 ~@3 g2@7 ~@11]/2",
  M: "[c2@3 ~ b1 ~@3 a1@2 g1@2 ~@2 f1@6 e1 ~@3 d1@2 c1@2 ~@2 g1@4 g2 ~ a1@2 a2 ~ b1@2 b2 ~@3 f1@5 ~ g1@4 a1@4 b1@2 c2@5 ~ b1@2 ~@2 a1@2 g1@2 ~@2 f1@5 ~ e1@2 ~@2 d1@2 c1@3 ~ g1@4 g2 ~ a1@2 a2 ~ b1@2 b2 ~@3 f1@5 ~ g1@4 a1@4 b1@2 c2@2]/8",
  N: "[~@2 c3 ~ b1@2 b2 ~ a1@2 a2 ~ g1@2 f1@5 ~ e1@2 ~@2 d1@2 c1@3 ~ g1@4 g2 ~ a1@2 a2 ~ b1@2 b2 ~@3 f1@5 ~ g1@4 a1@4 b1@2 ~@2]/4",
  O: "c2@4 c3@2 c2 ~ e2@2 f2@2 ~@2 c2@2", P: "~ c2 c3 c2 e2 d2 c2 f1", Q: "~ f1 f2 f1 a1 g1 ~ g1",
  R: "~ g1 g2 g1 b1 a1 g1 f1", S: "[e1@2 e2 e1!2 g1 b1 a1@2 a1 a2 a1 c2 b1 a1 g1]/2",
  T: "[f1@2 f2 f1@2 f2 f1 g1@2 g2 a1 a2 b1 b2 g1 g2]/2", U: "[f1@2 f2 f1@2 f2 f1 g1@9]/2",
  V: "[f1 f2 g1 g2 a1 a2 ~ g1@2 g2 a1 a2 b1 b2 ~ e1@2 e2 e1 e2 ab1 ab2 ~ a1@2 a2 b1 b2 c2 c3 ~ f1@2 f2 g1 g2 a1 a2 ~ c2@2 c3 d2 d3 e2 e3 ~ g1@2 g2 a1 a2 b1 b2 ~ f1@2 f2 g1 g2 a1 a2 b1 b2]/8",
  W: "[f1 f2 g1 g2 a1 a2 ~ g1@2 g2 a1 a2 b1 b2 ~ e1@2 e2 e1 e2 ab1 ab2 ~ a1@2 a2 b1 b2 c2 c3 ~ f1@2 f2 g1 g2 a1 a2 ~ c2@2 c3 d2 d3 e2 e3 ~ g1@2 g2 a1 a2 b1 ~@3]/7",
})).s("gm_electric_bass_finger").gain(0.44)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@56 A B C D E F G H ~@32 A B C D E F I ~@26>".pickRestart({
  A: "~@2 [f4,a4,c5]!2 ~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@5", // F
  B: "[d4,g4,b4] ~ [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@5", // G
  C: "[e4,g4,b4] ~ [e4,g4,b4]!2 ~@2 [e4,g4,b4] ~@3 [e4,ab4,b4] ~@5", // Em E
  D: "[e4,a4,c5] ~ [e4,a4,c5]!2 ~@2 [e4,a4,c5] ~@3 [e4,a4,c5] ~@5", // Am
  E: "[f4,a4,c5] ~ [f4,a4,c5]!2 ~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@5", // F
  F: "[e4,g4,c5] ~ [e4,g4,c5]!3 ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~@5", // C
  G: "[d4,g4,b4] ~ [d4,g4,b4]!3 ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~@5", // G
  H: "[f4,a4,c5] ~ [f4,a4,c5]!3 ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~@3 [d4,g4,b4] ~", // F G
  I: "[d4,g4,b4] ~ [d4,g4,b4]!3 ~ [d4,g4,b4] ~ [d4,g4,b4] ~@7", // G
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.7)

// other · brass section
const brass_section = note(`<
  ~@28 A B@3 C D@3 A E@2 F ~@14 G@2 H I J K L M@2 N O P@2 N Q R@2 N O P@2 N Q R@2 N ~@6 S@2 ~@6 T@2 H I J K L U@2 ~ O
  P@2 N Q R@2 N O P@2 N Q R@2 N V W@2 X Y Z@2 AA@2
>`.pickRestart({
  A: "[c4,e4,g4] ~ [c4,e4,g4] ~ [b3,d4,g4]@3 ~ [a3,c4,e4]@3 ~ [g3,c4,e4]@2 [a3,c4,f4]@2", // C G Am C F
  B: "[~@2 [a3,c4,f4] ~ [g3,c4,e4]@3 ~ [f3,a3,d4] ~ [e3,g3,c4]@4 [g3,b3,d4]@10 ~@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [f3,a3,c4]@12 [g3,b3,d4]@4 [c4,e4,g4]@2]/3", // F C Dm C G F G C
  C: "~@2 [c4,e4,g4] ~ [b3,d4,g4]@3 ~ [a3,c4,e4]@3 ~ [g3,c4,e4]@2 [a3,c4,f4]@2", // C G Am C F
  D: "[~@2 [a3,c4,f4] ~ [g3,c4,e4]@3 ~ [f3,a3,d4] ~ [e3,g3,c4]@4 [g3,b3,d4]@10 ~@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [f3,a3,c4]@12 [g3,b3,d4]@4 ~@2]/3", // F C Dm C G F G
  E: "[~@2 [a3,c4,f4] ~ [g3,c4,e4]@3 ~ [f3,a3,d4] ~ [e3,g3,c4]@4 d4@12 d5@2 [e4,e5]@2 [f4,f5]@2, ~@14 [g3,b3]@17 ~, ~@26 d4@5 ~]/2", // F C Dm C E F G
  F: "~ [f4,f5] [g4,g5]@2 [a4,a5] [b4,b5]@2 [c5,c6]", G: "[e5@4 d5@2 f5@4 c5@4 b4@5 ~@13]/2",
  H: "~@2 [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5]@2 [b3,b4] ~", // C B
  I: "~@2 [b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [b3,b4] [a3,a4] [g3,g4] [a3,a4]", // B A G A
  J: "[b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [d4,d5]@2 [c4,c5] ~", // B D C
  K: "~@2 [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] [b3,b4] [a3,a4] [b3,b4]", // C B A B
  L: "[c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~", // C
  M: "[~@2 [c4,c5]!3 ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [g4,g5]@8 ~@4 [g4,g5]@2 [a4,a5]@2 [c5,c6]@2]/2", // C G A C
  N: "~@2 [c5,c6]@2 [a4,a5]@2 [g4,g5]@2 [c5,c6] ~ [c5,c6]@2 [a4,a5]@2 [g4,g5] ~", O: "[g4,g5]@7 [c5,c6]",
  P: "[~@2 [c5,c6] ~ [c5,c6]@3 ~ [c5,c6] ~ [c5,c6]@4 [d5,d6]@10 ~@2 [g4,g5]@2 [a4,a5]@2 [c5,c6]@2]/2", // C D G A C
  Q: "[g4,g5]@6 ~ [a4,c5,f5]", // G F
  R: "[~@2 [a4,c5,f5] ~ [g4,c5] ~@3 [c5,c6]@5 ~ [d5,d6]@6 ~@6 [g4,g5]@2 [a4,a5]@2 [c5,c6]@2, ~@2 e5 ~@13]/2", // F C5 C D G A C
  S: "[[e4,e5]@4 [d4,d5]@4 [f4,f5]@2 [c4,c5]@4 [b3,b4]@11 ~@7]/2", // E D F C B
  T: "[[e4,e5]@2 [d4,d5]@2 [f4,f5] [c4,c5]@2 [b3,b4]@4 [b3,b4] [a3,a4] [g3,g4] ~@2]/2", // E D F C B A G
  U: "[~@2 [c4,c5]!3 ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [g4,g5]@8 ~@10]/2", // C G
  V: "c5@3 ~ b4@3 ~ a4@2 ~@2 g4 ~ [f4,a4]@2", // F
  W: "[~@2 [f4,a4]@2 [e4,g4]@3 ~ [d4,f4]@2 [c4,e4]@3 ~ [d4,g4]@10 d4 ~ [g3,d4]@2 a3@2 [c4,f4]@2, ~@10 f4 ~@17 e4 ~@3]/2", // F Em Dm C G5 F5
  X: "~@2 [c4,f4]@2 g4@2 ~@2 a4 ~ g4@2 a4 ~ g4@2", // F5
  Y: "[c5,c6] ~ c6@2 [b4,b5]@2 ~@2 [a4,a5]@3 ~ [g4,g5]@2 [a4,a5]@2, ~@2 c5 ~@13", // C B A G A
  Z: "[~@2 [a4,a5]@2 [g4,g5]@3 ~ [f4,f5]@2 [e4,e5]@4 [g4,g5]@10 ~@2 [d4,d5]@2 [e4,e5]@2 [f4,f5]@2, ~@30 e5 ~]/2", // A G F E G D E F
  AA: "[~@2 [f4,f5]@2 [g4,g5]@3 ~ a5@2 [b4,b5]@3 ~ [c5,c6]@4 ~@14, ~@8 a4 ~ a5 ~@21]/2", // F G B C
})).s("gm_brass_section").gain(0.4).pan(0.7)

// other · synth drum
const synth_drum = note(`<
  ~@19 A ~ B ~ C ~ A D A ~@2 E ~ F ~ G ~@2 H ~ I J ~@14 K ~@10 E ~ F ~ G ~@3 E ~ F ~ G ~@23 L M ~@2 E ~ F ~ G ~@3 E ~ F
  ~ G ~@3 E ~ F ~ G N J
>`.pickRestart({
  A: "~@10 e6!3 ~@3", B: "~@8 e6 ~@7", C: "~@10 e6 ~ e6 ~@3", D: "~@14 e6 ~", E: "~@6 c7!3 ~@7", F: "~@4 c7 ~@11",
  G: "~@6 g6 ~ g6 ~@7", H: "~@10 g6!3 ~@3", I: "~@2 f6 ~@11 g6!2", J: "g6 ~@15", K: "a6 ~@7", L: "~@3 a6!6 ~@7",
  M: "~@10 a6!3 ~@3", N: "~@14 g6!2",
})).s("gm_synth_drum").gain(0.61)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A@3 B C@2 ~@12 D E@2 F G H I J K ~ L@5 M@2 N O P@2 Q ~@4 R@2 S@2 ~@6 T@2 ~@8 L@5 M@2 N L@5 M@2 N ~@16 U V W X ~ Y ~@2
  L@5 M@2 N L@5 M@2 N L@5 M@2 Z ~
>`.pickRestart({
  A: "[g5@4 f5 ~@3 eb5@2 d5@2 ~@2 c5@6 bb4 ~@3 ab4@2 g4 ~@3 f4@18]/3", B: "eb4 d4", C: "[c4@3 ~]/2", D: "a4@7 b4",
  E: "[~@2 b4 ~ b4 ~ b4 ~ b4 ~ b4 ~@3 a4@8 ~@10]/2", F: "~@2 b4 ~ b4 ~ b4 ~ b4 ~ b4@4 ~@2",
  G: "~@2 g4 ~ g4 ~ g4 ~ ab4 ~ ab4 ~ e5 ~ c5 ~", H: "~@2 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ b4 ~ a4@2",
  I: "~@2 a4 ~ a4 ~ a4 ~ c5 ~ a4 ~ a4 ~ g4@2", J: "~@2 g4 ~ e5 ~ c5 ~ g4 ~ e5 ~ g5@2 e5 ~",
  K: "~@4 [d5,e5]!3 [f5,g5] a5 ~ c6 ~@3 f6 ~", // Dsus2 Fsus2
  L: "[[g4,g5]@13 ~ [a4,a5]@4 [a4,a5]@2 [g4,g5]@4 [f4,f5]@2 [e4,e5]@3 ~ [g4,g5]@9 ~@3 [g4,g5]@2 [a4,a5]@2 [c5,c6]@4 [c5,c6]@2 [a4,a5]@2 [g4,g5]@2 [c5,c6] ~ [c5,c6]@2 [a4,a5]@2 [g4,g5]@11 ~@3 [g4,g5]@2 [a4,a5]@2]/5", // G A G F E G A C …
  M: "[~@2 [a4,a5]@2 [g4,g5]@3 ~ [f4,f5]@2 [e4,e5]@3 ~ [g4,g5]@11 ~ [g4,g5]@2 [a4,a5]@2 [c5,c6]@2]/2", // A G F E G A C
  N: "~@2 [c5,c6]@2 [a4,a5]@2 [g4,g5]@2 [c5,c6] ~ [c5,c6]@2 [a4,a5]@2 [g4,g5]@2", // C A G C A G
  O: "[c5,c6] ~ [c5,c6]@2 [b4,b5]@2 ~@2 [a4,a5]@4 [g4,g5]@2 [a4,a5]@2", // C B A G A
  P: "[~@2 [a4,a5]@2 [g4,g5]@2 ~@2 [f4,f5]@2 [e4,e5]@4 [g4,g5]@9 ~@3 [g4,g5]@2 [a4,a5]@2 [c5,g5,c6]@2, ~@26 d5 ~ e5 ~@3]/2", // A G F E G A C5
  Q: "~@2 [c5,c6]@2 [a4,a5]@2 [g4,g5]@2 [c5,g5,c6] ~ [c5,c6]@2 [a4,a5]@2 [g4,g5]@2, ~@2 g5 ~ e5 ~ d5 ~@3 g5 ~ e5 ~ d5 ~", // C A G C5 C A G
  R: "[~@8 a4@2 b4@3 ~ c5@4 a4@4 b4@4 c5@6]/2", S: "[e5@2 d5 f5@2 c5@2 b4@5 a4 g4@2 ~]/2", T: "[[c4,a4]@7 [b3,g4]@9]/2",
  U: "e5 d5 c5 b4 c5 b4 a4 g4 a4 b4 c5 d5 e5 f5 [g5,b5]@2", // G
  V: "~ [f5,a5] [e5,g5] [d5,f5] [e5,g5] [d5,f5]@2 ~ [d5,f5] [e5,g5] [f5,a5] ~@5", // F Em Dm Em Dm Em F
  W: "e5 d5 e5 ~@3 b4 a4 ab4 a4 b4 c5 d5@2 e5@2", X: "c6 b5 c6 ~@13", Y: "c6 b5 c6 b5 c6 ~@11",
  Z: "~@2 [c5,c6]@2 [a4,a5]@2 [g4,g5]@2 [c5,c6] ~ [c5,c6]@2 [a4,a5]@2 [c5,c6]@2", // C A G C A C
})).s("gm_string_ensemble_1").gain(0.44).pan(0.3)

// other · string ensemble 1
const string_ensemble_1_2 = note("<A@3 B C@2 ~@10 D E F G@2 H I J K ~ L ~@102>".pickRestart({
  A: "[bb4@3 ~ bb4 ~@3 g4 ~ g4 ~@3 eb4@5 ~ eb4 ~@3 c4 ~ c4@2 ~@2 ab3@18]/3", B: "c4 bb3", C: "[e3@3 ~]/2",
  D: "~@8 a4@2 b4@3 ~ c5@2", E: "~ a4@2 b4@2 c5@3", F: "f4@7 g4",
  G: "[~@2 g4 ~ g4 ~ g4 ~ g4 ~ g4 ~@3 f4@8 ~@4 c4 ~ c4 ~ d4 ~]/2", H: "~@2 g4 ~ g4 ~ g4 ~ g4 ~ g4@4 ~@2",
  I: "~@2 d4 ~ d4 ~ d4 ~ e4 ~ e4 ~ b4 ~ a4 ~", J: "~@2 a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ g4 ~ f4@2",
  K: "~@2 f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ e4@2", L: "~@4 [b4,c5]!3 [d5,e5] f5 ~ a5 ~@3 c6 ~",
})).s("gm_string_ensemble_1").gain(0.41).pan(0.4)

// other · string ensemble 1
const string_ensemble_1_3 = note("<A@3 B C@2 ~@6 D@2 E@2 F@2 G H@2 I J K L ~@104>".pickRestart({
  A: "[eb4@4 d4 ~@3 c4@2 bb3 ~@3 ab3@6 g3 ~@3 f3@2 eb3 ~@3 db3@18]/3", B: "bb2", C: "[c3@25 ~@7]/2",
  D: "[e4@10 c4 e4 d4@2 g4 d4]/2", E: "[c4@3 f4@2 e4@2 d4@9]/2", F: "[d4@14 e4@7 ~ d4@4 e4@6]/2", G: "c4@7 d4",
  H: "[~@2 d4 ~ d4 ~ d4 ~ d4 ~ d4 ~@3 c4@8 ~@4 a3 ~ a3 ~ b3 ~]/2", I: "~@2 d4 ~ d4 ~ d4 ~ d4 ~ d4@4 ~@2",
  J: "~@2 b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ ab4 ~ e4 ~", K: "~@2 e4 ~ e4 ~ e4 ~ a4 ~ e4 ~ d4 ~ c4@2",
  L: "~@2 c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4@2",
})).s("gm_string_ensemble_1").gain(0.8).pan(0.7)

// chords · piano
const piano = note("<~@4 A@2 B@4 C@4 D@2 E@2 F@8 G@2 ~@101>".pickRestart({
  A: "[~@10 d4 ~@2 e3@2 e3, [c2,c3]@31 ~, c4@10 e4@12 e4@9 ~, e4@3 d4@6 g3@3 [e2,g3,d4]@4, ~@2 g3@5 c4@4 ~@5]/2", // C Em7
  B: "[[a3,c4]@6 [a3,c4]@4 ~@12 [b3,d4]@4 ~@2 f3@2 ~@8 d4@2 [b3,d4]@2 [b3,d4,b4]@4 ~@8 [d4,b4]@4 [g2,g3,e4,c5]@5 ~, f2@7 f2@8 b3@3 b3@2 ~@3 [e4,c5]@6 ~@3, ~@3 f4@4 [b3,d4]@4 g4@4 d4@4 ~ a4@3 ~@9, ~@10 [a3,c4]@5 ~@5 f3@6 [b3,d4]@4 [e2,g4]@16 ~@2 [a2,a3]@10 ~@6, ~@12 c3@4 ~@2 d3@13 ~@3 e3@12 ~@4 [c4,a4]@8 ~@6]/4", // Am Bm G C Bm Am Bm Em …
  C: "[a4@6 ~@6 f3@2 ~@12 c4@5 ~ c3@4 ~@16 c4@2 e4@2 g4@4 ~@2 d4@2, [f2,c5,e5]@14 ~@2 g2@8 [b3,d4]@5 ~@2 c4@7 c4@14 ~@4 d4@6 ~@2, f3@12 ~@8 g3@11 ~ g4@6 g4@12 g4@5 ~@5 g4@4, ~@6 [c4,e4,a4]@8 [b3,d4,g4]@10 g4@7 ~ e4@10 e4@12 ~@10, ~@10 c3@4 ~@4 d3@13 ~ d4 ~@3 c3@20 [e2,e3]@8]/4", // Fmaj7 Bm Am G E
  D: "[~@6 [a3,c4]@4 [a3,c4,e4]@4 [b3,d4]@8 [d4,g4]@4 [d4,g4,b4]@5 ~, f2@31 ~, [a3,c4]@3 f4@4 ~@4 b3@4 ~, ~@2 c3@29 ~, ~@4 f3@27 ~]/2", // Am Bm G5 G Am
  E: "[~@4 b3 [b3,d4,b4]@2 ~@4 [d4,b4]@2 [g2,g3,e4,c5]@3, e2@14 [a2,a3,e4,c5]@11 ~@7, g4@12 ~@6 [c4,a4]@7 ~@7, d4@4 b3@2 d4@2 a4@5 ~@19, b3 e3@6 ~@9]/2", // Bm G C Am F
  F: "[~@10 f3@4 ~@14 d4@2 e4@2 ~@10 f4@3 ~@13 g4@3 ~ [e2,e3,b3,d4,g4]@8 ~@2 [ab2,ab3,e4,b4,e5]@6 [a2,a3,c4,e4,a4]@11 ~ [g2,g3,b3,d4,g4]@4 a3@3 ~@11 c4@4 g4@2 ~@8 e5@2 c5@3 ~, f2@14 d4@8 b3@2 d4@2 c4@4 ~@2 f4@6 a3@8 d4@6 f3@4 d4@5 ~@33 a4@8 f4@2 a4@8 ~@2 g4@2 e5@2 g4@8 ~@2, [c4,e4,a4]@6 [c4,e4,a4]@8 b3@6 g3@12 f2@14 f2@15 ~@33 [f2,f3]@26 c5@4 ~@4, ~@4 f3@6 ~@4 [g2,g4]@18 c4@4 f3@4 c4@6 g4@8 b3@7 ~@33 f4@6 c4@6 f4@6 c4@13 ~@3, ~@14 g3@4 d3@14 [f3,a3]@2 c3@12 [f3,b3]@4 d3@12 ~@32 c4@4 a3@14 [e2,e3]@15 ~]/8", // Em7 E Am G Am F G F …
  G: "[[d3,c4,f4]@7 [g2,f4,c5]@9, a4]/2", // Dm7 Csus4
})).s("gm_piano").gain(0.72)

// chords · epiano2
const epiano2 = note(`<
  ~@40 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F G H I J K@2 L M N@3 O P@3 M N@3 O P@3 ~@16 F G H I J Q@2 ~ M N@3 O P@3 M N@3 O
  P@3 M N@3 O P@3 ~
>`.pickRestart({
  A: "[[e4,g4,c5]@31 ~]/2", B: "[[f4,a4,c5]@13 ~ [d4,g4,b4]@18]/2",
  C: "[[e4,g4,b4]@4 [c4,a4] [d4,b4]@2 [e4,c5]@2 [c4,a4]@2 [d4,b4]@2 [e4,c5]@3]/2", // Em F G C F G C
  D: "[[g4,e5]@4 [f4,d5]@2 [a4,f5]@4 [e4,c5]@4 [d4,b4]@10 [c4,a4]@2 [b3,g4]@5 ~]/2", // C Dm C G F Em
  E: "[[g4,e5]@2 [f4,d5] [a4,f5]@2 [e4,c5]@2 [d4,b4]@5 ~@4]/2", // C Dm C G
  F: "[f4,a4] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [d4,g4,b4]@2, c5 ~@7", // F G
  G: "~@2 [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [e4,g4,b4]@2", // G Em
  H: "~@2 [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,a4,c5]@2", // Em E Am
  I: "~@2 [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [f4,a4,c5]@2", // Am F
  J: "~@2 [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [e4,g4,c5]@2", // F C
  K: "[~@2 [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [d4,g4,b4]@4 [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [c4,f4,a4]@2]/2", // C G F
  L: "~@2 [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // F G
  M: "[c4,e4,g4] ~ [c4,e4,g4] ~ [b3,d4,g4]@3 ~ [a3,c4,e4]@3 ~ [g3,c4,e4]@2 [a3,c4,f4]@2", // C G Am C F
  N: "[~@2 [a3,c4,f4] ~ [g3,c4,e4]@3 ~ [f3,a3,d4] ~ [e3,g3,c4]@4 [g3,b3,d4]@10 ~@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [f3,a3,c4]@12 [g3,b3,d4]@4 [c4,e4,g4]@2]/3", // F C Dm C G F G C
  O: "~@2 [c4,e4,g4] ~ [b3,d4,g4]@3 ~ [a3,c4,e4]@3 ~ [g3,c4,e4]@2 [a3,c4,f4]@2", // C G Am C F
  P: "[~@2 [a3,c4,f4] ~ [g3,c4,e4]@3 ~ [f3,a3,d4] ~ [e3,g3,c4]@4 [g3,b3,d4]@10 ~@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [f3,a3,c4]@12 [g3,b3,d4]@4 ~@2]/3", // F C Dm C G F G
  Q: "[~@2 [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [d4,g4,b4]@4 [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~@7]/2", // C G
})).s("gm_epiano2").gain(0.35).pan(0.8)

// other · clavinet
const clavinet = note("<~@40 A B C D E ~@3 F G H D E I ~@75>".pickRestart({
  A: "~@2 c3!4 c2 ~ c3@2 c3 c2!4 ~", B: "~@2 c3!4 c2 ~@3 c3@3 ~ c3 ~", C: "f2@2 f3@2 f2 f3 ~@10", D: "~@4 f2!2 ~@10",
  E: "~@4 e2!2 ~@10", F: "~@2 [c3,c4] c3!2 [c3,c4] c2 ~@2 c4 c3 c2!4 ~, ~@4 c3 ~@3",
  G: "~@2 [c3,c4] c3!3 c2 ~@2 c4 c3@3 ~ c3 ~", H: "f2@2 f3@2 f2 f3 ~@3 a3 ~ f3!2 ~@3, ~@2 a3 ~@13",
  I: "~@2 c4 ~ a2 [a2,c4] ~@3 c4 ~@6", // Am
})).s("gm_clavinet").gain(0.56).pan(0.3)

// other · clavinet · soft notes
const clavinet_soft = note("<~@49 [~@5 c4 ~@10] [~@5 a3 ~@10] [~@2 b3 ~@2 b3 ~@3 b3 ~@6]!2 ~@76>")
  .s("gm_clavinet").gain(0.32).pan(0.3)

// bass · lead 4 chiff
const bass_2 = note("<~@80 A B C D E@2 F@2 A B C D E@2 G@2 ~@33>".pickRestart({
  A: "c2@4 c3@2 c2 ~ e2@2 f2@2 ~@2 c2@2", B: "~ c2 c3 c2 e2 d2 c2 f1", C: "~ f1 f2 f1 a1 g1 ~ g1",
  D: "~ g1 g2 g1 b1 a1 g1 f1", E: "[e1@2 e2 e1!2 g1 b1 a1@2 a1 a2 a1 c2 b1 a1 g1]/2",
  F: "[f1@2 f2 f1@2 f2 f1 g1@2 g2 a1 a2 b1 b2 g1 g2]/2", G: "[f1@2 f2 f1@2 f2 f1 g1@9]/2",
})).s("gm_lead_4_chiff").gain(0.4)

// chords · pad warm
const pad_warm = note("<~@82 A B@3 C D E@3 F@4 G ~@33>".pickRestart({
  A: "[a3,c4,f4]", B: "[d4 ~ [c4,a4], [b3,g4]@2 ~, ~ e4@2]/3", C: "[c4,f4,a4]", D: "g4 a4, [b3,d4]",
  E: "[~ g4@2 b4 [f4,a4]@2, ~ c4@5, ~ e4@3 ~@2]/3", F: "[d4 ~@2 f4, [b3,g4] a4, ~ e4@2 ~, ~@8 c4@7 ~]/4",
  G: "[b3,d4,g4]", // G
})).s("gm_pad_warm").gain(0.15)

// drums · kick
const kick = s("bd").struct("<~@20 A@3 B A B C@28 D E C@46 F ~ C@24 ~>".pickRestart({
  A: "x ~@6 x", B: "x", C: "x!4", D: "x ~@3 x ~@3 x ~@3 x!4", E: "x!16", F: "x!3 ~",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@28 [~ x ~ x]!27 ~ [~ x ~ x]!46 [~ x ~@2] ~ [~ x ~ x]!24 ~>").gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@80 [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!16 ~@33>").gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<~@28 [x!4]!27 ~ [x!4]!46 [x!3 ~] ~ [x!4]!24 ~>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct(`<
// … 33 more lines

More by 883