Strudelify

Hello, Good Morning

Nick MacKenzie

KeyA majorTempo194 bpm
0:00/0:00
// Hello, Good Morning — Nick MacKenzie
// 194 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 149 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): MUTED GTR.
setcpm(194/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 · piano · "HONKY TONK"
const piano = note(`<
  ~ A@2 B@2 A@2 B@4 A@4 B@4 A@4 B C B@2 A@4 B@4 A@4 B D E@2 B@2 F@2 G@2 B@2 A@4 B@2 A@2 B@4 A@4 B@4 A@4 B C B@2 A@4 B@4
  A@4 B D E@2 B@2 F@2 G@2 B@2 A@4 B H I@2 J@4 I@4 J@4 I K L@2 I@2 M@2 N@2 I@2 J@2 H@2 I@2 H@2 I@2 H@2 I O
>`.pickRestart({
  A: "[e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3", // E
  B: "[e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3", // A
  C: "[e4,a4,c#5] ~@3 [e4,g#4,b4] ~@3 [e4,a4,c#5] ~@3 [e4,g#4,b4] ~@3", // A E A E
  D: "[e4,g4,c#5] ~@3 [e4,g4,c#5] ~@3 [e4,g4,c#5] ~@3 [e4,g4,c#5] ~@3", // C#dim
  E: "[f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3", // D
  F: "[f#4,a4,d#5] ~@3 [f#4,a4,d#5] ~@3 [f#4,a4,d#5] ~@3 [f#4,a4,d#5] ~@3", // D#dim
  G: "[g#4,b4,d5] ~@3 [g#4,b4,d5] ~@3 [g#4,b4,d5] ~@3 [g#4,b4,d5] ~@3", // G#dim
  H: "[d#4,a4,c5] ~@3 [d#4,a4,c5] ~@3 [d#4,a4,c5] ~@3 [d#4,a4,c5] ~@3", // Adim
  I: "[f4,a#4,d5] ~@3 [f4,a#4,d5] ~@3 [f4,a#4,d5] ~@3 [f4,a#4,d5] ~@3", // A#
  J: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  K: "[f4,a#4,d5] ~@3 [f4,a#4,d5] ~@3 [f4,g#4,d5] ~@3 [f4,g#4,d5] ~@3", // A# Ddim
  L: "[g4,a#4,d#5] ~@3 [g4,a#4,d#5] ~@3 [g4,a#4,d#5] ~@3 [g4,a#4,d#5] ~@3", // D#
  M: "[g4,a#4,e5] ~@3 [g4,a#4,e5] ~@3 [g4,a#4,e5] ~@3 [g4,a#4,e5] ~@3", // Edim
  N: "[a4,c5,d#5] ~@3 [a4,c5,d#5] ~@3 [a4,c5,d#5] ~@3 [a4,c5,d#5] ~@3", // Adim
  O: "[f4,a#4,d5] ~@3 [c4,d#4,a4] ~@3 [d4,f4,a#4] ~@7", // A# Adim A#
})).s("gm_piano").gain(0.17)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B C D A B C E C D A B A B C@3 D A B A B C E C D A B A B C@3 D A B A B C F G H C I J K A@2 C D A B A B C L A B C E
  C D A B A B C@3 M A B A B C E C D A B A B C@3 D A B A B C F G H C D J K A@2 C D A B A B C N O P Q R Q R O@4 Q R Q R O
  S T U O V W X Q Y O P Q R Q R O@2 Q R O P Q R Z AA
>`.pickRestart({
  A: "e2 ~ b1 ~", B: "e2@5 ~@3 b1@4 ~@4", C: "a2 ~ e2 ~", D: "a2@5 ~@3 e2@4 ~@4", E: "a2@3 ~ e2@3 ~ f#2@3 ~ g#2@3 ~",
  F: "a2@4 ~@4 e2@3 ~ d#2@3 ~", G: "d2 ~ a1 ~", H: "d2@5 ~@3 a1@4 ~@4", I: "a2@5 ~@3 e2@3 ~ a2@3 ~", J: "b2 ~ f#2 ~",
  K: "b2@5 ~@3 f#2@4 ~@4", L: "a2@3 ~ a2@3 ~ g#2@3 ~ f#2@3 ~", M: "a2@3 ~ a2@3 ~ g#2@3 ~ f#2@4", N: "f2 ~ c3 ~",
  O: "a#2 ~ f2 ~", P: "a#2@5 ~@3 f2@4 ~@4", Q: "f2 ~ c2 ~", R: "f2@5 ~@3 c2@4 ~@4", S: "a#2@4 ~@4 f2@3 ~ e2@3 ~",
  T: "d#2 ~ a#1 ~", U: "d#2@5 ~@3 a#1@4 ~@4", V: "a#2@5 ~@3 f2@3 ~ a#2@3 ~", W: "c3 ~ g2 ~",
  X: "c3@5 ~@3 g2@3 ~ f#2@3 ~", Y: "f2@3 ~ f2@3 ~ g2@3 ~ a2@3 ~", Z: "a#2@6 ~@2 a#2@7 ~", AA: "f2 ~@3 f2@3 ~ a#2@5 ~@3",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B C D E B F G ~@14 H I J ~ K L ~@2 M N J ~ K L ~@2 O P Q@4 R@4 S@2 T@2 U@2 V W E B F X@3 Y Z AA AB AC AD AE AF
  AG@2 AH AB AI AJ J ~ K L ~@2 M N J ~ K L ~@2 O P Q@4 AK@2 AL@2 S@2 T@2 U@2 AM AN AO AP AQ@2 AR@2 AS@2 AT AU AV@2 AW AX
  AT AY AZ@2 BA@2 BB@2 BC@2 BD ~ BE BF ~@2 BG BH@3 BI@2 BJ BK BL BM
>`.pickRestart({
  A: "[e3,e4]@9 ~@3 f#4@2 ~@2, ~@12 f#3 ~@3", B: "[g#3,g#4]@7 ~ [e3,e4]@6 ~@2", C: "[a3,a4]@10 ~@2 b4@3 ~, ~@12 b3 ~@3",
  D: "[c#4,c#5]@7 ~ [a3,a4]@7 ~", E: "[e3,e4]@5 ~ [f#3,f#4] ~",
  F: "[a3,c#4,a4] ~ [c#4,c#5] ~ [c4,d#4,c5] ~ [b3,d4,b4] ~, ~@4 e4 ~@11", G: "[a3,c#4,a4] ~@3", H: "~ a3 e4@2",
  I: "[a3,c#5] ~@2 c#5 [g#3,b4] ~@3 [a3,a4] ~@3 [g#3,g#4] ~@3, ~@3 a3@2 ~@11", // A G#m A G#
  J: "~@4 [e4,e5] [d#4,d#5] [d4,d5] [c#4,c#5]@4 ~@5", K: "~@12 c#5 ~@3", L: "b4@3 ~", M: "~@12 [b4,f#5] ~@3",
  N: "a4@11 ~@5, e5@9 ~@7", O: "[c#4,e4] [d4,f#4]", P: "[e4,g4] [g4,b4]",
  Q: "[f#4@31 ~ c#5@20 [c#4,c#5] ~@3 [f#4,f#5] ~@3 [e4,e5] ~@3, a4@51 ~@13, ~@31 e4@20 ~@13]/4", // C# F# E
  R: "[[f#4,a4,d#5]@31 ~ g#4@19 e4 ~@4 f#4 ~@3 g#4 ~@3, ~@31 d4@20 ~@13, ~@32 b4@17 ~@15]/4", // D#dim
  S: "[[c#4,a4]@14 ~@2 e4@7 ~ [d#4,c5]@7 ~, ~@15 c#5@8 ~@9]/2", T: "[[d4,b4]@29 ~@3]/2", U: "[[d4,b4]@31 ~]/2",
  V: "[c#4,a4]@6 ~@2 c#5 a4 c#5 ~@2 c#5 e5 ~, ~@6 e5 ~", W: "a5@5 ~@11",
  X: "[[a3,c#4,a4]@4 ~@11 e4@7 ~@2 f#4@7 g#4@8 ~ a4@8]/3", Y: "g#4 ~ b4 a4@5", Z: "g#4@2 ~ g#4@11 ~@2, ~ a4 ~@6",
  AA: "e4@7 ~ g#4@7 ~", AB: "b4@7 ~ g#4@7 ~", AC: "a4 ~@3 c#5@2 b4@10", AD: "a4@13 ~@3", AE: "a4@15 ~",
  AF: "c#5@7 ~ a4@8", AG: "[~@2 [g#4,b4]@13 ~]/2", AH: "g#4@7 ~", AI: "a4@7 ~ e4@8",
  AJ: "[a3,c#5] ~@2 [a3,c#5] [g#3,b4] ~@3 [a3,a4] ~@3 [g#3,g#4] ~@3", AK: "[f#4,a4,d#5]/2",
  AL: "[e4@10 ~ d#4 ~@3 d4@4 e4 ~@4 f#4 ~@3 g#4 ~@3, g#4@19 ~@13, b4@17 ~@15]/2", AM: "c#5@7 ~, e4@3 ~",
  AN: "[f4,a4]@15 ~, c5@13 ~@3", AO: "a#4@13 ~@3", AP: "f4@5 ~@3 d4@6 ~@2", AQ: "[f4@9 ~@3 d4@2 c4@15 ~@3]/2",
  AR: "[c5@13 ~@2 a4@6 ~@3 f4@7 ~]/2", AS: "[a#4 ~@3 a4 ~@3 g4 ~@3 f#4@2 f4@8 ~@2 g4@3 ~ a4@4]/2", AT: "a#4@7 ~",
  AU: "f4@3 ~ d4@4", AV: "[f4 ~@3 e4 ~@3 d#4 ~@3 d4@2 c4@14 ~@4]/2", AW: "c5@7 ~", AX: "a#4@3 ~ a4@3 ~",
  AY: "a#4@2 c5@2 a#4 ~@3 g#4@2 a#4@2 g#4@2 ~@2", AZ: "[[g4,d#5]@31 ~]/2",
  BA: "[[a#4,d5]@19 ~ [a#4,d5]@4 [b4,d#5]@8]/2", BB: "[c5,e5]/2", BC: "[a4@15 ~ g4@7 ~ f4@7 ~, c4]/2",
  BD: "~@4 [f4,f5] [e4,e5] [d#4,d#5] [d4,d5]@4 ~@5", BE: "~@12 d5 ~@3", BF: "c5@3 ~",
  BG: "[a#4,d5]@7 ~ d5@7 ~, ~@7 f5@7 ~@2", BH: "[[c5,d#5]@8 [a#4,d5]@7 ~ c5@32, ~@15 a4@32 ~]/3",
  BI: "[[a#4,d5]@7 ~ d5@7 ~ c5@7 ~ [a#4,d5]@8, ~@7 f5@7 ~ d#5@8 ~@9]/2", BJ: "[c4,a4]", BK: "[a4,c5]",
  BL: "~@4 g5@3 f5@3 c#5@2 c5@2 a#4 ~", BM: "a#4 ~ a4 c4 [c4,a4] ~@3 d4@2 ~@6, ~@8 a#4 ~@7",
})).s("gm_string_ensemble_1").gain(0.36)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 B C D E B C D C D E B E B C D C D E B E B C F C D E B E B G D C D E H E B G I J K C D L M N O C D E H E B G D E B
  G D C D E B E B C D C D E B E B C F C D E B E B G D C D E H E B G I J K C D L M N O C D E H E B G P Q R S T S T Q R Q
  R S T S T Q U V W Q R X Y Z AA Q R S AB S T AC R S T AC R S T AD AE
>`.pickRestart({
  A: "[~@17 g#4@3 [g#2,e3,g#3,b3,e4,g#4]@3 ~ [g#2,e3,g#3,b3,e4,g#4]@3 [e3,g#3,b3,e4,g#4] [g#2,e3,g#3,b3,e4,g#4]@3 [e3,g#3,b3], ~@15 [g#2,e3,g#3]@5 ~@12, ~@4 [b3,e4] ~@3]/2", // E C#m E5
  B: "[g#2,e3,g#3,b3,e4,g#4]@3 ~ [g#2,e3,g#3,b3,e4,g#4]@3 ~ [g#2,e3,g#3,b3,e4,g#4]@3 [e3,g#3,b3,e4,g#4] [g#2,e3,g#3,b3,e4,g#4]@2 ~ [e3,g#3,b3,e4,g#4]", // E
  C: "[a2,e3,a3,c#4,e4,a4]@3 [e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 ~ [a2,e3,a3,c#4,e4,a4]@3 [e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 [e3,a3,c#4]", // A
  D: "[a2,e3,a3,c#4,e4,a4]@3 ~ [a2,e3,a3,c#4,e4,a4]@3 ~ [a2,e3,a3,c#4,e4,a4]@2 ~ [e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@2 ~ [e3,a3,c#4,e4,a4]", // A
  E: "[g#2,e3,g#3,b3,e4,g#4]@3 [e3,g#3,b3,e4,g#4] [g#2,e3,g#3,b3,e4,g#4]@3 ~ [g#2,e3,g#3,b3,e4,g#4]@3 [e3,g#3,b3,e4,g#4] [g#2,e3,g#3,b3,e4,g#4]@3 [e3,g#3,b3]", // E
  F: "[a2,e3,a3,c#4,e4,a4]@3 ~ [g#2,e3,g#3,b3,e4,g#4]@3 ~ [a2,e3,a3,c#4,e4,a4]@3 [e3,a3,c#4,e4,a4] [g#2,e3,g#3,b3,e4,g#4]@2 ~ [e3,g#3,b3,e4,g#4]", // A E A E
  G: "[a2,e3,a3,c#4,e4,a4]@3 [e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 [c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 [e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 [e3,a3,c#4]", // A
  H: "[g#2,e3,g#3,b3,e4,g#4]@3 ~ [g#2,e3,g#3,b3,e4,g#4]@3 [b3,e4,g#4] [g#2,e3,g#3,b3,e4,g#4]@3 [e3,g#3,b3,e4,g#4] [g#2,e3,g#3,b3,e4,g#4]@2 ~ [e3,g#3,b3,e4,g#4]", // E
  I: "[a2,e3,a3,c#4,e4,a4]@3 ~ [a2,e3,g3,c#4,e4,a4]@3 ~ [a2,e3,g3,c#4,e4,a4]@2 ~ [e3,g3,c#4,e4,a4] [a2,e3,g3,c#4,e4,a4]@2 ~ [e3,g3,c#4,e4,a4]", // A A7
  J: "[a2,d3,a3,d4,f#4,a4]@3 [d3,a3,d4,f#4,a4] [a2,d3,a3,d4,f#4,a4]@3 ~ [a2,d3,a3,d4,f#4,a4]@3 [d3,a3,d4,f#4,a4] [a2,d3,a3,d4,f#4,a4]@3 [d3,a3,d4]", // D D5
  K: "[a2,d3,a3,d4,f#4,a4]@3 ~ [a2,d3,a3,d4,f#4,a4]@3 ~ [a2,d3,a3,d4,f#4,a4]@2 ~ [d3,a3,d4,f#4,a4] [a2,d3,a3,d4,f#4,a4]@2 ~ [d3,a3,d4,f#4,a4]", // D
  L: "[b2,f#3,a3,d#4,f#4,b4]@3 [f#3,a3,d#4,f#4,b4] [b2,f#3,a3,d#4,f#4,b4]@3 ~ [b2,f#3,a3,d#4,f#4,b4]@3 [f#3,a3,d#4,f#4,b4] [b2,f#3,a3,d#4,f#4,b4]@3 [f#3,a3,d#4]", // B7 D#dim
  M: "[b2,f#3,a3,d#4,f#4,b4]@3 ~ [b2,f#3,a3,d#4,f#4,b4]@3 ~ [b2,f#3,a3,d#4,f#4,b4]@2 ~ [f#3,a3,d#4,f#4,b4] [b2,f#3,a3,d#4,f#4,b4]@2 ~ [f#3,a3,d#4,f#4,b4]", // B7
  N: "[b2,e3,b3,d4,g#4,b4]@3 [e3,b3,d4,g#4,b4] [b2,e3,b3,d4,g#4,b4]@3 ~ [b2,e3,b3,d4,g#4,b4]@3 [e3,b3,d4,g#4,b4] [b2,e3,b3,d4,g#4,b4]@3 [e3,b3,d4]", // E7
  O: "[b2,e3,b3,d4,g#4,b4]@3 ~ [b2,e3,b3,d4,g#4,b4]@3 ~ [b2,e3,b3,d4,g#4,b4]@2 ~ [e3,b3,d4,g#4,b4] [b2,e3,b3,d4,g#4,b4]@2 ~ [e3,b3,d4,g#4,b4]", // E7
  P: "[a2,f3,a3,c4,f4,a4]@3 ~ [a2,f3,a3,c4,f4,a4]@3 ~ [a2,f3,a3,c4,f4,a4]@2 ~ [f3,a3,c4,f4,a4] [a2,f3,a3,c4,f4,a4]@2 ~ [f3,a3,c4,f4,a4]", // F
  Q: "[a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@3 ~ [a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4]", // A#
  R: "[a#2,f3,a#3,d4,f4,a#4]@3 ~ [a#2,f3,a#3,d4,f4,a#4]@3 ~ [a#2,f3,a#3,d4,f4,a#4]@2 ~ [f3,a#3,d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@2 ~ [f3,a#3,d4,f4,a#4]", // A#
  S: "[a2,f3,a3,c4,f4,a4]@3 [f3,a3,c4,f4,a4] [a2,f3,a3,c4,f4,a4]@3 ~ [a2,f3,a3,c4,f4,a4]@3 [f3,a3,c4,f4,a4] [a2,f3,a3,c4,f4,a4]@3 [f3,a3,c4]", // F
  T: "[a2,f3,a3,c4,f4,a4]@3 ~ [a2,f3,a3,c4,f4,a4]@3 ~ [a2,f3,a3,c4,f4,a4]@3 [f3,a3,c4,f4,a4] [a2,f3,a3,c4,f4,a4]@2 ~ [f3,a3,c4,f4,a4]", // F
  U: "[a#2,f3,a#3,d4,f4,a#4]@3 ~ [a#2,f3,g#3,d4,f4,a#4]@3 ~ [a#2,f3,g#3,d4,f4,a#4]@3 [f3,g#3,d4,f4,a#4] [a#2,f3,g#3,d4,f4,a#4]@2 ~ [f3,g#3,d4,f4,a#4]", // A# A#7
  V: "[a#2,d#3,a#3,d#4,g4,a#4]@3 [d#3,a#3,d#4,g4,a#4] [a#2,d#3,a#3,d#4,g4,a#4]@3 ~ [a#2,d#3,a#3,d#4,g4,a#4]@3 [d#3,a#3,d#4,g4,a#4] [a#2,d#3,a#3,d#4,g4,a#4]@3 [d#3,a#3,d#4]", // D# D#5
  W: "[a#2,d#3,a#3,d#4,g4,a#4]@3 ~ [a#2,d#3,a#3,d#4,g4,a#4]@3 ~ [a#2,d#3,a#3,d#4,g4,a#4]@2 ~ [d#3,a#3,d#4,g4,a#4] [a#2,d#3,a#3,d#4,g4,a#4]@2 ~ [d#3,a#3,d#4,g4,a#4]", // D#
  X: "[c3,g3,a#3,e4,g4,c5]@3 [g3,a#3,e4,g4,c5] [c3,g3,a#3,e4,g4,c5]@3 ~ [c3,g3,a#3,e4,g4,c5]@3 [g3,a#3,e4,g4,c5] [c3,g3,a#3,e4,g4,c5]@3 [g3,a#3,e4]", // C7 Edim
  Y: "[c3,g3,a#3,e4,g4,c5]@3 ~ [c3,g3,a#3,e4,g4,c5]@3 ~ [c3,g3,a#3,e4,g4,c5]@2 ~ [g3,a#3,e4,g4,c5] [c3,g3,a#3,e4,g4,c5]@2 ~ [g3,a#3,e4,g4,c5]", // C7
  Z: "[c3,f3,c4,d#4,a4,c5]@3 [f3,c4,d#4,a4,c5] [c3,f3,c4,d#4,a4,c5]@3 ~ [c3,f3,c4,d#4,a4,c5]@3 [f3,c4,d#4,a4,c5] [c3,f3,c4,d#4,a4,c5]@3 [f3,c4,d#4]", // F7
  AA: "[c3,f3,c4,d#4,a4,c5]@3 ~ [c3,f3,c4,d#4,a4,c5]@3 ~ [c3,f3,c4,d#4,a4,c5]@2 ~ [f3,c4,d#4,a4,c5] [c3,f3,c4,d#4,a4,c5]@2 ~ [f3,c4,d#4,a4,c5]", // F7
  AB: "[a2,f3,a3,c4,f4,a4]@3 ~ [a2,f3,a3,c4,f4,a4]@3 [c4,f4,a4] [a2,f3,a3,c4,f4,a4]@3 [f3,a3,c4,f4,a4] [a2,f3,a3,c4,f4,a4]@2 ~ [f3,a3,c4,f4,a4]", // F
  AC: "[a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@3 [d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4]", // A#
  AD: "[a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@3 [d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@3 [f3,a#3,d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@2 ~ [f3,a#3,d4,f4,a#4]", // A#
  AE: "[a#2,f3,a#3,d4,f4,a#4]@2 ~ [f3,a#3,d4,f4,a#4] [a2,f3,a3,c4,f4,a4]@2 ~ [f3,a3,c4,f4,a4] [a#2,f3,a#3,d4,a#4]@3 ~@5, ~@8 f4 ~@7", // A# F A#
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.3)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E ~ C F E ~ E ~ C ~ C ~ E ~@3 C G ~@2 H ~@3 G ~ I ~ J ~ K G ~ L@2 ~ E ~ M ~ E ~@2 N O ~@3 C P Q ~ E R Q ~ E ~
  E ~ C ~ C ~ E ~@3 C G ~@2 H ~@3 G ~ I ~ J ~ K G ~ L@2 ~ E ~ M ~ E ~@2 N O ~@3 C P Q ~ S ~ T ~ U ~ U ~ T ~@3 U V ~@2 T
  ~ W ~ T ~@2 X Y ~@3 U Z AA ~ T AB AA ~ T AC AA ~@2
>`.pickRestart({
  A: "~@15 b3", B: "g#3 ~@2 [g#3,b3,e4] ~@12", C: "~@3 [g#3,b3,e4] ~@12", D: "~@13 [a3,c#4,e4] ~@2",
  E: "~@3 [a3,c#4,e4] ~@12", F: "~ [a3,c#4,e4] ~@5 [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@2",
  G: "~@7 [g#3,b3,e4] ~@8", H: "~@3 [a3,c#4,e4] ~@11 [a3,c#4]", I: "d4 ~@3 d4 ~@3 d4 ~@2 d4!2 ~@2 d4",
  J: "~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@8", K: "~@7 [a3,c#4,e4] ~@8", L: "d4 ~@3 d4 ~@3 d4 ~@2 d4!2 ~@3",
  M: "~@3 [a3,d4,f#4] ~@12", N: "~@7 [b3,d4,g#4] ~@8", O: "~@3 [b3,d4,g#4] ~@3 [b3,d4,g#4] ~@8",
  P: "d4 ~@2 d4!2 ~@3 d4 ~@3 d4 ~@3", Q: "d4 ~@2 [g#3,b3,d4] d4 ~@3 d4 ~@3 d4 ~@3", R: "d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3",
  S: "d#4 ~@2 [f3,a3,d#4] d#4 ~@3 d#4 ~@2 d#4!2 ~@2 d#4", T: "~@3 [a#3,d4,f4] ~@12", U: "~@3 [a3,c4,f4] ~@12",
  V: "~@7 [a3,c4,f4] ~@8", W: "~@3 [a#3,d#4,g4] ~@12", X: "~@7 [c4,d#4,a4] ~@8",
  Y: "~@3 [c4,d#4,a4] ~@3 [c4,d#4,a4] ~@8", Z: "d#4 ~@2 d#4!2 ~@3 d#4 ~@3 d#4 ~@3",
  AA: "d#4 ~@2 [a3,c4,d#4] d#4 ~@3 d#4 ~@3 d#4 ~@3", AB: "d#4 ~@3 d#4 ~@3 d#4 ~@3 d#4 ~@3",
  AC: "d#4 ~@2 d#4!2 ~@3 d#4 ~@3 d#4 ~@2 d#4",
})).s("gm_electric_guitar_muted").gain(0.24).pan(0.8)

// other · alto sax
const alto_sax = note("<~ A B@2 C D E F G ~@47 H I J@2 K ~@47 L M N O P@2 Q@3 R S T@2 U V W@2 ~@22 X Y>".pickRestart({
  A: "g#4@12 f#4 ~ b4@2, ~@13 g#4@2 ~",
  B: "[g#4 ~@6 g#4@2 ~@2 e4 f#4@2 ~@2 a4 ~@3 a4 ~@3 a4@4 f#4 ~ g#4@2, ~@15 g#4@2 ~@12 g4@2 ~]/2",
  C: "a4@2 ~@2 f#4@2 ~@2 e4@2 f#4@2 a4@2 f#4 ~, ~@3 a4@2 ~@11", D: "g#4@2 ~@6 g#4@3 b4 g#4@3 b4",
  E: "g#4@5 ~@2 e4@2 ~ f#4 ~ g#4@2 ~ b4", F: "a4@2 ~@2 e4@2 ~@2 d#4@2 ~ d#4 d4@2 ~ d4", G: "c#4@5 ~@11", H: "~@15 d#4",
  I: "e4@2 d#4@2 e4@2 d#4@2 e4@3 ~ f#4@2 a4@2, ~@11 f4@2 ~@3",
  J: "[g#4@4 ~@2 g#4 ~@3 e4@2 f#4@3 ~ a4@4 e4@4 d#4@3 ~ d4@4, ~@15 g#4@2 ~@15]/2", K: "c#4 ~",
  L: "~@6 f4 d#4, ~@11 g4@2 ~@3", M: "d4@3 ~ d4@2 c#4 ~ d4@2 f4 ~@5, ~@3 c#4@2 ~@11", N: "g4@2 ~@4 g4@5 ~@3 d4@2",
  O: "d#4@2 d4@2 d#4@2 d4@2 d#4@2 f4 ~@5",
  P: "[c4@3 [a#3,b3] a3 ~@11 d#4@3 d4 d#4@2 d4 ~ d#4@2 f4@2 ~@3 g#4, ~@15 d4@2 ~@15]/2", // Bmaj7
  Q: "[a4@2 ~@4 a4@3 ~@7 f4@3 e4 f4@3 e4 f4@2 g4 ~@4 d4@8 ~@9, ~@6 g#4 ~@8 g4@2 ~@31]/3", R: "~ d5@3, ~@4 c#5 ~@11",
  S: "c5@2 c5 ~ a#4@2 a#4 ~ a4@2 a4 ~ g4@2 ~@2", T: "[f4 g4 f4 e4 f4@3 e4 f4@2 ~ g4 ~@3 c4@13 ~@4]/2",
  U: "~@4 a4@8 g#4 ~@3", V: "a4@2 a4 ~ f4 ~@3 g4@4 f4 ~@3", W: "[a#4@7 ~]/2", X: "~@4 g4@4 f4@3 c#4 d4@3 ~",
  Y: "a#3 ~ g3 ~ a#3 ~@3, ~@3 f3@2 ~@11",
})).s("gm_alto_sax").gain(0.46)

// other · ocarina
const ocarina = note("<~@27 A B ~@6 A B ~@14 A B ~@26 A B ~@6 A B ~@14 A B ~@30 C D ~@12>".pickRestart({
  A: "~@12 g#5 ~@3", B: "e5@5 ~@11", C: "~@12 a5 ~@3", D: "f5@5 ~@11",
})).s("gm_ocarina").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!148>").gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@40 [~@3 x ~@4 x ~@7] ~@51 [~@3 x ~@4 x ~@7] ~@31 [~@3 x ~@4 x ~@7] ~@24>").gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  [~@3 x]
  [~ x ~ x]!55
  [~@4 x ~@3 x!2 ~ x!2 ~@3]
  [~ x ~ x]!75
  [~@4 x ~@3 x!2 ~ x!2 ~@3]
  [~ x ~ x]!15
  [~ x!2 ~]
>`).gain(0.48)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@2 A ~ B A C A C D C ~ B A@2 ~ E B C A E A@2 ~ E A@2 ~ F A E B E B C ~ E A@3 E ~ A@2 E A@3 E A E ~ C A@2 F C ~@2 G C
  D C ~ B A@2 ~ E B C A E A@2 ~ E A@2 ~ F A E B E B C ~ E A@3 E ~ A@2 E A@3 E A E ~ C A@2 F C A@3 F A@3 H A F A F A@3 H
  ~ A@2 E A@2 F ~ A@2 ~ F A E B E A@2 F E A@3 I
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@15 x", C: "~@7 x ~@8", D: "~@3 x ~@7 x ~@4", E: "~@7 x ~@3 x ~@4", F: "~@11 x ~@3 x",
  G: "~@7 x ~@7 x", H: "~@7 x ~@3 x ~@3 x", I: "~@3 x ~@12",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~@7 A ~@15 A ~@7 A ~@7 A ~@17 A ~ A ~@15 B C ~@6 A ~@7 A ~@7 A ~@7 B ~@23 C@2 A ~@5 A ~@7 C
>`.pickRestart({
  A: "~@3 x", B: "~@2 x!2", C: "~ x ~@2",
})).gain(0.48)

// … 9 more lines