Strudelify

A Night in Tunesia

Gillespie Dizzy

KeyF majorTempo182 bpm
0:00/0:00
// A Night in Tunesia — Gillespie Dizzy
// 182 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 188 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(182/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.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D A D C B E F@3 G@3 H I J K@2 L@2 M@2 N O@4 P@3 Q R S@4 T@7 U@4 V@4 ~@3 W X@2 Y Z@3 AA@2 AB@2 AC@3 AD@2 AE AF@3
  AG AH@4 AI AJ@2 AK@2 AL@2 AM@2 AN AO@2 AP AQ AR@2 AS AT@2 AU AV AW AX AY@2 AZ BA BB@6 BC@2 BD@2 BE@2 BF ~ BG ~ BF ~ BH
  ~ BF ~ BI ~ BF ~ BJ ~ BK BL BM@2 BN BO BP@2 BQ@2 BR BS BT BO BU BV@5 BW@3 BX@2 BY@3 BZ@2 CA CB@8 CC@2 CD@4 ~@7
>`.pickRestart({
  A: "~@2 [bb3,eb4]@4 [ab3,db4]@2 [bb3,eb4]@2 [ab3,db4]@2 [bb3,eb4]@2 [ab3,db4] ~, ~ e3@6 ~", // Eb5 Db5 Eb5 Db5 Eb5 Db5
  B: "~@2 [b3,e4]@4 [a3,d4]@2 [b3,e4]@2 [a3,d4]@2 [b3,e4]@2 [a3,d4] ~, ~@2 f3@13 ~", // E5 D5 E5 D5 E5 D5
  C: "~ [bb3,eb4]@2 [ab3,db4] [bb3,eb4] [ab3,db4] [bb3,eb4] [ab3,db4], ~@2 e3@13 ~", // Eb5 Db5 Eb5 Db5 Eb5 Db5
  D: "~ [b3,e4]@2 [a3,d4] [b3,e4] [a3,d4] [b3,e4] [a3,d4], ~@2 f3@13 ~", E: "[g3,db4,f4,c5,f5,c6]",
  F: "[[f3,b3,e4,b4,e5]@10 [f3,b3,e4,g4,b4]@4 [g3,db4,f4,a4,c5]@15 ~@5 [a4,c5]@2 [f3,b3,e4,g4,b4]@12, ~@5 [f3,b3,e4,g4,b4] ~@2]/3", // E Em F Am Em
  G: "[[g3,db4,f4,a4,c5]@9 ~ [g3,db4,f4,a4,c5]@4 [f3,b3,e4,g4,b4]@8 [f3,b3,e4,b4,e5]@8 [e3,bb3,d4,g4,bb4,d5]@9 ~ [a2,g3,g4,bb4,db5,e5]@8]/3", // F Em E Em7b5 A7
  H: "[d3,c4,e4,f4,a4]", I: "[g3,db4,f4,c5,f5,c6]@15 ~", J: "~@2 [f3,b3,e4,b4,g5] ~@7 [f3,b3,e4,b4,g5] ~@5",
  K: "[~@10 [g3,db4,f4,c5,a5] ~@3 [f3,b3,e4,b4,g5]@17 ~]/2", // F Em
  L: "[[g3,db4,f4,c5,f5]@6 [g3,db4,f4,c5,f5] ~@7 [f3,b3,e4,b4,e5]@17 ~]/2", // Csus4 E
  M: "[[e3,bb3,d4,g4,bb4]@8 [g3,db4,f4,a4,c5]@6 ~ [d3,c4,e4,f4]@17, ~@14 a4@17 ~]/2", // Em7b5 F Dm7
  N: "[a3,eb4,g4,b4,d5]@11 [c4,g4,b4] ~@3 [f4,gb4,a4,c5]", // G Cmaj7 F
  O: "[~@7 [d4,eb4,gb4,a4] ~@19 [a3,bb3] ~@4 [a3,bb3] ~@6 [a3,bb3] ~@6 [e3,bb3,c4,db4,e4,g4]@16 [e3,bb3,eb4,ab4,c5] ~, ~@15 [c4,d4,f4]@28 ~@21]/4", // D Bbmaj7 C7 Ab Dm7
  P: "[~@11 [e3,bb3,db4,gb4,bb4]@4 [eb3,a3,c4,f4,a4]@15 ~ [e3,bb3,d4]@7 [g3,db4,f4,a4,c5]@10, ~@30 [g4,bb4,d5]@7 ~@11]/3", // Gb7 F7 Em7b5 F Gm
  Q: "[g3,db4,f4,c5,f5,c6]@14 [f3,b3,e4] ~, ~@7 [b4,e5]", R: "~@2 [a4,d5] ~ [f3,b3,e4,b4,e5]@12",
  S: "[[g3,db4,f4,a4,c5]@14 ~@4 [a4,c5]@5 [f3,b3,e4] ~@4 [b4,d5]@2 [g3,db4,f4,a4,c5]@9 ~ [g3,db4,f4,c5,f5]@6 ~@4 [c5,f5]@2 ~@2 [f3,b3,e4]@9 ~, ~@14 [f3,b3,e4,g4,b4]@9 ~ [a4,c5]@6 ~@16 [f3,b3,e4,b4,e5]@6 [b4,e5]@11 ~]/4", // F Am E Bm F Csus4 F5 E …
  T: "[[e3,bb3,d4,g4,bb4,d5]@7 ~ [a2,g3,g4,bb4,db5,e5]@6 ~ [c4,e4,f4,a4]@16 [e2,d3,bb3,d4,e4,a4]@28 [e2,d3,bb3,d4,e4,a4] ~@3 [eb2,db3,bb3,db4,f4,a4]@28 [eb2,db3,bb3,db4,f4,a4] ~@3 [d2,c3,c4,e4,f4,a4]@17, ~@7 d3@8 ~@41]/7", // Em7b5 A7 Fmaj7 Dsus2 Bbm Dm7
  U: "[~@11 [d2,c3,c4,e4,f4,a4] ~@3 [g2,f3,f4]@27 ~ [g2,f3,b3,db4,f4,a4] ~@3 [g2,g3,d4,gb4,a4]@17, ~@14 [b3,db4,a4]@27 ~@5 bb3@17 ~]/4", // Dm7 G7 D Gbm
  V: "[[g2,f3,bb3,d4,f4,a4]@14 ~ [e3,db4,e4]@28 ~ [e3,bb3,db4,a4]@2 ~ [f2,c3,c4,e4,f4,a4]@3 ~@14, ~@14 [gb2,bb3,a4]@28 ~@2 [gb2,e4] ~@19]/4", // Gm7 Dbm A Fmaj7 Gb Gb7
  W: "[g3,db4,f4,c5,f5]@6 ~ [g3,db4,f4,c5,f5] ~@7 [f3,b3,e4,b4,e5]", // Csus4 E
  X: "[~@7 [f3,b3,e4,g4,b4] ~@7 [g3,db4,f4,a4,c5]@16 [f3,b3,e4,g4,b4]]/2", Y: "~@2 [a4,c5] ~ [f3,b3,e4,g4,b4]@12",
  Z: "[[g3,db4,f4,a4,c5]@14 ~ [f3,b3,e4,g4]@15 ~ [e3,bb3,d4,bb4,d5]@8 ~ [g3,db4,g4,bb4,db5] ~@6 [d3,c4,f4,a4,c5], ~@14 b4@15 ~@19]/3", // F Em Em7b5 Gdim Dm7
  AA: "[~@7 [g3,a3] ~@2 [f4,a4] ~@4 [g3,db4,f4,a4]@15 ~ [f3,b3,e4,g4], ~@3 g4 ~@12, ~@7 e4@2 ~@23]/2", // Gsus2 F Dbaug Em
  AB: "[~@6 [g4,b4] [f3,b3] ~@7 [db4,c5]@14 ~@2 [f3,b3,e4,g4,b4], ~@7 [g3,f4,a4]@7 ~@2]/2", // G Fdim Dbmaj7 Em Dm
  AC: "[~@3 [f3,b3,e4,a4,c5]@4 ~@2 e4@3 b4@2 ~ [g3,db4,f4,a4,c5]@7 ~ [g3,db4,f4,c5,f5] ~@6 [f3,b3,e4,b4,e5]@17 ~, ~@8 [f3,b3,a4,c5]@3 ~ d5 ~@35]/3", // Fmaj7 F Csus4 E F
  AD: "[[e3,bb3,d4,g4,bb4,d5] ~@7 [a2,g3,g4,bb4,db5,e5] ~@6 [d3,c4,e4,f4,a4]@16 ~]/2", // Em7b5 A7 Dm7
  AE: "[a3,eb4,g4,b4,d5]@15 [f4,gb4,a4,c5]", // G F
  AF: "[~@7 [d4,eb4,gb4,a4] ~@7 [c4,d4,f4,a4]@23 ~ [bb3,a4,c5]@2 ~@2 bb4@2 ~@3, ~@39 [a3,d4] ~@3 g4 ~@4]/3", // D Dm7 F D5
  AG: "~@15 [c4,db4,e4,g4]", // C
  AH: "[~@7 [c4,db4,e4,g4] ~@20 bb4@2 ~ [e3,bb3,d4,a4]@8 ~@5 [e4,g4]@2 ~ [d3,g3,d4]@14 ~@3, ~@15 [eb3,a3,c4,f4]@15 ~@9 [g3,db4,f4,a4]@7 [c4,f4]@14 ~@4]/4", // C Dsus2 Em G5 F7 Dbaug F5
  AI: "[f3,b3,e4,b4,e5] ~@5 [f3,b4,e5] [b3,e4] ~@8", // E E5
  AJ: "[[g3,db4,f4,c5,f5]@12 [g3,db4,f4,c5,f5]@2 ~ [f3,b3,e4,b4,e5]@17]/2", // Csus4 E
  AK: "[[g3,db4,f4,c5,f5] ~@5 [db4,c5,f5] [g3,f4] ~@7 [f3,b3,e4,e5]@16 ~, ~@7 b4@8 ~]/2", // Csus4 Dbmaj7 G7 E
  AL: "[[e3,bb3,d4,g4,bb4,d5]@8 [g3,db4,f4,a4,c5]@7 [d3,c4,e4,f4,a4]@16 ~]/2", // Em7b5 F Dm7
  AM: "[[g3,db4,f4,a4,c5]@6 ~ [g3,db4,f4,a4,c5]@7 ~ [f3,b3,e4,b4,d5]@4 ~ [f3,b3,e4,c5,e5]@5 ~ [f3,b3,e4,d5,f5]@5 ~]/2", // F Bdim Fmaj7 Bdim
  AN: "[g3,db4,f4,db5,e5]@5 ~ [g3,db4,f4,d5,f5]@5 ~ [f3,b3,e4,eb5,gb5]@4", // Dbdim G7 B
  AO: "[~@3 [f3,b3,e4,g5]@5 [f3,b3,e4,g5,b5]@2 ~@2 [f3,b3,e4,g5,b5]@3 [g3,db4,f4,f5,c6]@9 [g3,db4,f4,f5,c6]@6 b5 [f3,b3,e4,e5], ~@2 e5@5 ~@25]/2", // Em Csus4 E
  AP: "~@10 [f3,b3,e4,e5] ~@5, ~@5 b5 ~@2", // E
  AQ: "[e3,bb3,d4,g5]@2 ~@6 [g3,db4,f4,db5,f5] ~@5 [d3,c4,f4,a4,c5,e5]@2, d5 ~@15", // Em7b5 Gm7b5 Dm7
  AR: "[~@7 e4@5 e4 ~@2 [g3,db4,f4,a4]@15 [e4,g4]@2, ~@7 [g3,a3,f4,a4,c5]@7 ~@16 [f3,b3] ~]/2", // Dbaug Em F Fdim
  AS: "~@4 [f3,b3,e4,g4]@6 ~ [f3,b3,d4,f4] ~@4", // Em Bdim
  AT: "[~@3 [g3,db4,f4,a4] ~@4 [g3,db4,a4,c5]@5 ~@2 [f3,b3,e4,g4,b4]@4 [a4,c5] [f3,b3,e4,g4,b4]@11 ~]/2", // Dbaug A7 Em Am Em
  AU: "~@7 [g3,db4,f4,a4,c5]@3 ~ [g3,db4,f4,c5,f5]@5", AV: "[f3,b3,e4,b4,e5]@6 ~ [f3,b3,e4]@9, ~@6 [b4,e5]@9 ~",
  AW: "[e3,bb3,d4,bb4,d5]@8 [g3,db4,g4,bb4,db5]@7 ~", AX: "[d3,c4,g4,a4,d5]@6 e4@4 e4@5 ~, ~@6 [g3,a3,f4,a4]@9 ~",
  AY: "[[a3,eb4,g4,b4]@6 ~ [c4,a4,c5]@8 [gb3,c4,f4,gb4,a4]@2 ~@6 [d4,eb4,gb4,a4]@3 ~ d4 ~@4]/2", // Ebaug F D
  AZ: "[c4,d4] ~@6 c4@2 ~@7, f4 ~@2 [d4,f4] ~@4", BA: "~@7 [a3,d4]@4 ~@5, ~@3 [bb3,a4,d5]@2 ~@3",
  BB: "[~@6 [e3,bb3,eb4,c5,db5,e5,g5]@7 ~ [e3,bb3,db4,a4,bb4,db5,e5]@8 ~ c4@5 c4@2 ~ [eb3,a3,c4,f4]@8 c5@2 a4@2 ~ [g4,c5]@2 ~ [e3,bb3,d4,g4,bb4]@7 ~@6 g4@2 ~@4 [g3,db4] ~@5 [g3,db4]@6 [f3,b3,e4]@7 ~ [f3,b3,e4] ~@9, ~@22 [db4,g4]@8 ~@25 [g3,db4,gb4,a4]@7 ~@34, ~@23 e4@8 ~@8 ab4 ~@23 f4@15 ~@18]/6", // C7 A F7 C5 Em7b5 Gdim E Dbdim …
  BC: "[~@3 a4 c5 ~ [g3,db4,f4,a4,f5] ~@3 [g3,db4,f4,a4,f5]@3 ~ [f3,b3,e4,b4,e5]@16 ~ [g3,db4,f4,c5,f5,c6]]/2", // Dbaug E Csus4
  BD: "[~@12 [g3,db4,f4,c5,f5,c6]@2 ~ [f3,b3,e4,b4,e5,b5]@16 ~]/2", // Csus4 E
  BE: "[[e3,bb3,d4,g4,bb4,d5]@8 [a2,g3,g4,bb4,db5]@6 ~ [d3,c4,g4,a4,c5]@16 ~]/2", // Em7b5 Gdim Dsus4
  BF: "[eb3,db4,g4,c5,db5,f5]@14 [d3,c4,f4,a4,c5,e5] ~", // Cm Dm7
  BG: "~@2 [e2,d3,bb3,d4,e4,g4] ~@3 e4@4 f4@2 e4@2 [d2,d3,a3,c4,d4,f4] ~, ~@6 [a2,g3,bb3,db4,g4]@7 ~@3", // Em7b5 Dm7 Gdim
  BH: "~@2 [e2,d3,bb3,d4,e4,g4] ~@3 e4@4 f4@2 e4@2 [d2,d3,a3,c4,d4]@2, ~@6 [a2,g3,bb3,db4,g4]@7 ~ f3 ~", // Em7b5 D7 Gdim
  BI: "~@3 [e2,d3,bb3,d4,e4,g4] ~@6 f4@2 e4@2 [d2,d3,a3,c4,d4,f4] ~, ~@6 [g3,bb3,g4]@7 ~@3, ~@7 [a2,db4]@7 ~@2, ~@7 e4@5 ~@4", // Em7b5 Dm7 Gm A
  BJ: "~@2 [e2,d3,bb3,d4,e4,g4] ~@3 e4 ~@4 e4@2 ~ [d3,f3,a3,c4,d4]@2, ~@6 [a2,g3,bb3,db4,g4]@7 ~ d2 ~, ~@10 f4@3 ~@3", // Em7b5 Dm7 Gdim
  BK: "[g3,db4,f4,a4,c5]", BL: "[f3,b3,e4,g4,b4]",
  BM: "[[g3,db4,f4,a4]@10 [g3,db4,f4,a4]@3 ~ [f3,b3,e4,g4,b4]@4 [f3,b3,e4,a4,c5]@13 ~]/2", // Dbaug Em Fmaj7
  BN: "[g3,db4,f4,c5,f5]@6 [g3,db4,f4,c5,f5]@9 ~", BO: "[f3,b3,e4,b4,e5]@15 ~",
  BP: "[[e3,bb3,d4,g4,bb4]@8 [g3,db4,f4,a4]@6 [d3,c4,e4,f4,a4]@17 ~]/2", // Em7b5 Dbaug Dm7
  BQ: "[[g3,db4,f4,c5,f5]@6 [g3,db4,f4,c5,f5] [f3,b3,e4,b4,e5]@9]/2", // Csus4 E
  BR: "[g3,db4,f4,c5,f5]@7 ~ [g3,db4,f4,c5,f5] ~@5 [f3,b3,e4] ~, ~@7 [b4,e5]", BS: "~@2 [c5,f5] ~ [f3,b3,e4,b4,e5]@12",
  BT: "[g3,db4,f4,c5,f5]@15 ~", BU: "[e3,bb3,d4,bb4,d5]@7 ~ [a2,g3,g4,bb4,db5]@7 ~",
  BV: "[[d3,c4,g4,a4,c5]@6 ~@4 [f4,a4]@4 [a3,eb4,g4,b4,d5]@16 ~ [f4,gb4,a4,c5]@7 [d4,eb4,gb4,a4]@8 ~ [a3,bb3,c4,d4,f4]@14 ~@5 bb4 ~ [a3,bb3,d4,a4,c5]@6 ~ [bb3,d4,g4,bb4]@2 ~@3, ~@6 [g3,a3,e4,g4]@8 ~@48 [bb3,a4,c5]@5 ~@13, ~@63 [a3,d4]@5 ~@7 a3 ~@4]/5", // Dsus4 F G F D Dm7 D7 Gm …
  BW: "[~@6 [e3,bb3,eb4,c5,db5,e5,g5] ~@7 [e3,bb3,eb4,c5,db5,e5,g5]@11 ~ [e3,bb3,db4] [a4,bb4,db5,e5] ~@3 [a3,g4,a4,c5]@15 bb4 [e3,bb3,d4,g4], ~@10 eb3@5 ~]/3", // C7 Bbdim A Am7 Em7b5
  BX: "[~@7 [g3,db4,gb4,a4]@5 g4@2 [g3,db4,f4]@14 [g3,db4,f4]@2 [f3,b3,e4] ~, ~@12 e4 ~@19]/2", // Gbm Gm7b5 E
  BY: "[~@10 [f3,b3,g4,b4]@4 [g3,db4,f4,a4,c5]@9 ~ [g3,db4,f4,c5,f5]@6 [f3,b3,e4,b4,e5]@17 ~]/3", // G7 F Csus4 E
  BZ: "[[g3,db4,f4,c5,f5] ~@7 [g3,db4,f4,c5,f5]@6 [f3,b3,e4,b4,e5]@17 ~]/2", // Csus4 E
  CA: "[e3,bb3,d4,g4,bb4]@7 ~ [g3,db4,f4,a4]@6 ~ c4, ~@7 [d3,e4,g4]", // Em7b5 Dbaug Em7
  CB: "[~@7 a3@7 ~ [e2,d3,e4,a4]@27 [e4,a4] [e2,d3,d4] ~@2 [eb2,db3,bb3,db4,f4,a4]@28 [bb3,db4] [eb2,a4]@2 ~ e4 e4@27 ~ [d2,c3,c4,e4,f4,a4] ~@2 [g2,f3,b3,db4,f4,a4]@18, ~@6 [g3,d4,f4]@8 [bb3,d4]@27 ~ bb3@2 ~@31 [db3,f4] ~@2 [d2,c3,c4,f4,a4]@28 ~@22]/8", // Dsus2 A5 E7 Bbm Ebdim Dm7 G7 Bb …
  CC: "[~@10 [g2,f3,b3,db4,f4,a4] ~@3 [g2,g3,bb3,d4,gb4,a4]@18]/2", // Gm
  CD: "[[g2,f3,bb3,d4,f4,a4]@10 bb3 [g2,f3,d4,f4,a4] ~@3 [gb2,e3,e4]@29 [gb2,e3,bb3,db4,e4,a4]@3 [c4,f4,a4]@2 ~@15, ~@14 [bb3,db4,a4]@29 ~@4 [f2,c3,e4] ~@16]/4", // Gm7 Dm Gb7 F Bbm Fmaj7
})).s("gm_piano").gain(0.26)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B A B A B A B C D A D A B E B A B A B A B F G H I J K L M N O A B A B C B P Q@8 R@6 ~@3 S T S T U T V W X Y Z AA AB
  AC AD AE AF AG AH AI AJ M AK AL AM AN AO AP AQ AR AD AE X Y Z AS AT AU AL AE AV AW AX AY AX AY AZ BA BB BC BD BE BF BG
  BH AD BI BJ BK BL BM BN AD AE BO@2 BP@2 BQ@2 BP@2 BQ@2 BP@2 BQ@2 BP@2 A B A D A B P B A B A B A D P D AF BR BS BE BT
  BG BH BU A B A B A D BV@7 BW@6 BX@8 ~
>`.pickRestart({
  A: "eb2 bb2 db3 eb3@2 db3@2 bb2", B: "d2 a2 c3 d3@2 c3@2 a2", C: "eb2@2 bb2@2 db3@2 eb3@4 db3@3 ~ bb2@2",
  D: "d2@2 a2@2 c3@2 d3@4 c3@4 a2 ~", E: "e2@7 ~ a1@7 ~", F: "e2@7 ~ a1@8", G: "d2 a2 c3 d3@2 c3@3",
  H: "a2@4 eb2@4 a1@4 eb2@3 a1", I: "d2@4 e2@3 d2 gb2@4 d2@3 ~", J: "g2@3 g1 gb2@3 ~ g2@4 d2@3 g1",
  K: "g2@4 d2@4 c2@3 ~ g2@3 c2", L: "g2@3 ~ a2@3 g2 bb2@4 b2@4", M: "c3@4 g2@4 c2@4 g2@3 c2",
  N: "f2@4 g2@4 a2@4 f2@3 ~", O: "e2@3 ~ bb2@3 ~ a2@4 e2@4", P: "e2 a1",
  Q: "[d2@10 ~ d2 ~@3 e2@26 ~@2 e2 ~@3 eb2@26 ~@2 eb2@2 ~@2 d2@26 ~@2 d2@2 ~@2 g2@17]/8",
  R: "[~@11 g2 ~@3 g2@26 ~@2 g2@2 ~@2 gb2@27 ~@2 gb2@2 ~ f2@2 ~@15]/6", S: "eb3@3 eb2 db3@3 ~ bb2@4 eb2@4",
  T: "d3@3 d2 c3@3 ~ a2@4 d2@4", U: "eb3@3 eb2 db3@4 bb2@4 eb2@4", V: "e2@4 bb2@3 e2 a2@3 ~ eb2@4",
  W: "d2@4 e2@4 f2@3 ~ d2@4", X: "eb2@4 bb2@3 eb2 eb3@3 ~ bb2@4", Y: "d2@4 a2@3 d2 d3@4 a2@4",
  Z: "eb2@4 bb2@3 eb2 eb3@4 bb2@3 d2", AA: "d3@3 ~ db3@3 ~ d3@4 a2@4", AB: "eb2@4 bb2@3 eb2 eb3@4 bb2@4",
  AC: "d2@4 a2@3 d2 d3@3 ~ a2@3 ~", AD: "e2@4 bb2@3 e2 a2@3 ~ e2@4", AE: "d2 e2 f2 d2", AF: "a2 eb2 a1 eb2",
  AG: "d2@4 gb2@3 d2 a2@3 ~ gb2@4", AH: "g1@4 g2@3 g1 gb2@3 ~ g2@4", AI: "g1@4 d2@3 g1 c2@3 ~ g2@3 c2",
  AJ: "g2@4 a2@3 g2 bb2@4 b2@3 ~", AK: "f2@4 g2@3 f2 a2@4 f2@4", AL: "e2@4 bb2@3 e2 a2@4 eb2@4",
  AM: "eb3@4 bb2@3 eb2 eb3@3 ~ bb2@4", AN: "d2@3 ~ a2@3 d2 d3@4 a2@4", AO: "eb2@4 bb2@3 eb2 eb3@3 ~ bb2@3 d2",
  AP: "d3@3 ~ db3@3 d2 d3@4 a2@3 eb2", AQ: "eb3@4 db3@3 ~ bb2@4 eb2@4", AR: "d3@3 d2 c3@4 a2@4 d2@4",
  AS: "d3@3 ~ db3@3 d2 d3@4 bb2@3 eb2", AT: "eb3@3 ~ db3@3 eb2 eb3@4 bb2@3 eb2", AU: "d3@3 ~ c3@3 d2 d3@4 a2@3 d2",
  AV: "eb2@4 f2@3 eb2 g2@3 ~ eb2@4", AW: "d2@4 e2@3 d2 f2@4 d2@4", AX: "eb2@4 bb2@3 eb2 g2@3 ~ eb2@4",
  AY: "d2@4 a2@3 d2 f2@4 d2@4", AZ: "e2@4 bb2@3 e2 a2@3 ~ db3@3 a2", BA: "d3@3 d2 db3@3 ~ d3@4 a2@3 d2",
  BB: "a2@4 g2@3 ~ gb2@3 ~ eb2@4", BC: "d2@4 e2@3 d2 gb2@4 d2@4", BD: "g2@3 d2 a2@4 bb2@3 ~ g2@3 d2",
  BE: "g2@4 d2@4 c2@4 g2@3 c2", BF: "g2 g1 bb1 db2", BG: "c2@4 e2@3 c2 g2@3 ~ gb2@4", BH: "f2@4 g2@3 f2 a2@4 f2@3 ~",
  BI: "eb2@4 bb2@3 eb2 db3@4 bb2@4", BJ: "d2@4 a2@3 d2 c3@4 a2@3 ~", BK: "eb2@4 bb2@3 eb2 db3@4 bb2@3 d2",
  BL: "d3@3 d2 db3@3 d2 d3@4 a2@3 ~", BM: "eb2@4 eb3@3 eb2 db3@4 bb2@4", BN: "d2@4 d3@3 d2 c3@4 d2@4",
  BO: "[eb3@3 ~ db3@3 eb2 eb3@4 eb2@2 ~ d3@4 d2 db3@3 ~ d3@4 d2@4]/2",
  BP: "[e2@4 bb2@3 e2 a2@3 ~ e2@2 ~ d2@5 e2@4 f2@4 d2@4]/2",
  BQ: "[eb3@3 eb2 db3@3 ~ eb3@4 eb2@2 ~ d3@4 d2 db3@3 ~ d3@4 d2@4]/2", BR: "d2@4 gb2@3 d2 a2@4 gb2@3 g1",
  BS: "g2@3 ~ gb2@3 ~ g2@4 g1@3 ~", BT: "g2 db2 g1 db2", BU: "e2@4 bb2@3 e2 a2@3 e2@4 ~",
  BV: "[e2@8 a2@6 d2@15 ~@2 e2@26 ~@2 e2@2 ~@2 eb2@27 ~ eb2@2 ~@2 d2@17]/7",
  BW: "[~@11 d2@2 ~@2 g2@26 ~@2 g2@2 ~@2 g2@26 ~@2 g2@2 ~@2 gb2@17]/6", BX: "[~@12 gb2@2 ~ f2@113]/8",
})).s("gm_acoustic_bass").gain(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@92 A B@5 C D B E B F ~@84>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@6 x ~@4", D: "~@3 x ~@7 x ~@4", E: "~@3 x ~@8 x ~@3", F: "~ x ~@2",
})).gain(0.34)

// drums · snare
const snare = s("sd").struct("<~@88 A B C D ~@17 A E F G H@2 I@2 H J K ~@68>".pickRestart({
  A: "~@3 x", B: "~@2 x ~@2 x ~@2", C: "x ~@2 x ~@2 x ~", D: "~@3 x ~@5 x ~@6", E: "~@2 x ~@4 x", F: "x ~@11 x!2 ~@2",
  G: "x ~@2 x", H: "~ x ~ x", I: "~@3 x ~@8 x ~@3", J: "~ x ~@2", K: "~@6 x ~@2 x ~@6",
})).gain(0.34)

// drums · clap
const clap = s("cp").struct("<~@91 A ~@11 B ~@7 A ~@7 C ~@39 D ~@28>".pickRestart({
  A: "~@7 x", B: "~@8 x!2 ~@2 x ~@3", C: "~@5 x ~@2 x ~@3 x ~@2 x", D: "~@5 x ~@2",
})).gain(0.39)

// drums · low tom
const low_tom = s("lt").struct(`<
  A@24 ~@7 A@2 B A@3 B A@2 ~@14 C D ~@35 E ~@11 E ~@15 B ~@16 A@16 ~@7 F A@8 ~@20
>`.pickRestart({
  A: "~@3 x", B: "~@13 x ~@2", C: "~@8 x!8", D: "x!14 ~@2", E: "~@15 x", F: "~@11 x ~@4",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@24 A@5 B A@2 ~@8 A@12 ~@4 C D A B A@2 E A E A@17 F B A@11 E A@3 E A B A F@2 B A@9 E A@6 F E@5 A@2 E@2 A@2 F B ~@16
  A@4 E@2 A E ~@8 A@4 F E A B@2 A@3 ~@8
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@8 x ~@3", C: "~@5 x ~@7 x ~@2", D: "~@5 x ~@6 x ~@3", E: "~@3 x ~@7 x ~@4",
  F: "~@4 x ~@6 x ~@4",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<A@24 ~@8 A@6 B A ~@14 C ~@36 D ~@11 E ~@15 F ~@16 A@16 ~@8 A@8 ~@20>".pickRestart({
  A: "~@3 x ~@4", B: "~@7 x ~@8", C: "~ x!7 ~@8", D: "~@3 x", E: "~@13 x ~@2", F: "~@5 x ~@2",
})).gain(0.34)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~@14 B ~ C ~ C ~ D ~ C ~ C ~ C ~@4 A ~@14 E ~@8 A ~@6 F ~@4 A ~@11 A ~@13 D ~ G ~@2 H I ~@2 J G ~@2 J G ~@3 A
  ~@15 A ~@14 B ~ C ~ C ~ F ~ C ~ C ~ K ~@8
>`.pickRestart({
  A: "x", B: "~@5 x ~ x", C: "~@7 x", D: "~@15 x", E: "~@11 x ~@3 x", F: "~@11 x ~@2 x ~", G: "x ~@6 x",
  H: "~@2 x ~@2 x ~ x ~@8", I: "x ~@14 x", J: "~@11 x ~ x ~@2", K: "~@6 x!2",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct(`<
  A B A B A B A B A B A B A B A B C B A B A B A B D E F G D H I J A B A B A B A K F@2 D F L F D F D F M F ~@4 N F O H F
  P Q R S G F T@2 G U V W F G@2 F G U@2 D F@5 G X D Y D F D F@2 Z F T AA AB AC I J AD L AE F G F Y M AF F@3 AG F AH AI ~
  W U AJ AK AL AM AJ AN W AO AP AN AQ AR AJ AS AT B A B A B A B A B A B A B A B D E G AU AV AW U AP A B A B A B A K D AF
  AX D AY AZ D BA BB BC L BD ~@8
>`.pickRestart({
  A: "x ~ x ~ x!2 ~ x", B: "~ x!2 ~ x!2 ~ x", C: "x ~@3 x ~@3 x ~@2 x ~@2 x ~", D: "~ x!3",
  E: "x ~@3 x ~@2 x!2 ~@3 x ~@3", F: "x!4", G: "x ~@3 x ~@3 x ~@3 x ~@2 x", H: "x ~@2 x ~@4 x ~@3 x ~@3",
  I: "x ~ x!2 ~@4 x ~ x ~ x ~@3", J: "x!3 ~ x!3 ~", K: "~ x!2 ~ x ~@3", L: "~@4 x ~@3 x ~@3 x ~@2 x",
  M: "~@3 x ~@4 x ~@3 x ~@3", N: "~@5 x ~@2 x ~@3 x ~@3", O: "x ~ x ~ x ~ x!2", P: "x ~@3 x ~@3 x ~@2 x ~@3 x",
  Q: "~@3 x ~@3 x ~@3 x ~@3 x", R: "x ~@3 x ~@2 x ~@3 x ~@3 x", S: "~@3 x ~@3 x ~@3 x ~@4", T: "x ~ x ~ x!3 ~",
  U: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", V: "x ~@3 x ~@2 x!2 ~@7", W: "~@4 x ~@2 x!2 ~@3 x ~@3", X: "x!3 ~",
  Y: "x ~@3 x ~ x ~ x ~@3 x ~@2 x", Z: "x ~@3 x ~@2 x ~@3 x ~@2 x ~", AA: "x ~ x!2 ~@4 x ~ x!2 ~@3 x",
  AB: "~@2 x!2 ~@3 x ~@2 x!2 ~@4", AC: "x ~ x!2 ~@4 x ~ x!2 ~@4", AD: "x!3 ~ x ~@3", AE: "~@3 x ~@3 x ~@4 x ~@3",
  AF: "x ~ x!3 ~ x ~", AG: "x ~@2 x ~@3 x ~@4 x ~@2 x", AH: "x ~@3 x ~@2 x ~ x ~@2 x ~@2 x",
  AI: "~@2 x ~ x ~@2 x ~ x ~@2 x ~@3", AJ: "x ~@3 x ~ x ~ x ~@2 x ~@2 x ~", AK: "x ~@10 x ~@4",
  AL: "~@3 x ~@2 x ~ x ~@2 x ~@4", AM: "~@3 x ~@2 x!2 ~@3 x ~@2 x ~", AN: "x ~@2 x ~@2 x ~ x ~@7", AO: "~@2 x!3 ~ x!2",
  AP: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~", AQ: "~@2 x!3 ~ x ~", AR: "~@4 x ~ x ~ x ~@3 x ~@2 x", AS: "x ~ x!3 ~ x!2",
  AT: "~@2 x ~ x!2 ~ x", AU: "x ~@3 x ~@2 x!2 ~@3 x ~ x ~", AV: "x ~@2 x ~@3 x ~@3 x ~@3 x",
// … 5 more lines

More by Gillespie Dizzy