Strudelify

Do You Feel Loved

U2

KeyD minorTempo113 bpm
0:00/0:00
// Do You Feel Loved — U2
// 113 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 139 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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 · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B ~@8 A B A B A B A B ~@10 A B A B A B A
  B ~@40 C@8 D@5
>`.pickRestart({
  A: "f3@3 g3@5", B: "f3@3 d3@5",
  C: "[~ d4@2 c4@2 d4@2 b3@2 c4@2 a3@2 g3@2 d3@2 d4@2 c4@2 d4@2 b3@2 c4@2 a3@2 g3@2 d3@2 d4@2 c4@2 d4@2 b3@2 c4@2 a3@2 g3@2 d3@2 d4@2 c4@2 d4@2 b3@2 c4@2 a3@2 g3@2 d3]/8",
  D: "[~ d4@2 c4@2 d4@2 b3@2 c4@2 a3@2 g3@2 d3@2 d4@2 c4@2 d4@2 b3@2 c4@2 a3@2 g3@2 d3@2 ~@7]/5",
})).s("gm_electric_guitar_jazz").gain(0.25)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B ~@8 A B A B A B A B ~@71
>`.pickRestart({
  A: "c4 d4 c4 d4@2 d4@2 a3", B: "c4 d4 c4 a3@2 a3@2 a3",
})).s("gm_electric_guitar_clean").gain(0.25)

// other · electric guitar clean
const electric_guitar_clean_2 = note("<A B C B C B C B C B C B C B C B D ~@122>".pickRestart({
  A: "~ c4 d4 c4 d4@2 d4@2", B: "a3 c4 d4 c4 a3@2 a3@2", C: "a3 c4 d4 c4 d4@2 d4@2", D: "a3 ~@7",
})).s("gm_electric_guitar_clean").gain(0.21)

// other · electric guitar clean
const electric_guitar_clean_3 = note("<A@8 B@8 C ~@122>".pickRestart({
  A: "[~@2 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3@2 a3 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3@2 a3 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3@2 a3 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3]/8",
  B: "[~ a3 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3@2 a3 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3@2 a3 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3@2 a3 c4 d4 c4 d4@2 d4@2 a3 c4 d4 c4 a3@2 a3]/8",
  C: "~ a3 ~@6",
})).s("gm_electric_guitar_clean").gain(0.16)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@8 A B A B A B A B A B A B A B A B ~@24 A B A B A B A B A B A ~@23 C@4 A B A B A B A B A B A B ~@24 A B A B A B A B A
  B A B A B A B ~
>`.pickRestart({
  A: "d3 ~@2 d3 ~@2 d3 ~@3 c3@2 ~ a2@2 ~", B: "d3 ~@2 d3 ~@2 d3 ~@2 d3 c3 a2 c3 a2 d3 c3", C: "d3/4",
})).s("gm_distortion_guitar").gain(0.37)

// bass · electric bass finger
const bass = note(`<
  ~@16 A B A B A B A B A B A B A B A B A B A B C D E F C D E F C D E F A B A B ~@8 A B A B C D E F C D E F C D E F E F A
  B A B A B A B A B A B A B A B A B A B C D E F C D E F E F E F E F C D E F C D E F C D A B A B A B A B A B A B A B A B
  ~
>`.pickRestart({
  A: "d2 f2!2 f2@2 g2!3", B: "g2 f2!2 f2@2 d2!3", C: "d2!8", D: "c2!8", E: "f2!8", F: "g2!8",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · rock organ
const rock_organ = note(`<
  ~@24 A B A B A B A B A B A B C D E F C D E F C D E F A B A B A B A B A B A B A B A B C D E F C D E F C D E F E F A B A
  B A B A B ~@12 C D E F C D E F E F E F E F C D E F G D E F G D ~@17
>`.pickRestart({
  A: "f4@3 g4@5, [d4,a4]", B: "f4@3 e4@5, [d4,a4]", C: "[d4,f4,a4]", D: "[c4,e4,g4]", E: "[f4,a4,c5]", F: "[g4,b4,d5]",
  G: "[d4,f4,a4] ~@15", // Dm
})).s("gm_rock_organ").gain(0.14)

// other · overdriven guitar
const overdriven_guitar = note("<~@36 A@3 B C@8 ~@16 A@3 B D@5 E@8 F@5 G@8 A@3 B D@5 H@8 I@8 J@3 G@16 ~>".pickRestart({
  A: "[~@40 g4@7 [f4,gb4,g4], d4@17 ~@7, ~@16 f4@5 ~@3]/3", B: "a4@12 [ab4,a4] [gb4,g4] [eb4,e4,f4] [db4,d4], ab4 ~@15",
  C: "[f4@7 f4@2 f4 e4 f4 g4 f4 e4 f4@8 f4@2 f4 e4 f4 e4 d4@2 f4@8 f4@2 f4 e4 f4 g4 f4 e4 f4@8 f4@2 g4@2 g4@5, c4 ~@127]/8",
  D: "[f4@7 f4@2 f4 e4 f4 g4 f4 e4 f4@8 f4@2 f4 e4 f4 e4 d4@2 f4@8 f4, c4 ~@79]/5",
  E: "[~ f4 e4 f4 g4 f4 e4 f4@8 g4@8 f4@8 f4@2 f4 e4 f4 g4 f4 e4 d4@5 f5@2 ~@2 c5@2 f5@2 ~@3 c5@2 a4@3 f5@2 d5@2, ~@46 d5@3 ~@3 d5@4 ~@8]/8",
  F: "[c5@2 f5@2 d5@3 c5@2 a4@3 f5@2 ~@2 c5@2 f5@2 ~@3 c5@2 a4@3 f5@2 ~@2 c5@2 f5@2 d5@3 c5, ~@14 d5@3 ~@3 d5@4 ~@6 d5@3 ~@7]/5",
  G: "d3/4", H: "[~ f4 e4 f4 g4 f4 e4 f4@8 g4@8 f4@8 f4@2 f4 e4 f4 g4 f4 e4 f4@8 g4@8 f4@8 f4]/8",
  I: "[~ f4 e4 f4 g4 f4 e4 f4@8 f4@2 f4 e4 f4 g4 f4 e4 f4@8 f4@2 f4 e4 f4 e4 d4@2 f4@8 f4@2 f4 e4 f4 g4 f4 e4 f4@8 f4]/8",
  J: "[~@2 f4@2 e4@2 f4@2 e4@2 d4@4 f4@16 f4@4 f4@2 e4@2 f4@2 e4@2 d4@5 ~]/3",
})).s("gm_overdriven_guitar").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@8 [x!2 ~@5 x]!130 ~>").gain(0.56)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@16 A@8 ~@12 A@16 ~@12 A@14 ~@8 A@52 ~>".pickRestart({
  A: "~@3 x ~@3 x ~ x ~@5 x",
})).gain(0.19)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 A@8 ~@12 A@16 ~@12 A@14 ~@8 A@52 ~>".pickRestart({
  A: "x!16",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@9 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.5)

stack(
  electric_guitar_jazz, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_clean_3, distortion_guitar,
  bass, rock_organ, overdriven_guitar, kick, snare, snare_soft, tambourine, crash
)

More by U2