Strudelify
Dreams cover art

Everybody Else Is Doing It, So Why Can't We?

Dreams

The Cranberries

KeyE majorTempo130 bpm
0:00/0:00
// Dreams — The Cranberries
// 130 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 144 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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.

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@9 A@3 B@7 ~@5 C@7 D@2 E@2 F@8 ~@21 C@7 D@2 E@2 F@8 ~@13 C@7 D@2 A@3 B@7 ~@29
>`.pickRestart({
  A: "[~@7 b3@2 ~@6 b3@2 ~@6 b3, ~ b3@3 b3@3 ~@2 b3@3 b3@3 ~@2 b3@3 b3@3 ~, ~@2 g#3@3 g#3@5 g#3@3 g#3@5 g#3@3 g#3@3, ~@3 e3@8 e3@8 e3@5]/3",
  B: "[~@7 b3@2 ~@6 b3@2 ~@6 b3@2 ~@6 b3@2 ~@6 b3@16 ~, ~ b3@3 b3@3 ~@2 b3@2 d#3@2 a3@4 b3@3 b3@3 ~@2 b3@2 e3@8 e3@16 ~@5, ~@2 g#3@3 g#3@16 g#3@5 g#3@2 b3 g#3@4 b3@3 b3@3 ~@17, ~@3 e3@15 a3@16 g#3@3 g#3@16 ~@3, ~@10 a3@2 b3@2 d#3@5 d#3@3 d#3@16 ~@18]/7",
  C: "[~@25 e4@46 ~ [a3,c#4,e4]@47 ~ [a3,b3,f#4]@47 [e2,b2], ~@23 [e2,b2]@48 [a2,e3]@48 [b2,d#3]@48 ~, ~ [e3,g#3,b3]@2 ~@4]/7", // A B7 E5 A5 B E
  D: "[~ e4@47, [e3,g#3,b3]]/2", // E
  E: "[~@7 b3@2 b3!2 ~@4 g#3, ~ b3@3 b3@3 ~@4 b3@3 b3@2, ~@2 g#3@3 g#3@7 g#3@3 ~, ~@3 e3@10 e3@3]/2",
  F: "[~@7 b3@2 b3!2 ~@12 b3@2 ~@6 b3@2 ~@6 b3@2 b3!2 ~@4 g#3@16 ~, ~ b3@3 b3@3 ~@4 b3@3 b3@3 b3@2 d#3@2 a3@4 b3@2 d#3@3 d#3@16 ~@18, ~@2 g#3@3 g#3@7 g#3@3 g#3@13 b3@3 ~@2 b3@2 e3@10 e3@16 ~@3, ~@3 e3@10 e3@16 g#3@5 g#3@2 b3 g#3@7 g#3@3 ~@17, ~@18 a3@2 b3@2 d#3@4 a3@16 ~ b3@3 b3@16 ~@2]/8",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A@2 B@2 C@2 A D A@2 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@2 E@2 F@2 G@2 H@2 A@2 B@2 C@2 A@4 B@2
  C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A D A@2 B@2 C@2 A D A@2 B@2 C@2 A D ~@15
>`.pickRestart({
  A: "e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~",
  B: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~",
  C: "b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~", D: "e1@2 ~ e1@2 ~ e1@2 ~ e1@6 e1@3 e1@6",
  E: "[g1@10 ~@2 g1@2 ~ g1@5 ~ g1@5 ~ g1@2 ~ g1@8 ~ g1@5 ~ g1@2 ~]/2",
  F: "[c2@10 ~@2 c2@2 ~ c2@5 ~ c2@5 ~ c2@5 ~ c2@2 ~ c2@2 ~ c2@5 ~ c2@2 ~]/2",
  G: "[g1@10 ~@2 g1@2 ~ g1@5 ~ g1@5 ~ g1@2 ~ g1@5 ~ g1@3 ~ g1@3 g1@3 ~@2]/2",
  H: "[c2@10 ~@2 c2@2 ~ c2@5 ~ c2@5 ~ c2@5 ~ c2@2 ~ c2@2 ~ d2@5 ~ d2@2 ~]/2",
})).s("gm_electric_bass_finger").gain(0.4)

// other · rock organ · "ORGAN 3"
const rock_organ = note("<~@6 A ~ A ~@97 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@15>".pickRestart({
  A: "e5 [c#5,e5] c#5 e5 [c#5,e5] c#5 b5 [g#5,b5] g#5 b5 [g#5,b5] g#5 a5 [f#5,a5] f#5 a5 [f#5,a5] f#5 g5 [e5,g5] e5 g5 [e5,g5] e5", // C#m G#m F#m Em
})).s("gm_rock_organ").gain(0.19).pan(0.6)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  A B@2 C@2 D@2 E@2 ~@31 F@7 G@8 H@2 ~@23 F@7 I@2 ~@15 A B@2 C@2 D@2 J@2 K@4 L@2 J@2 K@4 L@2 M@2 ~@15
>`.pickRestart({
  A: "~@21 [b2,e3,g#3,b3,e4] [e2,b2,e3,g#3] [e2,b3,e4], ~@10 e2 ~", // E E5
  B: "[[b2,e3] ~@44 [a3,c#4,g#4] [e3,a3,c#4,g#4] e3, ~ [g#3,b3,e4]@46 ~, ~@22 e3 ~]/2", // E5 Amaj7 E
  C: "[[a3,c#4] ~@44 [b2,f#3,b3,d#4,f#4] [f#2,b2,f#3,b3] [f#2,d#4,f#4], ~ g#4@47, ~@22 f#2 ~]/2", // A B B5 D#m
  D: "[[b2,f#3] b3@43 ~ [b2,e3,g#3,b3,e4] [e2,b2,e3,g#3] [e2,b3,e4], ~ [d#4,f#4]@46 ~, ~@22 e2 ~]/2", // B5 E E5 D#m
  E: "[[b2,e3] e4@37 ~@5 [g#3,b3,e4]@4 ~, ~ [g#3,b3]@38 [b2,e3]@2 e2@6 ~, ~@19 e2 [g#3,b3,e4] [b2,e3]@3]/2", // E5 E G#m E5 E E5
  F: "[~@25 [g#3,b3,e4]@46 ~@2 [c#4,e4]@46 ~@2 [b3,d#4,f#4]@46 e2, ~@23 e2@48 a2@48 f#2@48 ~, ~ [b2,e3]@2 [e3,a3]@2 [b2,f#3]@2]/7", // E C#m B E5 A5 B5
  G: "[~ [g#3,b3,e4]@37 ~@11 [g3,b3,g4]@46 ~@2 [d4,e4]@46 ~@2 [g3,b3,g4]@46 c3, [b2,e3]@39 ~@8 g2@48 c3@48 g2@48 ~, ~ [b2,d3] [e3,g3] [b2,d3]]/8", // E G Dsus2 G E5 Bm Em Bm
  H: "[~ [d4,e4]@47, [e3,g3]]/2", I: "[~ [g#3,b3,e4]@37 ~@10, [b2,e3]@13 ~@3]/2",
  J: "[[b2,e3] [g#3,e4]@38 ~@6 [b2,e3,g#3,b3,e4] [e2,b2,e3,g#3] [e2,b3,e4], ~ b3@41 ~@2 e2@2 ~@2]/2", // E5 C#m E E5
  K: "[[b2,e3] e4@43 ~ [e3,a3,c#4,e4] [a2,e3,a3,c#4] ~ [e3,a3] ~@44 [d#3,a3,b3,f#4] [b2,d#3,a3,b3] [b2,f#4], ~ [g#3,b3]@47 ~ [c#4,e4]@47, ~@44 a2@2 ~ [a2,e4]@2 ~@43 b2@2 ~@2]/4", // E5 A A5 B7 B5 G#m C#m A5
  L: "[[d#3,a3] b3@43 ~ [b2,e3,g#3,b3,e4] [e2,b2,e3,g#3] [e2,b3,e4], ~ f#4@46 ~, ~@22 e2 ~]/2", // D#dim E E5
  M: "[[b2,e3] [g#3,e4]@38 ~@9, ~ b3@41 ~@6]/2", // E5 C#m
})).s("gm_distortion_guitar").gain(0.25).pan(0)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B A C@7 ~@6 D@3 E@5 D@3 F@7 ~@6 G@3 H@7 ~@6 D@3 E@5 D@3 F@7 ~@6 G@3 I@5 D@3 E@5 D@3 E@5 G@3 I@5 G@3 I@5 G@3 H@7
  ~@13
>`.pickRestart({
  A: "g#3@2 g#3@2 g#3 g#3@3", B: "g#3!3 g#3@2 g#3@3",
  C: "[g#3!3 g#3@2 ~@3 f#3@2 f#3@2 f#3 f#3@3 f#3!3 f#3@2 ~@3 g#3@2 g#3@2 g#3 g#3@3 g#3!3 g#3@2 g#3@16 ~@3, ~@5 g#3@16 f#3@16 ~@19]/7",
  D: "g#3!8", E: "[g#3!7 ~ f#3!8 f#3!7 ~ g#3!8 g#3!8, ~@7 g#3@16 f#3@16 ~]/5",
  F: "[g#3!7 ~ f#3!8 f#3!7 ~ g#3!8 g#3!7 g#3@16 ~, ~@7 g#3@16 f#3@16 ~@17]/7", G: "g#3@2 g#3!6",
  H: "[g#3@2 g#3!5 ~ f#3@2 f#3!6 f#3@2 f#3!5 ~ g#3@2 g#3!6 g#3@2 g#3!5 g#3@16 ~, ~@7 g#3@16 f#3@16 ~@17]/7",
  I: "[g#3@2 g#3!5 ~ f#3@2 f#3!6 f#3@2 f#3!5 ~ g#3@2 g#3!6 g#3@2 g#3!6, ~@7 g#3@16 f#3@16 ~]/5",
})).s("gm_electric_guitar_clean").gain(0.14).pan(0.7)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~ A@9 ~@31 A@8 ~@32 A@8 ~@16 A@8 ~@31>".pickRestart({
  A: "e3 [c#3,e3] c#3 e3 [c#3,e3] c#3 e3 [c#3,e3] c#3 e3 [c#3,e3] c#3 e3 [c#3,e3] c#3 e3 [c#3,e3] c#3 e3 [c#3,e3] c#3 e3 [c#3,e3] c#3", // C#m
})).s("gm_electric_guitar_jazz").gain(0.27).pan(1)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@17 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@24 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@16 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@39
>`.pickRestart({
  A: "[~ e5@46 ~, [g#4,b4]@47 ~]/2", B: "[~ e5@47, [a4,c#5]]/2", C: "[~ [b4,f#5]@46 ~, [d#4,a4]@47 ~]/2",
  D: "[~ e5@37 ~@10, [g#4,b4]@19 ~@5]/2", // G#m
})).s("gm_synth_strings_1").gain(0.11)

// other · lead 1 square · "SQUAREWAVE"
const lead_1_square = note("<~@31 A@2 ~@32 A@2 B@2 C@2 A@2 ~@22 A@4 B@2 C@2 A@2 ~@24 D@8 ~@7>".pickRestart({
  A: "[e5@3 ~]/2", B: "[c#5@3 ~]/2", C: "[d#5@3 ~]/2", D: "e2/8",
})).s("gm_lead_1_square").gain(0.39)

// other · piccolo · C#m
const piccolo = note(`<
  ~@49
  [e6 [c#6,e6] c#6 e6 [c#6,e6] c#6 e6 [c#6,e6] c#6 e6 [c#6,e6] c#6 e6 [c#6,e6] c#6 e6 [c#6,e6] c#6 e6 [c#6,e6] c#6 e6 [c#6,e6] c#6]!8
  ~@87
>`).s("gm_piccolo").gain(0.5).pan(0.2)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@18 A B C@2 D E ~ F A B G@2 D E ~ H@5 I@2 ~ J@5 I@2 ~ K L M N@2 L O P Q A B R@2 D E ~ F A B R@2 D E ~ J@5 I@2 ~ J@5
  I@2 ~@2 A B S@2 D T ~ F A B S@2 U@3 ~@8 V W X@2 Y Z AA ~ V W X@2 Y Z AA ~ V W X@2 Y Z AA ~ V W X@2 Y Z AA
>`.pickRestart({
  A: "g#4 b4", B: "e4@6 ~ e4", C: "[a4 g#4@2 f#4@2 e4@2 f#4@7 ~ b3]/2", D: "a4 g#4@2 b4@2 f#4 g#4!2", E: "e4@3 ~",
  F: "~@7 b3", G: "[a4 g#4@2 f#4@2 e4!2 f#4@7 ~@2]/2",
  H: "[~@3 f#4 g#4 f#4@2 g#4@2 f#4@2 g#4@2 b4@2 a4@2 ~@2 g#4 a4 g#4@2 a4@2 a4!2 a4@2 a4@2 b4@2 ~@6 b4]/5",
  I: "[b4 b4@2 b4@2 a4@2 g#4@2 ~@7]/2",
  J: "[~@3 f#4 g#4 f#4@2 g#4@2 f#4@2 g#4@2 b4@2 a4@2 ~@2 g#4 a4 g#4@2 a4@2 a4@2 a4@2 a4@2 b4@2 ~@6 b4]/5",
  K: "g4@22 ~ b4", L: "~@3 g4 b4 c5", M: "g4@16 b4 ~@7", N: "[~@12 g4@4 a4@4 a4@2 g4@12 ~ b4 ~@12]/2",
  O: "g4@10 ~ b4 ~@9 c5 ~ b4", P: "g4 a4", Q: "b4 ~", R: "[a4 g#4@2 f#4@2 e4!2 f#4@7 ~ b3]/2",
  S: "[a4 g#4@2 f#4@2 e4 d#4 f#4@7 ~ b3]/2", T: "e4 ~@3", U: "[a4@2 g#4 b4@3 f#4 e4@3 ~ b4@3 f#4 e4@2 ~@7]/3",
  V: "~ e4", W: "g#4", X: "[a4@3 b4 a4 ~ g#4@3 f#4@3 g#4@6 a4@3 g#4@12 f#4@9 e4@6]/2",
  Y: "f#4@3 g#4 f#4 ~ e4@3 d#4@3 e4@6 ~@6", Z: "f#4@3 g#4 f#4 ~ e4@3 d#4@3 e4@6 a4@6", AA: "g#4 ~",
})).s("gm_synth_brass_1").gain(0.48)

// chords · rock organ · "ORGAN 3"
const rock_organ_2 = note(`<
  ~@8 A B ~@6 A B ~@22 A B A B C D A B ~@24 A B ~@6 A B A B C D A B ~@18 A B C D A B A B A B C D A B A B A B C D A B A B
  A B ~@12
>`.pickRestart({
  A: "~@22 c#5 ~", B: "[c#5,e5]!2 ~ [c#5,e5]!2 ~ [c#5,e5]!2 ~ [c#5,e5]!2 ~ [c#5,e5]!2 ~ [c#5,e5] [c#5,e5]@6 ~@2",
  C: "~@22 a4 ~", D: "[c5,d#5] [b4,d#5] ~ [b4,d#5]!2 ~ [b4,d#5]!2 ~ [b4,d#5]!2 ~ [b4,d#5]!2 ~ [b4,d#5] [b4,d#5]@6 ~@2",
})).s("gm_rock_organ").gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A B A B A C ~@7 D ~ D ~@3 D ~@3 D ~@3 D ~ D ~ D ~ E ~ E ~ F A B A B A B A G H I H J H K H J ~ D ~@3 D ~@3 D ~@3
  D ~ D ~ D ~ E ~ E ~ F A B A B A B A L ~ D ~@3 D ~@3 D ~@3 D ~ D A B A B A B M N A B A B A B M N A B A B A B A I ~@15
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~@7 x", E: "~@5 x ~ x", F: "~ x ~@4 x ~",
  G: "~@6 x ~@2 x ~ x!2 ~ x!3 ~ x ~ x!2 ~ x", H: "~ x", I: "~ x ~@2", J: "~ x ~@6", K: "~ x ~@2 x ~@3",
  L: "~@6 x ~@2 x ~ x!2 ~ x ~@9", M: "~@2 x ~@2 x ~@2", N: "x ~@8 x ~ x!2 ~ x!3 ~ x ~ x!2 ~ x",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~ [x!8]!48 ~@8 [x!8]!72 ~@15>").gain(0.25)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@20 A ~@3 A ~ B ~ A ~ C ~@9 D ~@19 A ~@3 A ~ B ~ A ~ C ~@9 D ~@7 E ~@3 A ~@3 A ~ B ~ A ~ C ~@25 C ~@15
>`.pickRestart({
  A: "~@11 x!2 ~ x ~@6 x ~@2", B: "~@6 x!2", C: "~@3 x", D: "~@5 x ~@2", E: "~@16 x ~ x ~@2 x ~@2",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@9 B ~ B ~ B ~@5 C ~@3 C ~@3 C ~@3 D A ~ A ~ A ~ A E ~@9 D ~ F ~ D ~ F ~@3 C ~@3 C ~@3 C ~@3 D A ~ A ~ A ~ A E ~@7
  G ~@3 C ~@3 C ~@3 C ~@3 D ~@23 D ~@15
>`.pickRestart({
  A: "~@3 x", B: "~@6 x!2", C: "~@15 x!2 ~@7", D: "~@5 x ~@2", E: "~@3 x ~@4", F: "~ x", G: "~@15 x ~@4 x ~@3",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~ [x!4]!48 ~@8 [x!4]!72 ~@15>").gain(0.35)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@20 A ~@3 B ~@3 A ~@3 C D ~ D ~ D ~ D E ~@9 D ~ F ~ D ~ F ~@3 A ~@3 B ~@3 A ~@3 C D ~ D ~ D ~ D E ~@7 G ~@3 A ~@3 B
  ~@3 A ~@3 C ~@39
>`.pickRestart({
  A: "~@6 x ~ x!2 ~@8 x ~ x!2 ~@2", B: "x ~@2 x ~@2 x ~ x!2 ~@8 x ~ x!2 ~@2", C: "~ x ~ x ~@4", D: "~@7 x",
  E: "~ x!2 ~@3 x ~", F: "~@5 x ~ x", G: "~@15 x!2 ~ x ~ x!2 ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A ~ B ~ B ~ B ~ C ~@23 D ~ D ~ B ~ B ~@3 B ~ B ~ B ~@10 E ~@14 D ~ D ~ B ~ B ~@3 B ~ B ~ B ~@17 D ~ B ~ B ~ B F G ~ B
  ~ B ~ B F G ~ B ~ B ~ B ~ D ~@15
>`.pickRestart({
  A: "~@14 x!5 ~@2 x ~@2", B: "~@5 x ~ x", C: "~@5 x!2 ~", D: "~@7 x", E: "x", F: "~@2 x ~@2 x ~@2", G: "x ~@2 x ~@4",
})).gain(0.35)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<A ~@48 B C B ~ B C B D ~@87>".pickRestart({
  A: "~@12 x!2 ~@10", B: "~@4 x!2 ~ x", C: "~ x!2 ~@5", D: "~ x ~@6",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct("<~@89 [~@5 x ~@18]!16 ~@39>").gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~@89 [~ x ~@2]!16 ~@39>").gain(0.4)

// drums · bongos
const bongos = s("bongo:4").struct("<~@131 A ~ B ~ C D ~ E ~ F G ~@2>".pickRestart({
  A: "~@7 x ~@16", B: "~@3 x ~@3 x ~@4 x ~@11", C: "~@5 x", D: "~@2 x!2 ~ x ~@6", E: "~@12 x!2 ~@3 x ~@6",
  F: "~@5 x ~@6", G: "~ x ~@6",
})).gain(1.04)

// drums · congas
const congas = s("conga:13").struct("<~@24 A B ~@38 A B ~@30 A B ~@46>".pickRestart({
  A: "x!8", B: "x",
})).gain(1.11)

// drums · congas
const congas_2 = s("conga:33").struct("<~@131 A B C D E F G ~ H I J ~@2>".pickRestart({
  A: "~@11 x", B: "~ x ~@6", C: "~@23 x", D: "~@5 x ~@18", E: "~@4 x ~ x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~@5", F: "~@21 x ~ x",
  G: "~ x!2 ~ x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x!2 ~ x ~ x!2", H: "~@8 x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x ~ x",
  I: "x ~ x!2 ~ x!2 ~ x ~ x ~@11 x ~", J: "x!2 ~@22",
})).gain(1.11)

// … 5 more lines

More by The Cranberries