Strudelify

Shostakovich Waltz no. 2

Dmitri Shostakovich

KeyE♭ majorTempo170 bpm
0:00/0:00
// Shostakovich Waltz no. 2 — Dmitri Shostakovich
// 170 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5585796; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/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 · pizzicato strings
const pizzicato_strings = note("<[~@5 g4@5 ~ g4@5]!4 ~@74>").s("gm_pizzicato_strings").gain(0.3)

// other · violin
const violin = note(`<
  ~@20 A B C D E F G H I J K H I J K L M N O ~@3 A P Q@2 P A R S T U V@2 W X Y Z@2 AA AB AC AD AE Z H I J K H I J K L M
  N AF AG
>`.pickRestart({
  A: "eb4", B: "d4@11 eb4@5", C: "d4@11 c4@5", D: "ab3@5 f4@3 g4@3 ab4@2 f4@3", E: "bb4", F: "ab4@11 eb4@5", G: "g4",
  H: "~@5 c5@3 ~@3 d5@3 ~@2", I: "eb5@3 ~@2 eb5@3 d5@3 eb5@2 f5@3", J: "d5@3 ~@2 d5@3 c5@3 d5@2 eb5@3",
  K: "c5@3 ~@8 eb5@3 ~@2", L: "~@5 eb5@3 ~@3 f5@3 ~@2", M: "g5@3 ~@2 g5@3 f5@3 g5@2 ab5@3",
  N: "f5@3 ~@2 f5@3 eb5@3 f5@2 g5@3", O: "eb5@3 ~@13", P: "c4", Q: "g3/2", R: "g4@5 ab4@3 g4@3 f4@2 eb4@3", S: "f4",
  T: "f5", U: "d5", V: "[b4@21 g4@5 ~ b4@5]/2", W: "d5@5 b4@5 ~ d5@5", X: "f5@5 g5@5 ~ ab5@5", Y: "gb5", Z: "g5",
  AA: "f5@11 eb5@5", AB: "d5@11 c5@5", AC: "ab4@5 g4@5 ~ ab4@5", AD: "ab5", AE: "ab5@11 ab5@5",
  AF: "eb5@3 ~@8 [g4,g5]@5", AG: "[c5,c6]@5 ~@11",
})).s("gm_violin").gain(0.3)

// chords · pizzicato strings
const pizzicato_strings_2 = note("<A@4 B@6 C@3 D E F E G B H ~@58>".pickRestart({
  A: "~@5 eb4@5 ~ eb4@5", B: "~@5 [eb4,g4]@5 ~ [eb4,g4]@5", C: "~@5 [ab4,c5]@5 ~ [ab4,c5]@5",
  D: "~@5 [f4,ab4]@5 ~ [f4,ab4]@5", E: "~@5 [f4,g4]@5 ~ [f4,g4]@5", F: "~@5 [d4,f4]@5 ~ [d4,g4]@5",
  G: "~@5 [g4,b4]@5 ~ [g4,b4]@5", H: "~@5 [g4,c5]@5 ~ [g4,c5]@5",
})).s("gm_pizzicato_strings").gain(0.3)

// other · violin
const violin_2 = note(`<
  ~@20 A B C D E F G H I J K H I J K L M N O ~@3 A P Q@2 P A@2 E R S T@2 U V R W@2 X Y Z AA AB A H I J K H I J K L M N
  AC AD
>`.pickRestart({
  A: "eb4", B: "d4@11 c4@5", C: "bb3@11 ab3@5", D: "ab3", E: "d4", F: "c4@11 bb3@5", G: "bb3",
  H: "~@5 eb4@3 ~@3 f4@3 ~@2", I: "g4@3 ~@2 g4@3 f4@3 g4@2 ab4@3", J: "f4@3 ~@2 f4@3 eb4@3 f4@2 g4@3",
  K: "eb4@3 ~@8 g4@3 ~@2", L: "~@5 c5@3 ~@3 d5@3 ~@2", M: "eb5@3 ~@2 eb5@3 d5@3 eb5@2 f5@3",
  N: "d5@3 ~@2 d5@3 c5@3 d5@2 eb5@3", O: "c5@3 ~@13", P: "c4", Q: "g3/2", R: "d5", S: "ab4", T: "[g4@21 g4@5 ~ b4@5]/2",
  U: "d5@5 g4@5 ~ b4@5", V: "d5@5 eb5@5 ~ f5@5", W: "eb5", X: "d5@11 c5@5", Y: "bb4@11 ab4@5", Z: "f4@5 g4@5 ~ ab4@5",
  AA: "f4", AB: "eb4@11 d4@5", AC: "c5@3 ~@8 f5@5", AD: "eb5@5 ~@11",
})).s("gm_violin").gain(0.3)

// other · pizzicato strings
const pizzicato_strings_3 = note("<A B A B C D C D C D E F G F E F E F H I ~@58>".pickRestart({
  A: "c3@5 c4@5 ~ c4@5", B: "g2@5 c4@5 ~ c4@5", C: "c4@5 ~@11", D: "g3@5 ~@11", E: "d4@5 f4@5 ~ f4@5",
  F: "g3@5 f4@5 ~ f4@5", G: "d4@5 ab4@5 ~ ab4@5", H: "c4@5 g4@5 ~ g4@5", I: "g3@5 eb4@5 ~ eb4@5",
})).s("gm_pizzicato_strings").gain(0.3)

// other · cello
const cello = note(`<
  ~@4 A B C@2 D E A F@2 G H@2 I J K A@2 L M@2 N O L ~ P Q R ~ P Q R S T U V ~@3 A L W@2 L X A F ~@4 Y J K A Z AA AB@2 AC
  AD A ~ AE AF AG ~ AE AF AG AH AE AI AJ AK
>`.pickRestart({
  A: "g3", B: "eb3@11 d3@5", C: "[c3@21 c3@5 ~ d3@5]/2", D: "eb3@5 c3@5 ~ eb3@5", E: "g3@11 ab3@5", F: "f3",
  G: "d3@11 c3@5", H: "[b2@21 g2@5 ~ b2@5]/2", I: "d3@5 b2@5 ~ d3@5", J: "f3@5 g3@5 ~ ab3@5", K: "gb3", L: "eb3",
  M: "f3/2", N: "bb2", O: "c3@11 bb2@5", P: "g3@3 ~@2 g3@3 ~@3 g3@3 ~@2", Q: "f3@3 ~@2 f3@3 ~@3 f3@3 ~@2",
  R: "eb3@3 ~@8 g3@3 ~@2", S: "~@5 c4@3 ~@3 d4@3 ~@2", T: "eb4@3 ~@2 eb4@3 d4@3 eb4@2 f4@3",
  U: "d4@3 ~@2 d4@3 c4@3 d4@2 eb4@3", V: "c4@3 ~@13", W: "c3/2", X: "c3", Y: "~@5 bb2@5 ~ d3@5",
  Z: "c3@5 eb3@5 ~ eb3@5", AA: "g2@5 eb3@5 ~ eb3@5", AB: "f3@5 ab3@5 ~ ab3@5", AC: "bb2@5 f3@5 ~ f3@5",
  AD: "bb2@5 f3@5 ~ ab3@5", AE: "g3@5 g3@3 ~@8", AF: "f3@5 f3@3 ~@8", AG: "eb3@5 g3@3 ~@8", AH: "ab3@5 ~@11",
  AI: "f3@5 d3@3 ~@8", AJ: "eb3@5 ~@6 b2@5", AK: "c3@5 ~@11",
})).s("gm_cello").gain(0.3)

// chords · piano
const piano = note(`<
  A B A B C D E@2 F G H I J K L@2 M N O P Q R S T U V W X Y Z AA AB Y AC AA AD AE AF AG B A B AH AI AJ@2 AK AL AM AN AO
  AP AQ@2 AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BD BE BF BH BI AF BJ BK
>`.pickRestart({
  A: "[c2,c3]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3]@5", B: "[g1,g2]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3]@5",
  C: "c3@5 [eb3,g3]@5 ~ [eb3,g3]@5, g4@15 ~", D: "g2@5 [eb3,g3]@5 ~ [eb3,g3,d4]@5, eb4@5 ~@3",
  E: "[c3@5 [eb3,g3]@5 ~ [eb3,g3]@5 g2@5 [eb3,g3,c4]@5 ~ [eb3,g3,d4]@5, c4@5 ~@3]/2", // Eb Cm Ebmaj7
  F: "[c3,eb4]@5 [eb3,g3,c4]@5 ~ [eb3,g3,eb4]@5", G: "g2@5 [eb3,g3]@5 ~ [eb3,g3,ab4]@5, g4@5 ~@3",
  H: "d3@5 [f3,ab3,c4]@5 ~ [f3,ab3,c4]@5, g4@15 ~", I: "g2@5 [f3,ab3,c4]@5 ~ [f3,ab3,c4]@5, f4@15 ~",
  J: "d3@5 [f3,ab3,c4]@5 ~ [f3,ab3,c4]@5, f4@15 ~", K: "g2@5 [f3,ab3]@5 ~ [f3,ab3,c4]@5, d4@5 ~@3",
  L: "[d3@5 [f3,g3]@5 ~ [f3,g3]@5 g2@5 [d3,f3,g3]@5 ~ [d3,f3,g3,b3]@5, b3@5 ~@3]/2", // Fsus2 G7
  M: "[d3,d4]@5 [f3,g3,b3]@5 ~ [f3,g3,d4]@5", N: "[g2,f4]@5 [f3,g3,b3,g4]@5 ~ [f3,g3,b3,ab4]@5",
  O: "c3@5 [eb3,g3]@5 ~ [eb3,g3]@5, gb4@15 ~", P: "g2@5 [eb3,g3,c4]@5 ~ [eb3,g3,c4]@5, g4@15 ~",
  Q: "c3@5 [eb3,g3,c4]@5 ~ [eb3,g3,c4]@5, [eb4,g4,eb5]@15 ~", // Cm Eb
  R: "g2@5 [eb3,g3,c4]@5 ~ [eb3,g3,c4,eb4,g4,c5]@5, [d4,d5]@5 ~@3", // Cm D
  S: "f2@5 [ab3,d4]@5 ~ [ab3,c4,d4,f4,ab4]@5, [bb3,f4,bb4]@5 ~@3", T: "f2@5 [ab3,d4]@5 ~ [ab3,d4]@5, [c4,f4]@15 ~",
  U: "bb2@5 [d3,ab3,bb3]@5 ~ [d3,ab3,bb3]@5, [d4,f4,bb4,d5]@15 ~", // Bb7 Bb
  V: "bb2@5 [eb3,ab3,bb3]@5 ~ [d3,ab3,bb3,bb4]@5, c5@5 ~@3", W: "eb3@5 [eb3,g3,bb3]@5 ~ [eb3,g3,bb3]@5, bb4@15 ~",
  X: "[ab2,ab3]@5 eb5@5 ~ f5@5", Y: "[g2,g3,g5]@5 g5@3 f5@3 g5@2 ab5@3, ~@5 [eb3,g3]@5 ~@6",
  Z: "[ab2,ab3,f5]@5 f5@3 eb5@3 f5@2 g5@3, ~@5 [eb3,f3]@5 ~@6", AA: "[g2,g3,eb5]@5 [eb3,g3]@5 ~ g5@5",
  AB: "[ab2,ab3]@5 [c3,eb3,eb5]@5 ~ f5@5", AC: "[ab2,ab3,f5]@5 f5@3 eb5@3 f5@2 g5@3, ~@5 [d3,f3]@5 ~@6",
  AD: "[ab2,ab3]@5 c6@5 ~ d6@5", AE: "[g2,g3,eb6]@5 eb6@3 d6@3 eb6@2 f6@3, ~@5 [eb3,g3]@5 ~@6",
  AF: "[g2,g3,d6]@5 d6@3 c6@3 d6@2 eb6@3, ~@5 [f3,g3]@5 ~@6", AG: "[c2,c3,c6]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3]@5",
  AH: "[c2,c3]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3]@5, [g4,g5]@15 ~", // C Cm G
  AI: "[g1,g2]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3,d4,d5]@5, [eb4,eb5]@5 ~@3", // G Cm Eb
  AJ: "[[c2,c3]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3]@5 [g1,g2]@5 [c3,eb3,g3,c4,c5]@5 ~ [c3,eb3,g3,d4,d5]@5, [c4,c5]@5 ~@3]/2", // C Cm G Cm C
  AK: "[c2,c3,eb4,eb5]@5 [c3,eb3,g3,c4,c5]@5 ~ [c3,eb3,g3,eb4,eb5]@5", // Cm
  AL: "[g1,g2]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3,ab4,ab5]@5, [g4,g5]@5 ~@3", // G Cm Abmaj7 G
  AM: "[d2,d3]@5 [f3,ab3,c4]@5 ~ [f3,ab3,c4]@5, [g4,g5]@15 ~", // D Fm G
  AN: "[g1,g2]@5 [f3,ab3,c4]@5 ~ [f3,ab3,c4]@5, [f4,f5]@15 ~", // G Fm F
  AO: "[d2,d3]@5 [f3,ab3,c4]@5 ~ [f3,ab3,c4]@5, [f4,f5]@15 ~", // D Fm F
  AP: "[g1,g2]@5 [f3,ab3,c4]@5 ~ [f3,ab3,c4,c5]@5, [d4,d5]@5 ~@3", // G Fm D
  AQ: "[[d2,d3]@5 [d3,f3,g3]@5 ~ [d3,f3,g3]@5 [g1,g2]@5 [d3,f3,g3,g4]@5 ~ [d3,f3,b3,b4]@5, [b3,b4]@5 ~@3]/2", // D G7 G G7 Bdim B
  AR: "[d2,d3,d4,d5]@5 [d3,f3,g3,b3,b4]@5 ~ [d3,f3,g3,d4,d5]@5", // D G7
  AS: "[g1,g2,f4,f5]@5 [d3,f3,g3,g4,g5]@5 ~ [d3,f3,g3,ab4,ab5]@5", // G7 Ddim
  AT: "[c2,c3]@5 [c3,eb3,gb3]@5 ~ [db3,eb3,gb3]@5, [gb4,gb5]@15 ~", // C Cdim Ebm7 Gb
  AU: "[g1,g2]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3]@5, [g4,g5]@15 ~", // G Cm G
  AV: "[c2,c3]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3]@5, [eb5,g5,eb6]@15 ~", // C Cm Eb
  AW: "[g1,g2]@5 [c3,eb3,g3]@5 ~ [c3,eb3,g3,c5,g5,c6]@5, [d5,g5,d6]@5 ~@3", // G Cm G5
  AX: "[f2,f3]@5 [ab3,bb3,d4]@5 ~ [ab3,bb3,d4,ab4,f5,ab5]@5, [bb4,f5,bb5]@5 ~@3", // F Bb7 Bb5
  AY: "[f2,f3]@5 [ab3,bb3,d4]@5 ~ [ab3,bb3,d4]@5, [f4,bb4,f5]@15 ~", // F Bb7 Bb5
  AZ: "[bb1,bb2]@5 [d3,f3,ab3,bb3]@5 ~ [d3,f3,ab3,bb3]@5, [d5,f5,d6]@15 ~", // Bb Bb7 Dm
  BA: "[bb1,bb2]@5 [d3,f3,ab3,bb3]@5 ~ [d3,f3,ab3,bb3,bb4,f5,bb5]@5, [c5,f5,c6]@5 ~@3", // Bb Bb7 F5
  BB: "[eb2,eb3]@5 [bb2,eb3,g3]@5 ~ [bb2,eb3,g3]@5, [bb4,eb5,bb5]@15 ~", BC: "[ab2,ab3]@5 [c5,eb5]@5 ~ [d5,f5]@5",
  BD: "[g2,g3,eb5,g5]@5 [eb5,g5]@3 [d5,f5]@3 [eb5,g5]@2 [f5,ab5]@3, ~@5 [eb3,g3]@5 ~@6", // Cm Eb Dm Eb Fm Eb
  BE: "[ab2,ab3,d5,f5]@5 [d5,f5]@3 [c5,eb5]@3 [d5,f5]@2 [eb5,g5]@3, ~@5 [d3,f3]@5 ~@6", // Ddim Dm Cm Dm Eb Dm
  BF: "[g2,g3,c5,eb5]@5 [eb3,g3]@5 ~ [c5,eb5,g5]@5", BG: "[ab2,ab3]@5 [c3,eb3,c5,eb5]@5 ~ [d5,f5]@5",
  BH: "[ab2,ab3]@5 [ab5,c6]@5 ~ [b5,d6]@5", BI: "[g2,g3,c6,eb6]@5 eb6@3 d6@3 eb6@2 f6@3, ~@5 [eb3,g3]@5 ~@6",
  BJ: "[c2,c3,c6]@5 ~@6 [g2,g3,b4,f5,g5,b5]@5", BK: "[c2,c3,c5,eb5,g5,c6]@5 ~@11",
})).s("gm_piano").gain(0.3)

stack(pizzicato_strings, violin, pizzicato_strings_2, violin_2, pizzicato_strings_3, cello, piano)

More by Dmitri Shostakovich