Strudelify

Out in the Streets

The Dinky Toys

KeyG majorTempo122 bpm
0:00/0:00
// Out in the Streets — The Dinky Toys
// 122 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · string ensemble 1 · "Track-2"
const string_ensemble_1 = note(`<
  ~@5 A@4 B@2 C@2 D@6 E@2 F@2 G@2 H I J@2 K L M@4 N@2 O@2 P@2 Q@3 R@3 S@3 I T U V@2 W@6 X@3 ~@7 Y@4 Z@5 ~@7 AA@6 AB@2
  AC@2 AD@3
>`.pickRestart({
  A: "[d4@8 ~@8 c4@8 [f#4,a4]@7 ~ [b3,g4]@7 ~ b3@7 ~ c4@7 ~ [d4,f#4,a4]@8, g4@23 ~@41, b3@15 ~@49, ~ e4@2 d4@2 [e4,g4]@2 ~]/4", // F#m Em D Em
  B: "[[b3,d4]@8 b3@7 ~ [c4,g4]@8 [d4,f#4,a4]@7 ~, g4 ~, ~ e4@2 ~]/2", // Bm C5 D
  C: "[[b3,d4]@8 [b3,e4]@8 [c4,e4]@8 [d4,f#4,a4]@7 ~, g4@23 ~@9]/2", // Bm E5 C D
  D: "[d4@8 ~@8 c4@7 ~ [a3,f#4]@7 ~ b3@8 b3@8 c4@6 ~@2 [a3,f#4]@7 ~ [b3,g4]@7 ~ b3@7 ~ c4@7 ~ [d4,f#4,a4]@8, g4@25 ~@7 g4@24 ~@40, b3@5 ~@27, ~ e4@2 d4@2 e4@2 d4@2 [e4,g4]@2 ~]/6", // D Em D Em
  E: "[d4@4 ~@4 c4@4 [d4,f#4,a4]@3 ~, g4@23 ~@9, b3@15 ~@17, ~@8 e4@15 ~@9]/2", // D
  F: "[[b3,d4]@8 [b3,e4]@7 ~ [c4,e4]@8 [a3,d4,f#4]@8, g4@3 ~]/2", // Bm E5 C D
  G: "[[b3,d4,g4]@8 b3@7 ~ c4@7 ~ [d4,f#4,a4]@7 ~, ~ [e4,g4]@2 ~]/2", H: "[b3,d4,g4]@8 [b3,e4,g4]@7 ~",
  I: "[c4,e4,g4] [d4,f#4,a4]", J: "[[b3,d4,g4]@8 [b3,e4]@8 [c4,e4]@8 [d4,f#4,a4]@7 ~, ~@8 g4@15 ~@9]/2",
  K: "[b3,d4] [b3,e4], g4", L: "[c4,e4,g4]@8 [d4,f#4,a4]@7 ~",
  M: "[[b3,d4]@8 [b3,e4]@7 ~ [c4,e4]@7 ~ [a3,f#4]@7 ~ [b3,g4]@7 ~ b3@8 c4@7 ~ [a3,d4,f#4]@8, g4@3 d4@2 [e4,g4]@2 ~, ~@32 a3 ~@31]/4", // Bm E5 C D Em D Em
  N: "[[b3,d4,g4]@8 b3@7 ~ c4@7 ~ [d4,f#4,a4]@7 ~, a3 ~@7 [e4,g4]@16 ~@8]/2", // G D Em
  O: "[[b3,d4,g4]@8 b3@7 ~ c4@7 ~ [a3,d4,f#4]@7 ~, ~@8 g4@17 ~@7, ~@8 e4@15 ~@9]/2", // G D
  P: "[[b3,d4]@8 b3@7 ~ c4@7 ~ [d4,f#4,a4]@7 ~, g4@23 ~@9, ~ e4@2 ~]/2", // Bm D
  Q: "[[b3,d4]@8 [b3,e4]@8 [c4,e4]@8 [f#4,a4]@7 ~ [b3,g4]@7 ~ [b3,e4,g4]@8, g4@23 ~ d4@16 ~@8]/3", // Bm E5 C F#m Em
  R: "[[c4,e4,g4]@8 [f#4,a4]@8 b3@7 ~ b3@7 ~ c4@7 ~ [a3,d4,f#4]@6 ~@2, ~@8 d4@16 e4@15 ~@9, ~@2 g4@3 ~]/3", // C F#m D
  S: "[[b3,d4]@8 b3@7 ~ c4@7 ~ [f#4,a4]@7 ~ [b3,g4]@7 ~ [b3,e4,g4]@8, g4@23 ~@25, ~ e4@2 d4@2 ~]/3", // Bm F#m Em
  T: "[b3,d4,g4] [b3,e4,g4]", U: "[c4,e4,g4] [d4,a4], ~@4 f#4@3 ~",
  V: "[[b3,d4]@8 b3@7 ~ [c4,g4]@8 [d4,f#4,a4]@6 ~@2, g4 ~, ~@8 e4@15 ~@9]/2", // Bm C5 D
  W: "[d4@8 ~@8 c4@6 ~@2 [a3,f#4]@7 ~ [b3,g4]@7 ~ b3@7 ~ c4@7 ~ [a3,f#4]@7 ~ [b3,g4]@7 ~ b3@7 ~ c4@7 ~ [d4,f#4,a4]@7 ~, g4 ~@3, b3@16 ~@16 a3 ~@55 c4 ~@7, ~@8 e4@15 ~ d4@16 [e4,g4]@16 d4@16 [e4,g4]@16 ~@8]/6", // D Em D Em D Em
  X: "[[b3,d4]@8 b3@7 ~ c4@7 ~ [a3,f#4]@7 ~ [b3,g4]@2 ~@14, g4 ~, ~@8 e4@15 ~ d4@11 ~@13]/3", // Bm D Em
  Y: "[d4@8 ~@8 c4@8 [f#4,a4]@7 ~ [b3,g4]@7 ~ b3@8 c4@7 ~ [d4,a4]@8, g4@23 ~@33 f#4@6 ~@2, b3 ~@3, ~ e4@2 d4@2 [e4,g4]@2 ~]/4", // F#m Em D5 Em
  Z: "[[b3,d4]@8 b3@7 ~ c4@7 ~ [a3,f#4]@7 ~@17 c4@7 ~ [f#4,a4]@7 ~ [b3,g4]@2 ~@14, g4@24 ~@8 g4@23 ~@25, ~@4 e4@8 d4@8 e4@8 d4@5 ~@7, ~@32 b3@15 ~@33]/5", // Bm D F#m Em
  AA: "[d4@8 ~@8 c4@8 [f#4,a4]@7 ~ b3@7 ~ b3@7 ~ c4@8 [f#4,a4]@7 ~ [b3,g4]@7 ~ [b3,e4]@8 [c4,e4]@7 ~ [a3,d4,f#4]@7 ~, g4@23 ~@9 g4@23 ~@17 g4@16 ~@8, b3@5 ~@27, ~@8 e4@16 d4@16 e4@15 ~ d4@16 ~@24]/6", // F#m Em E5 C D
  AB: "[[d4,g4]@8 e4@8 [c4,e4]@8 [d4,f#4,a4]@7 ~, b3@15 ~@17, ~@8 g4@15 ~@9]/2", // G5 C D
  AC: "[[b3,d4,g4]@8 b3@7 ~ c4@8 [d4,f#4,a4]@7 ~, ~@8 [e4,g4]@15 ~@9]/2", // G D Em
  AD: "[[b3,d4,g4]@8 [b3,e4]@8 [c4,e4]@8 [f#4,a4]@7 ~ [b3,g4]@2 ~@14, ~@4 g4@8 d4@5 ~@7]/3", // G E5 C F#m Em
})).s("gm_string_ensemble_1").gain(0.22)

// bass · electric bass finger · "Track-3"
const bass = note(`<
  ~@5 A B A C D E A F A G A F A G A F A H A G A I A G J K L M L M L M N M A E A O A P A Q A G A O A G J R L S T S N S L
  U V ~@2 W V ~@2 X L S Y S L Z AA S AB ~@5 AC AD AE Z AF S AF AG AF Z AF AG AH AI AJ
>`.pickRestart({
  A: "g2 ~ g2 ~ e2 ~@3", B: "~@2 c3 ~ g2 ~ c3 ~ d3@3 ~ d3@2 ~@2", C: "~@2 c3 ~ g2 ~ c3 ~ d3@3 ~ d3@2 a2 ~",
  D: "g2@2 g3 ~ g2@2 ~@2 e2@2 ~@6", E: "~@2 c3 ~ g2 ~ c3 ~ d3@3 ~ d3 ~ d3 ~",
  F: "~@2 c3 ~ g2 ~ c3 ~ d3@2 ~@2 d3@2 a2 ~", G: "~@2 c3 ~ g2 ~ c3 ~ d3@2 ~@2 d3@2 ~@2",
  H: "~@2 c3 ~ g2 ~ c3 ~ d3 ~ d3 ~ d3 ~ d3 ~", I: "~@2 c3 ~ g2 ~ c3 ~ d3 ~ f#3 ~ d3@2 ~@2", J: "g2@5 ~@3 e3@5 ~@3",
  K: "c3@5 ~@3 d3@5 ~@3", L: "g2@3 ~ b2@2 d3 ~@3 e3@2 g3@2 e3 ~", M: "~@2 c3@2 e3@2 c3 ~ d3 ~ d3 ~ f#3@2 a3 ~",
  N: "g2@2 ~@2 b2@2 d3 ~@3 e3@2 g3@2 e3 ~", O: "~@2 c3 ~ g2 ~ c3 ~ d3@2 f#3 ~ d3@2 ~@2",
  P: "~@2 c3 ~ g2 ~ c3 ~ d3@2 ~@2 d3 ~ d3 ~", Q: "~@2 c3@2 g2 ~ c3@2 d3 ~ d3 ~ d3 ~ a2 ~", R: "c3@5 ~@3 d3@4 ~@4",
  S: "~@2 c3@2 e3@2 c3 ~ d3 ~ d3@2 f#3@2 a3 ~", T: "g2@3 ~ b2@2 d3 ~@3 e3@2 g3@2 e3 ~, a2 ~@15",
  U: "~@2 c3@2 e3@2 b2 ~ d3 ~ d3 ~ f#3@2 d3 ~", V: "g2 ~@7", W: "~@14 d3 ~",
  X: "~@2 g2@2 b2@2 g2@2 d3 ~ d3 ~ d3@2 a2 ~", Y: "g2 ~ g2@2 b2@2 d3 ~@3 e3@2 g3@2 e3 ~",
  Z: "~@2 c3@2 e3@2 c3 ~ d3 ~ d3@2 f#3@2 d3 ~", AA: "g2 ~ g2 ~ b2@2 d3 ~@3 e3@2 g3@2 e3 ~", AB: "g2 ~@15", AC: "~@7 g2",
  AD: "d3@3 ~ d3@2 a2@2 d3 ~ d3 ~ a2@2 g#2@2", AE: "g2 ~ g2@2 b2@2 d3@2 e3 ~ e3 ~ g3@2 e3 ~",
  AF: "g2 ~ g2@2 b2@2 d3 ~ e3 ~ e3@2 g3@2 e3 ~", AG: "~@2 c3@2 e3@2 c3@2 d3 ~ d3@2 f#3@2 a3 ~", AH: "g2@3 ~@5 e3@4 ~@4",
  AI: "c3@4 ~@4 d3 ~ d3@2 d3 ~ d3 ~", AJ: "g2@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · percussive organ · "Track-4"
const percussive_organ = note(`<
  ~ A B A C A C A C A C A D E F E G E G E G E H E G I G E J K L M N M O M N P Q E R E R I R E S T F U F U V W X M N M Y
  M N Z AA AB AC AD AE AF AG AF AH ~@8 AI ~@7 AJ C AJ C AJ C AK C AK C AL AM AI
>`.pickRestart({
  A: "b5@2 e5 ~@3 b5@2 e5 ~@7", B: "e5@2 g5 ~ b5 ~ c6@3 ~ b5 ~ a5@2 g5 ~", C: "e5@2 g5 ~ b5 ~ c6@3 ~ b5@2 a5@2 g5 ~",
  D: "e5@2 g5 ~ b5 ~ c6@3 ~ a5@2 g5@2 a5 ~", E: "~@2 [b4,d5,g5] ~ [b4,d5,g5]@3 ~@3 [b4,e5,g5] ~ [b4,e5,g5]@3 ~",
  F: "~@2 [c5,e5,g5] ~ [c5,e5,g5]@2 ~@4 [d5,f#5,a5] ~ [d5,f#5,a5]@2 ~@2", // C D
  G: "~@2 [c5,e5,g5] ~ [c5,e5,g5]@3 ~@3 [d5,f#5,a5] ~ [d5,f#5,a5]@2 ~@2", // C D
  H: "~@2 [c5,e5,g5] ~ [c5,e5,g5]@2 ~@4 [d5,f#5,a5] ~ [e5,g5,b5]@2 [d5,f#5,a5] ~", // C D Em D
  I: "~@2 [b4,d5,g5] ~ [b4,d5,g5]@3 ~@3 [b4,e5,g5] ~ [b4,e5,g5]@2 ~@2", // G Em
  J: "~@2 [c5,e5,g5] ~ [c5,e5,g5]@3 ~@3 [d5,f#5,a5] ~ [g3,a3,a5] [b3,c4,d4,e4] [f4,g4,a4] [b4,c5,d5], ~@6 [d5,f#5] ~", // C D Gsus2 Cmaj7 F Bm D
  K: "[b4,d5]@7 ~ [b4,e5]@7 ~, g5@15 ~, [e5,f5] ~@15", L: "[c5,e5,g5]@4 [d5,f#5,a5]@3 ~",
  M: "~@2 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,e5,g5] ~@3 [b4,e5,g5] ~", // G Em
  N: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [d5,f#5,a5] ~@3 [d5,f#5,a5] ~", // C D
  O: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [d5,f#5,a5] ~ [e5,g5,b5]@2 [d5,f#5,a5] ~", // C D Em D
  P: "~@2 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,e5,g5]!3 ~ [b4,e5,g5] ~", // G Em
  Q: "~@2 [e5,g5,b5] ~ [b5,e6]@2 [e5,g5,b5] ~ [e5,g5,b5]@2 ~@2 [d5,f#5]@2 ~@2, ~@4 g5 ~@7 a5 ~@3", // Em E5 Em D
  R: "~@2 [c5,e5,g5] ~ [c5,e5,g5]@3 ~@3 [d5,f#5,a5] ~ [d5,f#5,a5]@3 ~", // C D
  S: "~@2 [e5,g5,b5]@3 ~ [e5,g5,c6] ~@2 e5@2 ~ [d5,f#5,a5]@3 ~, ~@8 [g5,b5]@3 ~@5", // Em C D G
  T: "b4 ~ [b4,d5,g5] ~ [b4,d5,g5]@3 ~@3 [b4,e5,g5] ~ [b4,e5,g5]@2 ~@2", // G Em
  U: "~@2 [b4,d5,g5] ~ [b4,d5,g5]@2 ~@4 [b4,e5,g5] ~ [b4,e5,g5]@2 ~@2", // G Em
  V: "~@2 [c5,e5,g5] ~ [c5,e5,g5]@3 ~@3 [d5,f#5,a5] ~ [d5,f#5]@2 ~@2, ~@12 a5 ~@3", W: "[b4,d5,g5]@7 ~ [b4,e5,g5]@7 ~",
  X: "[c5,e5,g5]@7 ~ [d5,f#5,a5]@4 ~@4", // C D
  Y: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [d5,f#5,a5] ~ [e5,g5,b5] ~ [d5,f#5,a5] ~", // C D Em D
  Z: "~@2 [d5,g5,b5] ~@3 [d5,g5,b5] ~@3 [e5,g5,b5]!2 ~@2 [e5,g5,b5] ~", // G Em
  AA: "~@2 [e5,g5,b5] ~ [g5,b5,e6] ~ [e5,g5,b5] ~ [f#5,b5,d6]@3 ~ [e5,a5,c6]@3 ~", // Em Bm Am
  AB: "[d5,g5,b5]@2 ~@2 f#4@3 ~ e4@3 ~ d4@3 ~, [g3,g4] ~@3", AC: "c4@3 ~ b3@3 ~ d4 ~ d4 ~ e4 ~ f#4 ~",
  AD: "g4@3 ~ f#4@2 ~@2 e4@3 ~ d4@3 ~", AE: "c4@3 ~ b3@2 ~@2 d4 ~ d4 ~ e4 ~ f#4 ~",
  AF: "g4@3 ~ f#4@2 ~@2 e4@2 ~@2 d4@2 ~@2", AG: "c4@2 ~@2 b3@2 ~@2 d4 ~ d4 ~ e4 ~ f#4 ~", AH: "c4@3 ~ b3@2 ~@2 d4 ~@7",
  AI: "[b4,d5,g5] ~@7", AJ: "b5@2 e5 ~@3 g5@2 e5 ~@7", AK: "g5@2 e5 ~@3 g5@2 e5 ~@7", AL: "[b4,d5,g5]@7 ~ [b4,e5,g5]@8",
  AM: "[c5,e5,g5]@7 ~ [d5,f#5,a5]@6 ~@2", // C D
})).s("gm_percussive_organ").gain(0.56)

// chords · rock organ · "Track-5"
const rock_organ = note("<~@70 A B@3 C D E F G ~@6 H I J K J K J K J K J K ~@2 L>".pickRestart({
  A: "~@10 d5@2 e5 ~ d5 ~",
  B: "[g5@2 a5@2 g5@2 [a#5,b5] b5@3 d6@2 e6@2 ~@6 f#6@2 e6@2 d6@4 e6@4 d6@2 e6@2 d6@2 [a#5,g6] ~ g6@2 g5@2 a5@2 e5@2, ~@14 g6@22 ~@3 a5@3 ~@2 g6 ~@3]/3", // Bmaj7 D#
  C: "[a5,b5,d6] g5 [g5,a5,b5,d6] ~ [a5,b5,d6]@2 g5 ~ [g5,b5,d6]@2 ~@2 [g5,b5,d6]@2 ~@2, ~@4 g5 ~@3 a#5 ~@7", // Bm7 G Bm7 G
  D: "d5 e5 g5 ~ g5@2 d5 e5 g5 ~ g5@2 d5 e5 g5 ~", E: "g5@2 g5@2 d5 e5 g5@2 [b5,d6]@4 a5@2 g5 ~",
  F: "[g5,b5,d6]!2 [g5,c6,e6] ~ [g5,b5,d6]@2 [e5,a5,c6] ~ [d5,g5,b5]@4 [c5,e5,a5] ~ [b4,d5,g5] ~", // G C G Am G Am G
  G: "[c5,e5,a5]@4 [c5,e5,a5] ~ [c5,e5,g5] ~ [a#5,b5] b5@3 [c5,e5,a5]@2 [b4,d5,g5] ~, ~@2 [d5,g5] ~", // Am C Bmaj7 Am G G5
  H: "~@12 g3 [a3,b3] [c4,d4] [e4,f4,g4]", // Asus2 Csus2 Em
  I: "[a4,b4,c5,d5,g5] ~ [d5,g5,b5]@2 [e5,a5,c6]@2 [g5,c6,e6]@2 [f#5,b5,d6]@2 [e5,a5,c6]@2 [g5,c6,e6]@2 [e5,g5,c6]@2", // G Am C Bm Am C
  J: "~@2 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,e5,g5] ~@3 [b4,e5,g5] ~", // G Em
  K: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [d5,f#5,a5] ~@3 [d5,f#5,a5] ~", // C D
  L: "g5 [e5,f5] [c5,d5] [f4,g4,a4,b4] [c4,d4,e4] g3 ~@10", // Fmaj7 Csus2 G7 C
})).s("gm_rock_organ").gain(0.56)

// chords · trumpet · "Track-6"
const trumpet = note("<~@4 A@3 B@4 C D ~@14 E ~ F G ~@7 H ~@14 I J ~@7 H ~@7 K ~@15 L ~@10 I M N>".pickRestart({
  A: "[~@6 [g3,g4] ~ [b3,b4]@2 [d4,d5] ~ [e4,e5] ~ [d4,d5]@22 ~@2 [g3,g4] ~ [a3,a4]@2 [g3,g4] ~ [a3,a4]@2 [g3,g4] ~]/3", // G B D E D G A G …
  B: "[[b3,b4]@3 ~ [g3,g4]@2 [d3,d4]@12 ~@4 [g3,g4] ~ [b3,b4]@2 [d4,d5] ~ [e4,e5] ~ [d4,d5]@20 ~@4 [g3,b3,g4,b4] ~ [a3,a4]@2 [g3,b3,g4,b4] ~ [b3,d4,b4,d5]@3 ~, ~@56 [c4,c5] ~@7]/4", // B G D G B D E D …
  C: "[d4,g4,b4]@13 ~@3", D: "~@2 [g4,c5,e5] ~@3 [g4,c5,e5] ~ [a4,d5,f#5]@2 ~@2 [g4,c5]@2 [g4,d5] ~, ~@12 e5 ~ b4@2",
  E: "~@10 [c#1,c#2] ~@5", F: "[g4,b4,d5,g5]@8 [g4,b4,e5,g5]@7 ~",
  G: "[g4,c5,e5,g5]@7 ~ [a4,d5,f#5]@2 ~@2 [g4,c5,e5] ~ [a4,d5]@2, ~@14 f#4 ~", // C D C D5
  H: "~@2 [d4,d5] ~ [e4,e5]@2 [g4,g5] ~@3 [g4,g5] ~ [e4,e5]@2 [d4,d5] ~", I: "[g4,b4,d5,g5]@7 ~ [g4,b4,e5,g5]@7 ~",
  J: "[g4,c5,e5,g5]@6 ~@2 [a4,d5,f#5]@3 ~ [g4,c5,e5] ~ [f#4,d5] ~, ~@7 a4", // C D C D
  K: "~@2 [d4,d5] ~ [d4,d5]@2 [b3,b4] ~ [d4,d5] ~ [d4,d5] ~ [e4,e5]@2 [d4,d5] ~", // D B D E D
  L: "[d4,d5] [e4,e5] [g4,g5] ~ [g4,g5] ~ [d4,d5] [e4,e5] [g4,g5] ~ [e4,e5] ~ [d4,d5] [e4,e5] [d4,d5] ~", // D E G D E G E D …
  M: "[g4,c5,e5,g5]@7 ~ [a4,d5,f#5]@6 ~@2", N: "[g4,b4,g5] ~@7, d5 ~@15",
})).s("gm_trumpet").gain(0.72)

// chords · tenor sax
const tenor_sax = note("<~@31 A B A C A D E ~@17 A C A C A D E ~@25 F B A G H I J B J K ~@3>".pickRestart({
  A: "~@4 [b3,b4]@3 ~ [g3,g4]@3 ~ [e3,e4]@2 [g3,g4] ~", // B G E G
  B: "~@2 [g3,g4]@2 ~@2 [g3,g4] ~ [b3,d4,b4,d5]@3 ~ [a3,c4,a4,c5]@3 ~", // G Bm Am
  C: "~@2 [g3,g4]@2 ~@2 [g3,g4] ~ [b3,d4,b4,d5]@3 ~ [a3,c4,a4,c5]@4", // G Bm Am
  D: "~@2 [g3,g4]@2 ~@2 [g3,g4] ~ [b3,d4,b4,d5]@3 ~ [a3,c4,a4,c5]@2 ~@2", E: "[g3,b3,g4,b4]@3 ~",
  F: "~@4 [b3,b4]@3 ~ [g3,g4]@3 ~ [e3,e4]@2 [g3,g4] ~, ~@4 [a#3,a#4] ~@11", // B G E G A#
  G: "~@2 [g3,g4] ~@3 [g3,g4] ~ [b3,d4,b4,d5]@3 ~ [a3,c4,a4,c5]@3 ~", // G Bm Am
  H: "~@4 [b3,b4]@3 ~ [g3,g4]@4 [e3,e4]@2 [g3,g4] ~", // B G E G
  I: "~@2 [g3,g4] ~@3 [g3,g4] ~@2 [b3,b4]@2 ~ [a3,c4,a4,c5]@2 ~@2, ~@8 [d4,d5]@3 ~@5", J: "[g3,b3,g4,b4] ~",
  K: "~@2 [g3,g4] ~@3 [g3,g4] ~ [b3,d4,b4,d5]@3 ~@2 [c4,c5]@2 ~, ~@6 [a3,a4] ~", // G Bm C A
})).s("gm_tenor_sax").gain(0.72)

// other · trombone
const trombone = note("<~@21 [~@3 g3@4 ~] [e3@2 g3 ~ a3@3 ~@2 g3@2 ~@5] ~@77>").s("gm_trombone").gain(0.72)

// other · synth bass 1 · "Track-8"
const synth_bass_1 = note("<~@99 [~@12 g4 ~@3]>").s("gm_lead_8_bass_lead").gain(0.56)

// drums · kick
const kick = s("bd").struct("<~ A@29 B A@23 B A@24 C@8 A@11 B C>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A@3 B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B C D@7 A B A B A B A B A B A B E
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@2 x ~", C: "~@2 x!2 ~@2 x ~", D: "~@2 x!2 ~@2 x!2", E: "~@8 x!3 ~@5",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  [~@4 x!4 ~@4 x!2 ~@2]
  [~ x ~ x]!21
  [~@4 x ~@7 x!2 ~@2]
  [~ x ~ x]!56
  ~@7
  [~@10 x ~ x ~ x!2]
  [~ x ~ x]!12
  ~
>`).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C@3 B D C@2 B D C@2 B D B D B D B@2 C@2 B D B D B D B D B D B D B D B D B D B D B E B D B D B D B D B D B D B
  D B D B D B D B D B E B D B D B D B D F@3 G F@4 B D B D B D B D B D B C ~
>`.pickRestart({
  A: "~@2 x ~ x!2 ~@2", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", C: "x!8", D: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", E: "x!7 ~",
  F: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3", G: "x ~ x!3 ~ x ~ x ~@3 x ~@3",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@22 A ~@23 A ~@23 A ~@15 A ~@12 B>".pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<A ~@45 B ~@23 B ~@8 B@3 C B@4 ~@13>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@7 x", C: "~@5 x ~ x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@21 B ~@23 C ~@23 C ~@15 D ~@11 E ~>".pickRestart({
  A: "~@4 x!2 ~ x", B: "~@5 x ~@2", C: "~@12 x!2 ~@2", D: "~@3 x ~@2 x ~", E: "~@7 x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@9 A ~@5 B@2 A ~@7 A ~@7 A ~@5 B@2 A ~@7 A ~@7 A ~@6 C A ~@7 A ~@9 B@2 A
>`.pickRestart({
  A: "x", B: "x!2", C: "~@3 x",
// … 33 more lines