Strudelify

Piano Sonata No.14 Op.27 No.2

Beethoven

KeyE majorTempo60 bpm
0:00/0:00
// Piano Sonata No.14 Op.27 No.2 — beethoven
// 60 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4619976; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 67 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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
const piano = note(`<
  A B C D E F G H I J K L M@2 N@2 O P Q R S T U V W X Y Z AA AB AC AD AE@3 AF AG AH AI E F G H AJ AK AL AM AN AO@2 AP@2
  AQ AR AS AT AU AV AW AX AY AZ AY BA@2 BB BC
>`.pickRestart({
  A: "g#3 c#4 e4 g#3 c#4 e4 g#3 c#4 e4 g#3 c#4 e4, [c#2,c#3]@23 ~", // C#
  B: "g#3 c#4 e4 g#3 c#4 e4 g#3 c#4 e4 g#3 c#4 e4, [b1,b2]@23 ~", // B
  C: "a3 c#4 e4 a3 c#4 e4 a3 d4 f#4 a3 d4 f#4, [a1,a2]@11 ~ [f#1,f#2]@11 ~", // A F#
  D: "g#3 c4 f#4 g#3 c#4 e4 g#3 c#4 d#4 f#3 c4 d#4, [g#1,g#2]@11 ~ [g#1,g#2]@11 ~", // G#
  E: "e3@2 g#3@2 c#4@2 g#3@2 c#4@2 e4@2 g#3@2 c#4@2 e4@2 g#3@2 c#4@2 ~ g#4, [c#2,g#2,c#3]@23 ~, ~@9 g#4@2 e4", // C#5
  F: "g#3@2 d#4@2 f#4@2 g#3@2 d#4@2 f#4@2 g#3@2 d#4@2 f#4@2 g#3@2 d#4@2 ~ g#4, [c2,g#2,c3]@23 ~, g#4@17 ~ g#4@4 f#4@2", // Fm
  G: "g#3 c#4 e4 g#3 c#4 e4 a3 c#4 f#4 a3 c#4 f#4, [c#2,c#3,g#4]@11 ~ [f#1,f#2,a4]@11 ~", // C#5 F#m
  H: "g#3 b3 e4 g#3 b3 e4 a3 b3 d#4 a3 b3 d#4, [b1,b2,g#4]@11 ~ [b1,b2]@11 ~, ~@2 f#4 b4", // E B
  I: "g#3 b3 e4 g#3 b3 e4 g#3 b3 e4 g#3 b3 e4, [e2,e3]@23 ~, e4 ~@5", // E
  J: "g3@2 b3@2 e4@2 g3@2 b3@2 e4@2 g3@2 b3@2 e4@2 g3@2 b3@2 ~ g4, [e2,e3]@23 ~, ~@9 g4@2 e4", // E
  K: "f#3 b3 d4 f#3 b3 d4 g3 b3 c#4 e3 b3 c#4, [b1,b2,f#4]@11 ~ [e2,g4]@6 [g2,e4]@6", // B5 Em C
  L: "f#3 b3 d4 f#3 b3 d4 f#3 a#3 c#4 f#3 a#3 c#4, [f#2,f#4]@11 ~ [f#1,f#2,f#4]@11 ~", // F#
  M: "[~ d4 f#4 b3 d4 f#4 b3 d#4 f#4 b3 d#4 f#4 b3 e4 g4 b3 e4 g4 b3 e4 g4 b3 e4 g4, [b1,b2]@14 ~ [e2,e3]@3 [g2,g3]@3 [e2,e3,a#4]@3, b3@6 ~@12 b4@6 c5@17 ~@7]/2", // B E G Edim
  N: "[b3 d#4 f#4 b3 d#4 f#4 b3 d#4 f#4 b3 d#4 f#4 b3 e4 g4 b3 e4 g4 b3 e4 g4 b3 e4 g4, [b1,b2]@14 ~ [e2,e3]@3 [g2,g3]@3 [e2,e3,a#4]@3, b4@17 ~ b4@6 c5@17 ~@7]/2", // B E G Edim
  O: "b3 d#4 f#4 b3 d#4 f#4 b3 d4 f4 b3 d4 f4, b4@11 ~ b4@11 ~",
  P: "b3 c#4 g#4 b3 c#4 g#4 a3 c#4 f#4 a3 c#4 f#4, [f1,f2,b4]@11 ~ [f#1,f#2,a4]@11 ~", // Fdim F#m
  Q: "g3 b3 d4 g3 b3 d4 f#3 a3 d#4 f#3 a3 d#4, [b1,b2,g4]@11 ~ [c2,c3,f#4]@11 ~", // Em Cdim
  R: "c#3 f#3 a3 c#3 f#3 a3 c#3 f#3 g#3 c#3 f3 g#3, [c#2,c#4]@11 ~ c#2@11 ~, ~@2 c#4!2", // C#
  S: "f#3@2 a3@2 c#4@2 a3@2 c#4@2 f#4@2 c#4@2 f#4@2 a4@2 c#4@2 f#4@2 ~ c#5, [f#1,c#2,f#2]@23 ~, ~@9 c#5@2 a4", // F#5
  T: "c#4@2 g#4@2 b4@2 c#4@2 g#4@2 b4@2 c#4@2 g#4@2 b4@2 c#4@2 g#4@2 ~ c#5, [f2,c#3,f3]@23 ~, c#5@17 ~ c#5@4 b4@2", // C#
  U: "c#4 f#4 a4 c#4 f#4 a4 c4 f#4 a4 c#4 f#4 a4, [f#2,f#3,c#5]@11 ~ [d#2,d#3,c5]@6 [c#2,c#3,c#5]@6", // F#5 Cm C#
  V: "d#4 f#4 g#4 d#4 f#4 g#4 d#4 f#4 g#4 d#4 f#4 g#4, [c2,f#2,c3,d#5]@17 ~ [c2,f#2,c3,d#5]@6", // Cdim
  W: "e4 g#4 c#5 e4 g#4 c#5 d#4 f#4 a4 c#4 e4 a#4, [c#2,g#2,c#3,e5]@11 ~ [f#1,f#2,d#5]@6 [g1,g2,c#5]@6", // C#m D#m Gdim
  X: "c5 c4 d#4 ~ c4 d#4 ~ c4 d#4 ~ c4 d#4, [g#1,g#2]@23 ~, ~ g#4 a4 f#4", // G#
  Y: "~ c4 d#4 ~ c4 d#4 ~ c4 d#4 ~ c4 d#4, [g#1,g#2]@23 ~, ~ g#3 a3 f#3", // G#
  Z: "e3 e4 g#4 ~ e4 g#4 ~ e4 g#4 ~ e4 g#4, [g#1,g#2]@23 ~, ~ c#5 e5 c#5", // G#
  AA: "~ e3 g#3 ~ e3 g#3 ~ e3 g#3 ~ e3 g#3, [g#1,g#2]@23 ~, ~ c#4 e4 c#4", // G#
  AB: "d#3 a3 f#3 c4 a3 d#4 c4 f#4 d#4 a4 f#4 c5, [g#1,g#2]@23 ~", // G#
  AC: "e3 c#4 g#3 e4 c#4 g#4 e4 c#5 g#4 e5 c#5 g#4, [g#1,g#2]@23 ~", // G#
  AD: "c#4 g4 e4 a#4 g4 c#5 a#4 e5 c#5 g5 e5 a#5, [g#1,g#2]@23 ~", // G#
  AE: "[f#4 c5 a4 d#5 c5 f#5 d#5 a5 f#5 c6 a5 d#6 c6 f#5 a5 d#5 f#5 c5 d#5 a4 c5 f#4 a4 d#4 f#4 c4 d#4 a3 c4 f#3 a3 ~ f#3 ~ f#3 a3, [g#1,g#2]@17 ~, ~@31 d#3@2 c#3@3]/3", // G#
  AF: "b2 f#3 g#3 a3 g#3 f#3 ~ f#3 a3 ~ f#3 a3, [g#1,g#2]@23 ~, c3@11 ~ d#3@6 c#3@6", // G#
  AG: "b2 f#3 g#3 a3 g#3 f#3 d#3 f#3 a3 ~ f#3 a3, [g#1,g#2]@23 ~, c3@11 ~@7 c#3@6", // G#
  AH: "b2 f#3 g#3 a3 g#3 f#3 c#3 e3 c#4 c#3 e3 c#4, [g#1,g#2,c3]@11 ~ [a1,a2]@11 ~", // G# A
  AI: "d#3 a3 c#4 d#3 a3 c#4 d#3 g#3 c4 d#3 f#3 c4, [f#1,f#2]@11 ~ [g#1,g#2]@11 ~", // F# G#
  AJ: "g#3@2 b3@2 e4@2 b3@2 e4@2 g#4@2 b3@2 e4@2 g#4@2 b3@2 e4@2 ~ b4, [e2,e3]@23 ~, e4@2 ~@7 b4@2 g#4", // E
  AK: "b3@2 f#4@2 a4@2 b3@2 f#4@2 a4@2 b3@2 f#4@2 a4@2 b3@2 f#4@2 ~ b4, [d#2,d#3]@23 ~, b4@17 ~ b4@4 a4@2", // D#
  AL: "b3 e4 g#4 b3 e4 g#4 c4 f#4 g#4 c#4 e4 g#4, [e2,e3,b4]@11 ~ [d#2,d#3,c5]@6 [c#2,c#3,c#5]@6", // E5 Cm C#
  AM: "d#4 f#4 g#4 d#4 f#4 g#4 e4 g#4 c#5 e4 g#4 c#5, [c2,g#2,c3,d#5]@11 ~ [c#2,g#2,c#3,e5]@11 ~", // G# C#m
  AN: "d4 f#4 a4 d4 f#4 a4 c4 f#4 g#4 c4 f#4 g#4, [f#1,f#2,d5]@11 ~ [g#1,g#2,c5]@11 ~", // D G#
  AO: "[c#4 e4 g#4 c#4 e4 g#4 c#4 f4 g#4 c#4 f4 g#4 c#4 f#4 a4 c#4 f#4 a4 c#4 f#4 a4 c#4 f#4 a4, [c#2,c#3]@14 ~ [f#2,f#3]@3 [a2,a3]@3 [f#2,f#3,c5]@3, c#5@17 ~ c#5@6 d5@17 ~@7]/2", // C# F# A F#dim
  AP: "[c#4 f4 g#4 c#4 f4 g#4 c#4 f4 g#4 c#4 f4 g#4 c#4 f#4 a4 c#4 f#4 a4 c#4 f#4 a4 c#4 f#4 a4, [c#2,c#3]@14 ~ [f#2,f#3]@3 [a2,a3]@3 [f#2,f#3,c5]@3, c#5@17 ~ c#5@6 d5@17 ~@7]/2", // C# F# A F#dim
  AQ: "c#4 f4 g#4 c#4 f4 g#4 c#4 f#4 a4 c#4 f#4 a4, [c#2,c#3,c#5]@11 ~ [f#1,f#2,c#5]@11 ~", // C# F#5
  AR: "b3 f#4 a4 b3 f#4 a4 b3 f#4 a4 b3 e4 g#4, [d#2,d#3,b4]@17 ~ [e2,e3,b4]@6", // G#m E5
  AS: "a3 e4 g#4 a3 d#4 f#4 g#3 d#4 f#4 g#3 c#4 e4, [c#2,c#3,a4] [d#2,d#3,a4] [c2,c3,g#4] [c#2,c#3,g#4]", // F#m D#dim Fm C#5
  AT: "f#3 c#4 d#4 f#3 c#4 d#4 g#3 c#4 d#4 a3 c#4 d#4, [a1,a2,f#4]@11 ~ [g#1,g#2,g#4]@6 [f#1,f#2,a4]@6", // D G# F#m
  AU: "g#3 c#4 e4 g#3 c#4 e4 f#3 c4 d#4 f#3 c4 d#4, [g#1,g#2,g#4]@11 ~ [g#1,g#2,g#4]@11 ~", // G#
  AV: "e3@2 g#3@2 c#4@2 g#3@2 c#4@2 e4@2 g#3@2 c#4@2 e4@2 g#3@2 c#4@2 ~ g#2, c#2@23 ~, g#2@17 ~ g#2@4 ~@2, c#4@2 ~@9 e4",
  AW: "g#3@2 d#4@2 f#4@2 g#3@2 d#4@2 f#4@2 g#3@2 d#4@2 f#4@2 g#3@2 d#4@2 ~ g#2, c2@23 ~, g#2@17 ~ g#2@4 f#4@2",
  AX: "g#3@2 e4@2 c#4@2 g#4@2 e4@2 c#5@2 g#4@2 e5@2 c#5@2 g#5@2 e5@2 ~ g#2, c#2@23 ~, g#2@17 ~ g#2@4 c#5@2",
  AY: "c5@2 d#5@2 a4@2 c5@2 f#4@2 a4@2 d#4@2 f#4@2 ~@4 g#3@2 ~ g#2, g#1@23 ~, g#2@8 a3@2 ~ f#3, ~@3 c4, ~@9 g#2@2 ~",
  AZ: "[e3,c#4]@2 e4@2 c#4@2 g#4@2 e4@2 c#5@2 g#4@2 e5@2 c#5@2 g#5@2 e5@2 ~ g#2, c#2@23 ~, g#2@17 ~ g#2@4 c#5@2", // C#m
  BA: "[[e3,c#4] g#3 c#4 e4 c#4 g#3 ~ e3 g#3 c#4 g#3 e3 ~ c#3 e3 g#3 e3 c#3 g#2 c#3 g#2 e2 g#2 e2, c#2@23 ~, g#2@11 ~ c#3@11 ~ g#2@11 ~@13]/2", // C#m
  BB: "c#2@11 ~ [c#2,g#2,c#3,e3,g#3,c#4]@11 ~", BC: "[c#2,g#2,c#3,e3,g#3,c#4]@23 ~",
})).s("gm_piano").gain(0.3)

stack(piano)

More by Beethoven