Strudelify
Deacon Blues cover art

Aja

Deacon Blues

Steely Dan

KeyE minorTempo120 bpm
0:00/0:00
// Deacon Blues — Steely Dan
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 1/4 at bar 8, 4/4 at bar 9, 1/4 at bar 143, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "piano" named as a piano, played on piano (its clarinet patch is not one); ch 2 "sax" named as a reed, played on alto sax (its shakuhachi patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 187 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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
const piano = note(`<
  A@7 B C D@2 E F G@3 H I J K L M N B C O@2 E F P@2 Q R I S T U V W X Y Z AA AB AC AD@3 Y AE AF AB AG AH@2 AI AJ AK AL
  AM AN B C D@2 E F AO@3 H I J K L M N B C D@2 E F AP@2 Q R I S T U V W X Y Z AA AB AC AD@3 Y AE AF AB AG AH@2 AI AJ AK
  AQ AR@2 AS AT@2 AU AV AW AX AY AZ BA AS AX BB AU AV BC@2 BB BD@2 BE@3 BF@7 BG@8 BH@8 BI@8 BJ@8 BK@7 BL@3
>`.pickRestart({
  A: "[~@18 [c2,c3,b3,c4,e4,g4]@12 [b2,a3,d4,e4,g4]@11 ~ [a3,c4,d4,f4]@11 [a2,g3,c4,f4]@12 ~ [d2,d3]@12 [c#2,c#3,b3,e4,a4]@12 [c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@12 [d#2,d#3,g3,a#3,d4,f4]@18 g#3@17 ~@12 g6@6 ~, ~@41 a#2@12 ~@12 [c#4,f#4,a4]@13 ~@54 [e2,e3]@19 g#4@2 d5 g5@6 d6@7 ~, ~@66 [d4,g4]@9 d4@4 g#4@5, ~@149 g#3@19, ~@151 g4@8 d5@9]/7", // Cmaj7 Em7 Dm7 F D A Cmaj7 G …
  B: "[g2,f#3]@23 ~, [b3,e4]@7 ~", C: "[f2,a3,d4], d#3@5 ~",
  D: "[[g3,d4]@10 ~@2 f2@14 ~ g2@3 a2@3 c3@5 ~ d3@3 a2@2 ~ f2@2 ~, a2@4 [d#3,a3,d4]@11 ~, b3 ~@5]/2", // G5 D
  E: "~ e4@21 ~@2, g2, [f#3,b3]@11 ~, ~ d#4@2 ~@21", F: "[a3,d4]@7 ~, f2, d#3@19 ~@5",
  G: "[[g3,b3,d4]@10 ~@39 g4@20 ~@3, a2@6 [c4,e4]@17 ~ [c4,e4]@10 ~@2, ~@12 f#3@21 b5@9 d2@6 f2@23 ~, ~@4 d2@6 f#5@5 ~@9, ~@8 e5@7 a3@8 ~]/3", // G C
  H: "[e2,g#3,b3,d4,f4]", I: "[a2,g3,a3,c4,e4]", J: "[a#2,g#3,d4,g4]", K: "[e2,g#3,b3,d4,e4]",
  L: "[b2,a3,b3,d#4,f#4]@23 ~", M: "[b2,b3,d4,f4,a4] [e3,b3,d4,e4,g#4]",
  N: "[b2,b3,d4,f4,a4]@7 ~@5 [e2,e3,g#3,d4,g4]@11 ~", // Bm7b5 E7
  O: "[[g3,d4]@10 ~@14 g#5 ~@2 g2@3 [a2,d6]@3 c3@5 ~ d3@3 a2@2 ~ f2@2 ~, a2@4 [d#3,a3,d4]@11 ~, b3@8 ~@4 f2@14 ~@7 c6@12 ~@3, ~@6 a5@5 ~]/2", // G5 D5 D
  P: "[[g3,b3,d4,f#4]@10 ~@10 e5@2 f#5@2 ~@6 f#5@3 e5@10 ~@5, a2@4 a2@11 ~, ~@12 [c#4,f#4]@31 ~@5, ~@24 b5@19 ~@5]/2", // Gmaj7 F#5
  Q: "[a3,c4,e4,g4]@19 ~@5, f2", R: "[g#3,b3,d4,f4]@3 ~, e2@23 ~",
  S: "[g2,g3,a#3,d4,f4]@2 [g2,a#3,d4,f4,a4] [f#2,a#3,c#4,e4,g#4]", T: "[a3,c4,g4]@7 ~, [f2,e4]@23 ~",
  U: "[e2,b3,d4,e4,g4]", V: "[d2,f#3,a3,c4,e4]", W: "[g2,f3,a3,c4,e4]@23 ~", X: "[g3,a3,c4,e4]@11 ~, a2",
  Y: "[e3,d4,e4], [b3,g4]@11 ~", Z: "[a3,c4,d4,f4]@7 ~, d3", AA: "[b3,c4,e4,g4]@7 ~, c3",
  AB: "[a3,a#3,d4,f4]@7 ~, a#2@23 ~", AC: "[a2,g3,c4,e4]@11 ~ [g3,b3,c4,e4]@9 ~@3, a3@8 ~@4 g2@11 ~",
  AD: "[[f#2,f#3,a3,c4,e4]@2 ~@4 [f3,e4]@13 ~@2 [e2,b3,e4,g4]@11 ~ [a3,c4,e4,g4]@11 ~@4 [a2,e4]@24, ~@5 [a3,c4]@13 ~@3 d4@9 ~@17 g3@22 ~@3, ~@6 f2@15 ~@12 f2@14 ~ [a3,c4]@22 ~@2]/3", // F#m7b5 Fmaj7 Em Am7 A5 Am
  AE: "[a3,c4,d4,f4]@19 ~@5, d3@11 ~", AF: "[c2,c3,b3,c4,e4,g4]@3 ~",
  AG: "[a3,c4,e4,g4]@3 ~ [g3,c4,e4]@3 ~, a2@11 b3@8 ~@5, ~@12 g2@11 ~", // Am7 C
  AH: "[[f#2,f#3,a3,c4,e4]@2 ~@4 [f3,e4]@13 ~@2 [e2,b3,e4,g4]@11 ~ [a3,c4,e4,g4]@12 ~@3, ~@5 [a3,c4]@13 ~@3 d4@9 ~@18, ~@2 f2@5 ~@4 f2@5]/2", // F#m7b5 Fmaj7 Em Am7 Am
  AI: "[g3,a3,c4,e4]@5 ~, a2", AJ: "[e3,b3,d4,e4,g4]@5 ~", AK: "[d2,d3,c#4,f#4,a4] [c#2,c#3,b3,e4,a4]",
  AL: "[c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@11 ~", AM: "[d#2,d#3,g3,a#3,d4,f4]@23 ~", AN: "[e2,e3,g#3,d4,g4]@11 ~",
  AO: "[[g3,b3,d4]@10 ~@2 d2@29 ~@8 g4@20 ~@3, a2@6 [c4,e4]@17 ~ [c4,e4]@10 ~@2, ~@12 f#3@32 ~ a3@24 ~@3, ~@42 d2@6 f2@23 ~]/3", // G C
  AP: "[[g3,b3,d4,f#4]@10 ~@2 [c#4,f#4]@31 ~@5, a2@4 a2@11 ~]/2", AQ: "[c2,c3,b3,d4,e4,g4]@2 [b2,a3,d4,g4] ~",
  AR: "[[a#2,g#3,d4,g4]@20 ~@3 [b2,b3,d4,g4]@22 ~@3]/2", AS: "[c3,b3,e4,g4]@23 ~, c4@7 ~",
  AT: "[[b3,d4,e4,g4]@5 ~ a2@6, e3@23 [c#4,f#4]@21 ~@4, ~@8 g3@7 ~]/2", AU: "[f#3,c4,f4]@7 ~, d3@23 ~",
  AV: "[f3,b3,e4]@7 ~, g2", AW: "[b2,a3,d#4,g4]@23 ~", AX: "[b3,d4,e4,g4]@5 ~, e3", AY: "[g3,c#4,f#4]@19 ~@5, a2",
  AZ: "[a3,c4,e4,g4]@9 ~@3 [a#3,e4,a4]@8 ~@4, f2@12 f#2@11 ~", // Am7 A
  BA: "[g3,b3,d4,f#4]@3 ~ [b2,g4]@4, g2 ~, c4 ~@11 [a3,d#4]@10 ~@2", BB: "[g3,c#4,f#4]@7 ~, a2@23 ~",
  BC: "[[b2,g4]@23 ~ [b3,e4,g4]@21 ~@3, [a3,d#4]@21 ~@2 d4@20 ~@5, ~ e3]/2", // Em Adim
  BD: "[[a3,c4,e4,g4]@9 ~@3 [a#3,e4,a4]@8 ~@3 [g3,b3,d4]@8 ~@5 [b2,a3,d#4,g4]@11 a3, f2@11 ~ f#2@11 g2@12 ~@13, ~@23 f#4@10 ~@15]/2", // Am7 A G Baug
  BE: "[[c2,c3,b3,c4,e4,g4]@12 [b2,a3,d4,e4,g4]@11 ~ [a3,c4,d4,f4]@11 [a2,g3,c4,f4]@12 ~ [d2,d3]@12 [c#2,c#3,b3,e4,a4]@12, ~@23 a#2@12 ~@12 [c#4,f#4,a4]@13 ~@12]/3", // Cmaj7 Em7 Dm7 F D A F#m
  BF: "[[c2,c3,b3,d4,e4,g4]@12 d4@12 [d#2,d#3,g3,a#3,d4,f4]@18 g#3@17 ~@12 g6@6 ~ [g2,f#3]@23 ~ [f2,a3,d4]@24 [g3,d4]@10 ~@2 f2@14 ~ g2@3 a2@3 c3@5 ~ d3@3, ~@12 [b2,a3,g4]@15 ~@15 [e2,e3]@19 g#4@2 d5 g5@6 d6@7 ~@91, ~@21 [d4,g4]@9 d4@4 g#4@5 ~@24 b3@4 ~@17, ~@59 g#3@19 [b3,e4]@21 ~@3 d#3@20 ~@4 a2@12 [d#3,a3,d4]@30, ~@61 g4@8 d5@9 ~@90]/7", // Cmaj7 D#maj7 Gmaj7 Dm G5 Em E G5 …
  BG: "[a2@2 ~ f2@2 ~@2 e4@21 ~@2 [a3,d4]@21 ~@3 [g3,b3,d4,f#4]@10 ~@2 [c#4,f#4]@31 ~@5 [a3,c4,e4,g4]@19 ~@5 [g#3,b3,d4,f4]@18 ~@6 [a2,g3,a3,c4,e4]@23 ~ [g2,g3,a#3,d4,f4]@12 [g2,a#3,d4,f4,a4]@6, ~@6 g2@24 f2@24 a2@12 a2@33 ~@3 f2@24 e2@23 ~@43, ~@6 [f#3,b3]@22 ~@2 d#3@19 ~@143, ~@7 d#4@2 ~@183]/8", // D5 Gmaj7 F#5 Am7 G#dim Am7 Gm7 B5
  BH: "[[f#2,a#3,c#4,e4,g#4]@6 [a3,c4,g4]@21 ~@3 [e2,b3,d4,e4,g4]@24 [d2,f#3,a3,c4,e4]@24 [g2,f3,a3,c4,e4]@23 ~ [g3,a3,c4,e4]@22 ~@2 [e3,d4,e4]@24 [a3,c4,d4,f4]@21 ~@3 [c3,b3,c4,e4,g4]@18, ~@6 [f2,e4]@23 ~@73 a2@24 [b3,g4]@22 ~@2 d3@24 ~@18]/8", // F#7 Am7 Em7 D7 Fmaj7 Am7 E7 Dm7 …
  BI: "[~@6 [a3,a#3,d4,f4]@21 ~@3 [a2,g3,c4,e4]@11 ~ [g3,b3,c4,e4]@9 ~@3 [f#2,f#3,a3,c4,e4]@2 ~@4 [f3,e4]@13 ~@2 [e2,b3,e4,g4]@11 ~ [a3,c4,e4,g4]@11 ~@4 [a2,e4]@24 [e3,d4,e4]@24 [a3,c4,d4,f4]@19 ~@5 [c2,c3,b3,c4,e4,g4]@18, ~@6 a#2@23 ~ a3@8 ~@4 g2@11 ~@6 [a3,c4]@13 ~@3 d4@9 ~@17 g3@22 ~@27 d3@22 ~@20, ~@60 f2@15 ~@12 f2@14 ~ [a3,c4]@22 ~@2 [b3,g4]@22 ~@44]/8", // A#maj7 Am7 Cmaj7 F#m7b5 Fmaj7 Em Am7 A5 …
  BJ: "[~@6 [a3,a#3,d4,f4]@21 ~@3 [a3,c4,e4,g4]@9 ~@3 [g3,c4,e4]@9 ~@3 [f#2,f#3,a3,c4,e4]@2 ~@4 [f3,e4]@13 ~@2 [e2,b3,e4,g4]@11 ~ [a3,c4,e4,g4]@11 ~@4 [g3,a3,c4,e4]@20 ~@4 [e3,b3,d4,e4,g4]@20 ~@4 [d2,d3,c#4,f#4,a4]@12 [c#2,c#3,b3,e4,a4]@12 [c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@6, ~@6 a#2@23 ~ a2@11 b3@8 ~@10 [a3,c4]@13 ~@3 d4@9 ~@108, ~@42 g2@11 ~@7 f2@15 ~@12 f2@14 ~ a2@24 ~@66]/8", // A#maj7 Am7 C F#m7b5 Fmaj7 Em Am7 Em7 …
  BK: "[~@6 [a#2,g#3,d4,g4]@20 ~@3 [b2,b3,d4,g4]@22 ~@3 [c2,c3,b3,c4,e4,g4]@12 [b2,a3,d4,e4,g4]@11 ~ [a3,c4,d4,f4]@11 [a2,g3,c4,f4]@12 ~ [d2,d3]@12 [c#2,c#3,b3,e4,a4]@12 [c2,c3,b3,d4,e4,g4]@12 [b2,a3,d4,g4]@12 [d#2,d#3,g3,a#3,d4,f4]@18, ~@77 a#2@12 ~@12 [c#4,f#4,a4]@13 ~@54]/7", // Gm G Cmaj7 Em7 Dm7 F D A …
  BL: "[g#3@17 g#3@48 ~@7, [e2,e3,d4,g4]@2 ~]/3", // Em7
})).s("gm_piano").gain(0.31)

// chords · alto sax · "sax"
const alto_sax = note(`<
  ~@25 A B C@5 D E F@4 G ~@8 H@5 I@2 ~ J@6 ~@2 K@3 ~ L@3 ~@3 M N O@2 ~@2 A B C@5 D E F@4 G ~@13 I@2 ~ P@5 Q@5 R@3 S ~
  Q@5 R@3 S ~@10 T ~ U@8 V@5 ~@12 W@3 X@2 Y@3 ~@9
>`.pickRestart({
  A: "b3 ~", B: "~@22 a3 ~",
  C: "[[b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@33 ~@3 [c4,e4]@24 ~, ~@47 b3@45 ~@28, ~@47 d4@8 ~@65]/5", // E5 D5 C
  D: "~ g#3, [d4,f4]", E: "[c4,e4]@11 [c4,e4]@13, g3@23 ~",
  F: "[~@11 [f4,a4]@5 ~@2 g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~, ~@17 e4@5 ~ d4@22 ~@51, ~@12 g4@23 ~@13]/4", // F C
  G: "[c4,e4]@11 ~", // C
  H: "[~@11 [c4,e4]@11 ~ [g4,b4]@17 ~ [e4,g4]@5 ~ [f4,a4]@23 ~ [e4,g4]@11 ~ [c4,e4]@5 ~ [e4,g4]@6 ~ f4@23 ~, ~@95 d4@24 ~]/5", // C G Em F Em C Em
  I: "[~@5 a4@6 g4@5 ~ e4@6 d4@3 e4@2 d4 c4@15 ~@4]/2",
  J: "[~@11 [c4,e4]@11 ~ [e4,g4]@20 ~@4 f#4@12 e4@11 ~ a4@7 ~@2 a4 a#4 a4 g4@24 ~@12 g4@23 ~@2, ~@107 d4@35 ~@2]/6", // C Em
  K: "[~@18 d4@9 d#4@3 f4@2 g4@3 ~ d4@32 ~@4]/3", L: "[~@18 e4@9 f#4@3 a4@3 b4@3 a4@31 ~@5]/3", M: "d4", N: "d#4",
  O: "[e4@11 d4@12 f4@12 [f4,g4]@11 g4 ~]/2", // Fsus2
  P: "[~@11 [c4,e4]@11 ~ [e4,g4]@20 ~@4 f#4@12 e4@11 ~ a4@7 ~@2 a4 a#4 a4 g4@24 ~@13]/5", // C Em
  Q: "[~@23 g4@6 ~ f#4@5 e4@5 ~ g4@6 f#4@6 e4@6 d4@12 c#4@24 c4@24 ~]/5", R: "[b3@23 d4@48 ~]/3", S: "e4",
  T: "~ b3@2 ~",
  U: "[~@4 a3 ~ [b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@33 ~@3 [c4,e4]@24 ~@13 g#3@12 [c4,e4]@11 [c4,e4]@13 ~@11 [f4,a4]@5 ~ e4, ~@53 b3@45 ~@52 g3@23 ~@19, ~@53 d4@8 ~@65 [d4,f4]@24 ~@42]/8", // E5 D5 C F Dm
  V: "[g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~ [c4,e4]@22 ~@20, ~@5 d4@22 ~@93, ~@3 g4@23 ~@34]/5", // C
  W: "[~@11 a4@6 g4@5 ~ e4@6 d4@3 e4@2 d4 c4@15 ~@22]/3", X: "[~@17 [c4,e4]@11 ~ [e4,g4]@19]/2",
  Y: "[~@5 f#4@12 e4@11 ~ a4@7 ~@2 a4 a#4 a4 g4@24 ~@7]/3",
})).s("gm_alto_sax").gain(0.26)

// chords · alto sax · "sax" · soft notes
const alto_sax_soft = note("<~@22 A@5 ~@5 B ~@27 C ~@16 D@4 ~@5 B ~@54 E@5 ~@4 F ~@36>".pickRestart({
  A: "[~@23 b3@24 [a3,d4]@24 d4@11 ~ [a3,c4]@35 ~@2, ~@23 e4@23 ~@74]/5", B: "~@8 g#3 ~@15", C: "g#3@23 ~",
  D: "[e4@23 [a3,d4]@24 d4@11 ~ [a3,c4]@35 ~@2, b3@25 ~@71]/4", // D5 Am
  E: "[~@6 e4@23 [a3,d4]@24 d4@11 ~ [a3,c4]@35 ~@20, ~@6 b3@25 ~@89]/5", F: "~@14 g#3 ~@9",
})).s("gm_alto_sax").gain(0.15)

// chords · pad poly · "Synth Horns"
const pad_poly = note(`<
  ~@60 A@2 B C@3 D@3 E F G@2 H I J K L@2 M@2 N@5 O P Q@4 R ~@8 S@5 ~@8 T@3 U@2 ~ V@3 ~ T@3 U@2 ~ V@3 ~@8 W@8 X@4 Y@5 ~@7
  Z@6 ~@16
>`.pickRestart({
  A: "[~@23 b3@24 ~]/2", B: "a3", C: "[g3@12 a3@35 b3@24 ~]/3", D: "[a3@23 g3@12 f#3@6 ~ b3@18 a3@11 ~]/3",
  E: "e3@23 ~", F: "f3", G: "[g3@23 g#3@23 ~@2]/2", H: "g#3", I: "a3@11 ~", J: "a3@11 ~ g#3@12", K: "a3@11 b3@11 ~@2",
  L: "[e4@23 [a3,d4]@24 ~, b3@25 ~@23]/2", M: "[b3@11 c4@35 a3 ~]/2",
  N: "[[b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@33 ~@3 [c4,e4]@24 ~, ~@47 b3@45 ~@28, ~@47 d4@8 ~@65]/5", // E5 D5 C
  O: "~ g#3, [d4,f4]", P: "[c4,e4]@11 [c4,e4]@13, g3@23 ~",
  Q: "[~@11 [f4,a4]@5 ~@2 g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~, ~@17 e4@5 ~ d4@22 ~@51, ~@12 g4@23 ~@13]/4", // F C
  R: "[c4,e4]@11 ~", // C
  S: "[~@11 [c4,e4]@11 ~ [g4,b4]@17 ~ [e4,g4]@5 ~ [f4,a4]@23 ~ [e4,g4]@11 ~ [c4,e4]@5 ~ [e4,g4]@6 ~ [f4,c5]@24, ~@95 d4@24 ~]/5", // C G Em F Em C Em F5
  T: "[~@23 [g4,e5]@6 ~ a4@5 ~ b4@6 [g4,e5]@5 ~ a4@5 ~ b4@6 g4@12, ~@29 d5@6 ~@12 d5@5 ~@20]/3", U: "[a4@47 ~]/2",
  V: "[[d4,g4]@23 [g4,b4]@48 ~]/3", // G5 G
  W: "[~@6 e4@23 [a3,d4]@24 ~ b3@11 c4@35 a3 ~ [b3,e4]@23 [a3,d4]@21 ~@3 f#4@10 ~@2 a4@31, ~@6 b3@25 ~@118 b3@43, ~@149 d4@8 ~@35]/8", // D5 E5 D5
  X: "[~@5 [c4,e4]@24 ~@13 g#3@12 [c4,e4]@11 [c4,e4]@13 ~@11 [f4,a4]@5 ~ e4, ~@30 [d4,f4]@24 g3@23 ~@19]/4", // C F Dm
  Y: "[g#4@5 ~@24 e4@23 ~ [c4,e4]@24 ~ [c4,e4]@22 ~@20, ~@5 d4@22 ~@93, ~@3 g4@23 ~@34]/5", // C
  Z: "[~@17 [c4,e4]@11 ~ [g4,b4]@17 ~ [e4,g4]@5 ~ [f4,a4]@23 ~ [e4,g4]@11 ~ [c4,e4]@5 ~ [e4,g4]@6 ~ [f4,c5]@24 ~@18, ~@101 d4@24 ~@19]/6", // C G Em F Em C Em F5
})).s("gm_pad_poly").gain(0.31)

// chords · pad poly · "Synth Horns" · soft notes
const pad_poly_soft = note("<~@63 A@3 ~ B@3 ~@3 C D ~@3 E@3 ~@5 F ~@56 G@3 ~@4 H ~@36>".pickRestart({
  A: "[~@18 d4@9 d#4@3 f4@2 g4@3 ~ d4@32 ~@4]/3", B: "[~@18 e4@9 f#4@3 a4@3 b4@3 a4@31 ~@5]/3", C: "d4", D: "d#4",
  E: "[~@23 d4@11 ~ a3@35 ~@2]/3", F: "~@8 g#3 ~@15", G: "[~@5 d4@11 ~ a3@35 ~@20]/3", H: "~@14 g#3 ~@9",
})).s("gm_pad_poly").gain(0.15)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A@6 B C D E@2 F D G@2 H I J K L M N O P Q R@2 S T U@2 V W J X Y Z AA AB AC AD AE AF AG AH AI@2 AC AD AE AF AJ AH AK@2
  AL AM AN AO@2 AP C D E@2 F D G@2 H I J K L M N O P Q R@2 S T AQ@2 V W J X Y Z AA AB AC AD AE AF AG AH AR@2 AC AD AE AF
  AJ AH AS@2 AL AM AN AT AU@2 AF AV AW AE AX AY AZ AW BA BB BC AV AW BD BE AY AZ AW BA BB BF BG BH BF BI@6 BJ BK@3 BL
  BM@3 BN@4 BO BP@5 BQ BR BS@6 BT BU BV@3 BW@8 BX@2 ~
>`.pickRestart({
  A: "[~@18 c3@12 b2@11 ~ a#2@11 ~ a2@11 ~ d3@11 ~ c#3@12 c3@12 b2@11 ~ d#3@17 ~ e3@12]/6", B: "e2@23 ~",
  C: "g3 ~@2 d3 ~@2 g2@15 d2@3", D: "f2@7 g2", E: "[a2@8 ~ c3@3 f2@15 g2@3 a2@2 ~ c3@6 d3@2 ~ a2@3 f2@3]/2",
  F: "g2@19 ~@2 g2@3", G: "[a2@4 d2@7 f#2@3 g2 ~]/2", H: "~@7 f3, f2", I: "e3@11 ~ e2@11 ~", J: "a2@20 ~ a2@3",
  K: "a#2@19 ~@2 a#2@3", L: "e2@20 ~ a#2@3", M: "b2@20 ~ a#2@3", N: "b2@3 e2@2 ~",
  O: "b2@3 e3 ~@2 e3@3 b2@3 e2@11 ~, ~@5 f3@2 ~@17", P: "g2@20 ~ f#2@2 ~", Q: "f2@20 ~ g#2@2 ~",
  R: "[a2@8 ~ c3@3 f2@18 ~@3 g2@3 a2@2 ~ c3 ~@2 f3@3 f#3@3]/2", S: "g3@19 ~@2 f#3@2 ~", T: "f3@20 ~ e2@3",
  U: "[a2@8 ~ e2@3 a2@15 a3 a#3 b3@3 ~ e3@3 a3@5 ~ e3@3 e2@3]/2", V: "f2@19 ~@2 f2@3", W: "e2@12 e3@11 ~",
  X: "g2@8 ~ g2@3 g3@5 ~ f#3@5 ~", Y: "f3@7 c3", Z: "e3@21 c3@2 ~", AA: "d3@23 ~", AB: "g2@15 d3@3 g3@5 ~",
  AC: "a2@7 ~@2 a2@2 ~ a2@7 ~@2 d3@2 ~", AD: "e3@7 ~@2 e3@2 ~ e3@8 ~ a2@3", AE: "d3@6 ~@3 d3@2 ~ d3@8 ~ a2@3",
  AF: "c3@7 ~@2 c3@2 ~ c3@8 ~ g2@3", AG: "a#2@7 ~@2 a#2@2 ~ a#2@8 ~ f2@3", AH: "a2@7 ~@2 a2@3 g2@6 ~@3 g2@3",
  AI: "[f#2@3 ~@3 f2@5 ~@3 c3 ~ d3 f3@2 ~@2 e3@9 c3@3 f2@9 g2@5 ~]/2", AJ: "a#2@7 ~@2 a#2@2 ~ a#2@7 ~@2 a#2@2 ~",
  AK: "[f#2@3 ~@3 f2@6 ~@3 c3 d3 f3@2 ~@2 e3@8 ~ c3@3 f2@5 ~ f2@2 ~ g2@5 ~]/2", AL: "a2@6 ~@3 a2@2 ~ a2@11 ~",
  AM: "e3@7 ~@2 e3@2 ~ e3@9 ~@3", AN: "d3@7 ~@2 d3@3 c#3@7 ~@5", AO: "[c3@7 ~@2 c3@2 ~ b2@10 ~ d#3@23 ~@2]/2",
  AP: "e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ d2@2 ~ e2@2 ~ f#2@2 ~",
  AQ: "[a2@8 ~ e2@3 a2@15 [a3,a#3] ~@2 b3@3 e3@3 a3@5 ~ e3@3 e2@3]/2", // A#maj7
  AR: "[f#2@3 ~@3 f2@5 ~@3 c3 d3 ~@2 f3@3 e3@9 c3@3 f2@9 g2@5 ~]/2",
  AS: "[f#2@3 ~@3 f2@6 ~@3 c3 ~ d3 f3@2 ~ e3@8 ~ c3@3 f2@5 ~ f2@2 ~ g2@5 ~]/2", AT: "c3@7 ~@2 c3@2 ~ b2@10 ~@2",
  AU: "[a#2@22 ~ b2@23 ~@2]/2", AV: "e2@7 ~@2 e2@2 ~ e2@7 ~@2 e2@3", AW: "a2@6 ~@3 a2@2 ~ a2@7 ~@2 a2@3",
  AX: "g2@7 ~@2 g2@2 ~ g2@4 ~@2 g2@2 ~ a2@2 ~", AY: "b2@6 ~@3 b2@2 ~ b2@7 ~@2 b2@3", AZ: "e3@6 ~@3 e3@2 ~ e3@8 ~ b2@3",
  BA: "f2@11 ~ f#2@11 ~", BB: "g2@11 ~ b2@10 ~@2", BC: "c3@6 g2@3 a2@2 ~ c3@2 ~ e3@2 ~ g2@2 ~ f2@2 ~",
  BD: "d3@7 ~@2 d3@2 ~ d3@7 ~@2 d3@3", BE: "g3@7 ~@2 g3@2 ~ g3@4 ~@2 g2@2 ~ a2@3", BF: "c3@12 b2@11 ~",
  BG: "a#2@11 ~ a2@11 ~", BH: "d3@11 ~ c#3@12",
  BI: "[d#3@17 ~ e3@12 e2@23 ~ g2@20 ~ f#2@2 ~ f2@20 ~ g#2@2 ~ a2@8 ~ c3@3 f2@18 ~@3 g2@3 a2@2 ~ c3 ~@2]/6",
  BJ: "f3 f#3 g3@6", BK: "[~@3 f#3@2 ~ f3@20 ~ e2@3 a2@8 ~ e2@3 a2@15 [a3,a#3] ~@2 b3@3 e3@3 a3@5 ~]/3",
  BL: "e3 e2 f2@6", BM: "[~@3 f2@3 e2@12 e3@11 ~ a2@20 ~ a2@3 g2@8 ~ g2@3 g3@5 ~]/3",
  BN: "[f#3@5 ~ f3@21 c3@3 e3@21 c3@2 ~ d3@23 ~ g2@15 d3@3]/4", BO: "g3@5 ~ a2@7 ~@2 a2@2 ~ a2@6",
  BP: "[~@3 d3@2 ~ e3@7 ~@2 e3@2 ~ e3@8 ~ a2@3 d3@6 ~@3 d3@2 ~ d3@8 ~ a2@3 c3@7 ~@2 c3@2 ~ c3@8 ~ g2@3 a#2@7 ~@2 a#2@2 ~ a#2@8 ~ f2@3 a2@7 ~@2 a2@3 g2@6]/5",
  BQ: "~@3 g2@3 f#2@3 ~@3 f2@5 ~@3 c3 d3 ~@2", BR: "f3 e3@3 c3 f2@3",
  BS: "[g2@5 ~ a2@7 ~@2 a2@2 ~ a2@8 ~ d3@2 ~ e3@7 ~@2 e3@2 ~ e3@8 ~ a2@3 d3@6 ~@3 d3@2 ~ d3@8 ~ a2@3 c3@7 ~@2 c3@2 ~ c3@8 ~ g2@3 a#2@7 ~@2 a#2@2 ~ a#2@8 ~ a#2@2 ~ a2@7 ~@2 a2@3 g2@6]/6",
  BT: "~@3 g2@3 f#2@3 ~@3 f2@6 ~@3 c3 ~ d3", BU: "f3@2 ~ e3@8 ~ c3@3 f2@5 ~ f2@2 ~",
  BV: "[g2@5 ~ a2@6 ~@3 a2@2 ~ a2@11 ~ e3@7 ~@2 e3@2 ~ e3@9 ~@3 d3@7 ~@2 d3@3 c#3@6]/3",
  BW: "[~@6 c3@7 ~@2 c3@2 ~ b2@10 ~@2 a#2@22 ~ b2@23 ~@2 c3@12 b2@11 ~ a#2@11 ~ a2@11 ~ d3@11 ~ c#3@12 c3@12 b2@11 ~ d#3@17 ~]/8",
  BX: "[e3@12 e2@23 ~@13]/2",
})).s("gm_acoustic_bass").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@3 B C ~ D@38 E F D@6 E F D@44 E F D@6 E F D@4 G ~ D@8 ~@2 D@8 ~@2 H@4 ~@2 I J@21 K L I J@5 K L I J@3 M ~ C A@3 N O
  ~@2
>`.pickRestart({
  A: "x!2", B: "x ~ x!2", C: "~ x", D: "x ~@2 x!2 ~@2 x", E: "x ~ x ~@4 x", F: "~@3 x ~@4",
  G: "x ~@8 x ~@2 x ~@2 x!2 ~@7", H: "~ x ~ x", I: "~@2 x ~@2 x!2 ~", J: "~ x!2 ~@2 x!2 ~", K: "~ x!2 ~ x ~@3",
  L: "~ x ~@3 x ~@2", M: "~@3 x ~@2 x ~@8 x ~@2 x ~@2 x!2 ~", N: "x!2 ~@2", O: "x",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A@15 B A@15 C A@6 D E A@6 D E A@5 F A@15 B A@15 C A@6 D E A@6 D E A@4 G H I A@7 ~@2 A@8 ~@8 J K@14 L J K@5 M N J
  K@5 M N J K@3 O P ~@8
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x ~@2", C: "~ x!2 ~", D: "x ~ x ~@4 x", E: "~@3 x ~ x ~@2", F: "x!6 ~@2",
  G: "x ~@8 x ~@7 x ~@4 x!2", H: "~ x ~@6", I: "x!2 ~ x", J: "~ x", K: "x!2", L: "x ~ x!2", M: "x!3 ~",
  N: "~ x ~@3 x ~ x", O: "x ~@5 x ~@8 x ~@7 x", P: "~@4 x!2 ~@3 x ~@14",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@22 A ~@15 B ~@6 C D ~@6 C D ~@5 E ~@15 A ~@15 B ~@6 C D ~@6 C D ~@5 F ~@42 G ~@5 H I G ~@5 H I G ~@4 J G ~@7
>`.pickRestart({
  A: "~@20 x!2 ~@2", B: "~@19 x ~ x ~@2", C: "~@16 x!2 ~@6", D: "~@4 x!2 ~@13 x ~ x ~@2",
  E: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@7 x!2 ~@2", F: "~@15 x!2 ~@2 x ~ x ~@2", G: "~ x ~ x ~@20", H: "~@22 x!2",
  I: "~@10 x!2 ~@12", J: "~@21 x!2 ~",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@2 C D E ~ F@8 G F@7 G F@7 G F@7 ~@6 H I ~@6 H I ~@6 G F@7 G F@7 G F@7 G F@7 ~@6 H I ~@6 H I ~@26 J@2 C ~@3 K F@7 L
  F@7 M ~@5 N I O ~@5 N I O ~@5 P Q C@2 R O ~@2
>`.pickRestart({
  A: "~@18 x ~@2 x ~ x", B: "x ~@2 x ~ x!2 ~ x ~@2 x!2 ~@2 x ~ x!2 ~@2 x ~ x",
  C: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x", D: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~@2 x ~@5", E: "~ x",
  F: "x!8", G: "~ x!7", H: "~@2 x!2", I: "x!4", J: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~ x ~@2 x!2 ~@2 x ~ x", K: "~@2 x!6",
  L: "x!2 ~ x!5", M: "x!2 ~@6", N: "~@3 x", O: "x", P: "~@6 x ~@2 x ~ x!2 ~@2 x ~ x!2 ~ x ~@2 x",
  Q: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~ x ~@2 x", R: "x!3 ~@5",
})).gain(0.41)

// drums · mid tom
// … 17 more lines

More by Steely Dan