Strudelify

alone in a room

HeartOfCassiopeia

KeyG majorTempo130 bpm
0:00/0:00
// alone in a room — HeartOfCassiopeia
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5897373; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 91 bars on a 16-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 · piano · "Фортепиано"
const piano = note(`<
  A B C D A B C D E F G H E F G H I J K L I J K M I J K L I J K L I J K L I J K N@2 E F G H E F G H I J K L I J K ~@14 O
  P Q R I J K L I J K ~@10
>`.pickRestart({
  A: "[c3,g3,c4]!3 [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2", B: "[a2,e3,a3]!3 [a2,e3,a3]@2 [a2,e3,a3] [a2,e3,a3]@2",
  C: "[e2,b2,e3]!3 [e2,b2,e3]@2 [e2,b2,e3] [e2,b2,e3]@2", D: "[g2,d3,g3]!3 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@2",
  E: "~@3 e4, c3, ~ e3@7, ~ g3@3, ~@3 c4@5", F: "~@3 c4, a2, ~ c3@7, ~ e3@3, ~@3 a3@5",
  G: "~@3 b3, e2, ~ b2@7, ~ e3@3, ~@3 g3@5", H: "~@3 b3, g2, ~ b2@7, ~ d3@3, ~@3 g3@5",
  I: "c3@2 [c3,g3,c4]@3 [c3,g3,c4]@3, c2", J: "a2@2 [a2,e3,a3]@3 [a2,e3,a3]@3, a1",
  K: "e2@2 [e2,b2,e3]@3 [e2,b2,e3]@3, e1", L: "g2@2 [g2,d3,g3]@3 [g2,d3,g3]@3, g1", M: "[g1,g2]",
  N: "[[g2,g3]@23 ~@9]/2", O: "~ [c3,c4]!3", P: "[a2,a3]!4", Q: "[e2,e3]!8", R: "[g2,g3]!8",
})).s("gm_piano").gain(0.3)

// chords · piano · "Фортепиано" · soft notes
const piano_soft = note("<~@56 A ~ B C D E B C D E F G H A I ~@10 A B C D E B C D J@2>".pickRestart({
  A: "[g2,g3]", B: "~@7 g3, c3, ~ g3@2 g3@2 g3@2 ~, ~ c4!3", C: "~@7 e3, a2, ~ e3@2 e3@2 e3@2 ~, ~ a3!3",
  D: "~@7 b2, e2, ~ b2@2 b2@2 b2@2 ~, ~ e3!3", E: "~@7 d3, g2, ~ d3@2 d3@2 d3@2 ~, ~ g3!3", F: "[c3,c4]", G: "[a2,a3]",
  H: "[e2,e3]", I: "[c3,c4] ~@3", J: "[[g2,g3]@23 ~@9]/2",
})).s("gm_piano").gain(0.2)

stack(piano, piano_soft)