Strudelify

Roodkapje

Pater Moeskroen

KeyG majorTempo120 bpm
0:00/0:00
// Roodkapje — Pater Moeskroen
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · drawbar organ · "ELEC ORGAN"
const drawbar_organ = note(`<
  A@16 B C@2 D E C@2 D F G H G I J@2 K H@2 L@3 M L N O P Q@3 R Q@3 R H S H S T@3 U H V@3 W X I S Y Z C@2 D E C@2 D F G H
  G I J@2 K H@2 L@3 M L N O P Q@3 R Q@3 R H S H S T@3 U H AA A@4 AB ~@3
>`.pickRestart({
  A: "e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3", B: "e2 ~@7 e3@3 ~ b2@3 ~", C: "d3@3 ~ a2@3 ~ e3@3 ~ b2@3 ~",
  D: "d3@3 ~ a2@3 ~ c3@3 ~ c3@3 ~", E: "c3@3 ~ c3@3 ~ e3@3 ~ b2@3 ~", F: "c3@3 ~ c3@3 ~ g2@3 ~ d3@3 ~",
  G: "g2@3 ~ d3@3 ~ d3@3 ~ a2@3 ~", H: "g2@3 ~ d3@3 ~ g2@3 ~ d3@3 ~", I: "g2@3 ~ d3@3 ~ f3@3 ~ c3@3 ~",
  J: "a#2@3 ~ f3@3 ~ f3@3 ~ c3@3 ~", K: "a#2@3 ~ f3@3 ~ c3@3 ~ d3@3 ~", L: "a2@3 ~ e3@3 ~ g2@3 ~ d3@3 ~",
  M: "f2@3 ~ c3@3 ~ e2@3 ~ g2@3 ~", N: "f3@3 ~ c3@3 ~ d3@3 ~ a2@3 ~", O: "g2@3 ~ d3@3 ~ c3@3 ~ g2@3 ~",
  P: "b2@3 ~ f#2@3 ~ b2@3 ~ b2 ~ b2 ~", Q: "e3@3 ~ b2@3 ~ d3@3 ~ a2@3 ~", R: "c3@3 ~ c3@3 ~ c3@3 ~ c3@3 ~",
  S: "d3@3 ~ a2@3 ~ g2@3 ~ d3@3 ~", T: "f3@3 ~ c3@3 ~ a#2@3 ~ f3@3 ~", U: "c3@3 ~ d3@3 ~ g2@3 ~ d3@3 ~",
  V: "g2@3 ~ d3@3 ~ a2@3 ~ e3@3 ~", W: "g2@3 ~ d3@3 ~ f2@3 ~ c3@3 ~", X: "e2@3 ~ g2@3 ~ a2@3 ~ e3@3 ~",
  Y: "c3@3 ~ g2@3 ~ b2@3 ~ f#2@3 ~", Z: "b2@3 ~ b2 ~ b2 ~ e3@3 ~ b2@3 ~", AA: "g2@3 ~ d3@3 ~ e2 ~@3 e2 ~@3",
  AB: "e2 ~@3 e2 ~@3 e2 ~@7",
})).s("gm_drawbar_organ").gain(0.8)

// other · bandoneon · "BANDNEON"
const bandoneon = note(`<
  ~@5 A B C D B C E B C F@2 G H I J K H I J L M N O P Q R S T U ~@8 V W X Y V W Z AA AB AC AB AD AE AF AG AH AI@2 ~@8 AJ
  AK AL K AM AN AO@2 M N O P Q R S T U ~@8 AP AQ AR Y AP AS AT AA AB AC AB AD AE AF AG AH AU@2 AV AW F@2 AX ~@3
>`.pickRestart({
  A: "~@8 b4@4 b4 ~@2 b4", B: "e4@6 ~@2 g4@2 ~@2 g4@3 a4, ~@11 e4@2 ~@3", C: "c5@4 b4@2 ~@2 e4@3 ~ e4 ~@2 d4",
  D: "e4@6 ~@2 b4@4 b4 ~@2 b4", E: "e4@5 ~@3 b4@4 b4 ~@2 b4", F: "e4@3 ~ e4 ~@2 d4 e4@3 ~ e4 ~@2 d4", G: "e4 ~@15",
  H: "d5 e5 f#5 g5 a5 ~ d5 d#5 [d5,e5] ~@7", I: "d5 e5 f#5 g5 a5 ~ d5 e5 [d#5,e5] ~@6 f#5",
  J: "[f5,f#5] ~@6 g5 g5@6 ~@2, ~@8 f#5 ~@7", K: "b5 a5 g5 f#5 e5 ~ d5 ~@9",
  L: "b5 a5 g5 f#5 g5 ~ a5 ~ d6 ~ d6 c6 d6@2 d#6@2", M: "d6@2 a#5@2 g5 ~ g5 ~ a5@3 a5 g5@2 a5@2",
  N: "a#5@4 g5@2 a#5@2 d6 ~ d6 c6 d6@2 d#6@2", O: "d6@2 a#5@2 g5 ~ g5 ~ a5@3 c6 a#5@2 a5@2",
  P: "g5@2 g5@2 a#5@2 d6@2 f6 ~@2 g6 f6@2 d#6@2", Q: "d6@2 a#5 ~ a#5@2 d6@2 f6 ~@2 g6 f6@2 d#6@2",
  R: "d6 d#6 d6 c6 a#5@2 d6@2 f6 ~@2 g6 f6@2 d#6@2", S: "d6@2 a#5@2 d6@2 d#6@2 d6 d#6 d6 c6 a#5@2 a5 ~",
  T: "[a5,a#5] g5@3 a5@4 a#5@8", U: "b5@15 ~", V: "~@8 d5 e5 f#5 g5 a5 ~ d5 d#5",
  W: "[d5,e5] ~@7 d5 e5 f#5 g5 a5 ~ d5 e5", X: "[d#5,e5] ~@6 f#5 [f5,f#5] ~@6 [g5,b5]",
  Y: "[g5,b5]@6 ~@2 b5 a5 g5 f#5 e5 ~ d5 ~, [f#5,a#5] ~@15", Z: "[d#5,e5] ~@6 [f#5,a5] [f5,f#5,g#5,a5] ~@6 [g5,b5]",
  AA: "[g5,b5]@6 ~@2 b5 a5 g5 f#5 g5 ~ a5 ~, [f#5,a#5] ~@15", AB: "d6 ~ d6 c6 d6@2 d#6@2 d6@2 a#5@2 g5 ~ g5 ~",
  AC: "a5@3 a5 g5@2 a5@2 a#5@4 g5@2 a#5@2", AD: "a5@3 c6 a#5@2 a5@2 g5@2 g5@2 a#5@2 d6@2",
  AE: "f6 ~@2 g6 f6@2 d#6@2 d6@2 a#5 ~ a#5@2 d6@2", AF: "f6 ~@2 g6 f6@2 d#6@2 d6 d#6 d6 c6 a#5@2 d6@2",
  AG: "f6 ~@2 g6 f6@2 d#6@2 d6@2 a#5@2 d6@2 d#6@2", AH: "d6 d#6 d6 c6 a#5@2 a5 ~ [a5,a#5] g5@3 a5@4",
  AI: "[a#5@8 b5@15 ~@9]/2", AJ: "[d5,f#5] [e5,g5] [f#5,a5] [g5,b5] [a5,c6] ~ [d5,a5] d#5 [d5,e5,a#5,b5] ~@7",
  AK: "[d5,f#5] [e5,g5] [f#5,a5] [g5,b5] [a5,c6] ~ [d5,a5] d#5 [d5,e5,a#5,b5] ~@6 [f#5,b5]", // D Em F#m G Am D5 E7 B5
  AL: "[f5,f#5,a5,a#5] ~@6 [g5,b5] [g5,b5]@6 ~@2, ~@8 [f#5,a#5] ~@7", // F#maj7 G F#
  AM: "[d5,f#5] [e5,g5] [f#5,a5] [g5,b5] [a5,c6] ~ [d5,a5] d#5 [d5,e5,a5,a#5,b5] ~@7", // D Em F#m G Am D5 Dsus2
  AN: "[d5,f#5] [e5,g5] [f#5,a5] [g5,b5] [a5,c6] ~ [d5,a5] d#5 [d5,e5,a5,a#5,b5] ~@6 [f#5,b5]", // D Em F#m G Am D5 Dsus2 B5
  AO: "[[f5,f#5,a5,a#5] ~@6 [g5,b5] [g5,b5]@6 ~@2 b5 a5 g5 ~ g5 ~ a5 ~ d6 ~ d6 c6 d6@2 d#6@2, ~@2 f#5@3 ~@3, ~@8 a#5 ~@23]/2", // F#maj7 G
  AP: "~@8 [d5,f#5] [e5,g5] [f#5,a5] [g5,b5] [a5,c6] ~ [d5,a5] d#5", // D Em F#m G Am D5
  AQ: "[d5,e5,a#5,b5] ~@7 [d5,f#5] [e5,g5] [f#5,a5] [g5,b5] [a5,c6] ~ [d5,a5] d#5", // E7 D Em F#m G Am D5
  AR: "[d5,e5,a#5,b5] ~@6 [f#5,b5] [f5,f#5,a5,a#5] ~@6 [g5,b5]", // E7 B5 F#maj7 G
  AS: "[d5,e5,a5,a#5,b5] ~@7 [d5,f#5] [e5,g5] [f#5,a5] [g5,b5] [a5,c6] ~ [d5,a5] d#5", // Dsus2 D Em F#m G Am D5
  AT: "[d5,e5,a5,a#5,b5] ~@6 [f#5,b5] [f5,f#5,a5,a#5] ~@6 [g5,b5]", AU: "[a#5@8 b5@17 ~@7]/2",
  AV: "b4@4 b4 ~@2 b4 e4@6 ~@2", AW: "g4@2 ~@2 g4@3 a4 c5@4 b4@2 ~@2, ~@3 e4@2 ~@11", AX: "e4@3 ~ e4 ~@2 d4 e4 ~@7",
})).s("gm_bandoneon").gain(0.56)

// bass · piano · "A.PIANO"
const bass = note(`<
  [e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3]!16
  [e2 ~@15]
  ~@93
  [~@8 e2 ~@3 e2 ~@3]
  [e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3]!4
  [e2 ~@3 e2 ~@3 e2 ~@7]
  ~@3
>`).s("gm_piano").gain(0.64)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@10 A B C D B C E F@2 G H F@2 G I J K J L M@2 N O P Q@3 R Q S T U V@3 W V@3 W K X K X Y@3 Z AA AB AC@2 AD AE AD AF AG
  AH F@2 G H F@2 G I J K J L M@2 N O P Q@3 R Q S T U V@3 W V@3 W K X K X Y@3 Z AA AI ~ AJ AK AL AM ~@3
>`.pickRestart({
  A: "~@8 b4@4 b4 ~@2 b4", B: "e4@6 ~@2 g4@2 ~@2 g4@3 a4, ~@11 e4@2 ~@3", C: "c5@4 b4@2 ~@2 e4@3 ~ e4 ~@2 d4",
  D: "e4@5 ~@3 b4@4 b4 ~@2 b4", E: "e4 ~@9 [g4,b4,e5] ~@3 [g4,b4,e5] ~",
  F: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~", // D Em
  G: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~", // D C
  H: "~@2 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~", // C Em
  I: "~@2 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~", // C Gm
  J: "~@2 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // Gm D
  K: "~@2 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~", // Gm
  L: "~@2 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~", // Gm F
  M: "~@2 [a#4,d5,f5] ~@3 [a#4,d5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~", // A# F
  N: "~@2 [a#4,d5,f5] ~@3 [a#4,d5,f5] ~@3 [a#4,d5,f#5] ~@3 [a#4,d5,f#5] ~", // A# A#aug
  O: "~@2 [a#4,d5,g5] ~@3 [a#4,d5,g5] ~@3 [a#4,d5,g5] ~@3 [a#4,d5,g5] ~", // Gm
  P: "~@2 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~", // G
  Q: "~@2 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~", // Am G
  R: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // F E
  S: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // F D
  T: "~@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [c5,e5,g5] ~@3 [c5,e5,g5] ~", // G C
  U: "~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~", // B
  V: "~@2 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // Em D
  W: "~@2 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~", // C
  X: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~", // D Gm
  Y: "~@2 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a#4,d5,f5] ~@3 [a#4,d5,f5] ~", // F A#
  Z: "~@2 [a#4,d5,f#5] ~@3 [a#4,d5,f#5] ~@3 [a#4,d5,g5] ~@3 [a#4,d5,g5] ~", // A#aug Gm
  AA: "~@2 [a#4,d5,g5] ~@3 [a#4,d5,g5] ~@3 [b4,d5,g5] ~@3 [b4,d5,g5] ~", // Gm G
  AB: "~@2 [b4,d5,g5] ~@3 [b4,d5,g5] ~@3 [a4,c5,e5] ~@3 [a4,c5,e5] ~", // G Am
  AC: "~@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [a4,c5,e5] ~@3 [a4,c5,e5] ~", // G Am
  AD: "~@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~", // G F
  AE: "~@2 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [a4,c5,e5] ~@3 [a4,c5,e5] ~", // E Am
  AF: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~", // D G
  AG: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~", // C B
  AH: "~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~", AI: "~@2 [b4,d5,g5] ~@3 [b4,d5,g5] ~@9",
  AJ: "e4@3 ~ e4 ~@2 d4 e4@5 ~@3", AK: "b4@4 b4 ~@2 b4 e4@6 ~@2", AL: "g4@2 ~@2 g4@3 a4 c5@4 b4@2 ~@2, ~@3 e4@2 ~@11",
  AM: "e4@3 ~ e4 ~@2 d4 e4 ~@7",
})).s("gm_piano").gain(0.41)

// chords · brass section · "BRASS"
const brass_section = note(`<
  ~@10 A B C A B D E ~@2 F@2 ~@2 G@8 H@3 ~@7 I ~@3 J@2 ~@2 K L@4 M@6 ~@6 N@2 ~@2 F@2 ~@2 O@8 H@3 ~@7 I ~@3 J@2 ~@2 K L@4
  P@6 ~ Q R S T ~@3
>`.pickRestart({
  A: "b4@4 b4 ~@2 b4 e4@6 ~@2", B: "g4@2 ~@2 g4@3 a4 c5@4 b4@2 ~@2, ~@3 e4@2 ~@11", C: "e4@3 ~ e4 ~@2 d4 e4@5 ~@3",
  D: "e4@3 ~ e4 ~@2 d4 e4@3 ~ e4 ~@2 d4", E: "e4 ~@15", F: "[~@16 [g4,a#4]@9 ~@7, ~@3 c4 ~@4, ~@13 e4@13 ~@6]/2",
  G: "[~@12 c4@4 ~ a#4@7 [g4,a#4]@16 [f#4,a4]@8 [g4,a#4]@8 g4@16 [f#4,a4]@8 g4@8 [a4,c5]@8 [a#4,d5]@8 [a4,c5]@8 [a#4,d5]@8 [a4,c5]@8, ~@3 e4@3 ~@16 f4@10, ~@16 g4@7 ~ d5@32 [a#4,d5]@32 ~@40]/8", // Gm F#m Gm F#m Am A# Am A# …
  H: "[~ f#4 ~@2 b4@2, d5, a#4@2 ~, ~ g4@2]/3", I: "~@3 a5, b4, ~ d#5@3, ~ f#5",
  J: "[~@8 [g4,a#4]@9 ~@15, ~ c4 ~@6, ~@5 e4@13 ~@14]/2", K: "~@4 c4@4 ~ a#4@7, ~ e4@3, ~@8 g4@7 ~",
  L: "[[g4,a#4]@2 [f#4,a4] [g4,a#4], d5]/2", // Gm F#m Gm
  M: "[[a4,c5] [a#4,d5] [a4,c5] [a#4,d5] [a4,c5] ~ f#4 ~@2 b4@2 ~, f4@6 ~ g4@4 ~, ~@5 d5@6 ~, ~@5 a#4@4 ~@3]/6", // Am A# Am A# Am
  N: "[~@5 a5 ~@2, ~ b4@2 ~, ~@3 d#5@3 ~@2, ~@2 f#5 ~]/2",
  O: "[~@12 c4@4 ~ a#4@7 [g4,a#4]@16 [f#4,a4]@8 [g4,a#4]@8 [g4,a#4]@16 [f#4,a4]@8 [g4,a#4]@8 [a4,c5]@8 [a#4,d5]@8 [a4,c5]@8 [a#4,d5]@8 [a4,c5]@8, ~@3 e4@3 ~@16 f4@10, ~@16 g4@7 ~ d5@32 d5@32 ~@40]/8", // Gm F#m Gm F#m Gm Am A# Am …
  P: "[[a4,c5]@8 [a#4,d5]@8 [a4,c5]@8 [a#4,d5]@8 [a4,c5]@8 ~@8 f#4@8 ~@16 b4@17 ~@7, f4@48 ~@8 g4@33 ~@7, ~@40 d5@49 ~@7, ~@5 a#4@4 ~@3]/6", // Am A# Am A# Am
  Q: "~@8 b4@4 b4 ~@2 b4", R: "e4@6 ~@2 g4@2 ~@2 g4@3 a4, ~@11 e4@2 ~@3", S: "c5@4 b4@2 ~@2 e4@3 ~ e4 ~@2 d4",
  T: "e4@3 ~ e4 ~@2 d4 e4 ~@7",
})).s("gm_brass_section").gain(0.08)

// chords · contrabass
const contrabass = note(`<
  ~@9 A B C A B D@2 E ~@7 F G H I J K L M N O ~@15 P Q R S T U V W X Y@2 ~@15 F G H I Z K L M N O ~@15 P Q R S AA U V W
  X AB@2 AC AD AE D AF ~@3
>`.pickRestart({
  A: "b4@4 b4 ~@2 b4 e4@6 ~@2", B: "g4@2 ~@2 g4@3 a4 c5@4 b4@2 ~@2, ~@3 e4@2 ~@11", C: "e4@3 ~ e4 ~@2 d4 e4@5 ~@3",
  D: "e4@3 ~ e4 ~@2 d4 e4@3 ~ e4 ~@2 d4", E: "e4 ~@15", F: "~@4 d4@2 g4@2 a#4 ~ a#4!3 ~ c5@2",
  G: "a#4@2 g4@2 d4 ~ d4 ~ f#4@4 e4@2 f#4@2", H: "g4@4 d4@2 g4@2 a#4 ~ a#4 ~ a#4@2 c5@2",
  I: "a#4@2 g4@2 d4 ~ d4 ~ f#4@3 f#4 e4@2 f#4@2", J: "g4 a#4 g4 d5 [d5,f5]@2 [d5,f5] [c5,d#5], ~ a#4 ~@2",
  K: "[a#4,d5]@4 g4@2 [a#4,d5]@2 [d5,f5]@3 ~ [d5,f5]@2 [c5,d#5]@2, ~@4 a#4 ~@11", // A# Dm Cm
  L: "[a#4,d5]@2 g4 [a#4,d5] [d5,f5]@2 [d5,f5] [c5,d#5], ~@4 a#4 ~@11", // A# Dm Cm
  M: "[a#4,d5]@4 [a#4,d5]@2 [c5,d#5]@2 [a#4,d5] ~ [a#4,d5] [a4,c5] a#4@2 a4@2", N: "g4 a4 a#4@2", O: "b4@3 ~",
  P: "~@6 d4 g4", Q: "a#4 ~ a#4!3 ~ c5@2 a#4@2 g4@2 d4 ~ d4 ~", R: "f#4@2 e4 f#4 g4@2 d4 g4",
  S: "a#4 ~ a#4 ~ a#4@2 c5@2 a#4@2 g4@2 d4 ~ d4 ~", T: "f#4@3 f#4 e4@2 f#4@2 g4@2 a#4@2 [g4,a#4]@2 [a#4,d5]@2",
  U: "[d5,f5]@2 [d5,f5] [c5,d#5] [a#4,d5]@2 g4 [a#4,d5], ~@12 a#4 ~@3", // Dm Cm A#
  V: "[d5,f5]@3 ~ [d5,f5]@2 [c5,d#5]@2 [a#4,d5]@4 g4@2 [a#4,d5]@2, ~@12 a#4 ~@3", // Dm Cm A#
  W: "[d5,f5]@2 [d5,f5] [c5,d#5] [a#4,d5]@2 [a#4,d5] [c5,d#5]", X: "[a#4,d5] ~ [a#4,d5] [a4,c5] a#4@2 a4@2 g4@4 a4@4",
  Y: "[a#4@2 b4@3 ~@3]/2", Z: "g4 a#4 [g4,a#4] [a#4,d5] f5@2 f5 [c5,d#5], ~@4 d5@3 ~",
  AA: "f#4@3 f#4 e4@2 f#4@2 g4@2 a#4@2 g4@2 d5@2, ~@3 a#4", AB: "[a#4@2 b4@5 ~]/2", AC: "~@8 b4@4 b4 ~@2 b4",
  AD: "e4@6 ~@2 g4@2 ~@2 g4@3 a4, ~@11 e4@2 ~@3", AE: "c5@4 b4@2 ~@2 e4@3 ~ e4 ~@2 d4", AF: "e4@3 ~ e4 ~@2 d4 e4 ~@7",
})).s("gm_contrabass").gain(0.48)

// chords · recorder
const recorder = note(`<
  ~@9 A B C D B C E F G@2 H I G@2 H J K L M N O P Q R S T@3 U T V W X Y@3 Z Y@3 AA AB AC AB AD AE AF AG AH AI AJ AK@2 AL
  AM AL AN AO AP G@2 H I G@2 H J K L M N O P Q R S T@3 U T V W X Y@3 Z Y@3 AA AB AC AB AD AE AF AG AH AI AQ ~ AR AS E AT
  ~@3
>`.pickRestart({
  A: "~@8 b4@4 b4 ~@2 b4", B: "e4@6 ~@2 g4@2 ~@2 g4@3 a4, ~@11 e4@2 ~@3", C: "c5@4 b4@2 ~@2 e4@3 ~ e4 ~@2 d4",
  D: "e4@5 ~@3 b4@4 b4 ~@2 b4", E: "e4@3 ~ e4 ~@2 d4 e4@3 ~ e4 ~@2 d4", F: "e4 ~@9 [b4,e5,g5] ~@3 [b4,e5,g5] ~",
  G: "~@2 [a4,d5,f#5] ~@3 [a4,d5,f#5] ~@3 [b4,e5,g5] ~@3 [b4,e5,g5] ~", // D Em
  H: "~@2 [a4,d5,f#5] ~@3 [a4,d5,f#5] ~@3 [c5,e5,g5] ~@3 [c5,e5,g5] ~", // D C
  I: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [b4,e5,g5] ~@3 [b4,e5,g5] ~", // C Em
  J: "~@2 [c5,e5,g5] ~ g3@2 [c5,e5,g5] ~ d4 ~ d4 c4 d4@2 d#4@2, ~@3 a#3 ~@4", // C
  K: "d4@2 a#3@2 g3 ~ g3 ~ a3@3 c4 a#3@2 a3@2", L: "g3@4 g3@2 a#3@2 d4 ~ d4 c4 d4@2 d#4@2",
  M: "d4@2 a#3@2 g3 ~ g3 ~ a3@3 f#3 e3@2 f#3@2", N: "g3 ~ d4 ~ g3 ~ a#3 ~ d4 ~@2 d#4 d4 ~ c4 ~",
  O: "a#3 ~ g3 ~ g3 ~ a#3 ~ d4 ~@2 d#4 d4 ~ c4 ~", P: "a#3 ~@3 g3 ~ a#3 ~ d4 ~@2 d#4 d4 ~ c4 ~",
  Q: "a#3 ~ g3 ~ g3 ~ g3 ~ a3 ~@2 a3 g3 ~ a3 ~", R: "a#3!4 c4!4 d4!8", S: "g4!16",
  T: "~@2 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~", // Am G
  U: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // F E
  V: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~", // F D
  W: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~", // G C
  X: "~@2 [d#4,f#4,b4] ~@3 [d#4,f#4,b4] ~@3 [d#4,f#4,b4] ~@3 [d#4,f#4,b4] ~", // B
  Y: "~@2 [b4,e5,g5] ~@3 [b4,e5,g5] ~@3 [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // Em D
  Z: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [c5,e5,g5] ~", // C
  AA: "~@2 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [c5,e5,g5] ~ g3@2 [c5,e5,g5] ~, ~@7 a#3", // C
  AB: "d4 ~ d4 c4 d4@2 d#4@2 d4@2 a#3@2 g3 ~ g3 ~", AC: "a3@3 c4 a#3@2 a3@2 g3@4 g3@2 a#3@2",
  AD: "a3@3 f#3 e3@2 f#3@2 g3 ~ d4 ~ g3 ~ a#3 ~", AE: "d4 ~@2 d#4 d4 ~ c4 ~ a#3 ~ g3 ~ g3 ~ a#3 ~",
  AF: "d4 ~@2 d#4 d4 ~ c4 ~ a#3 ~@3 g3 ~ a#3 ~", AG: "d4 ~@2 d#4 d4 ~ c4 ~ a#3 ~ g3 ~ g3 ~ g3 ~",
  AH: "a3 ~@2 a3 g3 ~ a3 ~ a#3!4 c4!4", AI: "d4!8 g4!8", AJ: "g4!8 ~@2 [e4,a4,c5] ~@3 [e4,a4,c5] ~",
  AK: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~", // G Am
  AL: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~", // G F
  AM: "~@2 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~", // E Am
  AN: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~", // D G
  AO: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [d#4,f#4,b4] ~@3 [d#4,f#4,b4] ~", // C B
  AP: "~@2 [d#4,f#4,b4] ~@3 [d#4,f#4,b4] ~@3 [b4,e5,g5] ~@3 [b4,e5,g5] ~", AQ: "g4!8 ~@8",
  AR: "b4@4 b4 ~@2 b4 e4@6 ~@2", AS: "g4@2 ~@2 g4@3 a4 c5@4 b4@2 ~@2, ~@3 e4@2 ~@11", AT: "e4@3 ~ e4 ~@2 d4 e4 ~@7",
})).s("gm_recorder").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  A@16 B A@3 C@3 A@14 D A@3 D A@3 D@3 A@15 C A@3 C A@3 C@3 A@14 D A@3 D A@3 D@3 A@11 E ~@8
>`.pickRestart({
  A: "x!4", B: "x ~ x!2", C: "x ~ x!3 ~ x ~", D: "x ~ x ~ x ~ x!2", E: "x!2 ~@2",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<~@16 A B@7 C B@8 D B@15 D B@9 C B@15 C B@8 D B@15 D B@9 E ~@8>".pickRestart({
  A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "x!8 ~@2 x ~@3 x ~", D: "~@2 x ~@3 x ~ x!8", E: "~ x!3 ~@4",
})).gain(0.38)
// … 25 more lines