Strudelify
Pride cover art

The Unforgettable Fire

Pride

U2

KeyB majorTempo106 bpm
0:00/0:00
// Pride — U2
// 106 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(106/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 · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A@5 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 ~@8 B@2 C@2 B@2 C@2 D@8 B@2 C@2 ~@12 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2
  C@2 B@2 C@2 B@2 C@2 B@2 C@2 E
>`.pickRestart({
  A: "[~@14 [b4,e5]@8 [e4,a4]@7 ~ [a4,d5]@13 ~@3 [b4,e5]@7 ~ [e4,a4]@6 ~@2 [a4,d5]@13 ~@5]/5", // E5 A5 D5 E5 A5 D5
  B: "[[f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@9 e4@2, ~@2 f#4@3 [f#4,b4]@2 ~ f#4@2 ~ b4@2 b4@2 ~ f#4@2 f#4@3 ~ e4@2 f#4@2 e4@2 f#4@2 ~@2, ~@6 e4@2 ~@2 e4@2 f#4@2 ~ [e4,b4]@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2 b4@3]/2", // B5 E5
  C: "[a4@2 ~ c#5@2 ~@2 c#5 a4!2 g#4@2 a4 ~ g#4 ~@4 c#5 ~ [a4,c#5] g#4@2 a4 [a4,c#5] [f#4,g#4] ~@3 g#4@2, e4@4 e4@2 e4@2 [f#4,a4] [f#4,a4]@2 f#4@2 ~ f#4@2, ~@2 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@2 c#5@2 ~@9 a4@2 ~@2, ~@6 g#4@2 ~@7 g#4@2 ~@10 [g#4,c#5]@2 c#5@3]/2", // A F#sus2 F#m A C#5
  D: "~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 ~ d#5 ~ d#5, [b3,d#5] [b3,f#5] [b3,e5] [b3,d#5] [b3,f#5] [b3,e5] [b3,d#5]!2", // B B5 E5 B B5 E5 B
  E: "[e4,b4]", // E5
})).s("gm_overdriven_guitar").gain(0.38).pan(0.3)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~@5 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 ~@8 A B C@2 A B C@2 ~@8 A B C@2 ~@12 A B C@2 A B C@2 A B C@2 A B C@2 A B
  C@2 A B C@2 A B C@2 A B C@2 ~
>`.pickRestart({
  A: "~@4 b4 ~@3", B: "~@5 f#4@2 ~@9", C: "[c#5@2 c#5 ~@6 c#5 ~ c#5!2 c#5@2 c#5@2 ~@5 c#5@3 ~ c#5 ~@5, ~@5 c#5 ~@10]/2",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.3)

// bass · slap bass 2 · "SLAPBASS 2"
const bass = note(`<
  ~ A@4 B C D E F G H I J G H K L G M I J G H N J G O P Q R H I J G H N J G H N S T U V W X Y Z J G H I J AA H I J G H I
  J AA H I J G H I J G H I J G H I AB G H I J G H I AB G H I J G H I AB G H I AC
>`.pickRestart({
  A: "a1!16", B: "b1@2 b1@2 b1@2 b1!2 b1@2 b1!2 b1@2 b1@2", C: "e1@2 e1@2 e1@2 e1!2 e1@2 e1!4 e1@2",
  D: "a1@2 a1@2 a1@2 g#1!2 a1@2 g#1 a1 a1@2 a1@2", E: "f#1@2 f#1@2 f#1@2 f#1!2 f#1@2 f#1!3 f#1@3",
  F: "b1@2 b1 ~ b1@2 b1!2 b1@2 b1!2 b1@2 b1@2", G: "e1@2 e1@2 e1@2 e1!2 e1@2 e1!6",
  H: "a1@2 a1@2 a1@2 a1!2 a1@2 a1!2 a1@2 a1@2", I: "f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1!2 f#1@2 f#1@2",
  J: "b1@2 b1@2 b1!2 b1@2 b1@2 b1!2 b1@2 b1@2", K: "f#1@2 f#1@2 f#1 ~ f#1 ~ f#1@2 f#1!2 f#1@2 f#1@2",
  L: "b1 ~ b1 ~ b1!2 b1@2 b1@2 b1!2 b1@2 b1@2", M: "a1@2 a1 ~ a1@2 a1!2 a1@2 a1!2 a1@2 a1@2",
  N: "f#1@2 f#1 ~ f#1@2 f#1@2 f#1@2 f#1!2 f#1@2 f#1@2", O: "a1 ~ a1@2 a1 ~ a1!2 a1@2 a1!2 a1@2 a1@2",
  P: "f#1@2 f#1@2 f#1 ~ f#1@2 f#1@2 f#1!2 f#1@2 f#1@2", Q: "b1@2 b1 ~ b1!2 b1@2 b1@2 b1!3 ~ b1@2",
  R: "e1@2 e1@2 e1@2 e1!3 ~ e1!6", S: "b1@2 b1@2 b1@2 a1 a#1 b1@2 a1 b1 b1@2 b1@2",
  T: "d2@2 d2@2 d2@2 c2 c#2 d2!2 c#2 d2@2 d2!3", U: "e1@2 e1@2 e2@2 d2 d#2 e2@2 d2 d#2 e2@2 e2@2",
  V: "e1@2 e1@2 e2@2 d2 d#2 e2!2 d2 d#2 e2@2 a1@2", W: "b1@2 b1@2 b1@2 a1 a#1 b1!2 a1 a#1 b1@2 b1@2",
  X: "d2@2 d2@2 d2@2 c2 c#2 d2@2 c2!2 d2@2 d2@2", Y: "e1 ~ e1@2 e2@2 d2 d#2 e2@2 d2 d#2 e2@2 e2@2",
  Z: "e1 ~ e1@2 e2@2 d2 d#2 e2!2 d2 d#2 e2@2 a1@2", AA: "e1 ~ e1@2 e1@2 e1!2 e1@2 e1!6",
  AB: "b1@2 b1@2 b1!2 b1@2 b1@2 b1!3 ~ b1@2", AC: "e1",
})).s("gm_slap_bass_2").gain(0.49)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~ A B C A ~@20 D@2 E@2 D@2 E@2 ~@20 D@2 E@2 D@2 E@2 D@2 E@2 ~@33>".pickRestart({
  A: "a3 b3 ~ a3 b3!2 a3 b3!2 a3 ~ b3 a3 b3!2 a3", B: "b3!2 ~ b3!2 a3 b3!2 a3 b3 ~ a3 b3!2 a3 b3",
  C: "b3 a3 ~ b3 a3 b3!2 a3 b3!2 ~ b3!2 a3 b3!2",
  D: "[~@5 b3@9 ~@2, b2@31 ~, ~ f#3@14 ~, ~@3 e4@8 ~@5, ~@8 d#4@17 ~@7]/2",
  E: "[~@5 c#4@7 ~@4, a2@31 ~, ~@2 e3@27 ~@3, ~@3 e4@7 ~@6, ~@4 b3@9 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.7)

// other · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~
  [~@2 b3 ~@7 b3 ~@5]
  [~@2 a3 ~@7 b3 ~@5]
  [~@2 b3 ~@7 a3 ~@5]
  [~@2 b3 ~@7 b3 ~@5]
  ~@93
>`).s("gm_electric_guitar_clean").gain(0.22).pan(0.7)

// other · french horn · "FR.HORN"
const french_horn = note("<~@64 A@3 ~ B@2 C ~ D@3 ~ E@2 F ~ G H I J K H I L K H I L M N O P Q ~>".pickRestart({
  A: "[~@10 e4@2 e4@2 f#4@9 ~@3 d#4@4 e4@8 ~@10]/3", B: "[~@10 f#4@2 d#4@2 f#4@9 ~@3 d#4@4 e4@2]/2",
  C: "d#4@2 b3@3 ~@11", D: "[~@5 f#4!2 f#4@6 d#4@2 e4@3 ~@6]/3", E: "[~@10 f#4@2 d#4@2 f#4@11 ~ d#4@4 e4@2]/2",
  F: "d#4@2 b3@5 ~@9", G: "~@12 e4@3 ~", H: "e4@2 f#4@3 ~ f#4@3 ~@3 e4@3 ~", I: "e4@2 f#4@3 ~ f#4@3 ~@3 g#4@3 ~",
  J: "g#4@2 f#4@3 ~ f#4@3 ~@3 g#4@2 ~@2", K: "g#4@2 f#4@3 ~ f#4@3 ~@3 e4@2 ~@2", L: "g#4@2 f#4@3 ~ f#4@3 ~@3 g#4@3 ~",
  M: "g#4@2 f#4@2 ~@2 f#4@2 ~@4 e4@3 ~", N: "e4@2 f#4@2 ~@2 f#4@3 ~@3 e4@3 ~", O: "e4@2 f#4@2 ~@2 f#4@3 ~@3 g#4@3 ~",
  P: "g#4@2 f#4@2 ~@2 f#4@3 ~@3 g#4@3 ~", Q: "g#4@2 f#4@3 ~ f#4@3 ~@7",
})).s("gm_french_horn").gain(0.5).pan(0.6)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@49 A B C@2 ~@12 D@2 E@3 F G@3 H I@3 J K@3 L M@3 N O@2 P J Q@2 R F S@2 T>".pickRestart({
  A: "b3@2 f#4@3 ~ f#4 ~ f#4@2 ~@2 b3@2 f#4@2, ~@7 b3@2 ~@2 f#4@2 ~@3",
  B: "~@2 b3@2 f#4@2 ~@2 b3@2 f#4@2 ~ f#4 b3@2, ~ f#4@2 ~@4 f#4@2 ~@7",
  C: "[b3 c#4@2 b3 c#4@2 b3 ~@2 b3 c#4@2 b3 c#4@2 ~, e4@15 ~, g#4@8 f#4@7 ~, ~@7 c#4@2 ~@7]/2",
  D: "[~@16 e4@15 ~, [b3,f#4]@31 ~]/2", // B5
  E: "[g#4@2 f#4@4 a4@3 g#4@4 ~ f#4@18 ~@2 f#4@3 ~@3 f#4@2 ~@4 f#4@2, [b3,c#4]@33 ~@4 f#4@2 ~@4 f#4@2 ~@3, ~@38 b3@5 ~ b3@4]/3", // Bsus2
  F: "~@4 f#4@2 ~@4 f#4@2 ~@2 b3 ~, ~ f#4@2 ~@4 f#4@2 ~@4 f#4@2 ~, ~@2 b3@5 ~ b3@5 ~@3",
  G: "[g#4@2 f#4@3 ~ a4@4 g#4@4 [b3,c#4,f#4]@19 ~ f#4@2 ~@4 f#4@2 ~@4 f#4@2, [b3,c#4]@13 ~@24 f#4@2 ~@4 f#4@3 ~@2, ~@38 b3@5 ~ b3@4]/3", // Bsus2
  H: "~@2 f#4 ~@2 f#4 ~ b3, ~ f#4@2 ~@4 f#4@3 ~@3 f#4@2 ~, ~@2 b3@5 ~ b3@5 ~@3",
  I: "[g#4 f#4@2 a4@2 g#4@2 [b3,c#4,f#4]@10 f#4 ~@2 f#4 ~@2 f#4, [b3,c#4]@13 ~@24 f#4@2 ~@4 f#4@2 ~@3, ~@38 b3@5 ~ b3@4]/3", // Bsus2
  J: "~@2 f#4 ~@2 f#4 ~ b3, ~ f#4@2 ~@4 f#4@2 ~@4 f#4@2 ~, ~@2 b3@5 ~ b3@5 ~@3",
  K: "[g#4@2 f#4@3 ~ a4@4 g#4@4 f#4@19 ~ f#4@3 ~@3 f#4@2 ~@4 f#4@2, [b3,c#4]@34 ~@3 f#4@2 ~@4 f#4@2 ~@3, ~@38 b3@5 ~ b3@4]/3", // Bsus2
  L: "~@2 f#4 ~@2 f#4 ~ b3, ~ f#4@2 ~@4 f#4@2 ~@4 f#4@3, ~@2 b3@5 ~ b3@5 ~@3",
  M: "[g#4@2 f#4@3 ~ a4@4 [b3,c#4,g#4]@4 [b3,c#4,f#4]@20 f#4@2 ~@4 f#4@2 ~@4 f#4@2, [b3,c#4]@10 ~@27 f#4@2 ~@4 f#4@2 ~@3, ~@38 b3@5 ~ b3@4]/3", // C#7 Bsus2
  N: "~@4 f#4@2 ~@4 f#4@2 ~@2 b3 ~, ~ f#4@2 ~@4 f#4@2 ~@4 f#4@3, ~@2 b3@5 ~ b3@5 ~@3",
  O: "[[c#4,g#4]@2 [c#4,f#4]@3 ~ [b3,c#4,a4]@4 [b3,c#4,g#4]@4 [b3,c#4,f#4]@18, b3@3 ~@13]/2", // C#5 F#5 F#m C#7 Bsus2
  P: "~ f#4 ~@2 f#4 ~@2 f#4, ~@5 f#4@2 ~@4 f#4@2 ~@3, ~@6 b3@5 ~ b3@4",
  Q: "[[c#4,g#4] [c#4,f#4]@2 [b3,c#4,a4]@2 [b3,c#4,g#4]@2 [b3,c#4,f#4]@9, b3@3 ~@13]/2", // C#5 F#5 F#m C#7 Bsus2
  R: "~ f#4@2 ~@5 f#4@2 ~@4 f#4@2, ~@4 f#4@2 ~@5 f#4@2 ~@3, ~@5 b3@5 ~@2 b3@4",
  S: "[[b3,g#4]@2 [c#4,f#4]@4 [c#4,a4]@3 ~ [c#4,g#4]@4 [b3,c#4,f#4]@17 ~, c#4 ~ b3@12 ~@18]/2", T: "[g#3,b3,e4]@15 ~",
})).s("gm_pad_sweep").gain(0.38).pan(0.3)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note("<~ A B C B D@6 E@8 F@7 ~@7 G@6 H@8 I@7 ~@11 G@6 E@24 J@2 K>".pickRestart({
  A: "~ [b4,e5]@8 [e4,a4]@7", B: "~ [a4,d5]@13 ~@2", C: "~ [b4,e5]@7 ~ [e4,a4]@6 ~",
  D: "[~ g#4@2 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@9 e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@7 f#4, c#5@3 ~@2 f#4@3 [f#4,b4]@2 ~ f#4@2 ~ b4@2 b4@2 ~ f#4@2 f#4@3 ~ e4@2 f#4@2 e4@2 f#4@2 ~@2 e4@8 e4@4 e4@4 ~@2 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 ~@2 f#4@3 [f#4,b4]@2 ~ f#4@2 ~@2 f#4@2 ~@2 f#4@2 f#4@3 ~@3 f#4@2 ~@3, ~@9 e4@2 ~@2 e4@2 f#4@2 ~ [e4,b4]@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2 b4@3 ~@2 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@11 b4@2 b4@2 ~@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2, ~@63 a4@2 ~@8 e4@2 ~@2 e4@2 ~@3 [e4,b4]@2 ~@5 e4@2 ~@2 e4@2 ~]/6", // B5 F#m A B5 F#m F#sus2 B5 E5 …
  E: "[~ e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@9 e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@7 f#4, b4@3 e4@8 e4@4 e4@4 ~@2 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 ~@2 f#4@3 [f#4,b4]@2 ~ f#4@2 ~@2 f#4@2 ~@2 f#4@2 f#4@3 ~@3 f#4@2 ~@2 f#4@2 ~@20 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 ~@2 f#4@3 [f#4,b4]@2 ~ f#4@2 ~@2 f#4@2 ~@2 f#4@2 f#4@3 ~@3 f#4@2 ~@3, ~@5 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@11 b4@2 b4@2 ~@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2 b4@3 ~@2 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@11 b4@2 b4@2 ~@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2, ~@31 a4@2 ~@8 e4@2 ~@2 e4@2 ~@3 [e4,b4]@2 ~@5 e4@2 ~@2 e4@2 ~@4 e4@8 e4@4 e4@4 ~@12 a4@2 ~@8 e4@2 ~@2 e4@2 ~@3 [e4,b4]@2 ~@5 e4@2 ~@2 e4@2 ~]/8", // F#m A B5 F#m A B5 F#m F#sus2 …
  F: "[~ e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@9 e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 ~@13, b4@3 e4@8 e4@4 e4@4 ~@2 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 ~@2 f#4@3 [f#4,b4]@2 ~ f#4@2 ~@2 f#4@2 ~@2 f#4@2 f#4@3 ~@3 f#4@2 ~@2 f#4@2 ~@20 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 ~@13, ~@5 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@11 b4@2 b4@2 ~@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2 b4@3 ~@2 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@13, ~@31 a4@2 ~@8 e4@2 ~@2 e4@2 ~@3 [e4,b4]@2 ~@5 e4@2 ~@2 e4@2 ~@4 e4@8 e4@4 e4@4 ~@12 a4@2 ~@15]/7", // F#m A B5 F#m A F#m F#sus2 B5 …
  G: "[~@3 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@9 e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@7 f#4, ~@5 f#4@3 [f#4,b4]@2 ~ f#4@2 ~ b4@2 b4@2 ~ f#4@2 f#4@3 ~ e4@2 f#4@2 e4@2 f#4@2 ~@2 e4@8 e4@4 e4@4 ~@2 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 ~@2 f#4@3 [f#4,b4]@2 ~ f#4@2 ~@2 f#4@2 ~@2 f#4@2 f#4@3 ~@3 f#4@2 ~@3, ~@9 e4@2 ~@2 e4@2 f#4@2 ~ [e4,b4]@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2 b4@3 ~@2 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@11 b4@2 b4@2 ~@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2, ~@63 a4@2 ~@8 e4@2 ~@2 e4@2 ~@3 [e4,b4]@2 ~@5 e4@2 ~@2 e4@2 ~]/6", // B5 F#m A B5 F#m F#sus2 B5 E5 …
  H: "[~ e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 ~ d#5 ~ d#5 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 ~ d#5 ~ d#5 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 ~ d#5 ~ d#5 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 ~ d#5 ~ d#5 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 ~ d#5 ~ d#5 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 [b3,d#5], b4@3 e4@8 e4@4 e4@4 ~@2 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 ~, ~@5 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@93, ~@31 a4@2 ~@95]/8", // F#m A B F#m F#sus2 B B5 E5 …
  I: "[d#5 ~ d#5 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 ~ d#5 ~ d#5 ~ e5 ~ d#5 ~ f#5 ~ e5 ~ d#5 ~ f#5 [b3,d#5]@2 ~@2 [f#4,b4]@2 ~ b4@2 ~@2 b4 ~ b4 ~@4 e4 ~@4 b4@2 ~@9 e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~@4 g#4@2 ~@13, ~ [b3,d#5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 [b3,d#5]@2 [b3,f#5]@2 [b3,e5]@2 ~@6 f#4@3 [f#4,b4]@2 ~ f#4@2 ~ b4@2 b4@2 ~ f#4@2 f#4@3 ~ e4@2 f#4@2 e4@2 f#4@2 ~@2 e4@8 e4@4 e4@4 ~@2 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 f#4@4 ~@13, ~@41 e4@2 ~@2 e4@2 f#4@2 ~ [e4,b4]@2 b4@2 ~@2 b4@2 b4@2 b4@2 b4@2 b4@3 ~@2 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@12 g#4@2 c#5@3 ~@13, ~@95 a4@2 ~@15]/7", // B B5 F#m A B B5 E5 B …
  J: "[~ e4@2 a4@2 ~ c#5@2 ~ g#4@2 a4!2 g#4@2 a4 ~ g#4 ~ [f#4,a4]@2 ~ c#5 ~ [a4,c#5] g#4@2 a4!2 ~ g#4@2, b4@3 e4@8 e4@4 e4@4 ~@2 [f#4,a4]@4 f#4@4 [f#4,g#4]@2 ~, ~@5 a4@3 [a4,c#5]@2 ~@6 a4@2 ~@14]/2", // F#m A F#m F#sus2 A
  K: "c#5@3 ~@13",
})).s("gm_overdriven_guitar").gain(0.2).pan(1)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft_2 = note(`<
  ~@5 A B C D A B C D A B C D A B C D A B C D ~@8 A B C D A B C D ~@8 A B C D ~@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 A B C D ~
>`.pickRestart({
  A: "~@11 b4@2 ~@3", B: "~@4 f#4 ~@3", C: "~@10 c#5 ~@3 c#5 ~", D: "c#5@2 g#4 ~ c#5@2 ~@3 c#5@3 c#5 ~ c#5@2",
})).s("gm_overdriven_guitar").gain(0.08).pan(1)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_3 = note("<~ A B C D ~@20 E@8 ~@20 E@8 F@5 ~@32>".pickRestart({
  A: "~@3 a3 b3 ~ a3 b3!2 a3 b3!2 a3 ~ b3 a3", B: "b3!2 a3 b3!2 ~ b3!2 a3 b3!2 a3 b3 ~ a3 b3",
  C: "b3 a3 b3!2 a3 ~ b3 a3 b3!2 a3 b3!2 ~ b3!2", D: "a3 b3!2 a3 b3 ~ a3 b3!2 a3 b3!2 a3 ~ b3 a3",
  E: "[~@13 b3@18 ~@14 c#4@14 ~@18 b3@18 ~@14 c#4@14 ~@5, ~@3 b2@31 ~ a2@31 ~ b2@31 ~ a2@29, ~@5 f#3@28 ~@4 e3@27 ~@5 f#3@28 ~@4 e3@27, ~@9 e4@16 ~@16 e4@14 ~@18 e4@16 ~@16 e4@14 ~@9, ~@11 d#4@17 ~@15 b3@18 ~@14 d#4@17 ~@15 b3@18 ~@3]/8",
  F: "[~@13 b3@18 ~@14 c#4@14 ~@21, ~@3 b2@31 ~ a2@31 ~@14, ~@5 f#3@28 ~@4 e3@27 ~@16, ~@9 e4@16 ~@16 e4@14 ~@25, ~@11 d#4@17 ~@15 b3@18 ~@19]/5",
})).s("gm_electric_guitar_clean").gain(0.2).pan(0)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_4 = note(`<
  ~
  [~@5 b3 ~@7 b3 ~@2]
  [~@5 a3 ~@7 b3 ~@2]
  [~@5 b3 ~@7 a3 ~@2]
  [~@5 b3 ~@7 b3 ~@2]
  ~@93
>`).s("gm_electric_guitar_clean").gain(0.08).pan(0)

// drums · kick
const kick = s("bd").struct("<~ A B@2 ~ A B A B A B A B A B A ~ C@8 B@7 ~ C@8 D@7 ~ E@4 B@11 ~ E@32 F>".pickRestart({
  A: "x!2", B: "x ~@7 x ~@2 x ~@4", C: "x ~@5 x ~ x ~@2 x ~@2 x ~", D: "x ~@2 x!2 ~@2 x", E: "x ~@2 x ~@4 x ~@2 x ~@4",
  F: "x",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct("<~ A@3 B A@11 B A@15 B A@15 B A@15 B A@32 ~>".pickRestart({
  A: "~ x ~ x", B: "x!16",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C ~ C@3 B C@3 B C D C ~ E F G H I J K H D L M A B N C ~ O P Q R S T U T ~@8 V@3 W C M N@2 C B N@2 X C B ~ Y Z AA
  AB AA AB AC AA AC AA AB@5 AA AC AA AB@5 AA AB Z AA AB AA AB AC AA AD
>`.pickRestart({
  A: "x!7 ~", B: "x ~ x ~ x ~ x ~ x!5 ~@3", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~@3", D: "x ~@3 x ~ x ~ x!5 ~@3",
  E: "~@2 x!5 ~ x ~ x!3 ~@3", F: "x!2 ~ x!2 ~ x!3 ~@2 x!3 ~@2", G: "x ~ x ~ x ~@2 x!2 ~ x!3 ~@3",
  H: "x!5 ~@2 x!2 ~ x!4 ~@2", I: "x!5 ~@2 x!2 ~@2 x!2 ~@3", J: "x!9 ~@2 x!3 ~@2", K: "x!10 ~ x!3 ~@2",
  L: "x ~ x ~ x ~ x!3 ~ x ~ x ~@3", M: "x ~ x ~ x ~ x ~ x!2 ~ x!2 ~@3", N: "x ~ x ~ x ~ x ~ x!3 ~ x ~@3",
  O: "~@3 x!2 ~ x!3 ~ x!4 ~@2", P: "x ~ x!3 ~ x!3 ~ x!4 ~@2", Q: "x ~ x!3 ~ x!3 ~@2 x!3 ~@2",
  R: "x!5 ~ x!3 ~@2 x!3 ~@2", S: "~@2 x!7 ~@2 x!3 ~@2", T: "x!5 ~@2 x!2 ~@2 x!3 ~@2", U: "x!5 ~ x!3 ~ x!4 ~@2",
  V: "x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2", W: "x ~ x!2 ~@2 x!3 ~ x!2 ~@4", X: "x ~ x ~ x ~ x ~ x!2 ~@2 x ~@3",
  Y: "~@2 x!12 ~@2", Z: "x ~ x!3 ~ x!8 ~@2", AA: "x!9 ~ x!4 ~@2", AB: "x!14 ~@2", AC: "x!5 ~ x!8 ~@2", AD: "x",
})).gain(0.33)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@14 A ~@2 B C D E F G H E A ~ H I ~@2 I ~ J K L M N O P O ~@13 H ~@6 H ~@4 Q I ~ I ~ R I R I ~@5 I R I ~@5 I ~ Q I ~
  I ~ R I ~
>`.pickRestart({
  A: "~ x ~@6", B: "~@7 x ~ x ~@3 x ~@2", C: "~@2 x ~@2 x ~@3 x!2 ~@5", D: "~ x ~ x ~ x!2 ~@2 x ~@3 x ~@2",
  E: "~@5 x!2 ~@2 x ~@6", F: "~@5 x!2 ~@2 x!2 ~@2 x ~@2", G: "~@9 x!2 ~@5", H: "~@5 x ~@2", I: "~@9 x ~@6",
  J: "~@2 x ~@2 x ~@3 x ~@6", K: "~ x ~@3 x ~@3 x ~@6", L: "~ x ~@3 x ~@3 x!2 ~@5", M: "~@5 x ~@3 x!2 ~@5",
  N: "x!2 ~@7 x!2 ~@5", O: "~@5 x!2 ~@2 x!2 ~@5", P: "~@5 x ~@3 x ~@6", Q: "~ x ~@3 x ~@10", R: "~@5 x ~@10",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@42 [~@9 x ~@6] ~ [~@9 x ~@6] ~ [~@9 x ~@6] ~@51>").gain(0.44)

// drums · mid tom
const mid_tom = s("mt").struct("<~@42 [~@9 x ~@6] ~ [~@9 x ~@6] ~ [~@9 x ~@6] ~@51>").gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~ A@3 ~ A@11 ~ A@15 ~ A@8 B@7 ~ C@4 A@11 ~ A@32 ~>".pickRestart({
  A: "~@7 x", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", C: "~ x ~ x",
})).gain(0.44)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@2 A ~@3 A ~ A ~ A ~ A ~ A ~@11 A ~ A ~ A ~@10 B ~ B ~ B ~ B ~@6 A ~ A ~ A ~ A ~ A ~@35
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@11 x ~@4",
})).gain(0.44)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@15 A ~@7 B A C A C A C A@2 ~@15 A ~@32>".pickRestart({
  A: "x", B: "x ~@6 x", C: "~@7 x",
})).gain(0.33)
// … 26 more lines

More by U2