Strudelify

Symphony No.5 Op.64

Pyotr Ilyich Tchaikovsky

KeyA majorTempo54 bpm
0:00/0:00
// Symphony No.5 Op.64 — Pyotr Ilyich Tchaikovsky
// 54 bpm, 12/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "Horn in F" named as a brass, played on brass section (its acoustic bass patch is not one); ch 3 "Oboe" named as a reed, played on oboe (its string ensemble 1 patch is not one); ch 2 "A Clarinet" named as a reed, played on clarinet (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5673127; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 28 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(54/6)

// 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 · oboe
const oboe = note("<~@9 A B C ~ A D E@3 F G H@2 F I@2 J@2 K>".pickRestart({
  A: "~ d4", B: "d4@3 c#4", C: "d4 ~", D: "f#4@2 f#4 f4", E: "[f#4@5 ~@2 e4@2 ~@2 e4]/3", F: "d4!3 c#4", G: "d4 ~@2 c4",
  H: "[b3 ~@2 e4@2 ~@2 e4]/2",
  I: "[[f#4,a#4] ~ [f#4,a#4] ~@2 [f#4,a#4] ~ a#4@3 [f#4,a#4] ~ [f#4,a#4] ~ [f4,b4] ~@2 [f4,b4] ~ [f4,b4] ~@2 [g#4,b4] ~ [g#4,b4] ~ [g#4,b4] ~@2 [f#4,a#4] ~ [f#4,a#4] ~@2 [f#4,a#4] ~ a#4@2 [f#4,a#4] ~@2 [f#4,a#4] ~ [f4,b4] ~@2 [f4,b4] ~ [f4,b4] ~ [g#4,b4] ~@2 [g#4,b4] ~ [g#4,b4] ~@2 c#5@2 [f#4,c#5] ~ [f#4,c#5] ~, f#5@7 f#4 ~@4 d#5@2 c#5@14 ~ f#5@7 f#4 ~@4 d#5@2 c#5@14 ~ f#4 ~@2 d#5@3]/2", // F# Fdim G#m F# Fdim G#m F#5
  J: "[~ [f#4,c#5] ~ [f#4,c#5] ~@2 [f#4,c#5] ~ [b4,f#5] ~ [b4,f#5] ~@2 [b4,f#5] ~ [b4,f#5] ~@2 [b4,f#5] ~ [b4,f#5] ~ [b4,f#5] ~@2 [b4,f#5] ~ [b4,f#5] ~@2 c#5 ~ c#5 ~ c#5 ~@2 [d4,d5] ~ [d4,d5] ~@2 [d4,d5] ~ [d4,d5] ~ [d4,d5] ~@2 [d4,d5] ~ [d4,d5] ~@2 [d4,d5] ~@2 [d4,d5] ~@2 c#5 ~@2 c#5, ~ f5@3 f#5@4 a#5@4 g#5@3 g5@3 ~ g#5@3 b5@7 ~ a#5@7 ~@27]/2", // F#5 B5 D
  K: "~@2 c#5 ~@29",
})).s("gm_oboe").gain(0.21)

// other · clarinet · "A Clarinet"
const clarinet = note("<~@15 A B C@2 ~ D C@2 ~@5>".pickRestart({
  A: "f#3@3 g#3@2 a3@3 a3@3 b3@2 c#4@3 c#4@8 c4@8", B: "b3@8 f#3@3 g3@2 a3@3 a3@8 g3@8",
  C: "[e3@8 e3@3 f#3@2 g3@3 g3@8 f#3@11 ~@29]/2", D: "f#3@8 f#3@3 g3@2 a3@3 a3@8 g3@8",
})).s("gm_clarinet").gain(0.29)

// other · string ensemble 1 · "Violin"
const string_ensemble_1 = note("<~@5 A B@2 C@2 D C@3 E F@2 G H I J G H K L M N O>".pickRestart({
  A: "a3 b3", B: "a3!2", C: "a3", D: "g3 a3", E: "b3@2 b3 c#4", F: "[c#4@2 a3@3 ~@2 b3]/2", G: "a3 ~@2 a3",
  H: "g#3 a3 b3 a3", I: "a3 a3@2 a3", J: "a3 ~@2 b3",
  K: "a#3 ~ a#3 ~@2 a#3 ~ a#3 ~@2 a#3 ~ a#3 ~ b3 ~@2 b3 ~ b3 ~@2 b3 ~ b3 ~ b3 ~@2 c#4 ~ c#4",
  L: "~@2 c#4 ~ c#4 ~ c#4 ~@2 c#4 ~ b3 ~@2 b3 ~ b3 ~ b3 ~@2 b3 ~ b3 ~@2 [c#4,a4] ~ [c#4,a4] ~ [c#4,a4] ~", // F#m
  M: "~ [c#4,a4] ~ [c#4,a4] ~@2 [c#4,a4] ~ [d4,d5] ~ [d4,d5] ~@2 [d4,d5] ~ [d4,d5] ~@2 [d4,d5] ~ [d4,d5] ~ [f#4,c#5] ~@2 [f#4,c#5] ~ [f#4,c#5] ~@2 [c#4,a#4] ~", // F#m D F#5 F#
  N: "[c#4,a#4] ~ [c#4,a#4] ~@2 [f#4,b4] ~ [f#4,b4] ~@2 [f#4,b4] ~ [f#4,b4] ~ [f#4,b4] ~@2 [f#4,b4] ~ f4 ~@2 f4 ~@2 f4 ~@2 f#4 ~@2 f#4", // F# B5
  O: "~@2 f#4 ~@29",
})).s("gm_string_ensemble_1").gain(0.21)

// other · string ensemble 2 · "Viola"
const string_ensemble_2 = note("<A B C D B E F B G H I J G K L M N O P Q N O P R S T U V>".pickRestart({
  A: "c#4 e3", B: "f#3 g3", C: "f#3 e3", D: "d3 e3", E: "f#3 [e3,g3]", F: "[c#3,g3] f#3", G: "g3 e3", H: "~ e3",
  I: "e3", J: "d3 ~", K: "~ f#3", L: "f#3@2 f#3 g#3", M: "f#3", N: "d#3 e3", O: "c#3 d3", P: "f#3!2 e3@2",
  Q: "d3 f#3@2 e3",
  R: "f#3 ~ f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ [g#3,c#4] ~@2 [g#3,c#4] ~ [g#3,c#4] ~@2 [g#3,c#4] ~ [g#3,c#4] ~ [g#3,c#4] ~@2 a#3 ~ a#3", // C#5
  S: "~@2 a#3 ~ a#3 ~ a#3 ~@2 a#3 ~ [g#3,c#4] ~@2 [g#3,c#4] ~ [g#3,c#4] ~ [g#3,c#4] ~@2 [g#3,c#4] ~ [g#3,c#4] ~@2 a#3 ~ a#3 ~ a#3 ~", // C#5
  T: "~ a#3 ~ a#3 ~@2 a#3 ~ [b3,f#4] ~ [b3,f#4] ~@2 [b3,f#4] ~ [b3,f#4] ~@2 [b3,f#4] ~ [b3,f#4] ~ c#4 ~@2 c#4 ~ c#4 ~@2 a#3 ~", // B5
  U: "a#3 ~ a#3 ~@2 b3 ~ b3 ~@2 b3 ~ b3 ~ b3 ~@2 b3 ~ [b3,g#4] ~@2 [b3,g#4] ~@2 [b3,g#4] ~@2 [c#4,a#4] ~@2 [c#4,a#4]", // E F#
  V: "~@2 [c#4,a#4] ~@29", // F#
})).s("gm_string_ensemble_2").gain(0.21)

// other · string ensemble 2 · "Violoncello"
const string_ensemble_2_2 = note("<A B C@2 D E F G H I J H@2 I K L M G N O P G N Q R S T U>".pickRestart({
  A: "[f#2,b2] [e2,b2]", B: "b2 [e2,b2]", C: "[f#2,b2] [e2,g2]", D: "[b2,d3]!2", E: "[a2,d3] [g2,d3]",
  F: "[a2,e3] [b2,d3]", G: "a2!2", H: "a2", I: "a2 [a2,d3]", J: "[e2,b2] [e2,a2]", K: "[b2,d3]@2 d3 c#3",
  L: "c#3 [a2,e3]", M: "[b2,f#3] b2@3", N: "b2 a2 g#2 g2", O: "f#2 a2@2 a2", P: "b2!2",
  Q: "f#2 ~@13 f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~@2 f#3 ~ f#3",
  R: "~@2 f#3 ~ f#3 ~ f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~",
  S: "~ f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~",
  T: "f#3 ~ f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~ f#3 ~ f#3 ~@2 f#3 ~ f#3 ~@2 f#3 ~@2 f#3 ~@2 f#3 ~@2 f#3", U: "~@2 f#3 ~@29",
})).s("gm_string_ensemble_2").gain(0.21)

// bass · contrabass
const bass = note("<A B C D E F G H I J K L I J M N O H P Q O H P R ~@4>".pickRestart({
  A: "b1 g1", B: "d2 c#2", C: "d2 b2", D: "b1 b2", E: "b2 g2", F: "d2 g1", G: "a1 b1", H: "c#2 d2", I: "e2 g2",
  J: "f#2 d2", K: "b1 a1", L: "d2 f#2", M: "b1@2 d2 c#2", N: "f#2 e2", O: "d#2 e2", P: "b1 a1 g#1 g1",
  Q: "f#1 f#2@2 e2", R: "f#1 ~@31",
})).s("gm_contrabass").gain(0.21)

stack(oboe, clarinet, string_ensemble_1, string_ensemble_2, string_ensemble_2_2, bass)

More by Pyotr Ilyich Tchaikovsky