Strudelify

Wrenhaven River (from Dishonored)

Daniel Licht

KeyG majorTempo83 bpm
0:00/0:00
// Wrenhaven River (from Dishonored) — Daniel Licht
// 83 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5174350; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 50 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/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 · piano
const piano = note("<~@8 A B A C D E F ~ G H G I J K@2 ~@2 L M N O P Q R N O P Q R N O P Q S ~@8>".pickRestart({
  A: "~@4 b3@11 ~", B: "~@4 [a#3,b3]@11 ~", C: "~@4 [e4,f4]@11 ~", D: "~@4 b4@11 ~", E: "~@4 a#4@11 ~",
  F: "~@4 [e3,b4]@11 ~", G: "~ b5@2 f#5, ~@4 b3@11 ~", H: "b5@4 [a#3,b3,d6]@11 ~", I: "b5@4 [e4,f4,a5]@11 ~",
  J: "~ [f#4,b5]@2 f#5", K: "[b5@4 d6@8 c#6@8 e3@11 ~, ~@5 b5@2 ~]/2", L: "~@2 e4!2",
  M: "e4@2 e4@2 ~ e4 a4 e4, ~@2 a3!2", N: "[a3,c5]@4 ~ e4 g4 e4, ~@2 g3!2", O: "[g3,b4]@4 ~ e4 f#4 e4, ~@2 f#3!2",
  P: "[f#3,a4]@4 ~ e4 g4 e4, ~@2 e3!2", Q: "[e3,b4]@4 ~ e4 g4 e4, ~@2 e3!2", R: "[e3,b4]@4 ~ e4 a4 e4, ~@2 a3!2",
  S: "[e3,b4] ~", // E5
})).s("gm_piano").gain(0.3)

// other · cello · "Violoncello"
const cello = note("<~@8 A B A C A D@2 ~ A B A C A D@2 ~@3 E@2 F G@2 H@5 I J K L M N@8 ~>".pickRestart({
  A: "~ b3@2 f#3", B: "b3 d4@3", C: "b3 a3@3", D: "[b3 d4@2 c#4@2 b3@2 ~]/2", E: "[~@3 e3@3 f#3@2]/2", F: "b2 a3",
  G: "[d4 b3@2 a3]/2", H: "[e3@2 a3@3 c4 b3@3 g3 f#3@3 a3 g3@6]/5", I: "~@8 a3 ~@3 a3 ~@3", J: "a3 ~@7 g3 ~@3 g3 ~@3",
  K: "g3 ~@7 f#3 ~@3 f#3 ~@3", L: "f#3 ~@3 f#3 ~@3 e3 ~@3 e3 ~@3", M: "e3 ~@7 e3 ~@3 e3 ~@3",
  N: "[e3 ~@7 f#3@6 g3@10 a#3@6 b3@10 c#4@6 d4@10 c#4@6 f#3@10 f#3@6 g3@10 a#3@6 b3@10 c#4@6 d4@10 c#4@8]/8",
})).s("gm_cello").gain(0.3)

stack(piano, cello)