Strudelify

Walk On

U2

KeyD majorTempo100 bpm
0:00/0:00
// Walk On — U2
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(100/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
const bass = note(`<
  ~@9 A B C D A B C D A B C E A B C E A B C E A B E@2 A B C D A B C D A B C E A B C E A B C E A B E@2 A B C D A B C D A
  B F G H C E B H C E B@3 I A J C@2 A J C@2 A J F G A B F G F K L M F K L M F K L M F K L M F K L M F K L N O
>`.pickRestart({
  A: "d2@3 d2@2 d2@3", B: "a1@3 a1@2 a1@3", C: "g1@3 g1@2 g1@3", D: "e2@3 e2@2 e2@3", E: "e1@3 e1@2 e1@3",
  F: "e1@3 e1@2 e1@2 e1", G: "e1!8", H: "b1@3 b1@2 b1@3", I: "a1@3 a1@2 a1!3", J: "c#2@3 c#2@2 c#2@3",
  K: "g1@3 g1@2 g1@2 a1", L: "d2@3 d2@2 d2@2 d2", M: "a1@6 a1@4 a1@2 a1@2 a1 g1", N: "a1!8", O: "d2!2 ~@6",
})).s("gm_electric_bass_finger").gain(0.64)

// other · overdriven guitar
const overdriven_guitar = note("<~@69 A B C D E F@2 G H I@3 ~@40>".pickRestart({
  A: "~ g4 a4 b4", B: "b4@6 b4@9 ~", C: "d5@2 c#5@2 b4 ~ c#5@8 b4@2", D: "a4@3 g4 f#4@2 f#4@2", E: "f#4 g4 a4 b4",
  F: "[b4@3 b4@3 d5 b4@4 g#4 g#4@2 b4@2]/2", G: "c#5@3 b4@2 a4!3", H: "d5@4 c#5@2 b4@4 c#5@4 c#5!2",
  I: "[d5@2 c#5 b4@2 a4@2 f#4@2 f#4 e4 d4 f#4@2 e4 d4@9]/3",
})).s("gm_overdriven_guitar").gain(0.66)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@8 A B@7 C D@2 E@2 F G@3 H@2 I@2 J K L@2 B@7 C D@2 E@2 F G@3 H@2 I@2 J K L@2 B@7 C B@2 M N ~@11 B@10 C@2 B@2 O@2 P Q
  R S P T U V P T W S P T X V P T X S P T X V Y
>`.pickRestart({
  A: "~@7 d4", B: "d4 f#4 d4 e5@2 a4@2 d4", C: "d4 g#4 d4 e5@2 b4@2 d4", D: "[f#3@2 a3@20 a3@4 f#3@2 a3 f#3 a3 f#3]/2",
  E: "[[g3,b3]@21 ~ b3@2 [g3,b3]@2 [f#3,b3]@2 ~@2 [g3,b3]@2]/2", F: "[f#3,a3]@7 f#3",
  G: "[a3@3 g3@2 f#3@2 f#3@2 e3@4 d3@10 f#3]/3", H: "[a3@21 ~ f#3@4 b3@6]/2", I: "[b3@7 b3@2 a3@2 b3@4 f#3]/2",
  J: "a3@7 f#3", K: "a3@12 a3 ~@3", L: "[b3@7 a3@2 b3@2 g#3@2 e3@2 d4]/2", M: "d4 g#4 d4 e5@2 b4@3",
  N: "b4 g#4!2 e5@2 b4@3", O: "[d4 b4@2 e5@2 b4 g#4 e5@2 b4 g#4 e5 b4!2 g#4 ~]/2",
  P: "e4@2 e4@2 f#4@2 d4@4 d4@2 d4@2 b3 d4", Q: "e4!2 f#4 d4@2 e4 d4@2", R: "e4@2 f#4 d4@2 e4 d4!2",
  S: "d4 c#4!2 b3!2 a3!2 b3", T: "e4!2 f#4 d4@2 d4@2 d4", U: "e4!2 f#4 d4@2 e4@2 d4", V: "d4 c#4!2 d4!2 e4!3",
  W: "e4!2 f#4 d4@2 e4 d4!2", X: "e4!2 f#4 d4@2 d4!3", Y: "d4!2 ~@6",
})).s("gm_distortion_guitar").gain(0.16).pan(0)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~@12 A ~@3 B ~@3 C ~@3 D ~@3 C ~@15 C ~@3 D ~@3 C ~@14 E ~ F G H I F G H I@2 ~ J ~@10 E ~@3 E ~@4 K ~@3 K ~@3 K ~@3 K
  ~@3 K ~@5
>`.pickRestart({
  A: "~@3 [e3,b3,e4]@2 [e3,b3,e4] ~ [e3,b3,e4]", B: "~@5 [e3,b3,e4] ~@2", C: "~@14 [a3,d4]!2", D: "~@13 [a3,d4]!3",
  E: "~@6 [e3,b3,e4] ~", F: "~@3 [b2,f#3]@5", G: "d3@3 [g2,d3]@5", H: "~@3 [e2,b2]@5", I: "~@3 [a2,e3]@5",
  J: "[a2,e3]@2 ~@3 [a2,e3] ~@2", K: "~@3 [a2,e3,a3]@2 ~ [a2,e3,a3] ~",
})).s("gm_distortion_guitar").gain(0.13).pan(1)

// chords · piano
const piano = note(`<
  ~ A B@3 C@4 D E F G H I F J K@2 ~@6 L M N O D I P Q D E F G H I F J K@2 ~@6 D I R O L I S@2 T U V W T X V Y Z AA J AB
  AC@2 G M AC@2 G M@3 AD D E F G D E F G Z AA J AB Z AA J AB G AE AF M G AE AF M G AE AF M G AE AF M G AE AF M G AE AG
  AH AI
>`.pickRestart({
  A: "[d2,d3,d4,f4,a4]@15 ~", // Dm
  B: "[[c2,c3,c4,e4,g4]@9 ~ [c4,e4,g4]@3 ~@25 g4@4 [b3,d4,g4]@5 ~, ~@10 [c2,c3]@4 [b3,d4,g4]@16 d3@17 ~, ~@16 g2@31 ~, ~@16 g3@16 g3@15 ~, ~@38 d5@9 ~]/3", // C G C G
  C: "[[d3,d4,f4,a4]@10 ~@2 [d4,f4,a4] ~@3 [c2,c3]@5 ~@3 [c4,e4,g4] ~ [c4,e4,g4]@3 ~@3 g3@10 g3@6 g3@6 [g3,g4]@4 [g3,d4,g4,b4]@5 ~, d2@14 [c4,e4,g4]@9 ~@7 [b3,d4,g4]@17 ~ d3@15 ~, ~@10 d3@5 ~@7 [c2,c3]@9 ~ g2@31 ~, ~@54 d5@9 ~]/4", // Dm C G C G C
  D: "[d4,f#4,a4]@15 ~", E: "[c#4,e4,a4]@11 ~ [c#4,e4,a4]@3 ~", F: "[b3,d4,g4]@15 ~",
  G: "[e4,g4,b4]@5 ~ [e4,g4,b4]@9 ~", H: "[d4,f#4,a4]@9 ~ [d4,f#4,a4]@5 ~", I: "[c#4,e4,a4]@15 ~",
  J: "[e4,g#4,b4]@5 ~ [e4,g#4,b4]@3 ~ [e4,g#4,b4] ~ [e4,g#4,b4]@3 ~", K: "[[a3,d4,f#4]@31 ~]/2",
  L: "[d4,f#4,a4]@5 ~ [d4,f#4,a4]@9 ~", M: "[c#4,e4,a4]@5 ~ [c#4,e4,a4]@9 ~",
  N: "[b3,d4,g4]@5 ~ [b3,d4,g4]@3 ~ [b3,d4,g4]@5 ~", O: "[e4,g4,b4]@5 ~ [e4,g4,b4]@3 ~ [e4,g4,b4]@5 ~",
  P: "[e4,g#4,b4]@15 ~", Q: "[e4,g#4,b4]@5 ~ e4@3 ~ e4@2 e4@4, ~@6 [b3,g#4]@9 ~", R: "[b3,d4,g4]@11 ~ [b3,d4,g4]@3 ~",
  S: "[[e4,g#4,b4]@13 ~ [e4,a4,b4]@7 ~ [e4,g#4,b4]@5 ~ [e4,g#4,b4]@3 ~]/2", // E Esus4 E
  T: "[d4,f#4,a4]@5 ~ [d4,f#4,a4]@5 ~ [d4,f#4,a4]@3 ~", U: "[c#4,e4,a4]@9 ~ [c#4,e4,a4]@5 ~",
  V: "[b3,d4,g4]@5 ~ [b3,d4,g4]@5 ~ [b3,d4,g4]@3 ~", W: "[e4,g4,b4]@5 ~ [e4,g4,b4]@5 ~ [e4,g4,b4]@3 ~",
  X: "[c#4,e4,a4]@5 ~ [c#4,e4,a4]@5 ~ [c#4,e4,a4]@3 ~", // A
  Y: "[b3,e4,g#4]@5 ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4]@4 [b3,e4,g#4] ~", // E
  Z: "[d4,f#4,a4]@5 ~ [d4,f#4,a4]@3 ~ [d4,f#4,a4]@5 ~", AA: "[c#4,e4,a4]@5 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@5 ~",
  AB: "[e4,g#4,b4] ~ [e4,g#4,b4]@3 ~ [e4,g#4,b4]@3 ~ [e4,g#4,b4] ~ [e4,g#4,b4]@3 ~", // E
  AC: "[d4,f#4,b4]@5 ~ [d4,f#4,b4]@9 ~", // Bm
  AD: "[c#4,e4,a4]@5 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // A
  AE: "[d4,g4,b4]@5 ~@3 [d5,d6]@4 [c#5,c#6]@4, ~@6 [d4,g4,b4]@9 ~", AF: "[d4,f#4,a4,a5]@5 ~ [d4,f#4,a4]@9 ~",
  AG: "[d4,f#4,a4,a5]@5 ~ [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~ [d4,f#4,a4] ~", // D
  AH: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // A
  AI: "[f#4,a4,d5] ~ [f#4,a4,d5] ~@13", // D
})).s("gm_piano").gain(0.52).pan(0)

// other · pad bowed
const pad_bowed = note("<~ A@2 B@2 C@2 B@2 ~@112>".pickRestart({
  A: "[~@4 a4@2 d4@4 a4@2 d4@2 d4@5 ~ a4@2 d4@4 a4@2 d4@2 a3@2]/2",
  B: "[d4@4 a4@2 d4@2 a4@2 a4@2 d4@2 d4@5 ~ a4@2 d4@4 a4@2 d4@2 a3@2]/2",
  C: "[d4@4 a4@2 d4@4 a4@2 d4@2 d4@5 ~ a4@2 d4@4 a4@2 d4@2 a3@2]/2",
})).s("gm_pad_bowed").gain(0.31).pan(1)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@9 A B C D E F G H I B C J K B L M A N C J A O P@2 Q R S T U V G W I B C J K B L M A N C J A O P@2 Q R S T U X Y Z AA
  AB AC AD AE AF AG AH AI AF AJ AH@2 AK@2 Q R S T Q R S T AA AB AC AD AA AB AC AD AL AM AN AO AL AM AN AO AL AM AN AO AL
  AM AN AO AL AM AN AO AL AM AN AP AQ
>`.pickRestart({
  A: "[a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@3 [a3,d4,f#4]!3 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  B: "[a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2", // A
  C: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4]!3 [b3,d4,g4]@2 [b3,d4,g4]@2", // G
  D: "[g3,b3,e4]@4 [g3,b3,e4]@4 [g3,b3,e4] [g3,b3,e4]@3 [g3,b3,e4]@4", // Em
  E: "[a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!6 [a3,d4,f#4]@2", // D
  F: "[a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]!3 [a3,c#4,e4]@2 [a3,c#4,e4]!2", // A
  G: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2", // G
  H: "[g#3,b3,e4]!4 [g#3,b3,e4]@2 [g#3,b3,e4]!2", // E
  I: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@5 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  J: "[g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2", // Em
  K: "[a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  L: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4]!5 [b3,d4,g4]@2", // G
  M: "[g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@3 [g3,b3,e4]!3 [g3,b3,e4]@2 [g3,b3,e4]@2", // Em
  N: "[a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]!7", // A
  O: "[a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]@2 [a3,c#4,e4]!3 [a3,c#4,e4]@2", // A
  P: "[[g#3,b3,f#4]@3 [g#3,b3,f#4] [g#3,b3,f#4]@2 [g#3,b3,f#4]@4 [g#3,b3,f#4]@2 [g#3,b3,f#4]@2 [g#3,b3,f#4]@4 [g#3,b3,f#4]@2 [g#3,b3,f#4]@2 [g#3,b3,f#4]@2 [g#3,b3,f#4]@2 [g#3,b3,f#4]@2 [g#3,b3,f#4]@2 [g#3,b3,f#4]@2]/2", // G#m7
  Q: "[a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  R: "[a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2", // A
  S: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!4 [b3,d4,g4]@2 [b3,d4,g4]!2", // G
  T: "[g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2 [g3,b3,e4]@2 [g3,b3,e4]!4", // Em
  U: "[a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  V: "[a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]!2", // A
  W: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]!2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]!2", // E
  X: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]!3 [a3,c#4,e4]@2 [a3,c#4,e4]!2", // A
  Y: "[b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!2", // G
  Z: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]!4 [g#3,b3,e4]@2 [g#3,b3,e4]!2", // E
  AA: "[a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2", // D
  AB: "[a3,c#4,e4]@2 [a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2", // A
  AC: "[g#3,b3,e4]@3 [g#3,b3,e4]!3 [g#3,b3,e4]@4 [g#3,b3,e4]@4 [g#3,b3,e4]@2", AD: "[g#3,b3,e4]!8",
  AE: "[b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@4 [b3,d4,f#4]@2 [b3,d4,f#4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]!2", // Bm
  AF: "[g3,b3,f#4]@2 [g3,b3,f#4]@2 [g3,b3,f#4]@4 [g3,b3,f#4]@2 [g3,b3,f#4]!2 [g3,b3,f#4]@2 [g3,b3,f#4]!2", // Gmaj7
  AG: "[g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@4 [g3,b3,e4]@2 [g3,b3,e4]!2 [g3,b3,e4]@2 [g3,b3,e4]@2", // Em
  AH: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]@2", // A
  AI: "[b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@4 [b3,d4,f#4]@2 [b3,d4,f#4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]@2", // Bm
  AJ: "[g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@4 [g3,b3,e4]@2 [g3,b3,e4]!2 [g3,b3,e4]@2 [g3,b3,e4]!2", // Em
  AK: "[[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4]@2]/2", // A
  AL: "[g3,b3,e4]@2 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]!3", AM: "[b3,d4,g4]!3 [b3,d4,g4]@2 [b3,d4,g4]!3",
  AN: "[a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  AO: "[a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]", AP: "[a3,c#4,e4]!8", AQ: "[a3,d4,f#4]!2 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.48)

// other · piano
const piano_2 = note(`<
  ~@33 A B C@2 A B C@2 ~@16 A B C@2 A B C@2 A B C@2 ~@11 D@2 ~ E@3 ~ E@3 ~@2 A B F@2 ~@24 G
>`.pickRestart({
  A: "d4", B: "c#4", C: "[b3@7 ~]/2", D: "[a4@3 ~]/2", E: "[~@7 a4@13 ~@4]/3", F: "b3/2", G: "~@14 [e4,a4,f5,g#5] ~",
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 B C@3 D E F@3 E F@3 E G D@4 F D@10 F@3 E F@3 E G D@4 F D@10 F@3 E F@3 E F@3 E D@11 F@3 E F@3 E F@3 E F@3 E F@3 E
  F@3 E F@3 E F@3 E F@3 E F@3 E H
>`.pickRestart({
  A: "x ~ x!2 ~ x ~@2 x ~@7", B: "x ~ x!2 ~ x ~@2 x ~@5 x ~", C: "x ~@2 x ~@2 x ~@3 x ~@2 x ~@2",
  D: "x ~@2 x ~@2 x ~@3 x ~@5", E: "x ~@2 x ~@2 x ~ x ~ x ~ x ~ x ~", F: "x ~@2 x ~@2 x ~@3 x ~@3 x ~",
  G: "x ~@2 x ~ x ~@2", H: "x!2 ~@6",
})).gain(0.56)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A@3 B C D E D F ~@3 G ~@3 H ~@7 E ~ I H I H@2 I ~@4 G ~@3 H ~@7 E ~ I H@2 I H I ~@4 I ~@3 H ~@3 H@2 I@2 H I@2 H@2 I@2
  ~@4 G ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~
>`.pickRestart({
  A: "~@11 x!2 ~@3", B: "~@11 x ~ x ~ x", C: "~@7 x ~@8", D: "~@7 x ~@7 x", E: "~@15 x", F: "~@7 x ~@2 x!2 ~@4",
  G: "~@9 x ~@4 x ~", H: "~@11 x ~@2 x ~", I: "~@7 x",
})).gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@25 A B@6 C ~@16 A B@6 C ~@12 B@10 C ~@41>".pickRestart({
  A: "~@13 x!2 ~", B: "~@13 x!3", C: "~@7 x ~@8",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A B C@3 D E F@2 G E H@2 I ~ C@3 A@3 J ~@8 E F@2 G E H@2 I ~ C@3 A@3 J ~@8 E F@2 G E H@2 I E H@2 I ~@11 E F@2 G E
  H@2 I E H@2 I E H@2 I E H@2 I E H@2 I E H@2 I E H@2 I E H@2 I E H@2 I ~
>`.pickRestart({
  A: "~@13 x!2 ~", B: "x ~@6 x", C: "~@7 x", D: "~@4 x ~ x!2", E: "~@2 x ~@3 x ~ x!3 ~@3 x ~",
  F: "x ~ x ~@3 x ~ x!3 ~@3 x ~", G: "x!2 ~ x!5", H: "x ~ x ~@3 x ~ x!3 ~@2 x!2 ~", I: "x!2 ~ x!4 ~", J: "~@9 x!2 ~@5",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@4 A ~@3 A ~@3 A ~@7 B@7 A@2 ~@3 A ~@3 A ~@7 B@7 A@2 ~@3 A ~@3 A ~@3 B@10 A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@3 C
// … 16 more lines

More by U2