Strudelify

Symphony No.5 Op.64

Tchaikovsky

KeyG majorTempo240 bpm
0:00/0:00
// Symphony No.5 Op.64 — Tchaikovsky
// 240 bpm, 2/2, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5385181; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 25 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(240/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · string ensemble 1 · "Violin I"
const string_ensemble_1 = note("<A B C B D E D E F G H G I J K J L M N M O P Q R S>".pickRestart({
  A: "~@2 [g4,b4,e5] ~ [b4,d#5] ~ [g4,c5,e5] ~", // Em B C
  B: "[e4,b4]@2 ~@2 [e4,a4] ~ [e4,a4] ~ [b3,g4] ~ [b3,g4] ~ [a3,f#4] ~ [a3,f#4] ~", // E5 A5 Em D
  C: "[g3,e4] ~@3 [g4,b4,e5]@2 ~@2 [b4,d#5]@2 ~@2 [g4,c5,e5]@2 ~@2", // C Em B C
  D: "[g3,e4] ~@3 [g3,e4]@2 ~@2 [a3,e4,a4]@2 ~@2 [a3,f#4]@2 ~@2", // C A5 D
  E: "[b3,g4]@2 ~@2 [g3,e4] ~ [g3,e4] ~ [a3,f#4] ~ [a3,f#4] ~ d#4 ~ d#4 ~", F: "[g3,e4] ~ e6 ~ d#6 ~ e6 ~",
  G: "b5 ~ a5 ~ g5 ~ f#5 ~", H: "[b4,e5] ~ e6 ~ d#6 ~ e6 ~", I: "[b4,e5]@2 ~@2 c5 d5 ~ c5 d5 e5 ~ d5!2 e5 ~ d5",
  J: "c5 d5 ~ c5!2 d5 ~ c5 a4 b4 ~ a4!2 b4 ~ a4", K: "g4 a4 ~ b4 c5 d5 ~ c5 d5 e5 ~ d5!2 e5 ~ d5",
  L: "g4 ~ [g5,e6] ~ [g5,d6] ~ [g5,e6] ~", M: "[g3,d4,d5,b5] ~ [c5,a5] ~ [b4,g5] ~ [a4,a5] ~",
  N: "[e4,b4,e5] ~ [g5,e6] ~ [g5,d6] ~ [g5,e6] ~", O: "[b4,e5]@2 ~@2 a4!2 ~ a4 b4!2 ~ b4 c5!2 ~ c5",
  P: "d5!2 ~ d5 d#5!2 ~ d#5 e5!2 ~ e5 f#5!2 ~ f#5", Q: "g5!2 ~ g5 a5!2 ~ a5 b5!2 ~ b5 c6!2 ~ c6",
  R: "d6!2 ~ d6 d#6!2 ~ d#6 e6!2 ~ e6 f#6!2 ~ f#6", S: "g6 ~@7",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.1)

// chords · string ensemble 1 · "Violin II"
const string_ensemble_1_2 = note("<A B C B D E D E F G H G I J K J L M N O P Q R S T>".pickRestart({
  A: "~@2 [g4,b4,e5] ~ [b4,d#5] ~ [g4,c5,e5] ~", // Em B C
  B: "[e4,b4]@2 ~@2 [e4,a4] ~ [e4,a4] ~ [b3,g4] ~ [b3,g4] ~ [a3,f#4] ~ [a3,f#4] ~", // E5 A5 Em D
  C: "[g3,e4] ~@3 [g4,b4,e5]@2 ~@2 [b4,d#5]@2 ~@2 [g4,c5,e5]@2 ~@2", // C Em B C
  D: "[g3,e4] ~@3 [g3,e4]@2 ~@2 [a3,e4,a4]@2 ~@2 [a3,f#4]@2 ~@2", // C A5 D
  E: "[b3,g4]@2 ~@2 [g3,e4] ~ [g3,e4] ~ [a3,f#4] ~ [a3,f#4] ~ d#4 ~ d#4 ~", F: "[g3,e4] ~ e5 ~ d#5 ~ e5 ~",
  G: "b4 ~ a4 ~ g4 ~ [c5,e5] ~", H: "[b4,e5] ~ e5 ~ d#5 ~ e5 ~", I: "[b4,e5]@2 ~@2 c4 d4 ~ c4 d4 e4 ~ d4!2 e4 ~ d4",
  J: "c4 d4 ~ c4!2 d4 ~ c4 a3 b3 ~ a3!2 b3 ~ a3", K: "g3 a3 ~ b3 c4 d4 ~ c4 d4 e4 ~ d4!2 e4 ~ d4",
  L: "g3 ~ [e5,c6] ~ [d5,d6] ~ [e5,c6] ~", M: "[g3,d4,b4,g5] ~ [a4,f#5] ~ [e4,b4,e5] ~ [e4,c5,e5] ~",
  N: "[e4,b4,e5] ~ [e5,c6] ~ [d5,b5] ~ [e5,a5] ~", O: "[b4,g5] ~ [a4,f#5] ~ [b4,e5] ~ [c5,e5] ~",
  P: "[g3,g4]!2 ~ [g3,g4] a3!2 ~ a3 b3!2 ~ b3 c4!2 ~ c4", Q: "d4!2 ~ d4 d#4!2 ~ d#4 e4!2 ~ e4 f#4!2 ~ f#4",
  R: "g4!2 ~ g4 a4!2 ~ a4 b4!2 ~ b4 c5!2 ~ c5", S: "d5!2 ~ d5 d#5!2 ~ d#5 e5!2 ~ e5 f#5!2 ~ f#5", T: "g5 ~@7",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.9)

// chords · string ensemble 1 · "Viola"
const string_ensemble_1_3 = note("<A B C B D E F E G H I H J@5 K L M N O P Q R>".pickRestart({
  A: "~@2 g4 ~ f#4 ~ e4 ~", B: "g4@2 ~@2 [c4,e4] ~ [c4,e4] ~ [b3,e4] ~ [b3,e4] ~ [c4,e4] ~ [c4,e4] ~",
  C: "[b3,e4] ~@3 g4@2 ~@2 f#4@2 ~@2 e4@2 ~@2", D: "[b3,e4] ~@3 b3@2 ~@2 c4@2 ~@2 [c4,e4]@2 ~@2",
  E: "[b3,e4]@2 ~@2 [b3,e4] ~ [b3,e4] ~ [c4,e4] ~ [c4,e4] ~ b3 ~ b3 ~", F: "b3 ~ b3 ~ c4 ~ [c4,e4] ~",
  G: "b3 ~ e4 ~ d#4 ~ e4 ~", H: "b3 ~ a3 ~ g3 ~ [f#4,a4] ~", I: "g4 ~ e4 ~ d#4 ~ e4 ~",
  J: "[g4 ~ c3@4 c3@4 c3@4 c3@4 c3@4 c3@4 c3@4 c3@3 ~ [e4,c5] ~ [g3,g4] ~ [e4,c5] ~]/5", // C G C
  K: "[b3,g4] ~ [c4,f#4] ~ [b3,g4] ~ [c4,e4,a4] ~", L: "[b3,e4] ~ [c4,f#4] ~ [d4,g4] ~ [e4,a4] ~",
  M: "g4 ~ [f#4,a4] ~ [b3,g4] ~ [a3,e4] ~", N: "[g3,g4]!2 ~ [g3,g4] a3@2 ~@10", O: "~@8 e3!2 ~ e3 f#3!2 ~ f#3",
  P: "g3!2 ~ g3 a3!2 ~ a3 b3!2 ~ b3 c4!2 ~ c4", Q: "d4!2 ~ d4 d#4!2 ~ d#4 e4!2 ~ e4 f#4!2 ~ f#4", R: "g4 ~@7",
})).s("gm_string_ensemble_1").gain(0.45).pan(0.3)

// other · string ensemble 1 · "Contrabass"
const string_ensemble_1_4 = note("<A@8 B C B C D@5 E F G H I J K L>".pickRestart({
  A: "g1/8", B: "~@2 g1 ~ b1 ~ e2 ~", C: "g2 ~ c3 ~ e3 ~@3",
  D: "[~@2 c2@4 c2@4 c2@4 c2@4 c2@4 c2@4 c2@4 c2@3 ~ a1@2 b1@2 c2@2]/5", E: "d2 d#2 e2 f#2", F: "g2 a2 b2 c3",
  G: "d3 d#3 e3 f#3", H: "g3 ~@7", I: "~@2 c3 a2", J: "e2 ~@5 e3@2", K: "b2 g2 e2 b1", L: "e1 ~@3",
})).s("gm_string_ensemble_1").gain(0.45).pan(0.6)

stack(string_ensemble_1, string_ensemble_1_2, string_ensemble_1_3, string_ensemble_1_4)

More by Tchaikovsky