Strudelify

Dead Man's Party

Oingo Boingo

KeyE♭ minorTempo171 bpm
0:00/0:00
// Dead Man's Party — Oingo Boingo
// 171 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 279 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): Distortion Guitar.
setcpm(171/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 · brass section
const brass_section = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D ~@2 A ~@2 B C ~@3 A ~@2 B C ~@2 E ~@4 F ~@2 G H ~@2 F ~@2 I J K ~@14 I
  ~ L ~ M ~@2 N O ~ P Q R ~ S@4 ~ T ~@2 U ~ U ~ V ~ W X ~@31 Y ~ P Q R ~ Z AA ~ L ~ M ~@2 AB AC AD AE AF ~@4 T ~@3 T ~@3
  T ~@2 I ~ U ~ U ~ AG ~ AH AI ~ X ~@12 AJ B C AK AJ B C AK AJ B C AK ~@2 F ~@2 G H ~@2 F ~@2 I ~ L ~ M ~@2 N O ~ P Q R
  ~@10 AF ~@3 AF ~@3 AF ~@3 Y ~ AL ~ AL A B C D A B C D A B C D A B C D AM AN E AO AP J AQ
>`.pickRestart({
  A: "gb5@3 ~ eb5 ~ db5 ~ gb5 ~ gb5 ~ eb5 ~ db5 ~", B: "~@14 bb4 ~", C: "db5 ~ eb5 ~@3 bb4 ~ db5 ~ eb5 ~@5",
  D: "~@6 bb4 ~ ab4@3 ~ gb4 ~ eb4 ~", E: "~@4 db5 ~ db5 ~", F: "ab4 ~ ab4 ~ gb4@3 ~", G: "~@4 ab4 ~ ab4 ~",
  H: "gb4@3 ~@5", I: "~@4 ab4 bb4 db5 ~", J: "~@6 eb5!2", K: "eb5!3 ~@5", L: "~@4 gb5@2 eb5 db5",
  M: "~@4 bb4 ~ gb4@2 ab4@4 gb4@2 eb4@2", N: "db4 eb4", O: "gb4 ab4 gb4 ~@5", P: "gb5@2 eb5 db5 ~@4",
  Q: "~@12 bb4 ~ gb4@2", R: "ab4@2 gb4 eb4 ~@4", S: "[~@4 db4@8 eb4@8 ab3@8 bb3@2 db4 eb4]/4", T: "eb5 ~", U: "~@7 eb5",
  V: "eb5 ~@5 eb5 ~", W: "db5 ~ db5 ~ eb5@4", X: "~@2 eb5!5 ~", Y: "ab4 bb4 db5 ~@5", Z: "~ db4",
  AA: "eb4@4 gb4 ab4 gb4 ~", AB: "db4", AC: "eb4", AD: "ab3", AE: "bb3@2 db4 eb4 ~@4", AF: "~ eb5", AG: "eb5 ~@5 eb4 ~",
  AH: "db5 ~ db5 ~@5", AI: "~ eb4 ~ eb4 ~ eb4 ~ eb4", AJ: "gb5@4 eb5 ~ db5 ~ gb5 ~ gb5 ~ eb5 ~ db5 ~",
  AK: "~@6 bb4 ~ ab4@4 gb4@2 eb4@2", AL: "~@3 eb5 ~@4", AM: "~@4 eb5 ~@3", AN: "~@2 eb4 ~@5", AO: "~@5 eb4 ~ eb4",
  AP: "~ eb4 ~ eb4 ~@4", AQ: "eb5!3 bb4 ab4@2 gb4 eb4",
})).s("gm_brass_section").gain(0.71).pan(0.7)

// bass · baritone sax
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D ~@2 A ~@2 B C ~@3 A ~@2 B C ~ E F ~@4 G H ~ I J ~@2 K H ~ L M N ~@14 L
  ~ O ~ P ~@2 Q R ~ S T U ~ V@4 ~ E ~@2 W ~ W ~ X ~ Y Z ~@31 AA ~ S T U ~ AB AC ~ O ~ P ~@2 AD AE AF AG AH ~@4 E ~@3 E
  ~@3 E ~@2 L ~ W ~ W ~ AI ~ AJ AK ~ Z ~@12 AL B C AM AL B C AM AL B C AM ~@2 G H ~ I J ~@2 K H ~ L ~ O ~ P ~@2 Q R ~ S
  T U ~@10 AH ~@3 AH ~@3 AH ~@3 AN ~ AO ~ AO A B C D A B C D A B C D A B C D AP AQ F AR AS M AT
>`.pickRestart({
  A: "gb2@3 ~ eb2 ~ db2 ~ gb2 ~ gb2 ~ eb2 ~ db2 ~", B: "~@14 bb1 ~", C: "db2 ~ eb2 ~@3 bb1 ~ db2 ~ eb2 ~@5",
  D: "~@6 bb1 ~ ab1@3 ~ gb1 ~ eb1 ~", E: "eb2 ~", F: "~@4 db2 ~ db2 ~", G: "ab1 ~ ab1 ~ gb1@3 eb2",
  H: "gb2 ab2 gb2 ~@5", I: "~@4 ab1 ~ ab1 ~", J: "gb1@3 eb2 gb2 ab2 gb2 ~", K: "ab1@3 ~ ab1@3 ~ gb1@6 eb2@2",
  L: "~@4 ab1 bb1 db2 ~", M: "~@6 eb2!2", N: "eb2!3 ~@5", O: "~@4 gb2@2 eb2 db2",
  P: "~@4 bb1 ~ gb1@2 ab1@4 gb1@2 eb1@2", Q: "db1 eb1", R: "gb1 ab1 gb1 ~@5", S: "gb2@2 eb2 db2 ~@4",
  T: "~@12 bb1 ~ gb1@2", U: "ab1@2 gb1 eb1 ~@4", V: "[~@4 db1@8 eb1@8 ab0@8 bb0@2 db1 eb1]/4", W: "~@7 eb2",
  X: "eb2 ~@5 eb2 ~", Y: "db2 ~ db2 ~ eb2@4", Z: "~@2 eb2!5 ~", AA: "ab2 bb2 db3 ~@5", AB: "~ db1",
  AC: "eb1@4 gb1 ab1 gb1 ~", AD: "db1", AE: "eb1", AF: "ab0", AG: "bb0@2 db1 eb1 ~@4", AH: "~ eb2", AI: "eb3 ~@5 eb2 ~",
  AJ: "db2 ~ db2 ~@5", AK: "~ eb1 ~ eb1 ~ eb1 ~ eb1", AL: "gb2@4 eb2 ~ db2 ~ gb2 ~ gb2 ~ eb2 ~ db2 ~",
  AM: "~@6 bb1 ~ ab1@4 gb1@2 eb1@2", AN: "ab1 bb1 db2 ~@5", AO: "~@3 eb2 ~@4", AP: "~@4 eb3 ~@3", AQ: "~@2 eb2 ~@5",
  AR: "~@5 eb1 ~ eb1", AS: "~ eb1 ~ eb1 ~@4", AT: "eb2!3 bb1 ab1@2 gb1 eb1",
})).s("gm_baritone_sax").gain(0.63)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@7 A B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D F G@2 ~ H I J K@2 L M N I J K@2 L M O ~@2 P Q R ~
  P S T ~ P Q U ~ P V W@6 X W@6 Y@4 Z ~@2 AA AB AA AB AC AD AE AF AG ~ AH AI AB ~ AH AJ AK ~ AH AI AB ~ AH AJ AK ~ AH AI
  AB ~ AH AJ AK ~ AH AI AB ~ AH AL AM W@5 AN W@7 AO AP AQ AR AS ~ AT AU AV AU AV AU AV AU AW AU AV AU AV AX AY AZ BA AZ
  BA AC AD AE BB@2 BC BD ~@23 H I J K@2 L M N I J K@2 L M W@6 X W@6 Y@4 Z ~@2 BE BF@6 BG BH BF@2 BI@2 BJ BK V BL V BL V
  BL V BL V BL V BL V BL V BL V BL V BL BM BN BO BP BQ BR BS
>`.pickRestart({
  A: "~@6 db3 eb3", B: "bb3@2 eb3@2 ab2 bb2 db3@2", C: "db3 eb3 ~ eb3 ~ db3 eb3 gb3",
  D: "eb3 db3 bb2 ab2 ab3 gb3 eb3 gb3", E: "~@2 gb3@2 gb3 ~ gb3@2 ~@4 db3@2 eb3@2", F: "~@2 gb3@2 gb3 ~ gb3@2 ~@8",
  G: "[~@4 bb3 ~ bb3 ~ bb3 [eb2,eb3]@3 [db2,ab2,db3] ~ [db2,ab2,db3] ~, ~ bb2@11 ~@4, ~ eb3@8 ~@7, ~ eb2@4 eb2@2 eb2@2 ~@7]/2", // Eb Db5
  H: "~@12 [db3,bb3] [eb3,gb3,c4,eb4] [ab3,gb4] [bb3,db4,eb4,ab4,bb4,db5]", I: "[gb4,eb5]!8",
  J: "~ [gb4,bb4] ~ [gb4,bb4] ~ [gb4,bb4] ~@2", // Gb
  K: "[[ab3,ab4]@2 bb3@2 [db4,ab4]@2 db4@2 [eb4,gb4]@12 [db3,bb3] [eb3,gb3,c4,eb4] [ab3,gb4] [bb3,db4,eb4,ab4,bb4,db5] [gb4,eb5]@2 [gb4,eb5]@2 [gb4,eb5]@2 [gb4,eb5]@2]/2", // Ab Db5 Ebm Gb Cdim Ab7 Bbm7 Ebm
  L: "[gb4,eb5]!4 ~ [gb4,bb4] ~ [gb4,bb4]", M: "~@2 [gb4,bb4]@2 ~@4 [ab3,ab4]@2 bb3@2 [db4,ab4]@2 db4 ~",
  N: "[eb4,gb4]@12 [db3,bb3] [eb3,gb3,c4,eb4] [ab3,gb4] [bb3,db4,eb4,ab4,bb4,db5]", O: "[eb4,gb4]@13 ~@3",
  P: "~@3 db3 eb3 gb3 bb3 b3", Q: "bb3 gb3 eb3@2 ab2 bb2 db3@2", R: "eb3@3 ~@5", S: "bb3 gb3 bb3 b3 db4 ~ b3 bb3",
  T: "~ gb3@3 ~@4", U: "eb3@7 ~@9", V: "bb3 gb3 eb3 ~ ab2 bb2 db3 ~",
  W: "[eb3,bb3,gb4]@2 [eb3,bb3,gb4]@2 [eb3,bb3,gb4] ~ [eb3,bb3,gb4] ~ [eb3,bb3,gb4]@2 [eb3,bb3,gb4]@2 [eb3,bb3,gb4] ~ [eb3,bb3,gb4] ~", // Ebm
  X: "[db3,ab3,f4]@4 [db3,ab3,f4]@4 [eb3,bb3,gb4]@2 [eb3,bb3,gb4]@2 [eb3,bb3,gb4] ~ [eb3,bb3,gb4] ~", // Db Ebm
  Y: "[[eb3,bb3,gb4]@2 [eb3,bb3,gb4]@2 [eb3,bb3,gb4] ~ [eb3,bb3,gb4] ~ [db3,ab3,f4]@16 [eb3,bb3,gb4]@16 [ab2,ab3,eb4]@16 [eb3,bb3]@4 [ab3,db4]@2 [bb3,eb4]@2]/4", // Ebm Db Ebm Ab5 Eb5 Db5 Eb5
  Z: "~@2 [eb4,gb4,bb4] ~ [eb4,gb4,bb4]!3 ~", AA: "~ db3 eb3 gb3 bb3 gb3 eb3@2", AB: "ab2 bb2 db3@2 eb3@3 ~",
  AC: "~ db3 eb3 gb3 bb3 b3 bb3 gb3", AD: "eb3 ~ bb3 b3 bb3 gb3 eb3 ~", AE: "bb3 b3 bb3 gb3 bb3 gb3 eb3 ~",
  AF: "[db3,ab3,db4] ~ [db3,ab3,db4] ~ [eb3,bb3,eb4]@4", AG: "~@2 [eb3,bb3,eb4]!5 ~", AH: "~@7 db3",
  AI: "eb3 gb3 bb3 b3 bb3 gb3 eb3@2", AJ: "eb3 gb3 bb3 b3 bb3 gb3 bb3 b3", AK: "db4 ~ b3 bb3 ~ gb3@3",
  AL: "eb3 gb3 bb3 b3 bb3 gb3 eb3 ~",
  AM: "ab2@2 bb2@2 db3@2 ~@2 [eb3,bb3,gb4]@2 [eb3,bb3,gb4]@2 [eb3,bb3,gb4] ~ [eb3,bb3,gb4] ~", // Ebm
  AN: "[eb3,bb3,gb4]@2 [eb3,bb3,gb4]@2 [eb3,bb3,gb4] ~ [eb3,bb3,gb4] ~ [db3,ab3,f4]@4 [db3,ab3,f4]@4", // Ebm Db
  AO: "[db3,ab3,f4]", AP: "[eb3,bb3,gb4]", AQ: "[ab2,ab3,eb4]",
  AR: "[eb3,bb3]@2 [ab3,db4] [bb3,eb4] ~@2 [eb4,gb4,bb4] ~", AS: "[eb4,gb4,bb4]!3 ~@5",
  AT: "~@4 [db4,f4,ab4] ~ [db4,f4,ab4] ~", AU: "~@2 [eb4,gb4,bb4] ~ [eb4,gb4,bb4]!2 ~ [eb4,gb4,bb4]",
  AV: "~@2 f4@3 eb5@5 [bb4,db5] [f4,ab4] ~@4", AW: "~ f4@2 gb4 ~ gb4 ~@2", AX: "~@4 gb3 f3 eb3 f3",
  AY: "eb3 db3 bb2 ~ ab2 bb2 db3@2", AZ: "~ db3 eb3 gb3 bb3 gb3 eb3 ~", BA: "ab2 bb2 db3 ~ eb3@4",
  BB: "[[db3,ab3,db4] ~ [db3,ab3,db4] ~ [eb3,bb3,eb4]@8 ~@4]/2", BC: "[db4,ab4,db5] ~ [db4,ab4,db5] ~ [eb4,bb4,eb5]@4",
  BD: "~@2 [eb4,bb4,eb5]!5 ~", BE: "[db4,f4,ab4] ~ [db4,f4,ab4] ~@3 [eb4,gb4,bb4] ~",
  BF: "[[eb4,gb4,bb4]@2 [eb4,gb4,bb4]@2 ~@2 [eb4,gb4,bb4]@2 ~@2 f4@3 eb5@5 [bb4,db5] [f4,ab4] ~@8 [eb4,gb4,bb4]@2 ~@2]/2", // Ebm Bbm Fm Ebm
  BG: "[eb4,gb4,bb4]!2 ~ [eb4,gb4,bb4] ~ f4@2 gb4", BH: "~ gb4 ~@4 [eb4,gb4,bb4] ~",
  BI: "[[eb4,gb4,bb4]@2 [eb4,gb4,bb4]@2 ~@2 [eb4,gb4,bb4]@2 ~@2 f4@3 eb5@5 [bb4,db5] [f4,ab4] ~@12]/2", // Ebm Bbm Fm
  BJ: "gb3 f3 eb3 f3 eb3 db3 bb2 ~", BK: "ab2 bb2 db3@2 ~ db3 eb3 gb3", BL: "eb3@4 ~ db3 eb3 gb3",
  BM: "bb3 b3 bb3 gb3 eb3 ~ bb3 b3", BN: "bb3 gb3 eb3 ~ bb3 b3 bb3 gb3",
  BO: "bb3 gb3 eb3 ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~", BP: "[eb3,bb3,eb4]", BQ: "~@4 [db4,ab4,db5] ~ [db4,ab4,db5] ~",
  BR: "[eb4,bb4,eb5]@4 ~@2 [eb4,bb4,eb5]!2", BS: "[eb4,bb4,eb5]!3 ~@5",
})).s("gm_distortion_guitar").gain(0.2).pan(0.2)

// bass · slap bass 1 · "Slap Bass1"
const bass_2 = note(`<
  ~@12 A B C D A B C D A B C D A B C D A B C D A B C D A B C D E@2 ~@2 F G H I J K L F G H I J K M N J O P Q J O R Q J O
  R Q J R S F G F G F G T U J V J V J W X@3 Y Z ~ AA AB AC AD AE AF AG AH AI AJ AK AJ AK AJ AK AJ AK AJ AK AJ AK AJ AK
  AJ AK AJ AK AJ AK AJ AK AJ AK AJ AK AJ AK ~@3 U J V J V J O S F G F G F G AL AM AN AO AP ~ AQ AR AS AT AU AV AW AU AR
  AS AT AU AR AX AY AZ AB AC AB AC AB AC AB AC AB AC AJ BA AJ BA AJ BA AJ BA AJ BA AJ BA AJ BA AJ BA AJ BA AJ BA AJ BA
  AJ BA F G H I J K L F G H I J K F G F G F G T U J V J V ~@8 AA AB AC AD AE AF AG AC AB AC AD AC BB BC BD AR AS AR@2 AS
  AR@2 AS@2 AR@2 AS@2 AR@2 AS@2 AR@2 AS AR AS AR AS AR AS BE
>`.pickRestart({
  A: "eb1@2 eb2!2 ~@4", B: "~@7 eb2", C: "eb1@2 ~ eb1 eb2@2 ~@2", D: "eb2 ~@2 eb1 eb2!2 db1@2",
  E: "[~@2 eb2@10 db2 ~ db2 ~]/2", F: "db1@2 db2@2 eb2!2 gb2!2", G: "~ db2 ~ eb2 ~ gb2!2 eb2",
  H: "db2 ~ db2 ~@4 eb1, ~ eb2", I: "gb1 ab1 gb1 ~ db1@2 db2@2", J: "eb2!2 gb2!2 ~ db2 ~ eb2",
  K: "~ gb2!2 eb2 db2 ~ db2 ~", L: "~@3 eb1 gb1 ab1 gb1 ~, eb2 ~", M: "eb2@4 ~@2 eb2!2", N: "eb2!2 gb2 eb2 db1@2 db2@2",
  O: "~ gb2!2 eb2 db2@2 db2@2", P: "eb2@2 db2!2", Q: "eb2@2 db1 db2", R: "eb2 db2", S: "eb2 ~", T: "db2!2 eb2@2",
  U: "~@2 db1 db2", V: "~ gb2!2 eb2 db1@2 db2@2", W: "~ gb2!2 eb2 db2@2 db2!2",
  X: "[~ db2 ~@2 eb2@6 ~@2 ab1@6 ~@2 bb1@2 db2 eb2]/3", Y: "~@2 eb1 ~ eb2 ~@3", Z: "b1 ~",
  AA: "db1 ~ db2 ~ eb2@2 eb2!2", AB: "db2@4 eb2@2 eb2!2", AC: "db1@2 db2@2 eb2@2 eb2!2", AD: "db2!2 eb2!2",
  AE: "db1@2 db2@2 eb2@2 ~ eb2", AF: "db2@2 db2@2 eb2@2 ~ eb2", AG: "db1 db2 eb2!2", AH: "db2 ~ db2 ~ eb2@4",
  AI: "~@2 eb2!5 ~", AJ: "db1@2 db2@2 eb1 eb2 gb1 gb2", AK: "db1 db2 db1 db2 eb2@2 eb2 ~", AL: "db2@2 db2!2 ~ db2 ~@2",
  AM: "eb2@3 ~", AN: "ab1@3 ~", AO: "bb1@2 db2 eb2 ~@2 eb1 ~", AP: "eb2 ~@3 b1@4", AQ: "~@4 db1 ~ db2 ~",
  AR: "eb2@2 eb2!2 db2@4", AS: "eb2@2 eb2!2 db1@2 db2@2", AT: "eb2@2 eb2!2 db2@2 db2@2", AU: "eb2!2 db1 db2",
  AV: "eb2@2 ~ eb2 db2@2 db2@2", AW: "eb2@2 ~ eb2 db1@2 db2@2", AX: "eb2@4 gb2 f2 eb2 f2",
  AY: "eb2 db2 bb1 ~ ab1 bb1 db2@2", AZ: "~@4 eb2@2 eb2!2", BA: "db1 db2 db1 db2 eb2@2 gb2 eb2", BB: "db2 eb2",
  BC: "gb2 f2 eb2 f2 eb2 db2 bb1 ~", BD: "ab1 bb1 db2@2 ~@4", BE: "eb2@2 eb2!2 ~@4",
})).s("gm_slap_bass_1").gain(0.4)

// other · distortion guitar · F Gb F Gb
const distortion_guitar_2 = note(`<
  ~@178
  [[f4,f5] ~ [f4,f5] ~ [gb4,gb5]@4]
  [~@2 [gb4,gb5]!5 ~]
  ~@96
  [~@4 [f4,f5] ~ [f4,f5] ~]
  [[gb4,gb5]@4 ~@2 [gb4,gb5]!2]
  [[gb4,gb5]!3 ~@5]
>`).s("gm_distortion_guitar").gain(0.4).pan(0.8)

// other · lead 2 sawtooth · "Lead 2 (sawtooth)"
const lead_2_sawtooth = note("<~@183 A B C B D B C B E F G F H F G F I F G F H ~@75>".pickRestart({
  A: "~@5 db5 eb5 gb5", B: "bb5 ~@2 ab5@2 gb5 eb5 bb4", C: "db5 eb5 db5 bb4 ab4 db5 eb5 gb5",
  D: "db5 eb5 gb5@3 db5 eb5 gb5", E: "db5 eb5 gb5@3 ~@3", F: "~@7 bb4", G: "db5 eb5 db5 bb4 ab4@2 ~@2",
  H: "db5@2 eb5@2 gb5 ~ gb5@6 eb5@2 ~@2", I: "db5@2 eb5@2 gb5 ~ [eb5,gb5,ab5]@6 [db5,eb5,gb5]@2 ~@2",
})).s("gm_lead_2_sawtooth").gain(0.32)

// drums · kick
const kick = s("bd").struct("<~@8 [x!2]!34 x ~ [x!2]!234 x>").gain(0.48)

// drums · rim
const rim = s("rim").struct(`<
  ~@58 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B ~@95 B ~@10 B ~ B ~@46 C@5 D ~@16 A ~@27
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x ~ x", D: "x",
})).gain(0.48)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A@30 ~@2 B@14 C B@16 D B D B E F B D B D B E F D B@47 G B G B H B@2 G B G B H B G B@19 I B@48 D B D B E F B D B D
  B E F D B@19 J B@26 K
>`.pickRestart({
  A: "x!4", B: "x!8", C: "~@4 x!4", D: "x!7 ~", E: "x!6 ~@2", F: "~ x!7", G: "x!3 ~ x!4", H: "x!2 ~@3 x!3",
  I: "~ x ~@2 x!4", J: "x!4 ~ x ~@2", K: "x!4 ~@4",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@15 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@35 A ~ A ~ B C ~ A ~ A ~ B C A ~@47 D ~ D ~ E ~@2 D ~ D ~ E ~ D ~@19 C
  ~@48 A ~ A ~ B C ~ A ~ A ~ B C A ~@19 F ~@4 F ~@3 F ~@3 F ~@3 F ~@2 A ~@7
>`.pickRestart({
  A: "~@7 x", B: "~@3 x", C: "x", D: "~@3 x ~@4", E: "~ x!2 ~", F: "~ x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@44 A ~ A ~@10 B C ~@212 D ~@7>".pickRestart({
  A: "x", B: "~@6 x!2", C: "x!3 ~@5", D: "~@15 x",
})).gain(0.36)

// drums · congas
const congas = s("conga:18").struct(`<
  ~@8 A ~ B ~ C ~ B ~ B ~ B ~ B ~ B ~ A ~ B ~ C ~ B ~ B ~ B ~ B ~ B ~@5 A ~ B ~ C ~ B ~ B ~ B ~ B ~ D ~ E C E ~ E C E C
  E C E C E C A ~ B ~ C ~ B ~ B ~ B ~ B ~ B ~@6 A ~ B ~ C ~ B ~ B ~ B ~ B ~ B A ~ B ~ C ~ B ~ B ~ B ~ B ~ B A ~ B ~ C ~
  B ~ B ~ B ~ B ~ F G H I H ~ H I H I H I H I ~@2 A ~ B ~ C ~ B ~ B ~ B ~ B ~ F G H I H ~ H I H I H A ~ B ~ C ~ B ~ B ~
  B ~ B ~ F G H I H ~ H I H I H I H I H J ~ E C E ~ E C E C E C E C E A ~ B ~ C ~@8 A ~ B ~ C ~ B ~ B ~ B ~ B ~ B A ~ B
  ~ C ~ B ~ B ~ B ~ B ~ B E A ~ B ~ C ~ B ~ B ~ B
>`.pickRestart({
  A: "~ x!2 ~@5", B: "x!2 ~@2 x!2 ~@2", C: "x!2 ~@6", D: "x!2 ~@2 x!3 ~", E: "~@4 x!2 ~@2", F: "x!2 ~@2 x!2 ~ x",
  G: "x", H: "~@6 x!2", I: "~@2 x!2 ~@4", J: "~@2 x!2 ~ x!2 ~",
})).gain(0.96)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  ~@8 A B C B D B C B C B D B C B D ~ A B C B D B C B C B D B C B D ~@5 A B C B D B C B C B D B C B E ~ F ~ G ~ F ~ F ~
  G ~ F ~ G ~ A B C B D B C B C B D B C B D ~@6 A B C B D B C B C B D B C B D A B C B D B C B C B D B C B D A B C B D B
  C B C B D B C B H I J I J K J I J I J K J I ~@2 A B C B D B C B C B D B C B H I J I J K J I J I J A B C B D B C B C B
  D B C B H I J I J K J I J I J K J I J L ~ F ~ G ~ F ~ F ~ G ~ F ~ G A B C B D ~@8 A B C B D B C B C B D B C B D A B C
  B D B C B C B D B C B D G A B C B D B C B C B D
// … 20 more lines

More by Oingo Boingo