Strudelify
Sunday Bloody Sunday cover art

War

Sunday Bloody Sunday

U2

KeyD majorTempo107 bpm
0:00/0:00
// Sunday Bloody Sunday — U2
// 107 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 117 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): Guitar 1.
setcpm(107/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 · "Bass"
const bass = note(`<
  ~@14 A B C D E F G F G F H F I F I F I J K J L M N O N F P F Q F H F R F K F K F S F T U V W X@2 Y I F I F I F I F I F
  I F I F I F Z F AA F AB F AC F AD F AE M AF AG AF AH AF AG AI F I F I F I F I F I F I F I F I F I F I AJ
>`.pickRestart({
  A: "d2@2 d2!3 a2 d2!2", B: "e2!2 e2@2 e2!4", C: "d2@2 d2@2 d2@2 a1@2 d2@2 d2@2 d2@2 d2 f2", D: "e2",
  E: "e2 ~ [e2,g3] [g2,b3]", F: "b1!3 a1 b1@4 d2!3 c#2 d2@4", G: "g2!3 d2 g2@4 g2!3 b1 g2 f#2 g2@2",
  H: "g2!3 d2 g2@4 g2!3 b1 g2!2 g2@2", I: "g2!3 d2 g2@4 g2!3 c2 g2 f2 g2@2", J: "b1!3 a1 b1@4 d2!3 c2 d2@4",
  K: "g2!3 d2 g2@4 g2!3 b1 g2 f2 g2@2", L: "g2!3 d2 g2@4 g2!3 b1 g2!4", M: "f2!2 e2!2", N: "d2",
  O: "f2 g2 a2 b2 e2 b2 e3 b2", P: "g2!3 d2 g2@4 a2!3 c2 g2@2 g2!2", Q: "g2!3 d2 g2@4 a2!3 c2 g2@2 f2 g2",
  R: "g2!3 d2 g2@4 g2!3 c#2 g2 f2 g2@2", S: "g2!3 d2 g2@4 g2!3 c2 g2 f2 e2 ~", T: "g2!3 d2 g2@4 g2!3 c2 g2 f#2 f2@2",
  U: "d2@3 d2!5", V: "e2 b2 e3 f#3 e3 b2 g2 e2", W: "d2 a2 d3@2", X: "[e2@7 g2]/2", Y: "b1!4 b1@4 d2!3 c#2 d2@4",
  Z: "g2!3 d2 g2@4 g2!3 c2 g2@4", AA: "g2!3 d2 g2@4 g2!3 d2 g2!2 ~@2", AB: "g2!3 f#2 g2@4 g2!3 f2 g2!2 ~@2",
  AC: "g2!3 d2 g2@4 g2!3 d2 g2@4", AD: "g2!4 g2@4 g2!5 f#2 g2@2", AE: "g2!3 f#2 g2@4 g2!3 d2 g2 f#2 g2@2", AF: "d2!4",
  AG: "f2 g2 a2 b2 e2 b2 e3 a2", AH: "f2@2 f2@2 e2@2 e2 d2", AI: "d2@2 d2@2 g#2@2 c#3!2", AJ: "b1 ~ b1@14",
})).s("gm_electric_bass_finger").gain(0.25)

// chords · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  ~@14 A ~ B C D ~@3 E ~@12 F ~ G H I J K L ~@12 B M B N@3 ~@27 O P Q R S T U V ~@21
>`.pickRestart({
  A: "~ d4@15", B: "~ f#4@15", C: "~ b3@15", D: "~ [b3,g4]@8 ~@7, [e2,b2,e3,g3] ~", E: "~@8 d4 e4 ~@6",
  F: "~ d5@4 g5@3", G: "~ d5@3 ~ g5@3", H: "f#5 d5 a4@6",
  I: "[b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3] ~@4 [d3,a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 ~@2", // B5 D
  J: "~ [g3,d4,g4] [g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@4 [g3,d4,g4,b4]!2 [g3,d4,g4,b4]@2 ~@2", // G5 G
  K: "~ [b2,f#3,b3,f#4] [b2,f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 b3 ~@2 [d3,a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 ~@2", // B5 D
  L: "~ [g3,d4,g4,b4] [g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~ [g3,d4,g4] [g3,d4,g4,b4] [a3,e4,a4,c#5] [a3,e4,a4,c#5]@2 [g3,d4,g4,b4]@2 ~@2", // G G5 G A G
  M: "~ g4@15", N: "[~ g4@32 ~@15]/3", O: "d4 b3@3 ~@4", P: "~ d4@7", Q: "a3 d4@4 g4@3", R: "~ d4 ~@6",
  S: "d4 a3@3 ~ d4@3", T: "~ d4 a3@6", U: "~ d4@4 d4@3", V: "~ a3@7",
})).s("gm_electric_guitar_clean").gain(0.32)

// chords · acoustic guitar steel · "Guitar 2 (12)"
const acoustic_guitar_steel = note(`<
  ~@6 A@8 B C D E F G H I J K L M@2 N O P Q P R S T U V W X ~@4 K L M@2 N O P Y P R S T V Z AA AB AC AD AE AD AF AD AE
  AD AG AH AI AJ AK AL AM AN AO AP@2 AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG V BH BI BJ BK BL BM BN BO BP BQ
  BH BQ BH BR BH BQ BH BQ BH BQ ~
>`.pickRestart({
  A: "[~@63 d4, b3 a3 g3!2 b3 a3 g3!2 b3 a3 g3!2 b3 a3 g3!2, ~ d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 ~, ~ f#4@2 f#4@2 e4@2 e4@2 f#4@2 f#4@2 e4@2 e4@2 f#4@2 f#4@2 e4@2 e4@2 f#4@2 f#4@2 e4@2 e4]/8",
  B: "[a2,d3,a3,d4,f#4]@10 [a2,d3,a3,d4,f#4]!4 [g3,b3,e4]!2", // D Em
  C: "~ [b3,g4]@3 ~ [b3,g4]@5 ~ [b3,g4]@5, [e2,b2,e3,g3]@2 [e2,b2,e3,g3]@3 [e2,b2,e3,g3]@3", // Em
  D: "[a2,d3,a3,d4,f#4]@8 ~ f#4@7, ~ [a3,d4]", E: "~ g4@5 ~ g4@9, [e3,g3,b3]@3 [e3,g3,b3]@5",
  F: "[d4,a4]@2 [g3,d4,a4]!4 [g3,b3,a4]@4 [a3,d4,a4] [b3,d4,a4] [a3,d4,a4]!4", // D5 Gsus2 G D5 Bm7 D5
  G: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 f#4!2 ~ [d3,a3,d4]!2 a3 [d3,a3,d4]@2 e4!2", // B5 D5
  H: "~ [g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4]@2 d4 ~@2 [g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4]@2 ~@2", // G5
  I: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 ~@4 [d3,a3,d4]@2 [d3,a3,d4]@2 ~ [g3,d4,g4]", // B5 D5 G5
  J: "~ [g3,d4,g4]!2 ~ [g3,d4,g4]@2 ~@2 [g3,c#4,g4] [g3,c#4,a4] ~@2 [d4,g4] [c#4,f#4] ~@2", // G5 Gdim A7 G5 F#5
  K: "~ [b2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2 b3!2 ~ [d3,a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 ~@2", // B5 D
  L: "[g3,d4,g4]!3 b4 [g3,d4,g4]@2 ~@2 [g3,d4,g4]!2 [g3,d4,g4,b4] ~ [g3,d4,g4,b4]@2 ~ e4", // G5 G
  M: "[~@14 d4@3 g3 d4@2 e4@4 [g3,d4]@2 ~ e4@2 d4 g3@2, b3@4 a3@4 ~@5 g3 ~@2, ~ d4@2 d4@2 d4@2 ~@9, ~ f#4@2 f#4@2 ~@3]/2", // G5
  N: "b3 d4 f#4 d4 a3 d4 [a3,d4,f#4]!2", O: "g3@2 [d4,e4]@2 [d4,e4]@2 d4@2 g3 d4 g3 e4@2 d4 g3@2",
  P: "b3 d4 f#4 d4 a3 d4 f#4 d4", Q: "g3@2 e4@2 e4 a3@2 ~ g3 d4 e4 e4@2 d4 g3@2",
  R: "g3@2 d4@2 e4@2 d4@2 g3 d4 g3 e4@2 d4 g3@2", S: "b3 d4 f#4 d4 a3 d4 f#4 e4",
  T: "g3@2 d4@2 e4@2 d4@2 g3 d4@2 [d4,a4]@2 [d4,g4] g3@2", // D5 G5
  U: "[f2,a2,f3,a3,c4,f4]@8 [b2,e3,g3,b3]@6 [a2,d3,a3,d4,f#4]!2, ~@2 [e2,g4] ~", V: "[a2,d3,a3,d4,f#4]",
  W: "[f2,a2,f3,a3,c4,f4]@8 [e2,b2,e3,g3,b3,g4]@5 [a2,d3,a3,d4,f4]!3", X: "[a2,d3,a3,d4,f4]",
  Y: "g3@2 e4@2 ~ a3@2 ~ g3 d4 e4 e4@2 d4 g3@2, ~@2 e4 ~@5", Z: "[e2,b2,e3,g3,b3,g4]@3 [e3,g3,b3,g4]",
  AA: "[g2,d3,a3,d4,f#4]@7 [g3,b3,e4]", AB: "[e2,b2,d3,g3,b3,g4]@12 a2@3 e4", AC: "[a3,d4]@12 ~ d4!2 b3",
  AD: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 ~@2 [d3,a3,d4,f#4]!4 [d3,a3,d4,f#4]@2 ~@2", // B5 D
  AE: "~ [g3,d4,g4,b4] [g3,d4,g4,b4]@2 [g3,d4,g4,b4]!2 ~@3 [g3,d4,g4,b4] [g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@2", // G
  AF: "~ [g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4]@2 ~@2 [g3,d4,g4] [g3,d4,a4]@3 [d4,g4] [c#4,f#4]@3", // G5 Gsus2 G5 F#5
  AG: "~ [g3,d4,g4,b4] [g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@3 [g3,d4,g4,b4] [g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 [b3,e5]!2", // G E5
  AH: "[b3,e5] [b3,d5] [b3,d5]@2 [b3,d5] [b3,e5]!4 [b3,d5]!2 ~ [b3,d5]@2 [g3,b4]!2", // E5 Bm E5 Bm G
  AI: "[g3,b4] [g3,a4] [g3,a4]@2 [g3,a4]@2 [g3,b4]!2 [g3,b4]@2 [g3,a4]!2 [g3,a4]@2 [b3,e5]!2", // G Gsus2 G Gsus2 E5
  AJ: "[b3,e5] [b3,d5] [b3,d5]@2 [b3,d5]@2 [b3,e5]!3 [b3,d5] [b3,d5]@2 [b3,d5]@2 [g3,b4]!2", // E5 Bm E5 Bm G
  AK: "[g3,b4] [g3,a4]!2 g4 [g3,a4]@2 [g3,b4]!3 [g3,a4]!2 g4 [g3,a4]@2 [g3,d4,a4] [g3,e4,a4]", // G Gsus2 G Gsus2 A7
  AL: "[e4,f#4,a4] [g3,e4,a4] [b3,e4,g4]@2 [a3,e4,g4]@2 [e4,f#4]!2 [e4,f#4]@2 e4!3 ~ [d4,e4]!2", // F#m7 A7 Em A7 Esus2 Dsus2
  AM: "[d4,e4] e4 [d4,e4]@2 [d4,e4]@2 [c#4,e4]!3 [d4,e4] [c#4,e4]@2 [b3,e4]@2 [b3,e4]!2", // Dsus2 C#m Dsus2 C#m E5
  AN: "[b3,e4]@2 [d4,e4,a4]!2 [d4,e4,a4]@2 e4 ~ e4 ~ [b3,e4,f#4]!2 [b3,e4,f#4]@2 [e4,g4]@2", // E5 Dsus2 Bsus4 Em
  AO: "[e4,g4]@2 [e4,a4]!2 [e4,a4]@2 [e4,b4]!2 [e4,b4]@2 [e4,d5]!2 [e4,d5]@2 [e4,c#5]@2", // Em A5 E5 E7 C#m
  AP: "[[e4,a4]@2 [e4,b4]@2 [b3,e4,b4]@25 ~@3]/2", // A5 E5
  AQ: "[b2,f#3,b3]@2 ~ [b2,f#3,b3] [b2,f#3,b3]@2 ~@3 [d3,a3,d4,f#4]!3 [d3,a3,d4,f#4]@2 ~@2", // B5 D
  AR: "~ [g3,d4,g4]!3 [g3,d4,g4]@2 ~@3 [g3,d4,g4]!5 ~@2", // G5
  AS: "[b2,f#3,b3]@2 [b2,f#3,b3]!4 ~@3 [d3,a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 ~@2", // B5 D
  AT: "[g3,d4,g4]!4 [g3,d4,g4]@2 ~@2 [g3,d4,g4]!6 ~@2", // G5
  AU: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 ~@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 ~@2", // B5 D
  AV: "[g3,d4,g4]!4 [g3,d4,g4]@2 ~@2 [g3,d4,g4]@2 [g3,d4,g4]!2 [g3,d4,g4]@2 ~@2", // G5
  AW: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 ~@3 [d3,a3,d4,f#4]!5 ~@2", // B5 D
  AX: "[g3,d4,g4]@2 [g3,d4,g4]!2 [g3,d4,g4]@2 ~@2 [g3,d4,g4]!8", // G5
  AY: "[b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~@3 [d3,a3,d4,f#4]!3 [d3,a3,d4,f#4]@2 ~@2", // B5 D
  AZ: "~ [g3,d4,g4]!3 [g3,d4,g4]@2 ~@2 [g3,d4,g4]@2 [g3,d4,g4]!4 ~@2", // G5
  BA: "[f2,a2,f3,a3,c4,f4]@6 [e2,b2,e3,g3,b3,g4]!2 [e2,b2,e3,g3,b3,g4]@6 [e2,b2,e3,g3,b3,g4]@2", // F Em
  BB: "[a2,d3,a3,d4,f#4]@4 [g2,d3,a3,d4,f#4]@2 [g2,d3,a3,d4,f#4]!3 [g2,d3,a3,d4,f#4]@6 ~", // D
  BC: "~@2 [f2,a2,f3,a3,c4,f4]!2 [f2,a2,f3,a3,c4] ~@7 [e2,b2,e3,g3,b3,g4]@2 [e2,b2,e3,g3,b3,g4]@2, ~ f4 ~@2", // F Em
  BD: "[a2,d3,a3,d4,f#4]!4", // D
  BE: "[f2,a2,f3,a3,c4,f4]@2 [f2,a2,f3,a3,c4,f4]!2 [e2,b2,e3,g3,b3,g4]@2 [e2,b2,e3,g3,b3,g4]!2", // F Em
  BF: "[a2,d3,a3,d4,f#4]@6 [a2,d3,a3,d4,f#4]!3 [a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4]@2", // D
  BG: "[f2,a2,f3,a3,c4,f4]@4 [f2,a2,f3,a3,c4,f4]@2 [e2,b2,e3,g3,b3,g4]!4 [e2,b2,e3,g3,b3,g4]@2 [e2,b2,e3,g3,b3,g4]@2 [e2,b2,e3,g3,b3,g4]!2", // F Em
  BH: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 [b2,f#3,b3]!2 [d3,a3,d4,f#4]!4 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2", // B5 D
  BI: "[g3,d4,g4] [g3,d4,g4]@3 [g3,d4,g4]@2 [g3,d4,g4]!3 [g3,d4,g4]@3 [g3,d4,g4]@2 [g3,d4,g4]!2", // G5
  BJ: "[b2,f#3,b3]!2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]!2 [d3,a3,d4,f#4] [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2", // B5 D
  BK: "[g3,d4,g4]!2 [g3,d4,g4]@2 [g3,d4,g4]@2 [g3,d4,g4]!4 [g3,d4,g4]@2 [g3,d4,g4]@2 [g3,d4,g4]!2", // G5
  BL: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 [b2,f#3,b3]!2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2", // B5 D
  BM: "[g3,d4,g4]!2 [g3,d4,g4]@2 [g3,d4,g4]@2 [g3,d4,g4]!6 [g3,d4,g4]@2 [g3,d4,g4]!2", // G5
  BN: "[b2,f#3,b3]!2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]!2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2", // B5 D
  BO: "[g3,d4,g4]!2 [g3,d4,g4]@2 [g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4] [e5,a5]!4 [b2,f#3,b3]@2 [b2,f#3,b3]!2", // G5 A5 B5
  BP: "[b2,f#3,b3]!8 [d3,a3,d4,f#4]!4 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2", // B5 D
  BQ: "[g3,d4,g4]!4 [g3,d4,g4]@2 [g3,d4,g4]!6 [g3,d4,g4]@2 [g3,d4,g4]!2", // G5
  BR: "[g3,d4,g4]!4 [g3,d4,g4]@2 [g3,d4,g4]!2 [e5,a5,c#6] [e5,a5,c#6]@2 [e5,a5,c#6] [g3,d4,g4]@2 [g3,d4,g4]!2", // G5 A G5
})).s("gm_acoustic_guitar_steel").gain(0.32)

// chords · electric guitar muted · "Mute Guitar"
const electric_guitar_muted = note(`<
  ~@20 A B C D E ~@12 F ~ G H I J D E ~@15 K L K C K L K M ~@10 N O P Q R Q S T U V ~@29
>`.pickRestart({
  A: "~@7 [d4,g4]!2 ~@5 [g3,d4,g4]@2", B: "~@5 f#3!2 ~ [d3,a3,d4]!2 ~@4 [d3,a3,d4] ~",
  C: "[g3,d4,g4] ~@5 [g3,d4,g4]!2 ~@8", D: "[b2,f#3,b3] ~@7 [d3,a3,d4] ~@5 [a3,d4,f#4]!2",
  E: "~@6 [g3,d4,g4]!2 ~@6 [g3,d4,g4] ~", F: "~@4 g5 ~@3", G: "~@5 [b2,f#3,b3]!4 ~@5 [a3,d4,f#4]!2",
  H: "[d4,g4,b4] ~@5 [d4,g4,b4]!3 ~@5 [d4,g4,b4]!2", I: "[b2,f3,b3] ~@6 b3 [d3,a3,d4,f#4] ~@5 [a3,d4,f#4]!2",
  J: "[g3,d4,g4] ~@5 [g3,d4,g4] ~@7 [g3,d4,g4]!2", K: "~@6 [b2,f#3,b3]!2 ~@6 [a3,d4,f#4]!2",
  L: "[g3,d4,g4] ~@5 [d4,g4,b4]!3 ~@5 [d4,g4,b4]!2", M: "[d4,g4,b4] ~@5 [d4,g4,b4]!3 ~@7",
  N: "~@2 [b2,f#3,b3] ~@3 [b2,f#3,b3]!2 [d3,a3,d4,f#4] ~@5 [d3,a3,d4,f#4]!2", // B5 D
  O: "[g3,d4,g4] ~@5 [g3,d4,g4]!3 ~@5 [g3,d4,g4]!2", P: "~@6 [b2,f#3,b3]@2 [d3,a3,d4,f#4] ~@5 [d3,a3,d4,f#4]!2",
  Q: "~@6 [g3,d4,g4]!2 ~@6 [g3,d4,g4]!2", R: "~@6 [b2,f#3,b3]!2 ~@6 [d3,a3,d4,f#4]@2",
  S: "~@6 [b2,f#3,b3]!2 [d3,a3,d4,f#4] ~@5 [d3,a3,d4,f#4]!2", T: "~@3 [g3,d4,g4] ~@4",
  U: "~@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]!2 [d3,a3,d4,f#4] ~@5 [d3,a3,d4,f#4]!2", // B5 D
  V: "[g3,d4,g4] ~@5 [g3,d4,g4]@2 ~@6 [g3,d4,g4]!2", // G5
})).s("gm_electric_guitar_muted").gain(0.1)

// drums · rim
const rim = s("rim").struct("<[x!2] [x!4] ~@115>").gain(0.32)

// drums · kick
const kick = s("bd").struct("<~@2 [~ x ~ x ~ x ~ x]!74 [x ~ x ~ x ~ x ~ x!5 ~ x ~]!6 [~ x ~ x ~ x ~ x]!34 ~>")
  .gain(0.41)

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

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!16]!114 ~>").gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@14 x!3 ~@38 x!3 ~@59>").gain(0.46)

stack(bass, electric_guitar_clean, acoustic_guitar_steel, electric_guitar_muted, rim, kick, snare, hihat, crash)

More by U2