Strudelify
Hava Naquila cover art

Hava Naquila

Hava Naquila

Party Animals

KeyD majorTempo150 bpm
0:00/0:00
// Hava Naquila — Party Animals
// 150.1 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 5 "trum 3" trombone (copy of ch 4 "brass" brass section)
// note: Full arrangement: all 176 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150.1/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass · "bass"
const bass = note(`<
  ~@2 A@8 B@8 C@8 D@3 E@7 F@8 G H I J K J L M N J O P Q R S Q@2 T U V W@2 X@2 Y Z H@2 AA AB AC AB AC AD AE AB AF@2 AG AF
  AG AH AI AJ@3 AK AL@7 AM AN@7 AO@8 AP AQ@3 AR@6 AS@2 AT AU@6 AV AW AX@3 AY AZ BA@2 BB BC BD BE@5 BF@2 BG@3 BH BI@4
  BJ@3 BK BL ~@4 BM BN BO BP@2 BQ ~
>`.pickRestart({
  A: "[d2@21 ~@2 a2@23 ~ d2@22 ~@2 a2@22 ~ d#2@22 ~@2 a#2@21 ~@3 d2@21 ~@2 d2@21 ~@3 d2@3]/8",
  B: "[~@21 a2@23 ~ d2@21 ~@2 a2@22 ~@2 d#2@22 ~@2 a#2@21 ~@2 d2@21 ~@3 d2@21 ~@3 d2@5]/8",
  C: "[~@18 a2@21 ~@3 c2@23 ~ g2@23 ~ c2@23 g2@21 ~ d2@20 ~@2 a2@22 d2@13]/8", D: "[~@9 a2@18 ~@3 c2@21 ~ g2@19 ~]/3",
  E: "[~ c2@20 ~ g2@21 ~ d2@19 ~@2 a2@19 ~@3 g2@18 ~@3 g2@19 ~@3 g2@6 ~@4 g2@7 ~@3 g2@7 ~@3 g2@6 ~@2]/7",
  F: "[~ g2@16 ~ d2@16 ~ g2@16 d2@16 d2@8 ~@9 a2@15 ~ d2@14 ~@2 a2@15 ~@2 d2@15 ~ d2@14 ~ d2@13 ~ d3@3 ~ c3@3 a#2@3 a2@3 ~]/8",
  G: "g2@3 ~@3 d2@5 ~ g2@4 ~@2 d2@5 ~", H: "g2@2 ~ d2@2 ~ g2@2 ~ d2@2 ~", I: "d2@4 ~@2 a1@4 ~@2 d2@5 ~ a1@4 ~@2",
  J: "d2@5 ~ a1@5 ~ d2@5 ~ a1@5 ~", K: "d#2@5 ~ a#1@4 ~@2 d#2@5 ~ a#1@5 ~", L: "d2@5 ~ a1@4 d2 ~ d2@3 ~@3 a1@5 ~",
  M: "d2@5 ~ a1@4 d2 ~ d2@5 ~ a1@5 ~", N: "d#2@5 ~ a#1@3 ~ d#2 ~ d#2@5 ~ a#1@2 ~ d#2@2 ~",
  O: "d2 ~@2 d2@4 d2@3 ~@2 d2 ~@2 a1@2 ~ d2@4 ~@2", P: "d#2@5 ~ c2@4 ~@2 d#2@4 ~@2 c2@4 ~@2",
  Q: "c2@5 ~ g2@5 ~ c2@5 ~ g2@5 ~", R: "d2@5 ~ a2@5 ~ d2@4 ~@2 a2@5 ~", S: "d2@4 ~@2 a2@5 ~ d2@5 ~ a2@4 d2 ~",
  T: "d2@5 ~ a2@5 ~ d2@5 ~ a2@3 ~@3", U: "g1@7 ~@5 g1@9 ~@3", V: "g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~",
  W: "g2@5 ~ a#2@4 a2 ~ g2@5 ~ a#2@5 ~", X: "d2@6 a2@4 f#2 ~ d2@5 ~ a2@5 ~", Y: "a2@5 ~ d3@5 ~ a2@5 ~ d3@4 ~@2",
  Z: "d2@4 ~@2 d2@5 ~ d3@2 ~ c3@2 ~ a#2@2 ~ a2@2 ~", AA: "~ g2@6 ~@17", AB: "~ d2@22 ~", AC: "~ a2@23",
  AD: "~ d#2@22 ~", AE: "~ a#2@21 ~@2", AF: "~@2 d2@21 ~", AG: "~ a2@11", AH: "~ d#2@11", AI: "~ a#2@7", AJ: "~ d2@7",
  AK: "~ a2@7", AL: "[~@3 c2@23 ~ g2@23 ~ c2@23 ~@2 g2@23 ~ d2@22 ~@2 a2@23 d2@21]/7", AM: "~ a2@10 ~",
  AN: "[~ c2@22 g2@19 ~@3 c2@20 ~ g2@20 ~ d2@20 ~ a2@19 ~@2 g2@17 ~@4 g2@18]/7",
  AO: "[~@2 g2@6 ~@3 g2@6 ~@3 g2@6 ~@2 g2@6 ~@2 g2@15 ~@2 d2@15 ~ g2@16 d2@15 ~ d2@8 ~@8 a2@14 ~@2 d2@15 a2@14 ~@2 d2@14 ~ d2@12 ~]/8",
  AP: "~ d2@13 d3@3 ~ c3@3 a#2@3",
  AQ: "[~ a2@3 g2@3 ~@3 d2@5 ~ g2@4 ~@2 d2@5 ~ g2@4 ~@2 d2@4 ~@2 g2@4 ~@2 d2@4 ~@2 d2@4 ~@2 a1@4 ~@2 d2@5 ~ a1@2]/3",
  AR: "[~@4 d2@5 ~ a1@5 ~ d2@5 ~ a1@5 ~ d#2@5 ~ a#1@4 ~@2 d#2@5 ~ a#1@5 ~ d2@5 ~ a1@5 ~ d2@5 ~ a1@5 ~ d2@5 ~ a1@4 d2 ~ d2@3 ~@3 a1@5 ~ d2@5 ~ a1@4 d2 ~ d2@5 ~ a1@5 ~ d#2@5 ~ a#1@3 ~ d#2 ~ d#2@5 ~ a#1@2]/6",
  AS: "[~ d#2@2 ~ d2@5 ~ a1@5 d2@5 ~ a1@5 ~ d2 ~@2 d2@5 d2@3 ~ d2 ~@2 a1@2 ~ d2@3]/2",
  AT: "~@3 d#2@5 ~ c2@4 ~@2 d#2@4 ~@2 c2@3",
  AU: "[~@3 c2@5 ~ g2@5 ~ c2@5 ~ g2@5 ~ d2@5 ~ a2@5 ~ d2@4 ~@2 a2@5 ~ d2@5 ~ a2@5 ~ d2@4 ~@2 a2@5 d2 c2@5 ~ g2@5 ~ c2@5 ~ g2@5 ~ c2@5 ~ g2@5 ~ c2@5 ~ g2@5 ~ d2@5 ~ a2@5 ~ d2@5 ~ a2@3]/6",
  AV: "~@3 g1@7 ~@5 g1@9", AW: "~@3 g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@3",
  AX: "[~@3 g2@5 ~ a#2@4 a2 ~ g2@5 ~ a#2@5 ~ g2@5 ~ a#2@4 a2 ~ g2@5 ~ a#2@5 d2@6 a2@5 f#2 d2@5 ~ a2@4]/3",
  AY: "~@2 d2@6 a2@5 f#2 d2@5 ~ a2@4", AZ: "~@2 a2@5 ~ d3@5 ~ a2@5 ~ d3@4",
  BA: "[~@2 d2@4 ~@2 d2@5 ~ d3@2 ~ c3@2 ~ a#2@2 ~ a2@2 ~ g2@4 ~@2 d2@5 ~ g2@5 ~ d2@4]/2",
  BB: "~@2 g2@4 ~@2 d2@5 ~ g2@5 ~ d2@4", BC: "~@2 d2@3 ~@2 a1@4 ~@2 d2@5 ~ a1@4 ~", BD: "~ d2@5 ~ a1@5 d2@5 ~ a1@5 ~",
  BE: "[d#2@5 ~ a#1@4 ~@2 d#2@5 a#1@4 ~@2 d2@5 ~ a1@5 ~ d2@4 ~ a1@5 ~ d2@5 ~ a1@4 d2 ~ d2@3 ~@3 a1@5 d2@5 ~ a1@3 ~@2 d2 d2@5 ~ a1@5 ~ d#2@5 a#1@3 ~@2 d#2 d#2@5 ~ a#1@2 ~ d#2@2 ~ d2@4]/5",
  BF: "[~ a1@5 ~ d2@5 ~ a1@4 ~@2 d2 ~@2 d2@7 d2!2 ~@2 a1@2 ~ d2@4 ~@2 d#2@5 ~]/2",
  BG: "[~ c2@4 d#2@4 ~@2 c2@4 ~ c2@5 ~ g2@5 ~ c2@4 ~@2 g2@5 d2@5 ~ a2@5 ~ d2@4 ~ a2@5 ~ d2@4 ~@2 a2@4]/3",
  BH: "~ d2@5 ~ a2@4 d2 ~ c2@5 g2@5 ~",
  BI: "[c2@5 ~ g2@5 c2@5 ~ g2@5 ~ c2@5 g2@5 ~ d2@5 ~ a2@5 d2@5 ~ a2@3 ~@3 g1@6 ~@5 g1@8 ~@3 g2@3 ~@3 g2@4 ~@2 g2@4 ~]/4",
  BJ: "[g2@4 ~@2 g2@4 ~ a#2@4 ~ a2 g2@5 ~ a#2@4 ~ g2@5 ~ a#2@4 a2 g2@5 ~ a#2@5 d2@6 a2@5 f#2 d2@5 ~ a2@4]/3",
  BK: "~ d2@5 ~ a2@4 f#2 d2@5 ~ a2@4 ~@2", BL: "a2@5 d3@5 ~@14", BM: "~@3 d2@5 ~@2 d2@6 ~ d3@2 ~@2 c3@3",
  BN: "a#2@2 ~@2 a2@2 ~ g2@5 ~@2 d2@5 ~ g2@4", BO: "~@2 d2@4 ~@2 g2@5 d2@4 ~@2 g2@4 ~",
  BP: "[d2@4 ~ g2@4 ~@2 d2@4 ~ g2@4 ~@2 d2@4 ~ g2@4 ~ d2@4 ~@2 g2@4 ~ d2@4 ~]/2", BQ: "g2@3 ~@8 d2@3 ~@8 g2@2",
})).s("gm_fretless_bass").gain(0.43)

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note(`<
  ~@2 A B C@2 D@2 E@5 F G@2 H@2 I J K L M N O P Q R S T U H V W@2 X Y Z AA AB AC AD AE AF AG@2 AH AI AJ AI@3 AJ AI@2 AK
  AL AM AN AK AL AN AO AP AQ@2 AI@2 AR AS AG@2 ~ AT AU AV@2 AW@2 AX@6 AY@2 AZ@2 BA AZ BB BC BD BE BF@2 AZ AX T BG BH BI
  BJ@2 BK BL BM BN BO BP AD AC BQ H BR BS BT BU BV BW BX@2 BV BW BX BY BZ CA CB CC BZ CD CE CF CG CH CI CJ CK CL@2 CM CN
  CO CP CQ BX CR CS CT CU CV CW CX CY CZ DA DB DC DD DE DF CO DG ~@4 DH DI DJ DK DL DM ~
>`.pickRestart({
  A: "~@11 [a3,d4,f#4]@4 ~@9", B: "~@11 [a3,d4,f#4]@3 ~@10", C: "~@11 [a3,c4,f#4]@3 ~@10",
  D: "~@10 [g3,a#3,d#4]@3 ~@11", E: "~@9 [a3,c4,f#4]@2 ~@13", F: "~@4 [a3,c4,f#4] ~@7", G: "~@8 [g3,a#3,d#4]@3 ~@13",
  H: "~@7 [a3,c4,f#4]@2 ~@15", I: "~@7 [a3,c4,f#4]@3 ~@14", J: "~@3 [a3,c4,f#4] ~@8", K: "~@3 [g3,a#3,d4] ~@8",
  L: "~@3 [g3,c4,d#4] ~@8", M: "~@5 [g3,c4]@3 ~@16", N: "~@2 [g3,c4,d#4] ~@9", O: "~ [a3,c4,f#4] ~@10",
  P: "[a3,c4,f#4] ~@10 [a3,c4,f#4]", Q: "~@19 [a3,c4,f#4]@2 ~@3", R: "~@17 [g3,c4,d#4]@2 ~@5", S: "~@7 [g3,c4,d#4] ~@4",
  T: "~@6 [g3,c4,d#4] ~@5", U: "~@9 [g3,c4,d#4]@2 ~@13", V: "~@2 [a3,c4,f#4] ~@9",
  W: "[~@2 [g3,a#3,d4,g4]@4 ~@17 [a#3,d4,g4]@4 ~@17 [d4,g4]@4, ~@22 a#3 ~]/2", // Gm G5
  X: "~@6 [a#3,d4,g4]@4 ~@6 [a#3,d4,g4]@3 ~@5", Y: "~@5 [a#3,d4,g4]@2 ~@5",
  Z: "~@2 [a#3,d4,g4]@2 ~@15 [a#3,d4,g4]@2 ~@3", AA: "~@11 [a#3,d4,g4]@2 ~@11",
  AB: "~@4 [c4,d4,f#4]@3 ~@13 [a3,c4,f#4]@2 ~@2", AC: "~@6 [a3,c4,f#4] ~@5",
  AD: "~@5 [a3,c4,f#4]@2 ~@14 [a3,c4,f#4]@2 ~", AE: "~@13 [a3,c4,f#4]@2 ~@9", AF: "~@3 [a3,c4,f#4]@2 ~@19",
  AG: "~@3 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@2", // Gm
  AH: "~@3 [a3,c4,d4] ~@5 [a3,c4,d4] ~@5 [a3,c4,d4] ~@5 [a3,c4,d4] ~@2", // D7
  AI: "~@3 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@2", // F#dim
  AJ: "~@3 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@2", // D#
  AK: "~@3 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@2 [g3,c4,d#4]@4 ~@2", // Cm
  AL: "~@3 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@2", // Cm
  AM: "~@3 [a3,c4,d4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@2 [a3,c4,f#4]@3 ~@3", // D7 F#dim
  AN: "~@3 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@2 [a3,c4,f#4]@4 ~@2", // F#dim
  AO: "~@3 [g3,a#3,d4,g4]@2 ~@4 [g3,a#3,d4,g4]@2 ~", AP: "~@2 [g3,a#3,d4,g4] ~ [g3,a#3,d4,g4] ~ [g3,a#3,d4,g4] ~",
  AQ: "~@3 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@2", // Gm
  AR: "~@6 [a3,c4,f#4]@5 ~@7 [a3,c4,f#4]@5 ~", AS: "~@6 [a3,c4,f#4]@4 ~@2 d4@2 ~ c4@3 a#3@2 ~ a3@2 ~",
  AT: "~@13 [a3,d4,f#4]@4 ~@7", AU: "~@13 [a3,d4,f#4]@3 ~@8", AV: "~@13 [a3,c4,f#4]@3 ~@8",
  AW: "~@13 [g3,a#3,d#4]@3 ~@8", AX: "~@7 [a3,c4,f#4] ~@4", AY: "~@14 [g3,a#3,d#4]@3 ~@7", AZ: "~@15 [a3,c4,f#4]@2 ~@7",
  BA: "~@5 [a3,c4,f#4] ~@2", BB: "~@5 [g3,a#3,d4] ~@2", BC: "~@15 [g3,c4,d#4]@2 ~@7", BD: "~@16 [g3,c4]@3 ~@5",
  BE: "~@8 [g3,c4,d#4] ~@3", BF: "~@8 [a3,c4,f#4] ~@3", BG: "~@5 [g3,c4,d#4] ~@6", BH: "~@4 [g3,c4,d#4] ~@7",
  BI: "~@5 [g3,c4,d#4]@2 ~@17", BJ: "[~@2 [a3,c4,f#4]@2 ~@19 [a3,c4,f#4]@2 ~@19 [g3,a#3,d4,g4]@4]/2",
  BK: "~@4 [a#3,d4,g4] ~", BL: "~@11 [a#3,d4,g4]@3 ~@6 [a#3,d4,g4]@3 ~", BM: "~@4 [a#3,d4,g4]@3 ~@14 [a#3,d4,g4]@3",
  BN: "~@13 [a#3,d4,g4]@2 ~@9", BO: "~@5 [a#3,d4,g4]@2 ~@14 [a#3,d4,g4]@2 ~", BP: "~@13 [c4,d4,f#4]@3 ~@8",
  BQ: "~@3 [a3,c4,f#4]@2 ~@13 [a3,c4,f#4]@2 ~@4", BR: "~@7 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@4",
  BS: "~ [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@4", // Gm
  BT: "~ [g3,a#3,d4] ~@5 [a3,c4,d4] ~@5 [a3,c4,d4] ~@5 [a3,c4,d4] ~@4", // Gm D7
  BU: "~ [a3,c4,d4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@4", // D7 F#dim
  BV: "~ [a3,c4,f#4] ~@5 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@4", // F#dim D#
  BW: "~ [g3,a#3,d#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@4", // D# F#dim
  BX: "~ [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@4", // F#dim
  BY: "[a3,c4,f#4] ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@2 [g3,c4,d#4]@3", // F#dim Cm
  BZ: "~@6 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@5", // Cm
  CA: "[g3,c4,d#4] ~@5 [a3,c4,d4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@2 [a3,c4,f#4]@3", // Cm D7 F#dim
  CB: "~@6 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@2 [a3,c4,f#4]@3", // F#dim
  CC: "~@6 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@2 [g3,c4,d#4]@3", // Cm
  CD: "[g3,c4,d#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@2 [a3,c4,f#4]@3", // Cm F#dim
  CE: "~@9 [g3,a#3,d4,g4]@4 ~@8 [g3,a#3,d4,g4]@3", CF: "~@3 [g3,a#3,d4,g4] ~ [g3,a#3,d4,g4] ~ [g3,a#3,d4,g4]",
  CG: "~@6 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5", // Gm
  CH: "[g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5", // Gm
  CI: "[g3,a#3,d4,g4] ~@4 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4]", // Gm F#dim
  CJ: "~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4]", CK: "~@8 [a3,c4,f#4]@5 ~@7 [a3,c4,f#4]@4",
  CL: "[~@8 [a3,c4,f#4]@4 ~@2 d4@2 ~ c4@3 a#3@2 ~ a3@2 ~@4 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4]]/2", // F#dim Gm
  CM: "~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4]", // Gm
  CN: "~@5 [a3,c4,d4] ~@4 [a3,c4,d4] ~@5 [a3,c4,d4] ~@5 [a3,c4,d4] ~", // D7
  CO: "~@4 [a3,c4,f#4] ~@4 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@2", // F#dim
  CP: "~@3 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@4 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@3", // D#
  CQ: "~@2 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@4 [a3,c4,f#4] ~@4", // F#dim
  CR: "[a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@4 [g3,a#3,d#4]", // F#dim D#
  CS: "~@5 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@5 [g3,a#3,d#4] ~@5 [a3,c4,f#4]", // D# F#dim
  CT: "~@4 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~", // F#dim
  CU: "~@4 [a3,c4,f#4] ~@4 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [g3,c4,d#4] ~@2", // F#dim Cm
  CV: "~@2 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@2 [g3,c4,d#4]@4 ~@4 [g3,c4,d#4] ~@4", // Cm
  CW: "~ [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@4 [g3,c4,d#4] ~@5 [a3,c4,d4,f#4] ~@5", // Cm D7
  CX: "[a3,c4,f#4] ~@4 [a3,c4,f#4] ~@2 [a3,c4,f#4]@3 ~@6 [a3,c4,f#4] ~@4 [a3,c4,f#4] ~", // F#dim
  CY: "~@4 [a3,c4,f#4] ~@2 [a3,c4,f#4]@3 ~@5 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@2", // F#dim Cm
  CZ: "~@3 [g3,c4,d#4] ~@2 [g3,c4,d#4]@4 ~@4 [g3,c4,d#4] ~@5 [g3,c4,d#4] ~@3", // Cm
  DA: "~@2 [g3,c4,d#4] ~@4 [g3,c4,d#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@4", // Cm F#dim
  DB: "[a3,c4,f#4] ~@2 [a3,c4,f#4]@4 ~@7 [g3,a#3,d4,g4]@4 ~@6", // F#dim Gm
  DC: "~@2 [g3,a#3,d4,g4]@3 ~@8 [g3,a#3,d4,g4]@3 ~@3 [g3,a#3,d4,g4]@3 ~@2", // Gm
  DD: "[g3,a#3,d4,g4]@3 ~@6 [g3,a#3,d4,g4] ~@4 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@3", // Gm
  DE: "~ [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@5 [g3,a#3,d4,g4] ~@4 [g3,a#3,d4,g4] ~@5", // Gm
  DF: "[g3,a#3,d4,g4] ~@4 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@5 [a3,c4,f#4] ~@4 [a3,c4,f#4] ~", DG: "~@5 [a3,c4,f#4]@5 ~@14",
  DH: "~@10 [a3,c4,f#4]@4 ~@3 d4@3 ~ c4@3", DI: "a#3@3 ~ a3@2 ~@4 [g3,a#3,d4] ~@6 [g3,a#3,d4] ~@5 [g3,a#3,d4]",
  DJ: "~@5 [g3,a#3,d4] ~@4 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@4 [g3,a#3,d4] ~@2", // Gm
  DK: "~@3 [g3,a#3,d4] ~@4 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@4 [g3,a#3,d4] ~@4", // Gm
  DL: "[g3,a#3,d4] ~@5 [g3,a#3,d4] ~@4 [g3,a#3,d4] ~@4 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~", // Gm
  DM: "~@11 [d2,a3,c4,f#4]@4 ~@7 [g2,a#3,d4,g4]@2", // D7 Gm
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(0.2)

// other · brass section · "brass"
const brass_section = note(`<
  ~@2 A@3 B@8 C@2 D@3 E F G H@3 I@2 J@2 K L M@6 N O P@2 Q R@2 S T@2 ~@27 U@2 V@2 W@2 X Y Z@2 AA@2 AB@2 AC AD AE AF@3 AG
  AH AI AJ AK@2 AL@3 AM@3 AN AO AP@2 AQ AR AS AT@2 AU AV@2 ~@59
>`.pickRestart({
  A: "[a3@8 ~@3 a3@16 ~@2 d4@5 ~ c4@5 ~ a3@5 ~ d4@9 ~@3 d4@13]/3",
  B: "[~@5 d4@5 d#4@4 ~@2 d4@3 ~@3 d#4@9 ~@3 d#4@17 ~ g4@6 f#4@4 ~@2 d#4@5 ~ d4@11 ~ c4@3 d4@2 ~ c4@2 ~@3 c4@16 ~@8 a3@8 ~@4 a3@17 ~ d4@5 ~ c4@5 ~ a3@4 ~@2 d4@9 ~@2 d4@16]/8",
  C: "[~@2 f#4@5 ~ d#4@4 ~@2 d4@4 ~@2 d#4@9 ~@3 d#4@16]/2",
  D: "[~@2 g4@5 f#4@5 ~ d#4@4 ~@2 d4@12 c4@3 d4@2 ~ c4@3 ~@3 a3@20 ~@4 d4@2 ~@3]/3", E: "~ d4@8 ~@4 c4@3 ~@2 a3@3 ~@3",
  F: "a3@2 ~@4 a3@11 ~ c4@2 ~@4", G: "c4@8 ~@7 c4 ~@2 g3@3 ~@3, ~@2 a#3 ~",
  H: "[g3 ~@5 g3@7 ~@5 g3@10 ~ a#3@7 ~@2 a3@2 ~ g3@2 ~@4 g3@3 ~@2 d4@8 ~@3 d4@9]/3",
  I: "[~@2 c4@2 ~ d4@2 ~ c4@2 a3@3 d4@17 a3@2 c4@2 ~ d4@2 ~@4 d4@7]/2",
  J: "[~ c4@2 c4@2 ~ c4@2 ~ a3@2 ~@3 a3@2 ~@3 a3@8 ~@3 c4@2 ~@4 c4@8 a#3@2 c4@2]/2",
  K: "~ a#3@2 ~ g3@2 ~@3 g3@2 ~@3 g3@7 ~@3", L: "~ g3@8 ~@3 g3@6 ~@2 g3@2 g3@2",
  M: "[~@4 g3@3 ~@2 d#4@8 ~@3 d4@8 c4@3 d4@2 c4@2 ~ a3@3 ~@2 a3@14 ~@8 d4@15 ~@6 d4@15 ~@7 d4@6 ~@4 d4@6 ~@4 d4@5 ~@5 d4@3 ~@4 d4]/6",
  N: "~ d4@2 ~@2 d4@2 ~@3 g4@6 f#4@2 d4@2 ~@2 g4@2", O: "~@2 f#4@3 ~@2 d4@2 ~@2 d4@2 ~@2 d4@3 ~ g4@5",
  P: "[~ f#4 ~ d4@2 ~@2 g4@3 ~ f#4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~@2 f#4@5 ~ d#4 ~ d4@3 ~ f#4@3 ~ d#4@3 ~]/2",
  Q: "d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 f#4@4 ~@2 d#4 ~ d4@3 ~",
  R: "[~ f#4@3 ~ d#4@3 ~ d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 f#4@6 ~@2 d4@2 ~@2 d4@2 ~@2 f#4@5 ~@2 a3@4]/2",
  S: "~@3 a3@7 a4@2 ~@2 a4@2 ~ f#4@2 ~ f#4@2 ~@2", T: "[d4@11 ~]/2", U: "[~ a3@8 ~@4 a3@17 ~ d4@5 ~ c4@5 ~ a3@5]/2",
  V: "[~ d4@9 ~@3 d4@15 ~@3 d4@5 ~ d#4@4 ~@2 d4@3 ~@2]/2", W: "[~ d#4@10 ~@2 d#4@18 g4@6 f#4@4 ~@2 d#4@5]/2",
  X: "~@2 d4@11 ~ c4@3 d4@2 ~ c4@2 ~@2", Y: "~@2 c4@17 ~@5", Z: "[~@2 a3@8 ~@4 a3@17 ~ d4@5 ~ c4@5 ~ a3@4]/2",
  AA: "[~@2 d4@9 ~@3 d4@16 ~@2 f#4@6 d#4@4 ~@2 d4@4]/2", AB: "[~@2 d#4@9 ~@3 d#4@17 ~@2 g4@5 ~ f#4@5 ~ d#4@3]/2",
  AC: "~@3 d4@12 c4@3 d4@2 ~ c4@3", AD: "~@3 a3@20 ~", AE: "~@3 d4@2 ~@4 d4@9 ~@3 c4@3",
  AF: "[~@3 a3@3 ~@3 a3@2 ~@4 a3@11 ~ c4@2 ~@4 c4@9 ~@6 c4 ~@2 g3@3 ~@3 g3 ~@5 g3@7 ~@2, ~@15 a#3@2 ~@7]/3",
  AG: "~@2 g3@5 ~ a#3@4", AH: "~ a3@2 ~ g3@3 ~@3 g3@3 ~@3 d4@8", AI: "~@4 d4@11 ~ c4@2 ~ d4@3 c4@2",
  AJ: "~ a3@3 d4@18 a3@2", AK: "[~ c4@2 d4@2 ~@4 d4@9 c4@2 c4@2 ~ c4@2 ~ a3@2 ~@4 a3@2 ~@3 a3@9 ~@2]/2",
  AL: "[~ c4@2 ~@3 c4@8 ~ a#3@2 ~ c4@2 a#3@2 ~ g3@2 ~@4 g3@2 ~@3 g3@7 ~@4 g3@8 ~@3 g3@6 ~@2 g3@2 g3@2 ~@4]/3",
  AM: "[g3@3 ~@2 d#4@8 ~@10 c4@3 d4@2 ~ c4@2 a3@3 ~@2 a3@14 ~@7 d4@15, ~@16 d4@9 ~@47]/3", AN: "~@3 d4@7 ~@2",
  AO: "~@2 d4@6 ~@3 d4@5 ~@4 d4@4",
  AP: "[~@4 d4@3 ~@3 d4 ~ d4@2 ~@3 d4@2 ~@2 g4@5 ~ f#4@2 d4@2 ~@2 g4@3 ~ f#4@3 ~ d4@2 ~@2 d4@2 ~]/2",
  AQ: "~ d4@3 ~ g4@5 ~ f#4 ~ d4@2 ~@2 g4@3 ~ f#4@3", AR: "~ d4@3 ~ d4@3 ~ d4@3 ~ f#4@5 ~ d#4 ~ d4@3",
  AS: "~ f#4@3 ~ d#4@2 ~@2 d4@2 ~@2 d4@2 ~@2 d4@2 ~ f#4@4",
  AT: "[~@2 d#4 ~ d4@2 ~@2 f#4@3 ~ d#4@2 ~@2 d4@2 ~@2 d4 ~@2 d4@2 ~@2 f#4@6 ~@2 d4@2 ~@2 d4@2 ~ f#4@5 ~]/2",
  AU: "~ a3@5 ~@2 a3@6 a4@2 ~@2 a4@2 ~ f#4@2 ~", AV: "[~ f#4@2 ~ d4@44]/2",
})).s("gm_brass_section").gain(0.64).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B@2 C@3 D@4 E@3 F@3 G@4 H I J K L M N O E G I P Q M R K S P T J U Q V@10 W@2 V@2 W@2 V@12 X@6 Y@9 N@7 Z@3 N Y AA
  D G I J L M AB J AC J AC J T K AD AE@10 AF@2 AG@2 AF@2 AG@8 AH@4 AI AJ AK AL AE AG AH AM AN AO AP AH AJ AK AE AQ AI AK
  AP AH AJ AR B ~@2 AS AT AU AI AV AW AX ~
>`.pickRestart({
  A: "x ~@22 x", B: "~@23 x", C: "~@11 x", D: "~@7 x", E: "~@5 x", F: "~@19 x ~@4", G: "~@3 x", H: "~@17 x ~@6",
  I: "~@5 x ~@2", J: "~@13 x ~@10", K: "~@11 x ~@12", L: "~@3 x ~@4", M: "~ x ~@2", N: "~ x ~@6", O: "~ x ~@20 x ~",
  P: "~ x", Q: "~@5 x ~@6", R: "~ x ~@16 x ~@5", S: "~@3 x ~@15 x ~@4", T: "~ x ~@3 x", U: "~@5 x ~@14 x ~@3", V: "x!4",
  W: "x ~@6 x ~@4 x ~@5 x ~@5", X: "~ x ~@22", Y: "~ x ~@10", Z: "~ x ~@4", AA: "~ x ~@21 x", AB: "~ x ~@8 x ~",
  AC: "~@5 x ~@15 x ~@2", AD: "~ x ~@12 x ~@9", AE: "~@2 x ~@2 x ~@2 x ~@2 x", AF: "~@3 x ~@7 x ~@3 x ~@5 x ~@2",
  AG: "~ x ~ x ~ x ~ x", AH: "~ x ~@2 x ~@2 x ~@2 x ~", AI: "~@2 x ~@4 x ~@5 x ~@5 x ~@4",
  AJ: "~ x ~@5 x ~@4 x ~@5 x ~@5", AK: "x ~@5 x ~@4 x ~@5 x ~@5 x", AL: "~@5 x ~@5 x ~@4 x ~@5 x ~",
  AM: "~ x ~@5 x ~@5 x ~@5 x ~@2 x ~", AN: "~@2 x ~@3 x ~@2 x ~@2 x ~@5 x ~@5",
  AO: "~ x ~@3 x ~@2 x ~@2 x ~@4 x ~@5 x ~", AP: "~@4 x ~@5 x ~@4 x ~@5 x ~@2", AQ: "~@3 x ~@5 x ~@4 x ~@5 x ~@3",
  AR: "x ~@4 x ~@18", AS: "~@2 x", AT: "~@3 x ~@6 x ~@6 x ~@6", AU: "x ~@6 x ~@6 x ~@5 x ~@3",
  AV: "x ~@4 x ~@5 x ~@4 x ~@5 x ~", AW: "~@3 x ~@4 x ~@5 x ~@4 x ~@4", AX: "x ~@10 x ~@10 x ~",
})).gain(0.71)

// drums · rim
const rim = s("rim").struct(`<
  ~@2 A ~ B ~ C ~@3 D ~ E ~ F ~ G ~@16 H ~@39 I ~ I ~ J ~@3 K ~ L ~ L ~ M ~@16 N O ~@70
>`.pickRestart({
  A: "~@7 x!5 ~@12", B: "~@6 x!6 ~@12", C: "~@6 x!5 ~@13", D: "~@5 x!5 ~@14", E: "~@4 x!5 ~@15", F: "~@3 x!6 ~@15",
  G: "~@2 x!6 ~@16", H: "~@2 x ~@20 x", I: "~@8 x!6 ~@10", J: "~@9 x!5 ~@10", K: "~@9 x!6 ~@9", L: "~@10 x!5 ~@9",
// … 118 more lines