Strudelify

Dirty Day

U2

KeyC majorTempo98 bpm
0:00/0:00
// Dirty Day — U2
// 98 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 9 "BASS & LE" named as a bass, played on electric bass finger (its lead 8 bass lead patch is not one)
// note: duplicate parts dropped: ch 3 "POLYSYNTH" pad poly (copy of ch 2 "CHARANG" lead 5 charang); ch 8 "SAW WAVE" lead 2 sawtooth (copy of ch 2 "CHARANG" lead 5 charang); ch 9 "BASS & LE" electric bass finger (copy of ch 2 "CHARANG" lead 5 charang)
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(98/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 · "JAZZGITR"
const electric_guitar_jazz = note(`<
  ~@4 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 ~@4 A B A B A B A B A B A B A B A B ~@20 A B A B A B A B A
  B A B A B A B A B A B ~@21
>`.pickRestart({
  A: "c3@5 ~ g2@8 ~@2", B: "a#2@2 a#2@3 ~ f2@8 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.28)

// bass · fretless bass · "FRETLESBA"
const bass = note(`<
  A B A B C D C D C D C D C D C D C D C D C D C D C D C D C D C D A E A E C D C D C D C D C D C D C D C D ~@12 C D C D C
  D C D C D C D C D C D C D C D C D C D C D C D A E A E A E A E A E A E A E A E A E A E ~
>`.pickRestart({
  A: "c2@2 c2@2 c2@2 g1@7 ~ g1@2", B: "a#1!3 f1@4 ~", C: "c2@2 c2@2 c2@2 g1@3 ~ c2 d2 f2@3 ~",
  D: "a#1@2 a#1@2 a#1@2 f1@3 ~ a#1 c2 d#2@3 ~", E: "a#1@2 a#1@2 a#1@2 f1@7 ~ f1@2",
})).s("gm_fretless_bass").gain(0.24)

// other · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  A@8 ~@15 A@8 ~ B C B C ~@16 D@2 E@2 F G H@2 I@2 E@2 ~@28 B C B C B C B C B C B C B C B C B C B C ~
>`.pickRestart({
  A: "[g4,g5]/8", B: "c2@2 c2@2 c2@2 g1@7 ~ g1@2", C: "a#1@2 a#1@2 a#1@2 f1@7 ~ f1@2", D: "[c2@29 ~@3]/2",
  E: "[g1@29 ~@3]/2", F: "a1@13 ~@3", G: "c2@13 ~@3", H: "[f2@29 ~@3]/2", I: "[a1@29 ~@3]/2",
})).s("gm_pad_poly").gain(0.26)

// chords · drawbar organ · "ORGAN1"
const drawbar_organ = note("<~@52 A@2 B@2 C@2 D@2 E@2 F@2 ~@49>".pickRestart({
  A: "[[c5,e5]@29 ~@3]/2", B: "[[b4,d5]@29 ~@3]/2", C: "[a4@13 ~@3 g4@13 ~@3, [c5,e5]@29 ~@3]/2",
  D: "[[f4,a4,c5,f5]@29 ~@3]/2", E: "[[a4,c5,e5]@29 ~@3]/2", F: "[[g4,b4,d5]@29 ~@3]/2",
})).s("gm_drawbar_organ").gain(0.13)

// other · pad new age · "FANTASIA"
const pad_new_age = note("<~@95 A B@2 C@2 B@2 C@2 B@2 C@2 B@2 D@2 ~>".pickRestart({
  A: "~@12 g4@3 ~", B: "[c5@5 ~ c5@5 ~ c5@2 d5@5 ~ d5@2 c5@2 d5@3 ~ d5@2 d#5@2]/2",
  C: "[d5@2 c5@3 ~ a#4@3 ~ c5@2 d5@2 c5@12 ~@2 g4@3 ~]/2", D: "[d5@2 c5@3 ~ a#4@3 ~ c5@2 d5@2 c5@12 ~@6]/2",
})).s("gm_pad_new_age").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A@5 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@2 C D C D C 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 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 C D C D C D C D C D C D C D C D C D C D C E
>`.pickRestart({
  A: "x!2 ~ x ~ x ~ x", B: "x!2 ~ x ~ x ~@2", C: "x ~ x ~@3 x ~ x!3 ~ x!3 ~", D: "x!2 ~ x!3 ~ x", E: "x",
})).gain(0.27)

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

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

// drums · clap
const clap = s("cp").struct(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 B A C A C D A D A D A D A D A D A D A D A D A D A D A D A D A
  D A D A D A D A D A D A D A D A D A D A D A D A D A D A D B A C A C A C A C A C A C A C A C A C A C ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x!2 ~@2 x!2 ~@2", C: "~@4 x ~@3 x!3 ~ x!3 ~", D: "~ x ~@2",
})).gain(0.27)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 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@2 A B C B C 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 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@2 B C B C B C B C B C B C B C B C B C B C ~
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
})).gain(0.27)

// drums · low tom
const low_tom = s("lt").struct("<~@94 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A>".pickRestart({
  A: "x",
})).gain(0.27)

// drums · mid tom
const mid_tom = s("mt").struct("<~@92 [~@7 x]!20 ~>").gain(0.27)

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

// drums · crash
const crash = s("cr").struct("<~@31 A B C B C D ~@54 A B C B C B C B C B C B C B C B C B C B C D>".pickRestart({
  A: "~@2 x!2", B: "x ~@2 x ~@4", C: "x ~@2 x!2 ~ x ~", D: "x",
})).gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@32 A B A B ~@56 A B A B A B A B A B A B A B A B A B A B C>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "x",
})).gain(0.27)

// drums · tambourine
const tambourine = s("tb").struct("<~@32 A B A B ~@56 A B A B A B A B A B A B A B A B A B A B ~>".pickRestart({
  A: "x!4", B: "x!2 ~@2",
})).gain(0.27)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  A B A B@2 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@2 B ~@4 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 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@2 ~@21
>`.pickRestart({
  A: "~ x!3", B: "~@2 x ~ x!4",
})).gain(1.36)

// drums · guiro
const guiro = s("guiro:0").struct(`<
  A B A B@2 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@2 B ~@4 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 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@2 ~@21
>`.pickRestart({
  A: "x!8", B: "x!4 ~ x ~ x",
})).gain(5.68)

stack(
  electric_guitar_jazz, bass, pad_poly, drawbar_organ, pad_new_age, kick, rim, snare, clap, hihat, low_tom, mid_tom,
  open_hat, crash, ride, tambourine, cabasa, guiro
)

More by U2