Strudelify

Piano Sonata No.14 Op.27 No.2

Ludwig van Beethoven

KeyF majorTempo60 bpm
0:00/0:00
// Piano Sonata No.14 Op.27 No.2 — Ludwig van Beethoven
// 60 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/516136; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 70 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · french horn · "Horn"
const french_horn = note(`<
  ~@4 A B C D E F B G H I J K L K M N O P Q R S T U V W X Y ~@6 Z AA AB ~ A B C D AC AD AE AF AG AH AI AH AJ AK L AL AM
  AN AO ~@2 AP ~ AP ~@3 AQ AR
>`.pickRestart({
  A: "~@18 a4@4 ~ a4", B: "a4@18 a4@4 ~ a4", C: "a4 bb4", D: "a4@2 g4 c5", E: "f4 ~", F: "~@18 ab4@4 ~ ab4",
  G: "ab4@3 g4", H: "g4 ab4@2 f4", I: "g4!2", J: "c4@2 ~ c5", K: "db5@3 b4", L: "c5@3 c5", M: "c5!2", N: "c5 bb4",
  O: "ab4 g4", P: "d4@2 d4!2", Q: "~@18 d5@4 ~ d5", R: "d5@18 d5@4 ~ d5", S: "d5@2 db5 d5", T: "e5@3 e5",
  U: "f5@2 e5 d5", V: "~ a4 bb4 f4", W: "~ a4 bb4 g4", X: "~ d5 f5 d5", Y: "~ d4 f4 d4", Z: "~@2 e4 d4",
  AA: "db4@2 e4 d4", AB: "db4 ~", AC: "f4@12 ~@6 c5@4 ~ c5", AD: "c5@18 c5@4 ~ c5", AE: "c5@2 db5 d5", AF: "e5 f5",
  AG: "eb5 db5", AH: "d5@3 d5", AI: "eb5@3 db5", AJ: "e5@3 d5", AK: "d5!2", AL: "bb4!2 a4!2", AM: "g4@2 a4 bb4",
  AN: "a4!2", AO: "d4 ~", AP: "~@3 db4", AQ: "a3 d4 f4 a4@9", AR: "d4 ~@7",
})).s("gm_french_horn").gain(0.3)

// bass · tuba · "C Tuba"
const bass = note(`<
  A B C D A E F G H@3 I J K L@4 M N O P Q R S T U V@8 W@2 V@2 X Y A E F G H Z AA AB Y AC@4 F AD AE AF D A E A V A V A@2
  AG@2 AH
>`.pickRestart({
  A: "d2", B: "c2", C: "bb1 g1", D: "a1!2", E: "db2", F: "d2 g1", G: "c2!2", H: "f2", I: "db2 c2 b1@2",
  J: "c2@2 f2 ab2", K: "~ g1", L: "[c2@5 f2 ab2 f2]/2", M: "c2 a1", N: "gb1 g1", O: "c2 db2", P: "d2!2", Q: "g1",
  R: "gb2", S: "g2@2 e2 d2", T: "db2@3 db2", U: "d2@2 g1 ab1", V: "a1", W: "a1/2", X: "a1 bb1", Y: "g1 a1", Z: "e2",
  AA: "f2@2 e2 d2", AB: "db2 d2", AC: "[d2@5 g2 bb2 g2]/2", AD: "e2@3 f2", AE: "d2 e2 db2 d2", AF: "bb1@2 a1 g1",
  AG: "d2/2", AH: "d2 ~@7",
})).s("gm_tuba").gain(0.25)

// other · trumpet · "Bb Trumpet"
const trumpet = note(`<
  A B C D A E F G H@2 I J K L M@4 N O P Q R I S T U E@4 V W X Y Z AA E@2 AB AC A AD F G H AE AF AG AC AH@4 F AI AJ AK D
  AL AM AN AO AP AO AQ AL AR@2 AS
>`.pickRestart({
  A: "d5", B: "c5", C: "bb4 g4", D: "a4!2", E: "a4", F: "d5 g4", G: "c5!2", H: "f5", I: "gb5", J: "db5 c5 b4@2",
  K: "c5@2 f4 ab4", L: "g4!2", M: "[c5@5 f5 ab5 f5]/2", N: "c5 a4", O: "gb4 g4", P: "c5 db5", Q: "d4!2", R: "g4",
  S: "g5@2 e5 d5", T: "a4@3 a4", U: "a4@2 g4 ab4", V: "~@3 db4 bb3 e4 db4 g4 e4 bb4 g4 db5",
  W: "f3 d4 a3 f4 d4 a4 f4 d5 a4 f5 d5 a4", X: "d4 ab4 f4 b4 ab4 d5 b4 f5 d5 ab5 f5 b5",
  Y: "g4 db5 bb4 e5 db5 g5 e4 bb4 g4 db5 bb4 e5", Z: "db5 g4 bb4 e5 g5 db5 e5 bb4 db5 g4 bb4 e4", AA: "g4 db4 e4 a4@9",
  AB: "a4 bb4", AC: "g4 a4", AD: "db5", AE: "e5", AF: "f5@2 e5 d5", AG: "db5 d5", AH: "[d5@5 g5 bb5 g5]/2",
  AI: "e5@3 f5", AJ: "d5 e5 db5 d5", AK: "bb4@2 a4 g4", AL: "d4", AM: "db4", AN: "a3 f4 d4 a4 f4 d5 a4 f5 d5 a5 f5 d5",
  AO: "db5 e5 bb4 db5 g4 bb4 e4 g4 bb3@2 a3 g3", AP: "d4 f4 d4 a4 f4 d5 a4 f5 d5 a5 f5 d5",
  AQ: "d4 a3 d4 f4 d4 a3 ~ f3 a3 d4 a3 f3", AR: "[~ d5@3]/2", AS: "d5 ~@7",
})).s("gm_trumpet").gain(0.2)

stack(french_horn, bass, trumpet)

More by Ludwig van Beethoven