Strudelify

I Will Always

The Cranberries

KeyC majorTempo86 bpm
0:00/0:00
// I Will Always — The Cranberries
// 86 bpm, 12/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/8 at bar 1, 12/8 at bar 1) are rendered on a constant 12/8 grid of one bar per cycle
// note: Full arrangement: all 38 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(86/6)

// 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 · pad poly
const pad_poly = note("<~@3 A B@2 C@2 D E F G@8 A H@2 C@2 D E I@2 ~@2 J K J K ~@4>".pickRestart({
  A: "~@11 g4",
  B: "[[c4,e4,g4]@9 ~ e4@2 e4@2 g4@2 e4@2 [c4,e4,g4]@3 ~ b4 [e4,a4]@11 e4@2 a4@2 ~@3 a4!2 a4@2 ~ a4@2, ~@23 c4@13 c4@12, ~@18 e4@5 ~]/2", // C A5
  C: "[a4@2 g4 g4@7 ~ g4 g4@3 ~ a4@2 b4 b4@2 ~@6 b4@3 [c4,e4,a4]@2 [a3,e4]@13 ~ g4@2, c4@6 c4@6 [c4,e4]@3 ~ c4@8, e4@5 ~ e4@5 c5@2 ~@11]/2", // Am A5 C
  D: "[e4,g4]@8 ~@2 e4@2 g4@3 ~ g4@2 g4@2 a4 b4@2 ~, c4@2 [c4,e4]!2", // Em C
  E: "[e4,a4]@10 ~@2 a4@4 ~ a4!2 a4@2 ~ a4@2, c4!2, ~@6 e4@5 ~", // A5
  F: "a4@2 g4 g4@7 ~ g4 g4@3 ~ a4 b4@4 ~ b4@2, c4!2, e4@5 ~ e4@5 ~",
  G: "[c5@3 ~ b4@3 ~ a4@3 ~ [a3,e4]@10 ~@50 [g4,c5,e5]@5 ~ [g4,c5,d5]@5 ~ [g4,c5,f5]@5 ~ [g4,c5,e5]@5 ~ [a4,c5,e5]@5 ~ [a4,c5,d5]@5 ~ [a4,c5,f5]@5 ~ [a4,c5,e5]@5 ~ [g4,c5,e5]@5 ~ [g4,c5,d5]@5 ~ [g4,c5,f5]@5 ~ [g4,c5,e5]@5 ~ [a4,c5,e5]@5 ~ [a4,c5,d5]@5 ~ [a4,c5,f5]@5 ~ [a4,c5,e5]@5 ~@25, c4 c4@15, e4@5 ~@91]/8", // A5 C Gsus4 Csus4 C Am D7 F …
  H: "[[e4,g4]@9 ~ e4@2 e4@2 g4@2 e4@2 [e4,g4]@3 ~ b4 [e4,a4]@11 e4@2 a4@2 ~@3 a4!2 a4@2 ~ a4@2, c4@18 c4@4 ~ c4@13 c4@12, ~@18 e4@5 ~]/2", // Em A5
  I: "[a4@2 g4 g4@7 ~ g4 g4@3 ~ a4 b4@4 ~ b4@2 c5@3 ~ b4@3 ~ a4@3 ~ [a3,e4]@10 ~@2, c4@6 c4@17 ~, e4@5 ~ e4@5 ~ e4@5 ~@7]/2", // A5
  J: "[g4,c5,e5]@5 ~ [g4,c5,d5]@5 ~ [g4,c5,f5]@5 ~ [g4,c5,e5]@5 ~", // C Gsus4 Csus4 C
  K: "[a4,c5,e5]@5 ~ [a4,c5,d5]@5 ~ [a4,c5,f5]@5 ~ [a4,c5,e5]@5 ~", // Am D7 F Am
})).s("gm_pad_poly").gain(0.48)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C D C D C D C D C D E F G H G@2 E F C D C D C D C D E F G H G@2 E F I@2
>`.pickRestart({
  A: "[e3,g3,c4]@2 ~ [e3,g3,c4]!3 [e3,g3,b3]@5 ~ [e3,g3,d4]@2 ~ [e3,g3,d4]!3 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,b3]@2", // C Em Em7 C Em
  B: "[e3,a3,c4]@2 ~ [e3,a3,c4]!3 [e3,a3,b3]@5 ~ [e3,a3,d4]@2 ~ [e3,a3,d4]!3 [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,b3]@2", // Am Esus4 Dsus2 Am Esus4
  C: "[e3,g3,c4]@2 ~ [e3,g3,c4]!3 [e3,g3,b3]@2 ~ [e3,g3,b3]!3 [e3,g3,d4]@2 ~ [e3,g3,d4]!3 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,b3]@2, c3@17 ~ c3@5 ~", // C Em Em7 C Em
  D: "[e3,a3,c4]@2 [e3,a3,c4]!4 [e3,a3,b3]@2 [e3,a3,b3]!4 [e3,a3,d4]@2 [e3,a3,d4]!4 [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,b3]@2, a2@17 ~ a2@5 ~", // Am Esus4 Dsus2 Am Esus4
  E: "[e3,a3,c4]@2 [e3,a3,c4]!4 [e3,a3,b3]@2 [e3,a3,b3]!4 [e3,g3,d4]@2 [e3,g3,d4]!4 [e3,g3,b3]@2 [e3,g3,b3]!4", // Am Esus4 Em7 Em
  F: "[e3,a3,c4]@2 [e3,a3,c4]!4 [e3,a3,b3]@2 [e3,a3,b3]!4 [e3,g3,d4]@2 [e3,g3,d4]!4 [d#3,g#3,b3]@2 [d#3,g#3,b3]!4", // Am Esus4 Em7 G#m
  G: "[g3,c4,e4]@2 [g3,c4,e4]!4 [g3,c4,d4]@2 [g3,c4,d4]!4 [g3,c4,f4]@2 [g3,c4,f4]!4 [g3,c4,e4]@2 [g3,c4,e4]!4", // C Gsus4 Csus4 C
  H: "[a3,c4,e4]@2 [a3,c4,e4]!4 [a3,c4,d4]@2 [a3,c4,d4]!4 [a3,c4,f4]@2 [a3,c4,f4]!4 [a3,c4,e4]@2 [a3,c4,e4]!4", // Am D7 F Am
  I: "[[a3,e4]@43 ~@5]/2", // A5
})).s("gm_acoustic_guitar_nylon").gain(0.35)

// chords · distortion guitar
const distortion_guitar = note("<~@12 A B ~@4 A B ~@8 A B ~@4 A B C ~>".pickRestart({
  A: "g3 b3", B: "g3@2 b3 ~", C: "c#4@5 ~@7",
})).s("gm_distortion_guitar").gain(0.24)

// other · string ensemble 2
const string_ensemble_2 = note("<~@14 [e4@5 ~ d4@5 ~ f4@5 ~ e4@5 ~]!4 ~@12 [e4@5 ~ d4@5 ~ f4@5 ~ e4@5 ~]!4 ~@4>")
  .s("gm_string_ensemble_2").gain(0.29)

// other · piano
const piano = note("<~@15 A ~ A ~@12 B A B A ~@4>".pickRestart({
  A: "c6!2 ~ b5!2 ~ g5!2 ~ a5!2 ~", B: "~@3 a5!2 ~@4 c6!2 ~",
})).s("gm_piano").gain(0.32)

// other · piano · soft notes
const piano_soft = note("<~@15 A ~ A ~@12 B A B A ~@4>".pickRestart({
  A: "~@2 c6 ~@2 b5 ~@2 g5 ~@2 a5", B: "~@5 a5 ~@5 c6",
})).s("gm_piano").gain(0.16)

// bass · acoustic bass
const bass = note("<~@4 A B C B A B C D E F A B C D E F A B C B A B C B E F A B C D E F G@2>".pickRestart({
  A: "c2@17 ~ c2@3 ~ g1@2", B: "a1@17 ~ a1@3 ~ g1@2", C: "c2@10 ~@2 c2@5 ~ d2@3 ~ e2@2", D: "a1@17 ~ a1@3 ~ a1@2",
  E: "f1@9 ~ f1@2 g1@9 ~ g1@2", F: "f1@9 ~ f1@2 g1@5 ~ g#1@5 ~", G: "[a1@43 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~@3 A B@8 C@2 B@4 C@2 B@8 C@2 B@4 C@2 D ~>".pickRestart({
  A: "~@10 x!2", B: "x ~@2 x ~@2 x ~@4 x", C: "x!2", D: "x",
})).gain(0.19)

// drums · snare
const snare = s("sd").struct("<~@4 A@8 B C A@4 B C A@8 B C A@4 B C ~@2>".pickRestart({
  A: "~ x ~@2", B: "~@6 x ~@11 x ~@3 x!2", C: "~@6 x ~@10 x!2 ~ x ~ x ~",
})).gain(0.19)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 [~@10 x!2] ~@34>").gain(0.19)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@12 A@2 ~@4 A@2 ~@8 A@2 ~@4 A@2 ~@2>".pickRestart({
  A: "~ x!2 ~@4 x!2 ~@3",
})).gain(0.19)

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

stack(
  pad_poly, acoustic_guitar_nylon, distortion_guitar, string_ensemble_2, piano, piano_soft, bass, kick, snare, hihat,
  mid_tom, crash, tambourine, ride
)

More by The Cranberries