Strudelify

Menuet in G

Ludwig van Beethoven

KeyG majorTempo120 bpm
0:00/0:00
// Menuet in G — Ludwig van Beethoven
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// 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 · "A.PIANO 1"
const piano = note("<A@5 B@3 C@5 D@2 E@8 F@3 G@5 H I@3 J K L M N O@3 P@4 Q@6 R@4 S@4 T@3 U@6 V@5>".pickRestart({
  A: "[~@8 [a4,c5]@3 ~@7 c#5@2 [b4,d5]@7 ~ c#5 ~ [b4,d5]@7 [a#4,c#5]@2 ~ g3@9 ~ g2@11 [c5,e5]@8 [g#4,b4]@3 d3@5 ~@5 d2@10 [b4,d5]@8 a4@3 [g2,g4]@10 g1@9 ~ [b3,g4]@7 [d4,a4]@2 ~@7 [f#4,a#4]@2 ~@7 [f#4,a#4]@2 ~ g4@6 [f#4,a#4]@3, [g4,b4]@11 [g2,b4,d5]@9 b2@4 ~@6 d3@4 ~@99 [g2,g4,b4]@8 g4@6 ~@3 [d#3,b4]@10, ~@17 a#4@3 ~@7 a#4@2 ~@11 [b4,d5]@23 ~@9 [a4,c5]@20 ~@11 b4@20 ~@18 b4@9 ~@10, ~@142 b2@9 ~@9]/5", // Am Bm A#m C G#m Bm G Em …
  B: "[e3@9 f#3@10 [f#4,a4]@5 [e4,g4]@4 ~ g4@4 [d4,f#4]@4 ~ [d4,f#4]@4 [f#4,a4]@5 ~ e4@2 ~@3 e4@5 [d3,d4]@14 ~@9 [g4,b4]@7 [a4,c5] ~@2 b4@5, [g4,b4]@19 g3@9 e4@5 ~@19 c#4@4 ~@40, ~@29 a3@9 ~@9 [a2,g4]@7 ~@36 [g2,d5]@6]/3", // F#m Em D F#m D G Am G …
  C: "[~@2 c#5@2 [b4,d5]@7 [a#4,c#5]@2 ~ [b4,d5]@7 a#4@2 ~ d5@20 ~@8 [g#4,b4]@2 ~ d3@4 ~@6 d2@2 ~@7 [b4,d5]@8 [f#4,a4]@3 g4@10 g1 ~@8 g4@8 [d4,a4]@2 ~ g4@5 ~ [f#4,a#4]@2 [b2,g4,b4]@7 [f#4,a#4]@2 ~@7 [f#4,a#4]@3 e3@10 f#3@8, ~ a#4@2 ~ b2@3 ~@7 d3 ~@9 g3@10 ~@11 [c5,e5]@10 [a4,c5]@19 ~@11 b4@19 ~@10 b4@8 ~@20 [g4,b4]@18, ~@85 g2@2 ~@28 g2@9 ~@9 [d#3,g4,b4]@10 ~@17]/5", // Bm A#m Bm G#m Bm F#m D5 F# …
  D: "[~@6 [e4,g4]@4 [e4,g4]@4 ~ [d4,f#4]@4 [d4,f#4]@4 ~ a4@4 ~ e4@3 ~ [c#4,e4]@5 ~ d3@15 ~@5 d5@5, ~ [f#4,a4]@8 ~ a3@17 ~ a2@10 ~@26, ~@23 f#4@3 ~@12 d4@11 ~@15]/2", // Em D C#m F#m
  E: "[g5@6 [d5,g5]@10 ~@10 [d4,b4]@7 ~@14 d3@10 ~@7 d5@3 [a4,c5]@9 [g4,b4]@10 ~ c3@8 c5@2 ~ b4@11 ~@19 [c4,a4]@3 ~@8 [c#4,a#4]@2 ~@8 [c#4,a#4]@2 ~@9 c#4@2 [g2,g3]@11 [f2,f3]@10 ~ e4@8 g#4@2 ~@11 [d#2,d#3]@10 ~@8 [a3,f#4]@2 ~@2 g4@21 d5@4 g5@4, ~@16 [c5,f#5]@15 ~@5 [f#3,a4,a5]@22 f#3@10 ~@63 [g1,g2,d4,b4]@11 ~@9 [d2,d3,d4,b4]@11 ~@22 [e2,e3]@20 ~@12 d3@10 ~ g2@10 ~@19, ~@16 d4@5 ~@5 [g3,g5]@13 ~@18 g5@3 f#5@7 ~@19 [c5,e5]@10 ~@63 a#4@3 ~@21 c5@10 ~@22 b4@4 ~@37, ~@17 a3@14 ~@5 d4@37 ~@46 [b3,g4]@12 ~@31 [d4,b4]@16 ~@14 b3 ~ [c4,a4]@21 d4@10 ~@2 b3@14 ~@15, ~@62 e5@4 ~ g3@19 ~@55 [b1,b2,d4,b4]@11 ~@104]/8", // G5 G Am G F F# G F …
  F: "[~@2 d5@4 ~@17 [d4,b4]@6 ~@4 f#3@11 d3@10 ~@5 e5@3 d5@2 [a4,c5]@10 [g4,b4]@11 e5@9 c5 ~, ~@2 g5@15 ~@5 g5@11 [a4,a5]@23 ~ f#5@7 ~@21 c5@5 ~@6, ~@13 [a3,c5,f#5]@14 ~@6 d4@52 ~@11, ~@23 g3@13 ~@18 [f#3,g5]@9 ~@33]/3", // G Am G A F#dim Gmaj7
  G: "[~@12 a4@7 ~@12 [c4,a4]@2 ~ [g1,d4,b4]@8 [c#4,a#4]@3 d4@4 ~@3 [c#4,a#4]@3 [d3,b4]@8 [c#4,a#4]@2 ~@11 [f2,f3]@8 ~@3 [e4,c5]@8 g#4@3 ~@11 d#2@11 [d3,d4,b4]@9 [a3,f#4]@2 ~@2 b3@23 d5@4, b4@12 ~@11 g4@11 ~@61 b3 ~@2 [c4,a4]@22 ~@12 g4@24 ~@4, ~ d3@14 ~@30 [b1,b2,b4]@10 [d2,d4]@4 ~@6 [g2,g3,d4,b4]@17 ~@5 [e2,e3]@21 d#3@11 ~@41]/5", // F G F# G F# F C G …
  H: "~ c#5@5 d5@4 ~@5 d5@3 ~ g4@4 ~@5 d4@4, ~@5 b4@2 ~@9, ~@11 g2@8 ~@13",
  I: "[~ b4@4 a4@4 c5@4 f#4@4 ~ a4@4 ~@4 f#4@4 ~ g4@3 f#4@4 ~ g4@4 a4@4 b4@4 c#5@4 d5@4 c#5@4 ~@4 e5@4 ~@5 c5@4 b4@4 a#4@4 b4@4 c5@4, ~@22 d4@8 ~@25 f#3@8 d5@4 ~@5 d5@8 ~@16, ~@8 a3 ~@3]/3",
  J: "~@5 a4@4 g4@4 b4@4 ~@4 g4@4 ~@4 a4@3, b4 ~@7, ~ d#3@8 e3@8 [c#3,a4]@8 [d3,f#4]@7", // F#m D
  K: "~@2 e4@4 f#4@4 g4@4 e4@4 c#4@4 a3@5 d4@5, ~@2 g2@9 ~@7 a2@3 ~@11", L: "~@10 d5@4 c#5@5 d5@4 [g2,b4]@4 d5@5",
  M: "g4@4 b4@4 d4@4 b4@4 ~ c3@2 ~ c5@4 f#4@4 ~ a4@3, d3 ~@7 g3@2 ~@6 a4@4 ~@12",
  N: "~ d4@4 f#4@4 g4@4 f#4@4 g4@4 a4@4 b4@4 c#5@3, ~@25 g3@3 ~@4",
  O: "[~ d5@4 c#5@4 ~ a3@2 ~@2 e5@4 ~@4 c5@4 ~@4 a#4@4 b4@4 c5@4 b4@4 a4@4 g4@4 ~ b4@4 a4@4 g4@4 f#4@4 a4@4 ~@4 f#4@4 ~ g4@3 e4@4 ~ c#4@4, ~@9 d5@4 ~@29 d#3@2 ~@6 e3@2 ~@7 c#3@2 ~@6 d3 ~@7 [g2,e4]@8 ~@9 a2@2 ~@2]/3", // C
  P: "[a3@4 ~ [d3,d4]@13 d5@5 ~@3 d5@5 ~@8 a4@4 ~@8 d4@4 ~@4 c4@4 [a3,f#4]@4 [b3,d5]@4 [a#3,c#5]@4 [b3,d5]@4 [c4,e5]@4 [a3,c5]@4 [f#3,a4]@4 [g3,b4]@4 [f#3,a4]@4 [g3,b4]@4 ~ a3@4 [f#3,a4]@4 ~ d3 ~@3 [d3,d5]@3 ~ e3@3 [f#3,d5]@4, ~@23 c#5@8 [d3,e5]@12 [d4,b4]@4 a4@5 ~@3 [e4,c5]@5 ~@52 f#4@8 ~@8, ~@35 c5@9 ~@2 c#4@4 b4@5 ~@3 a4@4 ~@41 c5@4 ~@13 c#5@4 ~@4]/4", // D Bm A#m Bm C Am F#m G …
  Q: "[~ [g3,b4]@3 d5@4 ~ b3@3 ~ b4@3 ~ [b2,d4]@4 g5@4 ~@5 g5@4 c5@4 e5@4 a4@3 ~ c5@4 f#4@4 a4@4 d4@4 e4@5 f4@4 f#4@5 ~ c4@11 ~@6 d5@4 c#5@4 d5@4 e5@4 c5@4 a4@4 ~ b4@3 [c#4,a4]@4 [d4,b4]@4 [e4,c5]@4 ~ [c4,a4]@4 [a3,f#4]@4 [b3,d5]@4 [a#3,c#5]@4 [b3,d5]@4 [c4,e5]@4 ~ a3@3 a4@3 ~@2 g3@3 ~ a4@4 [g3,b4]@4 [a3,c5]@4 [f#3,a4]@4 [d3,f#4] ~@3, ~@8 g4@5 ~@12 e5@8 ~ e3@8 a3@8 f#3@8 a3@9 c4@9 a4@11 ~@31 d4@4 ~@37 c5@3 ~@5 b4@4 ~@21, ~@26 c3@20 ~@4 d3@28 ~@28 d3@10 ~@55 f#3@4 ~@17]/6", // G Bm F#m G C F D Bm …
  R: "[[d3,d5]@4 [e3,c#5]@4 [f#3,d5]@4 [g3,b4]@4 d5@4 b3@3 ~ b4@3 ~ d4 ~@4 g5@5 e5@5 g5@3 ~@5 e5@4 a4@3 ~ c5@4 ~@9 d4@5 e4@5 ~@5 f#4@6 [c4,a4]@17 ~@18, ~@20 g4@7 ~ b2@10 c3@20 ~@6 d3@31 ~@33, ~@46 c5@4 ~@5 a3@8 f#4@5 ~@14 [c4,f4]@10 ~@36, ~@47 e3@9 ~@7 f#3@9 ~@56]/4", // D C#m D G F F5
  S: "[~@18 c5@2 ~ g2@7 [a#4,c#5]@2 ~ [b4,d5]@7 a#4@2 ~ b4@8 a#4@2 ~@11 g2@12 ~ c5@8 [g#4,b4]@2 ~@11 d2@3 ~@15 a4@3 g4@11, ~@20 d5@10 ~@45 e5@5 ~@5 c5@20 ~ [b4,d5]@11 ~@11, ~@21 b4 ~@9 b2@3 ~@7 d3@2 ~@9 [g3,d5]@23 ~@11 a4@20 ~@22]/4", // A#m Bm G#m Bm G5
  T: "[g1 ~@18 [d4,a4]@2 ~@8 [f#4,a#4]@2 ~@8 [f#4,a#4]@3 ~@8 [f#4,a#4]@3 ~@10 f#3@10 [f#4,a4]@5 [e4,g4]@5 [e4,g4]@5 [d4,f#4]@5 [d4,f#4]@3, ~@11 [b3,g4]@10 b4@10 g4@10 ~ [d#3,g4,b4]@11 [g4,b4]@22 ~@21, ~@22 [g2,g4]@10 [b2,b4]@11 ~@10 e3@14 ~@6 g3@10 a3@11 ~@2]/3", // D5 F# F#m Em D Em D#aug G …
  U: "[~@3 a4@4 ~ a2@5 e4@5 ~@22 d5@6 g5@4 ~@14 d4@5 ~@4 [g3,g5]@11 f#3@11 d3@11 ~@8 d5@2 ~ [a4,c5]@10 [g4,b4]@11 ~@9 c5@2 ~ d3@20 ~@14 [g2,b4]@8, ~@2 f#4@3 ~@2 g4@5 ~@7 d3@14 ~@30 f#5@14 ~@7 [a4,a5]@24 ~ f#5@7 ~@22 c5@5 ~@7 b4@12 ~@11 g4@13 ~@6, ~@8 e4@2 ~@8 d4@12 d4@17 ~@5 g5@12 a3@14 ~@28 [f#3,g5]@11 ~@22 c3@11 ~@34 [g1,d4]@5 ~@3, ~@63 c5@6 ~@4 [d4,b4]@7 ~@4 d4@32 ~@65 [c4,a4]@5 ~@6, ~@112 e5@5 ~@21 e5@10 ~@44]/6", // G Am G A Gmaj7 G5 G F
  V: "[[c#4,a#4]@3 [b1,d4]@6 ~@4 d4@6 ~@3 [c#4,a#4]@3 [g2,g3]@11 [f2,f3]@12 ~@9 g#4@3 ~@12 d#3@12 ~@10 f#4@4 [g2,g4]@33 ~@29, ~@3 [b2,b4]@10 [d2,d3,b4]@12 ~@23 [e2,e3]@24 ~@88, ~@11 [c#4,a#4]@4 ~@10 [d4,b4]@23 [e4,c5]@12 ~@24 [d4,b4]@13 ~@63, ~@57 b3@2 ~ [c4,a4]@24 ~@76]/5", // F# Bm F# G F G B G …
})).s("gm_piano").gain(0.32)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@3 A ~@3 B C@2 ~ D ~ E F G ~ H I ~@2 J K L ~ M N O ~ P@2 Q@3 R ~ S@2 T U V W ~@7 X ~@2 Y ~@2 Z@2 AA AB@2 AC@2 ~@2 AD
  AE@2 AF@2 AG ~@2 AH@3
>`.pickRestart({
  A: "~@2 f#4 ~@13", B: "~@3 d4@5 ~@8", C: "[~@21 c#5@3 ~@11 g2@2 ~@27, ~@6 b4@5 ~@5]/2", D: "~@9 b3@10 ~@13",
  E: "~@2 g3@8 ~@19 g4@3", F: "~@17 d4@10 ~@5", G: "~@7 b3@11 ~@14, ~@3 d4@5 ~@8", H: "~@31 a4",
  I: "~@2 g4@11 [f#4,a4]@7 ~@12, ~ d3@9 ~@6", J: "~@3 d2", K: "~@14 g3@11 ~@7",
  L: "~@13 d4@6 ~@13, ~@3 b3@14 ~@15, ~@3 d4@10 ~@19, ~@6 d5@11 ~@15", M: "~ g3@20 c3@9 a4@2",
  N: "~ g4@10 ~ f#4@7 ~@5 b3@8", O: "~ g2@5 ~@10", P: "[~@25 d2@10 ~@2 g2@9 ~@4 g3@10 ~@4]/2",
  Q: "[~@24 b4@4 ~ g3@7 ~ c3@8 ~ d3@8 ~ f#3@8 b2@8 d3@9 g3@8 ~@8, ~@19 d3@8 ~@69]/3", R: "~@8 d4@7 ~@2 g3@8 b3@7",
  S: "[~@28 d3@7 ~@29]/2", T: "~@25 d3 ~@6", U: "~ f#3@2 ~@7 b2 ~@7 d3@2 ~@12",
  V: "~ f#3@3 ~@14 d5@4 ~@4 b4@4 ~@2, ~@9 d4 ~@3 g3 ~@2", W: "~@2 b3@3 ~@27", X: "~@25 b3@7, ~@13 g3@19, ~@3 g4",
  Y: "~@3 f#3@3 ~@26", Z: "[~@4 a4@4 ~ a3@8 ~@30 g4@16 ~, ~@30 g3@33 ~, ~@46 b3@17 ~]/2", AA: "~@5 [g4,b4]@5 ~@6",
  AB: "[~@7 c#5@2 d5@8 c#5@3 b4@23 ~@11 d3@4 ~@6]/2", AC: "[~@18 f#4@2 ~ b4@20 ~@23, ~@21 g2@9 ~@34]/2",
  AD: "~@13 c#4@2 ~@17", AE: "[~@21 [b3,d5]@14 ~@29, ~@21 d4@11 ~@32]/2", AF: "[~@21 [g3,d4]@22 ~@9 a4 ~ g4@10]/2",
  AG: "~@2 [f#4,a4]@9 ~@3 b3@13 ~@5", AH: "[~@8 d#2@12 ~@11 a3@2 ~@21 g3@13 ~@29, ~@21 [d2,d3]@13 ~ b3@32 ~@29]/3",
})).s("gm_piano").gain(0.16)

stack(piano, piano_soft)

More by Ludwig van Beethoven