Strudelify
All Blues cover art

Kind of Blue

All Blues

Davis Miles

KeyE minorTempo130 bpm
0:00/0:00
// All Blues — Davis Miles
// 130 bpm, 3/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 193 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@3 A@5 B@4 C@3 D E@2 F@2 G@3 ~ H@2 I J K@2 ~ L M@2 ~ N O@2 ~@2 P Q R Q S T@3 U@2 V@2 W@4 X@3 Y Z@2 AA AB AC@2 AD@2 AE
  AF AG AH AI@2 AJ@2 AK@2 AL@8 AM@2 AN AO AP AO AQ AO AQ AO AR@4 AS@3 AT@3 AU AV AW AX AY@2 AZ@3 BA BB BC@2 BD AW BE
  BF@2 BG@2 BH BI BJ@2 BK BL BM BN BO BP BQ@2 BR BS@2 BT BU BV K@2 ~ BW@5 BX@3 ~ BY@3 BZ@3 CA CB AW BE AW BE CC@2 I J BB
  CD CE BD CF CG CH@4 CI@2 CJ@8 ~
>`.pickRestart({
  A: "[~@12 [f4,b4]@2 ~@10 b4@2 ~@3 b4@2 ~@8 b4@2 ~@2 a4 ~ b4 ~@4 b4@2 ~ b4@2 ~ b4@2 ~ b4@2 b4@3 ~@5 b4@3 ~@2 a4@2 ~@7 a4@2 b4@2 a4 ~@2 g4@29 ~, ~@4 [f4,a4]@4 [f4,a4]@3 a4@3 ~@2 f4@3 f4@4 a4@3 a4@2 a4@3 a4@7 a4@4 b4@3 ~@4 a4@3 a4@3 a4@19 ~@46, ~@6 [g4,b4]@3 b4@3 ~@3 b4@2 a4@3 a4@2 g4@4 g4@5 ~ g4@4 g4@9 ~@2 g4@11 g4@9 g4@9 ~@2 g4@9 ~@33, ~@10 g4@4 [g4,a4]@4 [g4,b4]@3 b4@3 f4@5 f4@5 f4@11 ~ f4@2 ~@8 f4@9 ~ f4@11 f4@2 ~@41, ~@27 b4@2 ~@3 b4@7 ~@2 e5@4 ~@19 b4@5 ~@3 b4@4 ~@6 b4@3 ~@35]/5", // Fdim F G Gsus2 G
  B: "[~ e4@78 ~@17, [f3,b3,b4,e5]@13 ~@3]/4", C: "[[f3,b3,e4,b4,e5]@59 ~@13]/3", D: "~@2 [f3,b3,e4,b4,e5] ~@3",
  E: "[[e3,a#3,d4,g4,d5]@47 ~]/2", F: "[[e3,a#3,d4,c5,g5,c6]@15 ~ [e3,a#3,d4,c5,g5,c6]@8]/2",
  G: "[[f3,b3,e4,b4,f5,b5]@53 ~@19]/3", H: "[~ [c4,f4,c5]@47, [f#3,f5]@47 ~]/2", I: "[g3,c#4,f#4,c#5,f#5]",
  J: "[f#3,c4,f4,c5,f5]", K: "[f3,b3,e4,b4,e5]/2", L: "~ [f3,b3,e4]@23, [g4,b4]@23 ~",
  M: "[~ [f3,e4]@47, [b3,g4,b4]]/2", N: "~@2 [a4,d5], ~ [f3,b3,e4,b4,e5]@2", O: "[~ [f3,e4]@47, b3]/2",
  P: "~@16 [c5,e5]@7 ~, [f3,b3,e4,b4]@23 ~, ~ d5@23", Q: "~@2 [c5,e5], [f3,b3,e4,d5,f5]",
  R: "~@16 [c5,e5]@7 ~, [b3,d5]@23 ~, ~ [f3,e4,b4]@23", S: "~@16 [c5,e5]@7 ~, [f3,b3,e4,b4,d5]@23 ~",
  T: "[~@15 [c5,e5]@7 ~@42 [c5,e5]@8, [f3,b3,e4,d5,f5]@23 e4@48 ~, ~ [f3,b3,b4]@2, ~ d5 [d5,f5], ~@5 [c5,e5]@3 ~]/3", // C Bdim Fdim Dm C
  U: "[~@5 [c5,e5], [a#3,d4,a#4], d5 [d5,f5], ~ e3@47, ~@2 [c5,e5]@3 ~]/2", // C A# Dm C
  V: "[~@5 e5, [e3,d4,a#4], a#3@31 a#3@16 ~, d5 [d5,f5], ~@16 [c5,e5]@23 c5@8 ~]/2", // Em7b5 Dm C
  W: "[~@40 g4@8 ~@41 c4@7, f3@8 c5 [e4,g4] [d4,f4,a4] [e4,g4], b3@2 c5 [g4,b4,d5] b3 e5@3 [f4,a4] b4@3, [g4,b4] a4@2 d5@3, ~ e4@4 c5 [g4,b4] b3@5]/4", // Em Dm Em G F G
  X: "[[f#3,c4,f4]@47 f5@3 ~ g3@21, ~@25 [c#4,f4,c#5]@11]/3", Y: "c5@5 c5, [f#3,c4,a4]", Z: "[f3,b3,b4]/2",
  AA: "[a3,c4,d4,f4,a4]", AB: "[g3,b3,d4,e4,g4]",
  AC: "[~ f3@30 [f3,b4] b3@2 ~@14, [g2,a3,b3,e4]@30 ~ e5@2 ~@15, ~@32 e4 ~@15]/2", AD: "[~@15 d3, [f3,b3,e4,b4,d5]]/2",
  AE: "~@16 [a3,c4]@7 ~, [g2,g3,b3]@23 ~, ~@8 d3@15 ~", AF: "~@9 g3@7 [a3,c4,e4]@8, [b3,d4]@2 ~, ~@8 f3@7 ~@9",
  AG: "~@2 e4, [b3,d4,f4]@23 ~, ~@15 [c4,g4]@8 ~", AH: "~@2 f4, d4, [f4,a4]@5 [a4,c5]@3, ~ [e4,g4,b4]@2",
  AI: "[[e3,a#3,d4,g4,a#4]@31 ~ [e3,d4,c5,g5,c6] ~@15, ~@16 a#3 ~@7]/2", // Em7b5 C
  AJ: "[[e3,a#3,d4,c5,g5,c6]@15 ~@5 g4@4, ~@2 [e3,a#3,d4,a#4,d5]]/2", // Em7b5
  AK: "[~ [f3,b3,e4,e5]@30 ~@2 [f3,e4]@7 [f3,b3,e4,g4,b4,e5]@8, b4@30 ~@2 [a4,d5]@15 ~, ~@32 b3@7 ~@9, ~@11 f4@5]/2", // E Fmaj7 Em D5
  AL: "[[f3,b3,e4,f4,a4,d5]@29 [f3,b3] ~@2 [c4,e4,a4]@7 ~ b3@7 ~ [f#3,c4]@31 ~@17 [g3,c#4,f4,a4]@12 ~@12 [f#3,c4,f4,c5]@13 [f#3,c4,f4,c5]@11 [f3,b3,e4,b4]@47 ~, ~@39 [d4,g4]@8 f4@31 ~@2 [f#3,c4,e4,g#4,b4]@16 ~@13 [g3,c#4,f4,c5]@10 ~@73, ~@22 c5@5 ~@2 f5@12 ~@7]/8", // Bm7b5 Fdim Am F#dim C#aug F E G5 …
  AM: "[[f3,b3,e4,d5,g5,d6] ~@12 [f3,b3,e4,d5,g5,d6]@35]/2", // Em7
  AN: "~@2 e4, [b3,d4,f4,a4,d5]@23 ~, ~@15 [c4,g4,b4,e5]@8 ~", AO: "~@2 [c4,e4,g4,b4,e5], [d4,f4,a4,c5,f5]",
  AP: "~@2 [c4,e4,g4,b4,e5], ~ [b3,d4,f4,a4,d5]@23", AQ: "~ [b3,d5]@14 ~ [c4,e4,g4,b4,e5]@8, [d4,f4,a4]@5 ~@3",
  AR: "[~ [b3,f4]@46 ~ [f3,b3]@15 ~ [f3,b3,c4]@7 ~@16 [c4,e4]@9, [d4,a4,d5]@46 ~ d4@23 ~ [b3,f4]@25, ~@48 g2@23 ~ [f3,d4]@24, ~@63 e4@7 ~@26]/4", // Bdim Fdim F C D5 Bdim Dm
  AS: "[[g2,f3,a3,b3,d4]@30 ~@2 [f3,b3,e4,b4,e5]@8 [f3,b3,e4,a4,d5]@24 ~ [d3,f3,a3]@7, ~@64 c4@7 ~]/3", // G7 E Bm7b5 Dm
  AT: "[[e3,g3,b3,d4]@7 ~@18 [e3,d4]@30 ~ [e3,a#3,d4,g4,c5] ~@15, ~@8 [f3,a3,c4,e4]@16 a#3@31 ~@17, ~@21 g4@34 ~@17]/3", // Em7 E7 Em7b5 Fmaj7
  AU: "[e3,a#3,d4]@2 [e3,a#3,d4,c5,e5], [a#4,d5]@23 ~", AV: "[e3,a#3,d4]@2 [e3,a#3,d4,c5,e5], [d5,f5]",
  AW: "[f3,b3,e4]@2 [f3,b3,e4,a4,c5], [g4,b4]", AX: "[f3,b3,e4]@15 ~ [f3,b3,e4,c5]@8, [b4,d5], ~@15 e5@8 ~",
  AY: "[[f3,b3,e4]@15 ~ b3@7 ~@8 f4@8 ~ f4@8, [b4,d5]@22 ~@9 a4@17, ~@15 [f3,e4,a4,c5]@7 ~ [f3,b3,e4,g4,b4]@25]/2", // E Bm Fmaj7 Em
  AZ: "[[f#3,c4]@31 ~@17 [g3,c#4,f4,c#5]@24, ~@31 [f#3,c4,c5]@16 ~@25, ~@39 f5@32 ~]/3", // F#dim Gm7b5 F#dim
  BA: "~ [c4,f4,c5]@12 [f#3,c4,f4,c5,f5]@11, [f#3,a4] ~", BB: "[f3,b3,e4,b4,e5]",
  BC: "[~ [f3,b3,e4]@22 ~ [f3,b3,e4,a4,c5]@24, [b4,d5,g5]@23 f5@24 ~]/2", BD: "[f3,b3,e4,g4,b4,e5]",
  BE: "[f3,b3,e4]@2 [f3,b3,e4,a4,c5], [b4,d5]", // E Fmaj7 Bm
  BF: "[~@41 c5@7, g4@5 a4, [f3,b3,e4]@2 b3, b4 [b4,d5], ~@16 [a4,c5]@17 [f3,e4]@15]/2", // E Bm Am Fmaj7
  BG: "[~@41 [a4,c5]@7, g4@47 ~, ~ [f3,b3,e4]@31 [f3,b3,e4]@16, ~ b4@23 [b4,d5]@24, ~@16 [a4,c5]@25 ~@7]/2", // Am E Bm Am
  BH: "~@2 [b3,d4,e4,g4,c5]", BI: "[c4,e4,f4,a4,d5] g4 [e4,g4,a4,c5,f5], ~ [d4,f4,b4,e5]@2",
  BJ: "[~ [e3,a#3,d4,d5,g5]@30 ~ [e3,a#3,d4,c5,g5,c6]@4 ~@12]/2", BK: "[e3,a#3,d4,c5,g5,c6]@23 ~",
  BL: "~ a#3@7 [e3,a#3,d4]@8 [e3,a#3,d4,a#4,d5,f5]@8, [e3,d4,f4,a#4,d5]@7 ~ [g4,c5,e5]@16", // Em7b5 A# C
  BM: "[f3,b3,e4,b4,e5]@16 [f3,b3,e4,a4,d5]@3 ~@5", BN: "~@8 [f3,b3,e4,g4,b4]@7 ~ [f3,b3,e4,a4,c5]@8",
  BO: "[f3,b3,e4,g4,b4]", BP: "~ a4@23, [f3,b3,f4]", BQ: "[[f#3,c4,f4]@35 ~@8 f5@5, ~@3 c4, ~@37 [f#3,c5]@11]/2",
  BR: "~ [g3,c#4,f4,c5]@22 ~", // Csus4
  BS: "[[f#3,c4,e4,g#4,b4]@12 ~ [f#3,c4,e4,g#4,b4]@10 ~ [f3,b3]@12 ~ [f3,b3,b4]@11, ~@23 [g4,b4]@13 g4@12]/2", // E Fdim G
  BT: "[f3,b3,f4,a4]", BU: "~ [f3,b3,g4,b4]@13 [f3,b3,g4,b4]@10", BV: "~ [f3,b3,f4,a4]@23",
  BW: "[~@16 b4@2 ~@19 b4@2 ~@21 e5@2 ~@9 e5@2 ~@16 b4@31, ~@12 f4@9 a4@3 g4@9 f4@7 b4@6 a4@8 b4@2 a4@3 d5@3 a5@6 b4@6 e5 d5@2 a4 b4@2 d5 e5@39, ~@14 g4@9 f4@8 a4@3 g4@8 f4@5 b4@4 g4@36 a4@33, ~@18 e5@9 b4 e5@10 ~ e5@19 b4@6 e5 d5@2 a4@3 d5@3 a5@47, ~@19 b4@6 a4@5 b4@5 a4@6 a4@3 g4@6 f4@36 d5@34]/5",
  BX: "[~ [e4,b4,e5]@48 ~@23, ~ [f3,b3]@59 ~@12]/3", // E5 Fdim
  BY: "[~ [b3,e4]@2 ~@11 [f3,b3,e4,f5,a5]@48 ~@10, [f3,f5,a5] ~@35]/3", // E5 Fmaj7 F
  BZ: "[~@15 f5@8 ~ e3@48, ~@8 [f3,b3,e4,e5,g5]@15 [a#3,d4,d5]@48 ~]/3", CA: "~ [e3,a#3,d4,g4]@23, a#4",
  CB: "~ [e3,a#3,d4,g4,a#4]@14 [e3,a#3,d4,g4,a#4]@8 ~", CC: "[f#3,c4,f4,a4,c5]/2",
  CD: "[f3,b3,e4]@2 [f3,b3,e4], [b4,d5,g5]", CE: "[f3,b3,e4,a4,c5,f5]",
  CF: "~@15 [a4,c5]@8 ~, [b3,g4,b4]@23 ~, ~ [f3,e4]@23", CG: "~@2 [a4,c5], [b4,d5], ~ [f3,b3,e4]@2",
  CH: "[~@5 [a4,c5], [f3,b3,e4,g4], b4 [b4,d5], ~@2 [a4,c5]@3 ~]/2", // Am Em Bm Am
  CI: "[~ [b4,d5], [f3,b3,e4,g4], b4 ~, ~ [a4,c5]@2]/2", CJ: "[~ [g2,a3]@191, f3@13 ~@35, ~ [b3,e4]@52 ~@139]/8",
})).s("gm_piano").gain(0.22)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B A B A B A B A B A B A B A B C D C D A B A B E F G E A B A B A B A B A B A B A B A B A B A B C D C D A B A B H I G
  E A B A B A B A B A B A B C D C D A B A B H J K L A B A B A B A B A B A B A B A B A B A B C D C D A B A B H I G E A B
  A B A B A B A B A B C D C D A B A B H I G E A B A B A B A B A B A B A B A B A B A B C D C D A B A B H I G E A B A B A
  B A B A B A B M@2 ~@7
>`.pickRestart({
  A: "g1@16 e2@7 ~", B: "f2@16 e2@7 ~", C: "c2@15 ~ a2@8", D: "a#2@16 a2@7 ~", E: "d2@8 b2@7 ~ c3@7 ~", F: "d2",
  G: "d#2@23 ~", H: "d2@15 ~ b2@7 ~", I: "c3@15 ~ d2@8", J: "c3@16 a2@7 ~", K: "d#2@8 a#2@7 ~ d#3@7 ~",
  L: "d2@8 a2@7 ~ d3@8", M: "[g1@47 ~]/2",
})).s("gm_acoustic_bass").gain(0.3)

// other · tenor sax
const tenor_sax = note(`<
  A B A B C@2 D@4 A B A B A B E B E F@3 G B H@2 I J@2 K L M A B A B A B A B ~@104 A B N@3 O A B A B C@2 A B A B E B P B
  A Q@2 B R@5 S@2 T@4 B A B G B U@2 ~@7
>`.pickRestart({
  A: "b3@15 ~ c4@7 ~", B: "d4@15 ~ c4@7 ~", C: "[b3@16 c4@7 d4@15 ~ c4@8 ~]/2", D: "[b3@15 c4@7 ~ d4@15 ~ c4@8 ~]/2",
  E: "a#3@15 c4@8 ~", F: "[~ d4@15 c4@6 ~ b3@16 ~ c4@7 d4@15 ~ c4@8 ~]/3", G: "b3@15 c4@7 ~@2", H: "[~@23 c4@24 ~]/2",
  I: "c#4@23 ~", J: "[c4@21 ~@2 c4@25]/2", K: "~ d4@23", L: "c4", M: "b3@5 ~",
  N: "[b3@15 c4@7 ~ d4@15 ~ c4@7 ~ b3@16 c4@8 ~]/3", O: "d4@15 c4@8 ~", P: "a#3@15 ~ c4@7 ~",
  Q: "[d4@15 ~ c4@7 b3@15 ~ c4@8 ~]/2", R: "[~@23 c4@24 c#4@23 ~ c4@21 ~@3 c4@24 ~]/5", S: "[d4@23 c4@23 ~@2]/2",
  T: "[b3@20 ~@3 b3@15 ~ c4@7 ~ d4@14 ~ c4@8 ~ b3@16 c4@8 ~]/4", U: "[b3@47 ~]/2",
})).s("gm_tenor_sax").gain(0.25)

// other · muted trumpet · "MT TRUMPET"
const muted_trumpet = note(`<
  ~@8 A@2 B@4 C@2 D E F G H@2 I@2 J@4 K L K M ~@7 N O@2 ~ P@5 Q@2 ~ R S T ~ U V W ~ X Y Z AA@2 AB AC ~@2 AD@4 AE ~ AF@3
  AG AH AI AJ AK AL AM@2 ~@2 AN ~@64 AO@2 AP@2 AQ@2 O@2 AR@2 AS G AT@4 AU@4 K L AV@2 ~@8 AW@8 ~
>`.pickRestart({
  A: "[b4@41 ~@3 d4@3 ~]/2", B: "[b4@4 c5@4 b4@35 ~ d4@3 ~]/2", C: "[b4@47 ~]/2", D: "a4@16 a#4@7 ~", E: "c5@2 d5",
  F: "c5@15 ~ a#4@8", G: "a4@19 ~ d4@4", H: "[b4@46 a4 g#4]/2", I: "[~ g4@39 ~@3 g#4@5]/2",
  J: "[a4@45 ~@2 a#4@46 ~@3]/4", K: "a4", L: "b4@23 ~", M: "g4@23 ~", N: "~@20 a4 ~ c5@2", O: "[~ b4@23]/2",
  P: "[~@7 a4@2 g4 ~@3 f4@22 ~@3 e4 ~ f4 ~@4 e4@9 ~@2 d4@2 e4@2 ~@2 d4@35 ~@18 g4 ~ a4 ~@2]/5",
  Q: "[c5@3 ~@2 a#4@23 ~@20]/2", R: "~@6 g4@2 ~@3 g4 ~@10 g4@2", S: "~@19 g4 ~ g4 ~@2", T: "g4@4 ~ g4 ~@18",
  U: "~@5 g4 ~ a#4@3 ~@3 a#4@4 ~@2 a4@3 ~@2", V: "~@15 c5@3 ~@2 c5@2 ~@2, ~@19 c#5@2 ~@3", W: "~@2 c5@3 ~@19",
  X: "~@7 f5@3 ~ e5@2 f5@2 ~ d5@2 ~@2 c5@2 ~@2", Y: "a#4@2 ~@9 a#4@3 ~ c5@3 ~ a#4@2 b4@2 ~", Z: "g4 ~@11",
  AA: "[~@10 f4@3 ~@2 e4@3 ~@5 e4@3 ~@18 e4@2 ~@2]/2", AB: "d4@4 ~@2 d4 ~@14 d4 ~@2", AC: "d4 ~@23",
  AD: "[~@8 d4 ~ f4 ~@2 g4@2 ~ f4@20 ~@2 e4 ~ f4 ~@4 e4@9 ~ d4 ~ e4 ~@2 d4@16 ~@3 c#4 ~ d4 ~ d#4 e4 ~ f4 ~ f#4 ~ g4 g#4 ~ a4 ~ a#4]/4",
  AE: "b4 ~ c5 ~ c#5 d5@11 ~@8",
  AF: "[~@14 d5@2 c5@2 ~@2 a#4@21 ~ a4@3 ~@2 a#4@2 ~ c5@3 ~ a#4@2 ~@2 a4@2 ~@2 c5@2 ~ a#4 ~ b4@3 g4@2]/3",
  AG: "~@3 f4@4 ~ g4@4 ~ f4@8 ~@3", AH: "e4@6 ~@2 f4@4 ~ e4@7 ~ e4@2 ~", AI: "~@5 e4@2 ~ d4@3 ~@13",
  AJ: "~@15 a4@2 a#4@4 ~@3", AK: "a#4@5 ~ g4 ~ c#5@5 ~@3 c5@4 ~ a#4@3", AL: "~@4 a#4@3 ~ c5@3 ~@2 c#5@2 ~ d5@5 ~ c#5 ~",
  AM: "[d5@6 ~@3 e5@2 f5 ~@2 d5@2 ~@3 b4@2 ~@2 c5@2 ~@3 b4@2 ~ g4@2 ~ f4@4 ~@4 g4@5 ~, ~@27 a#4@2 ~@19]/2",
  AN: "~@3 g3 ~ c4@2 ~ a#3 b3@5 ~@10", AO: "[~ b4@41 ~@2 d4@3 ~]/2", AP: "[~@2 b4@3 c5@3 b4@34 ~@2 d4@3 ~]/2",
  AQ: "[b4@4 c5@4 b4@35 ~@2 d4@3]/2", AR: "[a4@15 ~ a#4@7 c5@16 ~ d5@8]/2", AS: "c5@15 a#4@8 ~",
  AT: "[b4@45 a4 ~ g#4@2 g4@39 ~@4 g#4@4]/4", AU: "[~ a4@44 ~@2 a#4@46 ~@3]/4", AV: "[a4@23 g4@23 ~@2]/2",
  AW: "[~ b4@3 ~ c5@3 b4@184]/8",
})).s("gm_muted_trumpet").gain(0.35)

// other · muted trumpet · "MT TRUMPET" · soft notes
const muted_trumpet_soft = note("<~@39 A ~@11 B ~@3 C D E ~@2 F G H I ~@7 J ~@7 K ~@5 L ~ M ~@105>".pickRestart({
  A: "~@18 g4 ~@5", B: "~@2 g4@3 ~@12 g4@3 ~@4", C: "~@11 g4 ~@12", D: "~@2 a4 ~@19 a#4@2", E: "~@2 a#4 ~@5",
  F: "~@7 g4 ~@16", G: "~@5 d4@2 ~@4 d4@2 ~@11", H: "~@19 d4@2 ~@3", I: "~ d4 ~@4", J: "~@5 c4 ~@18", K: "~ d4@2 ~@21",
  L: "~ f4@2 ~@9", M: "~@16 g3@5 ~@3",
})).s("gm_muted_trumpet").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@88 A ~@15 A ~@23 A ~@7 A ~@7 A ~@48>".pickRestart({
  A: "x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@3 ~@2 C ~ A D E F G@3 A@3 G H G A D I G A@2 J A@6 G C A@3 K A L G A@2 C D M G E D M G ~@3 A ~ A N A@3 O P M Q
  R G E S A S ~ S T ~ C U C ~ V S C ~ W S X A G A@5 G A@3 Y A@3 K A G A Z E ~ AA AB AC AD AE AF AG C AH@2 AI E X C ~ S V
  AJ E ~ V AK ~ W AL AJ A@3 C ~ A E A G A@5 G D A D@2 ~ A ~ G A G@2 A E A@2 G A K A ~ AM G A G A C ~ K@2 ~ AN ~@7
>`.pickRestart({
  A: "~@2 x", B: "~ x", C: "~@16 x ~@4 x ~@2", D: "~@13 x ~@10", E: "~@7 x", F: "~@16 x ~@2 x ~@4", G: "~@5 x ~@2",
  H: "~@16 x ~@3 x ~@2 x", I: "~@8 x ~@2 x ~@4 x ~ x ~@5", J: "~@3 x!2 ~@3 x ~@3", K: "~ x ~",
  L: "~@8 x ~@4 x ~@2 x ~@7", M: "~@17 x ~ x ~@4", N: "~@19 x ~@4", O: "~@5 x ~@11 x ~ x ~@4", P: "x ~ x",
  Q: "x ~@14 x ~@7 x", R: "~@5 x ~@10 x ~@3 x ~@3", S: "x", T: "~@19 x ~@3 x", U: "~ x ~@13 x ~@5 x ~@2",
  V: "~ x ~@20 x ~", W: "~@11 x", X: "x ~@12 x ~@10", Y: "~@8 x ~@8 x ~@6", Z: "~@7 x ~@7 x ~@8",
  AA: "~@7 x ~@5 x ~@10", AB: "~@6 x ~@6 x ~@8 x ~", AC: "~@14 x ~@2 x ~@4 x ~", AD: "~ x ~@22", AE: "x ~@18 x ~@4",
  AF: "x ~@2 x ~@7 x ~@4 x ~@2 x ~ x ~@2", AG: "~@14 x!2 ~@8", AH: "x ~@6 x", AI: "x ~@20 x ~ x", AJ: "~@17 x ~@6",
  AK: "~@17 x ~@3 x ~@2", AL: "~@8 x ~@2 x", AM: "~@3 x ~@4", AN: "~ x ~@2 x ~@3 x ~@15",
})).gain(0.35)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@31 A ~@20 B C D A E ~@6 F B ~@2 B ~ G H ~@2 D ~@3 I ~@2 J ~@3 D K ~@22 G ~@3 F A ~@2 G ~ F G B ~ L ~@3 C ~@2 F G ~@6
  M B G B ~@5 D ~@11 G N ~ D ~@5 H ~@2 E G ~ G O B ~@6 D@2 P Q ~@7
>`.pickRestart({
  A: "~@7 x ~@4", B: "~ x ~@22", C: "~@3 x", D: "~@2 x", E: "x", F: "~@17 x ~@6", G: "~@3 x ~@4", H: "~ x ~",
  I: "~@11 x", J: "~@16 x ~@6 x", K: "~@8 x ~@8 x ~@6", L: "~@19 x ~@4", M: "~@5 x ~@11 x ~@6", N: "~@13 x ~@10",
  O: "~@9 x ~@7 x ~@6", P: "~@18 x ~ x ~ x!2", Q: "~@6 x ~@3 x ~ x ~@10 x",
})).gain(0.2)

// drums · clap
const clap = s("cp").struct(`<
  ~@15 A ~@7 B ~@2 C D ~@3 E ~@7 F ~@5 E ~@5 E ~@3 E ~ G H G ~ I ~ E ~@3 E ~ E ~ J ~@3 E ~@3 E ~@4 E ~@2 F ~@15 K ~@3 K
  ~@5 L ~ M ~ E@2 D ~@6 H F ~ E ~ N ~ E ~ F ~ O ~ P ~@2 E F ~@15 C ~@9 E ~ D ~ D@2 Q ~@9 E ~@7
>`.pickRestart({
  A: "~@5 x", B: "~@3 x", C: "~@5 x ~ x", D: "~@13 x ~@10", E: "~@7 x", F: "~@19 x ~@4", G: "~@2 x", H: "~@5 x ~@2",
  I: "~@17 x ~@4 x ~", J: "~ x ~@15 x ~@6", K: "~@14 x ~@4 x ~@4", L: "x ~ x", M: "~@9 x ~ x ~@4 x ~@2 x ~@4",
  N: "~@19 x ~ x ~@2", O: "~@8 x ~@10 x ~@4", P: "~@7 x ~@4", Q: "~@6 x ~@10 x ~@4 x ~",
})).gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A@7 B@2 A B A B C B@2 A@4 B A C D A@4 D A D A D@7 E B A D A D C D F A G D A D@3 A D@7 A ~ A ~ D B D@11 H D I J B A@8 C
  K L D@2 A@2 M A@2 N M A O A ~ A ~ C P M@3 O M Q R D@5 J@3 K D@6 H D@2 E S D@3 E C A K B@2 K@2 A@2 K A B A B A R C@2
  A@3 C@2 T E A C A U A@4 C A@3 C A@2 ~@9
>`.pickRestart({
  A: "~@2 x", B: "~ x", C: "~@5 x ~@2", D: "~ x ~", E: "x ~ x", F: "~ x ~@6", G: "~@7 x ~@11 x ~@4", H: "~@7 x ~@16",
  I: "~@7 x ~@12 x ~@3", J: "~@2 x ~@2 x", K: "~@13 x ~@10", L: "~ x!2", M: "~@7 x", N: "~@5 x ~@18", O: "~@11 x",
  P: "~@8 x ~@12 x ~@2", Q: "~@2 x ~@4 x", R: "~@5 x ~@15 x ~@2", S: "~ x ~@7 x ~@14", T: "x!3", U: "~@13 x ~@7 x ~@2",
})).gain(0.35)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct("<~@63 A B ~ B ~@5 C ~@11 C ~@21 B ~ D ~ D ~@2 B@5 ~@75>".pickRestart({
  A: "x", B: "~ x ~", C: "~@5 x", D: "~@8 x ~@12 x ~@2",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct(`<
  A@6 B C D A E D A E D A@2 F A@2 E C@2 G A E H A I D F A F A J A E C D A K A F A F E L M E N G A I C G A I O C G P Q R
  D S D K A F A E C T A F A F E U E L D V@3 A W H E C X D E Y Z D AA E D W AB A@3 AC A V A V A AD C AE AF AB AG A AH B
  AI D A@3 E U AJ@2 AK A@4 E X C D A E AL A@4 AM A AK F@2 AK@2 A AC F A I D F A AN AO AP A@2 E C AQ AR A AS W D AD D A@2
  E C H A AT AM@3 AU ~@8
>`.pickRestart({
  A: "x!3", B: "x ~@7 x ~@4 x ~@9 x", C: "~@7 x ~@7 x ~@7 x", D: "~ x!2", E: "x ~@7 x ~@7 x ~@6 x", F: "x ~@2 x ~ x",
  G: "~@3 x ~ x", H: "~@7 x ~@7 x ~@8", I: "x ~@11 x ~@7 x ~@2 x", J: "x ~@10 x ~@7 x ~@4", K: "x ~@3 x ~@2 x",
  L: "~@12 x ~@6 x ~@3 x", M: "~@7 x ~@8 x ~@7", N: "~@11 x ~@11 x", O: "~@8 x ~@6 x ~@7 x", P: "x ~@7 x ~@14 x",
  Q: "~@7 x ~@15 x", R: "~@2 x ~@2 x", S: "x ~@11 x ~@10 x", T: "~@2 x!2 ~@2", U: "~@2 x!2 ~ x", V: "x!2",
  W: "x ~@7 x ~@6 x ~@7 x", X: "~@8 x ~@7 x ~@6 x", Y: "~@7 x ~@5 x ~ x ~@7 x", Z: "~@8 x ~@4 x ~@7 x ~ x",
  AA: "x ~ x ~@2 x", AB: "~@13 x ~@10", AC: "x ~ x", AD: "x ~@12 x ~@9 x", AE: "~@14 x ~@8 x", AF: "~@13 x ~@9 x",
  AG: "x ~@12 x ~@10", AH: "x ~@7 x ~@4 x ~@10", AI: "~@7 x ~@5 x ~@9 x", AJ: "~ x ~@6 x ~@4 x ~@6 x ~@3",
// … 9 more lines

More by Davis Miles