Strudelify
Let's Twist Again cover art

Let's Twist Again

Let's Twist Again

Chubby Checker

KeyA♭ majorTempo185 bpm
0:00/0:00
// Let's Twist Again — Checker Chubby
// 185 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(185/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@13 A B C D@2 E F G H I B D@2 J A B K L F B C L F M A I B D@2 J A C N B C D@2 L J O P C Q D@2 L A B H B R D@2 L S T H
  B R D U L H V W L X C B Y Z AA H C AB AC D L H C B Y A B AD ~@8
>`.pickRestart({
  A: "eb2 eb1 f1 g1", B: "ab1 c2 eb2 c2", C: "ab1 ~ ab1@2 c2@2 eb2@2", D: "f1 ab1 c2 ab1",
  E: "db2 ~@3 bb1@4 ab1@4 bb1@4", F: "db2 ab1 bb1 db2", G: "eb2 c2 bb1 c2", H: "eb2 db2 c2 bb1",
  I: "ab1@3 ~ ab1@4 c2@4 eb2@4", J: "db2 ~ db2@2 bb1@2 ab1@2", K: "ab1 ~ ab1@2 bb1@2 c2@2", L: "db2 bb1 ab1 bb1",
  M: "eb2@3 ~ eb2@3 ~ eb2@3 ~ eb2@3 ~", N: "ab1 ~@3", O: "eb2 bb1 c2 bb1", P: "eb2 ~@7", Q: "ab1@2 c2@2 eb2@2 c2 ~",
  R: "ab1 ~@3 ab1@4 c2@4 eb2@4", S: "db2@4 ab1@4 bb1@4 db2@3 ~", T: "eb2@3 ~ eb2@4 c2@4 bb1@4",
  U: "f1@3 ~ f1@4 ab1@4 c2@4", V: "ab1@2 f1 ~ eb1@2 f1@2", W: "ab1@3 ~ ab1@4 bb1@4 c2@4",
  X: "db2@2 ~@2 db2@4 bb1@4 ab1@3 ~", Y: "db2@3 ~ db2@4 bb1@4 ab1@4", Z: "db2@4 bb1@4 ab1@4 bb1@3 ~",
  AA: "eb2 ~ eb2@2 c2@2 bb1@2", AB: "ab1@4 c2@4 eb2@4 c2@3 ~", AC: "f1 ~ f1@2 ab1@2 c2@2", AD: "ab1 ~@2 ab1@5",
})).s("gm_electric_bass_finger").gain(0.59)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~@13 A B C D E F G H I J K L@2 M N K O F G K P F G Q A R K S E M N C T U V W@2 X Y Z AA V AB W@2 X AC U AD AE AF AG E
  F AH AI I AJ AF L AK F I AL AM F AN C K M AO AI AD C AP AK L F I C K M N K AQ@8 ~
>`.pickRestart({
  A: "[eb5,eb6] ~ [eb5,eb6] ~ [db5,db6] ~ [db5,db6] ~ [c5,c6] ~ [c5,c6] ~ [bb4,bb5] ~ [bb4,bb5] ~, eb3 eb2 f2 g2", // Eb Db C Bb
  B: "[ab4,ab5,c6] ~ [ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] eb5 [ab5,c6] eb5 [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 c3 eb3 c3", // Ab
  C: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 ~ ab2@2 c3@2 eb3@2", // Ab
  D: "[f5,c6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~, f2 ab2 c3 ab2", // F5
  E: "[f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~, f2 ab2 c3 ab2", // F5
  F: "[f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~, db3 bb2 ab2 bb2", // Db
  G: "[f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~, db3 ab2 bb2 db3", // Db
  H: "[g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~, eb3 c3 bb2 c3", // Eb
  I: "[g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~, eb3 db3 c3 bb2", // Eb
  J: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 ~ ab2@2 c3@2 eb3@2", // Ab Cm Ab
  K: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 c3 eb3 c3", // Ab
  L: "[f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~, f2 ab2 c3 ab2", // Fm
  M: "[f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~, db3 ~ db3@2 bb2@2 ab2@2", // Db
  N: "[g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~, eb3 eb2 f2 g2", // Eb
  O: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 ~ ab2@2 bb2@2 c3@2", // Ab
  P: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,c6] ~ [eb5,ab5,c6] ~, ab2 ~ ab2@2 c3@2 eb3@2", // Ab Cm Ab
  Q: "[g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~, eb3 ~ eb3 ~ eb3 ~ eb3 ~", // Eb
  R: "[ab4,ab5,c6] ~ [ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 ~ ab2@2 c3@2 eb3@2", // Ab
  S: "[f5,c6,f6] ~ [f5,c6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~, f2 ab2 c3 ab2", // F5
  T: "[eb5,ab5,c6] ~@15, ab2 ~@3", U: "ab2 c3 eb3 c3", V: "ab2 ~ ab2@2 c3@2 eb3@2", W: "f2 ab2 c3 ab2",
  X: "db3 bb2 ab2 bb2", Y: "db3 ~ db3@2 bb2@2 ab2@2", Z: "eb3 bb2 c3 bb2", AA: "eb3 ~@7", AB: "ab2@2 c3@2 eb3@2 c3 ~",
  AC: "eb3 eb2 f2 g2",
  AD: "[eb5,eb6] ~ [eb5,eb6] ~ [db5,db6] ~ [db5,db6] ~ [c5,c6] ~ [c5,c6] ~ [bb4,bb5] ~ [bb4,bb5] ~, eb3 db3 c3 bb2", // Eb Db C Bb
  AE: "[ab5,c6] eb5 [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 c3 eb3 c3", // Ab
  AF: "[ab2,eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ~ ab2 c3 eb3", // Ab
  AG: "[c6,f6] ~ [c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~ [f5,c6,f6] ~, f2 ab2 c3 ab2", // F5
  AH: "[f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,b5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,b5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,b5,db6] ~ [f5,ab5,db6] ~, db3@2 ab2@2 bb2@2 db3 ~", // Db Db7 Db Db7 Db Db7 Db
  AI: "[g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~ [g5,bb5,eb6] ~, eb3 ~ eb3@2 c3@2 bb2@2", // Eb
  AJ: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6,db6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 c3 eb3 c3", // Ab
  AK: "[f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~, f2 ~ f2@2 ab2@2 c3@2", // Fm
  AL: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2@2 f2 ~ eb2@2 f2@2", // Ab
  AM: "[eb5,ab5,c6] ~ [eb5,ab5] ~ [eb5,ab5] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2 c6 ab2@2 bb2@2 c3@2", // Ab Ab5 Ab
  AN: "[f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~, db3 ~ db3@2 bb2@2 ab2 ~", // Db
  AO: "[f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,ab5,db6] ~, db3@2 bb2@2 ab2@2 bb2 ~", // Db
  AP: "[eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~ [eb5,ab5,c6] ~, ab2@2 c3@2 eb3@2 c3 ~", // Ab
  AQ: "[[eb5,ab5,c6] ~@5 [eb5,c6]@10 ~@112, ab2 ~@2 ab2@61]/8", // Ab Cm
})).s("gm_piano").gain(0.24)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@14 A@2 B@2 C@2 D@2 A@2 B@2 C D A@2 E F A@2 G C H@2 A@2 B@2 I D A J A@2 B@2 C K D L A@2 B@2 C D A H A@2 M B C@2 D@2
  A@2 B@2 C D A@2 C@2 A N C@2 D H A O B@2 C D N A C D P Q ~@8
>`.pickRestart({
  A: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,f3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,f3] ~ [ab2,eb3] ~", // Ab5 Db Ab5 Db Ab5
  B: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  C: "[db2,ab2] ~ [db2,ab2] ~ [db2,bb2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,bb2] ~ [db2,ab2] ~", // Db5 Gb Db5 Gb Db5
  D: "[eb2,bb2] ~ [eb2,bb2] ~ [eb2,c3] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,c3] ~ [eb2,bb2] ~", // Eb5 Cm Eb5 Cm Eb5
  E: "[db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~", // Db5
  F: "[db2,ab2] ~ [db2,ab2] ~ [db2,bb2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,bb2]@2 [db2,ab2] ~", // Db5 Gb Db5 Gb Db5
  G: "[db2,ab2] ~ [db2,ab2]@2 [db2,bb2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,bb2] ~ [db2,ab2] ~", // Db5 Gb Db5 Gb Db5
  H: "[eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~", // Eb5
  I: "[db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,bb2] ~ [db2,ab2] ~", // Db5 Gb Db5
  J: "[ab2,eb3] ~@15", // Ab5
  K: "[db2,ab2] ~ [db2,ab2] ~ [db2,bb2] ~ [db2,bb2] ~ [db2,ab2] ~ [db2,ab2] ~ [db2,bb2] ~ [db2,ab2] ~", // Db5 Gb Db5 Gb Db5
  L: "[eb2,bb2]@3 ~@13", M: "[f2,bb2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~",
  N: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,f3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,f3]@2 [ab2,eb3] ~", // Ab5 Db Ab5 Db Ab5
  O: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3,f3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,f3]@2 [ab2,eb3] ~", // Ab5 Fm7 Ab5 Db Ab5
  P: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,f3]@2 [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,f3] ~ [ab2,eb3] ~", // Ab5 Db Ab5 Db Ab5
  Q: "[ab2,eb3] ~@5 [ab2,eb3]@7 ~@3", // Ab5
})).s("gm_electric_guitar_muted").gain(0.5).pan(0.2)

// other · alto sax
const alto_sax = note(`<
  ~@13 A B C D E F G H I J C K E L M N O P Q R S T Q U V W C X Y Z AA AB AC AD AE AF AG AH AI AJ AK ~@3 E AL AM AN AO B
  C AP Y AQ AR AS AT AU C AV E AW M AX AY AZ BA@2 BB BC BD BE BF BG C BH E BI BJ BK BL BM BN BO BP ~@8
>`.pickRestart({
  A: "~@4 eb3@4 f3@3 ~ g3@2 ~@2", B: "ab3 ~@15", C: "~@2 ab4 g4", D: "f4 ~@5 f4 ~@9", E: "~@2 f4 eb4",
  F: "db4@2 ~@4 db4 ~@5 ab3@2 bb3@2", G: "db4 ~@5 db4 ~@4 bb3@3 ab3@2, ~@5 ab3 ~@2",
  H: "eb4 ~@5 eb4 ~@3 bb3@2 c4@2 bb3@2", I: "eb4 ~@3 eb4@2 ~@4 eb4@2 f4@2 eb4@2", J: "ab4 ~@5 ab4 ~@9",
  K: "f4@2 ~@4 f4 ~@9", L: "db4@2 ~@4 db4 ~@3 ab3@2 bb3@2 db4@2", M: "eb4 ~@5 eb4 ~@3 eb4@2 f4@2 eb4 ~",
  N: "ab4@2 ~@2 ab4@4 f4@2 [eb4,e4] ~ c4@4", O: "ab3@9 ~@7", P: "~@8 db4 ~@5 db4 ~", Q: "~@2 db4 ~@3 ab3@2 bb3@4 ab3@4",
  R: "ab4@2 ~@2 ab4@2 ~@2 ab4 ~@5 ab4 ~", S: "~@2 ab4 ~@3 eb4@2 f4@4 eb4@4", T: "db4 ~@3 db4@2 ~@2 db4 ~@5 db4 ~",
  U: "eb4 ~ eb4 ~ eb4 ~@3", V: "eb4 db4 c4 bb3", W: "ab3 ~@7", X: "f4 ~@7", Y: "~@8 f4@4 eb4@3 ~",
  Z: "db4 ~@5 db4 ~@4 bb3@4 ~, ~@5 ab3 ~@2", AA: "eb4@2 ~@4 eb4 ~@3 bb3 ~ c4@2 ~@2",
  AB: "ab4@2 ~@2 ab4@4 f4@2 eb4@2 c4@3 ~", AC: "ab3@3 ~@3 eb5 ~@3 eb5 ~ eb5@2 c5 ~", AD: "eb5@3 ~ eb5@9 ~@3",
  AE: "~@2 c5@2 ~@4 c5 ~ c5 ~ bb4@2 ab4 ~", AF: "bb4@2 c5 ~ eb5 ~ c5@8 ~@2", AG: "~@2 bb4@6 ab4@2 f4@2 eb4@2 c4 ~",
  AH: "~@2 db3!3 ~ db3@2 db3 ~ db3@2 db3 ~ db3@2", AI: "~ db3 ~@2 g4 bb4 c5 eb4",
  AJ: "~@2 eb4!3 ~ eb4!3 ~ eb4 ~ g4 ~ bb4 ~", AK: "eb5 ~@3", AL: "db4@3 ~@3 db4@2 ~@4 db4 ~ db4 ~",
  AM: "eb4 ~@2 eb4 ~@2 f4 ~", AN: "ab4 ~ ab4@2 f4 eb4 c4 eb4, ~@8 ab4 ~@7", AO: "~@2 eb4@2 db4@4 c4@4 bb3@3 ~",
  AP: "f4@3 ~@3 f4@2 ~@8", AQ: "db4 ~@2 db4 ~@2 ab3 bb3", AR: "db4 ~@5 db4@2 ~@2 ab3@2 bb3@2 db4 ~",
  AS: "eb4@2 ~@4 eb4 ~@9", AT: "~@2 eb4@2 f4@2 eb4 ~@3 eb4@2 f4@2 eb4@2", AU: "ab4 ~@3 ab4@2 ~@10", AV: "f4 ~ f4 ~@5",
  AW: "db4 ~@2 db4 ~ ab3 bb3 ab3", AX: "ab4 ~ ab4@2 f4 eb4 c4@2", AY: "ab3@9 ~ ab3 ~ bb3@2 bb3 ~",
  AZ: "db4@2 ~@2 db4@2 ~@2 db4@3 ~ bb3@2 ab3@2, ~@12 db4 ~@3",
  BA: "[db4 ~@3 db4@2 ~@2 db4@4 bb3@2 ab3@4 ~@2 ab4@4 f4@2 eb4@2 f4@4]/2", BB: "c4 ~@3 c4@4 bb3@4 ab3@4",
  BC: "db4 ~ db4 ~ db4@2 bb3 ab3", BD: "db4 ~@3 db4 ~@3 db4@4 bb3@2 ab3@2", BE: "eb4 ~ eb4@4 ~@2",
  BF: "~@2 eb4@2 f4@2 eb4@2 ab4 ~ ab4@2 f4@2 eb4@2", BG: "~@4 eb4 ~@11", BH: "f4 ~ f4 ~@5, g4 ~@15",
  BI: "db4 ~ db4 ~@5", BJ: "~@8 eb4@3 ~ eb4@3 ~", BK: "~@4 ab4@3 ~ f4@2 eb4@2 c4@3 ~", BL: "ab3 ~ ab3@2 bb3@2 c4@2",
  BM: "db4 ~ db4@2 bb3 ab3 bb3@2", BN: "eb4@2 ~@2 eb4@3 ~@3 eb4@2 f4@2 eb4@2", BO: "ab4 ~ ab4@2 f4 eb4 c4 bb3",
  BP: "ab3 ~@5 ab3@7 ~@3",
})).s("gm_alto_sax").gain(0.54).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@3 A@10 B A@31 B A@7 B A@43 C ~@8>".pickRestart({
  A: "x!2", B: "x", C: "x ~@2 x ~@4",
})).gain(0.71)

// drums · snare
const snare = s("sd").struct("<~@3 A@10 B C@23 D C@7 D E C@5 E F C@7 D C@7 D C@15 D C@7 G C@2 G ~@9>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", C: "~@2 x ~@3 x!2", D: "~@2 x!2 ~ x!3", E: "~@2 x!2 ~@2 x!2",
  F: "~@5 x!3", G: "~@2 x ~@2 x!3",
})).gain(0.71)

// drums · clap
const clap = s("cp").struct("<~@6 [~@3 x] [~ x ~ x]!6 ~ [~ x ~ x]!83 x ~@8>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@3 A@11 B@31 C B@6 D E B@43 F ~@8>".pickRestart({
  A: "~ x ~ x", B: "x!8", C: "x!3 ~@5", D: "x!4 ~ x!3", E: "x!5 ~ x ~", F: "x ~@2 x ~@4",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@14 A ~@15 A ~@7 A ~@6 A@2 ~@15 A ~@7 A ~@7 A ~@7 A ~@10 B ~@8>".pickRestart({
  A: "x", B: "~@3 x ~@4",
})).gain(0.71)

stack(bass, piano, electric_guitar_muted, alto_sax, kick, snare, clap, hihat, crash)

More by Chubby Checker