Strudelify
KeyG majorTempo120 bpm
0:00/0:00
// KV 80 Piano — Wolfgang Amadeus Mozart
// 120 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/53297; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 51 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.
// 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 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV
  AW AX AY
>`.pickRestart({
  A: "g3@3 g3@2 g3@3 g3@3 g3@2 [g3,g5]@3, d5@5 d5@8 ~@3", B: "a3@3 a3@2 a3@3 [a3,g5]@3 [f#3,a5]@2 [f#3,f#5]@3, f#5 ~",
  C: "[f#3,d5]@3 [f#3,c5]@2 g3@3 g3@3 g3@2 g3@3, ~@5 c5@5 ~ b4@5", // D F#dim
  D: "[g3,c6]@3 g3@2 g3@3 e5 d5 ~ f#5 e5 g3@2 c5, ~@3 c5@5 g3@3 g3@2 d5 ~@2", // C5
  E: "g5 a5 ~ b5 c6 g3 ~ g3 a3 b3 ~ [c4,d6]@2 c3@2 d6, g3@3 g3@2 d6@5 ~@3 e6 ~@2", // Csus2
  F: "c#3@3 c#3@2 [d3,b5]@5 ~@3 d3@3, b5@5 ~@6 a5@5", G: "d4@3 d4@2 d4@3 b5 a5 ~ d6 c#6 d4@2 a5, a5@8 d4@3 d4@2 b5 ~@2",
  H: "[c#4,a5]@3 [c#4,a5]@2 [c#4,a5]@3 [c#4,a5]@3 a5 f#5 [b3,g5]@3, ~@11 b3@2 ~@3", // F#m Em
  I: "[b3,g5]@3 [b3,g5]@2 a3@2 e5 [a3,f#5]@3 a3@2 [a3,f#5]@3, ~@5 g5 ~@10", J: "[g#3,e5]@5 ~@8 g#3@3",
  K: "a3@3 g3@2 f#3@3 e3@3 f#5 e5 f#5 ~ g5",
  L: "[d4,d5]@3 [d4,d5]@2 c#4@2 e5 f#5 d5 ~ d5 c#5 e5 ~ c#5, ~@5 g5 ~@2 d4@3 a3@5", M: "d3@8 d4@3 d4@2 d4@3, a5",
  N: "a3@5 a3 ~ g3 f#3 e3 ~@3 d3@3, a5@11 d3@2 ~@3, ~@12 d5@3 ~",
  O: "d6 c6@2 ~ a5 b5 d6 b5 g5 d5 b4 g4 [b4,d5] g4 d4 b3, f#3@3 f#3@2 g3@3 ~@8", // Bm
  P: "f#5 [g5,a5] f#5 [g5,a5] b5 [c#6,d6] c#6 [c#6,d6] d6 [f#5,a5] d5 a2@2 a2@2 [d5,e5], a3@3 a3@2 a3@3 a3@3 e5@4 ~", // Gsus2 Dmaj7 F#m Dsus2
  Q: "~ d3 ~ c#3 d3 e3 ~ d3 c#3 d3 ~ b2@5, d6@3 ~@13", R: "c#4 b3 ~ a#3 b3 f#3@5 ~@3 f#3@3",
  S: "c6 b5 ~ a5 g5 a3@3 a3@3 a2@2 a2@2 [d5,e5], g3@3 g3@2 f#5@5 ~ e5@4 ~", // Dsus2
  T: "b4@3 a4@2 b4@3 g4@3 d3@2 f#3@3, d3@11 f#4@5", U: "~ a5 g5 [e5,f#5] d5 [d3,c#5]@11, g3@3 a3@3 ~@10",
  V: "d3@3 f#3@2 d3@3 f#3@3 d3@2 f#3@3", W: "e3@3 g3@2 e3@3 g3@3 f#3@2 d3@3",
  X: "a3@3 d3@2 g3@3 b3@3 [g3,g6]@2 [g2,d6]@3, d6@5 d6@5 ~@6", Y: "[d3,b5]@5 ~@3 d4@3 b3@2 a3@3, ~@5 a5@5 ~@6",
  Z: "e5 f#5 ~ g#5 a5 g#3@2 c6 d6 b5 ~ a3@2 a2@3, g#3@3 g#3@2 b5 ~@2 g#3@3 ~@5",
  AA: "[a2,e6]@3 [a2,g5]@2 d3@3 d3@3 d3@2 d3@3, ~@5 f#5@5 ~@6", // A5 A7
  AB: "g4 d5 b4 g4 [b3,d4] [g2,g3]@3 g2@3 g2@2 [g2,f5]@3, g3@3 g2@2 ~@11", // Bm G G7
  AC: "[c3,e6]@3 d6 c6 c3@2 a5 [c#3,g5]@3 f#5 e5 d5 ~ e5, ~@3 c3@2 b5 ~@10", AD: "b3@3 a3@2 g3@3 g3@3 g3@2 g3@3",
  AE: "a3@3 a3@2 a3@3 a3@3 a3@2 g3@3", AF: "[f#3,c6]@3 [f#3,a5]@2 [f#3,f#5]@3 [f#3,c5]@3 g3@2 g3@3, ~@11 c5@5",
  AG: "a3@3 b3@2 c4@3 c4@3 [c4,e5]@2 [c4,g5]@3, ~@5 e5@5 ~@6", // C C5
  AH: "g3@3 g3@2 d5@3 e5 f#5 ~ g5 a5 b5 ~ c6, d5@5 g2@5 ~@6", AI: "c3@3 c3@2 c#3@3 c#3@3 b5@5, c6@5 b5@5 ~@6",
  AJ: "b3@3 a3@2 g3@3 g3@3 g3@2 g3@2 d5, ~@5 d5@8 e5 ~@2",
  AK: "d5 e5 ~ [f#3,d5]@2 f#3@3 [f#3,d6]@3 [f#3,d6]@2 [f#3,d6]@3, f#3@3 ~@13", // D
  AL: "e3@3 [e3,c6]@2 [e3,c6]@3 [e3,c6]@3 c6 a5 [d3,b5]@3, ~@11 d3@2 ~@3", // C G
  AM: "[d3,b5]@3 [d3,b5]@2 c#3@3 c#3@3 c#3@2 c#3@3, ~@5 a5@5 ~@6", AN: "d3@8 c4@3 b3@2 a3@3",
  AO: "[g3,d6]@3 [g3,g5]@2 [g3,g5]@3 [g3,g5]@3 c6 a5 g3@2 g5, ~@11 f#3@2 b5 ~@2", // G5 G
  AP: "d3 c3 ~ b2 a2 g2@8 g3@3, d5@5 ~@11", AQ: "f#3@3 g3@2 d3@5 ~ d3 c3 b2 ~ a2, d6",
  AR: "b4 d5@2 ~@2 b2@2 ~@2 f5 ~ e5 [e5,g5] c5 e5 c5, b2@3 b2@2 ~@3 b2@3 c3@3 ~@2, ~@4 g5@3 d6@3 ~@6", // Em
  AS: "c4 g5 ~ e5 c5 b4 d5 [b4,c5] c5 [d5,e5] f#5 [g5,a5] b5 [c6,d6] ~@2, ~@3 c3@2 d3@3 d3@3 d3@2 d3@3", // Cmaj7 Dsus2 Gsus2 Csus2
  AT: "g5 a5 b5 [c6,d6] e6 g6@2 g3 f#3 g3 ~ a3 g3 f#3 ~ g3, g2@5 f#6 ~@10", AU: "~ e3 ~ d#3 e3 f#3 ~ e3 d#3 e3 ~ b2@5",
  AV: "b2@3 b2@2 c3@2 e6 d6 c6 ~ d3@2 d3@3, f6@5 f6 ~@2 c3@3 b5@5", AW: "g5@3 d5@2 e5@3 d5@3 e5@2 c5@3, g3",
  AX: "~@7 [c6,d6] b5 [g5,a5] f#5 ~@5, g3@11 ~@5", AY: "[g2,g5]@3 ~@13",
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV
  AW AX AY
>`.pickRestart({
  A: "b3@3 b3@2 b3@3 b3@3 b3@2 b3@3", B: "c4@3 c4@2 c4@3 b3@3 a3@2 a3@3",
  C: "a3@3 a3@2 a3@5 ~@3 d5 ~ g5, d6@5 d6@8 ~@3, ~@11 g3@5", D: "e6@3 e5@5 g5 f#5 ~ a5 g5 f#5 ~ e5",
  E: "e5 f#5 ~ g5 a5 ~@2 b3 c4 d4 ~ [e4,b5]@2 e4@2 b5, g3@3 g3@2 b5@5 ~@3 c6 ~@2", // E5
  F: "e4@3 e4@2 [d4,g5]@5 ~ f#5@5, g5@5 ~@11", G: "f#4@3 f#4@2 f#4@3 f#4@3 f#4@2 f#4@3", H: "e4@3 e4@2 e4@3 e4@3 d4@5",
  I: "d6@5 ~@11", J: "d6 b5 a5 g#5 [e5,f#5] d5 b4 a4 g#4 f#4 ~ d5 b4 e4@2 d5, e4@3 e4@5 e4@2 e4@3 b5 ~@2",
  K: "c#4@3 b4@2 a4@3 c#4@3 d4 c#4 d4 ~ e4, a4@5 ~@11", L: "f#4@3 f#4@2 g4 ~ e4 f#4 d4 ~ d4 c#4 e4 ~ c#4, a5@5 ~@11",
  M: "[d4,f#5] [c#4,e5] ~ [d4,f#5] [e4,g5] [f#4,a5]@3 [f#4,d5]@3 [f#4,d5]@2 [f#4,d5]@3", // D C#m D Em F#m D
  N: "[d4,d5] [c#4,c#5] ~ [e4,e5] [c#4,c#5] a4@2 b4 ~ c#4 ~ [d4,f#4]@2 [d4,f#4]@3, ~@5 a3 ~@2 a4@3 ~@5", // D C# E C# D
  O: "[d4,a4]@3 [d4,a4]@2 [d4,g4]@3 ~@8", P: "[a4,d5]@3 a4@2 a4@3 a4@3 a4@2 [a4,c#5]@3, ~@3 d5@5 d5@5 ~@3",
  Q: "~ f#4 ~ e4 f#4 g4 ~ f#4 e4 f#4 ~ d5 e5 [f#5,g5] a5 [b5,c#6], ~@11 f#4@5", // Gmaj7 Bsus2
  R: "e4 d4 ~ c#4 d4!2 ~ [e4,f#4] g4 [a4,b4] c#5 d5@2 d4@3", // Esus2 Asus2
  S: "a5 g5 ~ f#5 e5 a3@3 a3@3 ~@2 g3@2 [b4,c#5], d4@3 b3@2 d5@5 ~ [a3,c#5]@4 ~", // Bsus2 A
  T: "g4@3 f#4@2 g4@2 [g5,a5] f#5 [d5,e5] c#5 d5@2 a4@3, ~@8 e4@3 ~@5", U: "b4@3 [e4,g4]@2 [e4,g4]@11", V: "d5",
  W: "[c#5,g5]@11 [c5,a5]@5", X: "[c5,f#5]@5 g5@8 [d4,b5]@3, ~@5 b4@5 ~@6", Y: "[d4,g5]@5 f#5@5 ~@6",
  Z: "b4@3 b4@2 b4@3 b4@3 a4 [c5,e5] a4 ~ c4, ~@11 e4@3 e4@2", // C
  AA: "a4@3 [e4,c#5]@2 f#4@3 f#4@3 d5 e5 f#4@2 g5, ~@5 d5@5 ~ f#4@2 f#5 ~@2", // C#m
  AB: "g4@5 ~ g3 b3 d4 b3 d4 [g4,d6]@2 [d4,b4]@3, b5@8 g5@3 ~@5", AC: "c4@3 e4@2 e4@3 e4@3 a3 g3 f#3 ~ g3",
  AD: "d6@3 f#5@2 [b3,g5]@3 [b3,d5]@3 b3@2 b3@3, ~@11 d5@5", AE: "c4@3 c4@2 c4@3 c4@3 c4@2 g5@2 c4, g5@5 f#5@8 b3 ~@2",
  AF: "a3@3 a3@2 a3@3 a3@3 a3@5", AG: "f#4@3 g4@2 g4@3 g4@3 [g4,c5]@2 [g4,e5]@3, ~@5 c5@5 ~@6",
  AH: "g4@3 g4@2 b4@3 c5 d5 ~ e5 f#5 g5 ~ a5, b4@5 g3@5 ~@6", AI: "e4@3 e4@2 e4@3 e4@3 [d4,g5]@5, a5@5 g5@5 ~@6",
  AJ: "~@5 b4@3 b4@3 b4@2 b4@3", AK: "a4@3 a4@2 a4@3 a4@3 a4@2 a4@3", AL: "g5@11 ~@5",
  AM: "g5@5 g5 e5 d5 c#5 b4 ~ g4 [d4,e4] c#4 b3 a3, ~@4 a4 a4@2 ~", // Dsus2
  AN: "[a4,f#5] [g4,e5] ~ [f#4,d5] [g4,e5] f#4@3 e5@3 d5@2 f#4@3, ~@5 d5@5 ~@6", // D C D C
  AO: "b4@3 b4@2 b4@3 b4@3 c5 a4 b4 ~ g4, d5@11 ~@5",
  AP: "d4 e4 ~ d4 [c4,f#4] [b3,g4] ~ [a3,a4] [g3,b4] [a3,c5] ~ [b3,d5]@2 [b3,g4]@3, d5 ~@3", // Cdim Em A G Am Bm Em
  AQ: "[c4,c5] [a3,a4] ~ [b3,b4] [g3,g4]!2 ~ [f#3,f#4] [a3,a4] [f#3,f#4] ~ d3 e4 d4@2 f#3, ~@11 d4@2 ~@3", // C A B G F# A F#
  AR: "[d4,g4]@3 [d4,g4]@2 [d4,g4]@3 [d4,g4]@3 [c4,g4]@3 ~@2", // G5 C5
  AS: "~@3 [e4,g4]@2 [d4,g4]@3 d4@3 d4@2 d4@3, ~@8 g4@5 b5 ~@2", AT: "[d4,g5]@5 ~@2 b4 a4 b4 ~ c5 b4 a4 ~ b4",
  AU: "~ g4 ~ f#4 g4 a4 ~ g4 f#4 g4 ~ g3 a3 [b3,c4] d4 [e4,f#4], g6@3 ~@13", // Cmaj7 Esus2
  AV: "g3@3 g3@2 g3@2 c6 b5 a5 ~ d4@2 d4@3, d6@5 d6 ~@2 e4@3 g5@5",
  AW: "d4@3 b4@2 c5@3 b4@3 ~ d6 [b5,c6] a5 [f#5,g5], g5@5 ~@6 c5@2 a4@3", // Cmaj7 Gmaj7
  AX: "[c5,e5]@3 [b4,d5]@2 [c5,e5]@3 [a4,c5]@3 ~@5", AY: "[g4,b4]@3 ~@13",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)

More by Wolfgang Amadeus Mozart