Strudelify

Peaches en Regalia

Zappa Frank

KeyE majorTempo104 bpm
0:00/0:00
// Peaches en Regalia — Zappa Frank
// 104 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(104/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · tenor sax
const tenor_sax = note("<~@18 A B C D E F G H I J ~@16 K L M L N L M L M ~@16 O P Q ~ O P Q ~ O P Q ~@10>".pickRestart({
  A: "[b4,d5,f#5]!2 ~ [b4,d5,f#5] ~ [b4,d5,f#5]!2 ~@2 [b3,d4,f#4]!2 ~ [b3,d4,f#4] ~@3", // Bm
  B: "[c#4,e4,g#4] [e4,a4,c#5]@2 [a4,c#5,e5]@2 [b4,d5,f#5]@2 [c#5,e5,g#5]", // C#m A Bm C#m
  C: "[d5,f5,a5]!2 ~ [d5,f5,a5] ~ [d5,f5,a5]!2 ~@2 [d4,f4,a4]!2 ~ [d4,f4,a4] ~@3", // Dm
  D: "[e4,g4,b4] [g4,c5,e5]@2 [c5,e5,g5]@2 [d5,f5,a5]@2 [e5,g5,b5]", // Em C Dm Em
  E: "[f5,g#5,c6]!2 ~ [f5,g#5,c6] ~ [f5,g#5,c6]!2 ~@2 [f4,g#4,c5]!2 ~ [f4,g#4,c5] ~@3", // Fm
  F: "[g4,a#4,d#5] [g4,f5,a#5]@2 [a#4,d#5]@2 [f4,a#4,f5]@2 [g4,d#5,g5]", // D# Gm7 D#5 A#5 Cm
  G: "[d#5,g#5]!5 [c#5,f#5]!2 [c#5,f5]!2 [c5,d#5]!2 [a#4,c#5]!2 [g#4,c#5]!2 [f#4,c#5]", // G#5 F#5 C# Cm A#m C#5 F#5
  H: "[f4,g4,c#5,d#5] [f4,c#5] [c#5,f5]@2 [c#5,e5,f5,g5] [c#5,f5] [f4,c#5]@2 [f4,g4,c#5,d#5] [f4,c#5] [c#5,f5]@2 [c#5,e5,f5,g5] [c#5,f5] [f4,c#5]@2", // D#7 C# C#dim C# D#7 C# C#dim C#
  I: "[g#4,b4] ~ [g#4,b4]!2 ~ [b4,d#5]!2 ~ [b4,d#5] [c#5,e5] ~ [c#5,e5] ~ [d#5,f#5]!2 ~, b3", // G#m B C#m D#m
  J: "[d#5,f#5] ~ [d#5,f#5] [d#5,e5,f#5,g#5] [e5,g#5] ~@3 b4 [f#4,a4,d#5] ~ [e4,g#4,c#5] ~ [e4,g#4,c#5] [d#4,f#4,b4] ~, ~ b4 ~@2", // D#m Emaj7 E D#dim C#m B
  K: "~@8 [a3,c4,f4] [a#3,b3,c#4,d4,f#4,g4] [c4,d#4,g#4] [c#4,d4,e4,f4,a4,a#4] [d#4,f#4,b4] [e4,f4,g4,g#4,c5,c#5] [f#4,a4,d5] [g4,g#4,a#4,b4,d#5,e5]", // F Gmaj7 G# A#maj7 B C#maj7 D Emaj7
  L: "[a4,c5,f5] [g4,c5,e5]", M: "[g4,c5,e5]@3 [g4,a4,c5,d5,e5,f5] [f4,a#4,d5]@8 ~@4",
  N: "[g4,c5,e5]@3 [g4,a4,c5,d5,e5,f5] [f4,a#4,d5]@4 ~@2 [c4,d#4,g#4] [c#4,d4,e4,f4,a4,a#4] [d#4,f#4,b4] [e4,f4,g4,g#4,c5,c#5] [f#4,a4,d5] [g4,g#4,a#4,b4,d#5,e5]", // C Dm7 A# G# A#maj7 B C#maj7 D …
  O: "~@4 f#5 ~ e5 ~", P: "e5@2 f#5 e5 d5@8 g#5@4", Q: "e5",
})).s("gm_tenor_sax").gain(0.57)

// bass · piano
const bass = note(`<
  ~@2 A B A B A B A B C D E F C D E F G H I J K L M@2 N@2 O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM
  AN AO AP AQ AR A B A B A B A B C D E F C D E F C D E F C AS ~@10
>`.pickRestart({
  A: "b1 f#2 b2 f#2 b1@4 b1 f#2 b2 f#2 b2@4", B: "b1 f#2 b2 f#2 b2@4 f#2@4 e2@4",
  C: "b1 f#2 b1!2 ~@2 f#2@2 b1@2 ~ b1 b1@2 f#2@2", D: "a1@2 ~ a1 ~@6 e2!2 f#2 e2 c#2@2", E: "c2 e2 ~@2 d2@4",
  F: "a1@2 e2@2 f#2 e2 e2@2", G: "b2 b2@2 b2@2 b2 b2@2 ~ b1 b1@2 b1@4", H: "c#2 e2@2 a2@2 b2@2 c#3",
  I: "d3 d3@2 d3@2 d3 d3@2 ~ d2 d2@2 d2@4", J: "e2 g2@2 c3@2 d3@2 e3", K: "f3 f3@2 f3@2 f3 f3@2 ~ f2 f2@2 f2@4",
  L: "g2 a#2@2 d#3@2 f3@2 e3", M: "f3@8 c#2@3 c#2@2 c#2 c#2@2", N: "d#3@8 b1 b1@2 b1@2 b1 b1@2",
  O: "e2@2 e2!2 e2@2 ~ e2 g#2 b2@2 c#3@2 e3@2 f3", P: "f#3@2 f#3@2 e3 c#3 f#2 c#3@2 c3@2 b2@2 b2 ~@2",
  Q: "e2@2 e2!2 e2@2 ~ d#2 g#2 b2 c#3 e3@2 c#3 c3 b2", R: "c#3@2 f#3@2 f#3 f3@2 e3@2 c#3@2 f#2 c#3 f#2 f2 c3",
  S: "e2@2 e2@2 g#2 g#1@2 b1@2 c#2@2 d2@2 d#2 e2 f2", T: "f#2@2 f#2@2 g#2 a2 a#2 b2@2 f#2 b2 b2@2 f#2@2 b1",
  U: "e2@2 e2!2 ~ a#2 b2 d#3 e3 a#2 b2 d#2 e2 f2!2 f#2", V: "~ a#2@2 b2 c#3 e3 c#3 f#3@2 f3@2 e3@2 c#3 f#2 e2",
  W: "a2@4 ~ e2!2 g#2@3 d#2 d#3@2 d#3 g#2 a2", X: "a2 e2 a2 d#3@2 e3@2 a2 g#2 d3@2 d#3@2 g#2 d#2 g#1",
  Y: "a2@2 a2!2 ~ e2 a2 e2 g#2@4 d3 d#3 g#2 d#2", Z: "a2@5 e2@2 a1 ~@2 d3!2 d#3!4",
  AA: "c3@2 c3!3 c3@2 c#3 d3@2 d3!3 d3@2 g#2", AB: "a#2@2 a#2@2 g2 g#2 a#2 d#2@2 d#2@2 a#2 d#3!2 a#2@2",
  AC: "g#2@2 g#2@2 ~ d#2 e2 f2 ~ a#2 c3 f3@2 d#3 c3@2", AD: "g1@2 g1@4 g2@3 g2@2 g2 g1@2 g2@2",
  AE: "g2@2 g1 g2 g2@2 g2 g2@3 g2!2 g1@2 g2@2", AF: "f1 a1@2 a#1@2 b1 c2!3 e2@2 f2@2 f#2@2 g2",
  AG: "a#2 d2@2 d#2@2 e2@2 f2 a#2 c3 a#2 d2 f2 a#1 f2!2", AH: "f2 f1@2 a#1@2 b1@3 c2 e1@2 f1@2 f#1@2 g1",
  AI: "a#1 d2@2 d#2@2 e2@2 f2 a#2!2 g#2 f2 a#2 g#2 f2 d2", AJ: "f2@2 f1@2 a#1@2 b1!2 c2@2 e1@2 f1!2 f#1 g1",
  AK: "a#1@2 f1 g1 a#1 a#1@2 a#1@2 f1 g1 a#1@2 a#1!2 c2", AL: "f2@2 f1@2 a#1!2 b1!2 c2 e2@2 f2@2 f#2@2 g2",
  AM: "a#2@2 d2 d2@2 d#2@2 e2@2 f2 a#2 a#2@3 ~@2", AN: "a1@3 a1!2 a2 ~ a#1 b1 f#2 b2 b1 b1@2 f#2 b1",
  AO: "g1@3 g1!2 d2 b1 c2!2 g2 c3 c2!2 c3 g2 c2", AP: "f1@3 f1!2 f2 f1 g1 d2@2 g2 a2 d2 a2 d2@2",
  AQ: "e2@3 d#3 d3 c#3@2 d#3@2 c#3@2 b2 c#3 b2@2 a2", AR: "a2 g#2@2 f#2@2 e2 f#2 e2 g2!2 ~ g2@2 g2!2 b1",
  AS: "a1@2 ~ a1 ~@6 e2!2 ~@4",
})).s("gm_piano").gain(0.45)

// chords · piano
const piano = note(`<
  ~@2 A B C D E F G H I J K L M J K N I O P Q R S T U V W X Y X Z AA Y X AB AC AD@3 AE AF AG AH AI AJ AK AL AM AJ AN AO
  AP AQ AR AS AT AU AV D AW B AX AY AX F I O AZ L M J K BA I J AZ BA M BB ~@10
>`.pickRestart({
  A: "[f#3,b3,d4] ~@3 [a3,b3,d4,f#4] ~@3 [g#3,b3,e4]@2 ~@2 [f#3,b3,d4]@2 ~@2", // Bm Bm7 E Bm
  B: "[a3,c#4,e4] ~@3 [f#3,b3,d4] ~@3 [g#3,b3,e4]@2 b3 [f#4,b4] e5 b5 [g#3,b3,e4,b4,e5] e4", // A Bm E B5 E
  C: "[f#3,b3,d4] ~@3 [a3,b3,d4,f#4] ~@3 [g#3,b3,e4] ~@3 [f#3,b3,d4]@2 ~@2, b2", // Bm Bm7 E Bm
  D: "[a3,c#4,e4]@2 ~@2 [f#3,b3,d4]@2 ~@2 [g#3,b3,e4]@2 b3 [f#4,b4] e5 [g#3,b3,e4,b5] [b4,e5] e4", // A Bm E B5 E E5
  E: "[f#3,b3,d4] ~@3 [a3,b3,d4,f#4]@2 ~@2 [g#3,b3,e4]@2 ~@2 [f#3,b3,d4] ~@3, b2", // Bm Bm7 E Bm
  F: "[a3,c#4,e4] ~@3 [f#3,b3,d4]@2 ~@2 [g#3,b3,e4]@2 b3 [f#4,b4] e5 [g#3,b3,e4,b5] [b4,e5] e4", // A Bm E B5 E E5
  G: "[f#3,b3,d4] ~ [a3,b3,d4,f#4] ~ [g#3,b3,e4] ~ [f#3,b3,d4] ~, b2", // Bm Bm7 E Bm
  H: "[a3,c#4,e4] ~@3 [f#3,b3,d4]@2 ~@2 [g#3,b3,e4]@2 b3 [f#4,b4] e5 b5 [g#3,b3,e4,b4,e5] e4", // A Bm E B5 E
  I: "[f#3,b3,d4]@2 ~ [f#3,b3,d4] ~@8 [f#3,b3,d4]@2 ~@2", J: "[a3,c#4,e4]@2 ~ [a3,c#4,e4] ~@8 [a3,c#4,e4]@2 ~@2",
  K: "[g3,b3,d4]@2 ~@3 [g3,b3,d4] ~@2 [a3,d4,f4]@2 ~@3 [a3,d4,f4] ~@2", // G Dm
  L: "[a3,c#4,e4]@2 ~@4 [a3,c#4,e4] ~ [a3,c#4,f#4]@2 ~@2 [g#3,b3,e4] ~@3", M: "[f#3,b3,d4]@7 ~@9",
  N: "[a3,c#4,e4]@2 ~@3 [a3,c#4,e4] ~@2 [a3,c#4,f#4]@2 ~@2 [g#3,b3,e4] ~@3", O: "[a3,c#4,e4]@7 ~@9",
  P: "[a3,d4,f4]@2 ~ [a3,d4,f4] ~@8 [a3,d4,f4]@2 ~@2", Q: "[g3,b3,e4]@2 ~ [g3,b3,e4] ~@8 [g3,b3,e4]@2 ~@2",
  R: "[g#3,c4,f4]@2 ~ [g#3,c4,f4] ~@8 [g#3,c4,f4]@2 ~@2", S: "[g3,a#3,d4]@2 ~ [g3,a#3,d4] ~@8 [g3,a#3,d4]@2 ~@2",
  T: "[g#3,c#4,f4]@2 ~ [g#3,c#4,f4] ~@12", U: "[g#3,c#4,f4]@2 ~ [g#3,c#4,f4] ~@8 [g#3,c#4,f4]@2 ~@2",
  V: "[f#3,b3,d#4]@2 ~ [f#3,b3,d#4] ~@8 [f#3,b3,d#4]@2 ~@2", W: "[f#3,b3,d#4]@7 ~@9",
  X: "[g#3,b3,e4]@2 ~@4 [g#3,b3,e4] ~ [g#3,b3,d#4]@2 ~@4 [g#3,b3,d#4] ~", // E G#m
  Y: "[a3,c#4,f#4]@2 ~@4 [a3,c#4,f#4] ~ [f#3,b3,d#4]@2 ~@4 [f#3,b3,d#4] ~", // F#m B
  Z: "[c#4,f#4,a4]@2 ~@4 [c#4,f#4,a4] ~ [f#3,b3,d#4]@2 ~@3 [f#3,b3,d#4] ~@2", // F#m B
  AA: "[g#3,b3,e4]@2 ~@3 [g#3,b3,e4] ~@2 [g#3,b3,d#4]@2 ~@4 [g#3,b3,d#4] ~", // E G#m
  AB: "[f#3,a3,c#4]@2 ~@4 [f#3,a3,c#4] ~ [f#3,b3,d#4]@2 ~@3 [f#3,b3,d#4] ~@2", // F#m B
  AC: "[a3,c#4,e4]@2 ~@4 [a3,c#4,e4] ~ [g#3,b3,d#4]@2 ~@3 [g#3,b3,d#4] ~@2", // A G#m
  AD: "[a3,c#4,e4]@2 ~@3 [a3,c#4,e4] ~@2 [g#3,b3,d#4]@2 ~@4 [g#3,b3,d#4] ~", // A G#m
  AE: "[g3,c4,e4]@2 ~@4 [g3,c4,e4] ~ [a3,d4,f#4]@2 ~@4 [a3,d4,f#4] ~", // C D
  AF: "[a#3,d4,f4]@2 ~@4 [a#3,d4,f4] ~ [a#3,d#4,g4]@2 ~@3 [a#3,d#4,g4] ~@2", // A# D#
  AG: "[g#3,c4,d#4]@2 ~@3 [g#3,c4,d#4] ~@2 [a3,c4,f4]@2 ~@3 [a3,c4,f4] ~@2", AH: "[g3,b3,d4]@7 ~@9",
  AI: "[g3,b3,d4]@2 ~ [g3,b3,d4] ~@12", AJ: "[a3,c4,f4]@2 ~@4 [a3,c4,f4] ~ [g3,c4,e4]@2 ~@4 [g3,c4,e4] ~",
  AK: "[g3,c4,e4]@2 ~@2 [f3,a#3,d4]@2 ~@2 [a#3,d4,f4]@2 ~@4 [a#3,d4,f4] ~", // C A#
  AL: "[a3,c4,f4]@2 ~@3 [a3,c4,f4] ~@2 [g3,c4,e4]@2 ~@3 [g3,c4,e4] ~@2", // F C
  AM: "[g3,c4,e4] ~@3 [f3,a#3,d4]@2 ~@2 [f3,a#3,d4]@2 ~@3 [f3,a#3,d4] ~@2", // C A#
  AN: "[g3,c4,e4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4]@2 ~@3 [a#3,d4,f4] ~@2", // C A#
  AO: "[a3,c4,f4]@2 ~@4 [a3,c4,f4] ~ [g3,c4,e4]@2 ~@3 [g3,c4,e4] ~@2", // F C
  AP: "[g3,c4,e4] ~@3 [f3,a#3,d4]@2 ~@2 [a#3,d4,f4]@2 ~@4 [a#3,d4,f4] ~", // C A#
  AQ: "[a3,c#4,e4]@2 ~@3 [a3,c#4,e4] ~@2 [f#3,b3,d#4]@2 ~@4 [f#3,b3,d#4] ~", // A B
  AR: "[g3,b3,d4]@2 ~@3 [g3,b3,d4] ~@2 [g3,c4,e4]@2 ~@4 [g3,c4,e4] ~", // G C
  AS: "[a3,c4,f4]@2 ~@3 [a3,c4,f4] ~@2 [a3,d4,f#4]@2 ~@3 [a3,d4,f#4] ~@2", AT: "[g#3,b3,e4]@7 ~@9",
  AU: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] ~@8 [g#3,b3,e4]@2 ~@2", // E
  AV: "[f#3,b3,d4] ~@3 [a3,b3,d4,f#4]@2 ~@2 [g#3,b3,e4] ~@3 [f#3,b3,d4] ~@3", // Bm Bm7 E Bm
  AW: "[f#3,b3,d4]@2 ~@2 [a3,b3,d4,f#4]@2 ~@2 [g#3,b3,e4] ~@3 [b3,d4,f#4]@2 ~@2, b2", // Bm Bm7 E Bm
  AX: "[f#3,b3,d4] ~@3 [a3,b3,d4,f#4] ~@3 [g#3,b3,e4]@2 ~@2 [f#3,b3,d4] ~@3, b2", // Bm Bm7 E Bm
  AY: "[a3,c#4,e4]@2 ~@2 [f#3,b3,d4]@2 ~@2 [g#3,b3,e4]@2 b3 [f#4,b4] e5 b5 [g#3,b3,e4,b4,e5] e4", // A Bm E B5 E
  AZ: "[g3,b3,d4]@2 ~@4 [g3,b3,d4] ~ [a3,d4,f4]@2 ~@3 [a3,d4,f4] ~@2", // G Dm
  BA: "[a3,c#4,e4]@2 ~@3 [a3,c#4,e4] ~@2 [a3,c#4,f#4] ~@3 [g#3,b3,e4]@2 ~@2", BB: "[a3,c#4,e4]@2 ~ [a3,c#4,e4] ~@12",
})).s("gm_piano").gain(0.3)

// other · lead 1 square
const lead_1_square = note("<~@40 A B C D ~@9 E F G H I ~@32>".pickRestart({
  A: "g5 c6 g5 f5 e5 c5 g5 e5 f#5 d5 a5 f#5 d6 a5 f#6 a6", B: "g6 d6 a5 f5 e5 f5 a5 d6 f6 c6 g5 d#5 d5 d#5 a#5 d#6",
  C: "~ d6 f6 d#6 g6 f6 g6 g#6 g6 f6 c6 f6 d6 a5 f5 c6", D: "[e4,g4]",
  E: "e5 a5 e5 d5 c#5 a4 e5 c#5 d#5 b4 f#5 d#5 b5 f#5 d#6 f#6", F: "e6 b6 f#6 d6 c#6 d6 f#6 b6 d6 g6 e6 c6 b5 c6 g6 c7",
  G: "b5 a5 c6 b5 d6 c6 e6 f6 e6 d6 a5 d6 b5 f#6 d6 a6", H: "e6", I: "e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~",
})).s("gm_lead_1_square").gain(0.57)

// other · clarinet
const clarinet = note("<~@10 A B C D A B C D ~@48 A B C D A B C D A B C D A B ~@10>".pickRestart({
  A: "b4@6 b4!2 b4@2 c#5@2 d5@2 e5@2", B: "c#5 a4@3", C: "d5@4 d5 e5 [c#5,d5] b4 c5 b4 ~ a4 g4@2 d4@2", D: "e4",
})).s("gm_clarinet").gain(0.71)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@2 A B A B A B A B C D E F C D E F ~@10 G H I J K L M N O P Q R ~@18 A B A B A B A B C D E F C D E F C D E F C D ~@10
>`.pickRestart({
  A: "~ [f#4,a4,d5] [e4,g#4,c#5] [d4,f#4,b4]", B: "[c#4,e4,a4] [d4,f#4,b4] [b3,e4,g#4]@2",
  C: "b4@6 b4!2 b4@2 c#5@2 d5@2 e5@2", D: "c#5 a4@3", E: "d5@4 d5 e5 [c#5,d5] b4 c5 b4 ~ a4 g4@2 d4@2", F: "e4",
  G: "~@2 c#5@4 b4@2 g#4@5 c#5 b4 g#4", H: "f#4@3 e4 f#4@3 e4 f#4 g#4 b4 ~@5",
  I: "~ c#5 b4 g#4 f#4 [f#4,g#4] e4 ~@2 c#5 b4 g#4 f#4 [f#4,g#4] e4 f#4", // F#sus2
  J: "g#4@2 b4 g#4@2 b4 f#4@2 f#4@3 e4 f#4@2 e4@2", K: "~ c#5 b4 g#4 f#4 [f#4,g#4] e4 c#4 e4@2 f#4 e4 f#4@2 e4 f#4",
  L: "g#4 e4 f#4@4 f#4!3 e4!4 c#4!3", M: "c#4 e4 c#4@3 c#4@2 b3 c#4 [c#4,e4] b3 c#4 b3 c#4!2 b3",
  N: "e4@2 e4 c#4 e4 c#4 e4 c#4 f#4 e4@7", O: "~ g#4 b4 f#4 g#4 f#4 d#4 g#3@9",
  P: "~ g#4 f#4 e4 f#4 ~ e4 f#4 g#4 b4 g#4@6", Q: "~ g#4 f#4 d#4 c#4 ~ b3 c#4 d#4 f#4 c#4@2 b3@2 ~@2",
  R: "[d#4,g#4] [f#4,b4] [d#4,g#4] c#4@3 c#4 b3 d#4 c#4 b3@2 ~@4", // G#5 B5 G#5
})).s("gm_electric_guitar_jazz").gain(0.39)

// drums · kick
const kick = s("bd").struct("<~@2 [x ~@6 x!2 ~ x ~@3 x ~]!77 [x ~@6 x!2 ~ x ~@5] ~@10>").gain(0.5)

// drums · clap
const clap = s("cp").struct("<~@18 [~@3 x]!9 ~@13 [~@3 x]!4 ~@9 [~@3 x]!4 ~@33>").gain(0.57)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B C B@5 D B@25 D B C B D B@4 E B F C B@2 F B@5 G H B@3 D B@9 C B I F B@4 J ~@10
>`.pickRestart({
  A: "~ x!7 ~@8", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@5 x!3 ~ x!2", E: "~@4 x ~@3 x!2 ~ x!4 ~",
  F: "~@2 x ~@3 x!2", G: "x!8 ~@4 x ~@3", H: "x!10 ~ x!3 ~@2", I: "~@4 x ~@3 x ~ x!3 ~ x!2", J: "~ x ~@2",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@2 A@3 B ~ A@2 ~ A ~ A@4 ~ B ~@10 A ~ A ~@2 B A ~ A@3 ~@6 A@2 ~ A@2 ~@2 B ~@6 A ~@2 A@3 B ~ A ~ A@4 ~@2 A@3 ~@12
>`.pickRestart({
  A: "~@3 x", B: "~@14 x!2",
})).gain(0.5)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~@3 B ~@11 B ~@9 C ~@5 B ~@18 B ~@3 A ~@8 B ~@24>".pickRestart({
  A: "~@8 x!8", B: "~@11 x!3 ~@2", C: "~@7 x ~ x!2 ~@5",
})).gain(0.57)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A ~ B ~@8 A@2 ~ B ~@11 A@2 ~@2 B ~@2 A@2 ~@8 A ~ A@2 ~ A B ~@9 A@2 ~ B ~ A ~@3 A ~@4 A ~@13
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@8 x!3 ~@5",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct("<~@18 [x!16]!10 ~@12 [x!16]!5 ~@8 [x!16]!5 ~@32>").gain(0.43)

// drums · crash
const crash = s("cr").struct("<~@2 x ~@25 x ~@29 x ~@31>").gain(0.57)

// drums · bongos
const bongos = s("bongo:4").struct("<~@18 A@10 ~@12 A@4 B ~@8 A@4 B ~@32>".pickRestart({
  A: "x!4", B: "x!2 ~ x",
})).gain(1.5)

stack(
  tenor_sax, bass, piano, lead_1_square, clarinet, electric_guitar_jazz, kick, clap, snare, hihat, low_tom, open_hat,
  mid_tom, high_tom, ride, crash, bongos
)

More by Zappa Frank