Strudelify

Running to Stand Still

U2

KeyD majorTempo93 bpm
0:00/0:00
// Running to Stand Still — U2
// 93 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 107 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 · piano
const piano = note("<A B@6 C@16 D@8 E@8 F@8 G@6 H@8 I@4 J@2 K@8 F@24 L@8>".pickRestart({
  A: "d3@2 ~ [d4,a4]@5, a3, [d4,a4]@3 ~@5, ~ d3@3", // D5
  B: "[[d4,f#4,a4]@3 d4@3 ~@18 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [d4,g4,b4]@5, a3@8 [d4,g4,b4]@2 d3 d4@5 g4@2 d5@6 a3@16 g3@8, ~@3 a4@13 [g3,b4] d4@2 g3@5 [f#4,a4]@2 d3 f#4@3 d3@4 ~ a4@13, ~@3 f#4@4 f#4@14 g4@14 f#4@4 ~ [g4,b4]@3 ~@5, ~@6 d4@2 g3@3 [g4,b4]@3 d3@5 b4@3 [d3,d4] b4@16 ~@3 d3@4 ~@2]/6", // D G F#m G D
  C: "[~@6 d4@2 d3@2 ~ [d4,a4]@5 [d4,f#4,a4]@3 d4@3 ~@18 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [d4,g4,b4]@5, g4@3 b4@16 a4@13 [g3,b4] d4@2 g3@5 [f#4,a4]@2 d3 f#4@3 d3@4 ~ a4@13, b4@2 g3 d3@3 g3@16 d4@2 [g3,d4,g4,b4]@2 d3 d4@5 g4@2 d5@6 a3@16 g3@8, ~ d4@4 g4@14 f#4@4 f#4@14 g4@14 f#4@4 ~ [g4,b4]@3 ~@5, ~@2 d5@6 [a3,d4,a4]@2 d3@6 a3@11 [g4,b4]@3 d3@5 b4@3 [d3,d4] b4@16 ~@3 d3@4 ~@2]/8", // D5 D G F#m G D5 G D
  D: "[~@8 e3@2 ~@6 d3@2 ~@6 e3@2 ~@9 [d4,g4,b4]@3 d4@2 d3@2 ~@4 a5 ~ [d4,f#4,a4]@3 ~@3 a5 ~ d3@2 ~@5 d5, g4@3 [d3,b4]@5 a3@8 [d4,g4,b4]@2 d3 [g4,b4]@5 [c#4,e4,a4]@2 e3 [c#4,e4,a4]@2 e3@11 a3@15 a5@6 d5 b5@2, b4@2 g3@3 g4@3 [c#4,e4,a4]@2 e3 [c#4,e4,a4]@2 e3@6 d4@2 d3@9 [c#4,e4]@10 [f#4,a4]@2 d3 f#4@2 d5@6 a4@13, ~ d4@5 [g3,d4]@8 [c#4,e4,a4]@8 d4@8 a4@2 [g4,b4]@2 d3@3 ~ [g4,b4]@13 f#4@3 d4@2 g3@8, ~@2 d5@14 g3@16 g3@14 d3 a5@6 d5@3 [g4,b4]@2 d3 [d4,g4,b4]@5]/8", // G D G A C#m F#m G5 A …
  E: "[~@6 d4@2 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [g4,b4]@5 ~@6 d4@2 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [d4,g4,b4]@5, b5@6 [g3,d5]@16 ~@2 g3@9 d4@2 d3@3 g3@16 ~@2 g3@8, g4@2 [g3,d5] b4@5 [f#4,a4]@2 d3 f#4@3 d3@4 ~ a4@15 d5@6 a3@16 ~@2 d3@4 ~@2, b4 d4@2 d3@2 g4@14 f#4@4 ~ [g4,b4]@3 d4@5 b4@2 g3@3 g4@14 f#4@4 ~ [g4,b4]@3 ~@5, ~ g5@7 a3@16 ~@2 d3@4 ~@2 g4@3 b4@5 [f#4,a4]@2 d3 f#4@3 d3@4 ~ a4@13]/8", // D G D G G5 F#m G F#m
  F: "[~@6 d4@2 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [g4,b4]@5 ~@6 d4@2 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [d4,g4,b4]@5, g4@3 b4@5 [f#4,a4]@2 d3 f#4@3 d3@4 ~ a4@15 d5@6 a3@16 ~@2 d3@4 ~@2, b4@2 g3 d3@3 g3@16 ~@2 g3@9 d4@2 d3@3 g3@16 ~@2 g3@8, ~ d4@4 g4@14 f#4@4 ~ [g4,b4]@3 d4@5 b4@2 g3@3 g4@14 f#4@4 ~ [g4,b4]@3 ~@5, ~@2 d5@6 a3@16 ~@2 d3@4 ~@2 g4@3 b4@5 [f#4,a4]@2 d3 f#4@3 d3@4 ~ a4@13]/8", // D G D G F#m G F#m
  G: "[~@8 e3@2 ~@6 d3@2 ~@6 e3@2 ~@9 [d4,g4,b4]@3 d4@2 d3@2 ~@4 d3@2, g4@3 [d3,b4]@5 a3@8 [d4,g4,b4]@2 d3 [g4,b4]@5 [c#4,e4,a4]@2 e3 [c#4,e4,a4]@2 e3@11 a3@8, b4@2 g3@3 g4@3 [c#4,e4,a4]@2 e3 [c#4,e4,a4]@2 e3@6 d4@2 d3@9 [c#4,e4]@10 [d4,f#4,a4]@2 d3 [d4,f#4,a4]@5, ~ d4@5 [g3,d4]@8 [c#4,e4,a4]@8 d4@8 a4@2 [g4,b4]@2 d3@3 ~ [g4,b4]@10, ~ d5@7 g3@8 g3@8]/6", // G A C#m D G5 A G
  H: "[~@8 d3@2 ~@4 [d4,g4,b4]@2 ~@3 g3@2 g3 [d4,f#4]@2 d3@2 ~@14 d3@2 ~@4 [d4,g4,b4]@2 ~@3 g3@2 g3 [d4,f#4]@2 d3@2 ~@4 d3@2, a3@7 a3@16 ~ a3@6 d3@2 [d4,f#4,a4]@2 d3@3 d3@3 g3@10 d3@6 [d4,f#4,a4]@2 d3 [d4,f#4,a4]@5, [d4,f#4,a4]@3 [d4,f#4,a4]@3 [f#4,a4]@13 [d4,b4]@3 [g3,b4]@16 d4@2 [d4,g4,b4]@2 d3 [d4,g4,b4]@2 d3@3 [d4,g4,b4]@3 g4@13, ~@2 d3@3 d3@3 g3@10 d3@6 [d4,f#4,a4]@2 d3 [d4,f#4,a4]@5 a3@7 a3@16 ~ a3@8, ~@6 d4@2 [d4,g4,b4]@2 d3 [d4,g4,b4]@2 d3@3 [d4,g4,b4]@3 g4@16 [d4,f#4,a4]@3 [f#4,a4]@13 [d4,b4]@3 [g3,b4]@10]/8", // G D G D F#m G D G …
  I: "[~@8 d3@2 ~@4 [d4,g4,b4]@2 ~@3 g3@2 g3 [d4,f#4]@2 d3@2 ~@4 d3@2, a3@7 a3@16 ~ a3@8, [d4,f#4,a4]@3 [d4,f#4,a4]@3 [f#4,a4]@13 [d4,b4]@3 [g3,b4]@10, ~@2 d3@3 d3@3 g3@10 d3@6 [d4,f#4,a4]@2 d3 [d4,f#4,a4]@5, ~@6 d4@2 [d4,g4,b4]@2 d3 [d4,g4,b4]@2 d3@3 [d4,g4,b4]@3 g4@13]/4", // G D F#m G D G
  J: "[~@4 d3 ~@2 [d4,g4,b4], a3@7 a3@9, [d4,f#4,a4]@3 [d4,f#4,a4]@3 [f#4,a4]@10, ~@2 d3@3 d3@3 g3@8, ~@6 d4@2 [d4,g4,b4]@2 d3 [d4,g4,b4]@2 d3@3]/2", // G D F#m G
  K: "[~@3 g3@2 g3 ~@2 e3@2 ~@6 d3@2 ~@6 e3@2 ~@6 d3@2 ~@4 d4@2 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [d4,g4,b4]@5, [d4,g4,b4]@3 g4@5 [a3,c#4,e4,a4]@2 e3 [a3,c#4,e4,a4]@2 e3@6 [d4,g4,b4]@2 d3@3 [a3,c#4,e4,a4]@2 e3 [a3,c#4,e4,a4]@2 e3@5 e3@16 ~ a4@13, ~@2 d3@12 [a3,c#4,e4,a4]@8 [d4,g4,b4]@8 [c#4,e4]@10 [f#4,a4]@2 d3 f#4@3 d3@4 ~ f#4@4 ~ [g4,b4]@3 ~@5, ~@3 [d4,b4]@3 f#4@10 [g3,d4,g4,b4]@2 d3 g3@11 [a3,a4]@8 [g3,g4,b4]@16 ~@2 g3@8, ~@6 [g3,d4,b4]@10 c3@16 [g3,d4,g4,b4]@2 d3 [g3,d4,g4,b4]@2 d3@3 a3@16 ~@2 d3@4 ~@2]/8", // D G A G A G C#m F#m …
  L: "[~@6 d4@2 d3@2 ~@6 [d4,f#4,a4]@3 ~@3 d4@2 d3@2 ~ [g4,b4]@5 ~@6 d4@2 [d3,a3,d4,f#4,a4]@17 ~@7, g4@3 b4@5 [f#4,a4]@2 d3 f#4@3 d3@4 ~ a4@15 d5@16 ~@14, b4@2 g3 d3@3 g3@16 ~@2 g3@9 d4@2 d3@3 g3@16 ~@10, ~ d4@4 g4@14 f#4@4 ~ [g4,b4]@3 d4@5 b4@2 g3@3 g4@16 ~@11, ~@2 d5@6 a3@16 ~@2 d3@4 ~@2 g4@3 b4@16 ~@13]/8", // D G D F#m G
})).s("gm_piano").gain(0.31)

// chords · piano · soft notes
const piano_soft = note(`<
  A B@2 ~ C D@3 A B@2 ~ C D@3 A B@2 ~ C D@3 ~@2 E@2 C D@3 C D@3 C D@3 C D@3 C D@3 ~@2 E@2 ~@20 C D@3 C D@3 C D@3 C D@3 C
  D@3 C D@3 C D@3 C D@3 ~@3
>`.pickRestart({
  A: "f#4@3 f#4@5", B: "[~@2 d3@3 d3@5 ~@6]/2", C: "d4@3 [d4,a4]@5",
  D: "[~@8 d4@3 ~@3 d3@5 ~@5, ~@2 d3@3 d3@3 ~@16, ~@3 d4@3 ~ f#4@16 ~]/3", E: "[~@8 d4@3 ~@2 d3@3, a3, ~@4 d3 ~@3]/2",
})).s("gm_piano").gain(0.15)

// bass · electric bass finger
const bass = note(`<
  ~@28 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D E F G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 I H I J A@2 B@2 A@2 B@2 A@2 B@2
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 K@3
>`.pickRestart({
  A: "[d2@14 d2 ~]/2", B: "[g1@14 g1 ~]/2", C: "a1@3 a1", D: "g1", E: "a1", F: "g1@3 g1!5", G: "d2!2 c2 d2@2 c2 d2 c2",
  H: "g1!2 f1 g1@2 f1 g1 f1", I: "a1!2 g1 a1@2 g1 a1!2", J: "g1!2 f1 g1@2 f1 g1 ~", K: "[d2@15 ~]/3",
})).s("gm_electric_bass_finger").gain(0.41)

// other · harmonica
const harmonica = note("<~@79 A B@4 C@2 D@4 E@2 F@6 G@3 ~@6>".pickRestart({
  A: "~ b5", B: "[b5@3 a5@20 g5@8 g5@3 f#5@3 e5@4 d5@14 a5@7 b5@2, ~@55 g5 ~@8]/4", C: "[~ b5@2 a5@20 g5@8 ~]/2",
  D: "[g5@2 f#5@4 e5@3 d5@14 d5@26 ~@6 d5@8 ~]/4", E: "[d5@2 c#5@3 ~ b4@3 a4@12 ~@2 b5@8 ~, ~@23 a5 ~@8]/2",
  F: "[b5@2 a5@19 ~@2 g5@8 g5@3 f#5@3 e5@4 d5@16 ~ d5@25 ~@3 d5@9 d5]/6", G: "[~@2 c#5@3 b4@3 ~ a4@27 ~@12]/3",
})).s("gm_harmonica").gain(0.41).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@52 A B A C A B A C A B A C A B A C B@3 A ~@35>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~ x ~@2", C: "x ~@2 x ~@3 x",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@27 A B C B C B C B C B C B C B C B C B C B C B C B ~@21 B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C ~@3
>`.pickRestart({
  A: "~@4 x!3 ~", B: "x!2 ~@2 x ~ x ~", C: "x ~@5 x ~ x ~ x ~ x!2 ~@2",
})).gain(0.36)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@27 A B C B C B C B C B C B C B C B C B C B C B C B ~@21 B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C ~@3
>`.pickRestart({
  A: "x!4 ~@4", B: "~@3 x ~ x ~@2", C: "~ x ~@6",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@51 A B C B C B C B C B C B C B C B C@4 B ~@35>".pickRestart({
  A: "~ x!7", B: "x ~@5 x ~@5 x!4", C: "x ~@2 x ~@2 x!2",
})).gain(0.41)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@51 x [~ x!2 ~ x!2 ~@2]!20 ~@35>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@27 A B C B C B C B C B C B C B C B C B C B C B C B ~@21 B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C ~@3
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@2", C: "~@2 x ~@4 x",
})).gain(0.41)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct(`<
  ~@28 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@21 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~@4
>`.pickRestart({
  A: "~@7 x",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@52 A ~@3 A ~@3 A ~@3 B@3 ~@5 A ~@31 A ~@2>".pickRestart({
  A: "x", B: "~@3 x ~@4",
})).gain(0.46)

stack(
  piano, piano_soft, bass, harmonica, kick, hihat, hihat_soft, low_tom, low_tom_soft, open_hat, open_hat_soft, crash
)

More by U2