Strudelify

Crimson Peak - Edith's Theme

Fernando Velazquez

KeyB♭ majorTempo92 bpm
0:00/0:00
// Crimson Peak - Edith's Theme — Fernando Velazquez
// 92 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Piano" named as a piano, played on piano (its tremolo strings patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5923270; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 51 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/3)

// 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("<A@4 B@4 C D E F G H I J C D E F G H K L M N O@2 P@2 Q@2 R@2 S T ~@2 U@8 C V W ~@2>".pickRestart({
  A: "[~@31 d4, a3@2 a3 a3@3 a3@2 a3 a3@3, ~@3 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@5, ~@5 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 ~@3, ~ g3@3 g3 g3@2 g3@3 g3!2]/4",
  B: "[~@31 d4, g2@43 bb3@5 g2@48, a3@13 d4@6 bb3@5 d2@43 bb3@5 [d2,a3]@24, ~@3 bb3@5 g3@19 bb3@2 d4@3 g3@3 bb3@2 d4@3 g3@11 bb3@2 d4@3 g3@21 d4@6 bb3@5 g3@8, ~@5 d4@6 bb3@5 a3@5 d4@3 a3@21 d4@3 a3@11 bb3@2 d4@3 a3@5 d4@6 bb3@5 g3@5 d4@6 bb3@5]/4", // D5
  C: "~@7 d4, a3@2 a3, ~@3 bb3@8 bb3@8 bb3@5, ~@5 d4@8 d4@8 ~@3, ~ g3@2",
  D: "~@7 eb4, g3!3, ~@3 c4@8 c4@8 c4@5, ~@5 eb4@8 eb4@8 ~@3", E: "~@7 f4, a3!3, ~@3 c4@8 c4@8 c4@5, ~@5 f4@8 f4@8 ~@3",
  F: "~@7 f4, a3!3, ~@3 bb3@8 bb3@8 bb3@5, ~@5 f4@8 f4@8 ~@3",
  G: "~@7 g4, bb3!3, ~@3 eb4@8 eb4@8 eb4@5, ~@5 g4@8 g4@8 ~@3",
  H: "~@7 g4, bb3!3, ~@3 d4@8 d4@8 d4@5, ~@5 g4@8 g4@8 ~@3",
  I: "~@7 a4, a3 a3@2, ~@3 db4@8 db4@5 db4@8, ~@5 e4@8 e4@5 ~ e4@5",
  J: "~@13 d4@11, a3, ~@3 d4@8 c4@13, ~@5 gb4@19, ~ gb3@2",
  K: "~@7 d4, a3 a3@2, ~@3 d4@8 d4@8 c4@5, ~@5 gb4@8 gb4@11, ~@2 gb3",
  L: "~@7 d4, g3!3, ~@3 bb3@8 bb3@8 bb3@5, ~@5 d4@8 d4@8 ~@3",
  M: "~@7 f4, c4, ~@3 f4@10 f4@8 ~@3, ~@5 ab4@5 ~ ab4@8 ab4@5, ~ c5!2",
  N: "~@7 f4, f3@11 f4@2 g4@3 b4@3 g4@5, ~ g3@7, ~@5 b3@19, ~ d4@2",
  O: "[~@15 eb4, c3@11 eb4@2 g4@3 c5@16 c4@3 eb4@2 g4@3 c5@3 g4@5, ~@3 eb3@16 g4@10 g3@19, ~@5 g3@16 eb4@6 eb3@21, ~ c4@2 c3@3]/2",
  P: "[~@15 a4, db3@32 e4@3 a4@2 db5@3 e5@3 db5@5, ~@3 e3@8 e4@2 a4@3 db5@13 db4@19, ~@5 a3@14 a4@8 a3@21, ~@8 db4@13 e4@3 e3@24]/2",
  Q: "[~@15 gb4, [d3,g3]@29 c4@3 d4@3 gb4@2 a4@3 d5@3 a4@5, ~@3 a3@8 g4@2 a4@3 d5@11 a3@21, ~@5 c4@14 a4@5 [d2,gb3]@24, ~@8 d4@13 g4@27]/2", // G5 D
  R: "[~@15 g4, [eb2,eb3]@11 g4@2 bb4@3 eb5@11 g3@2 c4@3 eb4@3 g4@2 c5@3 eb5@3 c5@5, ~@3 g3@16 bb4@29, ~@5 bb3@43, ~@8 eb4@13 g4@3 [eb2,eb3]@24]/2", // Eb
  S: "d4@3 g4@2 bb4@3 g4@3 bb4@2 g4@3 bb4@3 g4@2 bb4@3, d2@23 ~",
  T: "bb4@3 g4@2 bb4@3 g4@3 bb4@2 g4@3 bb4@3 g4@2 bb4@3, eb2@23 ~",
  U: "[~@63 d4, a3@2 a3 a3@3 a3@2 a3 a3@3 a3@2 a3 a3@3 a3@2 a3 a3@3, ~@3 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@8 bb3@5, ~@5 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 d4@8 ~@3, ~ g3@3 g3 g3@2 g3@3 g3 g3@2 g3@3 g3 g3@2 g3@3 g3!2]/8",
  V: "~@5 d4@3 ~@8 e4@2 ~@2 gb4@2 ~@2, a3 ~@2, ~@3 bb3@5 ~@16", W: "g4 ~@7 bb4 ~@3",
})).s("gm_piano").gain(0.25)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@15 A B C D E F G H I J K L M N O P Q R S T@2 ~@15>".pickRestart({
  A: "~@2 eb4", B: "eb4@2 d4@2 d4 bb4", C: "bb4@3 c4 bb4 c5", D: "a4 c4 a4", E: "a4@3 bb3 a4 bb4", F: "g4@2 a4",
  G: "bb4 a4 g4@4", H: "gb4", I: "g4@3 d4 bb4 c5", J: "d3 f3 ab3 f3 d4 f3, ab4@2 ab4",
  K: "g2 b2 d3 b2 g3 f3, g4 eb5 d5", L: "f3 g2 eb3 c3 g3 eb3, d5", M: "c3 g2 eb3 [c3,eb4] [g3,bb4] [eb3,c5], c5 ~",
  N: "e3 a2 db3 e3 db4 a3, a4@2 ab4", O: "e3 a2 db3 e3 db4 a3, g4@2 g5", P: "[g3,g5]", Q: "gb5@2 a5, gb3",
  R: "a5@2 g5, g3", S: "g5 f5 eb5, c3", T: "[g3 g3, d5]/2",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@36 A B C@2 D@8 ~@3>".pickRestart({
  A: "[bb3,g4]", B: "[a3,gb4]", C: "[d3,g4]/2", D: "[d6@23 ~]/8",
})).s("gm_string_ensemble_1").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note("<~@47 [~@4 e4 gb4] [g4 ~@3 bb4 ~] ~@2>").s("gm_pizzicato_strings").gain(0.25)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@47 [~@4 e3 gb3] [g3 ~@3 bb3 ~] ~@2>").s("gm_pizzicato_strings").gain(0.25)

// other · cello
const cello = note("<~@4 A B A B A C D E F G B H B I@2 J@2 K H L ~@27>".pickRestart({
  A: "eb3@2 d3@2 d3 bb3", B: "bb3", C: "bb3@3 c3 bb3 c4", D: "a3 c3 a3", E: "a3@3 bb2 a3 bb3", F: "g3@2 a3",
  G: "bb3 a3 g3@4", H: "a3", I: "[~ d4@3 c4 a3]/2", J: "[f3 f4 eb4]/2", K: "d4 c4 bb3@4", L: "g3",
})).s("gm_cello").gain(0.3)

// other · cello · soft notes
const cello_soft = note("<~@44 [eb3@2 d3@2 d3 bb3] bb3 ~@5>").s("gm_cello").gain(0.2)

// other · pizzicato strings
const pizzicato_strings_3 = note("<~@50 [g2 ~@5]>").s("gm_pizzicato_strings").gain(0.25)

// bass · contrabass
const bass = note("<~@8 A B C D B A E D ~@35>".pickRestart({
  A: "g2", B: "eb2", C: "f2", D: "d2", E: "a1",
})).s("gm_contrabass").gain(0.25)

// other · string ensemble 1
const string_ensemble_1_2 = note("<~@16 A B C D B A D A D A E F G H I D B@2 D B E D J@2 ~@11>".pickRestart({
  A: "g2", B: "eb2", C: "f2", D: "d2", E: "c2", F: "c3@2 bb2", G: "a2", H: "db3", I: "d3", J: "g2/2",
})).s("gm_string_ensemble_1").gain(0.4)

// bass · pizzicato strings
const bass_2 = note("<~@50 [g1 ~@5]>").s("gm_pizzicato_strings").gain(0.25)

stack(
  piano, string_ensemble_1, string_ensemble_1_soft, pizzicato_strings, pizzicato_strings_2, cello, cello_soft,
  pizzicato_strings_3, bass, string_ensemble_1_2, bass_2
)