Strudelify

The Planets Op.32

Gustav Holst

KeyB♭ majorTempo70 bpm
0:00/0:00
// The Planets Op.32 — Gustav Holst
// 70 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 1, 2/4 at bar 24, 3/4 at bar 25, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1383751; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 43 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · french horn · "Horn 2"
const french_horn = note(`<
  ~ A B A C A B D E F G H I J K L M N O C@2 P Q R S T U V@2 W X Y@2 Z AA AB AC Z AD AE@4
>`.pickRestart({
  A: "c4 ~ bb3", B: "bb3 ~ bb3", C: "c4@2 bb3", D: "c4 ~ c4", E: "~@2 bb3@2 bb3 g3", F: "f3@2 f3@2 eb3 g3",
  G: "f3@2 bb2@2 bb3 g3", H: "f3@2 f3@2 g3 bb3", I: "c4@2 ab3", J: "g3!2 ab3", K: "bb3 ab3 g3", L: "f3 ab3 g3",
  M: "f3 eb3 d3", N: "eb3@2 f3", O: "g3@2 bb3", P: "ab3@2 f3", Q: "g3@4 eb3 g3", R: "ab3@2 ab3", S: "eb3 g2 bb2",
  T: "~ eb3 f3", U: "~ eb3 d3", V: "[~@2 eb3@2 ab3@4 c4 d4 eb4@2]/2", W: "d4 c4 bb3", X: "eb4@2 g3@2 f3 eb3",
  Y: "[f3@2 g3@2 bb3@4 eb4 d4 c4@2]/2", Z: "~ bb3!2", AA: "~ bb3 c4", AB: "~ f3 ~", AC: "~@2 g3 bb3 ab3@2",
  AD: "~@2 eb3 g3 c4@2", AE: "[~ c4@9 c4@24 bb3@24 g3@24 ~@14]/4",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn 3"
const french_horn_2 = note(`<
  ~ A B A C A D E F G H I J K L M N O P Q R Q S T U V W X Y Z AA AB@2 AC AD AE@2 AC AF AG@4
>`.pickRestart({
  A: "ab3 ~ f3", B: "g3 ~ g3", C: "eb3@2 g3", D: "g3@2 ~@2 f3 g3", E: "ab3 ~ c4", F: "~ eb4 bb3", G: "bb3 ~ c3",
  H: "f3 ~ eb3", I: "d3 ~ g3", J: "eb3@4 c4 d4", K: "eb4 d4 c4", L: "bb3 eb4 g3", M: "f3 eb3 f3@2 g3@2", N: "bb3@2 bb3",
  O: "ab3@2 bb3", P: "eb3@2 eb3", Q: "eb3@2 d3", R: "c3@2 c3", S: "eb3@2 eb3@2 eb3 g3", T: "ab3@2 ab3", U: "g3 eb3 d3",
  V: "~ c4 d4", W: "~ g4 f4", X: "~ eb4 ab3", Y: "g3 f3 c4", Z: "bb3 ab3 g3", AA: "f3 eb3 ab3",
  AB: "[f3@2 eb3@2 bb2@4 g3 bb3 c4@2]/2", AC: "c4@2 eb4@2 d4@3 bb3 eb4@2 f4@2", AD: "eb4@2 d4@2 c4 d4",
  AE: "[c4@2 bb3@2 g3@4 g3 bb3 c4@2]/2", AF: "g4@8 g4@8 g4@4 ~ f4@3", AG: "[~ eb4@9 f4@24 f4@24 g4@24 ~@14]/4",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn 4"
const french_horn_3 = note(`<
  ~ A B C D C E F G H I J K E L M N O P Q R O S T U V W X@2 Y@3 Z AA AB AC Z AA AD AE@4
>`.pickRestart({
  A: "eb3 ~ f3", B: "eb3 ~ eb3", C: "eb3 ~ d3", D: "eb3@2 d3", E: "eb3!3", F: "ab3 ~ ab3", G: "~ g3 g2", H: "bb2 ~ c3",
  I: "d3 ~ g2", J: "bb2 ~ bb2", K: "ab2@2 f3", L: "eb3 ~ bb2", M: "ab2 f3 eb3", N: "bb2@4 g3 bb3",
  O: "c4@4 c4@2 eb4@2 d4@3 bb3", P: "eb4 f4 eb4@2 d4@2", Q: "c4 d4 c4@2 bb3@2", R: "g3@4 g3 bb3", S: "eb4 f4 g4@2 g4@2",
  T: "g4 f4 eb4@2 f4@2", U: "eb4 bb3!2", V: "~ c3 bb2", W: "~ g2 bb2", X: "[~ bb2 eb3@2 f3 eb3]/2",
  Y: "[eb3!2 eb3@2 bb2 c3@2 c3 d3]/3", Z: "c3 bb2 ab2", AA: "~ bb2 g2", AB: "~ g2 ab2", AC: "~ bb2 ~",
  AD: "~@2 eb3 g3 ab3@2", AE: "[~ c4@9 bb3@24 bb3@24 bb3@24 ~@14]/4",
})).s("gm_french_horn").gain(0.3)

stack(french_horn, french_horn_2, french_horn_3)

More by Gustav Holst