Strudelify

Violin Sonata No.9 Op.47

Beethoven

KeyG majorTempo120 bpm
0:00/0:00
// Violin Sonata No.9 Op.47 — Beethoven
// 120 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/34122; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 131 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 · [...]/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 · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P B Q R S B Q R T J U V W J X O Y I J K L M N Z AA ~@2 AB@2 AC@2 AD ~@2 H AE AF AG AH AI
  AJ AK@2 AL P@2 ~ AM AN AO AP AQ ~ AO ~ AR AS AT AU AV AQ AW ~ AM AN AO AP AQ ~ AO ~ AR AS AT AU AV AQ AW ~ AX@2 AY@2
  AZ@2 BA@2 ~@2 AM AN AO ~ BB BC BD ~ BE@2 BF@2 AM AN AO ~ BG BC BD ~ BE@2 BF@2 BD@3
>`.pickRestart({
  A: "[g3,b3]", B: "[g3,c4]", C: "[a#3,c#4]", D: "[a3,c4]", E: "b3@5 b3@5 ~ b3@5", F: "f#4@11 e4@5", G: "d#4@11 e4@5",
  H: "d#4@5 ~@11", I: "[g4,b4]", J: "[g4,c5]", K: "[a#4,c#5]", L: "[a4,c5]", M: "b4@5 b4@5 ~ b4@5", N: "f#5@11 e5@5",
  O: "e5@11 d#5@5", P: "e5@5 ~@11", Q: "[b3,d4]", R: "[a3,d4]", S: "[d4,g4]", T: "[b3,d4]@5 ~@11", U: "[b4,d5]",
  V: "[a4,d5]", W: "[d5,g5]", X: "e5@11 e5@5", Y: "f#4@11 ~@5", Z: "d#5@11 e5@5", AA: "d#5@5 ~@11", AB: "[d4,f4]/2",
  AC: "[c4,e4]@5 [d4,f4]@11", AD: "[c4,e4]@5 ~@11", AE: "~@11 g#3@5", AF: "a3@5 a3@3 b3@3 c4@2 a3@3",
  AG: "g#3@5 ~@6 [b3,e4]@5", AH: "d#4", AI: "e4@5 ~@6 g4@5", AJ: "a4@5 a4@3 b4@3 c5@2 a4@3",
  AK: "g#4@5 a4@3 b4@3 c5@2 a4@3", AL: "g#4@5 ~@11", AM: "g3", AN: "f3", AO: "e3@5 ~@11", AP: "g3@5 a3@5 ~ b3@5",
  AQ: "c4", AR: "e5@11 d5@5", AS: "c5@11 b4@5", AT: "a4@11 g4@5", AU: "f#4@11 g4@5", AV: "~@5 e4@11",
  AW: "b3@5 a3@5 ~ g3@5", AX: "[~@5 a3@27]/2", AY: "[~@5 g3@27]/2", AZ: "[~@5 a4@27]/2", BA: "[~@5 g4@27]/2",
  BB: "[e4,g4]", BC: "f4", BD: "e4@5 ~@11", BE: "e5/2", BF: "b4/2", BG: "g4",
})).s("gm_piano").gain(0.3)

// other · piano
const piano_2 = note(`<
  A@2 B@2 C D E F G@2 H I J K L M N O P O N Q@2 R G H S H G T U@2 G@2 V@2 J K W X A@2 Y@2 Z@2 AA AB AC F AD AE N AF AG
  AF AH@2 X@2 AI ~ AJ AK AL ~ AJ AK AL ~ AM AN AO AP AJ Q R AQ AJ AK AL ~ AJ AK AL ~ AM AN AO AP AJ Q R AQ AR AS AT AU
  AV AW AX AY AZ ~ AJ AK AL ~ BA BB BC ~ BD@2 BE@2 AJ AK AL ~ BA BB BC ~ BF BG BH BI AL@3
>`.pickRestart({
  A: "e3@8 d#3@3 e3@5", B: "[g3@21 f#3@3 e3@3 d#3@2 f#3@3]/2", C: "e3@5 d#3@5 ~ e3@5", D: "b2@11 b2@5",
  E: "b2@11 a#2@5", F: "b2@5 ~@11", G: "e4@8 d#4@3 e4@5", H: "g4", I: "g4@5 f#4@3 e4@3 d#4@2 f#4@3",
  J: "e4@5 d#4@5 ~ e4@5", K: "b3@11 b3@5", L: "b3@11 a3@5", M: "g3@5 ~@11", N: "e3", O: "g3", P: "f3", Q: "d3",
  R: "g2@5 ~@11", S: "f4@8 e4@3 f4@5", T: "a#3", U: "[b3@27 ~@5]/2", V: "[g4@21 f#4@3 e4@3 d#4@2 f#4@3]/2",
  W: "b3@11 a#3@5", X: "b3@5 ~@11", Y: "[c4@21 b3@3 a3@3 g#3@2 b3@3]/2", Z: "a3@5 b3@11", AA: "a3@5 ~@11",
  AB: "~@11 e4@5", AC: "e4@5 ~@11", AD: "~@11 b2@5", AE: "c3@5 c3@3 b2@3 a2@2 c3@3", AF: "c4@5 c4@3 b3@3 a3@2 c4@3",
  AG: "b3@5 ~@6 b3@5", AH: "b3@5 c4@3 b3@3 a3@2 c4@3", AI: "e3@5 ~@11", AJ: "c3", AK: "b2@11 d3@5", AL: "c3@5 ~@11",
  AM: "c4@11 b3@5", AN: "a3@11 g3@5", AO: "f#3@11 e3@5", AP: "d#3@11 e3@5", AQ: "f3@5 e3@5 ~ d3@5", AR: "c#3",
  AS: "d3@5 e3@5 ~ f3@5", AT: "b2", AU: "c3@5 d3@5 ~ e3@5", AV: "~@11 c#4@5", AW: "d4@5 e4@5 ~ f4@5", AX: "~@11 b3@5",
  AY: "c4@5 d4@5 ~ e4@5", AZ: "f4@5 ~@11", BA: "c4", BB: "b3@11 d4@5", BC: "c4@5 ~@11", BD: "[g3 a3, e3]/2",
  BE: "[[e3,g3] [d#3,f#3], b3]/2", BF: "[e3,g3]", BG: "[e3,a3]", BH: "[e3,g3,b3]", BI: "[d#3,f#3,b3]",
})).s("gm_piano").gain(0.3)

// other · piano
const piano_3 = note(`<
  A B C D E F G@2 H I J I K L M N B O P M B O Q R I S T U I B V@2 H I W X K L Y@2 N B Z@2 AA@2 AB AC AD AE AF@2 AG AH
  AI@2 AJ@2 N@2 AK ~ AL@2 AM ~ AN@2 AM ~@9 AL@2 AM ~ AN@2 AM ~@9 AO@4 AP@2 AQ@3 ~ AL@2 AM ~ AR@2 AS ~ AR@2 AT@2 AL@2 AM
  ~ AR@2 AS ~ B@2 M@2 AG@3
>`.pickRestart({
  A: "e3 ~", B: "c3", C: "a#2", D: "a2", E: "g2@5 f#2@5 ~ e2@5", F: "d#2@11 e2@5", G: "[b1@21 ~@11]/2", H: "e4 ~",
  I: "c4", J: "c#4", K: "g3@5 f#3@5 ~ e3@5", L: "d#3@11 e3@5", M: "b2", N: "e3@5 ~@11", O: "g2", P: "d3", Q: "d2",
  R: "g1@5 ~@11", S: "g3", T: "d4", U: "b3", V: "[b2@27 ~@5]/2", W: "a#3", X: "a3", Y: "[b2@21 ~@11]/2", Z: "[d3,f3]/2",
  AA: "[c3,e3]@5 [d3,f3]@11", AB: "[c3,e3]@5 ~@11", AC: "~@11 a3@5", AD: "b3@5 ~@11", AE: "b1@5 ~@11", AF: "e2/2",
  AG: "e2@5 ~@11", AH: "e3", AI: "e3/2", AJ: "e3@5 e3@11", AK: "[e2,b2]@5 ~@11", AL: "c2/2", AM: "c2@5 ~@11",
  AN: "[c2@27 ~@5]/2", AO: "g2/2", AP: "g3/2", AQ: "[g3@37 ~@11]/3", AR: "c3/2", AS: "c3@5 ~@11", AT: "b2/2",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2, piano_3)

More by Beethoven