Strudelify

The Planets Op.32

Gustav Holst Op. 32

KeyE minorTempo112 bpm
0:00/0:00
// The Planets Op.32 — Gustav Holst Op. 32
// 112 bpm, 5/4, key E minor. 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/2477501; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 57 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/5)

// 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 · orchestral harp · C5 G#m B G#m B C5 B G#m …
const orchestral_harp = note(`<
  ~@36
  [d#3@2 ~ b3@2 ~ d#4@2 g4@2 ~ c5@2 ~ b3@2 c4@2 ~ g4@2 ~ c5@2 d#5@2 ~ [g3,c4]@2 ~ [c4,g4]@2, ~@2 g3@2 ~ c4@2 ~@3 b4@2 ~ g3@2 ~@3 d#4@2 ~ b4@2 ~@3 [d#3,b3]@2 ~ [b3,d#4]@2 ~]
  [[d#4,b4]@2 ~ [b4,d#5]@2 ~ [g3,c4]@2 [b3,d#4]@2 ~ [d#4,b4]@2 ~ [b4,d#5]@2 [c5,g5]@2 ~ [b3,d#4]@2 ~ [d#4,b4]@2 [g4,c5]@2 ~ [c5,g5]@2 ~ [g5,c6]@2, ~@2 [g4,c5]@2 ~ [c5,g5]@2 ~@3 [c4,g4]@2 ~ [g4,c5]@2 ~@3 [d#5,b5]@2 ~ [c4,g4]@2 ~@3 [b4,d#5]@2 ~ [d#5,b5]@2 ~]
  ~@19
>`).s("gm_orchestral_harp").gain(0.1)

// other · celesta · Csus2 C Cmaj7 Em G D# Cmaj7 G …
const celesta = note(`<
  ~@38
  [~@3 d#6 g6 b6 [c7,d7] c7 b6 g6 [c6,e6] b5 g5 ~@3 d#6 g6 [b6,c7] d7 c7 b6 [e6,g6] c6 b5 g5 ~@3 d#6 [g6,b6] c7]
  [d7 c7 [g6,b6] d#6 c6 b5 g5 ~@3 [d#6,g6] b6 c7 d7 [b6,c7] g6 d#6 c6 [g5,b5] ~@3 d#6 g6 b6 c7 [c7,d7] b6 g6 d#6 [b5,c6] g5]
  [~@3 d#6 g6 b6 [c7,d#7] c7 b6 g6 [c6,d#6] b5 g5 g7 [c7,d#7] b6 g6 d#6 [b5,c6] b7 g7 d#7 [b6,c7] g6 d#6 c6 [b7,c8] g7 d#7 c7 [g6,b6] d#6]
  ~@16
>`).s("gm_celesta").gain(0.1)

// chords · piano
const piano = note("<A@2 B@5 C@5 D@3 E@5 F@5 G@5 H@5 I J@2 K@2 L M@5 N@5 ~@6>".pickRestart({
  A: "[~@29 b3@3, [g#1,e4]@26 b2@6 d#3@6 e3@7 f#3@6 [c#3,g3]@13, b3@19 g2@45, g3@13 d#2@51, e3@3 e2@29]/2", // C#m C#dim
  B: "[~@32 [g4,b4]@3 ~@13 [g4,b4]@3 ~@13 [g4,b4]@3 ~@10 [g#4,c5,d#5]@3, [g#2,e3,g3,b3]@134 [g4,b4]@7 [f#4,a4,c#5]@19, d#4@19 g4@7 a4@19 f#4@6 c#4@19 [g4,b4]@7 [f#4,a4,c#5]@19 [d#4,e5]@19 [c#4,d5]@19 e4@26, ~@6 e4@13 c#4@13 g4@6 e4@26 d#4@19 [c#4,d5]@19 e4@13 [g4,b4]@7 [g#4,c5,d#5]@25 [c#4,g4,b4,d5]@13, ~@13 f#4@6 e4@7 f#4@6 [d#4,b4]@19 g4@7 [f#4,a4]@12 e4@13 [g4,b4]@7 [g#4,c5,d#5]@12 [g4,b4]@7 [f#4,a4,c#5]@19 [d#4,e5]@32]/5", // G G# E G F#m G F#m Emaj7 …
  C: "[~@26 f#4@6 g4@6 ~@20 [f#4,a4,c#5]@6 [e4,g4]@6 ~@23 a4@3 g4@6 ~@20 [f#4,a4,e5]@6 g4@6 ~@20 [f#4,a4,f#5]@6, [a2,g3]@141 [f#4,a4]@6 [c#4,e4,g4,b4,b5]@13, [d#4,b4,e5]@32 d#4@32 [d#4,d5]@26 [f#4,b4]@6 ~@6 [e4,g4]@7 [f#4,a4]@13 ~@6 f#5@26 ~@6, g4@13 f#4@13 ~@12 [e4,g4]@13 [c#4,e4,g4,b4]@13 ~@6 [e4,g4]@7 a4@6 b4@3 c#5@10 b4@19 [c#4,e4,g4,b4]@13 b4@6 [e4,g4]@7 g5@19, ~@6 e4@13 [c#4,e4,g4]@13 ~@13 [f#4,a4]@13 ~@6 b4@13 [f#4,c#5]@6 [c#4,e4,g4]@13 d#4@32 [d#4,c#5]@32]/5", // F#m Em F#m7 F#m A7 F#m C#m7b5 Emaj7 …
  D: "[g4@6 ~@23 e5@3 g4@6 ~@23 a4@3 g4@6 ~@7 c#5@6 b4@6 ~ [f#4,b4,d#5]@6, [a2,g3]@91 ~@5, d#4@26 [f#4,a4,f#5]@6 b4@13 a4@6 b4@3 c#5@4 [f#4,b4]@6 b4@13 a4@19, [b4,f#5]@13 [f#4,a4]@6 f#5@3 g5@10 ~@6 [e4,g4]@7 [f#4,c#5]@6 [c#4,e4,g4]@13 ~@6 [e4,g4]@7 f#4@6 [c#4,e4,g4,c#5]@13, ~@6 [e4,g4]@7 g5@6 [c#4,e4,g4,b4]@13 [d#4,d5]@32 [d#4,d5]@32]/3", // B A7 F#m B5 F#m Em F#5 C#dim …
  E: "[c#5@6 ~@20 d#5@6 c#5@6 ~@20 [c5,d#5,g5]@6 ~@29 [g#4,c5,d#5]@3 ~@29 [g#4,c5,d#5,g5]@3 ~@19 c#4@3 ~@7 [a#3,c#4,f4,g#4]@3, [a#2,g3]@144 [f4,g#4,c5]@3 [d#4,g4,a#4,c#5]@3 [c#4,f4,g#4,c5]@4 [c4,d#4,g4,a#4]@6, d#4@13 d#5@6 [c#4,c#5,f5]@13 d#4@13 c5@6 [c#4,c#5,f5]@13 [d#4,g#5]@22 [c5,d#5]@4 [a#4,c#5,f5]@6 [c#5,f5,g#5]@19 c#4@3 [c5,d#5,g5]@4 [a#4,c#5,f5,g#5]@6 [g4,a#4,c#5,f5]@3 [g#4,c5,d#5]@3 f5@26, f5@6 c#5@7 c5@19 f5@6 c#5@7 e5@19 [c#5,f5]@19 c#4@13 [d#4,c6]@32 d#4@6 [g4,a#4,c#5]@4 [f4,g#4,c5,d#5]@3 [d#4,g4,a#4,c#5]@3 d#5@16, ~@6 a#4@26 ~@6 a#4@26 ~@13 [c5,d#5,g5]@6 [a#4,c#5,f5]@3 g5@10 ~@13 [c5,d#5,g5,a#5]@6 [a#4,c#5,f5,g#5]@3 a#5@10 ~@3 g5@29]/5", // Cm G# G#maj7 A#m7 D# Fm D#7 C#maj7 …
  F: "[~@26 g#4@6 ~@26 [g#4,b4]@6 a4@6 ~@20 [g#4,b4,d#5]@6 a4@6 ~@16 d#5@3 ~@4 b4@3 a4@6 ~@16 d#5@3 ~@4 b4@3, b3@141 g#4@6 c#5@6 ~ [g#4,c#5,d#5]@6, [b2,d#4]@32 a4@6 f#4@7 g#4@6 [c#4,f#4,a4]@13 c#5@6 [f#4,a4]@7 [g#4,b4]@6 [c#4,f#4,a4,c#5]@13 c#5@6 [f#4,a4]@7 [g#4,b4,d#5]@6 [c#4,f#4,a4,c#5]@7 [g#4,c#5,d#5]@6 c#5@6 [f#4,a4]@7 b4@16 ~@3, [e4,a4]@13 g#4@6 [c#4,f#4,a4]@13 d#4@32 d#4@32 [d#4,e5]@32 [d#4,e5]@32, ~@6 f#4@13 e4@122 d#5@6 [c#4,f#4,a4]@13]/5", // G#m G#sus4 B F#m G#m F#m G#m F#m …
  G: "[~@13 e5@3 a4@3 ~@10 e5@3 ~@13 [b4,d#5,g#5]@3 d#5@3 ~@10 [b4,d#5,g#5]@3 d#5@3 ~@10 [b4,d#5,g#5]@3, [b3,e4]@141 e5@19, [d#4,a4]@32 [d#4,f5]@19 c#5@19 a4@7 [g#4,b4]@6 [c#4,a4,c#5,f#5]@13 ~@6 d#5@7 e5@19 [b4,g#5]@26 ~@6, e5@19 [c#4,b4,d#5]@13 ~@6 f#4@13 a4@19 f#4@26 [b4,g#5]@19 [c#4,a4,c#5,f#5,a5]@13 ~@6 d#5@13 [c#4,a4,c#5,f#5,a5]@13, c#5@6 b4@7 c#5@19 c#5@6 a4@7 [g#4,b4]@6 [c#4,d#5,f#5]@13 [d#4,f5]@32 d#4@32 d#4@32]/5", // G#m E5 D#dim D#sus2 G#m F#m E G#m …
  H: "[~@29 [f#4,a4,d#5]@3 ~@26 f5@6 ~@26 [b4,d#5,f#5]@6 ~@19 c#4@13 ~@19 c#4@13, [b3,e4]@51 a4@19 [a4,c#5]@7 [g#4,b4,d#5,f#5]@6 [c#4,a4,c#5,e5]@13 ~@64, d#4@13 [b4,d#5]@3 [a4,c#5,f#5]@3 [c#4,g#4,b4,d#5,f5]@3 [a4,c#5,f#5]@4 [g#4,b4,e5]@6 d#4@19 [c#4,c#5,d#5,f#5]@13 [b3,e4]@91 ~@5, [c#5,e5,a5]@5 a5@11 c#5@3 f#4@13 [d#4,f5]@16 d#4@16 d#4@16, ~@6 [b4,d#5,g#5]@4 [c#5,e5]@3 g#5@19 f5@6 a4@7 [g#4,b4]@19 ~@6 f#4@26 ~@64]/5", // D#dim B E5 A G#m7 A B F#m …
  I: "~@13 [e1,b1,c4,d#4,g4] [e2,g3] ~@2 [e2,g3] [e1,b1,c4,d#4,g4] ~@2 [e1,b1,c4,d#4,g4] [e2,g3] ~@2 [e2,g3] [e1,b1,c4,d#4,g4] ~@2 [e1,b1,c4,d#4,g4] [e2,g3]!2, [c5,e5,g5], ~@14 [e1,b1,c4,d#4,g4]@2 [e1,b1,c4,d#4,g4]@2 ~ [e1,b1,c4,d#4,g4]@2 ~ [e1,b1,c4,d#4,g4]@2 [e1,b1,c4,d#4,g4]@2 ~ [e1,b1,c4,d#4,g4]@2 ~ [e1,b1,c4,d#4,g4]@2, ~@15 [e2,g3]@2 ~ [e2,g3]@2 [e2,g3]@2 ~ [e2,g3]@2 ~ [e2,g3]@2 [e2,g3]@2 ~@2", // Cmaj7 Em Cmaj7 Em Cmaj7 Em C Cmaj7 …
  J: "[e1,b1,e2,g3,c4,d#4,g4,c5,e5,g5]/2", // Cmaj7
  K: "[[c5,d#5]@13 [d#5,g5]@13 ~@12 [c6,d#6]@13 [c6,d#6,g6]@13, g4@19 g5@13, [e3,b3]@13 [g5,c6]@3 [e3,b3]@16, ~@13 c5@51, ~@13 d#5@19]/2", // Cm D# Cm E5 C5 E5
  L: "[e3,b3,d#4,g5,c6,g6]", // Cmaj7
  M: "[~@13 d#5@3 ~@13 d#5@3 ~@13 d#5@3 ~@13 d#5@3 ~@13 [b4,d#5,f#5,a5]@3, [e3,b3]@128 d#5@19 [c#4,a4,c#5,e5,g#5]@13, [d#4,c5,g5] [d#4,c5,g5,b5] [d#4,c5,g5,b5] b5@2, d#5@26 [b4,f#5,a5]@25 [c#4,a4,c#5,e5,g#5]@13 d#5@19 [c#4,a4,c#5,e5,g#5]@13 [d#4,c5,g5]@26 [b4,f#5,a5]@32 ~@6, ~@19 [c#4,a4,c#5,e5,g#5]@13 d#5@26 [b4,f#5,a5]@32 [b4,f#5,a5]@6 d#5@19 [c#4,a4,c#5,e5,g#5]@13 [d#4,c5,g5,c#6]@32]/5", // B7 E5 Amaj7 Cm B7 Amaj7 Cm B7 …
  N: "[~@19 c#6@6 ~ d#5@6 ~@18 g6 ~@7 [a4,d#5]@6 ~@83 [b3,c#4,e4,g#4,c#5,e5,g#5]@13, d#6@35 c#5 d5 d#5 e5 [f5,f#5] g5 g#5 a5 a#5 [b5,c6] c#6 d6 d#6 e6 [f6,f#6]@2 [g6,g#6]@3 g#5 f5@9 [f4,a4,c5,d#5,g5]@19 [e4,g#4,c#5,e5,g#5]@13 [d#4,f4,a4,c5,d#5,g5]@32 [c4,d#4,f4,a4,c5,d#5,g5]@32, c5@19 [b4,c#5]@7 c#6@8 [b4,c5]@17 g#4@3 [a5,a#5,b5]@3 c5 f#5@64 ~@38, g5@19 e5@7 f#5@6 a4@21 [c6,c#6,d6,d#6]@3 [c#5,d#5] [a#4,b4]@64 ~@39, d#5@19 g#5@13 [d#5,g5] a#4@18 [c#5,e5,g#5] [e6,f6,f#6]@3 [e5,f#5,g5] d5@59 [c#4,e4,g#4,c#5,e5,g#5]@32 ~@13]/5", // Adim C#m7 F#maj7 Cmaj7 F#maj7 G#maj7 F7 C#m …
})).s("gm_piano").gain(0.1)

stack(orchestral_harp, celesta, piano)