Strudelify

Zooropa

U2

KeyE majorTempo93 bpm
0:00/0:00
// Zooropa — U2
// 93 bpm, 4/4, key E major. 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 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/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 · distortion guitar
const distortion_guitar = note(`<
  ~@8 A B C D E B F G H I J K L M N O P Q R S T U V W X Y Z D E B F G AA AB AC AD AE AF AG AH AI AJ AK AL AM ~ AN@3 AO
  AN@4 AP@2 AN@4 AQ@2 AP@2 AN AR AN AS AN@6 AT@2 AN@2 AT@2 AN@3 AS AN@2 AT@2 AN@3 AS AN@6 AT@2 AN@2 AT@2 AN@2 ~
>`.pickRestart({
  A: "~@11 a4 b3!2 a4 g#4", B: "b3!2 g#4 f#4!2 b3 f#4 b3 f#4!3 a4 b3!2 a4 g#4",
  C: "b3!2 g#4 f#4!2 b3 f#4 b3 f#4!3 ~@3 d5 c#5", D: "d4!2 c#5 b4!2 ~ b4 d4 b4!3 d5 d4 ~ d5 c#5",
  E: "d4!2 c#5 b4!2 d4 b4 d4 b4!3 a4 b3!2 a4 g#4", F: "b3!2 g#4 f#4!2 b3 f#4 b3 f#4!3 d5 d4!2 d5 c#5",
  G: "d4!2 c#5 b4!2 d4 b4 d4 b4!3 d5 d4!2 d5 c#5", H: "d4!2 c#5 b4!2 ~ b4 d4 b4!3 [e4,g#4]!3 [e4,f#4,g#4] e4",
  I: "e4 [e4,g#4] e4 ~ e4 ~@6 [e4,f#4,g#4] e4 [e4,g#4]!2 e4", // E
  J: "[e4,g#4]!2 e4 ~@4 e4 ~ e4!2 [e4,g#4]!2 e4 [e4,f#4,g#4] e4", // E
  K: "e4 [e4,g#4] ~ e4 ~@6 e4 [e4,f#4,g#4] [e4,g#4] e4 [e4,g#4] e4", // E
  L: "e4 [e4,g#4]!2 e4 ~@4 e4 ~ [e4,g#4] [a4,c#5] a4!2 [a4,c#5]!2", // E A
  M: "[a4,c#5]!3 ~ a4 ~ a4 ~@3 a4 [a4,d5] a4!2 [a4,d5]!2", N: "a4 [a4,d5]!2 a4 ~@2 a4 ~@4 [a4,c#5]!2 a4 [a4,c#5]!2",
  O: "[a4,c#5]!4 ~@5 a4 [a4,c#5] [a4,d5] a4!2 [a4,d5] a4", P: "[a4,d5]!3 a4!6 ~ [a4,d5] [e4,g#4] g#4 [e4,g#4]!2 g#4",
  Q: "[e4,g#4]!2 g#4 ~@7 g#4 [e4,g#4] g#4 [e4,g#4]!3", R: "g#4 [e4,g#4]!2 ~@4 g#4 ~@2 [e4,g#4]!3 g#4 [e4,g#4] g#4",
  S: "g#4 [e4,g#4]!2 g#4 ~@5 g#4 [e4,g#4]!6", T: "g#4 [e4,g#4]!2 g#4 [e4,g#4] ~@2 g#4!3 e4 [a4,c#5]!2 a4 [a4,c#5]!2",
  U: "[a4,c#5]!4 a4 [a4,c#5]!6 [a4,d5] a4 [a4,d5]!3", V: "a4 [a4,d5]!4 a4 [a4,d5]!5 [a4,c#5]!5",
  W: "a4 [a4,c#5]!3 ~@3 a4 ~ a4!2 [a4,d5]!2 a4 [a4,d5]!2", X: "[a4,d5]!4 a4!2 [a4,d5]!2 a4!2 [a4,d5] a4 b3!2 a4 g#4",
  Y: "b3!2 g#4 f#4!2 ~ f#4 b3 f#4!3 a4 b3!2 a4 g#4", Z: "b3!2 g#4 f#4!2 b3 f#4 b3 f#4!3 d5 ~ d4 d5 c#5",
  AA: "d4!2 c#5 b4!2 ~ b4 d4 b4!3 [e4,g#4]!3 [e4,f#4,g#4] [e4,g#4]", // E
  AB: "[e4,g#4]!3 e4!2 ~@3 e4 ~ e4 [e4,f#4,g#4] [e4,g#4]!4", AC: "[e4,g#4]!3 ~@2 e4!6 [e4,g#4]!3 [e4,f#4,g#4] [e4,g#4]",
  AD: "[e4,g#4]!3 e4 ~ e4!2 ~@2 e4!2 [e4,f#4,g#4] [e4,g#4]!3 e4", // E
  AE: "[e4,g#4]!3 e4 g#4 e4 ~ e4!2 ~ [e4,g#4] [a4,c#5]!2 a4 [a4,c#5]!2", // E A
  AF: "[a4,c#5]!5 c#5 [a4,c#5] ~@3 a4 [a4,d5] a4 [a4,d5]!3", AG: "[a4,d5]!4 a4!3 ~ a4!2 [a4,d5] [a4,c#5]!5",
  AH: "[a4,c#5]!5 a4 [a4,c#5] a4!2 [a4,c#5]!2 [a4,d5] a4 [a4,d5]!3", AI: "[a4,d5]!5 a4!4 ~ [a4,d5] e4!5",
  AJ: "b4!2 ~ b4 ~@3 b4!2 e4!5 [b3,e4] b3", AK: "b3!3 ~ b3!3 e4!2 ~ e4 ~ e4 b4!3", AL: "b4 ~@2 b4!3 e4!5 b3!4 ~",
  AM: "b3!4 ~@12", AN: "b4@3 e5@3 b4@2 g#5@2 b4@2 e5@4", AO: "b4@3 e5@3 b4@2 ~@2 b4@2 e5@4, ~@2 g#5 ~",
  AP: "a4@3 c#5@3 a4@2 f#5@2 a4@2 d5@4", AQ: "~@3 e5@3 b4@2 g#5@2 b4@2 e5@4, b4@5 ~@11",
  AR: "b4@3 e5@3 b4@2 g#5@2 b4@2 e5@2 ~@2", AS: "b4@3 e5@3 b4@2 g#5@2 b4@2 e5@3 ~",
  AT: "a4@3 c#5@3 a4@2 f#5@2 a4@2 c#5@4",
})).s("gm_distortion_guitar").gain(0.17).pan(0.1)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note(`<
  ~@11 A ~@4 B C D E F G H I J K L M N O P Q R S T A ~@4 U V W X Y Z AA AB AC AD AE AF ~@63
>`.pickRestart({
  A: "~@5 d4 ~@7 d4 ~@2", B: "~@5 d4 ~@9 g#4", C: "g#4 ~ g#4 [e4,g#4] g#4 [e4,g#4]!6 ~ g#4 ~ f#4 g#4",
  D: "~@2 g#4 [e4,g#4]!4 g#4 [e4,g#4] g#4!2 ~@2 g#4 ~ g#4", E: "g#4 ~ [e4,g#4] g#4 [e4,g#4]!6 g#4 ~@2 g#4 ~ g#4",
  F: "g#4 ~@2 g#4 [e4,g#4]!4 g#4 [e4,g#4] ~@2 c#5!2 ~@2", // E
  G: "~@3 [a4,c#5] c#5 [a4,c#5] c#5 [a4,c#5]!2 c#5!2 ~ d5!2 ~@2", H: "d5 ~@2 d5 [a4,d5]!2 ~ [a4,d5]!4 ~@2 c#5 ~@2",
  I: "~@4 [a4,c#5]!5 c#5 ~@2 d5!2 ~ d5", J: "~@3 d5!6 ~@6 e4", K: "~@2 e4 [e4,g#4]!6 g#4 e4 ~ e4 ~@3",
  L: "e4 ~@2 [e4,g#4]!4 e4 [e4,g#4]!2 ~@3 e4 ~ e4", M: "e4 ~@2 e4 [e4,g#4]!5 e4 ~@6",
  N: "e4 ~@2 e4 ~ [e4,g#4]!2 e4!2 ~@4 c#5 ~@2", O: "~@4 c#5 ~@7 d5 ~@3", P: "d5 ~@4 d5 ~@10",
  Q: "c#5 ~@3 [a4,c#5]!3 c#5 [a4,c#5] c#5!2 ~@2 d5 ~@2", R: "~@4 d5!2 ~@2 d5!2 ~@6", S: "~@5 b3 ~@3 b3 ~@6",
  T: "~@9 g#4 ~@2 d4 ~@3", U: "~@5 d4 ~@10", V: "~@3 g#4!2 [e4,g#4]!3 g#4 [e4,g#4] g#4 ~@3 f#4 ~",
  W: "~@3 [e4,g#4]!2 g#4!6 ~@5", X: "~@3 g#4 [e4,g#4] g#4!2 [e4,g#4]!2 g#4!2 ~@4 g#4",
  Y: "~@3 g#4 e4 g#4 [e4,g#4] g#4!2 [e4,g#4] ~@3 c#5 ~@2", Z: "~@5 a4 ~ [a4,c#5]!2 c#5!2 ~ d5 ~@3",
  AA: "~@4 d5!2 ~ [a4,d5] d5!2 ~@6", AB: "~@5 c#5 ~ c#5!2 ~@3 d5 ~@3", AC: "~@5 d5!4 ~@7", AD: "~@2 b4 ~ b4!3 ~@9",
  AE: "~@3 b3 ~@5 e4 ~ e4 ~@4", AF: "~ b4!2 ~@12 b3",
})).s("gm_distortion_guitar").gain(0.08).pan(0.1)

// bass · fretless bass
const bass = note(`<
  ~@8 A B C@3 D@5 E@8 F@4 G@3 B C@3 D@5 H@7 ~@5 I J K L M N O K P@2 Q M R@2 L R S T U R@2 M@5 R M P@2 R M V P W R@2 M@3
  V P W R@2 M@5 R M P@2 R M V P W R ~
>`.pickRestart({
  A: "~@11 b1@2 b1 ~ b1", B: "~ a1 b1 ~ b1!2 ~ f#1@2 a1@2 b1@2 b1 ~ b1",
  C: "[~ a1 b1 ~ b1 b1@2 f#1@2 a1@2 d2@2 d2 ~ d2@2 c2 d2 ~ d2 d2@2 a1@2 c2@2 d2@2 d2 ~ d2@2 c2 d2 ~ d2 d2@2 a1@2 c2@2 b1@2 b1 ~ b1]/3",
  D: "[~ a1 b1 ~ b1 b1@2 f#1@2 a1@2 b1@2 b1 ~ b1@2 a1 b1 ~ b1 b1@2 f#1@2 a1@2 d2 ~ d2 ~ d2@2 c2 d2@2 d2 d2@2 a1@2 c2 ~ d2 ~ d2 ~ d2@2 c2 d2 ~ d2 d2@2 a1@2 c2 ~ e2@2 e2 ~ e2@2 d2 e2 ~ e2 e2@2 b1@2 d2@2 e2@2 e2 ~ e2]/5",
  E: "[~ d2 e2 ~ e2 e2@2 b1@2 d2@2 e2@2 e2 ~ e2@2 d2 e2 ~ e2 e2@2 b1@2 d2@2 e2 ~ e2 ~ e2@2 d2 e2 ~ e2 e2@2 b1@2 d2@2 f#2 ~ f#2 ~ f#2@2 e2 f#2@2 f#2 f#2@2 c#2@2 e2@2 d2 ~ d2 ~ d2@2 c2 d2 ~ d2 d2@2 a1@2 c2@2 f#2 ~ f#2 ~ f#2@2 e2 f#2@2 f#2 f#2@2 c#2@2 e2@2 d2 ~ d2 ~ d2@2 c2 d2 ~ d2 d2@2 a1@2 c2@2 e2@2 e2 ~ e2@2 d2 e2 ~ e2 e2@2 b1@2 d2@2 e2@2 e2 ~ e2]/8",
  F: "[~ d2 e2 ~ e2 e2@2 b1@2 d2@2 e2@2 e2 ~ e2@2 d2 e2 ~ [d2,e2] e2@2 b1@2 d2@2 e2@2 e2 ~ e2@2 d2 e2 ~ e2 e2@2 b1@2 d2@2 f#2 ~ f#2 ~ f#2@2 e2 f#2 ~ f#2 f#2@2 c#2@2 e2@2 d2 ~ d2 ~ d2]/4", // Dsus2
  G: "[~ c2 d2 ~ d2 d2@2 a1@2 c2@2 f#2@2 f#2 ~ f#2@2 e2 f#2 ~ f#2 f#2@2 c#2@2 e2@2 d2 ~ d2 ~ d2@2 c2 d2 ~ d2!2 ~ a1@2 c2 ~ b1@2 b1 ~ b1]/3",
  H: "[~ d2 e2 ~ e2 e2@2 b1@2 d2@2 e2@2 e2 ~ e2@2 d2 e2 ~ e2 e2@2 b1@2 d2@2 e2 ~ e2 ~ e2@2 d2 e2 ~ e2 e2@2 b1@2 d2@2 f#2 ~ f#2 ~ f#2@2 e2 f#2@2 f#2 f#2@2 c#2@2 e2@2 d2 ~ d2 ~ d2@2 c2 d2 ~ d2 d2@2 a1@2 c2@2 f#2 ~ f#2 ~ f#2@2 e2 f#2@2 f#2 f#2@2 c#2@2 e2@2 d2 ~ d2 ~ d2@2 c2 d2 ~ d2 d2@2 a1@2 c2@2 ~@5]/7",
  I: "d2 e2@2 d2 e2@2 d2 e2@2 d2 e2@2 b1@3 ~", J: "d2 e2@2 d2 e2@2 ~ e2@2 d2 e2@2 b1@2 d2@2, ~@3 d2 ~@4",
  K: "d2 e2@2 d2 e2@2 d2 e2@2 d2 e2@2 b1@2 e2@2", L: "d2 e2@2 d2 e2@2 d2 e2@2 ~ e2@2 b1@2 d2@2, ~@9 d2@2 ~@5",
  M: "d2 e2@2 d2 e2@2 d2 e2@2 d2 e2@2 b1@2 d2@2", N: "d2 e2@2 d2 e2@2 d2 e2@2 d2 e2@2 b1@4",
  O: "d2 e2@2 d2 e2@2 d2 e2@2 d2 e2@2 ~@2 e2 ~, ~@3 b1", P: "d2 e2@2 d2 e2@2 d2 e2@2 d2 e2@2 a1@2 e2@2",
  Q: "~ e2@2 d2 e2@2 d2 e2@2 d2 e2@2 b1@2 d2@2, d2 ~@7", R: "d2 e2@2 d2 e2@2 d2 e2@2 d2 e2@2 b1@2 d2 ~",
  S: "d2 e2@2 d2 e2@2 d2 e2@2 ~ e2@2 d2@2 e2@2, ~@9 a1@2 ~@5",
  T: "d2 e2@2 d2 e2@2 d2 e2@2 ~ e2@2 a1@2 e2@2, ~@9 a1@2 ~@5",
  U: "d2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 b1@2 d2@2, ~@3 d2@2 ~ d2@2 ~ d2@2 ~@5",
  V: "d2 e2@2 d2 e2@2 d2 e2@2 a1 e2@2 a1@2 e2@2", W: "d2 e2@2 d2 e2@2 ~ e2@2 d2 e2@2 b1@2 d2 ~, ~@3 d2 ~@4",
})).s("gm_fretless_bass").gain(0.4)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@8 A@8 B@6 C@6 D@8 E@4 B@6 F@3 ~@5 G H I J G K L K M@2 N J L J O J M@2 L P O L O L@4 Q R S L@2 T S O L O L O L U S O
  L O L O L@4 Q R S L@2 T S O L ~
>`.pickRestart({
  A: "[~@11 d4@6 b4@10 d4@7 b4@8 ~ a3@7 f#4@9 a3@6 f#4@9 ~ d4@6 b4@10 d4@7 b4@8 ~ a3@7 f#4@9 [a3,d4]@5, ~@11 f#4@15 ~ f#4@15 ~ d4@15 ~ d4@15 ~ f#4@15 ~ f#4@15 ~ d4@15 ~@6]/8", // D5
  B: "[~ f#4@9 ~ [g#4,b4]@16 [e4,g#4]@15 ~ [g#4,b4]@16 [e4,g#4]@15 ~ [f#4,a4]@16 [d4,f#4]@5]/6", // G#m E G#m E F#m D
  C: "[~@11 [f#4,a4]@16 [d4,f#4]@15 ~ [g#4,b4]@16 [e4,g#4]@16 [g#4,b4]@15 ~ [e4,g#4]@5]/6", // F#m D G#m E G#m E
  D: "[~@11 [f#4,a4]@15 ~ [d4,f#4]@15 ~ [f#4,a4]@15 [d4,f#4]@14 ~@3 d4@6 b4@10 d4@7 b4@8 ~ a3@7 f#4@9 [a3,d4]@5, ~@75 f#4@15 ~ f#4@15 ~ d4@15 ~@6]/8", // F#m D F#m D D5
  E: "[~ f#4@9 ~ d4@6 b4@10 d4@7 b4@8 ~ a3@7 f#4@9 [a3,d4]@5, ~@11 f#4@15 ~ f#4@15 ~ d4@15 ~@6]/4", // D5
  F: "[~@11 [f#4,a4]@16 [d4,f#4]@15 ~@6]/3", G: "g#4@3 a4@5, e4", H: "[e4,g#4]@5 ~ [e4,f#4]@10",
  I: "[e4,g#4]@6 [e4,a4]@9 ~", J: "g#4@6 f#4@9 ~, e4@15 ~", K: "[e4,g#4]@6 [e4,f#4]@9 ~", L: "g#4@6 a4@9 ~, e4@15 ~",
  M: "[[f#4,a4]@31 ~]/2", N: "[e4,g#4]@6 [e4,a4]@9 ~, ~@3 g#4@3 ~@2", O: "g#4@3 a4@5, e4@15 ~",
  P: "g#4@3 f#4@3 ~@2, e4@3 ~", Q: "g#4@6 a4@9 ~, e4@7 ~", R: "[f#4,a4]", S: "[e4,a4]@15 ~", T: "[f#4,a4]@15 ~",
  U: "[f#4,a4]@3 ~", // F#m
})).s("gm_synth_strings_1").gain(0.24).pan(0.6)

// other · percussive organ
const percussive_organ = note("<~@16 A@2 B@2 C@2 D@2 A@2 E@2 F@2 D@2 ~@8 G@2 H@2 C@2 I@2 ~@67>".pickRestart({
  A: "[~@7 b4@4 a4@3 g#4@11 ~@2 g#4@5, ~@7 a#4 ~@24]/2", B: "[~ a4@5 ~ b4@4 a4@3 g#4@9 ~@4 g#4@5, ~@7 a#4 ~@24]/2",
  C: "[~ a4@6 b4@4 c#5@4 f#4@2 a4@4 b4@6 ~@5]/2", D: "[~@9 d5@2 c#5@4 f#4@2 a4@4 b4@6 ~@5]/2",
  E: "[~ a4@6 b4@4 a4@3 g#4@10 ~@3 g#4@5, ~@7 a#4 ~@24]/2", F: "[~ a4@6 b4@4 c#5@4 f#4@2 a4@4 b4@5 ~@6]/2",
  G: "[~@7 b4@4 a4@3 g#4@11 b3@2 g#4@5, ~@7 a#4 ~@24]/2", H: "[~ a4@5 ~ b4@4 a4@3 g#4@11 b3@2 g#4@5, ~@7 a#4 ~@24]/2",
  I: "[~@9 d5@2 c#5@4 f#4@2 a4@4 b4@9 ~@2]/2",
})).s("gm_percussive_organ").gain(0.72)

// other · percussive organ · soft notes
const percussive_organ_soft = note("<~@17 A ~ A ~@5 B ~ A ~@18 C ~@68>".pickRestart({
  A: "~@9 b3 ~@6", B: "~@9 b3@2 ~@5", C: "~@9 c#5 ~@6",
})).s("gm_percussive_organ").gain(0.4)

// other · percussive organ
const percussive_organ_2 = note("<~@56 A@4 B@4 C@2 D@2 E@4 C@2 F@8 G@8 F@16 G@8 H>".pickRestart({
  A: "[e4@63 ~]/4", B: "[~ f#4, e4@9 ~@7]/4", C: "e4/2", D: "[e4@31 ~]/2", E: "[~ f#4, e4@35 ~@29]/4",
  F: "[e4@127 ~]/8", G: "e6/8", H: "[e2,e3,e6]",
})).s("gm_percussive_organ").gain(0.28)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@8 A@2 B@8 C@8 D@7 E@7 F@6 G@3 ~@66>".pickRestart({
  A: "[~@11 b2 b3@14 b2 [f#3,b3]@5, ~@11 f#3@14 ~@7]/2", // B5
  B: "[~@10 [d#3,f#3] [a3,d4]@15 d3 [a3,d4]@15 [b2,d3] [f#3,b3]@15 b2 [f#3,b3]@15 [d#3,f#3] [a3,d4]@15 [d3,f#3] [a3,d4]@15 ~ [b3,e4]@21]/8", // D#m D5 Bm B5 D#m D5 D D5 …
  C: "[~@10 [b2,e3] e4@31 [f#3,a3] [c#4,f#4]@16 [d4,f#4]@14 ~ [f#3,a3] [c#4,f#4]@15 ~ [d4,f#4]@15 b2 [b3,e4]@21, ~@10 b3@31 ~@66 e3 ~@20]/8", // E5 F#m F#5 D F#m F#5 D E5
  D: "[~@10 [b2,e3] [b3,e4]@31 [f#3,a3] [c#4,f#4]@15 ~ [d4,f#4]@15 [f#3,a3] [c#4,f#4]@15 ~ [d4,f#4]@15 ~@2 b3@4, ~@107 f#3@5]/7", // E5 F#m F#5 D F#m F#5 D
  E: "[~@10 b2 [f#3,b3]@15 [d#3,f#3] [a3,d4]@15 d3 [a3,d4]@15 [b2,d#3] [f#3,b3]@15 b2 [f#3,b3]@15 [d#3,f#3] [a3,d4]@15 [d3,f#3] [a3,d4]@5]/7", // B5 D#m D5 B B5 D#m D5 D …
  F: "[~@11 [b3,e4]@30 ~ [b2,e3] e4@31 [f#3,a3] [c#4,f#4]@16 [d4,f#4]@5, ~@42 b3@31 ~@23]/6", // E5 F#m F#5 D
  G: "[~@10 [f#3,a3] [c#4,f#4]@15 ~ [d4,f#4]@15 ~@6]/3", // F#m F#5 D
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.8)

// other · recorder
const recorder = note("<~@48 A B C D E@6 ~@57>".pickRestart({
  A: "~@11 d2 e2@2 e2@2, ~@14 d2 ~", B: "d2 e2@2 d2 e2@2 d2 ~ d2 e2@2 d2 e2@2 e2@2, ~@7 e2@2 ~@5 d2 ~",
  C: "d2 e2@2 d2 e2@2 d2 ~ d2 e2@2 d2 ~ d2 e2@2, ~@7 e2@2 ~@3 e2@2 ~@2",
  D: "d2 e2@2 d2 e2@2 e2@2 d2 e2@2 d2 ~ d2 e2@2, ~@6 d2 ~@5 e2@2 ~@2",
  E: "[d2 e2@2 ~ e3@2 d3 e3 ~ [d3,e3] ~ d3 e3@2 d3 e3 d3 e3@2 e3@2 d3 e3@2 d3 e3@2 d3 e3@2 e3@2 ~ d3 ~@62, ~ e6@23, ~@4 d3 ~@14 d3 ~@10 d3 ~@65]/6", // Dsus2
})).s("gm_recorder").gain(0.32)

// bass · synth bass 2
const bass_2 = note("<A@8 ~@107>".pickRestart({
  A: "[~@11 g2@4 g1@3 ~ g1@8 g2@4 g1@3 ~ g1@8 g2@4 g1@3 ~ g1@8 g2@4 g1@3 ~ g1@8 g2@4 g1@3 ~ g1@8 g2@4 g1@3 ~ g1@8 g2@4 g1@3 ~ g1@8 ~@5]/8",
})).s("gm_synth_bass_2").gain(0.11)

// other · distortion guitar
const distortion_guitar_2 = note(`<
  ~@58 A B C D A E F@2 C G C H I J K ~ L M@2 N@2 O@2 P@2 Q R ~ S@2 T ~ U V U W U X Y ~ Z AA@2 AB@2 AC AD AE AF@2 AG@2 U
  AH AI@2 ~
>`.pickRestart({
  A: "~@10 f#4@3 ~ f#4@2", B: "f#4@3 e4@3 b3@3 e4@7", C: "~@10 f#4@3 f#4@2 ~", D: "f#4@3 e4@3 b3@3 e4@5 ~@2",
  E: "~ f#4@2 f#4@2 ~ g#4@2 f#4@6 e4@2, ~@8 g#4 ~@7", F: "[~ g#4@2 f#4@2 ~ e4@2 b3@2 ~ e4@9 ~@12]/2",
  G: "f#4@2 ~ e4@3 b3@3 e4@7", H: "f#4@3 e4@3 b3@4 e4@5 ~", I: "~@10 f#4@2 ~ f#4@2 ~",
  J: "f#4@2 ~@2 g#4 ~ g#4@2 f#4@6 e4@2, ~@3 f#4@2 ~@11", K: "g#4@3 f#4@2 e4@2 ~ b3@2 e4@6", L: "~@5 g#5@2 ~ f#5@3 e5@5",
  M: "~@4 g#5@2 ~ f#5@3 e5@5 ~", N: "[a5@2 ~ g#5@2 ~ f#5@3 ~ g#5@3 ~ e5@5 ~ g#5@2 ~ f#5@3 ~ e5@5]/2",
  O: "~@2 e5 ~ g#5@2 ~ f#5@2 ~ e5@5 ~", P: "[a5@3 ~ g#5@2 ~@2 f#5@2 ~@2 e5@2 f#5@4 e5@2 d5@5 ~@7]/2",
  Q: "~@10 f#5@3 ~ f#5 ~", R: "f#5@3 e5@3 b4@2 e5@7 ~", S: "[f#5!2 ~ f#5 ~ f#5 ~ f#5@2 e5 ~ e5@7 ~@14]/2",
  T: "g#5@2 f#5 ~ e5@6 ~@6", U: "~@10 f#5@2 ~ f#5@2 ~", V: "f#5@2 ~ e5@2 ~ b4@3 e5@6 ~", W: "f#5@2 ~ e5@2 ~ e5@9 ~",
  X: "f#5@3 e5@2 ~ e5@9 ~", Y: "g#5@2 f#5 e5@13", Z: "~@2 g#5 f#5@2 e5@3",
  AA: "[~@2 e5 ~ g#5@3 f#5@3 e5@8 ~@2 g#5@2 f#5@4 e5@6]/2", AB: "[a5@4 g#5@2 f#5@4 g#5@4 e5@5 ~ g#5@2 f#5@4 e5@6]/2",
  AC: "~@2 e5 ~ g#5@2 f#5@4 e5@6", AD: "~@2 e5 ~ g#5@2 f#5@4 e5@5 ~", AE: "a5@3 ~ g#5@2 f#5@3 ~ g#5@2 e5@4",
  AF: "[f#5@20 ~@6 f#5@3 ~ f#5 ~]/2", AG: "[f#5@3 e5@2 ~ e5@21 ~@5]/2", AH: "f#5@5 e5@3", AI: "[g#5@2 f#5 e5@21 ~@8]/2",
})).s("gm_distortion_guitar").gain(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@8
  [~@11 x ~ x ~@2]
  [~ x!2 ~@2 x ~@5 x ~ x ~@2]!39
  [~ x!2 ~@2 x ~@10]
  ~@5
  [x ~@2 x ~@2 x ~@2 x!2 ~@2 x!2 ~]!60
  ~
>`).gain(0.72)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B C B C B C B C B@3 C B C B C B C B C B@3 C B C B C B C B C B@3 C@4 D ~@5 E F E F E@3 F E F E F E F E F E F E F
  E F E F E F@3 E F E F E F E F E F E F E@3 F E F E F E@12 ~
>`.pickRestart({
  A: "~@13 x ~ x", B: "~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x", C: "~ x!3 ~ x ~ x ~ x ~@3 x ~ x", D: "~ x!3 ~ x ~ x ~ x ~@6",
  E: "~@2 x!2 ~ x!4 ~ x!2 ~ x!3", F: "x ~ x!2 ~ x!4 ~ x!2 ~ x!3",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@9 [~ x]!40 ~@5 [~ x ~@7 x ~@6]!60 ~>").gain(0.24)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@10 A ~ A ~@3 B ~@3 B ~@3 B ~@7 B ~@7 C ~@3 C ~@3 D ~@8 E ~@3 F ~@3 G ~@7 F ~@3 E ~@3 E ~@3 F ~@3 E ~@3 E ~@3 E ~@3 H
  ~ I ~ J ~ F ~ F ~ I@2 K ~
>`.pickRestart({
// … 63 more lines

More by U2