Strudelify

Waltz in A Minor Chopin

Ryan Seneviratne

KeyA minorTempo120 bpm
0:00/0:00
// Waltz in A Minor Chopin — Ryan Seneviratne
// 120 bpm, 3/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5329574; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. 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 · flute
const flute = note(`<
  A B C D E F G H I J K L M N O P Q R S T U R S T U R S T U R S T U V@2 L M W@4 ~@2 X Y ~@2 Z AA V@2 L M W@4 ~@2 X Y ~@2
  Z AA B C D E F G AB AC N O AD AE AF AG AH AE
>`.pickRestart({
  A: "~@11 e4@5", B: "a4@3 b4@2 c5@3 b4@3 a4@2 g4@3", C: "f4@3 g4@2 a4@3 g4@3 f4@2 e4@3",
  D: "d4@3 g4@2 b4@3 a4@3 g4@2 f4@3", E: "e4@3 c5@2 e5@3 d5@3 c5@2 b4@3", F: "a4@3 b4@2 c5@3 d5@3 c5@2 b4@3",
  G: "d5@3 e5@2 f5@3 e5@3 d5@2 c5@3", H: "b4@3 a4@2 g4@3 c5@3 b4@2 d5@3", I: "e5@5 ~@6 e4@5", J: "a4@3 b4@2 c5@10 ~",
  K: "d5@3 e5@2 f5@10 ~", L: "b4@3 c5@2 d5@3 a5@3 g5@2 f5@3", M: "e5 [e5,f5] ~ d#5@2 e5@10 ~", N: "c5@3 d5@2 e5@10 ~",
  O: "f5@3 g5@2 a5@10 ~", P: "g5@5 f#5@3 g5@3 d6@2 f5@3", Q: "e5@15 ~",
  R: "a4@2 g#4@2 ~ c5@2 b4@2 c5@2 ~ d#5@2 e5@2, ~@4 a4@2 ~@5 e5@2 ~@3",
  S: "a5@2 g#5@2 ~ c6@2 b5@2 c6@2 ~ d#6@2 e6@2, ~@4 a5@2 ~@5 e6@2 ~@3",
  T: "e6@2 d#6@2 ~ c6@2 b5@2 c6@2 ~ g#5@2 a5@2, ~@4 e6@2 ~@5 a5@2 ~@3",
  U: "e5@2 d#5@2 ~ c5@2 b4@2 c5@2 ~ g#4@2 a4@2, ~@4 e5@2 ~@5 a4@2 ~@3", V: "[~@5 a4@3 b4@3 c5@10 d5@3 e5@3 f5@5]/2",
  W: "[~@5 c5@3 d5@3 e5@10 f5@3 g5@3 a5@10 d#5@3 e5@3 f#5@10 g#5@3 a5@3 b5@5]/4",
  X: "e5 [e5,f#5] ~ d5@2 g#4@3 f#5@3 e5@5", Y: "e5 [e5,f#5] ~ c#5@2 a4@3 f#5@3 e5@5",
  Z: "e5 [e5,f#5] ~ d5@2 g#4@3 f#5@3 e5@2 g#4@3", AA: "a4@5 ~@11", AB: "b4@3 c5@2 d5@3 a5@3 g5@2 b4@3",
  AC: "c5@5 ~@6 e4@5", AD: "f5@5 e5@5 ~ d5@5", AE: "c5@5 ~@3", AF: "~@3 a5@2 g5@3 f5@3 e5@2 d5@3",
  AG: "c#5@5 d5@5 ~ c5@2 d5@3", AH: "c5@5 c5@3 c5@3 d5@2 f4@3",
})).s("gm_flute").gain(0.21)

// chords · orchestral harp · "Harp"
const orchestral_harp = note(`<
  A B C D E F G D H B G D E F G D E I J K J I J K J I J K J I J K J B G D E F G L M N O N O N O N P B G D E F G L M N O
  N O N O N P B G D E F G D Q B G N J R S T U
>`.pickRestart({
  A: "~@11 e2@5", B: "~@5 [a3,c4,e4]@5 ~ [a3,c4,e4]@5, a1", C: "~@5 [a3,d4,f4]@5 ~ [a3,d4,f4]@5, a1",
  D: "~@5 [g3,b3,f4]@5 ~ [g3,b3,f4]@5, g2", E: "~@5 [g3,c4,e4]@5 ~ [g3,c4,e4]@5, c3",
  F: "~@5 [a3,c4,e4]@5 ~ [a3,c4,e4]@5, a2", G: "~@5 [a3,d4,f4]@5 ~ [a3,d4,f4]@5, d2",
  H: "~@5 [g3,c4,e4]@5 ~@6, c3@11 ~@5", I: "~@5 [e3,d4]@5 ~ [e3,g#3,d4]@5, e2, ~@5 b3@11",
  J: "~@5 [e3,a3,c4]@5 ~ [e3,a3,c4]@5, a2", K: "~@5 [e3,b3,d4]@5 ~ [e3,b3,d4]@5, e2",
  L: "~@5 [a3,b3,d#4]@5 ~ [a3,b3,d#4]@5, b1", M: "~@5 [e3,b3,d4]@5 ~@6, e2@11 ~@5",
  N: "~@5 [e3,g#3,d4]@5 ~ [e3,g#3,d4]@5, e2", O: "~@5 [e3,a3,c#4]@5 ~ [e3,a3,c#4]@5, a2",
  P: "~@5 [e3,c#4]@5 ~@6, a2@11 ~@5", Q: "~@5 [g3,e4]@5 ~@6, c3@11 ~@5", R: "~@5 [e3,a3,e4]@5 ~@6, c3@11 ~@5",
  S: "~@5 [a3,b3,f4]@5 ~@6, d3@11 ~@5", T: "~@5 [e3,c4]@5 ~ [e3,b3,d4]@5, e2@11 ~@5", U: "a2@5 [e3,c4]@5 ~@6",
})).s("gm_orchestral_harp").gain(0.25)

stack(flute, orchestral_harp)

More by Ryan Seneviratne