Strudelify

War Child

The Cranberries

KeyA majorTempo113 bpm
0:00/0:00
// War Child — The Cranberries
// 113 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 110 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 · lead 3 calliope · "Dolores 2"
const lead_3_calliope = note(`<
  ~@6 A@2 B C@2 D E@2 F G@3 H@2 I@3 J K@2 F G@3 L@3 M@2 N O@2 P@4 Q@3 ~@6 R@2 F S@2 T U@2 V@3 W X@2 Y@3 D Z@5 AA L@3 M@2
  N O@2 P@4 Q@3 AB@2 AC AD@2 AE AF@2 AC AD@2 AE ~ AG@2 ~ AG@2 ~@2
>`.pickRestart({
  A: "[~@12 a4@6 ~@2 b4@3 ~ c#5@6 ~@2]/2", B: "e5@2 d5@7 ~ a4@2 b4@3 ~",
  C: "[a4@5 ~ g#4@5 ~ a4@6 ~@2 b4@3 ~ c#5@6 ~@2]/2", D: "e5 d5@6 ~", E: "[~@8 c#5@2 a4@8 ~@2 b4@3 ~ c#5@5 ~ d5@2]/2",
  F: "e5@3 ~ d5@5 ~ a4@2 b4@3 ~", G: "[a4@5 ~ g#4@5 ~ d5@10 ~@2 b4@10 ~@2 a4@10 ~@2]/3",
  H: "[~@5 g#4 a4@3 ~ b4 c#5@4 ~]/2", I: "[e5@2 d5@9 ~ b4@2 a4@7 ~ g#4@5 ~ a4@6 ~@2 b4@3 ~ c#5@5 ~ d5@2]/3",
  J: "e5@3 ~ d5@10 ~@2", K: "[~@6 d5@2 c#5@3 ~ a4@6 ~@2 b4@2 c#5@7 ~ d5@2]/2", L: "[~@6 e5@5 ~ a5@9 ~@3]/3",
  M: "[a5@3 ~ f#5@2 a5@16 e5@2 e5@2 d5@2 c#5@3 ~]/2", N: "d5@5 ~@3",
  O: "[a5@3 ~ f#5@2 a5@13 ~ e5@2 e5@2 e5@2 d5@2 c#5@3 ~]/2", P: "[d5@11 ~@3 d5@5 d5 b4@5 ~ a4@5 ~]/4",
  Q: "[~@6 a4@2 f#4@3 ~ d5@10 d5@2 b4@10 ~@2 a4@10 ~@2]/3", R: "[~@8 d5@3 ~ a4@6 ~@2 b4@3 ~ c#5@5 ~ d5@2]/2",
  S: "[a4@5 ~@3 g#4@2 g#4@2 a4@6 ~@2 b4@2 b4@2 c#5@6 ~@2]/2", T: "e5!2 d5@5 ~",
  U: "[~@6 d5@2 c#5@3 ~ a4@6 ~@2 b4@2 b4@2 c#5@7 ~]/2",
  V: "[e5@2 d5@9 ~ b4@2 a4@4 g#4@4 a4@2 a4@3 ~ d5@10 ~@2 b4@6 b4@2]/3", W: "a4 a4@3 ~@4",
  X: "[~@10 a4@2 a4@6 ~@2 b4@3 ~ c#5@5 ~ d5@2]/2", Y: "[e5@3 ~ d5@7 ~ b4@2 a4@7 ~@3 g#4@3 ~ a4@6 ~@2 b4@2 c#5@8 ~@2]/3",
  Z: "[~@6 d5@2 c#5@3 ~ a4@6 ~@2 b4@3 ~ c#5@5 ~ e5@5 ~ d5 b4@7 ~@2 a4@8 ~@6 d5@10 ~@2 b4@7 ~]/5", AA: "a4@7 ~ a4@6 ~@2",
  AB: "[~@6 a4@5 b4 c#5@2 d5@2]/2", AC: "e5@3 ~ a5@10 ~@2", AD: "[~@4 c#6@2 d6@5 ~ e5@10 d5@2 c#5@6 ~@2]/2",
  AE: "a4 d5@6 ~", AF: "[~@6 d5@2 c#5@3 ~ a4@10 b4@2 c#5@6 ~@2]/2", AG: "[~@4 d5@5 ~ a4@5 ~]/2",
})).s("gm_lead_3_calliope").gain(0.48)

// chords · acoustic guitar steel · "Guitare"
const acoustic_guitar_steel = note(`<
  A B C D B C E B C D B C D B C F G H I B C D B C D B C F G H I B C D B C D B C F G H J G H I B C D B K L B C D B C D B
  C F G H I B C D B C D B C F G H I B C D B C D B C F G H J G H I B C D B C M B C D B C F G H J G H N@2
>`.pickRestart({
  A: "~@13 c#4@3, ~@3 [e3,a3]", // A5
  B: "[e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@2 [e3,a3,c#4]@2", // A
  C: "[e3,a3,c#4]@2 [e3,a3,c#4]@2 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2", // A D
  D: "[f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [e3,a3,c#4]@3 ~", // D A
  E: "~ d4@10 ~ [e3,a3,c#4]@3 ~, [f#3,a3]@5 ~@3", // A F#m
  F: "[f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@3 ~", // D
  G: "[f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,b3,d4]@3 ~ [f#3,b3,d4]@2 [f#3,b3,d4]@2", // D Bm
  H: "[f#3,b3,d4]@2 [f#3,b3,d4]@2 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2", // Bm A
  I: "[e3,a3,c#4]@3 ~ [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@3 ~", // A
  J: "[e3,a3,c#4]@3 ~ [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [f#3,a3,d4]@3 ~", // A D
  K: "[e3,a3,d4]@2 [e3,a3,d4]@2 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2", // Dsus2 D
  L: "~ [a3,d4]@10 ~ [e3,a3,c#4]@3 ~, [d3,f#3]@5 ~@3", // D5 A D
  M: "[f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [e3,a3,c#4]@3 ~", // D F#m A
  N: "[~ c#4@21 ~@10, [e3,a3]@11 ~@5]/2", // A5
})).s("gm_acoustic_guitar_steel").gain(0.19)

// other · violin · "Violon"
const violin = note(`<
  ~@15 A@4 ~@8 B@8 C@6 D@6 E@3 F@3 ~@7 G@4 ~@3 H@3 I@7 J@3 K L@8 M@5 N O@5 N P@2 Q@3 R@2 S@2
>`.pickRestart({
  A: "[~@3 d4@3 b3@3 c#4@6 ~]/4", B: "[~@3 d4@3 b3@3 c#4@6 a3@3 c#4@3 d4@6 a3@3 c#4@2]/8",
  C: "[~ d4@6 a3@3 c#4@3 d4@6 d4@3 b3@2]/6", D: "[~@4 c#4@24 d4@12 b3@12 c#4@23 ~ a3@20]/6",
  E: "[e4@2 ~@6 a5@6 e4@5 ~ a4@2 f#4@2, ~ a4@6 ~@5]/3", F: "[c#4@2 ~@4 c#4@2 d4@4 ~@2 c#4@5 ~@5, ~ a3@6 ~@5]/3",
  G: "[~@6 d4@6 b3@6 [c#4,a4]@11 ~@3]/4", H: "[~@8 a3@12 d4@19 ~@9]/3",
  I: "[~@8 a3@31 ~@5 d4@12 b3@12 c#4@24 a3@12 c#4@8]/7", J: "[~ d4@6 a3@3 c#4@2]/3", K: "~ [d4,a4]@3",
  L: "[~@4 f#4@3 ~ a4@3 ~ [a3,a4]@12 [c#4,e4]@12 d4@24 [d4,a4]@12 [b3,f#4]@12 c#4@24 d4@12 b3@8]/8", // A C#m D5 B5
  M: "[~@4 c#4@23 ~ c#4@12 e4@12 a4@24 ~@4]/5", N: "~@4 e4@3 ~", O: "[c#4@3 ~ f#4@22 ~@2 c#4@12 e4@12 a4@24 ~@4]/5",
  P: "[c#4@3 ~ f#4@22 ~@6]/2", Q: "[~@2 [f#3,f#4]@3 [e3,e4]@6 ~]/3", R: "[~@2 [f#3,f#4]@3 [e3,e4]@3]/2",
  S: "[[a3,b4]@11 ~@5]/2", // Asus2
})).s("gm_violin").gain(0.05)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@15 A@4 ~@5 B@8 C@6 D@6 E@3 F@3 G@8 H I J@8 I K@8 L@6 M N@8 O@6 P@3 Q@8 ~
>`.pickRestart({
  A: "[~@3 [d2,d3]@3 [b1,b2]@3 [a1,a2]@6 ~]/4", // D B A
  B: "[~@6 a1@6 c#2@6 d2@11 ~ [d2,d3]@6 [b1,b2]@6 [a1,a2]@12 [a1,a2]@10]/8", // D B A
  C: "[~@2 [d2,d3]@11 ~ [a1,a2]@11 ~ [d2,d3]@11 ~ [a1,a2]@5 ~ [a1,a2]@4]/6", // D A D A
  D: "[~@2 [d2,d3]@11 ~ [d2,d3]@6 [b1,b2]@6 [a1,a2]@12 [d2,d3]@5 ~ [b1,b2]@4]/6", E: "[~@4 [a1,a2]@23 ~ [a1,a2]@20]/3",
  F: "[[c#2,f#3] [d2,a2,a3]@6 [a2,e3]@5, ~ d3@11]/3", // F#5 D5 A5
  G: "[~@24 [f#3,d4]@3 ~ [e3,e4]@10 ~@86 a1@4, ~ d3@31, ~ d2@6 ~@25]/8", H: "~ c#2", I: "~ d2@3",
  J: "[~@6 d2@5 ~ [b1,b2]@5 ~ [a1,a2]@11 ~ a1@6 c#2@6 d2@12 a1@6 c#2@4, ~@3 d3@29]/8", // B A
  K: "[~@6 a1@6 c#2@6 d2@12 d2@5 ~ [b1,b2]@5 ~ [a1,a2]@11 ~ [a1,a2]@10, ~@3 a3@12 d3@17]/8", // B A
  L: "[~@2 d2@11 ~ [a1,a2]@11 ~ d2@11 ~ [a1,a2]@5 ~ [a1,a2]@4, ~ d3@12 d3@11]/6", M: "~ [d2,d3]@3",
  N: "[~@12 d2@12 [b1,b2]@12 [a1,a2]@24 d2@10 ~@2 [b1,b2]@10 ~@2 [a1,a2]@23 ~ [a1,a2]@10 ~@2 [a1,a2]@8, ~@3 d3@12 d3@17]/8", // B A B A
  O: "[~@2 d2@11 ~ [a1,a2]@5 ~ [a1,a2]@5 ~ d2@11 ~ [a1,a2]@5 ~ [a1,a2]@4, ~ d3@12 d3@11]/6", // A
  P: "[~@2 d2@11 ~ [a1,a2]@5 ~ [a1,a2]@4, ~ d3@11]/3", // A
  Q: "[~ d3@6 d2@3 [b1,b2]@3 [a1,a2]@6 d2@3 [b1,b2]@3 [a1,a2]@3 [a1,a2]@4, ~@2 d2@11 ~ d3@24 d3@26]/8", // B A B A
})).s("gm_string_ensemble_1").gain(0.35)

// other · trumpet · "Trompette"
const trumpet = note("<~@36 A ~@3 B@2 C@2 ~@6 D E ~@31 F@5 ~@2 G@2 H I ~@2 J@2 H I ~@10>".pickRestart({
  A: "d4@5 ~@3", B: "[~@4 d4@5 ~ c#4@5 c#4]/2", C: "[c#4@5 ~ d4@2 e4@3 ~ d4@12 ~@8]/2", D: "~@4 f#4@3 ~ g#4@3 ~ a4@3 ~",
  E: "[e4,a4]@5 ~@3", F: "[~@2 d4@11 ~ a4@6 d5@6 c#5@9 ~@5]/5", G: "[~@6 a3@5 b3 c#4@2 d4@2]/2",
  H: "e4@3 ~ [a3,a4]@5 ~ [d4,d5]@2 [e4,e5]@3 ~", I: "[f#4,f#5]@4 [a4,a5]@2 [a4,a5]@5 ~@5", J: "[~@6 a3@5 b3 c#4@3 ~]/2",
})).s("gm_trumpet").gain(0.21)

// other · trumpet · "Trompette" · soft notes
const trumpet_soft = note("<~@36 A@2 B@2 ~@3 C@3 ~@41 D@4 ~@16 E F@2>".pickRestart({
  A: "[~@3 c#4@3 c#4@2]/2", B: "[b3 a3@6 ~]/2", C: "[~@8 b3@12 a3@23 ~@5]/3",
  D: "[~@6 b4@2 a4@4 f#4@12 d4@12 c#4@23 ~@5]/4", E: "~@2 e4@5 ~", F: "[c#4@11 ~@5]/2",
})).s("gm_trumpet").gain(0.14)

// other · trombone
const trombone = note(`<
  A@2 B C@2 D@2 ~@24 E F@3 G@3 H@8 ~@3 I J K@2 ~@23 E L M@2 N@3 O P@8 Q R ~@2 S@2 Q R ~@5 T@2 U@3
>`.pickRestart({
  A: "[~@6 [e3,e4]@9 [d3,d4]]/2", B: "[e3,e4] [a3,a4]@3",
  C: "[[a3,a4]@2 [g#3,g#4]@2 [f#3,f#4]@2 [e3,e4]@5 [d3,d4] [c#3,c#4]@4]/2", D: "[[b2,b3]@4 [a2,a3]@19 ~@9]/2",
  E: "~@8 e4@3 ~ c#4@3 ~", F: "[e4@3 ~ [a3,a4]@18 ~@6 e4@10 ~@2 a3@4 e4@3 ~]/3",
  G: "[a3@3 ~ f#4@22 ~@2 [e3,e4]@10 [e3,e4]@2 c#4@6 ~@2]/3", // E
  H: "[b3@3 ~ a3@22 ~@2 a3@12 b3@12 a3@24 a3@12 f#4@12 a4@23 ~@5]/8", I: "~@4 c#4@3 ~",
  J: "d4@3 ~ f#4@3 ~ g#4@3 ~ a4@3 ~", K: "[a4@5 ~ a3@5 ~@5]/2", L: "e4@3 ~ [a3,a4]@10 ~@2",
  M: "[[a3,a4]@5 ~ [f#3,f#4]@2 [e3,e4]@3 ~ c#4@10 c#4@2 c#4@6 ~@2]/2", N: "[e4@3 ~ d4@22 ~@2 e4@10 e4@2 c#4@6 ~@2]/3",
  O: "e4@3 ~ d4@10 e4@2", P: "[f#4@10 ~@2 f#3@24 a3@24 a3@12 f#3@10 ~@2 a3@22 ~@2 a3@10 b3@2 c#4@3 ~ a3@3 ~]/8",
  Q: "e3@3 ~ a3@5 ~ d4@2 e4@3 ~", R: "f#4@4 a4@2 a4@5 ~@5", S: "[~@12 a3@10 b3@2 c#4@3 ~ a3@3 ~]/2",
  T: "[e4@3 ~ c#4@2 e4@5 ~ a4@12 f#4@6 e4@2]/2", U: "[f#4@2 e4 d4@2 c#4@2 ~ e3@11 ~@5, ~@7 b3@12 ~@5]/3",
})).s("gm_trombone").gain(0.21)

// other · trombone · soft notes
const trombone_soft = note("<~@66 A@4 ~@23 B@2 C@2 ~@2 B@2 C@2 ~@7>".pickRestart({
  A: "[~@8 b3@3 ~ c#4@8 d4@4 e4@12 d4@20 ~@8]/4", B: "[~@6 e4@5 e4 c#4@4]/2", C: "[e4 d4@6 ~]/2",
})).s("gm_trombone").gain(0.14)

stack(lead_3_calliope, acoustic_guitar_steel, violin, string_ensemble_1, trumpet, trumpet_soft, trombone, trombone_soft)

More by The Cranberries