Strudelify

Rock Lobster

The B-52's

KeyC minorTempo183 bpm
0:00/0:00
// Rock Lobster — The B-52's
// 183 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 221 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GtrClean.
setcpm(183/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.

// other · electric guitar clean · "GtrClean"
const electric_guitar_clean = note(`<
  ~ A B A C D E F G H E A E I G A J K L M N K L M N K L M O P L Q R S T S T U@3 V A G A E F E W E W E W E W E I G I G I
  G X L M N K L M N K L M O P L Y@2 S T S T U@3 V A G Z G W E A E A E A E A E A E A E AA AB AC AD AE AF AG@2 AH AI AJ AK
  AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ@2 BA@2 BB BC BD BE BF BC BG BH BI BJ BK BL BM BJ BK BN BO BP BO BQ@2 BR@2
  BS@2 BT@2 BU BV@2 BW BX BY BZ CA@2 BY BZ CB@2 BY CC CD@2 BY BZ CE@2 CF CG CH CI BY CJ CK@2 CL CM CF CM BY CN CO@2 CP
  CQ CR CS CT CU CV CW CX CY CZ@2 CH DA@3 CF DB DC@2 DD@2 DE@2
>`.pickRestart({
  A: "c2@3 ~ d2@3 ~ eb2@3 ~ d2 ~ c2 ~", B: "ab2@2 f2@2 ab2@2 g2@6 ~@2 g2 ~", C: "ab2 ~ f2 ~ ab2 ~ g2@6 ~@2 g2@2",
  D: "c2@3 ~ d2@3 ~ eb2@2 ~@2 d2 ~ c2 ~", E: "ab2 ~ f2 ~ ab2 ~ g2@6 ~@2 g2 ~", F: "c2@2 ~@2 d2@3 ~ eb2@3 ~ d2 ~ c2 ~",
  G: "ab2 ~ f2 ~ ab2 ~ g2@7 ~ g2 ~", H: "c2@3 ~ d2@2 ~@2 eb2@2 ~@2 d2 ~ c2 ~", I: "c2@3 ~ d2@2 ~@2 eb2@3 ~ d2 ~ c2 ~",
  J: "ab2 ~ f2 ~ ab2 ~ g2@6 ~@4", K: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  L: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", M: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~",
  N: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", O: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~, ~@2 f3 ab3",
  P: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~, g3@5 ~@3", Q: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ g2@2",
  R: "~@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", S: "c2 ~ c2 ~ c2 ~ c2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~",
  T: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ g2 ~ g2 ~ g2 ~ g2 ~", U: "c2 ~ c2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g2 ~ g2 ~",
  V: "ab2 ~ ab2 ~ g2 ~ g2 ~ ab2 ~ ab2 ~ g2 ~ g2 ~", W: "c2@2 ~@2 d2@2 ~@2 eb2@3 ~ d2 ~ c2 ~",
  X: "c2@3 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  Y: "[ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ g2@4 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~]/2",
  Z: "c2@3 ~ d2@2 ~@2 eb2@3 ~ d2@2 c2 ~", AA: "c2@3 ~ d2@3 ~ eb2@3 ~ d2@2 c2 ~", AB: "ab2 ~ f2 ~ ab2 ~ g2@7 ~@3",
  AC: "bb2@3 ~ b2@3 ~ c3 ~ c3 ~ c3 ~ c3 ~", AD: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
  AE: "c3 ~ c3 ~ c3 ~ c3 ~ c2 ~ c2 ~ c2 ~ c2 ~", AF: "c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~",
  AG: "c2 ~ c2 ~ c2 ~ c2 ~ c3 ~ c3 ~ c3 ~ c3 ~", AH: "c2 ~ c2 ~ c2 ~ c2 ~ c3 ~@3 c2 ~@3",
  AI: "c3 ~@3 c2 ~@3 c3 ~ c2 ~ c2 ~ c2 ~", AJ: "c2 ~ c2 ~ c2 ~ c2 ~ f4 ~ f4 ~ f4 ~ f4 ~",
  AK: "f4 ~ f4 ~ f4 ~ f4 ~ e4 ~ e4 ~ e4 ~ e4 ~", AL: "e4 ~ e4 ~ e4 ~ e4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~",
  AM: "eb4 ~ eb4 ~ eb4 ~ eb4 ~ d4 ~ d4 ~ d4 ~ d4 ~", AN: "d4 ~ d4 ~ d4 ~ d4 ~ db4 ~ db4 ~ db4 ~ db4 ~",
  AO: "db4 ~ db4 ~ db4 ~ db4 ~ c4 ~ c4 ~ c4 ~ c4 ~", AP: "c4 ~ c4 ~ c4 ~ c4 ~ b3 ~ b3 ~ b3 ~ b3 ~",
  AQ: "b3 ~ b3 ~ b3 ~ b3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~", AR: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ a3 ~ a3 ~ a3 ~ a3 ~",
  AS: "a3 ~ a3 ~ a3 ~ a3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~", AT: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ g3 ~ g3 ~ g3 ~ g3 ~",
  AU: "g3 ~ g3 ~ g3 ~ g3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~", AV: "gb3 ~ gb3 ~ gb3 ~ gb3@2 f3 ~ gb3 ~ gb3 ~ gb3 ~",
  AW: "gb3 ~ gb3 ~ gb3 ~ gb3@2 f3 ~ gb3 ~ gb3 ~ gb3@2", AX: "f3 ~ gb3 ~ gb3 ~ gb3@2 f3 ~ gb3@2 f3 ~ gb3@2",
  AY: "f3 ~ gb3@2 f3 ~ gb3 ~ c2@3 ~ d2@3 ~", AZ: "[eb2@3 ~ d2 ~ c2 ~ ab2 ~ f2 ~ ab2 ~ g2@7 ~ g2 ~ c2@3 ~ d2@3 ~]/2",
  BA: "[eb2@3 ~ d2 ~ c2 ~ ab2 ~ f2 ~ ab2 ~ g2@6 ~@2 g2 ~ [f2,c3]@3 ~ [ab2,eb3]@3 ~]/2", // F5 Ab5
  BB: "[bb2,f3]@3 ~@3 [bb2,f3]@2 ~@2 [ab2,eb3]@3 ~ [ab2,eb3] ~", // Bb5 Ab5
  BC: "[c3,f3]@2 ~@2 f3@2 ~@2 [f2,c3]@3 ~ [ab2,eb3]@2 ~@2", // F5 Ab5
  BD: "[bb2,f3]@2 ~@4 [ab2,eb3]@3 ~ [ab2,eb3]@2 ~@2 [ab2,eb3] ~", BE: "f3@2 ~@6 [f2,c3]@3 ~ [ab2,eb3]@2 ~@2",
  BF: "[bb2,f3]@4 ~@2 [bb2,f3]@2 ~@2 [ab2,eb3]@2 ~@2 [ab2,eb3] ~", // Bb5 Ab5
  BG: "[bb2,f3]@2 ~@4 [ab2,eb3]@2 ~@2 [ab2,eb3]@2 ~@2 [ab2,eb3] ~", // Bb5 Ab5
  BH: "f3@3 ~@3 [f2,c3]@2 ~@2 [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  BI: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ eb2 ~ eb2 ~ eb2 ~", // F5
  BJ: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3]@2", // F5
  BK: "~@2 [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ eb2 ~ eb2 ~ eb2 ~", // F5
  BL: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,c3]@3 ~ [f2,c3]@3 ~", BM: "[f2,c3]@3 ~ [f2,c3]@3 ~ [f2,c3] ~ eb2 ~ eb2 ~ eb2 ~",
  BN: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,c3,ab3] ~ [f2,c3,ab3] ~ [f2,c3,ab3] ~ [f2,ab3] ~, ~@7 c3", // Fm
  BO: "[f2,ab3] ~ [f2,c3,ab3] ~ [f2,c3,ab3] ~ [f2,c3,ab3] ~ [f2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~", // Fm Ab5
  BP: "[ab2,ab3] ~ [ab2,ab3] ~ [g2,ab3] ~ [g2,ab3] ~ [f2,c3,ab3] ~ [f2,c3,ab3] ~ [f2,c3,ab3] ~ [f2,ab3] ~, ~@7 c3", // Ab Abmaj7 Fm
  BQ: "[[eb2,ab3] ~ [eb2,ab3] ~ [eb2,g3] ~ [eb2,g3] ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ [f2,f3]@5 ~ eb2@3 ~ f2 ~, ~@8 [f2,f3]@6 [f2,f3]@5 ~ c3 ~@11]/2", // Ab5 Eb F
  BR: "[eb2 ~ eb2 ~ f3@2 eb2 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ [f2,f3]@5 ~ eb2@2 ~@2 f2 ~, ~@4 eb2 ~@3 [f2,f3]@5 ~ [f2,f3]@4 ~@2 c3 ~@11]/2", // F
  BS: "[eb2 ~ eb2 ~ [f2,f3]@2 ~@2 [f2,c3,f3]@2 ~@2 f2 ~ f2@4 ~@2 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~, ~@14 c3@2 ~@4 f2@5 ~@7]/2", // F F5
  BT: "[eb2 ~ eb2 ~ eb2 ~ eb2 ~ [c3,f3]@2 ~@2 f2 ~ f2@4 ~@2 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2@2, ~@8 f2@4 ~@2 c3@2 ~@4 f2@5 ~@7]/2", // F5
  BU: "~@2 eb2 ~ eb2 ~ eb2 ~ [f2,c3,f3]@2 ~@2 f2 ~ [f2,c3]@2", // F5
  BV: "[~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [c3,f3]@2 ~@2 f2@2 f2@2, ~@4 f2@4 ~@6 ab3@6 g2 ~@3 f2@4 ~@2 c3 ~]/2", // F5
  BW: "~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ [eb2,f3]@2, ~ f2 ~@2", // F5 Ebsus2
  BX: "ab2 ~ ab2 ~ [g2,f3]@2 g2 ~ [f2,c3,f3]@2 ~@2 f2 ~ [f2,c3]@2", BY: "~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~, ~ f2 ~@2",
  BZ: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,c3,f3]@2 ~@2 f2 ~ [f2,c3]@2", // F5
  CA: "[~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ ab3@2 g2 ~ [f2,c3,f3]@2 ~@2 f2 ~ [f2,c3]@2, ~@4 f2@4 ~@6 ab3@5 ~ g2 ~@11]/2", // F5
  CB: "[~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [c3,f3]@2 ~@2 f2 ~ [f2,c3]@2, ~@4 f2@4 ~@6 ab3@5 ~ g2 ~@3 f2@4 ~@4]/2", // F5
  CC: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [c3,f3]@2 ~@2 f2 ~ [f2,c3]@2, ~@2 f2 ~", // F5
  CD: "[~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [f2,c3,f3]@2 ~@2 f2 ~ [f2,c3]@2, ~@4 f2@4 ~@6 ab3@5 ~ g2 ~@11]/2", // F5
  CE: "[~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ [g2,ab3]@2 g2 ~ [f2,c3,f3]@2 ~@4 f2@2, ~@4 f2@4 ~@6 ab3@5 ~@11 c3 ~]/2", // F5 Abmaj7 F5
  CF: "~@4 [f2,f3]@3 ~@3 eb2 ~ eb2 ~ eb2 ~, ~@4 c3 ~@11", // F
  CG: "ab2 ~ ab2 ~ g2 ~ g2 ~ [f2,f3]@4 ~@2 [f2,c3,f3]@2, ~@8 c3 ~@7", // F F5
  CH: "~@4 f2@4 ~@2 eb2 ~ eb2 ~ eb2 ~, ~@2 f3 ~@5, ~@4 c3 ~@11",
  CI: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,f3]@4 ~@2 [f2,c3]@2, ~@4 c3 ~@3", // F F5
  CJ: "ab2 ~ ab2 ~ g2 ~ g2 ~ [f2,c3,f3]@3 ~@3 [f2,c3]@2", // F5
  CK: "[~@4 [c3,f3]@2 ~@4 ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [f2,f3]@4 ~@2 [f2,c3]@2, ~@4 f2@4 ~@6 ab3@5 ~ g2 ~@3 c3@2 ~@6]/2", // F5 F F5
  CL: "~@4 [f2,f3]@4 ~@2 eb2 ~ eb2 ~ eb2 ~, ~@2 c3 ~@5", CM: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,c3,f3]@2 ~@4 [f2,c3]@2",
  CN: "ab2 ~ ab2 ~ g2 ~ g2 ~ [f2,c3]@4 ~@2 [f2,c3]@2, ~@4 f3 ~@3", // F5
  CO: "[~@4 [c3,f3]@2 ~@4 ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [f2,c3,f3]@2 ~@4 c3@2, ~@4 f2@4 ~@6 ab3@5 ~ g2 ~@11]/2", // F5
  CP: "~@2 [c3,f3] ~@5", CQ: "~@8 [f2,ab3] ~ [f2,ab3] ~ [f2,ab3] ~ [f2,c3,ab3] ~, ~@2 c3 ~",
  CR: "[f2,ab3] ~ [f2,ab3] ~ [f2,ab3] ~ [f2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~, c3 ~@7", // Fm Ab5
  CS: "[eb2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~ [f2,c3,ab3] ~ [f2,ab3] ~ [f2,ab3] ~ [f2,c3,ab3] ~", // Ab5 Fm
  CT: "[f2,ab3] ~ [f2,ab3] ~ [f2,c3,ab3] ~ [f2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~ [eb2,ab3] ~", // Fm Ab5
  CU: "[eb2,ab3] ~ [eb2,ab3] ~ [eb2,g3] ~ [eb2,g3] ~ [f2,c3]@3 ~@3 [f2,c3]@2, ~@8 f3 ~@7", // Ab5 Eb F5
  CV: "~@4 [f2,c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~", CW: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,c3,f3]@2 ~@4 f2@2, ~@14 c3 ~",
  CX: "~@4 [f2,c3,f3]@2 ~@4 eb2 ~ eb2 ~ [eb2,ab3]@2", // F5 Ab5
  CY: "eb2 ~ eb2 ~ [eb2,ab3]@2 eb2 ~ [f2,f3]@4 ~@2 [f2,c3]@2, ~@8 c3 ~@7", // Ab5 F F5
  CZ: "[~@4 [c3,f3]@2 ~@4 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [f2,f3]@3 ~@3 f2@2, ~@4 f2@4 ~@6 ab3@5 ~ g2 ~@3 c3 ~@5 c3 ~]/2", // F5 F
  DA: "[eb2 ~ eb2 ~ eb2 ~ eb2 ~ [f2,f3]@4 ~@2 f2@4 ~@2 f2@4 ~@2 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ f2@4 ~@2 f2@2, ~@8 c3@2 ~@4 c3 ~@5 f3@2 ~@8 ab3@5 ~@5 f3@2 ~@6, ~@20 c3 ~@15 g2 ~@3 c3 ~@5 c3 ~]/3", // F
  DB: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ f2@4 ~@2 f2@2, ~@4 f3 ~@3, ~@8 c3 ~@5 c3 ~",
  DC: "[~@4 f2@4 ~@2 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ f2@4 ~@2 f2@2, ~@4 f3@2 ~@8 ab3@5 ~@5 f3@2 ~@6, ~@4 c3 ~@15 g2 ~@3 c3 ~@5 c3 ~]/2",
  DD: "[~@4 f2@4 ~@2 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [f2,f3]@3 ~@3 f2@2, ~@4 f3@2 ~@8 ab3@5 ~@13, ~@4 c3 ~@15 g2 ~@3 c3 ~@5 c3 ~]/2", // F
  DE: "[~@4 f2@4 ~@2 eb2 ~ eb2 ~ eb2 ~ ab2 ~ ab2 ~ g3@2 g2 ~ [f2,c3,f3]@2 ~@6, ~@4 f3@2 ~@8 ab3@5 ~@13, ~@4 c3 ~@15 g2 ~@11]/2", // F5
})).s("gm_electric_guitar_clean").gain(0.5)

// bass · electric bass finger · "FingrBass"
const bass = note(`<
  ~@5 A B A C A C A B A B D B E F G H I J K H E F K H E J K H L M L N O P Q R S ~@3 A C A T D C A C D T U C D T A T V J
  W X E Y Z X AA Y W AB AC AD K H AE N L N AF@2 AG@2 S ~@3 U AH U C U C A AI A T A AI A T A B AJ AK AL AK@3 AM AN AO@2
  ~@33 AP@2 AQ@2 AR@2 AS ~ AT@2 AU@2 AV AW AX@8 AY@2 AX@6 AZ@2 AX@8 AZ@2 BA@2 AX@2 AY@2 AX@2 BB BC BD@2 BE@2 BF@2 AY@4
  BG@2 AX@8 BH
>`.pickRestart({
  A: "c2@3 ~@5", B: "c2@4 ~@2 g1@7 ~@3", C: "c2@2 ~ g1@3 ~@2", D: "c2@7 ~@9", E: "c1@5 ~@3 c1@5 ~@3",
  F: "eb1@6 ~@2 eb1@5 ~@3", G: "ab1@5 ~@3 ab1@6 ~@2", H: "g1@5 ~@3 g1@5 ~@3", I: "c1@5 ~@3 c1@4 ~@4",
  J: "eb1@5 ~@3 eb1@4 ~@4", K: "ab1@5 ~@3 ab1@5 ~@3", L: "c1@5 ~@3 eb1@5 ~@3", M: "ab1@6 ~@2 g1@5 ~@3",
  N: "ab1@5 ~@3 g1@5 ~@3", O: "c1@3 ~ eb1@3 ~ ab1@2 ~@2 g1@3 ~", P: "c1@2 ~@2 eb1@3 ~ ab1@3 ~ g1@3 ~",
  Q: "ab1@2 ~@2 g1@3 ~ ab1@3 ~ g1@3 ~", R: "ab1@3 ~ g1@3 ~ ab1@3 ~ g1@2 ~@2", S: "c1 ~@7", T: "c2@4 ~@2 g1@5 ~@5",
  U: "c2@5 ~@11", V: "c1@3 ~ c1@3 ~", W: "ab1@4 ~@4 ab1@5 ~@3", X: "g1 ~ g1 ~", Y: "eb1 ~ eb1 ~", Z: "ab1 ~ ab1 ~",
  AA: "c1@4 ~@4 c1@5 ~@3", AB: "g1@5 ~@3 g1@4 ~@4", AC: "c1@5 ~@3 c1@6 ~@2", AD: "eb1@5 ~@3 eb1@5 ~@3",
  AE: "c1@3 ~ eb1@3 ~", AF: "c1@3 ~ eb1@2 ~@2 ab1@2 ~@2 g1@2 ~@2", AG: "ab1 ~ g1 ~ ab1 ~ g1 ~", AH: "c2@3 ~@3 g1@6 ~@4",
  AI: "c2@3 ~@3 g1@5 ~@5", AJ: "bb1@3 ~ b1@3 ~ c1 ~ c1 ~ c1 ~ c1 ~", AK: "c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~",
  AL: "c1 ~ c1 ~ c1 ~ c1@3 ~ c1 ~ c1 ~ c1 ~", AM: "c1 ~ c1 ~ c1 ~ c1 ~ c1@2 ~@2 c1@3 ~",
  AN: "c1@3 ~ c1@3 ~ c1 ~ c1 ~ c1 ~ c1 ~", AO: "[c1 ~ c1 ~ c1 ~ c1 ~ f2@16 ~@8]/2",
  AP: "[~@8 f1@4 ~@2 f1@4 ~@8 eb1 ~ eb1 ~ eb1 ~]/2", AQ: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@4 ~@2 f1@4 ~@14]/2",
  AR: "[~@8 f1@3 ~@3 f1@4 ~@2 f1@3 ~@3 eb1 ~ eb1 ~ eb1 ~]/2", AS: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1@3 ~@3 f1@2",
  AT: "[~@8 f1@4 ~@2 f1@4 ~@2 f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~]/2",
  AU: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@3 ~@3 f1@4 ~@2 f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~]/2",
  AV: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1@4 ~@2 f1@2", AW: "~@4 f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~",
  AX: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@4 ~@2 f1@4 ~@2 f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~]/2",
  AY: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@5 ~ f1@4 ~@2 f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~]/2",
  AZ: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@4 ~@2 f1@5 ~ f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~]/2",
  BA: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@4 ~@2 f1@4 ~@2 f1@5 ~ eb1 ~ eb1 ~ eb1 ~]/2", BB: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1@5 ~ f1 ~",
  BC: "f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~@3 ab1@2", BD: "[~@2 ab1 ~ g1@2 ~@2 f1@4 ~@2 f1@5 ~ f1@4 ~@2 eb1 ~ eb1 ~ eb1 ~]/2",
  BE: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@4 ~@2 f1@5 ~ f1@5 ~ f1 ~ eb1 ~ eb1 ~]/2",
  BF: "[ab1 ~ ab1 ~ g1 ~ g1 ~ f1@5 ~ f1@4 ~@2 f1@5 ~ eb1 ~ eb1 ~ eb1 ~]/2",
  BG: "[ab1 ~ ab1 ~ [g1,ab1] ~ g1 ~ f1@2 ~@4 f1@4 ~@2 f1@5 ~ eb1 ~ eb1 ~ eb1 ~]/2", // Abmaj7
  BH: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1@2 ~@6",
})).s("gm_electric_bass_finger").gain(0.64)

// other · string ensemble 1 · "Strings1"
const string_ensemble_1 = note("<~@113 A@8 B@7 ~@93>".pickRestart({
  A: "[~ f5@2 e5@2 eb5@2 d5@2 db5@2 c5@2 b4@2 bb4]/8", B: "[~ a4@2 ab4@2 g4@2 gb4@6 ~]/7",
})).s("gm_string_ensemble_1").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A@2 B C B C B C B C B C B C D@22 E@2 F ~ F ~ B G B G B G B G B G B G B G B G D@11 E D@10 E@2 ~@2 F ~ B C B C B C B
  C B C B C B C B C H I J C K C E@2 F ~@14 L ~ M A N C E C E C E C D O P I P I P I@5 P Q P Q P I P I P I P I P I P I P I
  P I P I P I P I P I P I P I P I P I P I P I P I P I P I P R P I P I P I P I P I P I P I P I P I P I J
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@2 x", C: "x ~@2 x ~ x ~@2", D: "x ~@3 x!2 ~@2", E: "x!2", F: "x", G: "x ~@2 x ~@4",
  H: "x ~@3 x!2 ~ x", I: "~ x ~@2 x!2 ~ x", J: "~ x ~@2 x ~@3", K: "x!2 ~@2 x ~@3", L: "~ x", M: "~@2 x!2", N: "x!3 ~",
  O: "x!2 ~@2 x!2 ~ x", P: "~ x ~@2 x ~@2 x", Q: "~@2 x ~ x!2 ~ x", R: "x ~@2 x!3 ~ x",
})).gain(0.72)

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

// drums · low tom
const low_tom = s("lt").struct("<~@136 A ~ A ~@9 B ~@15 C ~@17 D ~@3 C ~@34>".pickRestart({
  A: "~ x ~@2", B: "~ x!3 ~@4", C: "~@3 x ~@4", D: "~@2 x!2 ~@4",
})).gain(0.72)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@43 A ~@28 B ~@22 C ~ C ~@8 D E ~@15 F ~@17 G ~@3 F ~@34>".pickRestart({
  A: "~@10 x!3 ~@3", B: "x ~ x!3 ~@11", C: "~ x ~@2", D: "~@7 x", E: "x", F: "~ x!2 ~@5", G: "~ x ~@6",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@16 A B@20 C@2 B D ~@19 E B@20 C@2 B A ~@19 A B@4 C@2 B D ~@27 F B G B G B@2 A H B@7 I ~ J ~ J ~ J ~@21 K ~@13 H B G
  B D ~@3 J L J L J L J L J L ~@2 J L M
>`.pickRestart({
  A: "x!5 ~@3", B: "x!8", C: "x!6 ~ x", D: "x!4 ~@4", E: "~ x ~ x!5", F: "~@4 x!4", G: "x!4 ~ x!3", H: "~@5 x!3",
  I: "x!3 ~@3 x ~", J: "~@3 x", K: "~@3 x ~@4", L: "x", M: "~ x ~@2",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~ A ~@11 A ~@19 B@2 ~@2 A ~ A ~ A ~@14 C A ~@19 B@2 ~@2 A ~ A ~ A ~@15 A ~@3 B@2 ~@2 D ~@14 D ~ D ~ D ~ C ~@5 C
  ~ D ~ D ~@3 D@2 ~@14 D ~@7 D ~ D ~@5 D ~ D ~@3 D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~@18
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@2", D: "~ x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@5 A@36 B ~@3 A@40 B ~@3 A@24 C ~@18 D A@7 E A@79 F>".pickRestart({
  A: "x!8", B: "x", C: "x!6 ~ x", D: "~@4 x!4", E: "x!3 ~ x!4", F: "x!5 ~@3",
})).gain(0.32)

// drums · cowbell
const cowbell = s("cb").struct(`<
// … 13 more lines

More by The B-52's