Strudelify

The Idiot Bastard Son

Zappa

KeyA minorTempo120 bpm
0:00/0:00
// The Idiot Bastard Son — Zappa
// 120 bpm, 3/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Bass" named as a bass, played on electric bass finger (its piano patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 94 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/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: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B@4 C@2 D@2 E F G H@2 I@2 J K L@2 M@2 N@3 O P Q@7 R@8 S@2 T@2 U V W X Y Z AA AB AC@2 AD AE AF@2 AG AH AI AJ@2 AK@2
  AL AM@2 AN AO@2 AP AQ@4 AR@8 AS@2 AT@2 AU@2 AV@2
>`.pickRestart({
  A: "~@4 d3 ~",
  B: "[[d3,a3,d4,e4,a4]@5 ~@2 [d3,a3,d4,e4,a4]@8 [c3,g3,c4,d4,g4]@8 [f3,c4,f4,g4,c5]@16 ~@16 b2@8 ~ d4 ~@4 g2@2 d4@9 [d4,g4]@7 [e2,a3,b3,e4]@5 b2@3 ~, ~@47 [d3,a3]@16 [a2,f#4]@8 e2@15 ~@10]/4", // Dsus2 Csus2 Fsus2 G5 Esus4 D5 D
  C: "[[d4,e4]@8 d4@7 [g3,c4,d4]@5 c2@3 d4@8 ~ [d4,e4]@7 [d2,g3,c4]@6 e2@3, c2@20 ~@3 [d2,c4]@16 ~@9, ~@8 [e4,f#4]@15 ~@8 a3@8 ~@9]/2", // Dsus2 Gsus4 Dsus2 Csus2 D7 Esus2
  D: "[[c3,e3]@7 ~ e3@8 e3@4 e2@4 ~@8 e3@8 d2@8, a3@5 ~, [a2,g3]@5 ~ a2@4 ~@2, ~@7 c3@9 ~@32]/2", // C A7
  E: "d4 ~ b3, e2, ~@8 g4@15 ~", F: "~@19 c2@4 ~, ~@7 f#4@15 ~@2, ~@16 [e3,g3,c4,d4]@7 ~",
  G: "d4@7 ~ [a3,d4]@7 ~@6 e2@3, [d2,c4]@2 [d2,g3], ~@7 e4@8 c4@8 ~", H: "[a2@21 e2@3 ~@16 [d3,a3,d4,e4]@8, a3@5 ~]/2",
  I: "[[d3,a3,d4,e4,a4]!2 [c4,g4] [c4,g4]@2 [c3,d4,g4], ~@2 [c3,g3,d4]@3 ~, ~ [f3,f4,c5]]/2", // Dsus2 C5 Csus2 F5
  J: "~@8 b2@8 ~@5 g2@3, [d3,d4,e4,a4]@2 [a2,f#4]", K: "d4@7 ~@9 b3@8, e2, ~@7 g4@16 ~, ~ d4@2",
  L: "[[d4,e4]@7 ~ d4@7 [g3,c4,d4]@8 ~ d4@8 [a3,d4,e4]@7 ~@6 e2@3, c2 ~, ~@7 f#4@16 [d2,c4]@16 [d2,g3,c4]@9, ~ e4@2 ~@3]/2", // Dsus2 Gsus4 Asus4 D7 Csus2
  M: "[a2@11 e2 a2@12, a3]/2",
  N: "[~ d5@7 ~@8 e5@8 e5@7 ~@9 [g4,c5]@7 ~ [c5,d5,f#5]@8 [c3,f#4,a4,d5,e5]@8 [a2,d4,g4,c5]@8, ~ a5@30 d5 e5@16 ~@24, ~ g4@23 [c3,c5]@7 f#5@16 d3@8 ~@17, ~ [e3,b3]@15 [b3,d4,b4]@32 ~@24, ~ [d5,g5] a4 g3@3 ~@3]/3", // C5 D7 Am7 C E5 Bm G5
  O: "[c4,e4]@2 e4@2 ~ e3, [a2,a4], ~@2 e4", P: "[c4,e4]@8 c4@8 [a3,d5,e5,a5]@7 [a3,d5,e5,f#5,a5], a3@2 ~",
  Q: "[~@7 [a3,d5,e5,f#5,a5]@8 ~ [c5,d5,e5,g5]@7 ~ c4@7 a3@9 f3@8 ~@16 c3@7 ~ g5@8 e5@8 d6@8 a5@8 ~@8 e5@5 ~@3 g5@8 e5@8 e6@8 b5@8 d5@8 e5@6 c3@2, ~@15 g3@8 g5@48 ~ [e3,b3,c4]@46 e3@48 ~@2, ~@24 [f5,a5,c6]@49 ~@31 d5@14 ~ [b3,c4]@48 ~, ~@55 e3@16 a2@46 a2@48 ~@3]/7", // D C Cmaj7 F Cmaj7
  R: "[~@2 b4@43 ~@43 d5@7 ~@18 f#3@7 ~@8 [e4,a4]@8 [f#3,d#4,a#4]@8 ~@8 [e4,a4]@7 ~ [d3,a#4]@7 ~@2 [d4,f#4]@21 ~@2, [g3,e4]@45 ~@2 a2@33 c#5@15 ~ b3@58 ~@14 [f#3,a#3]@21 ~@3, ~ [b3,g4]@44 ~@3 [g3,a#3,d4]@47 g3@18 ~@7 f3@16 ~@8 [f3,f4,c5]@15 ~@8 e2@23 ~@2, ~@49 f#4@46 f#4@40 ~@24 d#4@7 ~@26, ~@56 c#5@8 d5@9 e5@22 ~ a#4@40 ~@56]/8", // A5 D#m A5 Gm D C F# Em …
  S: "[[c4,d4,f#4]@8 [b3,e4,g4]@8 [a#3,f4,g#4]@4 ~@4 a3@21 ~@3, ~@23 [d4,e4,f#4,a4]@21 ~@4]/2", // D7 Em A#7 D
  T: "[[d3,f#4]@3 ~ g4@3 [a2,e4]@4 [d3,f#4]@4 [g2,d4]@4 [a2,e4]@4 [f2,c4]@4 [f#2,d4]@4 ~ a3@8 [d3,a3,d5,e5,f#5,a5]@8, ~@3 c#3@4 ~@24 d2@8 ~@9]/2", // D A5 D G5 A5 F5 D
  U: "~ [d5,e5]@7 [d3,a3,d5,e5,f#5,a5]@7 ~ [c3,g3,c5,d5,e5,g5]@8, [d3,a3,f#5,a5] ~@2", // Dsus2 D C D
  V: "[f3,c4,f5,g5,a5,c6]@2 [c3,g3,c5,d5,e5,g5]", W: "~@8 b2@7 a2@6 g2@2 ~, [d5,e5,f#5,a5], [d3,a3]@2 ~",
  X: "d4@8 b3@8 ~@3 e2@4 ~, e2@19 ~@5, ~ [d4,g4]@2, ~@2 [a3,b3,e4]", // G5 Asus2
  Y: "[d4,e4]@2 d4@2 ~ g2, [c2,g4], c4@2 [g3,c4,d4], ~ [a3,e4,f#4]@2", // Dsus2 C5 Gsus4 F#m7
  Z: "[d3,a3,d4,e4,f#4]@7 [b2,f#3,e4]@8 ~ [a2,d3,g3,c4]@8", AA: "d4@2 [d4,f#4,g4,b4], [e2,b2,f#3,g3,a4]",
  AB: "~@2 [c3,d4,g4,b4], ~ [c2,c4,f4,c5]@23, ~ g4@15 ~@8, ~ f2@2", // G F5
  AC: "[[e3,b3,e4,f#4,d5]@15 ~@4 b4@4 [b3,e4,a4]@16 ~ [f#2,b4]@8, ~@2 c5 ~@3]/2", // Bm Esus4 B5
  AD: "[f2,g4,a4,c5] [a2,c4,g4,a4] [c3,d4,g4,b4], ~@8 f4 ~@15", AE: "~@8 b2@8 [a2,d4,f#4]@5 g2@3, [d4,e4]@2 ~",
  AF: "[d4@8 b3@8 ~@4 e2@3 ~ d4@7 d4@8 [c3,g3,c4,d4]@8 ~, a4@23 ~@25, e2@20 ~@3 [c3,c4]@16 ~@9, ~@8 [d4,g4]@15 ~ [e4,g4]@24, ~@16 [a3,b3,e4]@7 ~@8 [a3,f#4]@16 ~]/2", // Csus2 C G5 Em Asus2 D
  AG: "[b2,f#3,d4,e4,f#4]@7 [d3,d4,e4]@8 [a2,d3,g3,c4]@8 ~", AH: "~@5 b4@3, [e2,b2,f#3,g3,d4,a4]",
  AI: "~ f2 [c3,d4,g4,b4], [c2,d4,f#4,g4,c5]@17 ~@7", // G Csus2
  AJ: "[[e3,b3,e4,f#4,d5]@16 ~@4 b4@3 ~ a4@16 [f#4,a4,b4]@8, ~@16 [c3,g3,e4,c5]@7 e4@16 ~@9]/2", // Bm B7 C
  AK: "[[f4,g4]@7 ~ [a2,c4,f4]@7 [c3,d4,g4,b4]@8 ~ d3@15 ~ [d5,f#5]@7 ~, [f2,a4,c5]@5 ~@11, ~@7 g4@8 ~@8 [e4,f#4,a4]@16 ~@9]/2", // Fsus2 F G D F F#m7
  AL: "d5@2 ~@3 b2, a5@23 ~, ~@8 [d5,g5]@15 ~, ~@16 [a4,b4,e5]@7 ~", // G5 Asus2
  AM: "[~@8 d5@7 d4@8 ~@9 [d5,e5]@8 [d4,d5,e5,f#5,a5]@8, [c3,c5,e5,g5]@23 c3@25, ~@7 f#5@15 ~@5 g3@9 ~@12, ~@5 [e4,b4]@11, ~@15 d5@16 ~ [c5,g5]@16]/2", // Dsus2 D C E5 C5
  AN: "~@5 g3, c3, [d5,e5]@2 ~, ~ g3@2 g3@2 ~, ~ d4 [d4,a4,d5,e5,f#5]", // Dsus2 D
  AO: "[d5 ~@7 e5@7 ~@20 g3@5 [d4,d5,e5,f#5]@8, c3@20 ~@3 c3@25, [c5,g5]@15 [d4,d5]@16 [c5,d5,e5,g5]@10 ~@7, e5@7 [d5,f#5]@9 ~@3 g3@9 g3@4 d4@8 ~@8, ~@3 g3@8 ~@4 [e4,b4]@25 a5@3 ~@5]/2", // D C5 D C D E5
  AP: "~@5 g3, [c3,g4], [d5,e5]@2 [a4,d5,e5,f5,f#5], ~ g3@2 g3@2 ~, ~ d4 ~", // C5 Dsus2 D
  AQ: "[~@12 g3@4 ~@47 [d5,g5,a5]@8 ~ [e5,f#5,a5]@7 ~ [d3,a3]@8 [c3,g3,c5,d5,e5,g5]@8, c3@5 ~ c3@12 ~@6, [c5,g5]@16 [e4,a4,d5]@39 d4@16 ~@8 [d5,e5,f#5,a5]@9 ~@8, [d5,e5]@8 [a4,d5,e5,f#5]@9 ~@11 g3@7 g3@8 g2@28 ~@25, ~@4 g3@8 ~@4 d4@15 d4@20 g3@20 [d3,a3,d5]@8 ~@17]/4", // Dsus4 F#m7 D5 C C5 Dsus2 D Dsus2 …
  AR: "[~@9 a3@7 f3@8 g3@8 ~@8 c3@6 ~@2 g5@8 e5@8 d6@8 a5@8 d5@8 e5@6 ~@2 g5@8 ~@32 e5@6 ~@3 b4@45 ~ a2, [f5,g5,a5,c6]@23 a2@24 a2@13 b5@11 c3@24 ~, [f3,c4]@17 ~@15 e3@15 e3@48 e3@33 d5@15 d4@46 ~@3, ~@48 [b3,c4]@47 ~ [b3,c4]@47 e3@3 ~@46, ~@52 e5@4 e6@16 [g3,b3,e4,g4]@23 ~]/8", // F F5 Cmaj7 Em
  AS: "[~@5 [d5,d6], [g3,a#3,d4], ~ f#4@47, ~ [c#5,c#6]@2 [e5,e6]@3, ~ [d5,d6] [c#5,c#6]]/2", // D Gm C# E D C#
  AT: "[g4@16 f#4@7 ~@17 [f#4,d#5,a#5]@8, [f#5,d#6,f#6], ~ f4, ~@2 [e5,a5]]/2", // D#m A5
  AU: "[~@8 [e5,a5]@7 [d4,d#5,a#5]@7 ~@3 f#5@23, [f4,f5,c6]@16 ~@6 e4@25 ~, ~@23 a#4@24 ~, ~ [g#4,d5]]/2", // A5 D#maj7 F5 G#dim
  AV: "[[c4,d4,f#4]@7 ~ g4@7 [f4,g#4]@5 ~@3 [a3,d4,e4,f#4,a4]@17 ~@8, ~@7 [b3,e4]@8 a#3@8 ~@25]/2", // D7 Fm D E5
})).s("gm_piano").gain(0.2)

// chords · piano · soft notes
const piano_soft = note(`<
  A ~ B@3 C@2 D E F@2 G H I J@2 K L M@2 N O P@3 Q R ~@2 S ~@4 T@2 ~@13 U V W ~@2 X@2 Y Z AA AB AC ~@2 AD AE ~ AF AG AH
  AI AJ AK AL AM AN@2 ~ AO ~@16
>`.pickRestart({
  A: "~@4 [a3,d4,e4,a4] ~", B: "[~@15 [c3,g3,c4,d4,g4]@8 [d4,e4,a4]@17 ~@16 b3@7 ~@9, ~@47 [g3,a4]@16 ~@9]/3",
  C: "[~@15 e3@7 ~ a3@8 ~ f#3@7 d3@7 ~@2, g4@23 f#4@16 ~@9, c4@5 ~@11, ~@8 a3@15 ~@25]/2", D: "~@4 c3 ~",
  E: "[c3,e3] c3 [a3,d4,f#4]", // C D
  F: "[~@8 b3@8 [a3,e4]@7 d4@8 ~ d4@8 ~@8, [g3,a4]@23 c2@20 ~@5, ~@8 d4@15 [e4,g4]@23 ~@2, ~@23 c4@16 ~@9, ~@31 a3@15 ~@2]/2", // A5 Gsus2 Em
  G: "a3@8 f#3@7 d3@8 ~, f#4@2 ~", H: "~@8 e3@8 [c3,e3]@7 ~, ~@7 c3@8 ~@9", I: "[c3,e3]!2 a4, a2@2 ~",
  J: "[~@5 [g3,c4], ~@7 g#4@9]/2", K: "a3@2 ~", L: "~@2 b3@2 ~ b2, [g3,a4], ~@2 [a3,e4]",
  M: "[~@15 e3@8 a3@8 ~ f#3@7 d3@8 ~, g4@23 f#4@16 ~@9, c4@5 ~@11, ~@7 a3@16 ~@25]/2",
  N: "~@7 c3@9 ~ c3@6 ~, ~@3 e3@5 e3@3 ~", O: "[c3,e3] [c3,e3]@2",
  P: "[~@8 b4@8 ~@8 d5@7 ~@13 c3@3 a4@8 ~@17, ~ f#4@47 ~@24, ~@2 e3@3 [e4,d5] ~@3, ~@24 g5@23 ~@25, ~@32 a4@15 ~@25]/3", // E7
  Q: "~@8 c4@8 c4@7 ~", R: "~@8 e4@8 f#5@7 ~", S: "g3 ~@2", T: "[d4@15 ~]/2", U: "[g3,a4]", V: "~@2 e3",
  W: "~@7 a3@8 ~@9", X: "[~@16 [c3,g3,e4,f#4]@7 ~ f#3@16 [f#3,e4,f#4,a4]@8, ~@23 c#3@17 ~@8]/2",
  Y: "~@5 f#4@3 ~@16, f4 ~@2", Z: "[d3,f#4,a4]@16 a3@7 ~", AA: "g3@23 ~", AB: "~@15 e3@8 ~", AC: "a3@8 g3@7 ~@9",
  AD: "~@2 f#4", AE: "[c#3,f#3,b3]@2 [f#2,f#3,e4]", AF: "~@7 b2@9 [a2,a4]@5 g2@2 ~", AG: "~ b4 ~, [e2,g4]@23 ~",
  AH: "~@11 g3@8 g3@4 ~, ~@4 g3@7 ~@13, ~@7 a4@15 ~@2, ~@7 d4@8 ~@9", AI: "~@3 g3@2 g3, ~ d4 ~", AJ: "g4",
  AK: "~@11 g3@5 ~@8, ~@7 [d4,a4]@9 ~@8", AL: "~@5 g3", AM: "~@2 d4", AN: "[~@8 d4@8 ~@3 g3@8 ~@21]/2", AO: "~@11 g#5",
})).s("gm_piano").gain(0.1)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B@5 C@2 D E@2 F G H I J K L M N O P Q R@2 O S T U V W@6 X@5 Y Z@4 AA@2 AB AC@2 AD AE AF AG@2 AH@2 AI@2 AJ@2 AK AL AM
  AN@2 AO@3 AP AQ@3 AR@4 AS@8 AT@2 AU@3 AV AW@2
>`.pickRestart({
  A: "~@16 d3@7 ~", B: "[d3@7 d3@8 c3@8 f3@16 ~ c3@7 d3@8 b2@8 a2@6 g2@2 e2@20 ~ b2@3 c3@20 g3@4 ~]/5",
  C: "[d3@14 ~@2 e3@5 d3@2 a2@20 e3@2 g3@3, ~@16 d3 ~@31]/2", D: "a3@2 d3", E: "[e3@16 f3@3 e3@4 c3@20 ~ g3@4]/2",
  F: "d3@15 ~ e3@6 d3@2, ~@16 d3 ~@7", G: "a2@6 e3 g3", H: "a3@16 [d2,d3]@7 ~", I: "[d2,d3]@7 ~ [d2,d3]@8 [c2,c3]@8",
  J: "[f2,f3]@15 ~ c3@8, ~@15 c2@8 ~", K: "d2@7 ~ b2@8 a2@5 g2@2 ~, d3@3 ~", L: "e2@5 e3@2 e2", M: "c3@16 d3@5 c3@3",
  N: "d3@15 ~ e3@5 d3@2 ~, ~@16 d3 ~@7", O: "a2@7 g3", P: "a3@15 ~ a3@8", Q: "e3@9 g3@7 e3@8",
  R: "[c3@20 ~ c3@2 d3@8 c3@8 ~ a2@7 ~]/2", S: "a3@15 ~ [a2,a3]@7 ~", T: "[a2,a3]@7 [a2,a3]@8 [g2,g3]@8 ~",
  U: "[c3,c4]@8 [a2,a3]@7 f2@8 ~", V: "~@7 e2@8 ~@9",
  W: "[a2@44 ~@48 a2@3 c3@49, ~@46 a2@43 ~@55, ~@47 e3@46 ~@2 g3@42 ~@7, ~ b3 ~]/6",
  X: "[[a2,g4]@47 ~@48 f3@16 d3@9, ~@47 a#4@58 ~@15]/5", Y: "[e2,g#3]",
  Z: "[[c3,c4]@8 [b2,b3]@7 a#3@8 [a2,f#4]@21 ~@4 d4@3 [c#3,c#4]@4 [a2,a3]@4 [d3,d4]@4 g2@4 [a2,a3]@4 [f2,f3]@4 [f#2,f#3]@4 d2@9 [d3,d4]@7 ~, ~@47 d3@4 ~@45]/4", // C B D C# A D A F …
  AA: "[[d3,d4]@8 ~ [d3,d4]@7 [c3,c4]@7 ~ f3@16 c4@8, ~@23 f4@17 ~@8]/2", AB: "~@8 b2@7 ~ a2@5 g2@3, d4@23 ~",
  AC: "[e2@20 b2@3 c3@22 g2@2 ~]/2", AD: "d3@7 b2@8 a2@9", AE: "e2@2 b2, g4", AF: "c3@9 f3@7 c4@8, e5",
  AG: "[[e3,b5]@16 [c3,g5]@7 f#3@14 ~@2 f#3@9, ~@23 f#5@22 ~@3]/2", AH: "[f3@8 a3@8 c4@7 d4@9 b3@7 ~ a3@5 g3@3]/2",
  AI: "[e2@21 b2@2 c3@22 g2@3]/2", AJ: "[d3@8 b2@7 a2@8 ~ e3@16 b2@8, ~@23 e2@17 ~@8, ~@24 g4@23 ~]/2", AK: "c3 f3 c4",
  AL: "e3@2 c3, g4", AM: "f#4, c#3@17 ~@7", AN: "[f2@8 a2@8 c3@7 d3@9 b2@7 a2@6 g2@3, ~@23 f#4@25]/2",
  AO: "[~@16 b2@3 e2@4 ~@8 g3@16 ~@4 g3@4 d4@9 ~@8, ~@23 c3@23 ~ c3@24 ~]/3", AP: "~@3 a4 ~@2, c3@11 ~, ~@12 g4 ~@11",
  AQ: "[c3@20 ~@3 c3@21 ~@7 g3@5 e4@15 ~, ~@47 c3@22 ~@3]/3",
  AR: "[~@3 g3@5 e4@15 ~@4 g3@4 ~ e4@31 d3@7 ~ [d3,d4]@7 ~@2 d4@7 [c3,c4]@9, c3@22 ~ c3@23 ~@25 e4 ~@8 d3 ~@15]/4", // D C
  AS: "[f4@8 a4@9 f4@7 g4@8 e4@8 ~@8 c4@45 ~@2 e3 c4@44 ~@4 e4@43 ~@5, f3@47 a2@45 ~@2 a2@45 ~@3 c3@50, ~@143 b3@6 ~@43]/8",
  AT: "[~ [a#4,f#5]@47, a2]/2", AU: "b4/3", AV: "[e2,g#4]", AW: "[c3@7 b2@8 a#2@8 [a2,f#4]@18 ~@7]/2",
})).s("gm_electric_bass_finger").gain(0.2)

// bass · electric bass finger · "Bass" · soft notes
const bass_soft = note(`<
  ~@28 A@2 B@2 ~@2 C@2 ~@2 D E ~@2 F ~ G ~@2 H I ~@9 J ~@5 K L ~ M@5 N ~@4 O ~ P ~@8 D Q R ~ S ~
>`.pickRestart({
  A: "[~@15 f3@8 ~ g2@8 e3@7 ~ c3@7 ~, ~@23 g3@8 ~@17, ~@24 a2 ~@14 c2@9]/2", B: "[[e3,a3]@15 ~]/2", C: "[d4@43 ~@5]/2",
  D: "g3@5 f#3@3", E: "f3@15 f#3@8 ~", F: "~@5 a#2@3", G: "~@15 g3@4 ~@5", H: "~@2 c3", I: "d3 ~@2",
  J: "~@7 d#2@2 ~@15", K: "~@2 f#2", L: "f4@2 ~",
  M: "[~@8 e3@16 ~@40 e4@11 ~ g3@4 e4@6 ~@17 e4@15 g3 ~, g4@10 ~ g4@4, e2@17 ~@103]/5", N: "~@3 g3@5 e4@16",
  O: "~@4 c3@2 ~@4 d3@5 ~@9", P: "~@8 c4@3 ~", Q: "f3@2 f#3", R: "f3", S: "c4@7 ~@17",
})).s("gm_electric_bass_finger").gain(0.1)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<A ~@3 B ~@16 B C ~@43 D@2 ~@5 E F ~@15 G ~@3>".pickRestart({
  A: "~@2 x", B: "~@5 x", C: "~@12 x ~@10 x", D: "~ x", E: "~@7 x ~@4", F: "~@19 x ~@4", G: "~@23 x",
})).gain(0.15)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@11 A ~@9 B@2 C ~@38 B ~@4 B ~@26>".pickRestart({
  A: "~ x ~", B: "~@2 x", C: "~ x",
})).gain(0.15)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A ~@4 B ~@4 C ~ D E ~@9 B F G A ~@3 H ~ F ~@4 H ~ C I J K H L M ~@2 F ~@8 H ~@4 F@2 ~@8 H ~@3 N ~@3 B ~@8 O ~
>`.pickRestart({
  A: "~@11 x ~@12", B: "~@5 x", C: "~ x!2", D: "~@4 x!2 ~@2", E: "~@12 x ~@6 x ~@4", F: "~@5 x ~@2", G: "~@23 x",
  H: "~@2 x", I: "x", J: "~@15 x ~@7 x", K: "~@3 x ~@4 x!2 ~ x ~@2 x!2 ~@8", L: "~@3 x!3", M: "~@19 x ~@4",
  N: "~ x ~@6 x ~@7 x!2 ~@2 x!2 ~@2", O: "x ~@6 x ~@7 x ~@7 x",
})).gain(0.26)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@38 [~@19 x ~@4] [~@5 x] ~@5 [~@12 x!2 ~@10] ~@33 [~@23 x] ~@14>").gain(0.1)

// drums · hihat
const hihat = s("hh").struct("<~@66 A B C D E F G H E I J ~@17>".pickRestart({
  A: "~@23 x", B: "~@2 x", C: "x ~@15 x ~@6 x", D: "~@7 x ~@7 x ~@8", E: "x!3", F: "x ~@6 x ~@7 x ~@7 x",
  G: "~@8 x ~@6 x ~@7 x", H: "~ x!2", I: "x!3 ~ x ~", J: "x ~@6 x ~@7 x ~@8",
})).gain(0.26)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@67 [~ x ~]!2 ~ [~ x] ~@2 [~ x ~@4]!2 ~@19>").gain(0.1)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@9 B ~@2 C ~@9 B ~ B A ~@3 C ~@6 B ~ D E F ~ C@2 E ~@2 A ~@8 G ~@4 C A ~@11 H I ~@3 J ~ K ~@5 L ~@2
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x!2", C: "~@2 x", D: "x!3", E: "~@3 x!2 ~", F: "x ~@6 x ~@3 x ~@7 x ~@4", G: "~ x ~",
  H: "~@9 x ~@7 x ~@6", I: "x", J: "~ x", K: "~@18 x!2 ~@4", L: "~@12 x ~@3 x ~@2 x ~@4",
})).gain(0.26)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@15 A@2 ~@21 B ~@8 C A ~@30 A ~@14>".pickRestart({
  A: "~ x ~", B: "~@2 x", C: "~ x",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B C ~@9 D E F ~@12 G ~@3 H I J K ~@11 L ~@8 E ~@7 K ~@2 E ~@9 I M ~@14 N ~
>`.pickRestart({
  A: "~@16 x ~@6 x", B: "~@7 x ~@7 x ~@7 x", C: "~@5 x ~@2", D: "x ~ x", E: "x", F: "~@7 x ~@8 x ~@7",
  G: "x ~@6 x ~@16", H: "x ~@15 x ~@6 x", I: "~@15 x ~@7 x", J: "~ x ~", K: "~@23 x", L: "x!2 ~", M: "~@7 x ~@7 x ~@8",
  N: "x ~@7 x ~@6 x ~@8",
})).gain(0.26)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@3 A ~@8 A ~@17 B A@2 ~ C D ~@58>".pickRestart({
  A: "~ x ~", B: "~@2 x", C: "~@9 x ~@6 x ~@7", D: "~@7 x ~@16",
})).gain(0.1)

// … 44 more lines

More by Zappa