Strudelify
Live Wire cover art

Live Wire

Joel Gonzalez

KeyB♭ majorTempo224 bpm
0:00/0:00
// Live Wire — Joel Gonzalez
// 224 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (1/8 at bar 1, 4/4 at bar 2, 2/4 at bar 169, 4/4 at bar 170, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Transcription provider: pdmx. https://musescore.com/score/5933802; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 183 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(224/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, A@4 for four bars: edit a riff to change every repeat.

// chords · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  A@4 B@4 C@4 D@4 E@4 F@8 G H I J K L ~@3 M N M N M N M N M N M N M N M O@4 D@4 P@4 D@4 Q@4 F@8 G H I J K L ~@3 M N M N
  M N M N M N M N M N M R S T@2 U V@2 W@7 X@2 Y@2 Z@2 AA@8 N M N M N M N M N M N M N M N AB@2 AC@7 AD AE AF AG@2 AH AI ~
  AJ AK AL@2 AM@5 AN AO AP@2 AQ AR@2 AS@2 ~
>`.pickRestart({
  A: "[~@7 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!4 g2@2]/4", // Bb5
  B: "[[bb2,f3,bb3]!2 ~@2 [c3,g3,c4]!2 g2 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!4 g2@2]/4", // Bb5 C5 Bb5
  C: "[c5 g4!2 c5 bb4!2 d5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!4 g2@2]/4", // Bb5
  D: "[[bb2,f3,bb3]!2 ~@2 [c3,g3,c4]!2 g2 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!3 c4@3]/4", // Bb5 C5 Bb5
  E: "[bb3 g3 f3 d3 db3 c3 bb2 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!6]/4", // Bb5
  F: "[[g3,c4]!3 [g3,c4]@2 [d3,g3]!2 [f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!6]/4", // C5 G5 Bb5
  G: "[g3,c4]!4 g2!2 [d3,a3,d4]@2", H: "[eb3,bb3,eb4]", I: "d3 e3 c3 bb2!2 c3 a2@2", J: "[f3,c4,f4]",
  K: "e3@2 f3@2 d3@2 c3@2 c3@2 d3@2 b2 bb2 a2 ab2", L: "[g2,d3,g3] ~@7", M: "g2!2 [g3,bb3]@2 [a3,c4]@2 g2!2",
  N: "[g3,bb3] [g3,bb3]@2 [a3,c4]@2 g2!3", // Gm Am
  O: "[[g3,bb3]@2 [g3,bb3]@4 [a3,c4]@4 [a3,c4]@2 [ab3,a3,c4] [gb3,g3,b3] [f3,bb3]@6 g2@2 g2@2 g2@2 g2@2 g2@2 [bb2,f3,bb3]@6 g2@2 g2@2 g2@2 g2@2 g2@2 [bb2,f3,bb3]@6 g2@2 g2@2 g2@2 g2@2 g2@4]/4", // Gm Am Ab Gmaj7 Bb5
  P: "[bb3 g3 f3 d3 db3 c3 bb2 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!4 g2@2]/4", // Bb5
  Q: "[bb3 g3 f3 g2@4 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!5 [bb2,f3,bb3]@3 g2!6]/4", // Bb5
  R: "[g3,bb3]@2 [g3,bb3]@4 [a3,c4]@4 [a3,c4]@4 [c3,f3,g3,ab3,a3,bb3,b3,c4] [c3,d3,eb3,e3,f3,gb3,g3,ab3,a3]", // Gm Am
  S: "[g3,bb3]@13 [f4,bb4]@3, db3 ~@15", // Gm Bb5
  T: "[~ [f4,bb4]@2 ~ eb4 ~ d4 ~@2 c4 [b3,f4]@2 ~ a3 ~@2 g3 [gb3,db4]@2 [f3,c4]@13, ~@3 [e4,a4]@2 ab4@2 [db4,g4]@2 ~@3 [bb3,e4]@2 [ab3,eb4]@2 ~@16, ~@8 gb4@2 ~@5 d4@2 ~@15]/2", // Bb5 Bdim Gb5 F5 A5 Dbdim Bbdim Ab5
  U: "[f4,bb4]@4 [f4,bb4] e4 a4 [eb4,ab4] d4 [db4,g4] [c4,gb4] f4 b3 [bb3,e4] [a3,eb4] ab3", // Bb5 Ab5 Dbdim Cdim Bbdim Adim
  V: "[d4 [g3,db4] gb3 [f3,c4] [e3,b3] ~ [eb3,bb3]@13 [f4,bb4]@4 ~ e4 ~@2 d4 ~ db4 [c4,gb4]@2, ~@23 [f4,bb4]@2 a4@2 ~ g4@2 ~@2, ~@13 [eb4,ab4] ~@2]/2", // Gdim F5 E5 Eb5 Bb5 Cdim Bb5 Ab5
  W: "[~ [bb3,e4]@2 ~ ab3 [g3,d4]@2 ~ [f3,c4]@30 ~@6 bb3@34 [f3,c4]@34, [b3,f4]@2 ~ [a3,eb4]@2 ~@2 [gb3,db4]@2 ~@34 g3@35 ~@34]/7", // Bbdim G5 F5 Bdim Adim Gb5
  X: "[~ [eb3,bb3]@31]/2", Y: "[~ [f3,c4]@7]/2", Z: "[~@7 bb3@25, ~@3 g3@13]/2",
  AA: "[~@10 c4@34 [eb3,bb3]@35 [f3,c4]@33 g2@2 g2@2 [g3,bb3]@4 [a3,c4]@4 g2@2 g2@2, ~@9 f3@35 ~@84]/8", // Eb5 F5 Gm Am
  AB: "[~ [bb2,bb3]@3 [a2,a3]@4 g2@4 [a2,a3]@2 [bb2,bb3]@5 [a2,a3]@3 [bb2,bb3]@2 [c3,c4]@4 [bb2,bb3]@2 [a2,a3]@2]/2", // Bb A Bb A Bb C Bb A
  AC: "[[bb2,bb3]@4 [a2,a3]@4 g2@4 [a2,a3]@2 [bb2,bb3]@4 [a2,a3]@3 [bb2,bb3]@3 [c3,c4]@4 ~ [a2,a3]@2 [bb2,bb3]@4 [a2,a3]@4 g2@4 [a2,a3]@2 [bb2,bb3]@5 [a2,a3]@2 [bb2,bb3]@3 [c3,c4]@4 [bb2,bb3]@2 [a2,a3]@2 [bb2,bb3]@4 [a2,a3]@4 g2@4 [a2,a3]@2 [bb2,bb3]@4 [a2,a3]@3 [bb2,bb3]@2 [c3,c4]@4 [bb2,bb3]@2 [a2,a3]@2 [bb2,bb3]@4 [a2,a3]@4 g2@4 [a2,a3]@2 [bb2,bb3]@4, ~@14 [bb2,bb3] ~@41]/7", // Bb A Bb A Bb C A Bb …
  AD: "~ [a2,a3]@2 [bb2,bb3]@3 [c3,c4]@4 [bb2,bb3]@2 ~ [bb2,bb3]@3, ~@6 [a2,a3] ~", // A Bb C Bb A
  AE: "~ [a2,a3]@4 g2@4 [a2,a3]@2 [bb2,bb3]@5", AF: "[a2,a3]@2 [bb2,bb3]@3 [c3,c4]@4 [bb2,bb3]@2 [a2,a3]@2 [bb2,bb3]@3",
  AG: "[~ [a2,a3]@3 g2@4 [a2,a3]@2 [bb2,bb3]@5 [a2,a3]@2 [bb2,bb3]@3 [c3,c4]@4 [bb2,bb3]@2 [a2,a3]@2 [bb2,bb3]@4]/2", // A Bb A Bb C Bb A Bb
  AH: "[a2,a3]@4 g2@4 ~ [bb2,bb3]@5 [a2,a3]@2, ~@4 [a2,a3] ~@3", // A Bb A
  AI: "~ [bb2,bb3]@2 [c3,c4]@4 [bb2,bb3]@2 [a2,a3]@2 ~@5", AJ: "~@4 [bb2,f3,bb3]@3 g2", AK: "g2!4 [bb2,f3,bb3]@3 g2",
  AL: "[g2@2 g2 g2@2 g2@2 [bb2,f3,bb3]@6 g2@2 g2@2 g2@2 g2@2 g2@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 ~@3]/2", // Bb5
  AM: "[~ [c3,g3,c4]@2 ~@11 [bb2,f3,bb3]@6 g2@2 g2@2 g2@2 g2@2 g2@2 [bb2,f3,bb3]@6 g2@2 g2@2 g2@2 g2@2 g2@2 [bb2,f3,bb3]@5 g2@2 g2@2 g2@2 g2@2 g2@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 ~@4 [c3,g3,c4]@2 ~@7]/5", // C5 Bb5 C5
  AN: "~@2 [bb2,f3,bb3]@3 g2!3", AO: "g2!2 [bb2,f3,bb3]@3 g2!3",
  AP: "[g2@2 g2@2 [bb2,f3,bb3]@5 g2@2 g2@2 g2@2 g2@2 g2@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 ~@4 [c3,g3,c4]@2 ~]/2", // Bb5 C5
  AQ: "~@11 [bb2,f3,bb3]@5", AR: "g2!5 [bb2,f3,bb3]@3",
  AS: "[g2@2 g2 g2@2 g2@2 g2@4 f2@2 e2@2 f2@2 f2@2 bb2@2 a2@2 f2@2 [g2,d3,g3]@4 [g2,d3,g3]@3]/2", // G5
})).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@8 A@4 B@4 C@4 D@8 E F G H I J ~@3 K@2 L@2 M@2 L@2 K@2 L@2 M@2 L N ~@3 O P Q P A@4 B@4 C@4 D@8 E F G H I J ~@3 K@2
  L@2 M@2 L@2 K@2 L@2 M@2 L@2 R@2 S T@2 U V@2 W X@2 Y@3 Z@2 AA AB@2 AC AD@2 U AE@2 L K@2 L@2 M@2 L@2 K@2 L@2 M@2 L@2 K@2
  L AF@5 K AG@4 AH AI@2 ~ AJ AK AL@2 AM@5 AN AO AP@2 AQ AR@2 AS@2 ~
>`.pickRestart({
  A: "[~@7 bb1@3 g1!5 bb1@3 g1!5 bb1@3 g1!4 g1@2]/4", B: "[bb1!2 ~@2 c2!2 ~ bb1@3 g1!5 bb1@3 g1!5 bb1@3 g1!5 bb1]/4",
  C: "[bb1!2 ~@2 c2!2 ~ bb1@3 g1!5 bb1@3 g1!5 bb1@3 g1!6]/4", D: "[c2!3 c2@2 g1!2 bb1@3 g1!5 bb1@3 g1!5 bb1@3 g1!6]/4",
  E: "c2!4 g1!2 d2@2", F: "eb2!8", G: "d2@2 c2 bb1@2 c2 a1 eb2", H: "f2!8", I: "e2@4 d2@2 c2@4 d2@2 b1 bb1 a1 ab1",
  J: "g1 ~@3", K: "g1!8", L: "f1!8", M: "eb1!8", N: "f1!3 f1@2 f1@2 f1", O: "bb1!2 ~@2 c2@2 ~@2", P: "~ g1 ~ g1",
  Q: "~@2 g1@2 ~ g1 g1@2", R: "[g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 g1@2 g1@2 g1@2]/2",
  S: "~ g1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ f1@2",
  T: "[f1@2 f1@2 f1@2 f1@2 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ eb1@2 eb1@2 eb1@2 eb1@2 eb1@2]/2",
  U: "eb1@2 ~ eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 ~ eb1@2",
  V: "[eb1@2 eb1@2 eb1@2 eb1@2 f1@2 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ f1@2 f1@2 f1@2 f1@2]/2",
  W: "f1@2 f1@2 ~ f1@2 f1@2 f1@2 g1@2 g1@2 ~",
  X: "[g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 ~ g1@2 g1@2 f1@2]/2",
  Y: "[f1@2 f1@2 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ f1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 ~ eb1@2 eb1@2]/3",
  Z: "[eb1@2 eb1@2 eb1@2 ~ eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2]/2",
  AA: "~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ f1@2",
  AB: "[f1@2 f1@2 f1@2 g1@2 ~ g1@2 g1@2 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 g1@2 g1@2 g1@2]/2",
  AC: "g1@2 ~ g1@2 g1@2 g1@2 f1@2 f1@2 ~ f1@2",
  AD: "[f1@2 f1@2 f1@2 f1@2 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ f1@2 f1@2 eb1@2 eb1@2]/2",
  AE: "[eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 ~ eb1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~ f1@2]/2",
  AF: "[f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1 f1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1 f1@2 f1@2 f1@2 f1@2 f1@2 g1@2]/5",
  AG: "[g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 eb1@2 ~ eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2 eb1@2, ~@12 g1@2 ~@33 eb1@2 ~@15]/4",
  AH: "eb1!6 f1!2", AI: "[f1@2 f1@2 f1@2 f1@2 f1 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 ~@5]/2",
  AJ: "~@4 bb1@3 g1", AK: "g1!4 bb1@3 g1", AL: "[g1@2 g1 g1@2 g1@2 bb1@6 g1@2 g1@2 g1@2 g1@2 g1@4 bb1@2 bb1@2 ~@3]/2",
  AM: "[~ c2@2 ~@11 bb1@6 g1@2 g1@2 g1@2 g1@2 g1@2 bb1@6 g1@2 g1@2 g1@2 g1@2 g1@2 bb1@5 g1@2 g1@2 g1@2 g1@2 g1@4 bb1@2 bb1@2 ~@4 c2@2 ~@7]/5",
  AN: "~@2 bb1@3 g1!3", AO: "g1!2 bb1@3 g1!3",
  AP: "[g1@2 g1@2 bb1@5 g1@2 g1@2 g1@2 g1@2 g1@4 bb1@2 bb1@2 ~@4 c2@2 ~]/2", AQ: "~@11 bb1@5", AR: "g1!5 bb1@3",
  AS: "[g1@2 g1 g1@2 g1@2 g1@4 f1@2 e1@2 f1@2 f1@2 bb1@2 a1@2 f1@2 g1@4 g1@3]/2",
})).s("gm_electric_bass_pick").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A ~@3 B C@3 D C@3 D E@10 F ~ G H G H ~ B@2 ~ I@7 J I@7 J ~@7 B C@3 D C@3 D E@10 F ~ G H G H ~ B@2 ~ I@7 J I@7 K J
  L M N O P Q O R S T U V W X Y J O Z AA G AB B AC B K I@7 J I@7 K I@3 AD AE@3 B AF@2 AG@2 AH@3 AI ~ AJ AK AL ~ B AM@2 W
  ~ AN AO AP ~ AQ AR@2 AS AT ~
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~@2", B: "~@7 x", C: "x!8", D: "x!2 ~@2 x!2 ~ x", E: "~ x ~@3 x ~ x", F: "~ x ~@3 x ~@2",
  G: "x ~@4 x ~@2", H: "x ~@2 x ~ x ~ x", I: "x!2", J: "x", K: "x!4", L: "~ x ~@6 x ~@7", M: "~@3 x ~@5 x ~@6",
  N: "~@4 x ~@6 x ~@3 x", O: "~@3 x ~@4", P: "~@7 x ~@6 x ~", Q: "~@8 x ~@6 x", R: "~@11 x ~@4", S: "~@13 x ~@2",
  T: "~@3 x ~@10 x ~", U: "~@15 x", V: "~@3 x ~ x ~@2", W: "~ x ~@14", X: "~@2 x ~@6 x ~@6", Y: "~@2 x ~@2 x ~@2",
  Z: "~@4 x ~@2 x", AA: "~@9 x ~@6", AB: "~ x ~@3 x ~@6 x ~@3", AC: "~ x ~@2", AD: "x ~@7 x ~@6 x", AE: "~@7 x ~@7 x",
  AF: "~@3 x ~@3 x", AG: "~@5 x ~@7 x ~@2", AH: "~ x ~ x", AI: "~@3 x ~@12", AJ: "~@2 x!2", AK: "~ x!2 ~ x ~ x ~",
  AL: "~@2 x!2 ~@3 x ~@3 x ~@4", AM: "~ x ~@2 x!2 ~ x", AN: "~@2 x ~ x ~@2 x", AO: "x ~ x ~ x ~@2 x", AP: "x!3 ~",
  AQ: "~@11 x ~@2 x ~", AR: "~@2 x!2 ~ x ~ x", AS: "~@3 x ~ x ~@10", AT: "~@9 x ~@3 x ~@2",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A ~@4 B@3 A B@3 A B@10 C D B@4 E ~ F G B@7 H B@7 I ~@3 J B K B L B@3 A B@3 A B@10 C D B@4 E ~ F M B@7 H B@7 H N O
  P Q R ~ E S ~ T U V W N P X Y Z ~ E AA AB U AC AD AE B@7 H B@7 H B@4 AF@3 AG AH@2 AI@2 F@2 AJ AK ~ AL AM AN AO AP B@2
  AQ AR O AH@2 AS ~ F@2 AT ~@2
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~@2", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "x!2 ~@6", E: "x", F: "x!2", G: "x ~ x ~ x!2 ~@2",
  H: "~@2 x!6", I: "~@2 x!3 ~@2 x", J: "x!2 ~@2 x ~@3", K: "~@2 x ~@2 x!2 ~", L: "x!7 ~", M: "x!5 ~@3", N: "~@9 x ~@6",
  O: "~@5 x ~@2", P: "~@11 x ~@4", Q: "~@13 x ~@2", R: "~ x ~@12 x ~", S: "~ x ~@8 x ~ x ~@3", T: "~ x ~@2",
  U: "~@5 x ~@10", V: "~@7 x ~@8", W: "~@2 x!2", X: "~@3 x", Y: "~@5 x ~@8 x ~", Z: "~@15 x", AA: "~ x ~@6",
  AB: "~@3 x ~@4 x ~@7", AC: "~@6 x ~@8 x", AD: "~@3 x ~@3 x ~@3 x ~@4", AE: "x!8", AF: "~@3 x ~@7 x ~@4",
  AG: "~@3 x!2 ~ x ~ x ~ x ~ x ~@3", AH: "~ x ~@3 x ~@2", AI: "~ x ~@7 x ~@6", AJ: "x ~@7 x ~@6 x",
  AK: "~@7 x ~ x ~ x ~@4", AL: "~@7 x", AM: "~@3 x ~@3 x", AN: "~@5 x ~@7 x ~@2", AO: "~@9 x ~ x ~@4", AP: "~ x ~@14",
  AQ: "~@3 x ~@11 x", AR: "~ x ~@5 x ~@8", AS: "~@5 x ~ x ~@5 x ~@2", AT: "x ~@10 x ~ x ~@2",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~@7 A ~@3 A ~@11 B ~@23 C ~@3 D E F E ~@4 A ~@3 A ~@11 B ~@32 G ~@67 H ~
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~@2", B: "~@6 x!2", C: "~@7 x", D: "x!2 ~@2 x ~@3", E: "~ x ~ x", F: "~ x ~@2", G: "~@7 x ~ x ~@6",
  H: "~@7 x ~@8",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@5 A B@3 ~@3 B ~@3 B C D@2 E C D@2 E C D@3 C ~ C ~ D@4 ~@15 A ~@3 A D@4 ~@3 B ~@3 B C D@2 E C D@2 E C D@3 C ~ C ~ D@4
  ~@16 F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC ~@33 AD AE AF AG AH@3 C AI AJ@2 AK AG AL AH AM D@2 AN AO ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x!3", D: "x!4", E: "x!3 ~", F: "~@9 x ~ x ~ x ~ x", G: "~ x ~@2 x ~ x ~@3 x ~ x ~@3",
  H: "~@3 x ~ x ~ x ~ x ~ x ~@2 x ~", I: "~@4 x ~ x ~@2 x ~@3 x ~@2", J: "~@7 x", K: "x ~@2 x ~ x ~ x ~ x ~ x ~@4",
  L: "x ~ x ~@5 x ~@2 x ~ x ~ x", M: "~ x ~ x ~@6 x ~@3 x ~", N: "~@2 x ~@4 x ~@8", O: "~@4 x ~ x ~ x ~ x ~@2 x ~ x",
  P: "~ x ~@3 x ~ x ~@6 x ~", Q: "x ~ x ~@2 x ~ x ~ x ~@5 x", R: "~ x!2 ~ x ~@3", S: "~@9 x ~@2 x ~ x ~",
  T: "x ~ x ~ x ~@2 x ~@3 x ~ x ~@2", U: "~@2 x!6", V: "~@5 x ~@3 x ~@4 x ~", W: "~@2 x ~@12 x",
  X: "~ x ~ x ~@2 x ~ x ~ x ~ x ~@3", Y: "x ~@2 x ~@5 x ~ x ~@2 x ~", Z: "x ~ x ~ x ~@6 x ~ x ~ x", AA: "~@3 x ~@12",
  AB: "~@5 x ~ x ~ x ~ x ~ x ~@2", AC: "x!2 ~ x!2 ~@3", AD: "~@11 x ~@4", AE: "~@11 x ~@2 x ~", AF: "~ x ~ x ~@3 x",
  AG: "~ x ~ x ~ x ~ x", AH: "~ x ~@3 x ~@3 x ~@3 x ~@2", AI: "x ~@3 x ~@3 x ~@3 x ~@2 x",
  AJ: "~@3 x ~@3 x ~@3 x ~@3 x", AK: "~ x ~@3 x ~ x", AL: "~@2 x ~@2 x ~@3 x ~@3 x ~@2", AM: "~ x ~@3 x ~@3 x ~@6",
  AN: "x ~@2 x ~@3 x ~@3 x ~@3 x", AO: "~@3 x ~@3 x ~@8",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 A ~@7 B ~@43 A ~@7 C ~@23 D E ~@66 F G ~>".pickRestart({
  A: "~@2 x!4 ~@2", B: "~@6 x!2", C: "~@5 x!3", D: "~@7 x", E: "x ~ x ~@2 x ~@10", F: "~@15 x", G: "~ x ~ x ~ x ~@10",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@30 A ~ A ~@2 B ~@46 A ~ A ~@2 B ~@17 C D E F G H I B ~ J K L B M N E@2 L H O P E Q R S ~@53
>`.pickRestart({
  A: "~@3 x", B: "~@3 x ~@4", C: "~@4 x ~@2 x ~@8", D: "~@4 x ~@2 x", E: "~ x ~@14", F: "x ~ x ~@8 x ~@4",
  G: "~@5 x ~@2", H: "~@7 x", I: "~ x ~@2", J: "x!2 ~@6", K: "~@3 x ~@6 x ~ x ~@3", L: "~@11 x ~ x ~@2",
  M: "~@5 x ~@10", N: "~@9 x ~@5 x", O: "~@5 x ~ x ~@8", P: "~@3 x!2 ~@3", Q: "x", R: "~@4 x ~@5 x ~@4 x",
  S: "~@3 x ~@3 x ~@3 x ~@4",
})).gain(0.4)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@9 A B@2 ~ A B@2 ~@21 A B@6 C A B@6 C ~@8 A B@2 ~ A B@2 ~@21 A B@6 C A B@6 C ~@26 A B@6 C A B@6 C A B@2 D E@3 ~ F@2
  G@2 B@2 D H ~@20
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "x ~@3 x ~@3 x ~@3 x ~@2 x", E: "~@3 x ~@3 x ~@3 x ~@3 x", F: "~ x ~ x ~ x ~ x",
  G: "~ x ~@3 x ~@3 x ~@3 x ~@2", H: "~@3 x ~@12",
})).gain(0.4)

// drums · cowbell
const cowbell = s("cb").struct("<~@121 [~@7 x ~ x ~ x ~@4] [x!3 ~@5] ~@49 [~@11 x ~@3 x] [~ x ~@6] ~@9>").gain(0.4)

stack(distortion_guitar, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride, cowbell)

More by Joel Gonzalez