Strudelify

Un moto di gioia mi sento K.579

W. A. Mozart

KeyG majorTempo100 bpm
0:00/0:00
// Un moto di gioia mi sento K.579 — W.A. Mozart
// 100 bpm, 3/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 3/8 at bar 1, 2/8 at bar 83) are rendered on a constant 3/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/121950; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/1.5)

// 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 B C D E F G H I J@2 K L M@2 N O P Q R S T U V W X Y Z AA AB AC AD AE@2 AF AG AH AI AJ AH AK AL AM AN J@2 K L M@2 N
  AO AP AQ AR AO AS AQ AR AT AU AV AW AX@2 M@2 AY AZ BA BB BC BD BE@2 BF BG BH BI BJ BK BL BM I
>`.pickRestart({
  A: "~@11 d5@3 ~@2", B: "d5@3 ~@2 c#5@3 d5@3 e5@2 d5@3, g3, ~@5 [b3,d4]@5 ~ [b3,d4]@5",
  C: "b4@3 ~@2 a#4@3 b4@3 c5@2 b4@3, g3, ~@5 [b3,d4]@5 ~ [b3,d4]@5", // Bm
  D: "a4@3 ~@2 a4 b4 [a4,b4] g4 [g4,a4] a4 [a4,b4] a4 b4 c5 [b4,c5], d3, ~@5 [f#3,c4]@5 ~ [f#3,c4]@5", // Asus2 Gsus2 Asus2 Cmaj7 F#dim
  E: "g4@5 d4@5 ~ d5@3 ~@2, [g3,b3]@11 ~@5", // G
  F: "[g3,b3,d4]@5 g5@3 f#5@3 g5@2 d5@3, d5@3 ~@2 [g3,b3,d4]@5 ~ [g3,b3,d4]@5", // G
  G: "[g3,b3,d4]@5 d5@3 c#5@3 d5@2 b4@3, b4@3 ~@2 [g3,b3,d4]@5 ~ [g3,b3,d4]@5", // G
  H: "[d3,f#3,c4]@5 a4@3 b4@3 c5@2 d5@3, a4@3 ~@2 [d3,f#3,c4]@5 ~ [d3,f#3,c4]@5", I: "[g3,b3,g4]@5 ~@11",
  J: "[b3,g4,g5]@5 [c4,a4,a5]@5 ~ [d4,b4,b5]@5, g3", K: "[c5,c6]@8 [d5,d6]@3 [f#4,c5,c6]@5, g3, e4@11 ~@5",
  L: "[g3,g4,b4,b5]@5 [g4,g5]@5 ~@6", M: "~@5 [g3,b3,d4]@5 ~ [g3,b3,d4]@5, g2@11 ~@5",
  N: "~@5 [f#3,c4,d4]@5 ~ [f#3,c4,d4]@5, d2@11 ~@5", O: "[g2,e3,g3,b3]@5 ~@6 a4@5",
  P: "[f#3,a4]@5 [a3,d5]@5 ~ [b3,c#5]@5", Q: "[g3,b4]@5 [b3,e5]@5 ~ [e4,d5]@5",
  R: "c#5@3 d5@2 e5@3 f#5@3 g5@2 a5@3, a3@5 c#4@5 ~ e4@5", S: "[b3,g5]@5 [d4,f#5]@5 ~ d6@2 c#6@3, ~@11 f#4@5",
  T: "d6@3 c#6@2 b5 ~@2 a5 ~@2 g5 ~ f#5 ~@2, f#3@5 a3@5 ~ d4@5",
  U: "b5 ~@2 a5 ~ g5 ~@2 f#5 ~@2 e5 ~ d5 ~@2, g3@5 b3@5 ~ e4@5",
  V: "c#5 ~@2 d5 ~ e5 ~@2 f#5 ~@2 g5@2 e5@3, a3@5 ~@6 [a3,c#4,g4]@5", W: "[d4,f#4,d5]@5 d3@3 ~@8",
  X: "~@5 [a3,d4]@5 ~ [d4,a4]@5, f#3", Y: "~@5 [b3,d4]@5 ~ [d4,b4]@5, g3", Z: "~@5 [c#4,e4]@5 ~ [e4,c#5]@5, a3",
  AA: "~@5 [d4,f#4]@5 ~ [f#4,d5]@5, b3@11 ~@5", AB: "~@11 d6@2 c#6@3, ~@11 [f#4,d5,a5]@5",
  AC: "c#6@3 b5@2 b5@5 ~ b4@2 a4@3, [g4,d5,g5]@5 ~@6 [d#3,f#4]@5", AD: "[e3,g4]@5 [c#3,e4,g4]@5 ~ [b2,d4,e4,g4]@5",
  AE: "[[a2,c#3,e3,a3,c#4,e4,g4]@21 ~@6 e5@2 f5@3]/2", // A7
  AF: "d4@5 a5@3 g#5@3 a5@2 f#5@3, f#5@3 ~@2 [f#4,a4]@5 ~ [f#4,a4]@5", // F#m
  AG: "d4@5 f#5@3 f5@3 f#5@2 d5@3, d5@3 ~@2 [f#4,a4]@5 ~ [f#4,a4]@5", // F#m
  AH: "a3@5 [g4,a4]@5 ~ [g4,a4]@5, a4@3 ~@2 b4@3 ~@3 c#5@3 ~@2", // Gsus2
  AI: "d4@5 f5@3 f#5@3 a5@2 f#5@3, d5@3 ~@2 [f#4,a4]@5 ~ [f#4,a4]@5", // F#m
  AJ: "d4@5 c#5@3 d5@3 f#5@2 d5@3, d5@3 ~@2 [f#4,a4]@5 ~ [f#4,a4]@5", // F#m
  AK: "[d4,f#4,a4,d5]@3 ~@2 [c#3,c#5]@3 [d3,d5]@3 [f#3,f#5]@2 [d3,d5]@3", // D C# D F# D
  AL: "[a3,a5]@3 ~@2 [f3,f5]@3 [f#3,f#5]@3 [a3,a5]@2 [f#3,f#5]@3", // A F F# A F#
  AM: "[c4,c6]@3 ~@2 [d4,a4,f#5,c6]@3 ~@3 [d4,a4,f#5,c6]@3 ~@2", AN: "[d4,a4,f#5,c6]@3 ~@13",
  AO: "[g2,g3,b3,d4]@5 ~@6 [g3,d4,g4,g5]@4 [a3,c5,f#5]", // G G5 F#dim
  AP: "[a3,d4,c5,f#5]@3 ~@2 [a5,c6]@3 [g5,b5]@3 [a5,c6]@2 [f#5,a5]@3, ~@5 d4@5 ~ [c4,d4]@5", // D7 Am G Am F#m Csus2
  AQ: "[b3,g4,b5,d6]@3 ~@2 [b3,g4,b5,d6]@3 ~@8", AR: "[f#2,f#3,a3,c4,d4]@5 ~@11",
  AS: "[a3,d4,c5,f#5]@3 ~@2 [a5,c6]@3 [b5,d6]@3 [a5,c6]@2 [f#5,a5]@3, ~@5 d4@5 ~ [c4,d4]@5", // D7 Am Bm Am F#m Csus2
  AT: "[g2,g3,b3,d4]@5 ~@6 [b3,g4,d5]@5", AU: "[c4,e5]@5 [e4,g5]@5 ~ [g#4,e5,b5]@5, g4@11 ~@5",
  AV: "[a4,c6]@5 [c5,e6]@5 ~ [e3,b3,e4,g#4]@5, e5@11 ~@5", // Am C E
  AW: "[c3,c4,e4,a4]@5 [a2,a3,e4,a4,c5]@5 ~ [g2,g3,a4,c5,e5]@5", AX: "[[f#2,f#3,a3,c4,d4]@21 ~@11]/2",
  AY: "~@5 [a3,c4,d4]@5 ~ [a3,c4,d4]@5, d2@11 ~@5", AZ: "g3@5 a#5@3 b5@3 d6@2 b5@3, ~@5 [b3,d4]@5 ~ [b3,d4]@5",
  BA: "g3@5 f#5@3 g5@3 b5@2 g5@3, g5@3 ~@2 [b3,d4]@5 ~ [b3,d4]@5", BB: "[d3,d5]@5 ~@6 [c3,d4,f#4,a4]@5",
  BC: "[b2,d4,b4,d5]", BD: "[c3,e4,a4,c5]", BE: "[[g4,b4]@21 [a4,c5]@5 ~ [c3,f#4,a4]@5, d4, d3@27 ~@5]/2",
  BF: "g5@3 f#5@2 e5@3 d5@3 c5@2 b4@3, [b2,d3,g3]", BG: "a4@3 g4@2 f#4@3 e4@3 d4@2 c4@3, [c3,e3,g3]",
  BH: "b3@5 d4@5 ~ g4@5, [d3,g3]", BI: "a4@3 b4@2 c5@3 a4@3 d5@2 f#4@3, d3, f#3@11 a3@5",
  BJ: "[g3,g4]@5 f#5@3 g5@3 c6@2 b5@3, ~@5 [b3,d4]@5 ~ [b3,d4]@5", // G Bm
  BK: "d3@5 g#5@3 a5@3 c#6@2 d6@3, a5@3 ~@2 [f#3,c4]@5 ~ [f#3,c4]@5", BL: "[g3,b3]@5 f#4@3 g4@3 c5@2 b4@3, g5@3 ~@13",
  BM: "[d3,f#3,c4,a4]@5 g#4@3 a4@3 c#5@2 d5@3", // D7
})).s("gm_piano").gain(0.32)

stack(piano)

More by W. A. Mozart