Strudelify

Hey, Ba-Ba-Re-Bop

Johnny Shines

KeyG majorTempo124 bpm
0:00/0:00
// Hey, Ba-Ba-Re-Bop — Johnny Shines
// 124 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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 · trombone · "xxxxxxxx"
const trombone = note("<~@12 A B C D E F G@2 H@2 I@3 ~@36 A B C D E F G@2 H@2 I@3 ~@24>".pickRestart({
  A: "~@11 d3", B: "g3@3 ~ g3@2 ~@4 g3@7 ~@5 d3 ~", C: "g3@3 ~ g3@2 ~@4 g3@6 ~@2 d3@3 ~ d3@2",
  D: "g3@3 ~@3 g3@3 ~@3 g3@3 ~ g3 ~ a3@3 ~ g3@2", E: "b3@3 ~ g3@2 ~@4 g3@3 ~@3 g3@5 ~ e3 ~",
  F: "g3@3 ~@3 e3@3 ~ d3 ~ g3@3 ~ e3@2 ~@6", G: "[~@22 g3@7 ~ e3@3 ~ d3 ~ g3@3 ~ e3@2 ~@6]/2",
  H: "[~@22 a3@7 ~ f3@3 ~ f#3@2 d3@4 e3@2 ~@6]/2", I: "[~@23 a#3@9 ~@2 g3@2 g3@3 ~ e3@3 ~@3 g3@17 ~@9]/3",
})).s("gm_trombone").gain(0.35)

// other · trumpet
const trumpet = note("<A@2 B@4 C@2 D@2 E@3 ~@36 A@2 B@4 C@2 D@2 E@3 ~@36>".pickRestart({
  A: "[~@6 e5@3 ~ c5 ~ a#4@3 ~ g4 ~ e4@3 ~ g4@8 e4@4 d4@2 g4@3 ~ e4@2 ~@6]/2",
  B: "[~@22 g4@8 e4@4 d4@2 g4@3 ~ e4@2 ~@6]/2", C: "[~@22 g4@8 e4@4 d4 ~ g4@3 ~ e4@2 ~@6]/2",
  D: "[~@22 a4@8 f4@4 f#4@2 d4@3 ~ e4@2 ~@6]/2", E: "[~@22 a#4@12 g4 ~ g4@3 ~ e4 ~@5 g4@7 ~@19]/3",
})).s("gm_trumpet").gain(0.35)

// bass · electric bass finger
const bass = note(`<
  ~ A B C D E B F G H I J K L M N O P Q R S T U V@2 W X N Y Z AA AB AC AD AE AF AG AH AI L AJ P@2 L AK AL AM AN AO ~ A B
  C D E B F G H I J K L M N O P Q R S T U V@2 W X N Y Z AA AB AC AD AE AF AG AH AI L AJ P@2 L AK AL AM AN AO
>`.pickRestart({
  A: "g1@4 ~@2 g1@5 ~ b1@5 ~ d2@5 ~", B: "c2@4 ~@2 c2@5 ~ g1@4 ~@2 c2@4 ~@2", C: "g1@5 ~ g1@4 ~@2 b1@5 ~ d2@4 ~@2",
  D: "g1@5 ~ g1@4 ~@2 b1@5 ~ d2@3 ~ b1 ~", E: "c2@4 ~@2 c2@4 ~@2 g1@5 ~ g1@4 ~@2",
  F: "g1@4 ~@2 b1@5 ~ d2@4 ~@2 b1@4 d2 ~", G: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@5 ~",
  H: "a1@5 ~ a1@4 ~@2 d2@4 ~@2 d2@4 ~@2", I: "a1@4 ~@2 a1@4 ~@2 d2@4 ~@2 d2@4 a1 ~",
  J: "g1@4 ~@2 a#1@5 ~ d2@5 ~ a#1@4 d2 ~", K: "g1@3 ~@9 a1@5 ~ g#1@4 ~@2", L: "g1@5 ~ b1@5 ~ d2@5 ~ e2@4 d2 ~",
  M: "g2@5 ~ e2@5 ~ d2@5 ~ b1@4 d2 ~", N: "g1@5 ~ b1@5 ~ d2@5 ~ e2@3 ~ d2 ~",
  O: "g1@3 ~ g2 ~ a1@4 a2 ~ a#1@4 a#2 ~ b1@4 b2 ~", P: "c2@5 ~ a#1@5 ~ a1@5 ~ g1@5 ~", Q: "c2@5 ~ e1@6 f1@5 ~ f#1@5 ~",
  R: "g1@4 ~@2 g1@6 a1@5 ~ a1@5 ~", S: "b1@5 ~ b1@5 ~ a#1@5 ~ a#1@4 ~@2", T: "a1@5 ~ a1@5 ~ d2@5 ~ d2@5 ~",
  U: "d2@5 ~ d2@5 ~ a1@5 ~ d2@3 ~ a1 ~", V: "[g1@5 ~ g1@5 ~ a1@5 ~ a1@3 ~ g1@6 ~@2 a1@4 ~@2 g#1@10 ~@2]/2",
  W: "g1@5 ~ b1@5 ~ d2@5 ~ e2@4 ~ d2", X: "f1@5 ~ a1@5 ~ c2@6 d2@3 ~ c2 ~", Y: "g1@5 ~ g1@5 ~ d2@5 ~ d2@4 ~@2",
  Z: "c2@5 ~ a#1@5 ~ g1@5 ~ a#1@4 g1 ~", AA: "c2@5 ~ e1@5 ~ f1@5 ~ f#1@5 ~", AB: "g1@5 ~ g1@5 ~ a1@4 ~@2 a1@5 ~",
  AC: "b1@5 ~ b1@5 ~ a#1@5 ~ a#1@5 ~", AD: "a1@6 b1@5 ~ c2@5 ~ c#2@6", AE: "d2@5 ~ c2@5 ~ b1@5 ~ a1@5 ~",
  AF: "g1@5 ~ g1@5 ~ a1@5 ~ a1@4 ~@2", AG: "g1@5 ~ d2@5 ~ g2@3 ~@9", AH: "g1@5 ~ b1@5 ~ d2@5 ~ e2@4 ~@2",
  AI: "f1@5 ~ a1@5 ~ c2@5 ~ d2@5 ~", AJ: "g2@5 ~ d2@5 ~ a#1@6 g1@5 ~", AK: "g2@5 ~ e2@5 ~ d2@5 ~ b1@3 ~ d2 ~",
  AL: "a1@5 ~ b1@5 ~ c2@5 ~ a1@5 ~", AM: "c2@5 ~ c2@5 ~ d#2@5 ~ c2@5 ~", AN: "g1@5 ~ g1@5 ~ c2@4 ~@2 c2@4 ~@2",
  AO: "g1@6 d2@4 ~@2 g1@3 ~@9",
})).s("gm_electric_bass_finger").gain(0.29)

// chords · epiano1
const epiano1 = note(`<
  ~ A B C@2 D E C F G H I J C K@2 L D@2 M N O P Q@2 C R C S B@2 M T U V W X C R C Y Z@2 AA AB@2 AC AD AE ~ A B C@2 D E C
  F G H I J C K@2 L D@2 M N O P Q@2 C R C S B@2 M T U V W X C R C Y Z@2 AA AB@2 AF AG AE
>`.pickRestart({
  A: "~@4 [b3,d4,f4,g4] ~@5 [b3,d4,f4,g4] ~@5 [b3,d4,f4,g4] ~@5 [b3,d4,f4,g4] ~", // G7
  B: "~@4 [a#3,c4,e4] ~@5 [a#3,c4,e4] ~@5 [a#3,c4,e4] ~@5 [a#3,c4,e4] ~", // C7
  C: "~@4 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~", // G7
  D: "~@4 [a#3,e4,g4] ~@5 [a#3,e4,g4] ~@5 [a#3,e4,g4] ~@5 [a#3,e4,g4] ~", // Edim
  E: "~@4 [a#3,e4,g4] ~@5 [a#3,e4,g4] ~@3 e4 ~ [a#3,e4,g4] ~@2 e4 ~@2 [a#3,e4,g4] ~", // Edim
  F: "~@4 [g3,b3,e4,f4] ~@5 [g3,b3,f4] ~@5 [g3,a#3,c#4,e4] ~@5 [g3,a#3,c#4,e4] ~", // Em G7 Gdim
  G: "~@4 [g3,a3,c4,e4] ~@5 [g3,a3,c4,e4] ~@5 [f#3,c4,d4] ~@5 [f#3,c4,d4] ~", // Am7 D7
  H: "~@4 [f#3,c4,d4] ~@2 d4 ~@2 [f#3,c4,d4] ~@5 [f#3,c4,d4] ~@5 [f#3,c4,d4] ~", // D7
  I: "~@4 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~", // Gm
  J: "~@4 [g3,b3,f4] ~@5 [g3,b3,f4] ~@2 [a3,c4]@4 ~@2 a#3@4 ~, ~@12 [g3,e4]@4 ~@2 [f#3,g#3,d#4]@5 ~", // G7 Am C G#7
  K: "[~@4 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4]@5 ~ [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~]/2", // G7
  L: "~@4 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4] ~", // G7 Bdim
  M: "~@4 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [a3,c4,e4,g4] ~@5 [a3,c4,e4,g4] ~", // G7 Am7
  N: "~@4 [b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [a#3,c#4,e4,g4] ~@5 [a#3,c#4,e4,g4] ~", // G A#dim
  O: "~@4 [a3,c4,e4,g4] ~@5 [a3,c4,e4,g4] ~@5 [c4,d4,f#4] ~@5 [c4,d4,f#4] ~", // Am7 D7
  P: "~@4 [c4,d4,f#4] ~@5 [c4,d4,f#4] ~@5 [c4,d4,f#4] ~@5 [c4,d4,f#4] ~", // D7
  Q: "[~@4 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a3,c4,e4] ~@5 [g3,b3,f4]@5 ~@4 [c4,e4]@2 ~@4 [f#3,g#3,c4,d#4]@11, ~@15 [g3,a3] ~@8]/2", // Gm Am7 G7 C G#7 Gsus2
  R: "~@4 [a3,d#4,g4] ~@5 [a3,d#4,g4] ~@5 [a3,d#4,g4] ~@5 [a3,d#4,g4] ~", // Am7b5
  S: "~@4 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [c4,d4,f#4] ~@5 [c4,d4,f#4] ~", // G7 D7
  T: "~@4 [b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [a#3,c#4,g4] ~@5 [a#3,c#4,g4] ~", // G Gdim
  U: "~@4 [a3,c4,e4,g4] ~@5 [a3,c4,e4,g4] ~@5 [a3,c4,d4,f#4] ~@5 [a3,c4,d4,f#4] ~", // Am7 D7
  V: "~@4 [a3,c4,d4,f#4] ~@5 [a3,c4,d4,f#4] ~@4 [a3,c4] [d4,f#4] ~@5 [a3,c4,d4,f#4] ~", // D7 Am D D7
  W: "~@4 [g3,a#3,d4] ~@5 [g3,a#3,d4] ~@5 [g3,a3,c4] ~@5 [g3,a3,c4,e4] ~, ~@8 e4 ~@3", X: "~@4 [g3,b3,f4] ~@19",
  Y: "~@4 [d4,f4,g4,a#4] ~@5 [d4,f4,g4,a#4] ~@5 [d4,f4,g4,a#4] ~@5 [d4,f4,g4,a#4] ~", // Gm7
  Z: "~@4 [e4,a#4,c5] ~@5 [e4,a#4,c5] ~@5 [e4,a#4,c5] ~@5 [e4,a#4,c5] ~", // C7
  AA: "~@4 [d4,f4,g4,b4] ~@5 [d4,f4,g4,b4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~", // G7
  AB: "[~@4 [b3,e4,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4,g4] ~@5 [b3,f4]@2 ~ [c4,e4]@3 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5 [c4,e4,g4] ~, ~@22 g4@5 ~@21]/2", // Em G7 Bdim C
  AC: "~ d#4@3 [c4,d#4,g4] ~@5 [c4,d#4,g4] ~@5 [c4,d#4,g4] ~@5 [c4,d#4,g4] ~, [c4,g4] ~@7", // Cm C5
  AD: "[d4,g4] a#4 ~@2 [d4,g4,a#4] ~@2 [d4,g4,a#4]@2 ~@3 [e4,g4,c5]@2 ~@4 [e4,g4,c5]@3 ~@3", AE: "[d4,g4,b4]@7 ~",
  AF: "[c4,d#4,g4]@3 ~ [c4,d#4,g4] ~@5 [c4,d#4,g4] ~@5 [c4,d#4,g4] ~@5 [c4,d#4,g4] ~", // Cm
  AG: "[d4,g4,a#4] ~@3 [d4,g4,a#4] ~@2 [d4,g4,a#4]@2 ~@3 [e4,g4,c5]@2 ~@4 [e4,g4,c5]@3 ~@3", // Gm C
})).s("gm_epiano1").gain(0.24)

// chords · percussive organ
const percussive_organ = note(`<
  ~ A B C@2 D E F@2 G@2 H@2 I@6 J K L@2 M@2 N O P Q R S T U V W X Y Z AA Z AB AC AD AE@2 AF AG@2 AH ~ A B C@2 D E F@2
  G@2 H@2 I@6 J K L@2 M@2 N O P Q R S T U V W X Y Z AA Z AB AC AD AE@2 AF AG@2 AH
>`.pickRestart({
  A: "[f4,g4,b4]@11 ~", B: "[e4,a#4,c5]@11 ~", C: "[[f4,g4,b4]@15 ~]/2", D: "[e4,a#4,c5]@23 ~",
  E: "~ [a#4,c5]@22 ~, e4@11 ~", F: "[~@30 d5@3 ~@3 [g4,a#4,c#5]@6 ~ [g4,b4,d5]@3 ~@2, [f4,g4,b4]@17 ~@7]/2",
  G: "[[g4,a4,c5,e5]@11 ~ [f#4,c5,d5]@33 ~@3]/2", // Am7 D7
  H: "[[a#4,d5]@22 ~@2 [b4,f5]@3 ~@9 [g4,a4,c5,e5]@2 ~@4 [f#4,g#4,c5,d#5]@3 ~@3, g4@27 ~@15 b4 ~@5]/2", // A# Bdim Am7 G#7
  I: "[[f4,g4,b4]@28 ~ [f4,g4,b4] ~@6 [f4,b4]@2 ~@8 [f4,g4,b4]@29 ~ [f4,g4,b4] ~@7 [f4,g4,b4] ~@9 [e4,g4,a#4]@30 ~ [e4,g4,a#4] ~@6 [e4,g4,a#4]@2 ~@10, ~@36 g4 ~@107]/6", // G7 Fdim G7 Edim
  J: "[f4,g4,b4]@12 ~ a4@11, ~@12 [e4,c5]@11 ~", K: "[d4,g4,b4]@11 ~ [c#4,g4,a#4]@11 ~",
  L: "[~ c4@11 [c4,d4,f#4]@15 ~ [c4,d4,f#4] ~@7 [c4,d4,f#4] ~@11, [e4,a4]@11 ~@37]/2", // D7 A5
  M: "[[g3,a#3,d4]@10 ~@2 [g3,a3,c4,e4]@7 ~@3 [g3,b3,f4]@4 ~@4 [g3,a3,c4,e4]@4 ~@3 [f#3,g#3,c4,d#4]@9 ~@2]/2", // Gm Am7 G7 Am7 G#7
  N: "~@4 [f4,g4,b4] ~@7 [f4,g4,b4]@8 ~@4", O: "~@4 [d#4,f4,a4] ~@7 [d#4,f4,a4]@10 ~@2",
  P: "~@4 [f4,g4,b4] ~@7 [f4,g4,b4]@10 ~@2", Q: "~@4 [f4,g4,b4] ~@7 [c4,d4,f#4]@9 ~@3",
  R: "~@4 [d4,e4,a#4] ~@7 [d4,e4,a#4]@11 ~", S: "~@4 [d4,e4,a#4] ~@7 [d4,e4,a#4]@10 ~@2",
  T: "~@4 [f4,g4,b4] ~@7 [e4,g4,a4,c5]@9 ~@3", U: "~@4 [g4,b4,d5] ~@7 [g4,a#4,c#5]@10 ~@2",
  V: "~@4 [e4,g4,a4,c5] ~@7 [c4,d4,f#4]@12", W: "~@4 [c4,d4,f#4] ~@7 [c4,d4,f#4]@7 ~@5",
  X: "[a#3,d4,g4]@3 ~@3 [a3,c4,e4,g4]@5 ~", Y: "~ d4@13 ~@10, [b3,f4,g4]@7 ~@5", Z: "[f4,g4,b4]@7 ~",
  AA: "[d#4,f4,a4]@15 ~ [d#4,f4,a4] ~@7", AB: "[d4,g4,a#4]@16 [d4,g4,a#4] ~@5 e4 ~", AC: "[e4,a#4,c5]@7 ~",
  AD: "[c4,e4,a#4]@15 ~ [c4,e4,a#4] ~@7", AE: "[[f4,g4,b4]@27 ~ [f4,g4,b4] ~@7 [f4,g4,b4]@8 ~@4]/2",
  AF: "~ g4@21 ~@2, [e4,a4,c5]@7 ~", AG: "[[d#4,g4,c5]@19 ~@3 [d4,g4,a#4]@11 ~@3 [e4,g4,c5]@9 ~@3]/2",
  AH: "[d4,g4,b4]@19 ~@5", // G
})).s("gm_percussive_organ").gain(0.2).pan(0.6)

// chords · trombone
const trombone_2 = note(`<
  ~@2 A ~ B ~ C ~ D ~ E ~ F ~@12 G@3 H A I J K L M J N O P Q R S T U V W X Y Z ~@2 A ~ B ~ C ~ D ~ E ~ F ~@12 G@3 H A I
  J K L M J N O P Q R S T U V W X Y Z
>`.pickRestart({
  A: "~@4 c3 ~@7 c3@2 ~@10", B: "~@4 g2 ~@7 g2 ~@11", C: "~@4 c3 ~@7 c3@3 ~ c3 ~@7", D: "~@4 g2 ~@11 a#2 ~@7",
  E: "~@12 d3@3 ~ d3 ~@7", F: "~@4 a2 ~ g#2 ~", G: "~@4 g3 ~@7 g3 ~@11", H: "~@4 g3 ~@7 d3@2 ~@10",
  I: "~@4 c3 ~@5 c3 ~ e3@3 ~ g3@2 ~@6", J: "~@4 g3 ~@7 a3@2 ~@10", K: "~@2 b3 ~@3 a#3 ~@5",
  L: "~@4 a3 ~@7 d3@3 ~ d3@2 ~@6", M: "~@4 d3 ~@7 d3@3 ~ d3@2 ~@6", N: "g3 ~@11",
  O: "~@4 [f3,g3,b3] ~@7 [f3,g3,b3] ~@11", P: "~@4 [d#3,a3] ~@7 a3@2 ~@10, ~@12 d#3 ~@11",
  Q: "~@4 [f3,b3] ~@7 [f3,b3] ~@11", R: "~@4 [g3,a#3] ~@7 [a#3,d4]@3 ~ a#3@2 ~@6, ~@16 g3 ~@7",
  S: "~@4 [e3,g3,a#3] ~@7 [e3,g3,a#3] ~@11", T: "~@4 a#3@7 ~ g3@3 ~ e3@2 ~@6",
  U: "~@4 [f3,g3,b3] ~@7 [f3,g3] ~@11, ~@6 b3 ~@5", V: "~@4 b3@6 ~@2 g3@3 ~ f3@2 ~@6",
  W: "~@4 [g3,a3,c4] ~@7 [a3,c4]@2 ~@10, ~@12 g3 ~@11", X: "~@4 [d#3,g3,c4] ~@7 [d#3,g3,c4] ~@11",
  Y: "~@4 [d3,g3,a#3] ~@11 [e3,g3,c4] ~@7", Z: "~@4 [d3,g3,b3] ~@7 [d3,g3] ~@11, ~@6 b3 ~@5",
})).s("gm_trombone").gain(0.35).pan(0.9)

// chords · tenor sax
const tenor_sax = note(`<
  ~@2 A ~ B ~ C ~ D ~ E ~ F G@4 H@2 I J K@2 L@2 M N O P Q R S T U V W X Y Z Y AA AB AC AD AE AF AG AH AI ~@2 A ~ B ~ C ~
  D ~ E ~ F G@4 H@2 I J K@2 L@2 M N O P Q R S T U V W X Y Z Y AJ AB AC AD AE AF AG AH AI
>`.pickRestart({
  A: "g4@5 ~ e4@3 ~ d4 ~ g4@4 e4 ~@7", B: "g4@5 ~ e4@3 ~ d4 ~ g3@3 ~ g3@2 ~@6", C: "g4@6 e4@3 ~ d4 ~ g4@3 ~ e4 ~@7",
  D: "g4@5 ~ e4@3 ~ d4 ~ a#3@3 ~ c#4@2 ~@6", E: "~@4 d4@2 e4@2 ~@4 d4@3 ~ e4@2 ~@6",
  F: "~@12 [g3,a3,c4]@2 ~@4 [f#3,g#3,c4]@3 ~@3", G: "[~@28 [b3,f4] ~@7 [b3,f4] ~@11, g3@23 ~]/2",
  H: "[~@28 [a#3,c4,e4] ~@7 [a#3,c4,e4] ~@11, g3@23 ~]/2", I: "g3@12 a3@11 ~", J: "b3@12 a#3@11 ~",
  K: "[~@28 [c4,d4,f#4] ~@7 [c4,d4,f#4] ~@11, a3@11 ~]/2", // D7
  L: "[[g3,a#3,d4]@11 ~ [g3,a3,c4,e4]@9 ~ [g3,b3,f4]@6 ~@3 [g3,a3,c4,e4]@3 ~@2 [f#3,g#3,c4,d#4]@11 ~]/2", // Gm Am7 G7 Am7 G#7
  M: "~@4 [d4,g4] ~@7 [d4,g4] ~@11", N: "~@4 g4@2 ~@6 [c4,d#4]@3 ~ [a3,c4]@2 ~@6, ~@4 d#4 ~@19",
  O: "~@4 [b3,g4] ~@7 [b3,g4] ~@11", P: "~@4 [b3,g4] ~@7 [a3,f#4]@3 ~ f#4@2 ~@6, ~@16 a3 ~@7",
  Q: "~@2 e4 ~@3 e4 ~@5, ~@4 a#3 ~@7 a#3 ~@11", R: "~@4 [a#3,c4,e4] ~@7 [a#3,c4,e4]@10 ~@2",
  S: "~@4 [b3,f4] ~@7 [a3,c4,e4]@11 ~", T: "~@4 [b3,d4,g4] ~@7 [a#3,c#4,e4]@10 ~@2",
  U: "~@4 [g3,a3,c4,e4] ~@7 [f#3,c4,d4]@3 ~@9", V: "~@4 [f#3,c4,d4] ~@7 [f#3,c4,d4]@6 ~@6",
  W: "~@4 [g3,a#3,d4] ~@7 [g3,a3,c4,e4]@2 ~@10", X: "[g3,b3,f4] ~@11", Y: "~@4 [b3,d4] ~@7 [b3,d4] ~@11",
  Z: "~@4 [c4,d#4] ~@7 [c4,d#4] ~@5 [a3,c4] ~@5", AA: "~@5 [a#3,d4] ~@6 [a#3,d4]@3 ~ a#3@2 ~@6, ~@16 g3 ~@7",
  AB: "~@4 [e3,a#3] ~@7 [e3,a#3,c4] ~@11, ~@2 c4 ~@9", AC: "[e3,a#3,c4]@23 ~",
  AD: "~@4 [f3,g3,b3] ~@7 [f3,g3] ~@11, ~@6 b3 ~@5", AE: "[f3,g3,b3]@7 ~",
  AF: "~@4 [e3,g3,a3] ~@7 [e3,g3,a3,c4] ~@11, ~@2 c4 ~@9", AG: "[d#3,g3,c4]@3 ~",
  AH: "[g3,a#3,d4]@10 ~@2 [g3,c4,e4]@11 ~", AI: "[g3,b3,d4]@17 ~@7",
  AJ: "~@4 d4 a#3 ~@6 [a#3,d4]@3 ~ a#3@2 ~@6, ~@16 g3 ~@7", // A#
})).s("gm_tenor_sax").gain(0.2).pan(0.6)

// other · piano
const piano = note("<~@25 A@2 B C@2 D@2 E@2 F@3 ~@37 A@2 B C@2 D@2 E@2 F@3 ~@12>".pickRestart({
  A: "g4@3 ~ e4 ~ g4@3 ~ e4 ~ g4@10 ~@2", B: "g4@3 ~ e4 ~ g4@3 ~ e4 ~ g4@5 ~ g4 ~ g4 ~ e4 ~",
  C: "[g4@3 ~ e4@2 ~@4 g4@4 ~@2 g4 ~ e4@3 ~ g4@7 ~ e4@3 ~ d4 ~ g4@3 ~ e4@3 ~@5]/2",
  D: "[~@22 g4@7 ~ e4@4 d4 ~ g4@3 ~ e4@3 ~@5]/2", E: "[~@22 a4@7 ~ f4@4 f#4@2 d4@3 ~ e4@2 ~@6]/2",
  F: "[~@22 a#4@7 ~ g4@3 ~ g4@5 ~ e4@4 ~@2 g4@9 ~@17]/3",
})).s("gm_piano").gain(0.35)

// other · rock organ
const rock_organ = note("<~@37 A B C D E F@2 G@2 H@3 ~@37 A B C D E F@2 G@2 H@3>".pickRestart({
  A: "g5@3 ~ g5@4 ~@2 e5 ~ g5@3 ~ d5@4 ~@4", B: "g5@3 ~ e5 ~ g5@3 ~ e5 ~ g5@5 ~@7",
  C: "g5@3 ~ e5 ~ g5@4 e5 ~ g5@3 ~ e5 ~ g5@3 ~ e5 ~", D: "a#5@3 ~ g5 ~ g5@3 ~ g5@7 ~ g5@3 ~ e5 ~",
  E: "g5@5 ~ e5@4 d5 ~ g5@3 ~ e5@2 ~@6", F: "[~@22 g5@7 ~ e5@4 d5 ~ g5@3 ~ e5@5 ~@3]/2",
  G: "[~@22 g5@8 e5@3 ~ d5 ~ g5@3 ~ e5@3 ~@5]/2", H: "[~@22 a#5@5 ~@3 g5@3 ~ g5@7 ~ g5@3 ~ g5@18 ~@8]/3",
})).s("gm_rock_organ").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!47 [x!3 ~] ~ [x!4]!47 [x!3 ~]>").gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C B@3 D B@3 E B@3 F B@3 G B@3 H B@3 F B@7 I B@3 F B@3 J A B@7 C B@3 D B@3 E B@3 F B@3 G B@3 H B@3 F B@7 I B@3 F
  B@3 J
>`.pickRestart({
  A: "~@9 x!2 ~", B: "~ x ~ x", C: "~@3 x ~@4 x!2 ~ x", D: "~@3 x ~@7 x", E: "~ x!3", F: "~@3 x ~@5 x ~ x",
  G: "~@16 x!3 ~ x ~ x ~", H: "~@6 x ~@5 x ~@5 x ~ x ~@2 x", I: "~@6 x ~@11 x ~ x ~@2 x", J: "~ x!2 ~",
})).gain(0.3)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A ~@3 A ~ B ~@9 C ~@3 D ~@3 E ~@3 F ~@3 D ~@3 A ~@3 G ~@3 D ~@4 A ~@3 A ~ B ~@9 C ~@3 D ~@3 E ~@3 F ~@3 D ~@3 A ~@3 G
  ~@3 D ~@4
>`.pickRestart({
  A: "~@11 x", B: "~@10 x!2", C: "~@5 x ~@2 x ~@2 x", D: "~@5 x", E: "~@5 x ~@2", F: "~@14 x ~ x ~@4 x!2 ~",
  G: "~@21 x!2 ~",
})).gain(0.15)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@3 A B A B A B@2 C D E D F ~@8 A B@2 G ~@8 A B A B H I D I@4 J K A B@3 A B A B A B@2 C D E D F ~@8 A B@2 G ~@8 A
  B A B H I D I@4 J
>`.pickRestart({
  A: "~@2 x!2 ~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "x ~ x!2 ~ x!2 ~@2 x ~@2", D: "~ x!11", E: "x!11 ~",
  F: "x!4 ~@2 x ~@2 x ~@2", G: "x ~ x!2 ~@2 x ~@2 x ~@2", H: "~@2 x!10", I: "x!12", J: "x!2 ~@4", K: "x!4",
})).gain(0.25)

// drums · mid tom
// … 36 more lines