Strudelify

The Nutcracker (ballet) Op.71

Hinci

KeyE♭ majorTempo207 bpm
0:00/0:00
// The Nutcracker (ballet) Op.71 — Hinci
// 207 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6142765; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(207/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.

// chords · piano
const piano = note(`<
  A@4 B@2 C D E@2 F G H@4 I J@3 K@2 L M N@2 O P K@2 Q R S@2 T U V@2 W X Y@2 Z@2 V@2 W X AA@2 AB AC AD@2 AE AF AG@2 AH@2
  AD@2 AE AF AI@2 AJ AK AL AM AN AO AP AQ AR AS AT AU
>`.pickRestart({
  A: "[eb3,g3,eb4]@3 ~@2 [bb3,eb4]@5 ~ bb2@3 ~@2", // Eb Eb5
  B: "[[f3,ab3,f4,f5]@3 ~@2 [bb3,f4]@5 ~ bb2@3 ~@2 [f3,ab3,f4]@3 ~@2 eb5 ~@2 d5 ~@2 bb2@2 d5 ~@2, ~@5 f5@15 ~ [bb3,f4]@5 ~ c5 ~@4]/2", // Fm Bb5 Fm Bb5
  C: "[eb3,g3,eb4,eb5]@3 ~@2 [bb3,eb4]@5 ~ bb2@2 eb5@3, ~@5 g5@8 ~@3", // Eb Eb5
  D: "[eb3,g3,eb4]@3 ~@2 g4 ~@2 g4 ~@2 bb2@2 bb4 ~@2, bb4@5 [bb3,eb4]@5 ~ g4 ~@4", // Eb Eb5
  E: "[f3,ab3,f4]@3 ~@2 f4 ~@2 f4 ~@2 bb2@2 bb4 ~@2, ab4@5 bb3@5 ~ f4 ~@4", // Fm
  F: "[eb3,g3,eb4]@3 ~@2 [bb3,eb4]@5 ~ bb2@2 g4@3, g4@5 bb4@8 ~@3", // Eb Eb5
  G: "[eb3,g3,eb4]@3 ~@2 g4 ~ ab4 ~ bb4 ~ c5 d5 ~ eb5 ~, ~@5 [bb3,eb4]@5 ~ bb2@3 ~@2", // Eb Eb5
  H: "[[f3,ab3,f4,f5]@3 ~@2 [bb3,f4]@5 ~ [bb4,c5] d5 eb5 g5 a5 [f3,ab3,f4]@3 ~@2 eb5 ~@2 d5 ~@2 bb2@2 d5 ~@2 [eb3,g3,eb4,eb5]@3 ~@2 g5 ~@2 eb5 ~@2 bb2@2 g4 ~@2 [eb3,g3,eb4]@2 g5@2 ~ bb4@2 ~ g4 eb4@2 [bb2,bb3]@2 bb4 ~@2, ~@5 f5@8 ~ f5@7 [bb3,f4]@5 ~ c5 ~@9 [bb3,eb4]@5 ~ bb4 ~@8 eb5@2 ~@10, ~@11 bb2@3 ~@2 bb5@19 bb5@15 ~@3 [bb3,eb4]@5 ~@6, ~@53 g4 ~@5 g4 ~@4]/4", // Fm Bb5 Bbsus2 Fm Eb Bb Bb5 Eb5
  I: "[f3,ab3,f4]@3 ~@2 f4@3 f4@2 ~ [bb3,c4,f4] d4 [eb4,bb4] [f4,g4] a4, ab4@5 bb3@5 ~ bb2@3 ~@2", // Fm Bbsus2 Eb5 Fsus2
  J: "[[f3,ab3,f4]@3 ~@2 f4@3 f4@2 ~ bb2@2 ~@3 [eb3,g3,eb4,g4]@3 ~@2 bb3@5 ~ bb2@3 ~@2 [eb3,g3,eb4]@3 g4@2 bb4 c5 bb3@2 eb5 f5 g5 [ab5,bb5] c6 d6 eb6, bb4@13 bb4@21 ~@5 d5 ~@8, ab4@5 bb3@5 ~ f4 ~@9 eb4@11 ~@5 [bb3,eb4]@2 ~@2 g3@2 [bb2,eb3]@3 ~@2]/3", // Fm Eb Absus2 Eb5
  K: "[[d3,f6]@3 f4 ~ eb5 ~@2 eb4 ~@2 d5 ~ d4 ~@2 d3@3 c4 ~ [b4,eb6] ~@2 [b3,d6] ~@2 [bb4,c6] ~ [bb3,d6] ~@2, f5 ~@4 f6@15 ~@12, ~@5 [ab3,f4,ab4]@5 ~ bb2@5 c5 ~@4 [ab3,f4,ab4]@5 ~ bb2@5]/2", // Dm B Bm Bbsus2 Bb Db
  L: "[eb3,eb6]@3 b3 ~ bb4 ~@2 bb3 ~@2 g4 ~ eb6@3, b4 ~@4 g6@8 g3 ~@2, ~@5 [g3,g4]@5 ~ bb2@5", // Eb G
  M: "eb3@3 g4 ~ [bb4,g5] ~@2 [bb3,g5] ~@2 [eb5,g5] ~ [g3,bb5] ~@2, bb5@5 ~@11, g5 ~@4 [eb3,g3,eb4]@5 ~ bb2@5", // Eb Gm Eb
  N: "d3@3 f3 ~ [bb4,f5] ~@2 [bb3,f5] ~@2 [d5,f5] ~ [d4,bb5] ~@2, ab5@5 ~@11, f4 ~@4 [ab3,f4,ab4]@5 ~ bb2@5", // Bb5 Dm Gm Db
  O: "eb3@3 eb3 ~ eb5 ~@2 eb4 ~@2 eb4 ~ g5@3, g5@5 bb5@8 eb3 ~@2, eb4 ~@4 [g3,g4]@5 ~ bb2@5", // G
  P: "eb3@3 g3 ~ bb4 ~@2 bb3 ~@2 [eb5,f5] g5 [g4,ab5,bb5] c6 [d6,eb6], eb5@11 ~@5, g4 ~@4 [g3,eb4,g4]@5 ~ bb2@5", // Ebsus2 Gm Ebmaj7 Cm
  Q: "[eb3,eb6]@3 bb6@2 [bb4,g6] ~@2 [bb3,eb6] ~@2 [eb4,bb5] ~ [eb3,g5] ~@2, g4 ~@2 g3 ~ [g3,g4]@5 ~ bb2@5", // Eb Eb5 Eb G
  R: "[eb3,eb5]@3 g3 ~ [bb4,g5] ~@2 [bb3,g5] ~@2 [eb5,g5] ~ [g4,bb5] ~@2, g4 ~@4 [eb3,g3,eb4]@5 ~ bb2@5", // Eb Gm Eb
  S: "d3@3 f3 ~ ab3@3 ab3@2 ~ [d5,f5] ~ [d4,bb5] ~@2, ab5@5 f5 ~@2 f5 ~@7, f4 ~@4 [f4,ab4]@5 ~ bb2@5", // Dm Gm Fm
  T: "[eb3,g5]@3 d5@2 eb5@3 gb5@3 g5@2 bb5@3, eb4 ~@2 g4 ~ [g3,g4]@8 eb4 ~@2, ~@8 bb4 ~@2 bb2@5, ~@11 eb5 ~@4", // Eb G
  U: "eb6@3 bb4@2 c5@3 d5@3 eb5@2 f5@3, g5 ~@15",
  V: "[eb3@3 ~@5 f5@3 bb2@3 ~@2 eb3@3 g5@2 bb3@5 ~ bb2@2 eb5@3, g5@8 ~@3 ab5@8 ~@2 f5@8 ~@3, ~@5 bb3@5 ~@22]/2",
  W: "d5@5 [bb3,eb5]@5 ~ f5@5, f3@3 ~@8 bb2@3 ~@2", // Eb5
  X: "[f3,d4]@3 db4@2 d4@3 eb4@3 [bb2,db4]@2 d4@3, ab4@15 ~, ~@5 bb3@5 ~@6", // Dm Bbm
  Y: "[[f3,bb4]@3 ~@5 g5@3 bb2@3 ~@2 f3@3 eb5@2 bb3@5 ~ bb2@2 c5@3, f5@8 ~@3 f5@8 ~@2 d5@8 ~@3, ~@5 bb3@5 ~@22]/2", // Bb5
  Z: "[eb3@3 d4@2 eb4@3 f4@3 [bb2,d4]@2 f4@3 [eb3,eb4]@3 bb4 ~ c5 ~@2 d5 ~@2 bb2@2 f5 ~@2, a4 ~@4 bb4@13 ~@9 eb5 ~@4, ~@5 bb3@5 ~@11 bb3@5 ~@6]/2", // Bb Eb
  AA: "[[d3,bb4]@3 ~@5 eb5@3 bb2@3 ~@2 d3@3 c5@2 bb3@5 ~ bb2@2 ab4@3, f5@8 ~@3 d5@8 ~@2 bb4@8 ~@3, ~@5 bb3@5 ~@22]/2", // Gm
  AB: "eb3@3 bb3@2 [bb3,c4]@3 bb3@3 [bb2,a3]@2 c4@3, gb4 ~@4 g4@10 ~", // Bbsus2 Bbmaj7
  AC: "[eb3,bb3]@3 [bb4,g5,bb5]@2 [c5,ab5,c6]@3 [d5,bb5,d6]@3 [bb1,bb2,eb5,c6,eb6]@2 [f5,d6,f6]@3, ~@5 [bb3,bb4]@5 ~@6", // Eb5 Eb Fm Gm Cm7 Dm Bb
  AD: "[[eb2,eb3]@3 ~@5 [f5,d6,f6]@3 [bb1,bb2]@3 ~@2 [eb2,eb3]@3 [g5,eb6,g6]@2 [bb3,bb4]@5 ~ [bb1,bb2]@2 [eb5,c6,eb6]@3, [g5,eb6,g6]@8 ~@3 [ab5,f6,ab6]@8 ~@2 [f5,d6,f6]@8 ~@3, ~@5 [bb3,bb4]@5 ~@22]/2", // Eb Dm Bb Eb Cm Bb Cm Db …
  AE: "[d5,bb5,d6]@5 [bb3,bb4,eb5,c6,eb6]@5 ~ [f5,d6,f6]@5, [f2,f3]@3 ~@8 [bb1,bb2]@3 ~@2", // Gm Cm7 Dm F Bb
  AF: "[f2,f3,d4]@3 db4@2 d4@3 eb4@3 [bb1,bb2,db4]@2 d4@3, [ab4,f5,ab5]@15 ~, ~@5 [bb3,bb4]@5 ~@6", // Dm Bbm Db Bb
  AG: "[[f2,f3,bb3]@3 ~@5 [g5,eb6,g6]@3 [bb1,bb2]@3 ~@2 [f2,f3]@3 [eb5,c6,eb6]@2 [bb3,bb4]@5 ~ [bb1,bb2]@2 [c5,ab5,c6]@3, [f5,d6,f6]@8 ~@3 [f5,d6,f6]@8 ~@2 [d5,bb5,d6]@8 ~@3, ~@5 [bb3,bb4]@5 ~@22]/2", // Bb5 Cm Bb F Cm Bb Fm Dm …
  AH: "[[eb2,eb3,a4,f5,a5]@3 d4@2 eb4@3 f4@3 [bb1,bb2,d4]@2 f4@3 [eb2,eb3,eb4]@3 [bb4,g5,bb5]@2 [c5,ab5,c6]@3 [d5,bb5,d6]@3 [bb1,bb2,eb5,c6,eb6]@2 [f5,d6,f6]@3, ~@5 [bb4,g5,bb5]@13 ~@14, ~@5 bb3@5 ~@11 [bb3,bb4]@5 ~@6]/2", // F7 Bb Eb Fm Gm Cm7 Dm Eb …
  AI: "[[d2,d3,bb3]@3 ~@5 [eb5,c6,eb6]@3 [bb1,bb2]@3 ~@2 [d2,d3]@3 [c5,ab5,c6]@2 bb3@5 ~ [bb1,bb2]@2 [ab4,f5,ab5]@3, [f5,d6,f6]@8 ~@3 [d5,bb5,d6]@8 ~@2 [bb4,g5,bb5]@8 ~@3, ~@5 [bb3,bb4]@5 ~@22]/2", // Gm Cm Bb D Fm Bb Db Dm …
  AJ: "[eb2,eb3,g4,eb5,g5]@3 ~@2 [eb3,bb3,eb4,g5]@3 d5@3 eb5@2 bb4@3", // Eb
  AK: "[c3,eb3,c4,c5]@3 ~@2 [c3,eb3,c4,g5]@3 d5@3 eb5@2 b4@3", // Cm
  AL: "[c3,f3,ab3,c5]@3 ~@2 [c3,f3,ab3,g5]@3 d5@3 eb5@2 b4@3", // Fm
  AM: "[bb2,d3,ab3,bb3,c5]@3 ~@2 [bb2,d3,ab3,bb3,g5]@3 db5@3 d5@2 a4@3", // Bb7 Gm
  AN: "[eb3,g3,bb3,eb4,bb4]@3 ~@2 [eb3,g3,bb3,eb4,g5,g6]@3 [d5,d6]@3 [eb5,eb6]@2 [bb4,bb5]@3", // Eb D Eb Bb
  AO: "[c3,eb3,g3,c4,c5,c6]@3 ~@2 [c3,eb3,g3,c4,g5,g6]@3 [d5,d6]@3 [eb5,eb6]@2 [b4,b5]@3", // Cm D Eb B
  AP: "[c3,f3,ab3,c4,c5,c6]@3 ~@2 [c3,f3,ab3,c4,g5,g6]@3 [d5,d6]@3 [eb5,eb6]@2 [b4,b5]@3", // Fm D Eb B
  AQ: "[bb2,d3,ab3,bb3,c5,c6]@3 ~@2 [bb2,d3,ab3,bb3,g5,g6]@3 [db5,db6]@3 [d5,d6]@2 [a4,a5]@3", // Bb7 Gm Db D A
  AR: "[eb3,g3,bb3,eb4,eb5,eb6]@3 [d5,d6]@2 [eb5,bb5,eb6]@3 [f5,f6]@3 [eb5,c6,eb6]@2 [d5,d6]@3, ~@5 [bb2,eb3,g3]@5 ~ [ab2,c3,ab3]@5", // Eb D Eb5 F Cm D Eb Ab
  AS: "[eb5,bb5,eb6]@3 [f5,f6]@2 [eb5,c6,eb6]@3 [d5,d6]@3 [eb5,bb5,eb6]@2 [f5,f6]@3, [bb2,eb3,g3]@5 [ab2,c3,ab3]@5 ~ [bb2,eb3,g3]@5", // Eb5 F Cm D Eb5 F Eb Ab …
  AT: "[eb5,c6,eb6]@3 [d5,d6]@2 [eb5,bb5,eb6]@3 [f5,f6]@3 [eb5,c6,eb6]@2 [d5,d6]@3, [ab2,c3,ab3]@5 [bb2,eb3,g3]@5 ~ [ab2,c3,ab3]@5", // Cm D Eb5 F Cm D Ab Eb …
  AU: "[bb2,eb3,g3,eb5,bb5,eb6]@3 ~@13", // Eb
})).s("gm_piano").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@50 [~@5 x ~ x!3 ~ x ~@4] [x ~@4 x ~ x!3 ~ x ~@4]!15 x ~@11>").gain(0.3)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@36 [~@5 x ~ x ~ x ~ x ~@4]!14 ~@28>").gain(0.2)

stack(piano, rim, rim_soft)

More by Hinci