Strudelify

Rainy Days and Mondays

Carpenters

KeyB♭ majorTempo75 bpm
0:00/0:00
// Rainy Days and Mondays — Carpenters
// 75 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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 · "A.PIANO 1"
const piano = note("<A B C D E F G H I J K L M@2 ~@48 N@2 O@2>".pickRestart({
  A: "eb5 ~@2 f5 ab3@2 g3@2, [c4,g4,c5] [eb4,g4,c5,eb5,g5], ~ eb5@3 ~@4, ~ bb3 ~@2", // C5 Cm
  B: "[f3,eb4,g4,ab4,c5]@2 eb5@2 ~@2 [ab3,f5]@2 eb5@3 ~ d5@4, ~ [bb3,eb4,ab4,c5,eb5] [g3,eb4,bb4,g5]@2", // Fm7 Db Ab Eb
  C: "~ eb5!2 c5 ~@3 c5, [ab3,eb4,g4,ab4] [bb3,eb4,ab4,ab5], c5@3 ~ c5@3 ~, ~@2 eb5!2, ~@5 g5@3", // Abmaj7 Ebsus4
  D: "[bb3,d4,eb4]@4 ~@2 g3@2 [ab3,c4,eb4]@4 ~@2 bb2 ~, bb2@4 bb2@3 ~, g3@3 ~ f3@4, ~ [bb3,d4,eb4] ~ [ab3,c4,eb4]", // Ebmaj7 Ab Ebmaj7 Ab
  E: "~@3 bb3 [f3,ab3,c4,eb4]@2 ~ bb2, bb2@4 bb2@3 ~, [g3,d4,eb4]!2 ~ [f3,ab3,c4,eb4], ~ bb3@2 ~@5", // Fm7 Ebmaj7 Fm7
  F: "g3 ~@2 g3!2 ~@2 g3, [eb3,g4] [d3,f4], [bb3,eb4]!2 [bb3,d4]!2, ~ g3@2 ~@2 g3@2 ~", // Eb Dm Eb5 Bb
  G: "~@3 g3 ~@3 g3, db3 c3, [bb3,db4,f4]!2 [bb3,c4,e4]!2, ~ g3@2 ~@2 g3@2 ~", // Bbm C7
  H: "[ab3,c4,eb4]@2 ~ f3 [g3,bb3,d4]@2 ~ f3, [f2,c3,f4] g2, ~@2 [ab3,c4,eb4]@2 f3@3 ~, ~@3 [g3,bb3,d4]", // Ab Gm F5 Ab Gm
  I: "g3 ~@2 g3 f3 ~@2 f3, ab2 g2, [ab3,c4,eb4]@2 [ab3,c4,eb4]@2 ~ f3@2 ~, ~ g3@2 ~ [g3,bb3,d4]@2 [g3,bb3,d4]@2", // Ab Gm
  J: "[c3,bb3,c4,eb4] [bb3,c4,eb4,g4] ab3 g3, g3 [bb3,c4,eb4]", // Cm7
  K: "[f2,ab3,c4,eb4,f4]@2 ~ ab2 [g3,bb3,eb4]@2 g3!2, ~ [bb2,ab3,c4,d4,f4] g2@2, ~@3 [bb3,d4]", // Fm7 Eb Bb7 Bb
  L: "[c4,eb4,f4]@2 ~ ab3!2 ~@2 ab3, f2 bb2, ab3@3 ~@2 ab3@2 ~, ~ [c4,eb4,f4]!3", // F7
  M: "[bb3,d4,eb4]@2 ~ g3 [ab3,c4,eb4]@2 ~ f3, bb2!2, g3@3 ~ f3@3 ~, ~ [bb3,d4,eb4] ~ [ab3,c4,eb4]", // Ebmaj7 Ab Ebmaj7 Ab
  N: "[~@31 f5, c3@4 f4@4 c3@4 f4@6 a3@3 a4@4 g3@3 f4 bb4 d5@2, ~ f3@4 a4@4 g3@4 bb4@2 f5@4 c4@4 f5@4 d4@5, ~ a3@2 c5@2 bb3@2 d5 c3@2 f4@2 c3@4, ~@3 c4@4 f5@4 d4@6 f3@5 c5@4 bb3@6]/2",
  O: "[~@13 f7@7 ~@12, f2@4 c4 f4 a4 c5 f5 a5 c6 f6 a6@7 ~@13, ~ c3@18 ~@13, ~@2 g3@17 ~@13, ~@3 a3@16 ~@13]/2",
})).s("gm_piano").gain(0.33).pan(0.4)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@12 A B C D@2 E F G H I J K L M N O P Q R S T U V E F W X Y Z AA AB AC AD AE AF M AG AH AI AJ AK AL AM AN AO AP AQ AR
  AS AT ~@2 AU@2
>`.pickRestart({
  A: "bb1@7 bb2", B: "bb1@15 ~", C: "eb2 d3", D: "[db3 ~ f2 g2, ~ c3@2 ~]/2", E: "ab2 g2", F: "c3 bb2 ab2 g2",
  G: "f2@2 bb1@2 g2@3 d2", H: "f2@5 ~ f2 c2 bb1 ~ bb1@3 ~ bb1 ~", I: "bb1@4 bb1@2 ~ f1 bb1@4 bb1@3 f1",
  J: "bb1@2 ~ bb1 bb1@4 bb1@3 bb1 b1@4", K: "c2@5 ~ g2@2 ab2@8", L: "f2@4 bb1@3 bb1 eb2 ~ bb1@3 bb1 eb2 f2",
  M: "g2@7 ~ ab2@8", N: "f2@3 f2 c2@3 ~ bb1@5 ~ f2@2", O: "c2@6 ~ g2 ab2@7 ~", P: "f2@4 bb1@4 g1 ~ g1@6",
  Q: "g2@5 ~ g2@2 ab2@7 ~", R: "f2@8 bb1@5 ~ bb1@2", S: "f2@3 ~ f2@3 ~ bb1@6 bb1 ~", T: "eb2 bb2@3 d2 bb2@3",
  U: "db2@2 bb2@6 c2@7 ~", V: "f2@8 g2@7 ~", W: "f2@4 bb1@3 ~ g1@3 d2 g2 d2 g1@2", X: "f2@6 c2@2 bb1@5 ~ bb1 ~",
  Y: "bb1@4 bb1@3 bb1 bb1@2 ~ bb1 bb1@2 ~ f1", Z: "bb1@3 ~ bb1@2 ~ bb1 bb1@3 bb1 bb1@2 b1@2",
  AA: "c2@4 c2@3 g2 ab2 eb2 ab2@3 ~ ab2 g2", AB: "f2 c2 f2 c2 bb1@2 f2 e2 eb2 c2 bb1@2 bb1 c2 eb2 f2",
  AC: "g2@3 g2 g2@3 g2 ab2 ~ ab2@5 ~", AD: "f2 c2 f2@4 c2 b1 bb1@2 bb1 ~ bb1@2 bb1 b1", AE: "c2@5 ~@2 g2 ab2 ~ ab2@5 ~",
  AF: "f2 ~ c2 ~ bb1@4 g1@6 ~@2", AG: "f2@5 ~ c2 b1 bb1 ~ bb1@3 ~ bb1 ~", AH: "g2@5 ~ d2@2 c2@2 c3 ~ c2!3 ~",
  AI: "f2 ~ c3@6 e2 ~ c3@6", AJ: "eb2 ~ c3@6 d2@8, ~@2 b2 ~@13", AK: "g2 a2", AL: "bb2 a2", AM: "d3 c3 bb2 a2",
  AN: "g2 c2 a1 a2, ~@12 g2 ~@3", AO: "g2@4 g2@4 c2@3 ~ c2@3 ~", AP: "c2@3 ~ c2@2 ~ c2 c2@3 ~ db2 ~ db2@2",
  AQ: "d2@4 d2@2 ~ a2 bb2 ~ bb2@5 ~", AR: "g2@2 ~ d2 c2@3 bb1 a1@3 ~ a1@3 ~", AS: "bb1@3 a1 g1@2 a1 bb1",
  AT: "c2@9 ~@7", AU: "[f1@19 ~@13]/2",
})).s("gm_fretless_bass").gain(0.38).pan(0.4)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@14 A 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 AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV ~@4
>`.pickRestart({
  A: "[eb4,g4]@2 [eb4,g4]@2 [d4,f4,g4]@2 ~ bb3, bb3@3 ~@3 [d4,f4,g4]@2", // Eb G7
  B: "[db4,f4]@4 [db4,f4]@3 ~ [c4,e4]@4 [c4,e4,g4]@4, bb3 ~@3 bb3@3 ~", // Db C
  C: "[ab3,c4]@2 [ab3,c4]@2 f3 ~@2 f3, eb3@3 ~ [bb3,d4]@2 [bb3,d4]@2, ~@5 f3@2 ~", // Ab Bb
  D: "[c4,eb4]@4 [c4,eb4]@4 f3@2 ~@2 [bb3,d4]@2 f3 ~, g3 ~@3 [bb3,d4]@2 ~@2, ~@5 f3@2 ~", // Cm Bb
  E: "~ c4 ~@2 [bb3,eb4,g4]@2 ~ c4, [bb3,eb4,g4] [eb4,g4] ~ [eb4,g4], ~@3 c4@3 ~@2", // Eb
  F: "[ab3,c4,eb4,f4] [c4,d4,f4] [g3,bb3,d4,eb4] [g3,bb3,d4]", // Fm7 Dm7 Ebmaj7 Gm
  G: "[ab3,c4,eb4]@2 ~ f3 [c4,eb4,f4]@2 ~ ab3, ~@2 [ab3,c4,eb4]@2 ab3@3 ~, ~@3 [c4,eb4,f4]", // Ab F7 Ab F7
  H: "[g3,bb3,d4,eb4] [d4,eb4,g4] [c4,eb4,f4,ab4] [c4,eb4,f4], ~@2 bb3 ~@3 ab3 ~", // Ebmaj7 Fm7 F7
  I: "[g3,bb3,d4,eb4] [bb3,d4,eb4,g4] [ab3,c4,eb4,f4] [b3,d4,f4]", // Ebmaj7 Fm7 Bdim
  J: "g3 ~@2 g3 [c4,eb4]@2 ~ g3, [c4,eb4]!2 ~ [c4,eb4], ~ g3@2 ~ g3 ~@3", // Cm
  K: "[ab3,c4,eb4] [ab3,c4,d4] [g3,bb3,d4,f4] [g3,bb3,c4,eb4]", // Ab Dm7b5 Gm7 Cm7
  L: "[bb3,d4]@4 ~@2 f3@2 [bb3,c4,eb4]@4 [bb3,c4,eb4]@2 g3 ~, f3@3 ~ g3@3 ~, ~ [bb3,d4] ~@2", // Bb Cm7 Bb
  M: "~@4 eb4@5 [f3,d4] [g3,eb4] [f3,d4] [g3,eb4] [f3,d4]@3, [eb3,ab3,c4]@9 ~@7", // Dm Cm Dm Cm Dm Ab
  N: "[c4,eb4]@2 ~ g3 ~@3 g3, g3 ~ [c4,eb4]@2 [c4,eb4]@2 [c4,eb4]@2, ~@5 g3@2 ~", // Cm
  O: "~ f3 ~ f3 ~ g3 ~ g3, [ab3,c4,eb4] [ab3,c4,d4] [bb3,d4,f4] [bb3,eb4]", // Ab Dm7b5 Bb Eb5
  P: "[bb3,d4]@2 ~ f3 [g3,bb3,c4]@2 [g3,bb3,c4]@2, f3 ~ [bb3,d4]@2 eb3 ~@3", // Bb C7 Bb
  Q: "[c4,eb4]@4 ~@2 ab3@2 [c4,d4,f4]@4 [c4,d4,f4]@3 ~, ab3 ~ [c4,eb4]@2 ab3 ~@3", // Cm Dm7 Cm
  R: "~@3 ab3 [ab3,c4,d4,f4]@4, [c4,eb4]!2 ~@2, ~ ab3@2 ~@5", // Dm7b5 Cm
  S: "[eb4,g4]@2 ~ bb3!2 ~@2 bb3, bb3@3 ~@2 bb3@2 ~, ~ [eb4,g4] [d4,g4]!2", // Eb G5
  T: "bb3 ~@2 bb3 g3 ~@2 g3, [db4,f4,g4]@2 [db4,f4,g4]@2 ~ g3@2 ~, ~ bb3@2 ~ [bb3,c4,e4]@2 [bb3,c4,e4]@2", // Gm7b5 C7
  U: "eb3 ~ [ab3,c4]@2 f3!2 [bb3,d4]@2, [ab3,c4] ~ [bb3,d4] ~, ~ eb3@2 ~@3 f3 ~", V: "[c4,eb4]!2 [f3,bb3,d4]!2, g3 ~@7",
  W: "[bb3,eb4,g4]@2 [eb4,g4]@2 ~ bb3 ~ c4, ~@2 bb3 ~ [eb4,g4]@2 [bb3,eb4,g4]@2", // Eb
  X: "[ab3,c4,eb4] [ab3,c4,d4] [g3,bb3,eb4] [f3,bb3,d4]", // Ab Dm7b5 Eb Bb
  Y: "[c4,eb4]@2 ~ ab3 [ab3,c4,eb4]@2 [ab3,c4,d4]@2, ab3@3 ~@5, ~ [c4,eb4] ~@2", // Cm Ab Dm7b5 Cm
  Z: "[bb3,d4,eb4]@2 ~ g3 [ab3,c4,eb4]@2 [ab3,c4,eb4] f3, g3@3 ~ f3@3 ~, ~ [bb3,d4,eb4] ~@2", // Ebmaj7 Ab Ebmaj7
  AA: "[bb3,d4,eb4]@4 [bb3,d4,eb4]@3 ~ [ab3,c4,eb4]@4 [f3,ab3,c4,eb4]@2 [g3,b3,d4]@2, g3@7 ~ f3@2 ~@6", // Ebmaj7 Ab Fm7 G
  AB: "[bb3,eb4]@2 ~ g3 ~ c4 ~ c4, g3@3 ~ [g3,bb3,eb4]@2 [g3,bb3,eb4]@2, ~ [bb3,eb4] ~@2", // Eb5 Eb Eb5
  AC: "[ab3,c4,eb4]@2 [ab3,bb3]@2 [bb3,eb4]@2 ~ g3, ~@2 d4 ~ g3@3 ~, ~@3 [bb3,eb4]", // Ab Absus2 Eb5
  AD: "[f3,bb3,d4]@2 f3!2 [bb3,c4,eb4]@2 [bb3,c4,eb4]@2, ~@2 [bb3,d4]@2 g3@3 ~", // Bb Cm7 Bb
  AE: "[c4,eb4]@4 [c4,eb4]@3 ~ [ab3,c4,d4]@4 d4 d4@3, ab3@3 ~@3 [ab3,c4]@2", // Cm Dm7b5 Ab
  AF: "[bb3,eb4]@2 ~ g3 ~@3 c4, g3@3 ~ [g3,bb3,eb4]@2 [g3,bb3,eb4]@2, ~@2 [bb3,eb4]@2 ~ c4@2 ~", // Eb5 Eb Eb5
  AG: "[ab3,c4,eb4]@2 [ab3,c4,d4]@2 [bb3,d4]@2 ~ f3, ~@4 f3@3 ~, ~@3 [bb3,d4]", // Ab Dm7b5 Bb
  AH: "[bb3,d4]@4 ~@2 f3@2 [bb3,c4,eb4]@4 [bb3,c4,eb4]@3 ~, f3@6 ~@2 g3@7 ~, ~ [bb3,d4] ~@2", // Bb Cm7 Bb
  AI: "[c4,eb4]@4 [c4,eb4]@2 ab3 ~ [bb3,d4]@4 ~@2 ab3@2, ab3@3 ~ ab3@3 ~, ~@3 [bb3,d4]", // Cm Bb
  AJ: "[f3,bb3,d4] [f3,bb3,d4,f4] [g3,bb3,d4,f4] [g3,bb3,c4,e4]", // Bb Gm7 C7
  AK: "a3 ~@6 a3, [c4,f4]!2 [c4,e4]!2, ~ a3@2 a3@2 a3@2 ~", // F5 C
  AL: "~@4 [c4,eb4,g4]@2 a3 ~ a3@2 ~@4 a3@2, [c4,eb4,g4] ~ [c4,d4,gb4]!2, ~ a3@2 ~@2 a3@2 ~", // Cm D7
  AM: "[bb3,d4]@4 [bb3,d4]@2 f3 ~ [c4,e4]@4 [c4,e4]@2 g3 ~, f3@3 ~ g3@3 ~", // Bb C
  AN: "[d4,f4]@4 [d4,f4]@4 g3@2 ~@2 [c4,e4]@2 g3 ~, a3 ~ a3 ~ [c4,e4]@2 ~@2, ~@5 g3@2 ~", // Dm C
  AO: "[d4,f4]@2 ~ a3!2 ~@2 a3, a3 ~ [d4,f4]@2 [d4,f4]@2 [d4,f4]@2, ~@5 a3@2 ~", // Dm
  AP: "[f3,bb3,d4] [g3,bb3,c4] [a3,c4,f4] [g3,c4,e4]", // Bb C7 F C
  AQ: "[bb3,d4]@2 ~ f3 [bb3,d4]@2 [bb3,d4]@2, f3@3 ~ f3 ~@3, ~ [bb3,d4] ~@2", // Bb
  AR: "[c4,e4,f4]!2 [bb3,d4,f4] [g3,a3,db4,e4], a3 ~", AS: "[d4,f4,a4]!2 [d4,f4,a4,c5] [c4,d4,f4,a4], c4 ~",
  AT: "[bb3,d4,f4] e4 [a3,c4,f4] [g3,c4,e4]", AU: "[bb3,d4,f4]!3 [a3,c4,f4]", AV: "[d4,f4,bb4,c5] ~",
})).s("gm_epiano1").gain(0.33).pan(0.7)

// chords · epiano1 · "E.PIANO 1" · soft notes
const epiano1_soft = note(`<
  ~@14 A B C D E F ~ G ~ H ~@3 I ~ J K ~@3 L D M ~@3 N ~@2 O P ~@8 Q R ~ S ~@2 T ~@6
>`.pickRestart({
  A: "~@3 bb3!2 bb3@2 ~", B: "~@2 bb3@4 bb3 ~@7 bb3@2", C: "~@3 eb3 ~@4", D: "~ g3@2 g3 ~@4", E: "~ bb3 ~ bb3",
  F: "~ ab3 ~@2", G: "~@3 bb3 ~@3 ab3", H: "~@5 g3@2 ~", I: "~ g3@2 ~@5", J: "~ f3@2 ~@2 eb3@3",
  K: "~ ab3@2 ~@2 ab3@2 ab3", L: "~@3 eb3 ~@3 f3", M: "~@3 bb3@2 ~@3", N: "~@5 f3 ~@2", O: "~@7 g3", P: "~@6 ab3 ~@9",
  Q: "~@3 a3 ~@4", R: "~ a3@2 ~@5", S: "~@5 f3@3", T: "~ [bb3,c4] ~@2",
})).s("gm_epiano1").gain(0.16).pan(0.7)

// chords · flute · Bb Abmaj7 Bb Dm7
const flute = note(`<
  ~@30
  [~@5 bb3 [bb3,d4] [bb3,d4,f4]]
  [[ab3,c4,eb4,g4] [bb3,d4,f4]]
  ~@28
  [~@2 [bb3,d4,f4,d5] [c4,d4,f4,c5]]
  [[c4,d4,f4,c5]@9 ~@7]
  ~@4
>`).s("gm_flute").gain(0.2).pan(0.4)

// other · alto sax
const alto_sax = note("<~@40 A@3 B C D ~@20>".pickRestart({
  A: "[~@10 g4!2 bb4 ~ b4 c5@2 ~ g4 bb4 c5 eb5 ~ g4@4 ~ c4 eb4 f4 g4@3 gb4 [eb4,f4] f4 [f4,g4] eb4 c4 bb3 ab3 g3 ab3 bb3 d4 eb4 e4]/3", // Ebsus2 Fsus2
  B: "f4 g4 f4 d4 bb3 g3 ~@3 g4 f4 [ab3,c4] g3 f3 eb3@2", C: "~@4 bb3 eb4 g4 ab4 g4 eb4 d4 c4 f4 eb4 d4 b3",
  D: "c4 ~@7",
})).s("gm_alto_sax").gain(0.44)

// chords · flute
const flute_2 = note("<~@32 A B C@2 D@2 E ~@7 F@2 G H ~@2 I@2 J@2 K ~ L@2 M ~@5>".pickRestart({
  A: "bb3", B: "bb3@2 c4 bb3", C: "[bb3@9 ~@3 c4@2 g3 bb3@17]/2",
  D: "[~@10 g4 ~ eb4@2 c4 [c4,eb4]@6 [d4,f4]@3 [g3,eb4]@4 [f3,d4]@4, ~@3 bb3]/2", E: "[ab3,c4,eb4]@5 ~@3",
  F: "[~@8 [eb4,g4]@2 [d4,f4]@2 [c4,eb4]@2 [bb3,d4] [g3,bb3]@9 [ab3,c4]@8]/2", G: "[f3,ab3] [ab3,c4,eb4] [f3,bb3,d4]@2",
  H: "[f3,bb3,d4] [bb3,d4,f4]!2 [g3,c4,e4]", I: "[~@12 d4@2 a3 c4@9 ~@8]/2",
  J: "[~@10 a4@2 f4@2 d4 [d4,f4]@5 [c4,e4]@4 [a3,c4,f4]@4 [g3,c4,e4]@4]/2", K: "[bb3,d4,f4]@11 ~@5",
  L: "[~@10 a4@2 f4 d4@2 [d4,f4]@5 [c4,e4]@4 [a3,c4,f4]@4 [g3,c4,e4]@4]/2", M: "[bb3,d4,f4]@7 ~@9",
})).s("gm_flute").gain(0.2).pan(0.4)

// other · oboe
const oboe = note("<~@62 A B C@2>".pickRestart({
  A: "c5@4 d5 c5 bb4 d5", B: "c5 bb4 a4 c5 g4@4", C: "[f4@19 ~@13]/2",
})).s("gm_oboe").gain(0.25).pan(0.6)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@14 A B C D E F G H I J K L@2 J K M@3 A N O D P F G Q I J K L@2 J R@3 S T U V W X Y Z AA AB AC AD AE ~@4
>`.pickRestart({
  A: "eb4 d4, [bb3,g4]", B: "[db4,f4]@4 e4@2 [d4,f4] [e4,g4], bb3, g4@3 ~, ~ c4", C: "[ab3,eb4,g4] [bb3,d4,f4]",
  D: "[c4,eb4,g4] [bb3,d4,f4]", E: "[bb3,eb4,g4]@5 g5 eb5 c5", F: "eb5 f5 eb5 bb4", G: "c5@5 eb5 ab5 c6",
  H: "bb5@5 bb4 eb5 c5", I: "bb4@3 g4", J: "c5@5 d5 eb5 c5", K: "bb4@4 g5 f5 eb5 c5",
  L: "[bb4@4 c5@5 f4 g4 ab4 bb4 ab4 g4 d5]/2",
  M: "[bb4@8 c5@10 f4@2 ab4@2 c5@2 bb4@15 ~ [f5,ab5] [eb5,g5] [d5,f5] [c5,eb5] [bb4,d5] [ab4,c5] [g4,bb4] [f4,ab4]]/3", // Fm Eb Dm Cm Bb Ab Gm Fm
  N: "[db4,f4] [c4,e4], [bb3,g4]", O: "[c4,eb4,g4]@4 ~@2 [bb4,d5] [f4,bb4], ~ [bb3,d4], ~@4 f4@3 ~", P: "[bb3,eb4,g4]",
  Q: "bb5@5 g5 eb5 c5", R: "[bb4@10 g4@2 c5@5 f4 ab4 c5 bb4@4]/3", S: "~ g4 bb4 d5 c5@2 bb4 g4", T: "f4 e4, a4",
  U: "g4@4 ~ d4 [e4,g4] [gb4,a4], a4@5 ~@3, ~@2 gb4 ~", V: "[f4,a4]@4 [e4,g4]@2 e5 g4, ~@3 c5", W: "[f4,a4] [e4,g4]",
  X: "[f4,a4]", Y: "[f5,a5] g5 f5 c5", Z: "d5@5 f5 bb5 d6", AA: "c6@5 c5 a5 g5", AB: "f5@15 ~", AC: "f5 g5 f5 c5",
  AD: "d5@3 c5 bb4@2 f5@2", AE: "c6 ~",
})).s("gm_string_ensemble_1").gain(0.22).pan(0.4)

// other · harmonica
const harmonica = note("<A B C D@2 ~@7 E F G H I J K ~@32 L M N O ~@11>".pickRestart({
  A: "eb5 eb5@2 f5 g5@4", B: "c5 eb5!2 f5 g5@4", C: "c5 eb5!2 c5 ab5 g5 eb5 c5", D: "[bb4@15 ~]/2", E: "~@3 eb5",
  F: "bb4@6 f5 eb5", G: "bb4", H: "~@2 f5 g5 e5@2 f5 g5", I: "g5 f5", J: "eb5@2 d5 bb4", K: "g4@7 ~",
  L: "~@2 g5 a5 gb5@2 g5 a5", M: "a5 g5", N: "f5 e5", O: "d5@7 ~",
})).s("gm_harmonica").gain(0.33).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@14 A@6 B C D A@8 D A@6 E D ~ A@2 F G A@4 H A@6 I H A@2 J D ~@4>".pickRestart({
  A: "x ~@6 x!2 ~ x ~@3 x ~", B: "x ~@2 x ~@4", C: "x ~@6 x!2 ~@5 x ~", D: "x", E: "x ~@6 x!2 ~@7",
  F: "x ~ x ~@5 x ~ x ~@2 x ~@2", G: "x!2 ~@2 x!2 ~ x", H: "x!2", I: "x ~@2 x!2 ~@3", J: "x ~@3 x ~@2 x",
})).gain(0.38)

// drums · rim
const rim = s("rim").struct("<~@14 A@6 B ~@2 A@8 ~ A@6 B ~@6 A@4 ~ A@6 B ~@9>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<~@21 A B ~@8 C ~@7 D ~ A@2 E F ~@4 G ~@7 H A@2 I ~@5>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~ x ~@2 x!2 ~@5", C: "~@2 x!4 ~@2", D: "~@4 x ~@2 x", E: "~@4 x ~@2 x ~@4 x ~@3",
  F: "~@4 x ~@2 x ~ x ~@3 x ~@2", G: "~@2 x!3 ~@3", H: "~ x ~@2", I: "~@2 x!3 ~ x ~@5 x ~@3",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@13 A ~@8 A ~@8 B ~@6 C ~ D ~@8 B ~@6 C E ~@8>".pickRestart({
  A: "~@12 x!3 ~", B: "~@13 x!2 ~", C: "~@5 x!3", D: "~@9 x!7", E: "~@15 x",
})).gain(0.33)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@14 A B C D B E F G F H I J K L J@2 M ~ H I J K L J@2 M F ~@4 H C D C N O C@2 I P Q R ~@9
>`.pickRestart({
  A: "~ x!2 ~ x!3 ~", B: "x ~ x!3 ~ x!2", C: "x!8", D: "x!5 ~ x!2", E: "x ~ x!6", F: "x!3 ~@5", G: "~@2 x!6",
  H: "~ x!7", I: "x!7 ~", J: "x ~ x ~ x!4", K: "x!3 ~ x!3 ~", L: "x!5 ~ x ~", M: "x!3 ~ x!4", N: "x!4 ~@4",
  O: "~ x!6 ~", P: "x!3 ~ x ~ x!2", Q: "x ~ x!4 ~@2", R: "~ x ~@2",
})).gain(0.22)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
// … 38 more lines

More by Carpenters