Strudelify

The Nutcracker (ballet) Op.71

Pyotr Ilyich Tchaikovsky

KeyD majorTempo120 bpm
0:00/0:00
// The Nutcracker (ballet) Op.71 — Pyotr Ilyich Tchaikovsky
// 120 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3090831; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/3)

// 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.

// other · violin · "Violin I"
const violin = note("<~@4 A B C@2 A D E ~@7 F@2 A B G@2 A D H ~@8 I J K L M N J O P Q K L M R@2 S T U>".pickRestart({
  A: "a3@5 d4@5 ~ f#4@5", B: "g4@15 f#4", C: "f#4/2", D: "g4@5 f#4@9 ~ e4", E: "a4@11 ~@5", F: "[f#4@11 e4@11 ~@10]/2",
  G: "f#4", H: "a4@11 d4@5", I: "~@5 b4@3 c#5@3 d5@2 e5@3", J: "f#5@11 c#5@5", K: "e5@11 b4@5", L: "d5@11 g4@5",
  M: "c#6 d6 ~ c#6 d6 c#6 ~ b5 ~@3 c#6@3 ~@2", N: "g5@11 d5@5", O: "e5@11 a4@5",
  P: "d6 e6 ~ d6 e6 d6 ~ c#6 ~@3 d6@3 ~@2", Q: "~@11 c#5@5, f#5@13 ~@3", R: "b5@11 a5@5",
  S: "c#6@3 ~@2 e5@3 ~@3 g5@2 g#5@3", T: "a5@3 ~@13", U: "a3",
})).s("gm_violin").gain(0.4)

// other · violin · "Violin I" · soft notes
const violin_soft = note("<~@10 A B C@6 ~@9 B D B E D F G H I ~@17>".pickRestart({
  A: "~@11 d4@5", B: "~@5 f#4@5 ~ f#4@5", C: "~@5 e4@5 ~ e4@5", D: "~@5 c#5@5 ~ c#5@5", E: "~@5 b4@5 ~ b4@5",
  F: "~@5 a4@5 ~@6", G: "c#5@5 ~@6 f#4@5", H: "~@5 a4@5 ~ c#5@5", I: "a4 ~@15",
})).s("gm_violin").gain(0.2)

// other · violin · "Violin II"
const violin_2 = note("<~@4 A B C@2 D E F ~@16 G H G I J K L M N O P Q R S T U V W X Q Y Z@2 AA AB AC>".pickRestart({
  A: "~@5 a3@3 ~@3 a3@3 ~@2", B: "a#3@15 a3", C: "a3/2", D: "~@5 a3@5 ~ a3@5", E: "e4@5 c#4@11", F: "f#4@11 a3@5",
  G: "~@5 b4@5 ~ b4@5", H: "~@5 a4@5 ~ a4@5", I: "~@5 g4@5 ~ g4@5", J: "~@5 f4@5 ~ f4@5", K: "~@5 c#5@5 ~@6",
  L: "a4@5 ~@6 b4@5", M: "~@5 c#5@5 ~ f4@5", N: "f#4 ~@2 a4@2 g#4@3 a4@3 b4@2 c#5@3", O: "d5@11 a4@5", P: "c#5@11 g4@5",
  Q: "d4@11 e4@5", R: "c#5 d5 ~ c#5 d5 c#5 ~ b4 ~@3 c#5@3 ~@2", S: "g4@11 g4@5", T: "f#4@11 e4@5", U: "e4@11 f#4@5",
  V: "d5 e5 ~ d5 e5 d5 ~ c#5 ~@3 e5@3 ~@2", W: "f#4@11 c#4@5", X: "e4@11 d4@5",
  Y: "c#5 d5 ~ c#5 d5 c#5 ~ b4 ~@3 d5@3 ~@2", Z: "d5@11 b4@5", AA: "c#5@3 ~@2 e4@3 f#4@3 g4@2 g#4@3",
  AB: "a4@3 g4@2 e4@3 c#4@3 b3@2 a#3@3", AC: "a3",
})).s("gm_violin").gain(0.25)

// other · violin · "Violin II" · soft notes
const violin_soft_2 = note("<A@4 ~@8 B C D@3 E F G B H I@2 B J K ~@26>".pickRestart({
  A: "~@5 a3@3 ~@3 a3@3 ~@2", B: "~@5 a3@5 ~ a3@5", C: "~@5 a#3@5 ~ a#3@5", D: "~@5 b3@5 ~ b3@5", E: "~@5 g3@5 ~ g3@5",
  F: "~@5 g#3@5 ~ g#3@5", G: "g3@3 ~@13", H: "a#3@15 a3", I: "a3", J: "e4@5 c#4@11", K: "f#4@11 a3@5",
})).s("gm_violin").gain(0.15)

// other · cello · "Violoncello"
const cello = note("<~@4 A@4 B@2 C ~@16 D E F G H I@2 E J K@2 L M K N K O P@2 Q R S T U V W>".pickRestart({
  A: "d2@5 d3@3 ~@3 d3@3 ~@2", B: "d2@5 d3@5 ~ d3@5", C: "d3@5 d2@5 ~ d3@5", D: "~@5 [f#3,b3]@5 ~ [f#3,b3]@5", E: "c#3",
  F: "b2", G: "a2", H: "g#2", I: "[f#2@11 e2@10 d3@11]/2", J: "f#2 ~@4 g#3@3 a3@3 b3@2 c#4@3",
  K: "~@5 [f#3,a3]@3 ~@3 [f#3,a3]@3 ~@2", L: "~@5 [e3,g3]@3 ~@3 [g3,b3]@3 ~@2", M: "~@5 e3@5 ~ e3@5",
  N: "~@5 [g3,a3]@3 ~@3 [g3,a3]@3 ~@2", O: "~@5 f#3@5 ~ f#3@5", P: "~@5 [f#3,a3]@5 ~ [f#3,a3]@5",
  Q: "~@5 [g3,a3]@5 ~ [g3,a3]@5", R: "~@5 g3@5 ~ g3@5", S: "~@5 [b3,d4]@5 ~ [b3,d4]@5",
  T: "~@5 [b3,d#4]@5 ~ [b3,d#4]@5", U: "[c#4,e4]@3 ~@2 e3@3 f#3@3 g3@2 g#3@3", V: "a3@3 ~@13", W: "d3",
})).s("gm_cello").gain(0.25)

// other · cello · "Violoncello" · soft notes
const cello_soft = note("<A B@3 ~@7 C D E F G H F I J C@6 K ~@26>".pickRestart({
  A: "d2 ~@3", B: "d2@5 ~@11", C: "d2@5 d3@5 ~ d3@5", D: "c#3", E: "c3", F: "b2", G: "g2", H: "e2@5 e3@5 ~ e3@5",
  I: "a#2", J: "a2@3 ~@13", K: "d3@5 d2@5 ~ d3@5",
})).s("gm_cello").gain(0.15)

stack(violin, violin_soft, violin_2, violin_soft_2, cello, cello_soft)

More by Pyotr Ilyich Tchaikovsky