Strudelify

Tomorrow

The Cranberries

KeyA minorTempo120 bpm
0:00/0:00
// Tomorrow — The Cranberries
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 100 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 clean
const electric_guitar_clean = note("<A@2 B@2 C ~@29 D E@2 F G H@2 I ~@58>".pickRestart({
  A: "[~@14 a3@4 ~ e4@3 a3@3 ~ e5@7 c#5@5 a4@3 a3@3 ~@2 a3@3 e4@4 a3@3 ~ e5@7]/2",
  B: "[~ c#5@3 ~ a4@3 a3@3 ~@2 a3@3 e4@4 a3@3 ~@4 f#5@3 ~ d5@3 ~ c#5@3 ~@5 d4@11 c#4@9 ~, ~@24 g5@5 ~@35]/2",
  C: "a3@8 b3@9 ~@15, ~@4 c4 ~@11", D: "~@25 a4@7",
  E: "[~@3 a4@5 ~@4 d5@7 ~ e5@3 d5@2 a4@3 b4@3 a4@3 ~ g4@4 ~@2 d5@2 ~@3 c5@7 ~@3 c5@6 ~@2]/2",
  F: "~ d5@8 ~ e5@3 d5@3 a4@3 b4@3 a4@4 g4@5 ~", G: "~ a4@10 ~ a4@4 ~@5 d5@7 ~@2 e5@2",
  H: "[~@2 d5@2 a4@2 ~ b4@3 a4@3 g4@4 ~@2 d5@6 ~@2 c5@8 ~ c5@4 ~@4 d5@6 ~@2 e5@3 ~ d5@3 a4@3 b4@2]/2",
  I: "a4@3 ~ g4@3 ~@25",
})).s("gm_electric_guitar_clean").gain(0.26)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@4 A B C D@2 E@2 F G@4 H@2 I J@4 ~@30 K@2 L M@2 N O P Q@3 R S ~@34>".pickRestart({
  A: "~@11 e4@4 ~", B: "~@2 e4@6 ~@2 e4@2 ~ e4@11 ~@2 e4@2 ~ e4@3", C: "~@2 d4@12 ~@2 d4@4 ~@2 d4@3 c#4@7",
  D: "[~@3 a3@4 c4@3 a3@3 g3@7 a3@25 ~@2 e4@3 ~@3 e4@2 ~ e4@6 ~@2]/2",
  E: "[~@2 d4@2 ~@2 d4@4 ~@2 d4@2 ~@2 c#4@4 ~@11 g3@3 a3@3 c4@4 a3@3 g3@7 a3@13]/2",
  F: "~ e4@7 ~@3 e4@5 ~@2 e4@2 ~ e4@9 e4@2",
  G: "[~ e4@2 ~ e4@2 ~@2 d4@11 ~ d4@2 ~@4 a3@3 g3@2 c4@3 a3@3 g3@5 ~ a3@9 ~@2 e4@7 ~ e4@5 ~@2 e4@2 e4@7 ~@3 e4@2 ~ e4@2 ~ e4@2 ~ d4@11 ~@2 d4@2 ~ d4@3 ~ c#4@3 ~@15]/4",
  H: "[~ g3@2 a3@3 c4@4 a3@3 g3@6 ~ a3@11 e4@7 ~@3 e4@5 ~@3 e4 ~@2 e4@5 ~@2 e4@2 ~ e4@2]/2",
  I: "~ d4@8 ~@5 d4@2 ~@2 c#4@2 ~@3 g3@2 a3@4 c4@3",
  J: "[~ a3@2 g3@6 ~ a3@11 ~ e4@7 ~@2 e4@5 ~@2 e4@2 ~ e4@7 d4@2 d4@21 ~@8 g3@3 a3@3 c4@4 a3@3 g3@8 a3@6 ~@22]/4",
  K: "[~@17 e4@9 ~@3 e4@7 ~@2 e4@5 ~ e4@2 ~ e4@7 ~ e4@2 ~ e4@2 ~ e4@3]/2",
  L: "~ d4@8 ~ d4@2 ~ d4@2 ~ d4@2 ~@2 d4@3 c#4@7 ~@2",
  M: "[~ g3@3 a3@4 c4@2 ~@2 g3@7 a3@12 e4@7 ~@3 e4@5 ~ e4@2 ~@2 e4@6 ~@2 e4@2 ~ e4@2, ~@11 a3@2 ~@51]/2",
  N: "~ e4@2 ~ d4@8 ~@2 d4@2 ~ d4@3 ~@2 d4@3 ~ c#4@6", O: "~@3 g3@3 a3@3 c4@3 a3@3 ~ g3@6 a3@10",
  P: "~@2 e4@7 ~@3 e4@5 ~ e4@2 ~@2 e4@7 ~@2 e4",
  Q: "[~@2 e4 ~@2 e4@2 ~@2 d4@8 ~ d4@2 ~ d4@3 ~@3 d4@3 c#4@7 ~@3 g3@3 a3@3 c4@4 a3@2 g3@6 a3@12 ~ e4@8 ~ e4@5 ~ e4@2 ~ e4@7]/3",
  R: "~ e4@2 ~ e4@2 ~ e4@2 ~@2 d4@4 ~ d4 ~@2 d4 ~@2 d4 ~@2 d4@2 ~ c#4@4", S: "~@8 g3@4 a3@2 c4@3 a3@3 g3@5 ~ a3@6",
})).s("gm_acoustic_guitar_steel").gain(0.26)

// other · synth brass 1
const synth_brass_1 = note("<~@4 A@2 B@2 C@3 D@3 E@3 F G@2 H@3 I J@2 K@3 L@3 ~@9 M@3 N@8 ~@48>".pickRestart({
  A: "[~@16 a4@2 ~ a4@10 ~@2 a4@2 ~@2 a4@7 ~ a4@14 ~@2 a4@5]/2",
  B: "[~ a#4@8 ~@3 a#4@3 g#4@2 g4@3 f4@30 ~@2 a4@3 ~ a4@6 ~@2]/2",
  C: "[a4@2 ~ a4@5 ~@2 a4@2 ~ a4@4 ~ c5@4 ~@2 c5@12 ~ a#4@2 ~ a#4@5 ~@2 d5@5 c5@5 ~@26 a4@2 ~ a4@5 ~@2 a4 ~@2, ~@59 a#4@28 ~@9]/3",
  D: "[a4@5 ~ a4@2 ~ a4@11 ~ a4@2 ~ a4@2 ~@2 a#4@8 ~@2 a#4@3 g#4@3 g4@3 f4@31 ~@2 a4@2 ~@2 a4@7 ~@2 a4@2 ~]/3",
  E: "[~ a4@6 ~ a4@2 ~ a4@5 ~@2 c5@4 ~@2 c5@20 ~ a#4@4 a4@4 g4@3 ~ f4@22 ~ a4@5 ~ a4@2 ~@2 a4@6]/3",
  F: "~ a4@20 a#4@10 ~", G: "[~ a#4@3 ~ g#4@3 g4@3 ~ f4@26 ~@3 a4@3 ~ a4@7 ~ a4@3 a4@6 ~@2]/2",
  H: "[~ a4@2 ~ a4@3 ~@3 a4@5 ~@2 c5@6 ~ a#4@18 ~@6 d5@4 ~ d5@10 c5@6 ~@27]/3",
  I: "~@3 f4@2 ~@2 f4@2 ~ f4@2 ~@3 c4@3 ~ d4@9 f4@4", J: "[~@3 d#4@2 ~ c4@41 ~@17]/2",
  K: "[~@14 f4@2 ~@2 f4 ~@2 f4@3 ~ c4@4 d#4@12 f4@6 ~ d#4@2 d4@3 ~ c4@28 ~@14]/3",
  L: "[~@21 f4@2 ~@2 f4 ~@2 f4@2 ~ d#4@2 d4@12 f4@6 ~ d#4 ~ d4@2 c4@26 ~@14]/3", M: "[~@29 g4@57 ~@3 g4@7]/3",
  N: "[~@3 d4@8 ~ c#4@8 d4@4 e4@94 ~ g4@79 ~@2 g4@9 d4@10 ~ c#4@8 ~@28]/8",
})).s("gm_synth_brass_1").gain(0.51)

// other · synth brass 1 · soft notes
const synth_brass_1_soft = note("<~@53 A B C D@3 E F@3 ~@3 G H@3 I J K L M N@2 ~ O@2 P Q R@2 ~@16>".pickRestart({
  A: "~@23 a4@4 ~@5", B: "~ a4@2 ~ a4@8 ~ a4@2 ~ a4@6 ~ a4@2 ~ a4@2 a4@3 ~",
  C: "a#4@5 ~@3 a#4@2 ~ a#4@3 g#4@2 g4@3 ~ f4@12",
  D: "[~@27 a4 ~@2 a4@7 ~ a4@2 ~ a4@5 ~@2 a4@2 ~ a4@4 ~@2 c5@3 ~@3 c5@13 a#4 ~@2 a#4@3 ~@3 d5@5 c5@5 ~]/3",
  E: "~ a#4@3 ~@28",
  F: "[~ a4@6 ~@2 a4@2 ~ a4@5 ~ a4@2 ~ a4@8 ~@2 a4@2 ~ a4@2 ~ a4@2 ~ a#4@9 ~@2 a#4@3 g#4@2 ~ a4@3 g4@3 f4@28 ~@5]/3",
  G: "~@25 f5@3 g5@4", H: "[~ f5@2 e5@2 ~ c5@7 d5@9 ~ c5@58 ~@11 g5@2 ~@2, ~@3 d5 ~@44]/3",
  I: "g5 ~@3 f5@3 e5@3 ~ f5@9 ~@6 f#5@2 ~@4", J: "~@5 e5 ~@26", K: "~@9 f5 ~ g5@3 ~@3 g5@2 ~ g5@3 ~@3 g5@6",
  L: "~ b4@5 c5@3 ~ d5@9 ~@7 d5@6", M: "~@2 e5@5 ~@2 f5@3 ~@7 d5@4 e5@3 ~@6",
  N: "[e5@4 f5@4 e5@2 ~@2 c5@9 b4@4 c5@4 ~@2 c5@8 ~ b4@10 ~@14, ~@10 d5@9 ~@10 d5@11 ~@24]/2",
  O: "[~@31 g5@2 ~ g5@5 ~ g5@2 ~ g5@3 ~@3 g5@6 d5@6 ~ e5@2]/2", P: "~ f5@7 ~@6 d5@7 ~ e5@2 f5@4 ~@4",
  Q: "~@5 d5@3 ~ d5@5 ~ g5@6 ~@3 e5@4 ~ f5@3", R: "[e5@2 d5@6 c5@3 b4@3 c5@6 d5@10 ~ c5@7 b4@8 ~@18]/2",
})).s("gm_synth_brass_1").gain(0.26)

// bass · electric bass finger
const bass = note(`<
  ~@21 A B@2 C@4 D E@4 F@2 ~@6 G@3 H I J K L M@3 N@2 ~@11 O@3 P@2 Q R S T U V W X Y Z AA@2 AB AC@2 ~@15
>`.pickRestart({
  A: "~@26 g2@3 a2@3", B: "[~@4 a2@7 ~@6 a2@5 ~@2 a2@2 a2@2 ~@2 a2@5 ~@2 a2@5 ~@2 a2 ~@2 a2@2 ~ b2@14]/2",
  C: "[~ b2@2 ~ b2@2 ~ b2@7 c3@12 ~@2 g2@3 a2@4 c3@3 a2@4 g2@6 a2@8 ~@5 a2@5 ~@7 a2@4 ~@2 a2@5 ~@4 a2 ~@3 b2@9 ~@3 b2 ~@2 b2 ~@2 b2 ~@2 b2@3 c3@10 ~@2]/4",
  D: "~@2 g2@3 a2@3 c3@3 a2@4 g2@6 a2@11",
  E: "[~@2 a2@5 ~@2 a2 ~@2 a2 ~@2 a2@4 ~@3 a2@5 ~ a2 ~@2 a2@3 b2@10 ~@2 b2@2 ~@2 b2 ~@2 b2 ~@2 b2@3 c3@10 ~@2 g2@3 a2@3 c3@3 a2@4 g2@6 a2@10 ~@2 a2@5 ~@2 a2 ~@2 a2 ~@2 a2@5 ~ a2@5 ~@2]/4",
  F: "[a2@2 a2@3 ~ b2@37 ~@21]/2",
  G: "[~@10 a2@8 ~@2 a2@5 ~@3 d3@8 ~@2 d3@8 ~ d3@2 ~ d3@2 ~ d3@2 ~ d3@3 ~ c3@9 ~ c3@2 ~ c3@2 ~ c3@3 ~ d3@8 ~@2 d3@6]/3",
  H: "~@3 d3@2 ~ d3@2 ~ d3@2 ~ d3@3 ~ a2@8 ~@3 a2@2 ~ a2 ~", I: "~ a2 ~@2 d3@8 ~@2 d3@7 ~ d3@2 ~ d3@2 ~ d3@3 ~",
  J: "~@3 c3 ~@2 c3@2 ~ c3@2 ~@2 c3@3 ~@7 d3@2 ~ d3@2 ~ d3@2 ~", K: "d3@5 ~@6 d3 ~@2 d3@2 ~ d3@2 ~ d3@3 a2@9",
  L: "~@2 a2@2 ~ a2@2 ~ a2@2 ~ d3@8 ~@2 d3@8 ~ d3@2",
  M: "[~ d3@2 ~ d3@2 ~ d3@2 ~@2 c3@8 ~ c3@2 ~ c3@2 ~ c3@2 ~ d3@7 ~@4 d3@11 ~ d3@2 ~ d3@2 ~ d3@2 ~ a2@8 ~@2 a2@2 ~@2 a2@2 ~ a2 ~@2 d3@7 ~@2 d3@6]/3",
  N: "[~ d3@2 ~ d3@2 ~ d3@2 ~@2 d3@3 c#3@25 ~@25]/2",
  O: "[~@10 g3@2 ~ a3@3 c4@3 a3@2 g3@5 ~ a3@10 ~@3 a3@5 a3@2 ~ a3@2 ~ a3@5 ~ a3@5 ~ a3@2 ~ a3@3 b3@13 ~ b3@2 ~ b3@2 ~ b3@2 ~ b3@2 ~@2]/3",
  P: "[c4@11 ~ g3@3 a3@3 c4@3 a3@3 g3@6 ~ a3@11 ~@2 a3@5 a3@2 ~ a3@2 ~ a3@5 ~@2 a3@2]/2",
  Q: "~@2 a3@2 a3@2 ~ a3@3 b3@11 ~@2 b3@2 b3@2 ~@2 c4@2 ~", R: "c4@2 c4@12 ~ g3@2 a3@3 ~ b3@2 c4@3 a3@3 g3@3",
  S: "~@3 a3 ~@2 a3@7 ~ a3@2 ~ a3@2 ~@2 a3@2 ~ d4@8", T: "~ d4@7 d4@2 ~ d4@2 ~ d4 ~@2 d4@3 ~@4 g#3@4 ~@4",
  U: "b3@5 ~@2 c4@7 ~@2 c4 ~@2 c4@2 ~ c4@2 ~ d4@7", V: "~@3 d4@6 ~@2 d4@2 ~ d4@2 ~ d4@2 ~ d4@3 ~ a3@8",
  W: "~@2 a3@2 ~ a3@2 ~ a3@2 ~ d4@8 ~ d4@7 ~@2 d4@2 ~", X: "d4@2 ~ d4@3 ~@3 c4@2 ~ c4@2 ~ c4@2 ~ c4@3 ~@6 d4@2 ~ d4@2",
  Y: "~ d4@2 ~ d4@3 ~@6 d4 ~ d4 ~@3 d4 ~ d4@3 ~ a3@7", Z: "~@2 a3@2 ~ a3@2 ~ a3@2 ~ d4@8 ~@2 d4@6 ~@2 d4@2 ~",
  AA: "[d4@2 ~ d4 ~@2 d4@2 ~ c4@8 ~@2 c4 ~@2 c4 ~ c4@2 ~ d4@8 ~@2 d4@7 ~ d4@2 ~@2 d4@2 ~ d4 ~ d4@4 a3@6]/2",
  AB: "~@3 a3@2 ~@2 a3@2 a3@2 ~ d4@7 ~@2 d4@7 d4@2 ~@2",
  AC: "[d4@2 ~ d4@2 ~ d4@2 ~ c4@8 ~@2 c4@2 ~ c4@2 ~ c4@2 ~ d4@7 ~ d4@7 ~ d4@2 ~ d4@2 ~@2 d4@2 d4@2 ~@3 a3@2 ~@4]/2",
})).s("gm_electric_bass_finger").gain(0.26)

// bass · electric bass pick
const bass_2 = note(`<
  ~@38
  [~ a1@3 ~@3 a1@3 ~@4 a1@3 ~@4 a1@4 ~@3 a1@4]
  [~@2 a1@4 ~@2 a1@3 ~@3 a1@3 ~@3 a1@3 ~@4 a1@4 ~]
  [~@2 a1@4 ~@2 a1@3 ~@3 a1@4 ~@2 a1@4 ~@3 a1@3 ~@2]
  [~@2 a1@3 ~@27]
  ~@58
>`).s("gm_electric_bass_pick").gain(0.26)

stack(electric_guitar_clean, acoustic_guitar_steel, synth_brass_1, synth_brass_1_soft, bass, bass_2)

More by The Cranberries