Strudelify
But It's Alright cover art

But It's Alright

Huey Lewis

KeyE majorTempo115 bpm
0:00/0:00
// But It's Alright — Huey Lewis
// 115 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 79 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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
const piano = note(`<
  A B C D E D F B C D E G F B H I J@2 K B C D L B M D E G F B H I J@2 K B C D L B M D E D F B H I J@2 K B N O P Q R O S
  T U Q V W X@2 Y Q Z O P Q R O S T U AA AB
>`.pickRestart({
  A: "~@8 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,e5,g#5,a5,c#6] ~@3", // A Amaj7
  B: "[d5,f#5,b5]@3 ~ [d5,f#5,b5] ~@3 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,g#5]@2 ~@2, ~@3 b4@3 ~@22 [e5,c#6] ~@3", // Bm A C#5 C#m
  C: "[d5,f#5,b5]@3 ~ [d5,b5]@2 ~@2 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@4 ~@8 [c#5,e5,g#5,c#6]@2 ~@2, b4 ~@2 b4@3 ~@26, ~@4 f#5 ~@27", // Bm G A C#m
  D: "[d5,f#5,b5]@3 ~ [d5,f#5,b5]@2 ~@2 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,e5,g#5,c#6]@2 ~@2, ~@3 b4@4 ~@21 a5 ~@3", // Bm A C#m
  E: "[d5,f#5,b5]@3 ~ [d5,f#5,b5]@2 ~@2 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,e5,g#5]@2 ~@2, ~@3 b4@4 ~@21 [a5,c#6] ~@3", // Bm A C#m A
  F: "[d5,f#5,b5]@2 ~@2 [d5,f#5,b5]@2 ~@2 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,e5,g#5,a5,c#6] ~@3, ~@3 b4@4 ~@25", // Bm A Amaj7
  G: "[d5,f#5,b5]@3 ~ [d5,f#5,b5]@2 ~@2 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@4 ~@8 [c#5,e5,g#5,c#6]@2 ~@2, ~@3 b4@4 ~@21 a5 ~@3", // Bm A C#m
  H: "[d5,f#5,b5]@3 ~ [d5,b5]@2 ~@2 [c#5,e5,g#5]@3 ~@5 [c#5,e5,g#5]@3 ~@5 [c#5,e5,g#5]@3 ~@3 c#4@2, b4 ~@2 b4@3 ~@9 [c#4,g#4]@2 ~@6 [c#4,g#4]@2 ~@5 g#4 ~, ~@4 f#5 ~@27", // Bm G C#m C#5
  I: "[c#5,e5,g#5] ~@2 e5 g#5 ~@3 [b4,d5,f#5]@3 ~@5 [b4,d5,f#5]@3 ~@5 [b4,d5,f#5]@3 ~@3 [b3,f#4] ~, ~@2 [c#4,g#4]@2 ~@11 [b3,f#4]@2 ~@6 [b3,f#4]@2 ~@7, ~@3 c#5@2 ~@27", // C#m Bm B5 C#5 B5
  J: "[[b4,d5,f#5] ~ [b3,f#4]@2 [b4,d5] ~@3 [c#5,e5,g#5]@2 ~@5 [c#4,g#4] [c#5,e5,g#5]@2 ~@4 g#4 c#4 [c#5,e5,g#5]@2 ~@4 g#4 c#5 g#5@2 ~ [c#5,g#5]@2 ~@2 [b4,d5,f#5]@2 f#4@2 ~@3 [b4,d5,f#5]@2 [b3,f#4] ~@3 [b4,d5] ~@3 [e4,b4,e5] ~@3 [e4,b4,e5,g#5] f#5 ~@2, ~@4 f#5@2 ~@10 f5 ~@13 c#4@2 ~@2 [c#4,g#4]@2 ~@5 b3 ~@22, ~@31 e5@2 ~@2 e5 ~@16 f#5@2 ~@2 g#5@2 ~@6]/2", // Bm B5 Bm C#m C#5 C#m C#5 Bm …
  K: "[e4,b4,e5,g#5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,e5,g#5,a5,c#6] ~@3, f#5 ~@31", // E A Amaj7
  L: "[d5,f#5,b5]@3 ~ [d5,f#5,b5]@2 ~@2 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,e5,g#5,a5,c#6] ~@3, ~@3 b4@4 ~@25", // Bm A Amaj7
  M: "[d5,f#5,b5]@3 ~ [d5,b5]@2 ~@2 [a4,c#5,e5,a5]@3 ~@5 [a4,c#5,e5,a5]@3 ~@9 [c#5,e5,g#5,c#6]@2 ~@2, b4 ~@2 b4@3 ~@26, ~@4 f#5 ~@27", // Bm G A C#m
  N: "[d5,f#5,b5]@3 ~ [d5,b5]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5,d#6]@2 ~@2, b4 ~@2 b4@3 ~@26, ~@4 f#5 ~@27", // Bm G B D#m
  O: "[e5,g#5,c#6]@3 ~ [e5,g#5,c#6]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5,d#6]@2 ~@2, ~@3 c#5@4 ~@21 b5 ~@3", // C#m B D#m
  P: "[e5,g#5,c#6]@3 ~ [e5,g#5,c#6]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5,b5,d#6] ~@3, ~@3 c#5@4 ~@25", // C#m B Bmaj7
  Q: "[e5,g#5,c#6]@3 ~ [e5,g#5,c#6] ~@3 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,a#5]@2 ~@2, ~@3 c#5@3 ~@22 [f#5,d#6] ~@3", // C#m B D#5 D#m
  R: "[e5,g#5,c#6]@3 ~ [e5,c#6]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@4 ~@8 [d#5,f#5,a#5,d#6]@2 ~@2, c#5 ~@2 c#5@3 ~@26, ~@4 g#5 ~@27", // C#m B D#m
  S: "[e5,g#5,c#6]@3 ~ [e5,g#5,c#6]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5]@2 ~@2, ~@3 c#5@4 ~@21 [b5,d#6] ~@3", // C#m B D#m B
  T: "[e5,g#5,c#6]@3 ~ [e5,g#5,c#6]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@4 ~@8 [d#5,f#5,a#5,d#6]@2 ~@2, ~@3 c#5@4 ~@21 b5 ~@3", // C#m B D#m
  U: "[e5,g#5,c#6]@2 ~@2 [e5,g#5,c#6]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5,b5,d#6] ~@3, ~@3 c#5@4 ~@25", // C#m B Bmaj7
  V: "[e5,g#5,c#6]@3 ~ [e5,c#6]@2 ~@2 [d#5,f#5,a#5]@3 ~@5 [d#5,f#5,a#5]@3 ~@5 [d#5,f#5,a#5]@3 ~@3 d#4@2, c#5 ~@2 c#5@3 ~@9 [d#4,a#4]@2 ~@6 [d#4,a#4]@2 ~@5 a#4 ~, ~@4 g#5 ~@27", // C#m D#m D#5
  W: "[d#5,f#5,a#5] ~@2 f#5 a#5 ~@3 [c#5,e5,g#5]@3 ~@5 [c#5,e5,g#5]@3 ~@5 [c#5,e5,g#5]@3 ~@3 [c#4,g#4] ~, ~@2 [d#4,a#4]@2 ~@11 [c#4,g#4]@2 ~@6 [c#4,g#4]@2 ~@7, ~@3 d#5@2 ~@27", // D#m C#m C#5 D#5 C#5
  X: "[[c#5,e5,g#5] ~ [c#4,g#4]@2 [c#5,e5] ~@3 [d#5,f#5,a#5]@2 ~@5 [d#4,a#4] [d#5,f#5,a#5]@2 ~@4 a#4 d#4 [d#5,f#5,a#5]@2 ~@4 a#4 d#5 a#5@2 ~ [d#5,a#5]@2 ~@2 [c#5,e5,g#5]@2 g#4@2 ~@3 [c#5,e5,g#5]@2 [c#4,g#4] ~@3 [c#5,e5] ~@3 [f#4,c#5,f#5] ~@3 [f#4,c#5,f#5,a#5] g#5 ~@2, ~@4 g#5@2 ~@10 g5 ~@13 d#4@2 ~@2 [d#4,a#4]@2 ~@5 c#4 ~@22, ~@31 f#5@2 ~@2 f#5 ~@16 g#5@2 ~@2 a#5@2 ~@6]/2", // C#m C#5 C#m D#m D#5 D#m D#5 C#m …
  Y: "[f#4,c#5,f#5,a#5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5,b5,d#6] ~@3, g#5 ~@31", // F# B Bmaj7
  Z: "[e5,g#5,c#6]@3 ~ [e5,c#6]@2 ~@2 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5,d#6]@2 ~@2, c#5 ~@2 c#5@3 ~@26, ~@4 g#5 ~@27", // C#m B D#m
  AA: "[e5,g#5,c#6]@3 ~ [e5,g#5,c#6] ~@3 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@9 [d#5,f#5,a#5,b5,d#6] ~@3, ~@3 c#5@3 ~@26", // C#m B Bmaj7
  AB: "[e5,g#5,c#6]@3 ~ [e5,g#5,c#6] ~@3 [b4,d#5,f#5,b5]@3 ~@5 [b4,d#5,f#5,b5]@3 ~@13, ~@3 c#5@3 ~@26", // C#m B
})).s("gm_piano").gain(0.29)

// chords · piano
const piano_2 = note("<~@18 A B C D E F G H I J K L M ~@48>".pickRestart({
  A: "~@14 [e5,g#5] ~", B: "~ [d5,f#5] ~ [d5,f#5] f#5@2 ~@2 [c#5,e5]@3 ~@5 [c#5,e5]@3 ~@9 [e5,g#5]@2 ~@2, ~@4 d5 ~@27",
  C: "f#5@2 f#5@2 f#5@2 ~@3 [c#5,e5]@2 ~@5 [c#5,e5]@3 ~@10 e5@2 ~, d5 ~ d5 ~ d5 ~@23 g#5@2 ~@2", // C#m
  D: "f#5@2 f#5@2 f#5@2 ~@3 [c#5,e5]@3 ~@4 [c#5,e5]@3 ~@9 [e5,g#5]@2 ~@2, d5 ~ d5 ~ d5 ~@27", // C#m E
  E: "[d#5,f#5]@2 f#5@2 [d5,f#5]@2 ~@3 [c#5,e5]@3 ~@4 [c#5,e5]@3 ~@9 [e5,g#5]@3 ~, [d5,e5] ~ d5 ~@29", // D#m D C#m E Dsus2
  F: "f#5@2 f#5@2 f#5@2 ~@3 [c#5,e5]@2 ~@5 [c#5,e5]@3 ~@9 [e5,g#5]@2 ~@2, d5 ~ d5 ~ d5 ~@27", // C#m E
  G: "~ d5!2 f#5 f#5@2 ~@3 [c#5,e5]@2 ~@6 [c#5,e5]@3 ~@8 [e5,g#5]@2 ~@2, ~ f#5@2 ~ d5 ~@27", // C#m E
  H: "f#5 d5 f#5@2 f#5@2 ~@3 [c#5,e5]@2 ~@6 [c#5,e5]@2 ~@10 [e5,g#5]@2 ~, ~@2 d5 ~ d5 ~@27", // C#m E
  I: "~ f#5@2 [d5,f#5]!2 ~@4 [c#5,e5]@2 ~@5 [c#5,e5]@2 ~@10 [e5,g#5]@2 ~@2, ~ d5 ~@30", // D C#m E
  J: "f#5@2 d5 ~ d5 ~@4 [c#5,e5]@2 ~@5 [c#5,e5]@2 ~@11 e5@2 ~, d5 ~ f#5@4 ~@22 g#5@2 ~@2", // C#m
  K: "f#5@2 f#5@2 f#5@2 ~@3 [c#5,e5]@2 ~@6 [c#5,e5]@2 ~@9 [e5,g#5]@2 ~@2, d5 ~ d5 ~ d5 ~@27", // C#m E
  L: "f#5@2 f#5@2 f#5@2 ~@3 c#5@2 ~@5 [c#5,e5]@2 ~@10 e5@2 ~@2, d5 ~ d5 ~ d5 ~@4 e5 ~@6 d#5 ~@10 g#5@2 ~@3", // C#m
  M: "f#5@2 [d5,f#5] [d5,f#5]@2 ~@27, d5 ~@31", // D
})).s("gm_piano").gain(0.2)

// other · brass section
const brass_section = note("<~@50 A@2 B@2 C@2 D@2 E F G H I@4 J K L M N@4 O@2 P@2 Q>".pickRestart({
  A: "[~@9 e5@42 ~ [f#4,f#5]@4 [e4,e5]@2 ~@2 [e4,e5]@4, ~@4 [a4,c#5]@21 ~@7]/2", // F# E A
  B: "[[f#4,f#5]@7 ~ [b4,d#5,f#5]@42 ~@2 [g#4,g#5]@4 [f#4,f#5]@2 ~@2 [f#4,f#5]@4]/2", // F# B G# F#
  C: "[~ g#5@4 ~@3 [b4,b5]@39 ~@6 g#5@3 [f#4,f#5]@2 ~@2 [f#4,f#5]@3 ~, g#4@4 ~@48 g#4@3 ~@9]/2", // B F#
  D: "[[g#4,g#5]@7 ~ [b3,b4]@43 ~@2 [g#4,g#5]@3 [f#4,f#5]@2 ~@2 [f#4,f#5]@4]/2", E: "~ [g#4,g#5]@5 ~@22 [f#4,f#5]@3 ~",
  F: "[g#4,g#5]@2 g#4 ~ g#4@2 ~@22 [g#4,g#5]@4, ~ g#5@2 ~@13", G: "[f#4,f#5]@2 ~@2 [f#4,f#5]@3 ~@25",
  H: "~@27 [g#4,g#5]@4 ~", // G#
  I: "[[f#4,f#5]@2 ~@2 [f#4,f#5]@2 ~@3 c#5 ~@31 [e4,c#5]@30 ~@2 [f#4,a#4,d#5]@29 ~@2 [e4,g#4,c#5]@17 ~@7, ~@8 [f#4,a#4,d#5]@31 ~ g#4@30 ~@58]/4", // F# C#m D#m C#m D#m
  J: "~@9 b4@3 ~@5 [b4,d#5,f#5]@4 ~@8 [d#5,f#5,a#5]@3, ~@2 [d#5,f#5] ~@5", // B D#m
  K: "~@4 [c#5,e5,g#5]@3 ~@2 [b4,d#5,f#5]@3 ~@4 [b4,d#5,f#5]@3 ~@13", // C#m B
  L: "~@8 [b4,d#5,f#5]@4 ~@4 [b4,d#5,f#5]@4 ~@8 [d#5,f#5,a#5]@3 ~", // B D#m
  M: "~@3 [c#5,e5,g#5]@3 ~@3 [b4,d#5,f#5]@3 ~@4 [b4,d#5,f#5]@3 ~@13", // C#m B
  N: "[~@8 [b4,b5]@44 [g#4,g#5]@4 [f#4,f#5]@2 ~@6 [g#4,g#5]@6 ~@3 [b3,b4]@42 ~ [g#4,g#5]@4 [f#4,f#5]@2 ~@3 f#4@3, ~@61 [f#4,f#5]@5 ~@58 f#5@3 ~]/4", // B G# F# G# B G# F#
  O: "[[g#4,g#5]@6 ~@2 [b4,b5]@42 ~@2 [g#4,g#5]@4 [f#4,f#5]@2 ~@3 f#4@3, ~@60 f#5@3 ~]/2", // G# B G# F#
  P: "[[g#4,g#5]@5 ~@3 [b3,b4]@41 ~@4 g#4@3 ~ f#5@2 ~@2 f#5@2 ~, ~@52 g#5@4 f#4@2 ~@3 f#4 ~@2]/2", // G# B
  Q: "~ [g#4,g#5]@2 ~@6 g#5 ~@6 [b3,b4,d#5,f#5,b5]@4 ~@12, ~@8 [b3,b4,d#5,f#5,b5]@4 ~@4 g#5 ~@15", // G# B
})).s("gm_brass_section").gain(0.2)

// chords · piano
const piano_3 = note("<~@14 A@4 B ~@3 C@2 D@2 E@2 F@2 G@4 H ~@11 I J@3 K ~@28>".pickRestart({
  A: "[~@8 c#3@32 b2@31 ~ c#3@32 f#3@16 e3@4 ~@4]/4", B: "e3 ~ a2 ~@5",
  C: "[~@8 a4@42 ~@3 f#4@3 e4@2 ~@3 e4@2 ~, ~@7 g4@2 ~@55]/2", D: "[f#4@8 a3@40 ~@5 f#4@3 e4@2 ~@2 e4@2 ~@2]/2",
  E: "[f#4@4 e4@2 ~@2 a4@41 ~@3 f#4@3 ~ e4@2 ~@2 e4 ~@3]/2", F: "[~ f#4@7 a3@40 ~@4 f#4@4 e4@2 ~@2 e4@3 ~, e4 ~@31]/2",
  G: "[f#4@5 ~@4 [c#4,e4]@31 [b3,d4,f#4]@30 ~@3 [c#4,e4]@30 ~ [a3,d4,f#4]@15 ~@2 [b3,e4,g#4]@4 ~@3, ~@4 g#4@16 ~@16 g#4@15 ~@13]/4", // C#m Bm C#m D E
  H: "[b3,e4,g#4]@3 ~@13", I: "~@8 [c#3,c#4]@10 ~@5 [e3,e4]@4 ~ g#4@4, ~@20 [c#3,c#4]@5 ~@2 g#3@5",
  J: "[~@4 [f#3,f#4]@19 ~ d4@15 ~ [c#3,c#4]@10 ~@2 c#4@3 [e3,e4]@8 [g#3,g#4]@7 ~ [f#3,f#4]@2 [d3,f#3,d4,f#4]@2 ~@2 [d3,f#3] [d4,f#4] [d3,f#3,d4,f#4]@2 ~@3 [f#3,f#4]@2 ~@2 [e3,g#3,e4,g#4]@3 ~@5, ~@23 d3@15 ~@13 c#3@5 ~@15 [d3,d4] ~@11 d3@2 ~@11, ~@84 d4 ~@11]/3", // F# C# E G# F# D F# E …
  K: "[e3,g#3,e4,g#4]@5 ~@27", // E
})).s("gm_piano").gain(0.29)

// other · piano
const piano_4 = note("<~@34 A B C D@2 E F G H I J K L ~@32>".pickRestart({
  A: "~@16 [a5,a6]@9 ~@7", B: "[a5,a6]@10 ~@6 [a5,a6]@11 ~@5", C: "[a5,a6]@11 ~@5 [a5,a6]@12 ~@4",
  D: "[~ a6@12 ~@3 [a5,a6]@13 ~@2 [a5,a6]@7 ~@3 [e5,e6]@4 ~@3 [e5,e6]@7 ~ [f#5,f#6]@3 ~ [a5,a6]@4, a5@3 ~@13]/2", // A E F# A
  E: "~@5 [c#6,c#7]@3 ~@4 [c#6,c#7]@2 ~@2 [a5,a6]@4 ~@4 [f#5,f#6]@4 ~ e6@3, ~@7 e5", // C# A F#
  F: "~@4 [e5,e6]@4 ~@8 [e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [f#5,f#6]@2 ~@2 [a5,a6]@3 ~", // E F# A
  G: "~@4 [c#6,c#7]@3 ~@5 [c#6,c#7]@3 ~@6 c#7@3 ~@4 [a5,a6]@4, ~@20 c#6@3 ~@9", // C# A
  H: "~@8 [e5,e6]@4 ~@4 [e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [f#5,f#6]@2 ~@2 [a5,a6]@3 ~", // E F# A
  I: "~@4 [c#6,c#7]@4 ~@4 [c#6,c#7]@3 ~@2 a6@4 ~@3 [f#5,f#6]@3 ~ [e5,e6]@4, ~@4 a5 ~@3", // C# F# E
  J: "~@5 [e5,e6]@3 ~@8 [e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [f#5,f#6]@2 ~@2 [a5,a6]@3 ~", // E F# A
  K: "~@4 [c#6,c#7]@3 ~@5 [c#6,c#7]@3 ~@5 [a5,a6]@2 ~@3 [f#5,f#6]@4 ~@3", L: "[e5,e6]@5 ~@27",
})).s("gm_piano").gain(0.27)

// bass · piano
const bass = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF@2 AG AH K AI AJ K AK AL S AM AN AO AP@2 AQ AR
  AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP@2 BQ BR BS BT
>`.pickRestart({
  A: "~@7 f#2, ~@27 e2@2 ~@3", B: "~ e2@3 f#2@4 ~ a1@3 ~@5 a1@4 ~@3 e2@8", C: "~ d2@6 ~ a1@3 ~@6 a1@4 ~@3 e2@7 ~",
  D: "d2@7 ~@2 a1@3 ~@4 a1@4 ~@4 d2 e2@7", E: "d2@8 ~ a1@3 ~@5 a1@3 ~@5 e2@7", F: "d2@4 ~@5 a1@3 ~@4 a1@3 ~@5 e2@8",
  G: "d2@6 ~@2 a1@4 ~@4 a1@5 ~@4 e2@7", H: "d2@7 ~ a1@2 ~@6 a1@3 ~@5 e2@8", I: "d2@8 a1@3 ~@5 a1@4 ~@5 e2@7",
  J: "~ d2@7 a1@2 ~@6 a1@3 ~@6 e2@7", K: "d2@2 a1 ~ a1 ~ e2@2", L: "d2@8 a1@4 ~@5 a1@4 ~@4 e2@7",
  M: "d2@8 a1@3 ~@4 a1@4 ~@5 e2@8", N: "d2@8 c#2@4 ~@2 c#2@2 g#1@4 b1@4 ~ c#2@5 ~@2",
  O: "g#1@4 c#2@2 ~@2 b1@4 ~@3 f#1@5 ~@3 b1@5 ~@2 b1@2, ~@7 b1 ~@3 f#1 ~@4",
  P: "f#1@4 b1@3 ~ c#2@5 ~ c#2@2 ~ g#1@3 b1@4 ~ c#2@5 c#2@2",
  Q: "g#1@4 c#2@3 ~ d2@4 ~@4 d2@2 a1@2 d2@2 ~@3 e2@2 ~ e2@2 ~@2",
  R: "~ e2@2 b1@4 ~@2 a1@4 ~@4 a1@4 ~@3 e2@8, ~@3 c#2@2 ~@27", S: "d2@8 a1@4 ~@4 a1@4 ~@5 e2@7",
  T: "d2@8 a1@4 ~@5 a1@3 ~@4 f#2@3 ~ e2@3 ~", U: "c#2@3 ~ b1@4 a1@3 ~@5 a1@4 ~@4 e2@8, ~@3 c#2@4 ~@25",
  V: "d2@7 ~ a1@4 ~@4 a1@4 ~@5 e2@7", W: "d2@8 ~ a1@4 ~@3 a1@5 ~@3 e2@6 ~@2", X: "d2@6 ~@2 a1@4 ~@4 a1@3 ~@6 e2@7",
  Y: "d2@8 a1@4 ~@4 a1@4 ~@4 e2@7 ~", Z: "d2@8 a1@4 ~@4 a1@5 ~ d2@2 e2@8", AA: "d2@4 e2@4 a1@4 ~@5 a1@4 ~@4 e2@7",
  AB: "d2@8 a1@4 ~@5 a1@4 ~@3 e2@8", AC: "d2@8 a1@4 ~@5 a1@4 ~ d2@2 e2@7 ~",
  AD: "d2@5 ~@4 c#2@4 ~ c#2@2 g#1@5 ~ g#1@2 ~ c#2@4 ~ c#2@2",
  AE: "g#1@4 c#2@2 ~@2 b1@3 ~@3 b1@2 f#1@3 ~@3 f#1@2 b1@3 ~@3 b1@2",
  AF: "[f#1@4 b1@3 ~ c#2@4 ~@2 c#2@2 ~ g#1@5 g#1@2 c#2@5 ~@2 c#2@2 g#1@3 c#2@3 ~@2 d2@5 a1@2 d2@4 a1@3 e2@2 ~@3 e2@2 ~@2]/2",
  AG: "e2@2 ~ a#1 b1@2 ~@2 a1@3 ~@6 a1@4 ~@4 e2@7, ~ c#2 ~@14", AH: "~ d2@8 a1@3 ~@4 a1@4 ~@4 e2@7 ~",
  AI: "d2@8 a1@4 ~@4 a1@4 ~@2 d2@2 e2@7 ~", AJ: "d2@8 a1@3 ~@6 a1@5 ~@3 e2@7", AK: "~ d2@7 ~ a1@4 ~@4 a1@4 ~@3 e2@8",
  AL: "d2@9 a1@4 ~@4 a1@4 ~@3 e2@8", AM: "d2@8 a1@4 ~@4 a1@5 ~@4 e2@7", AN: "~ d2@7 a1@4 ~@5 a1@4 ~@4 e2@7",
  AO: "d2@8 a1@3 ~@5 a1@4 ~@4 e2@8",
  AP: "[d2@5 ~@3 c#2@5 ~@2 g#1@5 ~@2 g#1 c#2@5 ~@3 g#1@4 ~ c#2@2 ~@2 b1@4 ~@2 b1@2 f#1@5 ~ f#1 b1@5 ~@2 b1@2, ~@7 c#2 ~@7 c#2 ~@16]/2",
  AQ: "f#1@2 b1 ~ c#2@2 ~ c#2 g#1@2 ~ g#1 c#2@2 ~ c#2",
  AR: "g#1@3 ~ c#2@3 ~ d2@3 ~ d2@2 ~@2 d2@2 a1@2 d2@2 ~@3 e2@2 ~ e2@2 ~@2",
  AS: "e2@2 c#2@2 b1@2 ~@2 a1@4 ~@5 a1@5 ~@3 e2@7", AT: "~ d2@7 a1@3 ~@5 a1@4 ~@5 e2@7",
  AU: "d2@6 ~@2 b1@4 ~@4 b1@5 ~@3 f#2@8", AV: "~ e2@7 ~ b1@4 ~@3 b1@5 ~@3 f#2@7 ~",
  AW: "e2@7 ~ b1@3 ~@5 b1@4 ~@4 f#2@7 ~", AX: "e2@7 ~@2 b1@3 ~@5 b1@4 ~@3 f#2@6 ~@2",
  AY: "e2@3 ~ b1@2 ~@2 b1@2 ~@2 f#2@3 ~", AZ: "e2@7 ~ b1@3 ~@5 b1@5 ~@3 f#2@6 ~@2",
  BA: "e2@5 ~@3 b1@4 ~@4 b1@4 ~@4 f#2@7 ~", BB: "e2@6 ~@3 b1@4 ~@3 b1@5 ~@3 f#2@6 ~@2",
  BC: "e2@6 ~@2 b1@4 ~@4 b1@5 ~@3 f#2@6 ~@2", BD: "e2@8 ~ b1@3 ~@4 b1@5 ~@4 f#2@7",
  BE: "~ e2@5 ~@2 d#2@6 ~@3 a#1@6 ~@2 d#2@7", BF: "a#1@4 d#2@2 ~@2 c#2@5 ~ c#2 g#1@5 ~@2 g#1@2 c#2@6 c#2@2",
  BG: "~ g#1@3 c#2@3 ~@2 d#2@4 ~ d#2@2 a#1@4 ~@2 a#1@2 d#2@4 ~@2 d#2@2",
  BH: "~ a#1@3 d#2@4 e2@5 ~ b1@2 e2@4 b1@3 ~@5 f#2 ~@3", BI: "f#2@2 ~ c#2@2 ~@3 b1@4 ~@4 b1@4 ~@4 f#2@7 ~, ~ d#2 ~@14",
  BJ: "e2@7 ~ b1@4 ~@4 b1@5 ~@4 f#2@7", BK: "e2@7 ~@2 b1@4 ~@3 b1@4 ~@5 f#2@7",
  BL: "~ e2@7 b1@3 ~@5 b1@4 ~@3 f#2 g#2@4 f#2@3 ~", BM: "d#2@2 ~@2 c#2 ~@3 b1@4 ~@5 b1@4 ~@4 f#2@7",
  BN: "e2@8 b1@4 ~@4 b1@6 ~@2 g#2@7 ~", BO: "f#2@7 ~ b1@4 ~@4 b1@4 ~@4 f#2@7 ~", BP: "e2@7 ~ b1@4 ~@4 b1@4 ~@4 f#2@7 ~",
  BQ: "e2@7 ~ b1@4 ~@4 b1@6 ~@3 f#2@7", BR: "~ e2@7 b1@4 ~@4 b1@5 ~@4 f#2@7", BS: "e2@6 ~@2 b1@4 ~@4 b1@5 ~@3 f#2@7 ~",
  BT: "e2@7 ~ b1@4 ~@4 b1@4 ~@12",
})).s("gm_piano").gain(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@2 C D E B C D B@2 C D E B C F E B C D B@2 C D B@2 C D E B C F E B C D B@2 C D B@2 C D E B C F E B C D B@2 C D
  B@2 C D E B C F E B C D B@2 C D E B C G H
>`.pickRestart({
  A: "~@3 x", B: "~@2 x ~@2 x!2 ~", C: "~ x!2 ~@2 x!2 ~", D: "~@4 x ~@2 x ~@2 x ~ x ~@3", E: "x ~ x ~@2 x!2 ~",
  F: "~ x ~ x", G: "~@4 x ~@2 x ~@2 x ~@5", H: "x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B C D E F C D C B C D@2 F C D G F C D C B C D C B C D@2 F C D G F C D C B C D C B C D@2 F C D G F C D C B C D C B
  C D E F C D G F C D C B C D E F C D C ~
>`.pickRestart({
  A: "~@13 x!2 ~", B: "x ~ x!2 ~@4 x ~@7", C: "x ~@7 x ~@4 x ~@2", D: "x!2", E: "x ~@7 x ~@2 x ~@4", F: "~ x",
  G: "x ~@4 x ~@2 x ~@2 x ~@4",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@6 A ~@7 A ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@7 A ~@3 A>".pickRestart({
  A: "~@3 x ~@12",
})).gain(0.72)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@6 A ~@7 A ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@7 A ~@3 A>".pickRestart({
  A: "~ x!2 ~@13",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2
>`.pickRestart({
  A: "~ x ~@6",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@5 A ~@7 A ~@3 A ~@11 B ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@7 A ~@3 C ~>".pickRestart({
  A: "~@12 x!2 ~ x", B: "~@13 x ~ x", C: "~@15 x",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@3 A
  ~@3 A ~@3 A
// … 16 more lines

More by Huey Lewis