Strudelify

the rains of castamere

Paula Batoon

KeyD minorTempo60 bpm
0:00/0:00
// the rains of castamere — Paula Batoon
// 60 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1901646; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 34 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// bass · tuba · "Euphonium"
const bass = note("<~@8 A B@4 C@7 D@2 E@2 F G@3 H I ~@4>".pickRestart({
  A: "~ d3@4 ~@3", B: "[~ d3@4 a2@4 f3@2 g3@2 e3@2 d3@2 a2@2 bb2@2 c3@2 d3@2 e3@4 ~@3]/4",
  C: "[~ d3@4 c3@4 bb2@2 c3@2 d3@4 bb3@4 a3@4 a3@8 ~@6 a2@2 e3 f3 d3@4 f3@2 f3 e3 a2@4 ~]/7",
  D: "[a2 d3 e3 c3@4 e3@2 e3 d3@3 ~@3]/2", E: "[a2 e3 f3 d3@4 a3@2 a3@2 g3@2 d3@3]/2", F: "e3 f3@3 d3 e3@3",
  G: "[c3 d3@4 ~@2 a2@2 e3 f3 d3@4 a3@2 a3@2 g3@2 d3@3]/3", H: "e3 f3@3 d3 a3 g3 e3", I: "f3 d3@4 ~@3",
})).s("gm_tuba").gain(0.45)

// bass · tuba
const bass_2 = note("<A B C D E F G H@2 I J@3 K@5 L@4 M@2 N O@4 P@3 Q R>".pickRestart({
  A: "~@7 a1", B: "f2@3 a1 e2@3 a1", C: "f2@2 g2@2 e2@3 a1", D: "g2 f2 e2 d2", E: "e2@3 ~", F: "e2 a2@3 bb2 g2@3",
  G: "c2 a2@2 bb2@2 g2@3", H: "[c2 bb2@2 a2@2 g2@2 f2@2 d2@4 ~@3]/2", I: "a2 f2@3 a1 e2@3",
  J: "[a1 a1@2 e1@2 a1@4 a2@6 d2@2 a2@4 ~@3]/3", K: "[~ d2@4 c2@4 bb1@4 a1@4 bb2@4 a2@2 f2@2 d2@8 ~@7]/5",
  L: "[~ f2@4 e2@4 d2@2 e2@2 f2@4 bb2@8 a2@6 ~]/4", M: "[e2 f2@4 e2@4 d2@2 e2@2 f2@3]/2", N: "~ f2@2 ~@2 e2@2 ~",
  O: "[~ d2@4 c2@4 e2 d2 d2@4 a2@2 c2@2 bb1@2 f1@4 f2@3 d2 a2 g2 e2]/4",
  P: "[f2 d2@4 ~@2 a1@2 e2 f2 d2@4 a2@2 a2@2 g2@2 d2@3]/3", Q: "e2 f2@3 d2 a2 g2 e2", R: "f2 d2@6 ~",
})).s("gm_tuba").gain(0.48)

stack(bass, bass_2)