Strudelify

Lemon

U2

KeyE♭ minorTempo117 bpm
0:00/0:00
// Lemon — U2
// 117 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 192 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(117/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 · piano
const piano = note("<~@69 A@4 B@3 C B@3 C B D ~@32 A@4 B@3 C B@3 C B D ~@24 A@4 B@3 C B@3 C B D ~@25>".pickRestart({
  A: "gb4 db4 f4 db4 gb4 db4 ab4 db4", B: "ab4 db4 gb4 db4 f4 db4 gb4 db4", C: "ab4 db4 bb4 db4 ab4 db4 gb4 db4",
  D: "ab4@2 db4@2 gb4@2 db4@2 f4@2 db4@2 gb4@2 db4 ~",
})).s("gm_piano").gain(0.36)

// chords · pad halo
const pad_halo = note(`<
  ~ A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C D@2 E F D@2 E F A@2 B C A@2 B C G@2 H C I J K C A@2 B C A@2
  B C D@2 E F D@2 E F ~@14 A@2 B C A@2 B C G@2 H C I J K C A@2 B C A@2 B C D@2 E F D@2 E F ~@14 A@2 B C A@2 B C A@2 B C
  A@2 B C D@2 E F D@2 E F ~@14 A@2 B C A@2 B C G@2 H C I J K C A@2 B C L@2 M ~@2
>`.pickRestart({
  A: "[~@2 [eb4,gb4] gb4 bb4 [eb4,bb4] [gb4,bb4] gb4 eb4 bb4 gb4!2 bb4!2 gb4 eb4 [eb4,bb4] bb4 gb4!2 bb4!2 bb4@2 gb4@2 ~@6, ~@3 eb4@2 ~ eb4@2 gb4@2 bb4@2 gb4@2 bb4@2 ~ eb4@2 eb4@2 eb4@2 ~@9, ~@4 gb4@2 ~ bb4@2 eb4@2 eb4@2 eb4@2 gb4@3 bb4@2 gb4@2 gb4 ~ bb4 ~@7]/2", // Ebm Eb5 Gb Eb5
  B: "~@2 b4 [eb4,b4] [gb4,b4] gb4 eb4 b4 gb4!2 b4!2 gb4 eb4 b4 [gb4,b4], ~ gb4 eb4 gb4 b4 gb4 b4 eb4, ~@5 b4@2 eb4@2 eb4@2 eb4@2 gb4@2 ~", // Abm B5
  C: "eb4!2 [eb4,ab4]!2 ab4 ~ eb4 ab4 ~@2 ab4!2 ~ eb4 [eb4,ab4]@2, ~@4 eb4@2 ~ eb4@2 eb4@2 eb4@2 ~@3, ~@5 ab4@2 ~ ab4@2 ~@2 ab4@2 ~@2", // Ab5
  D: "[~ db4 [db4,f4] f4 ab4 [db4,ab4] [f4,ab4] f4 db4 ab4 f4!2 ab4!2 f4 db4 [db4,ab4] ab4 f4!2 ab4!2 f4!2 ab4 ~ f4!2 ~ db4@3, f4@2 ~ db4@2 ~ db4@2 f4@2 ab4@2 f4@2 ab4@2 ~ db4@2 db4@2 db4@2 db4@2 [db4,ab4]@5 ~@2, ~@4 f4@2 ~ ab4@2 db4@2 db4@2 db4@2 f4@3 ab4@2 f4@2 ab4@2 f4@2 ~@2 f4@3 ~]/2", // Db Db5 Fm Db5
  E: "~@2 b4 eb4 gb4!2 eb4 b4 gb4!2 b4!2 gb4 eb4 b4 [gb4,b4], ~ eb4@2 b4@2 b4@2 eb4@2 eb4@2 eb4@2 gb4@2 ~, ~ gb4 eb4 gb4 b4 gb4 b4 eb4", // B5
  F: "b4 gb4 ~ eb4 gb4!2 eb4 b4 gb4!2 b4!2 gb4 eb4 b4 [gb4,b4], eb4 gb4 eb4 gb4 b4 gb4 b4 eb4, ~ b4@2 b4@2 b4@2 eb4@2 eb4@2 eb4@2 gb4@2 ~", // B5
  G: "[~@2 gb4 ~ bb4 eb4 [gb4,bb4] ~@2 bb4 ~ gb4 ~ bb4 gb4 eb4 [eb4,bb4]!2 gb4!2 bb4!2 bb4@2 gb4@2 ~@6, ~@3 eb4@2 ~ eb4@2 gb4@2 bb4@2 gb4@2 bb4@2 ~@2 bb4@2 gb4@2 gb4 ~ bb4 ~@7, ~@4 gb4@2 ~ bb4@2 eb4@2 eb4@2 ~@2 gb4@3 ~ eb4@2 eb4@2 ~@9]/2", // Gb Eb5
  H: "~@2 b4!2 [gb4,b4] gb4 eb4 b4 gb4!2 b4!2 gb4 eb4 b4 [gb4,b4], ~@2 gb4@2 ~ b4@2 eb4@2 eb4@2 eb4@2 gb4@2 ~, ~@3 gb4 b4 ~ b4 ~", // B5
  I: "~@2 gb4!2 bb4 [eb4,bb4] gb4!2 eb4 bb4 gb4!2 [gb4,bb4] bb4 gb4 eb4, ~@3 eb4@2 ~@2 bb4@2 eb4@2 eb4@2 ~@3, ~@4 gb4 bb4 ~ bb4", // Eb5 Gb
  J: "[eb4,bb4] bb4 gb4!2 bb4!2 bb4@2 gb4@2 ~@6, ~ eb4@2 eb4@2 eb4@2 ~@9, ~@2 bb4@2 gb4@2 gb4 ~ bb4 ~@7", // Eb5
  K: "~@2 b4 [eb4,b4] [gb4,b4] gb4 eb4 b4 gb4!2 b4!2 gb4 [eb4,gb4] b4 [gb4,b4], ~ gb4 eb4 gb4 b4 gb4 b4 ~, ~@5 b4@2 eb4@2 eb4@2 eb4@2 ~ eb4@2", // Abm B5 Ebm B5
  L: "[~@2 [eb4,gb4] gb4 bb4 [eb4,bb4] [gb4,bb4] gb4 eb4 bb4 gb4!2 bb4!2 gb4 eb4 [eb4,bb4] bb4 gb4!2 bb4!2 bb4@2 gb4@2 ~@6, ~@3 eb4@2 ~ eb4@2 gb4@2 bb4@2 gb4@2 ~ gb4@3 bb4@2 gb4@2 gb4 ~ bb4 ~@7, ~@4 gb4@2 ~ bb4@2 eb4@2 eb4@2 eb4@2 ~@2 eb4@2 eb4@2 eb4@2 ~@9]/2", // Ebm Eb5 Gb Eb5
  M: "~@2 b4 [eb4,b4] [gb4,b4] gb4 eb4 b4 gb4 eb4@2 ~@5, ~ gb4 eb4 gb4 b4 ~@3, ~@5 b4@2 eb4@2 gb4 ~@6", // Abm B5
})).s("gm_pad_halo").gain(0.2)

// chords · pad halo · soft notes
const pad_halo_soft = note(`<
  ~ A B@2 C@2 B@2 D A B@2 E@2 B@2 E@2 B@2 C@2 B@2 D A B@2 F@2 G@2 ~ H G@2 ~ A B@2 I J B@2 D A K@2 E@2 B@2 C@2 B@2 D A
  B@2 F@2 G@2 ~ H G@2 ~@15 A B@2 I J B@2 D A K@2 E@2 B@2 C@2 B@2 D A B@2 F@2 G@2 ~ H G@2 ~@15 A B@2 E@2 B@2 C@2 B@2 D A
  B@2 F@2 G@2 ~ H G@2 ~@15 A B@2 I J B@2 D A K@2 E@2 B@2 C@2 B@2 D A L@2 M@2
>`.pickRestart({
  A: "~ bb4 ~@6",
  B: "[~@7 eb4@2 ~ gb4!2 ~@4 eb4 eb4@2 ~@13, ~@7 gb4 ~ [eb4,bb4]@4 eb4@2 gb4@3 ~@14, ~@12 gb4@2 bb4@3 ~@15]/2", // Eb5
  C: "[gb4 ~ b3@4 b3@11 eb4 bb4@2 ~@12]/2", D: "gb4 gb4@3 gb4@12, b4 ~@7", E: "[gb4 ~ b3@4 b3@12 bb4@2 ~@12]/2",
  F: "[gb4 ~ b3@4 b3@12 ab4@2 ~@12]/2", G: "[~@16 eb4 ~@15, ~@14 ab4@3 ~@15, ~@15 f4@3 ~@14]/2", H: "~ ab4 ~@6",
  I: "gb4 ~@15", J: "~ eb4 bb4@2 ~@12",
  K: "[~@7 eb4@2 ~ gb4!2 ~@4 eb4 eb4@2 ~@13, ~@7 gb4 ~ [eb4,bb4]@4 eb4@2 gb4@2 ~@15, ~@12 gb4@2 bb4@3 ~@15]/2", // Eb5
  L: "[~@7 eb4@2 ~ gb4!2 ~@4 eb4 eb4@2 ~@7 b4!2 gb4 eb4 b4 [gb4,b4], ~@7 gb4 ~ [eb4,bb4]@4 eb4@2 gb4@3 ~@8 gb4@2 b4@2 eb4@2, ~@12 gb4@2 bb4@3 ~@10 eb4@2 gb4@2 ~]/2", // B5 Eb5
  M: "[[eb4,gb4] eb4 [eb4,ab4]!2 ab4 ~ eb4 ab4 ~@2 ab4!2 ~ eb4 [eb4,ab4]@3 ~@15, ~@2 b3@3 ab4@2 eb4@2 eb4@2 eb4@2 ~@19, ~@2 eb4 b3@6 ~@7, ~@4 ab4 ~ ab4 ~@9]/2", // Ebm Ab5
})).s("gm_pad_halo").gain(0.12)

// bass · fretless bass
const bass = note(`<
  ~ A B A C A B A C A B A C A B A C A B A C A B A C A B A C D@2 E F D@2 E F A B A C A B A C A B A C A B A C A B A C A B
  A C D@2 E F D@2 E F G H I J G H I J G H I J G H A B A C A B A C A B A C A B A C A B A C A B A C D@2 E F D@2 E F G H I
  J G H I J G H I J G H A B A C A B A C A B A C A B A C D@2 E F D@2 E F G H I J G H I J G H I J G H A B A C A B A C A B
  A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "eb1 gb2 f2 eb2 db2 eb2!2 eb1", B: "~@2 gb2@3 ~ eb2@2 db2@2 eb2@2 db2@2 eb2@2",
  C: "~@2 gb2@3 ~ eb2@2 db2@2 eb2@2 ab1@2 bb1 ~", D: "db2@3 db2@2 db2!2 ab1", E: "ab1@3 ab1@2 ab1!3",
  F: "b1@3 b1@2 ab1 b1 ab1", G: "gb2@3 db2 gb1 db2 gb2@3 gb1 gb2@2 gb2@2 [bb1,db2] [gb1,ab1]",
  H: "db2@6 db2@3 db2@3 db2@2 db2@2", I: "b1@2 b1 b1@2 b1 b1@2", J: "b1@3 gb1 b1@2 b1@3 gb1 b1 ~ b1@2 db2 [eb2,f2]",
})).s("gm_fretless_bass").gain(0.28)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@29 A B C@2 D E F@2 ~@24 A B C@2 D E F@2 ~@38 A B C@2 D E F@2 ~@30 A B C@2 D E F@2 ~@39
>`.pickRestart({
  A: "f4@8 ~@2 gb4@3 ab4@2 ~", B: "ab4@6 ~@2 f4@3 gb4@2 ab4 ~@2", C: "[ab4@3 ~ bb4@2 gb4@3 ~ ab4@3 ~ eb4@13 ~@5]/2",
  D: "~@8 f4@2 ~ gb4@2 ~ ab4@2", E: "ab4@7 ~ f4@3 gb4@3 ab4 ~", F: "[ab4@3 ~ bb4 ~ gb4@3 ~ ab4@3 ~ eb4@14 ~@4]/2",
})).s("gm_electric_guitar_muted").gain(0.35)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@37 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 C@8 ~@2 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 C@8 ~@18 A@4 B@4 A@4 C@8 ~@2 A@4
  B@4 A@4 B@4 A@4 D@5
>`.pickRestart({
  A: "[bb5@63 ~]/4", B: "bb5/4", C: "bb5/8", D: "[bb5@13 ~@3]/5",
})).s("gm_string_ensemble_2").gain(0.11)

// other · viola
const viola = note(`<
  ~@129 A B C@2 D@2 E@3 F G@2 B H I@2 F J K@4 L@2 ~@14 J M@3 N@2 B O J M@3 N@2 B O J M@3 N@2 B O ~
>`.pickRestart({
  A: "eb3", B: "bb3", C: "b3/2", D: "[gb4@3 f4]/2", E: "eb4/3", F: "db4", G: "[b3@31 ~]/2", H: "eb4 eb3",
  I: "[b3@29 ~@3]/2", J: "ab4", K: "[eb4 ab4]/4", L: "[gb4@31 ~]/2", M: "[gb4@5 f4]/3", N: "[eb4@3 ab3]/2", O: "b3",
})).s("gm_viola").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ A@71 B A@3 B A@3 B A@37 B A@3 B A@3 B A@29 B A@3 B A@3 B A@26 ~>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@5", B: "x ~@2 x ~@2 x ~ x ~ x ~@5",
})).gain(0.52)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@27 B A@31 B A@11 C A@3 C A@29 B A@11 C A@3 C A@21 B A@11 C A@3 C A@29 B ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@4 x ~@7 x ~@2 x",
})).gain(0.52)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@69 A@3 B A@3 B A@3 C A@2 ~@32 A@3 B A@3 B A@3 C A@2 ~@24 A@3 B A@3 B A@3 C A@2 ~@25
>`.pickRestart({
  A: "~@9 x ~@6", B: "~ x ~@7 x ~@4 x ~", C: "~ x ~@7 x ~@5 x",
})).gain(0.26)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@27 B C@8 A@23 B C@8 D@3 E D@3 E D@6 A@23 B C@8 D@3 E D@3 E D@6 A@15 B C@8 D@3 E D@3 E D@6 A@23 B ~
>`.pickRestart({
  A: "~@13 x!3", B: "~@13 x ~@2", C: "~@3 x ~ x ~@2", D: "~@6 x!2", E: "~@3 x",
})).gain(0.52)

// drums · crash
const crash = s("cr").struct(`<
  ~@29 A ~@31 A ~@7 A ~@3 A ~@3 A ~@29 A ~@7 A ~@3 A ~@3 A ~@21 A ~@7 A ~@3 A ~@3 A ~@30
>`.pickRestart({
  A: "x",
})).gain(0.39)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B C@8 A B A B A B A B A B A B A B A B A B A B A B A B C@22 A B
  A B A B A B A B A B A B D B A B A B A B A B C@22 A B A B A B A B A B A B A B A B C@22 A B A B A B A B A B A B A B D B
  A B A B A B A B ~
>`.pickRestart({
  A: "x!13 ~@3", B: "x!7 ~ x!7 ~", C: "x!16", D: "x!2 ~ x!10 ~@3",
})).gain(0.33)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~ A B A B 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 A B A B A B A B A B A B A B A B ~@22 A B
  A B A B A B A B A B C B D B A B A B A B A B ~@22 A B A B A B A B A B A B A B A B ~@22 A B A B A B A B A B A B C B D B
  A B A B A B A E ~
>`.pickRestart({
  A: "~@13 x!3", B: "~@7 x ~@7 x", C: "~@14 x!2", D: "~@13 x ~ x", E: "~@7 x ~@8",
})).gain(0.13)

stack(
  piano, pad_halo, pad_halo_soft, bass, electric_guitar_muted, string_ensemble_2, viola, kick, snare, snare_soft,
  pedal_hat, open_hat, crash, tambourine, tambourine_soft
)

More by U2