Strudelify
Hello, Good Morning cover art

Hello, Good Morning

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.
// note: The whole transcription plays 11 ms ahead of the beat; the grid follows it, so its parts stay together.
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, A@4 for four bars: 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@2 B@2 A@2 B C B@2 A@4 B@4 A@4 B C B@2 A@4 B@4 A@4 B D E@2 B F G@2 A@2 B@2 A@4 B H A@2 B C B@2 A@4 B@3 H A@4 B C
  B@2 A@4 B@4 A@4 B D E@2 B@2 G@2 A@2 B@2 A@4 B I J@2 K@4 J@4 K@4 J L M@2 J N O P K Q J@2 K@4 J@2 K@2 J@2 K@2 R S
>`.pickRestart({
  A: "e2 ~ b1 ~", B: "a2 ~ e2 ~", C: "a2@3 ~ e2@3 ~ f#2@3 ~ g#2@3 ~", D: "a2@4 ~@4 e2@3 ~ d#2@3 ~", E: "d2 ~ a1 ~",
  F: "a2@5 ~@3 e2@3 ~ a2@3 ~", G: "b2 ~ f#2 ~", H: "a2@3 ~ a2@3 ~ g#2@3 ~ f#2@3 ~", I: "f2 ~ c3 ~", J: "a#2 ~ f2 ~",
  K: "f2 ~ c2 ~", L: "a#2@4 ~@4 f2@3 ~ e2@3 ~", M: "d#2 ~ a#1 ~", N: "a#2@5 ~@3 f2@3 ~ a#2@3 ~", O: "c3 ~ g2 ~",
  P: "c3@5 ~@3 g2@3 ~ f#2@3 ~", Q: "f2@3 ~ f2@3 ~ g2@3 ~ a2@3 ~", R: "a#2@6 ~@2 a#2@7 ~", S: "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 A B E F ~@14 G H I ~ J K ~@2 L M I ~ J K ~@2 N O P@4 Q@2 R@2 S@2 T@2 U@2 V W A B E F X Y Z AA AB AC AD AE AF
  AG AH@2 AI AC AJ H I ~ J K ~@2 L M I ~ J K ~@2 N O P@4 Q@2 AK@2 S@2 T@2 U@2 AL AM AN AO AP@2 AQ AR AS@2 AN AT AU@2 AQ
  AV AN AW AX@2 AY@2 AZ@2 BA@2 BB ~ BC AQ ~@2 BD BE@3 BD BF BG BH BI BJ
>`.pickRestart({
  A: "[e3,e4]@5 ~ [f#3,f#4] ~", 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: "[a3,c#4,a4] ~ [c#4,c#5] ~ [c4,d#4,c5] ~ [b3,d4,b4] ~, ~@4 e4 ~@11",
  F: "[a3,c#4,a4] ~@3", G: "~ a3 e4@2", H: "[a3,c#5] ~@2 c#5 [g#3,b4] ~@3 [a3,a4] ~@3 [g#3,g#4] ~@3, ~@3 a3@2 ~@11",
  I: "~@4 [e4,e5] [d#4,d#5] [d4,d5] ~ [c#4,c#5]@4 ~@4", J: "~@12 c#5 ~@3", K: "b4@3 ~", L: "~@12 [b4,f#5] ~@3",
  M: "a4@11 ~@5, e5@9 ~@7", N: "[c#4,e4] [d4,f#4]", O: "[e4,g4] [g4,b4]",
  P: "[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", Q: "[f#4,a4,d#5]/2",
  R: "[[d4,g#4]@20 e4 ~@3 f#4 ~@3 g#4 ~@3, b4@17 ~@15]/2", 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: "e4@7 ~ f#4@7 ~", Y: "g#4 a4", Z: "g#4 ~ b4 a4@5", AA: "g#4@2 ~ g#4@11 ~@2, ~ a4 ~@6", AB: "e4@7 ~ g#4@7 ~",
  AC: "b4@7 ~ g#4@7 ~", AD: "a4 ~@3 c#5@2 b4@10", AE: "a4@13 ~@3", AF: "a4@15 ~", AG: "c#5@7 ~ a4@8",
  AH: "[~@2 [g#4,b4]@13 ~]/2", AI: "g#4@7 ~", AJ: "a4@7 ~ e4@8",
  AK: "[e4@10 ~ d#4 ~@3 d4@5 e4 ~@3 f#4 ~@3 g#4 ~@3, g#4@19 ~@13, b4@17 ~@15]/2", AL: "c#5@7 ~, e4@3 ~",
  AM: "[f4,a4]@15 ~, c5@13 ~@3", AN: "a#4@7 ~", AO: "f4@5 ~@3 d4@6 ~@2", AP: "[f4@9 ~@3 d4@2 c4@15 ~@3]/2",
  AQ: "c5@13 ~@3", AR: "a4@6 ~@2 f4@7 ~", AS: "[a#4 ~@3 a4 ~@3 g4 ~@3 f#4@2 f4@8 ~@2 g4@3 ~ a4@4]/2", AT: "f4@3 ~ d4@4",
  AU: "[f4 ~@3 e4 ~@3 d#4 ~@3 d4@2 c4@14 ~@4]/2", AV: "a#4@3 ~ a4@3 ~", AW: "a#4@2 c5@2 a#4 ~@3 g#4@2 a#4@2 g#4@2 ~@2",
  AX: "[[g4,d#5]@31 ~]/2", AY: "[[a#4,d5]@19 ~ [a#4,d5]@4 [b4,d#5]@8]/2", AZ: "[c5,e5]/2",
  BA: "[a4@15 ~ g4@7 ~ f4@7 ~, c4]/2", BB: "~@4 [f4,f5] [e4,e5] [d#4,d#5] [d4,d5]@4 ~@5", BC: "~@12 d5 ~@3",
  BD: "[a#4,d5]@7 ~ [d5,f5]@7 ~", BE: "[[c5,d#5]@8 [a#4,d5]@7 ~ c5@32, ~@15 a4@32 ~]/3", BF: "[c5,d#5] [a#4,d5]",
  BG: "[c4,a4]", BH: "[a4,c5]", BI: "~@4 g5@3 ~ f5@2 c#5@2 c5@2 ~ a#4",
  BJ: "a#4 ~ a4 c4 [c4,a4] ~@3 d4@2 ~@6, ~@8 a#4 ~@7", // F
})).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 P S P Q R Q
  R S P S P Q T U V Q R W X Y Z Q R S AA S P AB R S P AB R S P AC AD
>`.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]@5 ~@12, ~@4 [g#3,b3,e4] ~@3]/2", // E C#m E
  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]@3 [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: "[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
  U: "[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
  V: "[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#
  W: "[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
  X: "[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
  Y: "[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
  Z: "[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
  AA: "[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
  AB: "[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#
  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]@2 ~ [f3,a#3,d4,f4,a#4]", // A#
  AD: "[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@2 C D ~ B E D ~ D ~ B ~ B ~ D ~@3 B F ~@2 G ~@3 F ~ H ~ I ~ J F ~ K@2 ~ D ~ L ~ D ~@2 M N ~@3 B O P ~ D Q P ~ D ~
  D ~ B ~ B ~ D ~@3 B F ~@2 G ~@3 F ~ H ~ I ~ J F ~ K@2 ~ D ~ L ~ D ~@2 M N ~@3 B O P ~ R ~ S ~ T ~ T ~ S ~@3 T U ~@2 S
  ~ V ~ S ~@2 W X ~@3 T Y Z ~ S AA Z ~ S AB Z ~@2
>`.pickRestart({
  A: "~@15 b3", B: "~@3 [g#3,b3,e4] ~@12", C: "~@13 [a3,c#4,e4] ~@2", D: "~@3 [a3,c#4,e4] ~@12",
  E: "~ [a3,c#4,e4] ~@5 [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@2", F: "~@7 [g#3,b3,e4] ~@8",
  G: "~@3 [a3,c#4,e4] ~@11 [a3,c#4]", H: "d4 ~@3 d4 ~@3 d4 ~@2 d4!2 ~@2 d4", I: "~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@8",
  J: "~@7 [a3,c#4,e4] ~@8", K: "d4 ~@3 d4 ~@3 d4 ~@2 d4!2 ~@3", L: "~@3 [a3,d4,f#4] ~@12", M: "~@7 [b3,d4,g#4] ~@8",
  N: "~@3 [b3,d4,g#4] ~@3 [b3,d4,g#4] ~@8", O: "d4 ~@2 d4!2 ~@3 d4 ~@3 d4 ~@3",
  P: "d4 ~@2 [g#3,b3,d4] d4 ~@3 d4 ~@3 d4 ~@3", Q: "d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3",
  R: "d#4 ~@2 [f3,a3,d#4] d#4 ~@3 d#4 ~@2 d#4!2 ~@2 d#4", S: "~@3 [a#3,d4,f4] ~@12", T: "~@3 [a3,c4,f4] ~@12",
  U: "~@7 [a3,c4,f4] ~@8", V: "~@3 [a#3,d#4,g4] ~@12", W: "~@7 [c4,d#4,a4] ~@8",
  X: "~@3 [c4,d#4,a4] ~@3 [c4,d#4,a4] ~@8", Y: "d#4 ~@2 d#4!2 ~@3 d#4 ~@3 d#4 ~@3",
  Z: "d#4 ~@2 [a3,c4,d#4] d#4 ~@3 d#4 ~@3 d#4 ~@3", AA: "d#4 ~@3 d#4 ~@3 d#4 ~@3 d#4 ~@3",
  AB: "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@3 B C D E F ~@47 G H@3 I ~@47 J@2 K@2 L@2 M@3 N O P@2 Q R S@2 ~@22 T U>".pickRestart({
  A: "[g#4@12 f#4 g#4@2 ~ g#4 ~@6 g#4@2 ~@2 e4 f#4@2 ~@2 a4 ~@3 a4 ~@3 a4@4 f#4 ~ g#4@2, ~@15 b4@2 ~@14 g#4@2 ~@12 g4@2 ~]/3",
  B: "a4@2 ~@2 f#4@2 ~@2 e4@2 ~@2 a4@2 ~ f#4, ~@3 a4@2 ~@6 f#4@2 ~@3", C: "g#4@2 ~@6 g#4@3 b4 g#4@3 b4",
  D: "g#4@5 ~@2 e4@2 ~@2 f#4 g#4@2 ~ b4", E: "a4@2 ~@2 e4@2 ~@2 d#4@2 ~ d#4 d4@2 ~ d4", F: "c#4@5 ~@11", G: "~@15 d#4",
  H: "[e4@3 ~ e4@3 ~ e4@3 ~ f#4@3 ~ g#4@4 ~@3 g#4 ~@4 f#4@3 ~ a4@4 e4@4 d#4@3 ~ d4@4, ~@3 d#4@2 ~@2 d#4@2 ~@2 f4@2 ~@2 a4@2 ~@10 e4@2 ~@2 g#4@2 ~@15]/3",
  I: "c#4 ~", J: "[~@12 f4@3 ~ d4@3 ~ d4@3 c#4 d4@3 f4 ~@4, ~@11 g4@2 ~@2 d#4@2 ~@2 c#4@2 ~@11]/2",
  K: "[g4@2 ~@5 g4@5 ~@4 d#4@3 ~ d#4@3 ~ d#4@2 ~ f4 ~@4, ~@15 d4@2 ~@2 d4@2 ~@2 d4@2 ~@7]/2",
  L: "[c4@3 b3 a#3 a3 ~@10 d#4@3 ~ d#4@3 ~ d#4@2 ~ f4 ~@4, ~@15 d4@2 ~@2 d4@2 ~@2 d4@2 ~@7]/2",
  M: "[a4@2 ~@4 g#4 a4@3 ~@6 f4@3 e4 f4@3 e4 f4@2 ~ g4 ~@3 d4@8 ~@9, g#4 ~@14 g4@2 ~@31]/3", N: "~ d5@3, ~@4 c#5 ~@11",
  O: "c5@2 ~ c5 a#4@3 a#4 a4@2 ~ a4 g4@2 ~@2", P: "[f4 g4 f4 e4 f4@3 e4 f4@2 ~ g4 ~@3 c4@13 ~@4]/2",
  Q: "~@4 a4@8 g#4 ~@3", R: "a4@2 ~ a4 f4 ~@3 g4@4 f4 ~@3", S: "[a#4@7 ~]/2", T: "~@4 g4@4 f4@3 c#4 d4@3 ~",
  U: "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)

// drums · crash
const crash = s("cr").struct("<~@25 A ~@31 A ~@19 A ~@31 A ~@23 A ~@15>".pickRestart({
  A: "x",
})).gain(0.4)

stack(
  piano, bass, string_ensemble_1, acoustic_guitar_steel, electric_guitar_muted, alto_sax, ocarina, kick, clap, snare,
  hihat, hihat_soft, open_hat, crash
)