Strudelify

Gone

U2

KeyE minorTempo92 bpm
0:00/0:00
// Gone — U2
// 92 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 11 "747 Guitar" named as a guitar, played on electric guitar clean (its pad choir patch is not one)
// note: duplicate parts dropped: ch 5 "747 Guitar (violin)" violin (copy of ch 1 "747 Guitar" distortion guitar); ch 11 "747 Guitar" electric guitar clean (copy of ch 1 "747 Guitar" distortion guitar)
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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.

// other · distortion guitar · "747 Guitar"
const distortion_guitar = note(`<
  A B@8 C ~@11 D E@4 F@2 B@3 C ~@11 D G@2 H@2 F@2 B C ~@12 I J ~@7 D K@2 L@2 M@2 N@2 B@3 C O P O P O P O P O P ~
>`.pickRestart({
  A: "~@7 b5", B: "d6 e6 b5 d6@2 e6@2 b5", C: "d6 e6 b5 d6@2 e6@3", D: "~ e5",
  E: "[e6@11 ~@5 e6@12 e5@4, ~@22 d6@13 ~@29]/4", F: "[e6@11 d6@4 b5]/2", G: "[e6@5 d6@3]/2", H: "[e6@3 e5]/2",
  I: "~@10 b5@3 ~ e6@2", J: "~ d6 e6 b5 d6 e6 b5 d6", K: "[e6@2 e5 e6@2 e6@2 d6@4 e6 e5@2 e5!2]/2",
  L: "[e6@2 e5 e6@2 e6@2 d6@4 e6 e5@3 e5]/2", M: "[e6 g6 e6 g6@2 e6@2 d6@4 e6 e5@3 e5]/2",
  N: "[e6@2 e5 e6@2 e6@2 d6@8 b5]/2", O: "e5", P: "e6",
})).s("gm_distortion_guitar").gain(0.19).pan(1)

// other · distortion guitar · "747 Guitar" · soft notes
const distortion_guitar_soft = note(`<
  ~@62
  [b5 d6 e6 b5 d6 e6 b5 d6]
  [e6 b5 d6 e6 ~ d6 e6 b5, ~@2 b5 ~]
  [d6@2 e6@2 b5@2 d6@2 e6@3 ~ d6@3 ~]
  [b5@3 ~@13]
  ~@31
>`).s("gm_distortion_guitar").gain(0.1).pan(1)

// bass · synth bass 2 · "Bass"
const bass = note(`<
  ~@5 A B@12 C D E F G H G H G H B@12 C D E F G H G H G H I@2 ~@14 B@4 C D E F G H G H G H G H B@12 J ~@2
>`.pickRestart({
  A: "~@8 a#1@3 e1 a#1@3 e1", B: "e1 ~ e1@2 e2@2 a1 d2 e2@2 a1 d2 e2@2 d2 a1", C: "g2!4 d2!4", D: "g2!8", E: "e2!8",
  F: "c2!8", G: "a1!3 e1 g1 c2 d2 c2", H: "d2!3 e1 g1 c2 d2 c2", I: "e1/2", J: "e1",
})).s("gm_synth_bass_2").gain(0.42)

// other · overdriven guitar · "Ov Guitar (chords)"
const overdriven_guitar = note("<~@6 A@4 ~@18 A@4 ~@18 B@2 ~@10 C@8 ~@12 A@12 D@2 ~>".pickRestart({
  A: "[b2,e3,b3]", B: "[e3,b3]/2", C: "e2 ~ e2@2 e3@2 a2 d3 e3@2 a2 d3 e3@2 d3 a2", D: "[b2,e3,b3]/2",
})).s("gm_overdriven_guitar").gain(0.14).pan(0)

// chords · overdriven guitar · "Dist Guitar (chords)"
const overdriven_guitar_2 = note("<A B@5 C@4 ~@18 C@4 ~@18 D ~@10 E@4 ~@17 C@12 F@2 ~>".pickRestart({
  A: "~@7 b3", B: "d4 e4 b3 d4@2 e4@2 b3", C: "[b2,e3]", D: "[e3,b3]", E: "[b3,b4]/4", F: "[b2,e3]/2",
})).s("gm_overdriven_guitar").gain(0.32).pan(1)

// chords · piano
const piano = note(`<
  ~@6 A@3 B ~@8 C@2 D@2 E@4 F G A@3 B ~@2 H@2 ~@4 I@2 J@2 E@4 F G ~@2 K L M N O P Q@2 R@2 ~@8 S T D@2 E@6 F G A@3 B A@3
  B A@3 B U@2 ~
>`.pickRestart({
  A: "[e3,b3,e4]@13 ~@3", B: "[e3,b3,e4]@15 ~",
  C: "[[e4,b4,b5]@4 [e4,b4,b5]@2 [e4,a4,a5]@4 ~@6 g2 ~ g2@11 ~@3, ~@10 [d4,g4,g5]@21 ~]/2", // E5 A5 G5
  D: "[[e4,b4,b5]@4 [e4,b4,b5]@2 [e4,a4,a5]@4 ~@6 e2 ~ e2@10 ~@4, ~@5 [d4,g4,g5]@9 ~@2]/2", // E5 A5 G5
  E: "[[e4,b4,b5]@2 [e4,b4,b5] [e4,a4,a5]@2 [d4,g4,g5]@2 [d4,g4,g5]@4 [d4,f#4,f#5]@5]/2", // E5 A5 G5 D
  F: "[e4,b4,b5]@2 [e4,b4,b5] [e4,a4,a5]@2 [d4,g4,g5]@3", G: "[d4,g4,g5]@6 [d4,f#4,f#5]@9 ~",
  H: "[[g3,g4]@3 [a3,a4]@8 ~@5]/2", // G A
  I: "[[e4,b4,e5,b5]@4 [e4,b4,e5,b5]@2 [e4,a4,e5,a5]@4 ~@6 g2 ~ g2@11 ~@3, ~@10 [d4,g4,d5,g5]@21 ~]/2", // E5 A5 G5
  J: "[[e4,b4,e5,b5]@4 [e4,b4,e5,b5]@2 [e4,a4,e5,a5]@4 ~@6 e2 ~ e2@10 ~@4, ~@5 [d4,g4,d5,g5]@9 ~@2]/2", K: "[e4,b4]",
  L: "[a3,e4]", M: "b4 a4, e4", N: "e4@6 d4 e4, a3", O: "[d4,a4]!2", P: "g4@3 g4, c4",
  Q: "[[d4,a4]@4 [d4,a4]@3 [c4,g4]@9]/2", R: "[c4,g4]/2", S: "[g3,g4] [d3,d4]", T: "[g3,g4]@2 [g2,g3] [a2,a3]",
  U: "[e3,b3,e4]/2", // E5
})).s("gm_piano").gain(0.44).pan(0)

// other · viola · "Choir"
const viola = note("<~@62 A B C B A B C B ~@27>".pickRestart({
  A: "b4", B: "d5", C: "e5",
})).s("gm_viola").gain(0.22).pan(0.6)

// drums · rim
const rim = s("rim").struct("<~@50 [~ x!3] ~@46>").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@6 A@44 B ~ B ~@3 B@4 C@6 A@28 B ~@2>".pickRestart({
  A: "x!2 ~@3 x ~@2", B: "x", C: "x!2 ~@6",
})).gain(0.64)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 [~@8 x ~@5 x!2] ~@45>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@9 A ~@7 A ~@3 A ~@5 A ~@11 A ~@3 A ~@5 A ~ B ~@17 A ~@3 A ~@7 A ~@11 A ~@3
>`.pickRestart({
  A: "~@14 x!2", B: "~@3 x ~@8 x!2 ~@2",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@3 A ~@3 A ~@2 A@2 ~ A@3 ~ A ~ A ~ A ~@2 A@2 ~@3 A ~@2 A@2 ~ A@3 ~ A ~ A ~ A ~ A ~@7 A ~@3 A ~ A ~@2 A@2 ~ A@3
  ~ A ~ A ~ A ~ A@5 B@7 A ~@2
>`.pickRestart({
  A: "x", B: "x!2 ~@2",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@56 [~ x ~ x]!9 [~ x ~@2] ~@31>").gain(0.64)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@6 A@3 B A@3 B A@3 B A B A B A@5 B A@7 B A@3 B A B A B A@5 B ~@10 C@4 D@2 A@3 B A B A B A@7 B A@11 B ~@3
>`.pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "~@4 x!2 ~@2", D: "~@3 x!3 ~@2",
})).gain(0.32)

stack(
  distortion_guitar, distortion_guitar_soft, bass, overdriven_guitar, overdriven_guitar_2, piano, viola, rim, kick,
  snare, hihat, mid_tom, high_tom, crash, tambourine, cowbell
)

More by U2