Strudelify

Intermission

The Cranberries

KeyF majorTempo97 bpm
0:00/0:00
// Intermission — The Cranberries
// 97 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 39 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · piano
const piano = note("<~@8 A B A B C D E F G H G H I J K L M N M O I J K P ~@7>".pickRestart({
  A: "f4@3 ~ e4@2 f4@2 g4@3 ~ a4@2 g4@2", B: "e4@3 ~ d4@2 e4@2 f4@3 ~@5", C: "a4@3 ~ a4@3 ~ bb4@5 ~ bb4@2",
  D: "g4@3 ~ f4@2 g4@2 a4@3 ~@5", E: "a4@6 ~@2 bb4@5 ~ c5@2", F: "g4@5 ~ f4@2 f4@3 ~@5",
  G: "[f4,f5]@3 ~ [e4,e5]@2 [f4,f5]@2 [g4,g5]@3 ~ [a4,a5]@2 [g4,g5]@2", // F E F G A G
  H: "[e4,e5]@3 ~ [d4,d5]@2 [e4,e5]@2 [f4,f5]@3 ~@5", I: "[a4,a5]@3 ~ [a4,a5]@3 ~ [bb4,bb5]@5 ~ [bb4,bb5]@2",
  J: "[g4,g5]@3 ~ [f4,f5]@2 [g4,g5]@2 [a4,a5]@3 ~ [f4,f5]@3 ~", K: "[a4,a5]@4 [f4,f5]@3 ~ [bb4,bb5]@5 ~ [c5,c6]@2",
  L: "[g4,g5]@5 ~ [f4,f5]@2 [f4,f5]@3 ~@5", M: "[c5,c6] [f5,f6] [e5,e6] [d5,d6] [e5,e6] [d5,d6] [c5,c6] [bb4,bb5]",
  N: "[c5,c6] [bb4,bb5] [a4,a5] [g4,g5] [a4,a5] [g4,g5] [a4,a5] [bb4,bb5]", // C Bb A G A G A Bb
  O: "[c5,c6] [bb4,bb5] [a4,a5] [g4,g5] [a4,a5] [g4,g5] [a4,a5] [g4,g5]", P: "[g4,g5]@5 ~ [f4,f5]@2 [f4,f5]@8",
})).s("gm_piano").gain(0.35)

// chords · flute
const flute = note("<~@4 A B A B A C A C A D A D E F E F G F G F H I H I H I H I H J ~@5>".pickRestart({
  A: "c4 d4", B: "e4 f4", C: "e4 [f3,f4]", D: "g3 a3", E: "[c4,c5] [d4,d5]", F: "e4 [f4,c5]", G: "[f4,c5] [g4,d5]",
  H: "[f4,c5,f5] [g4,d5,g5]", I: "[e4,e5] [f4,c5,f5]", J: "[e4,bb4,e5] ~",
})).s("gm_flute").gain(0.1)

// chords · flute · soft notes
const flute_soft = note("<~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C D E F ~>".pickRestart({
  A: "bb4 ~", B: "~ [f4,c5,f5]", C: "[f4,c5,f5] [g4,d5,g5]", D: "[e4,bb4,e5] [f4,c5,f5]",
  E: "[f4,c5,f5,c6] [g4,d5,g5,d6]", F: "[e4,bb4,e5,bb5] [f4,c5,f5,c6]",
})).s("gm_flute").gain(0.05)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@4 A B A B A C A C A D A D E F E F G F G F H I H I H I H I H J ~@5>".pickRestart({
  A: "c3 d3", B: "e3 f3", C: "e3 [f2,f3]", D: "g2 a2", E: "[c3,c4] [d3,d4]", F: "e3 [f3,c4]", G: "[f3,c4] [g3,d4]",
  H: "[f3,c4,f4] [g3,d4,g4]", I: "[e3,e4] [f3,c4,f4]", J: "[e3,bb3,e4] ~",
})).s("gm_string_ensemble_1").gain(0.05)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C D E F ~>".pickRestart({
  A: "bb3 ~", B: "~ [f3,c4,f4]", C: "[f3,c4,f4] [g3,d4,g4]", D: "[e3,bb3,e4] [f3,c4,f4]",
  E: "[f3,c4,f4,c5] [g3,d4,g4,d5]", F: "[e3,bb3,e4,bb4] [f3,c4,f4,c5]",
})).s("gm_string_ensemble_1").gain(0.02)

// bass · acoustic bass
const bass = note("<A B A C A B A B A D A E A B A C A D A C A B A C A E A E A B A F ~@7>".pickRestart({
  A: "f1@3 ~ f1@3 ~ d2@5 ~ d2@2", B: "c2@5 ~ c2@2 a1@3 ~ g1@3 ~", C: "c2@5 ~ f1@2 a1@2 a1@2 g1@2 g1@2",
  D: "c2@5 ~ c2@2 a1@3 ~ a1@2 g1@2", E: "c2@5 ~ f1@2 a1@3 ~ g1@3 ~", F: "c2@5 ~ f1@2 f1@6 ~@2",
})).s("gm_acoustic_bass").gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@11 A B A B A B A B A B A B A B A B A B A B ~@8>".pickRestart({
  A: "~@15 x", B: "x",
})).gain(0.09)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9>".pickRestart({
  A: "~@7 x",
})).gain(0.03)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A B A B A B A B A B A B A B A B A B A B ~@8>".pickRestart({
  A: "~@15 x", B: "x",
})).gain(0.09)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9>".pickRestart({
  A: "~@7 x",
})).gain(0.03)

// drums · high tom
const high_tom = s("ht").struct("<~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8>".pickRestart({
  A: "x",
})).gain(0.14)

// drums · splash
const splash = s("cr").struct("<~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8>".pickRestart({
  A: "x",
})).gain(0.05)

stack(
  piano, flute, flute_soft, string_ensemble_1, string_ensemble_1_soft, bass, low_tom, low_tom_soft, mid_tom,
  mid_tom_soft, high_tom, splash
)

More by The Cranberries