Strudelify

String Quartet No.2 Op.1-2 Mvt.5

F. J. HaydnãOp.1

KeyE♭ majorTempo130 bpm
0:00/0:00
// String Quartet No.2 Op.1-2 Mvt.5 — F. J. HaydnãOp.1
// 130 bpm, 2/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 2/4 at bar 2, 3/8 at bar 28, 1/8 at bar 29, ...) are rendered on a constant 2/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/6155087; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 157 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · violin · "Violin II"
const violin = note(`<
  ~@2 A B C ~ D E F G H G H I J K L@7 I M N O P Q ~ A B C ~ D E F G H G H I J K L@7 I M N O P Q ~ R S T ~ A B C U V W
  X@2 Y@4 Z AA AB AC AD AE AD AF AG ~ AH AI AJ AK AL AM AN AO AP AQ AR@7 AO AS AT AU AV AW ~ R S T ~ A B C U V W X@2 Y@4
  Z AA AB AC AD AE AD AF AG ~ AH AI AJ AK AL AM AN AO AP AQ AR@7 AO AS AT AU AV AW
>`.pickRestart({
  A: "f5@4 d5@2 d5 ~", B: "eb5 ~ bb4 ~ g4 ~ eb4 ~", C: "bb4 ~", D: "f4@4 d4@2 d4 ~", E: "eb4 ~ c4 ~ ab3 ~ bb3 ~",
  F: "eb4 ~", G: "~@3 c5", H: "c5@2 bb4 ~", I: "[d4,bb4]!2", J: "[d4,bb4]@4 [d4,bb4] ~ d4 ~", K: "eb4 ~ c4 ~ f4 ~ d4 ~",
  L: "[bb3@4 f5@6 eb5@4 db5@4 c5 ~ f5@6 eb5@4 db5@4 c5 ~ f5@6 eb5@4 db5@4 c5 ~@5]/7", M: "[d4,bb4]@4 ~@2 d4 ~",
  N: "eb4 ~ f4 ~ g4 ~ a4 ~", O: "bb4 c5 d5 c5 bb4 ~ d4 ~", P: "eb4 [c4,eb4,a4]", Q: "[bb3,d4,bb4] ~",
  R: "c5@4 a4@2 a4 ~", S: "bb4 ~ g4 ~ eb4 ~ f4 ~", T: "bb3 ~", U: "db4!8", V: "c4!8", W: "g4!8", X: "ab4!8",
  Y: "[g4@4 g5@6 f5@4 eb5@4 d5 ~ g4@6 f4@4 eb4 ~]/4", Z: "d4 ~@3", AA: "g4 ~ g4 ~ g4 ~ g4 ~",
  AB: "ab4 ~ ab4 ~ ab4 ~ f5 ~", AC: "eb5 ~ d5 ~ c5 ~ b4 ~", AD: "c5@4 ~@2 g4 ~", AE: "c5 ~ g4 ~ eb5 ~ b4 ~",
  AF: "c5 ~ g4 ~ eb4 ~ c4 ~", AG: "g4 ~", AH: "f5@4 d5@2 ab4 ~", AI: "g4 ~ g4 ~ f4 ~ eb4 ~", AJ: "d4 ~ bb3 ~@5",
  AK: "~@3 f4", AL: "f4@2 eb4 ~", AM: "~@3 f5", AN: "f5@2 eb5 ~", AO: "[g3,eb4]!2", AP: "[g3,eb4]@4 [g3,eb4] ~ g4 ~",
  AQ: "ab4 ~ f4 ~ bb4 ~ g4 ~", AR: "[eb4@4 bb4@6 ab4@4 gb4@4 f4 ~ bb4@6 ab4@4 gb4@4 f4 ~ bb4@6 ab4@4 gb4@4 f4 ~@5]/7",
  AS: "[g3,eb4]@4 ~@2 g3 ~", AT: "ab3 ~ bb3 ~ c4 ~ d4 ~", AU: "eb4 f4 g4 f4 eb4@2 g3 ~", AV: "ab3 [ab3,d4]",
  AW: "[g3,eb4] ~", // Cm
})).s("gm_violin").gain(0.35)

// other · viola
const viola = note(`<
  ~@2 A B C ~ D E F G H G I J K L M@7 N O P Q R S ~ A B C ~ D E F G H G I J K L M@7 N O P Q R S ~ T U S ~ A B C V@2 W@2
  X Y@4 Z AA AB AC AD AE AF AG AH ~ AI AJ AK AL AM AL AM AN AO AP AQ@7 AR AS AT AU AV AW ~ T U S ~ A B C V@2 W@2 X Y@4 Z
  AA AB AC AD AE AF AG AH ~ AI AJ AK AL AM AL AM AN AO AP AQ@7 AR AS AT AU AV AW
>`.pickRestart({
  A: "bb4@6 d5 ~", B: "eb5 ~ bb4 ~ g4 ~ eb4 ~", C: "bb4 ~", D: "bb3@6 d4 ~", E: "eb4 ~ c4 ~ ab3 ~ bb3 ~",
  F: "eb4@2 ~ eb4", G: "d4@2 ~ a3", H: "bb3 f3 bb3 eb4", I: "bb3 f3 bb3@2", J: "f4 ~ f4 ~", K: "f4@2 ~@2 f4 ~ d4 ~",
  L: "eb4 ~ c4 ~ f4 ~ d4 ~", M: "[bb3@4 db5@6 c5@4 bb4@4 a4 ~ db5@6 c5@4 bb4@4 a4 ~ db5@6 c5@4 bb4@4 a4 ~@5]/7",
  N: "f4!2", O: "f4@4 ~@2 d4 ~", P: "eb4 ~ f4 ~ g4 ~ a4 ~", Q: "bb4 c5 d5 c5 bb4 ~ d4 ~", R: "eb4 f4", S: "bb3 ~",
  T: "f4@3 a4", U: "bb4 ~ g4 ~ eb4 ~ f4 ~", V: "eb4!8", W: "c4!8", X: "d4!4 c4!4",
  Y: "[g3@4 eb5@6 d5@4 c5@4 b4 ~ eb4@6 d4@4 c4 ~]/4", Z: "b3 ~@3", AA: "eb4 ~ eb4 ~ eb4 ~ eb4 ~",
  AB: "f4 ~ f4 ~ f4 ~ f4 ~", AC: "g4 ~ g4 ~ g4 ~ g4 ~", AD: "eb4@4 ~@2 g4 ~", AE: "c5 ~ g4 ~ eb5 ~ b4 ~",
  AF: "c5@4 ~@2 g4 ~", AG: "c5 ~ g4 ~ eb4 ~ c4 ~", AH: "g4 ~", AI: "bb4@3 bb4", AJ: "eb4@4 ~@2 eb4 ~",
  AK: "bb4 ~ bb3 ~@5", AL: "~@3 d4", AM: "eb4 bb3 eb3@2", AN: "bb3 ~ bb3 ~", AO: "bb3@2 ~@2 bb3 ~ g4 ~",
  AP: "ab4 ~ f4 ~ bb4 ~ g4 ~", AQ: "[eb4@4 gb4@6 f4@4 eb4@4 d4 ~ gb4@6 f4@4 eb4@4 d4 ~ gb4@6 f4@4 eb4@4 d4 ~@5]/7",
  AR: "eb4!2", AS: "eb4@4 ~@2 g3 ~", AT: "ab3 ~ bb3 ~ c4 ~ d4 ~", AU: "eb4 f4 g4 f4 eb4@2 g3 ~", AV: "ab3 bb3",
  AW: "eb4 ~",
})).s("gm_viola").gain(0.35)

// other · cello
const cello = note(`<
  ~@2 A B C ~ D E F G H G H I J K L M N M N M N I O P Q R L ~ A B C ~ D E F G H G H I J K L M N M N M N I O P Q R L ~ S
  T L ~ A B C U V W X@2 Y Z Y AA AB ~@3 AC AD AE AF Y ~ AG AH AI AJ AK AJ AK AL AM AN F AO C AP L AP L AL AQ AR AS AT F
  ~ S T L ~ A B C U V W X@2 Y Z Y AA AB ~@3 AC AD AE AF Y ~ AG AH AI AJ AK AJ AK AL AM AN F AO C AP L AP L AL AQ AR AS
  AT F
>`.pickRestart({
  A: "bb3@6 d4 ~", B: "eb4 ~ bb3 ~ g3 ~ eb3 ~", C: "bb3 ~", D: "bb2@6 d3 ~", E: "eb3 ~ c3 ~ ab2 ~ bb2 ~", F: "eb3 ~",
  G: "~@3 f3", H: "bb3 f3 bb2@2", I: "bb3!2", J: "bb3@4 bb3 ~ d3 ~", K: "eb3 ~ c3 ~ f3 ~ d3 ~", L: "bb2 ~", M: "a3 bb3",
  N: "f3 ~", O: "bb3@4 ~@2 d3 ~", P: "eb3 ~ f3 ~ g3 ~ a3 ~", Q: "bb3 c4 d4 c4 bb3 ~ d3 ~", R: "eb3 f3", S: "f3@6 a3 ~",
  T: "bb3 ~ g3 ~ eb3 ~ f3 ~", U: "g3!4", V: "ab3!4", W: "e3!4", X: "f3!4", Y: "g3 ~", Z: "b3 c4", AA: "b2 c3",
  AB: "g2 ~@3", AC: "~@6 g3 ~", AD: "c4 ~ g3 ~ eb4 ~ b3 ~", AE: "c4@4 ~@2 g3 ~", AF: "c4 ~ g3 ~ eb3 ~ c3 ~",
  AG: "bb3@3 bb3", AH: "eb3@4 ~@2 eb3 ~", AI: "bb3 ~ bb2 ~@5", AJ: "~@3 bb2", AK: "eb3 bb2 eb3@2", AL: "eb3!2",
  AM: "eb3@4 eb3 ~ g3 ~", AN: "ab3 ~ f3 ~ bb3 ~ g3 ~", AO: "d4 eb4", AP: "d3 eb3", AQ: "eb3@4 ~@2 g2 ~",
  AR: "ab2 ~ bb2 ~ c3 ~ d3 ~", AS: "eb3 f3 g3 f3 eb3@2 g2 ~", AT: "ab2 bb2",
})).s("gm_cello").gain(0.35)

stack(violin, viola, cello)