Strudelify

Stormy Blues

Holiday Billie

KeyG majorTempo174 bpm
0:00/0:00
// Stormy Blues — Holiday Billie
// 174 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 391 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(174/3)

// 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.

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

// chords · piano
const piano = note(`<
  ~@2 A@4 B@3 C D@2 E@2 F@2 G@2 H@4 I@4 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 A@4 B@3 C D@2 E@2 F@2 V@2 H@4
  I@4 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 A@4 B@3 C D@2 E@2 F@2 V@2 H@4 I@4 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2
  R@2 S@2 T@2 U@2 A@4 B@3 C D@2 E@2 F@2 V@2 H@4 I@4 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 A@4 B@3 C D@2 E@2
  F@2 V@2 H@4 I@4 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 A@4 B@3 C D@2 E@2 F@2 V@2 H@4 I@4 J@2 K@2 L@2 M@2 N@2
  O@2 P@2 Q@2 R@2 S@2 T@2 U@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AA AB AC AD AA AB AC AD AM@2 AN@2 AO@2 AP@2 AQ
  AR AS AT AU@2 AV AW R@2 S@2 T@2 U@2 A@4 B@3 C D@2 E@2 F@2 V@2 H@4 I@4 J@2 K@2 L@2 AX@2 AY@2 AZ BA BB ~@3 BC BD BE@2 BF
  BG@8
>`.pickRestart({
  A: "[[g2,b3,d4]@50 ~@3 f3@10 ~, f3@23 ~@9]/4", B: "[[g3,c4,e4]@23 ~]/3", C: "~@5 [g3,a#3,e4]@5 ~@6",
  D: "[[g3,b3,d4]@21 [g3,b3,d4]@10 ~, g2]/2", E: "[[g#3,c4,d#4]@21 g#3@5 ~ g#3@5, g#2@31 ~, ~@21 [c4,d#4]@10 ~]/2",
  F: "[~@11 b3@5 g3@11 g3@5, g2, ~@5 g3@11 [b3,d4]@16]/2", // Bm
  G: "[~@11 [f3,b3,d4]@5 [f3,b3,d4]@5 [f3,b3,d4]@5 ~ [f3,b3,d4]@2 ~@3, g2@29 ~@3]/2", // Bdim
  H: "[~@48 c3@5 g3@3 ~@3 [g3,a#3]@2 ~@3, [g3,a#3,c4,e4]@52 ~@7 [c4,e4] ~@4]/4", // Gm C7 C
  I: "[c3@46 ~@7 c3@6 [g3,a#3,c4,e4]@2 ~@3, [g3,a#3,c4,e4]@7 ~]/4", // C7
  J: "[[g3,d4]@21 d4@5 ~ [b3,d4]@5, g2, b3@27 ~@5, ~@21 g3@11]/2", // G5 Bm
  K: "[[a3,c4,e4]@11 [a3,c4,e4]@10 [a3,c4,e4]@11, a2]/2", L: "[~@21 [b3,d4,f#4]@10 ~, [b3,d4,f#4]@21 ~@11, ~ b2]/2",
  M: "[~@27 a#3@3 ~@2, a#2@29 ~@3, ~@5 a#3@21 ~@6, ~@11 d4@10 d4@8 ~@3, ~@16 f4@13 ~@3]/2",
  N: "[a3@21 ~@6 c4@5, [e4,g4], c4@27 ~@5, a2@7 ~@14 a3@11]/2", O: "[a3,c4,e4,g4]", P: "[g3,c4,d#4,g4]/2",
  Q: "[g3@21 g3@6 c4@2 ~@3, [c4,d#4,g4]@7 ~]/2", // Cm
  R: "[~@5 g3@16 ~@6 b3@5, g2, ~@5 d4@26 ~, ~@5 b3@21 ~@6, ~@21 g3@10 ~]/2", S: "[~ a#3, c3, ~@5 [g3,c4]@26 ~]/2",
  T: "[~@21 d4@6 ~@5, g2@27 ~@5, ~@5 g3@22 ~@5, ~@16 b3@11 ~@5]/2",
  U: "[~@16 d4@11 ~@5, d3@7 ~, ~@5 f#3@22 ~@5, ~@11 a#3@16 ~@5]/2",
  V: "[~@5 [g4,d5,f5] ~@5 [f3,b3,d4]@5 [f3,b3,d4]@5 [f3,b3,d4]@5 ~ [f3,b3,d4]@2 ~@3, g2@29 ~@3]/2", // G7 Bdim
  W: "[g2,d3]@3 [f3,a3] ~@10 d3 ~, [f3,a3] ~@7", X: "a3@2 ~ a3@2 ~@11, f3 ~@2 f3 ~@12",
  Y: "[f3,a3]@2 ~ [f3,a3]@2 ~@9 g2 ~, g2@3 ~@13", Z: "[f3,a3]@2 ~ [f3,a3]@2 ~@11",
  AA: "[c3,g3]@3 [g3,a#3]@2 ~@11, a#3 ~@7", AB: "[g3,a#3]@2 ~ [g3,a#3]@2 ~@9 c3 ~",
  AC: "[g3,a#3]@2 ~ a#3@2 ~@11, ~@3 g3 ~@12", AD: "[g3,a#3]@2 ~ g3@2 ~@11, c3@3 a#3 ~@12",
  AE: "[f3,a3]@2 ~ a3@2 ~@4 g2 ~@6, g2@3 f3 ~@12", AF: "[g2,a3]@2 ~ [g2,a3]@2 ~@11, f3 ~@2 f3 ~@12",
  AG: "[f#3,a#3]@2 ~ [f#3,a#3]@2 ~@9 g#2 ~, g#2@3 ~@13", AH: "[f#3,a#3]@2 ~ [f#3,a#3]@2 ~@11",
  AI: "[f3,a3]@2 ~ a3@2 ~@11, g2@3 f3 ~@12", AJ: "[g2,a3]@2 ~ [f3,a3]@2 ~@11, f3 ~@15", AK: "[g2,f3,a3]@7 ~",
  AL: "[g2,f3,a3]@2 ~@3 [f3,a3]@2 ~@9", AM: "[g2@3 [g3,b3] ~@5 g2@2 [g3,b3,d4]@16 ~@5, ~@3 d4@2 ~@27]/2",
  AN: "[a2@3 [a3,c4,e4] ~@3 a2 ~@3 [a3,c4,e4]@16 ~@5]/2", // Am
  AO: "[~@3 [b2,a3,d4,f#4] ~@7 [b2,d4,f#4]@14 ~@7, ~@11 a3@12 ~@9]/2", // Bm7 Bm
  AP: "[~@3 [d4,f4]@2 a#3@2 ~@4 [a#2,a#3,d4,f4]@16 ~@5, ~@3 a#2 ~@28]/2", AQ: "~@5 [a3,d4,e4,a4] ~@10",
  AR: "~@5 [a3,d4,e4,a4]@11", AS: "~@5 [a3,d4,e4,a4] ~@8 e3 ~",
  AT: "[a3,d4,e4] ~@2 e3 ~ [a3,d4,e4,a4]@4 ~@2 [a3,d4,e4,a4] ~@4, a4 ~@7", // Asus4
  AU: "[[d#3,g3]@3 [a#3,d#4] ~@17 g3 ~@5 [a#3,g4] ~@4, ~@3 g4@2 ~@4 d#3@14 ~@9, ~@11 [a#3,d#4,g4]@12 ~@4 d4@2 ~@3]/2", // D# D#5 D#
  AV: "~@3 g3 ~@5 d#3 ~ [a#3,g4] ~@4, [d#3,a#3,d4,g4]@5 ~@6 d#4@2 ~@3", AW: "[d#3,a#3,d#4,g4]@5 ~@3",
  AX: "[[c#4,f4]@15 ~@6 [g#3,a#3]@6 f4@2 ~@3, [g#3,a#3]@9 ~@7, ~@16 [c#4,f4]@9 ~@2 c#4 ~@4]/2", AY: "[d3,c4,e4,g4] ~@3",
  AZ: "[d3,c4,e4,g4]@3 ~@13", BA: "[d3,c4,g4]@9 ~@7, e4@7 ~@9", BB: "[d#2,c4,d#4,g4] ~@3",
  BC: "[g2,g3,b3,d4]@2 ~@9 [g3,b3,d4]@3 ~@2, ~@11 g2@5", BD: "~@5 g2@4 ~@2 [g3,b3,d4]@3 ~@2, [g3,c4,e4]@7 ~@9",
  BE: "[c3@5 [g3,a#3,d4]@2 ~@9 c3@4 ~ [g3,a#3,d4]@2 ~@4 [g3,a#3,d4]@3 ~@2, ~@11 [g3,a#3,d4]@8 ~@13]/2", // Gm
  BF: "[g2,g3,b3] ~@3", // G
  BG: "[g#3@9 ~@19 [b3,d4]@2 ~@3 [b3,d4]@4 ~@54 [d6,f6]@23 ~@14, g#2@2 ~@7 g3@28 b3@20 b4@19 d5@32 ~@20, ~@9 [b3,d4]@11 ~ f3@2 [f3,b3,d4]@3 [f3,b3,d4]@2 f3@9 d4@3 g3@3 d4@18 d5@5 [g3,g5]@32 ~@30, ~@9 g2@9 g2@4 g2@4 ~ g2@3 g2@16 g4@24 d4@32 ~@26, ~@15 d3@5 [d3,b3,d4]@4 d3@4 d3@3 [b3,d4] d3@17 b4@3 g3@2 f4@17 f5@32 ~@25]/8", // Bm Dm Bm Bdim G Bm
})).s("gm_piano").gain(0.48).pan(0.8)

// chords · overdriven guitar · "LEAD GUIT"
const overdriven_guitar = note(`<
  A@2 ~ B@3 ~ C@3 ~ D E@2 F@5 G@4 H@3 I@2 J@2 K@2 L@2 M@3 N ~ O@3 ~ P ~@2 Q R S@2 ~ B@3 ~ C@3 ~ D E@2 T@2 ~@5 U V@2 W@2
  X@2 J@2 K@2 L@2 M@3 N ~ O@3 ~ P ~@2 Q R S@2 ~ B@3 ~ C@3 ~ D E@2 T@2 ~@5 U V@2 W@2 X@2 J@2 K@2 L@2 M@3 N ~ O@3 ~ P ~@2
  Q R S@2 Y@2 ~@3 C@3 ~ D E@2 T@2 ~@5 U V@2 W@2 X@2 J@2 K@2 L@2 M@3 N ~ O@3 ~ P ~@2 Q R S@2 ~ Z@3 ~ AA AB AC AD AE AF AG
  AF AH AI AJ AK@4 AL AM AN@2 AO AP AQ AR AS@2 AT AU AV@2 AW AX AY@2 AL AZ BA BB BC BD BE BF BG@2 BH BI BJ BK BL@2 BM@2
  BN@2 BO BP BQ BR BS@2 BT BU BV@2 BW BX BY BZ CA CB CC@2 CD CE CF CG CH@2 CI CJ CK@2 CL@2 CM@2 CN CO CP@2 CQ ~@2 CR ~
  CR ~ CS ~ CS CT CU CV CW CR CX@2 CY ~@8 CZ@2 DA@2 DB DC DD@2 DE@3 DF DG DH ~ DG ~ P ~@2 Q R S@2 ~ B@3 ~ C@3 ~ D E@2
  T@2 ~@5 U V@2 W@2 X@2 J@2 K@2 DI@2 DJ DK@3 DL ~@3 DM DN DO@2 DP@8 ~
>`.pickRestart({
  A: "[~@16 d4@15 ~, d3@31 ~, ~@5 f#3@25 ~@2, ~@11 a#3@20 ~]/2", B: "[[a3,d4]@7 ~@3 [a3,d4]@35 ~@3]/3",
  C: "[[d4,g4]@9 ~@2 [d4,g4]@37]/3", D: "[a3,d4]@9 ~ [a3,d4]@4 ~@2", E: "[[a#3,d#4]@20 ~@7 d#4@4 ~, ~@21 f4@9 ~@2]/2",
  F: "[[a3,d4]@15 ~]/5", G: "[[d4,g4]@8 ~@3 [d4,g4]@48 ~@5]/4", H: "[[d4,g4]@7 ~]/3",
  I: "[~@21 b3@10 ~, ~@11 g4@21, ~@16 d4@15 ~]/2", J: "[~@21 g4@11, c4]/2", K: "[~@11 b3@20 ~, ~@5 d4@25 ~@2]/2",
  L: "[~@16 f4@11 ~@5, a#3@27 ~@5]/2", M: "[~@11 g4@32 ~@5, c4@35 ~@13, ~@5 e4@32 ~@11]/3", N: "[e4,g4]@15 ~",
  O: "[~@8 a#4@11 ~@5, ~@11 d#4@27 ~@10]/3", P: "~@11 b3@5, ~@5 d4@11", Q: "g3@3 ~", R: "~@5 c3@5 ~ c#3@5",
  S: "[d3@27 ~@5]/2", T: "[[a3,d4]@27 ~@5]/2", U: "~@5 g3@6 a#3@4 ~", V: "[c4@8 ~ c4@17 ~ d#4@5]/2",
  W: "[c4@11 a#3@10 a3@11]/2", X: "[~@21 b3@10 ~, g3@31 ~, ~@11 g4@21, ~@16 d4@15 ~]/2", Y: "[c5@5 ~@3, g#4@9 ~@7]/2",
  Z: "[g#4@3 ~]/3", AA: "~@9 g4@4 ~@3", AB: "d5@5 ~@4 d5@7", AC: "~@3 a#4@5 ~@3 g4@4 ~", AD: "~@11 g4@4 ~",
  AE: "a#4@4 ~@3 a#4@5 ~@4", AF: "~@5 g4@3 ~ g4@4 ~@3", AG: "b4@8 ~ b4@5 ~@2", AH: "d5@10 ~ d5@5", AI: "~@5 d5@10 ~",
  AJ: "a4@11 g4@3 ~@2", AK: "[f4@24 ~ a#4@2 f4@22 ~@10 f4@3 ~@2]/4", AL: "f4", AM: "~@5 a#4@5 ~ f4@4 ~",
  AN: "[f4@5 ~@3]/2", AO: "c4@10 ~ g3@5", AP: "f3@4 ~ g3@10 ~", AQ: "a3", AR: "~@5 e4@4 ~@2 g4@3 ~@2",
  AS: "[a#4@7 ~@4 b4@8 ~@2 g4@4 ~@2 g4@4 ~]/2", AT: "d5@4 ~ d5@3 ~@3 c5@4 ~", AU: "a#4@4 ~ a#4@3 ~@3 a4@3 ~@2",
  AV: "[g4@21 e4@5 ~ g4@3 ~@2]/2", AW: "a#4@4 ~ a#4@4 ~@2 g4@5", AX: "e4@5 g4@6 ~@5",
  AY: "[c5@9 ~@2 a#4@10 g4@5 ~ f4@3 ~@2]/2", AZ: "~@11 a#3@5", BA: "a#4@2 ~@3 a4@9 ~@2", BB: "g4@2 ~@3 f5@5 ~ g5@3 ~@2",
  BC: "a#5@11 g5@5", BD: "f5@5 g5@10 ~", BE: "d4@5 f4@4 ~@2 g4@3 ~@2", BF: "~@5 f4@5 ~ d4@3 ~@2, g4@7 ~@9",
  BG: "[d4@18 ~@3 e4@3 ~@3 g4@5]/2", BH: "e5@5 b4@3 ~@3 d5@5", BI: "~@5 d5@5 ~ e5@4 ~",
  BJ: "~@5 e5@5 ~ d5@3 ~@2, f5@7 ~@9", BK: "d5@11 a#4@3 ~@2", BL: "[a#4@3 a4@5 ~ g4@11 ~ a#4@5 ~ g4@3 ~@2]/2",
  BM: "[c5@8 ~@3 c5@8 ~@2 c5@4 ~@2 c5@3 ~@2]/2", BN: "[e5@5 b4@4 ~@2 d5@10 e5@4 ~@2 b4@4 ~]/2",
  BO: "d5@4 ~ e5@3 ~@3 e5@4 ~", BP: "e5@3 ~@2 e5@4 ~@2 d5@4 ~", BQ: "b4", BR: "~@5 g5@4 ~@2 g5@3 ~@2",
  BS: "[g5@20 ~ e5@5 ~ d5@3 ~@2]/2", BT: "a4@5 g4@5 ~ e4@5", BU: "g4@5 c4@3 ~@3 e4@3 ~@2",
  BV: "[g4@5 c4@13 ~@9 a4@3 ~@2]/2", BW: "a4@9 ~@2 g4@3 ~@2", BX: "a#4@9 ~@2 g4@4 ~", BY: "g4@5 f4@5 ~ e4@5",
  BZ: "d4@5 c4@5 ~ a3@2 ~@3", CA: "b4@7 ~", CB: "b4@11 g4@4 ~", CC: "[c5@18 ~@3 a4@5 ~ g4@4 ~]/2", CD: "c5@15 ~",
  CE: "c5@4 ~ c5@4 ~@2 c5@3 ~@2", CF: "g4@15 ~", CG: "a#4@5 g4@5 ~ f4@3 ~@2",
  CH: "[a4@9 ~@2 a4@8 ~@2 a4@4 ~@2 a4@3 ~@2]/2", CI: "a4@7 ~", CJ: "a4@13 ~@3",
  CK: "[a#4@7 ~@4 a4@8 ~@2 g4@6 f4@4 ~]/2", CL: "[d#4@8 ~@3 d4@9 ~ a#3@5 ~ g3@3 ~@2]/2",
  CM: "[g4@9 g5@10 ~@2 g5@6 f5@4 ~]/2", CN: "g5", CO: "~@5 a#5@5 ~ a5@5", CP: "[g5@9 ~@2 g5@9 ~ g5@9 ~@2]/2", CQ: "d5",
  CR: "~@5 [g3,d4,g4] ~@10", CS: "~@5 [g3,c4] ~@10", CT: "~@5 [g3,d4,g4,a4] ~@10", CU: "~@5 [g3,d4,g4]@6 ~@5",
  CV: "~@5 [g#3,g#4] ~@10", CW: "~@5 [g#3,g#4] ~@5 [g#3,d#4,g#4] ~@4", CX: "[~@5 [g3,d4,g4]@13 ~@3 [d4,g4]@9 g3@2]/2",
  CY: "d4@2 ~@3 [g3,d4]@2 ~@4 g3 ~@4, ~@5 g4@4 ~@7", CZ: "[~@2 g3@19 b3@5 ~@6, g2@5 ~@3]/2",
  DA: "[~@11 e4@15 ~@6, a3@13 ~@3]/2", DB: "~@5 [b3,d4,f#4] ~@8 [b3,d4,f#4] ~", DC: "~@3 [b3,d4]@9 ~@4",
  DD: "[~@16 f4@11 ~@5, ~@5 a#3@21 ~@6, ~@11 d4@16 ~@5]/2", DE: "[d3,c4,e4]/3", DF: "~@5 [d3,c4,e4,g4] ~@10",
  DG: "~@3 [g4,a#4,d#5] ~@7 [g4,a#4,d#5] ~@4", DH: "[g4,a#4,d#5]@15 ~", DI: "[a#3@11 ~@5]/2", DJ: "[d3,g3,c4,e4] ~@7",
  DK: "[g3,c4,e4] ~@7", DL: "[g3,c4,d#4] ~@7", DM: "~@9 [e4,a#4]@5 ~@2", DN: "[e4,a#4]@10 ~ g4@4 ~",
  DO: "[g4@8 ~@3 a#4@16 g4@3 ~@2]/2",
  DP: "[[b3,d4,g4]@3 ~@11 g4@10 ~ f4@14 ~@2 g5@11 ~ g5@7 g5@19 ~@13 d5@17 f5@19, ~@9 b3@25 ~@45 g5@15 ~@34, ~@83 f5@6 f5@5 ~@34, ~@43 d5@3 ~@18]/8", // G
})).s("gm_overdriven_guitar").gain(0.42)

// chords · overdriven guitar · "LEAD GUIT" · soft notes
const overdriven_guitar_soft = note(`<
  ~@26 A@2 ~@2 B ~@6 C D@2 ~@2 E@2 F@2 G ~@27 A@2 ~@2 B ~@6 C D@2 ~@2 E@2 F@2 G ~@27 A@2 ~@2 B ~@6 C D@2 ~@2 E@2 F@2 G
  ~@27 A@2 ~@2 B ~@6 C D@2 ~@2 E@2 F@2 G ~@109 H@2 ~@2 I J ~@9 K L@2 ~ M ~@2 N@3 ~@5 E@2 F@2 G ~@27 A@2 ~@2 B ~@24
>`.pickRestart({
  A: "[~@5 d4@11 ~@16, b3@21 ~@11]/2", B: "f#4@3 ~@5", C: "c4@15 ~", D: "[c4, d#4@27 ~@5]/2",
  E: "[~@5 b3@21 ~@6, g3]/2", F: "[~@5 c4@18 ~@9, g3@7 ~]/2", G: "~@5 b3@6 ~@5", H: "~@5 d#4 ~@10", I: "~@5 g3@6 ~@5",
  J: "g4 ~@7", K: "~@11 d4@3 ~@2", L: "[~@5 c4@20 ~@7]/2", M: "~@3 f#4@7 ~@6", N: "g4/3",
})).s("gm_overdriven_guitar").gain(0.24)

// chords · rock organ · "ORGAN"
const rock_organ = note(`<
  ~@2 A@4 B@4 C@2 D@2 E@4 F@8 G@2 H@2 I@2 J@2 K@4 L@4 M N O P Q R S@2 A@4 B@4 C@2 D@2 E@4 F@8 G@2 H@2 I@2 J@2 K@4 L@4 M
  N O P Q R S@2 A@4 B@4 C@2 D@2 E@4 F@8 G@2 H@2 I@2 J@2 K@4 L@4 M N O P Q R S@2 A@4 B@4 C@2 D@2 E@4 F@8 G@2 H@2 I@2 J@2
  K@4 L@4 M N O P Q R S@2 A@4 B@4 C@2 D@2 E@4 F@8 G@2 H@2 I@2 J@2 K@4 L@4 M N O P Q R S@2 A@4 B@4 C@2 D@2 E@4 F@8 G@2
  H@2 I@2 J@2 K@4 L@4 M N O P Q R S@2 T@2 U V W X Y Z AA AB AC AD AE@2 AF AG AH AI AJ AK AL@3 AM AN@6 AO@2 AP AQ AR AS
  AT@2 AU AV M N O P Q R S@2 A@4 B@4 C@2 D@2 E@4 F@8 G@2 H@2 I@2 AW@2 AX AY AZ BA ~@4 BB@2 BC@2 ~ BD@8
>`.pickRestart({
  A: "[[g3,d5]@63 ~, [f4,a4]@61 ~@3]/4", B: "[~@16 a#4@16 a4@16 g4@11 ~@5, [c5,e5]@59 ~@5, g4@45 ~@19]/4",
  C: "[[g4,b4,d5]@31 ~]/2", D: "[[g#4,c5,d#5]@31 ~]/2", E: "[g4@32 f4@18 ~@3 g4@3 ~@3 f4@3 ~@2, [b4,d5]@61 ~@3]/4",
  F: "[[g4,a#4,c5,e5]@125 ~@3]/8", G: "[b4,d5,g5]/2", H: "[[c5,e5,g5]@31 ~]/2", I: "[b4,d5,f#5]/2",
  J: "[[a#4,d5,f5]@29 ~@3]/2", K: "[[c5,e5,g5]@29 ~@3]/4", L: "[[c5,d#5]@59 ~@5, g5@61 ~@3]/4",
  M: "~@5 g5@2 ~@9, ~@5 d5 ~@10", N: "~@5 c5@5 ~ b4@3 ~@2, [d5,g5]@11 ~@5", O: "~@5 [d5,g5]@2 ~@9",
  P: "~@5 a#4@5 ~ a4@4 ~, [d5,g5]@11 ~@5", Q: "~@5 [d5,g5] ~@10", R: "[d5,g5]@2 ~@3 a#4@5 ~ a4@2 ~@3",
  S: "[[a#4,d5]@15 ~]/2", T: "[g6@2 ~@3 g6@21 ~@6]/2", U: "~@12 f6 ~ d6 ~, ~@11 g6@2 ~@3", V: "f6@5 d6@5 ~ f6@2 ~@3",
  W: "c6@2 ~ g5 ~ a#5@6 g5@4 ~, ~ b5 ~@6", X: "g5@3 a#5 ~ g5@3 ~ a#5 ~ c6@3 ~@2", Y: "d6@3 ~@2 d#6@3 ~@3 d6@3 c6@2",
  Z: "a#5@3 c6@2 a#5@5 ~ g5@2 ~@3", AA: "~@5 [g5,d6,g6]@5 [b5,c6,e6] [f5,g5,a5] [d5,e5] ~@3",
  AB: "~@5 [g5,d6,g6]@5 [b5,c6] [e5,f5,g5,a5] d5 ~@3", AC: "~@6 g6@4 [c6,e6] [g5,a5,b5] [e5,f5] ~@3, ~@3 [g5,d6]@3 ~@2",
  AD: "~@5 [g5,d6,g6]@4 c6 [a5,b5] [e5,f5,g5] ~@4", AE: "[[c6,g6]@31 ~]/2",
  AF: "[d6,g6]@2 ~ a#5@2 g5@5 ~ a5@2 ~@3, ~ c6 ~@6", AG: "a5@2 g5 ~@2 f4@3 ~@3 g4@3 a4 ~",
  AH: "a#5@2 ~ a#5@2 a5@6 g5@5, ~ a5 ~@6", AI: "f5@3 g5@2 f5@3 ~ e5@2 d5@3 g4@2",
  AJ: "a#4@3 c5 ~ a#5 ~ a5 ~ a#5@2 a5@3 ~@2", AK: "g5@3 f5@2 ~@11", AL: "[e6@3 g6@41 ~@2 g6@2]/3",
  AM: "a#6@3 g6@2 a6@3 ~ g6@5 ~@2", AN: "[~@30 a5@2 b5@3 a5@2 b5@3 ~ g5@28 d5@10 ~ e5@5 g5@6 a5@3 ~@2, d6@47 ~]/6",
  AO: "[a#5@2 g5@19 a5@6 ~@5, d6@15 ~]/2", AP: "~@5 [d6,g6] ~@10", AQ: "d6@9 ~@2 c#6@3 c6@2, g6@15 ~",
  AR: "~@11 a#5@3 a5@2", AS: "a#5@4 ~ a5@5 ~ g5@2 ~@3", AT: "[g5@27 a#5@3 g5@2]/2", AU: "a#5@2 ~ g5@13",
  AV: "d5@5 g5@5 ~ d5@3 ~@2", AW: "[[g#4,a#4,c#5,f5]@29 ~@3]/2",
  AX: "[d4,g5]@6 d5@2 [a4,b4] [f4,g4] [d4,e4] ~@5, [c5,e5]@9 ~@7, ~@6 f5 ~@9", // G5 Asus2 Fsus2 Dsus2 C
  AY: "g5@6 f5 d5 [a4,b4] [f4,g4] [c4,d4,e4] ~@5, [c5,e5]@9 ~@7", // Asus2 Fsus2 C
  AZ: "g5@6 f5 ~ [a4,b4] [f4,g4] [d4,e4] ~@5, [c5,e5]@9 ~@7, ~@7 d5@2 ~@7", // Asus2 Fsus2 Dsus2 C
  BA: "g5@5 d5@2 a4 [f4,g4] [c4,d4,e4] [g3,a3,b3] ~@5, [c5,e5]@7 b4@2 ~@7, ~@5 f5 ~@10", // Fsus2 C G C
  BB: "[[g5,d6,g6]@29 ~@3, g3]/2", BC: "[~@5 d#5@6 a#4@7 ~@3 a4@4 ~@2 g4@2 ~@3, ~@5 g5@23 ~@4, ~@5 c5@4 ~@23]/2",
  BD: "[[c5,g5]@6 ~@76 d6@28 ~@4 c5 ~@13, e5@4 ~@5 [b4,d5,g5]@105 ~@14, ~@15 f5@99 ~@14, ~@31 g6@5 ~@28, ~@35 f6@20 ~@9]/8", // C5 G
})).s("gm_rock_organ").gain(0.54).pan(0.2)

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

// drums · rim
const rim = s("rim").struct(`<
// … 95 more lines

More by Holiday Billie