Strudelify

Legion (Or: A Pile of Ghosts) [Two Pianos]

Rhea Wilson

KeyG majorTempo121 bpm
0:00/0:00
// Legion (Or: A Pile of Ghosts) [Two Pianos] — Rhea Wilson
// 121 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5455092; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(121/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@4 B@2 C@2 D@4 E@2 F@2 G H I J K L M N G H I J K O M P Q@2 R@2 S T U V S W X Y Z Y X@2 AA AB G H I J K L M N G H I J
  K O M P G H I J K L M N G H I J K O M AC AD@4
>`.pickRestart({
  A: "[b3@2 b3 b3@2 b3 b3@2 b3@2 b3 b3@2 b3 b3@2, [e4,g4,b4]@15 ~]/2", // Em
  B: "[c4@2 c4 c4@2 c4 c4@2 c4@2 c4 c4@2 c4 c4@2, [e4,g4,c5]@15 ~]/2", // C
  C: "[b3@2 b3 b3@2 b3 b3@2 b3@2 b3 b3@2 b3 b3@2, [e4,g#4,b4]@15 ~]/2", // E
  D: "[[b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] [b3,e4]@2, [g4,b4]@15 ~]/2", // E5 G
  E: "[[c4,e4]@2 [c4,e4] [c4,e4]@2 [c4,e4] [c4,e4]@2 [c4,e4]@2 [c4,e4] [c4,e4]@2 [c4,e4] [c4,e4]@2, [g4,c5]@15 ~]/2", // C C5
  F: "[[b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] [b3,e4]@2, [g#4,b4]@15 ~]/2", // E5 G#m
  G: "[b2,e3,g3,b3] [e3,g3,b3,d4,e4]", // Em Em7
  H: "[e3,g3,c4]@3 [e3,g3,c4]@3 [e3,g3,c4]@2 [e3,g3,b3]@3 [e3,g3,b3]@3 [e3,g3,b3]@2, f#4 g4", // C Em
  I: "[b2,e3,g#3,b3] [e3,g#3,b3,d4,e4]", // E E7
  J: "[e3,g#3,c4]@3 [e3,g#3,c4]@3 [e3,g#3,c4]@2 [e3,g#3,b3]@3 [e3,g#3,b3]@3 [e3,g#3,b3]@2, f#4 g#4", // Eaug E
  K: "[b2,e3,g3,b3,b4] [e3,g3,b3,d4,a4]", // Em Em7
  L: "[e3,g3,c4]@3 [e3,g3,c4]@3 [e3,g3,c4]@2 [e3,g3,b3]@3 [e3,g3,b3]@3 [e3,g3,b3]@2, e4 f#4", // C Em
  M: "g#4 f#4 ~@6 [e3,g#3,b3,d4]@8, [b2,e3,g#3,b3] ~, ~@2 g#4@13 ~", // E7 E
  N: "[e3,g#3,c4]@3 [e3,g#3,c4]@3 [e3,g#3,c4]@2 [e3,g#3,b3]@3 [e3,g#3,b3]@3 [e3,g#3,b3]@2", // Eaug E
  O: "[e3,g3,c4]@3 [e3,g3,c4]@3 [e3,g3,c4]@2 [e3,g3,b3,b4]@3 ~@3 [e3,g3,b3]@2, c5@8 ~@3 [e3,g3,b3]@3 ~@2, ~@3 a4", // C Em
  P: "e5 d5 ~ [e3,g#3,c4]@3 [e3,g#3,c4]@2 [e3,g#3,b3]@3 [e3,g#3,b3]@3 [e3,g#3,b3]@2, [e3,g#3,c4]@2 e5@13 ~", // Eaug E Eaug
  Q: "[[e2,e3,b3,e4,g4,b4]@15 ~]/2", R: "e4@2 [g4,b4] ~ b3@2 [g4,b4] ~",
  S: "[e4,e5]@2 [g4,b4,g5] a5 b3@2 [g4,b4,e6] ~, ~@4 b5 ~@3", T: "[e4,d6]@2 [g4,b4,b5] ~ [c#4,e4,a4,a5]@4",
  U: "[c4,a5]@2 [e4,a4,g5] a5 b3@2 [e4,g4,e5] ~, ~@4 b5 ~@3", V: "[b3,g5]@2 [e4,g4,e5] ~ [b3,d#4,f#4,f#5]@4",
  W: "[e4,g6]@2 [g4,b4] ~ [d#4,f#4,b4,d#6]@4, ~ e6 ~@2", X: "[e4,a5]@2 [e4,a4,g5] a5 b3@2 [e4,g4,g5] ~, ~@4 b5 ~@3",
  Y: "[d4,a5] ~ [d#4,d#5] ~ [g3,b3,e4,e5]@4", Z: "[e4,a5]@2 [e4,a4,g5] a5 b3@2 [e4,g4,e5] ~, ~@4 b5 ~@3",
  AA: "~@2 a5 g5 ~ d#5 d#5@2, c4@8 ~ [f#4,b4]@7, b5 ~ f#5 ~, ~ [e4,a4]@7 d#4@8, ~ c5@3 ~@4", // B5 A5
  AB: "b4@2 a4 f#4 [g#4,e5]@4, e5 ~", // C#m
  AC: "e5 d5 ~ [e3,g#3,c4]@3 [e3,g#3,c4]@2 [e3,g#3,b3]@3 ~@3 [e3,g#3,b3]@2, [e3,g#3,c4]@2 e5@13 ~, ~@11 [e3,g#3,b3]@3 ~@2, ~@3 [a4,f#5]", // Eaug E Eaug E D
  AD: "[[b2,e3,g#3,g#4,b4,e5,g#5]@61 ~@3]/4", // E
})).s("gm_piano").gain(0.3)

stack(piano)