Strudelify

Symphony No.7 Op.92

Ludwig van Beethoven

KeyA minorTempo70 bpm
0:00/0:00
// Symphony No.7 Op.92 — Ludwig van Beethoven
// 70 bpm, 2/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/949716; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 278 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/2)

// 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 · violin
const violin = note(`<
  A@3 ~@47 B C B C D E F G H I J K B C L M H I J K B C L M N O P Q R S T U V W X Y N Z P AA V W X Y N Z P M AB AC AD AE
  AF AG AH AI AJ AK AL AM@4 AN AO AP AQ AR AS AT AQ AU AV@2 AW@2 AX@2 AY AZ BA BB BA BB BA BC BD BE BF BG BF BG BF BH BI
  BJ BK ~ BL BM BN BO BN BP BQ BR BS BT BU BV BN BM BN BW BX BY BU BZ BN BM BN BW CA CB CC CD CA CB CC CD CE CF CG CH CI
  CJ CK CL CM CN CO ~@2 CP@4 CQ M CR CS@2 C CT CU CV CW@3 CX CY CZ DA DB DC DB DC DB DC DD M DE CO AD AE AF AG AH AI AJ
  AK AL AM@4 AN DF DG DF DG DF DH DI DH DI DJ DK ~@2 DJ DK ~ DL DM DN ~@6 DM DO ~@6 AB DP ~@2 DQ DR ~@2
>`.pickRestart({
  A: "[[c5,e5]@5 ~]/3", B: "e5@4 e5 ~ e5 ~", C: "e5 ~ e5 ~", D: "e5@4 e5 ~ f#5 ~", E: "g5 ~ g5 ~", F: "g5@4 g5 ~ g5 ~",
  G: "g5 ~", H: "g5@4 g5 ~ a5 ~", I: "b5 ~ b5 ~", J: "f#5@4 f#5 ~ g#5 ~", K: "a5 ~ a5 ~", L: "e5@4 f#5 ~ g#5 ~",
  M: "a5 ~", N: "c6", O: "b5", P: "b5 d6@11 c6@2 b5@2, ~ c6 ~@14", Q: "b5 c6 c6@2", R: "c6@2 c5 d5",
  S: "d#5@2 e5@2 e5 ~ e5 ~", T: "d5 f5@11 e5@2 d5@2, ~ e5 ~@14", U: "d5 e5 e5@2", V: "e5 e6", W: "d#6",
  X: "d6@2 b5 c#6 d6@2 e6 d6", Y: "d6 c#6 c6@2", Z: "b5 c6", AA: "a5 ~ a4 b4 c5 ~ c5 d5",
  AB: "e5@4 [e5,f#5] ~ [e5,g#5] ~", AC: "[e5,a5] ~", AD: "~@8 e5@3 d5@2 b4@3", AE: "e5@3 c#5@2 a4@3 c#5@3 a4@2 e4@3",
  AF: "a4@3 e4@2 c#4@3 c#5@3 a4@2 e4@3", AG: "c#5@3 f#4@2 d4@3 b4@3 f#4@2 d4@3", AH: "b4@3 f#4@2 d4@3 a4@3 c#4@2 a4@3",
  AI: "b3@3 d4@2 g#4@3 a4@3 c#4@2 a4@3", AJ: "d4@3 f#4@2 b4@3 c#5@3 e4@2 c#5@3", AK: "f#4@3 a4@2 d5@3 e5@3 g#4@2 e5@3",
  AL: "d5@3 g#4@2 b4@3 a4@3 c#5@2 a5@3", AM: "[a5 g5@4 f#5@2 e5]/4", AN: "d5 c#5", AO: "b4 d#5", AP: "e5 ~",
  AQ: "a5@3 a5", AR: "a5@3 g#5@2 f#5 ~@2 e5 ~@2 d#5 ~ c#5 ~@2", AS: "b4@4 c#5@2 d#5 ~", AT: "e5@11 f#5@2 g#5@3",
  AU: "a5@3 g#5@2 f#5@3 e5@3 d#5@2 e5@3", AV: "[e5@6 f#5 e5]/2", AW: "[e5@24 g#5@3 f#5@2 e5@3]/2",
  AX: "[e5@19 d5@2 c#5@3 e5@3 d5@2 f#4@3]/2", AY: "[c#4,a4] [g#4,b4]", AZ: "[a4,c#5]@8 b4@3 c5@2 c#5@3",
  BA: "e5@3 a#4@2 g4@3 e4@3 g4@2 a#4@3", BB: "e4@3 g#4@2 b4@3 e5@3 b4@2 g#4@3", BC: "a4@3 f5@2 a4@3 a4@3 d5@2 f5@3",
  BD: "e5@3 c5@2 g4@3 f4@3 b4@2 d5@3", BE: "e4@3 c5@2 e5@3 c5@3 e5@2 g5@3", BF: "b4@3 d5@2 g5@3 b4@3 d5@2 g5@3",
  BG: "c5@3 e5@2 g5@3 c5@3 e5@2 g5@3", BH: "~@13 a5 ~@2", BI: "g5 ~@2 f5 ~ e5 ~@2 d5 ~@2 c5 ~ b4 ~@2",
  BJ: "a4 ~@2 g4 ~ f4 ~@2 e4 ~@2 d4 ~ c4 ~@2", BK: "b3 ~@3", BL: "~@4 e6 ~ e6 ~",
  BM: "~@2 c5 ~ a4 ~ c5 ~ e5 ~ c5 ~ a4 ~ c5 ~", BN: "e4 ~@3", BO: "~@2 b4 ~ g#4 ~ b4 ~ e5 ~ b4 ~ g#4 ~ b4 ~",
  BP: "~@2 c5 ~ g4 ~ c5 ~ e5 ~ c5 ~ a4 ~ c5 ~", BQ: "g3 ~@3", BR: "~@2 d5 ~ b4 ~ d5 ~ g5 ~ d5 ~ b4 ~ d5 ~",
  BS: "g4 ~@3", BT: "~@2 g4 ~ e4 ~ g4 ~ c5 ~ e4 ~ c4 ~ f#4 ~", BU: "f#4 ~@3",
  BV: "~@2 a4 ~ f#4 ~ a4 ~ d5 ~ a4 ~ e4 ~ b4 ~", BW: "~@2 b4 ~ e4 ~ b4 ~ e5 ~ b4 ~ e4 ~ d5 ~", BX: "[e4,c5] ~@3",
  BY: "~@2 e4 ~ b3 ~ e4 ~ b4 ~ e4 ~ c4 ~ f#4 ~", BZ: "~@2 f#4 ~ d4 ~ f#4 ~ a4 ~ d4 ~ b3 ~ e4 ~", CA: "[e4,c#5] ~@3",
  CB: "~@2 c#5 ~ g4 ~ c#5 ~ e5 ~ c#5 ~ g4 ~ e5 ~", CC: "f5 ~@3", CD: "~@2 f4 ~ d4 ~ f4 ~ b4 ~ f4 ~ d4 ~ d5 ~",
  CE: "c#5 ~@3", CF: "~@2 f4 ~ d4 ~ f4 ~ b4 ~ f4 ~ d4 ~ g#4 ~", CG: "a4@4 a4 ~ b4 ~", CH: "c5 ~ c5 ~",
  CI: "b4@4 b4 ~ c#5 ~", CJ: "d5 ~ c5 ~ b4 ~ a4 ~", CK: "g4 ~ a4 ~ b4 ~ a4 ~ g4 ~ a4 ~ g4 ~ f#4 ~",
  CL: "e4 ~ f#4 ~ g4 ~ a4 ~ b4 ~ c#5 ~ d#5 ~ e5 ~", CM: "e5 ~ a4 ~ b4 ~ c#5 ~ d5 ~ b4 ~ e5 ~ d5 ~",
  CN: "c5 ~ b4 ~ c5 ~ d5 ~ e5 ~ e4 ~ f#4 ~ g#4 ~", CO: "a4 ~", CP: "[~@3 f#5@2 e5@2 b5@2 e5@2 b5@2 a5@2 b5]/4",
  CQ: "c6@2 ~@2 a5@2 ~@2 g#5 ~ g#5 ~ a5 ~ b5 ~", CR: "~@10 f#5 ~ g5 ~ a5 ~", CS: "[g5@2 g4@2 c5@8 c5 ~ d5 ~]/2",
  CT: "b4 ~ c5 ~ d5 ~ c5 ~ b4 ~ d5 ~ c5 ~ b4 ~", CU: "a4 ~ b4 ~ c5 ~ d5 ~ e5 ~ f#5 ~ g#5 ~ a5 ~",
  CV: "g4 ~ a4 ~ a#4 ~ a4 ~ g4 ~ a#4 ~ a4 ~ g4 ~", CW: "[f4 ~ g4 ~ a4 ~ a#4 ~ c5@4 a5@8 g5@8 g5@8 f5@8 f5@4]/3",
  CX: "f5 ~ d5 ~ e5 ~ f5 ~ d5 ~ b4 ~ c5 ~ d5 ~", CY: "b4 ~ g#4 ~ a4 ~ b4 ~ g#4 ~ a4 ~ b4 ~ c5 ~",
  CZ: "d5 ~ e5 ~ f5 ~ g#5 ~ a5 ~ b5 ~ c6 ~ c#6 ~", DA: "d6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~",
  DB: "[e5,e6]@4 [e5,e6] ~ [e5,e6] ~", DC: "[e5,e6] ~ [e5,e6] ~", DD: "[e5,e6]@4 f#5 ~ g#5 ~",
  DE: "d5 ~ b4 ~ c5 ~ d5 ~ e5 ~ d5 ~ c5 ~ b4 ~", DF: "d5 e5", DG: "c#5", DH: "[a4,a5]@4 [a4,a5] ~ [a4,a5] ~",
  DI: "[a4,a5] ~ [a4,a5] ~", DJ: "[d5,b5]@4 [c5,a5] ~ [d5,b5] ~", DK: "[e5,c6] ~@3", DL: "b5@4 a5 ~ b5 ~",
  DM: "e6@4 e6 ~ e6 ~", DN: "e6 ~ e6 ~", DO: "d#6 ~ d6 ~", DP: "[e5,a5] ~@3", DQ: "~ e5", DR: "f#5 g#5 a5@2",
})).s("gm_violin").gain(0.21)

// other · pizzicato strings
const pizzicato_strings = note("<~@256 A B A@2 C D ~@2 A B E F G H ~@2 G H@2 ~@3>".pickRestart({
  A: "~ e4", B: "~ a4", C: "d4@2 c4 d4", D: "e4 ~", E: "~ c4", F: "d4 c4", G: "d4@2 d4!2", H: "c4 ~",
})).s("gm_pizzicato_strings").gain(0.15)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@258 A@2 B C ~@4 D E F G ~@2 F G ~@4>".pickRestart({
  A: "~ c4", B: "b3@2 a3 b3", C: "c4 ~", D: "~ a3", E: "b3 a3", F: "b3@2 b3!2", G: "a3 ~",
})).s("gm_pizzicato_strings").gain(0.15)

// other · viola
const viola = note(`<
  A@3 ~@3 B C D E F G H I J K L M F G H I J K L M N O P Q R S T U V W X Y N Z P AA V W X Y N Z P M AB AC AD AE AF AG AH
  AI AJ AK AL AM AB AN AD AO AJ AK AL AM AB AN AD AP AQ AR AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE AX BF AZ BA BB
  BC BD AD BD ~ BG@2 BH@2 BI BJ BK BL BM@4 BN BO V@3 BP BQ BR BS BT@2 BU@2 V BV BW V BX@5 BY BZ CA CB@2 CC CD CE CF CG
  CH CI CJ CK ~ CL CM CN CM CO CP CO CP CQ CR CS CM CT CM CN CM CQ CR CS CM CT CM CU CP CV CW CU CP CV CW CX CW ~@8 CY
  CZ DA DB DC DD BF DE DF ~@3 DG@3 DH DI DJ DK DL@3 DM DN DO DP DQ DN DR DS DT DU DV DW DX@2 BH@2 BI BJ BK BL DY@4 DZ EA
  V EA V EA ~ EB EC EB ED EE DU DV ED EE DU DV EF EG EH EI EJ C ~@4 EK AZ EL EM ~@2 EN EO ~@3 EP@3
>`.pickRestart({
  A: "[[c4,e4]@5 ~]/3", B: "~@6 f#3 ~", C: "g3 ~ g3 ~", D: "g3@4 g3 ~ g3 ~", E: "g3 ~", F: "g3@4 g3 ~ a3 ~",
  G: "b3 ~ b3 ~", H: "f#3@4 f#3 ~ g#3 ~", I: "a3 ~ a3 ~", J: "e3@4 e3 ~ e3 ~", K: "e3 ~ e3 ~", L: "e3@4 f#3 ~ g#3 ~",
  M: "a3 ~", N: "c4", O: "b3", P: "b3 d4@11 c4@2 b3@2, ~ c4 ~@14", Q: "b3 c4 c4@2", R: "c4@6 c4 d4",
  S: "d#4@2 e4@2 e4 ~ e4 ~", T: "d4 f4@11 e4@2 d4@2, ~ e4 ~@14", U: "d4 e4 e4@2", V: "e4", W: "d#4",
  X: "d4@2 b3 c#4 d4@2 e4 d4", Y: "d4 c#4 c4@2", Z: "b3 c4", AA: "a3 ~ a3 b3 c4 ~ c4 d4", AB: "c5", AC: "b4",
  AD: "b4 d5@11 c5@2 b4@2, ~ c5 ~@14", AE: "b4 c5 c5@2", AF: "c5@6 c5 d5", AG: "d#5@2 e5@2 e5 ~ e5 ~",
  AH: "d5 f5@11 e5@2 d5@2, ~ e5 ~@14", AI: "d5 e5 e5@2", AJ: "e5", AK: "d#5", AL: "d5@2 b4 c#5 d5@2 e5 d5",
  AM: "d5 c#5 c5@2", AN: "b4 c5", AO: "a4 ~ a4 b4 c5 ~ c5 d5", AP: "a4 [e4,a4]", AQ: "[e4,e5]@4 [e4,e5] ~ [e4,e5] ~",
  AR: "[e4,e5] ~ [e4,e5] ~", AS: "[e4,e5]@4 [e4,e5] ~ [f#4,f#5] ~", AT: "[g4,g5]@4 [g4,g5] ~ [g4,g5] ~",
  AU: "[g4,g5] ~ [g4,g5] ~", AV: "[g4,g5] ~", AW: "[g4,e5]@4 g4 ~ a4 ~", AX: "b4 ~ b4 ~", AY: "[f#4,e5]@4 f#4 ~ g#4 ~",
  AZ: "a4 ~ a4 ~", BA: "[e4,a4]@4 [e4,a4] ~ [e4,a4] ~", BB: "e4 ~ [e4,a4] ~", BC: "e4@4 f#4 ~ g#4 ~", BD: "a4 ~",
  BE: "g4@4 g4 ~ a4 ~", BF: "f#4@4 f#4 ~ g#4 ~", BG: "e3/2", BH: "[f#3@6 e3 c#4]/2", BI: "[b3,d4]@2 c#4 c#3",
  BJ: "d3 e3", BK: "f#3 g#3", BL: "[g#3,d4]@2 [a3,c#4]!2", BM: "[c#4 ~ a4 ~@2 d4@2 e4, ~ c#4@4 ~@3]/4",
  BN: "f#4 g#4 a4 e4", BO: "e4 g#4 a4 f#4", BP: "a4@3 a4", BQ: "a4@3 g#4@2 f#4 ~@2 e4 ~@2 d#4 ~ c#4 ~@2",
  BR: "b3@2 c#4 d#4", BS: "e4@11 d#4@2 e4@3", BT: "[e4@6 f#4 e4]/2", BU: "[e4@24 g#4@3 f#4@2 e4@3]/2", BV: "f#4",
  BW: "e4!2", BX: "e4/5", BY: "a4", BZ: "g4!2", CA: "[c4,g4]", CB: "[f4 e4, g3]/2", CC: "f4@3 f4",
  CD: "f4@3 e4@2 d4 ~@2 c4 ~@2 b3 ~ a3 ~@2", CE: "g3", CF: "~@13 a4 ~@2", CG: "g4 ~@2 f4 ~ e4 ~@2 d4 ~@2 c4 ~ b3 ~@2",
  CH: "a3 ~@2 g4 ~ f4 ~@2 e4 ~@2 d4 ~ c4 ~@2", CI: "b3 ~@3", CJ: "~@4 b3 ~ b3 ~", CK: "b3 ~ b3 ~ b3 ~ b3 ~",
  CL: "~@2 b3 ~ g#3 ~ b3 ~ e4 ~ b3 ~ g#3 ~ b3 ~", CM: "e3 ~@3", CN: "~@2 c4 ~ a3 ~ c4 ~ e4 ~ c4 ~ a3 ~ c4 ~",
  CO: "~@2 e4 ~ c4 ~ e4 ~ g4 ~ e4 ~ c4 ~ e4 ~", CP: "g3 ~@3", CQ: "~@2 f#4 ~ d#4 ~ f#4 ~ b4 ~ f#4 ~ d#4 ~ f#4 ~",
  CR: "a3 ~@3", CS: "~@2 c#4 ~ a3 ~ c#4 ~ e4 ~ c4 ~ a3 ~ c4 ~", CT: "~@2 b3 ~ g#3 ~ b3 ~ e4 ~ c4 ~ a3 ~ c4 ~",
  CU: "~@2 e4 ~ c#4 ~ e4 ~ g4 ~ e4 ~ c#4 ~ e4 ~", CV: "~@2 f3 ~ d3 ~ f3 ~ a3 ~ f3 ~ d3 ~ d4 ~", CW: "g#3 ~@3",
  CX: "~@2 e4 ~ c#4 ~ e4 ~ g4 ~ e4 ~ c#4 ~ g3 ~", CY: "c4 ~ d4 ~ e4 ~ d4 ~ c4 ~ d4 ~ c4 ~ b3 ~",
  CZ: "a3 ~ b3 ~ c4 ~ d4 ~ e4 ~ f#4 ~ g#4 ~ a4 ~", DA: "g#4 ~ e4 ~ f#4 ~ g#4 ~ a4 ~ b4 ~ a4 ~ g4 ~",
  DB: "f#4 ~ f#4 ~ g4 ~ a4 ~ b4 ~ b3 ~ c#4 ~ d#4 ~", DC: "e4@4 e4 ~ f#4 ~", DD: "g4 ~ g4 ~", DE: "a4 ~ f4 ~ e4 ~ d4 ~",
  DF: "c#4 ~", DG: "[~@3 e4@2 d4@2 d4@2 c4@2 c5]/3", DH: "a#3 ~ c4 ~ d4 ~ c4 ~ a#3 ~ d4 ~ c4 ~ a#3 ~",
  DI: "a3 ~ a#3 ~ c4 ~ d4 ~ e4 ~ f4 ~ g4 ~ a4 ~", DJ: "b3@2 b3 c#4", DK: "d4 ~ d4 ~",
  DL: "[b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~", // Bm
  DM: "[b3,d4] ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ e4 ~ d4 ~", DN: "[e3,c4]@4 [e3,c4] ~ [e3,c4] ~", DO: "[e3,b3] ~ [e3,b3] ~",
  DP: "[e3,b3]@4 [e3,b3] ~ [e3,b3] ~", DQ: "[e3,c4] ~ [e3,c4] ~", DR: "[e3,d4] ~ [e3,c4] ~",
  DS: "[e3,b3]@4 [e3,a3] ~ [e3,b3] ~", DT: "[e3,c4] ~", DU: "d4@4 d4 ~ d4 ~", DV: "c4 ~@3",
  DW: "d4 ~ b3 ~ c#4 ~ d4 ~ e4 ~ d4 ~ c#4 ~ b3 ~", DX: "a3/2", DY: "[c#4 c#4@4 d4@2 e4]/4", DZ: "f#4 e4", EA: "f#4 g#4",
  EB: "[a3,a4]@4 [a3,a4] ~ [a3,a4] ~", EC: "[a3,a4] ~", ED: "[b3,d4]@4 [a3,c4] ~ [b3,d4] ~", EE: "[c4,e4] ~@3",
  EF: "a4@4 a4 ~ a4 ~", EG: "g#4 ~ g#4 ~", EH: "[e4,g#4]@4 [e4,g#4] ~ [e4,g#4] ~", EI: "[e4,a4] ~ [e4,a4] ~",
  EJ: "[e3,a3]@4 [e3,a3] ~ [e3,a3] ~", EK: "b4@4 b4 ~ b4 ~", EL: "c4@4 c4 ~ c4 ~", EM: "d4 ~ c4 ~",
  EN: "[b3,d4]@4 [b3,d4] ~ [b3,d4] ~", EO: "[a3,c4] ~@3", EP: "[a3@3 ~]/3",
})).s("gm_viola").gain(0.2)

// other · pizzicato strings
const pizzicato_strings_3 = note("<~@260 A B C D ~@4 E F ~@2 E G H ~@3>".pickRestart({
  A: "g3@2 g3!2", B: "g3 ~", C: "~ c4", D: "~ b4", E: "e3@2 e3!2", F: "e3 ~", G: "e3@2 f#3 g#3", H: "a3 ~",
})).s("gm_pizzicato_strings").gain(0.15)

// other · viola
const viola_2 = note(`<
  ~@2 A B C D A D E F G H I J A K L M G H I J A K L M G N G N O P Q R S T U V G N W X S T U V G N W X Y Z@2 Y AA AB AC
  AB AD AE AF AG AH AI@2 AJ AD AE AF AG AH AI@2 AJ AK AL@2 AK AM AN AO AP@2 AQ AR AS AK AT AL AU AV AQ AR AS AK AT AW AX
  ~@2 AY AZ@2 BA@2 BB BC BD BE BF@3 BG BH BI BJ BK@4 BL@2 BM BN BM BN BO BP BQ BR BM BN BM BN BO BS BT BU BV BW BV BW BV
  ~ BX BY BZ CA CB ~@49 CC CD CE F ~@6 CF CG CH CI CJ CK CL CM CN CK CL CM X CO CP ~ CQ@2 BA@2 BB BC BD BE BF@3 BG CR BD
  CS BD CS BD CT CU CV CW CX CY CZ DA CX CY CZ DA ~@4 DB DC ~@4 U V DD DE ~@2 DF DG ~@3 DH@3
>`.pickRestart({
  A: "c4@4 c4 ~ c4 ~", B: "b3 ~ b3 ~", C: "[e3,b3]@4 [e3,b3] ~ [e3,b3] ~", D: "c4 ~ c4 ~", E: "b3@4 a3 ~ b3 ~",
  F: "c4 ~", G: "e4@4 e4 ~ e4 ~", H: "d#4 ~ d#4 ~", I: "d4@4 d4 ~ d4 ~", J: "c#4 ~ c4 ~", K: "b3 ~ c4 ~",
  L: "b3@4 [e3,b3] ~ [e3,b3] ~", M: "[e3,c4] ~", N: "e4 ~ e4 ~", O: "e4@4 e4 ~ f#4 ~", P: "g4 ~ g4 ~",
  Q: "g4@4 g4 ~ g4 ~", R: "g4 ~", S: "g4@4 g4 ~ a4 ~", T: "b4 ~ b4 ~", U: "f#4@4 f#4 ~ g#4 ~", V: "a4 ~ a4 ~",
  W: "e4@4 f#4 ~ g#4 ~", X: "a4 ~", Y: "~ a3 c4 e3", Z: "~ g#3 b3 e3", AA: "~ a3 c4 c3", AB: "~ g3 c4 c3",
  AC: "~ b3 d4 g3", AD: "~ c4 e4 e3", AE: "~ f#4 b4 b3", AF: "~ b3 d4 d3", AG: "~ e4 a4 a3", AH: "~ a3 e4 e3",
  AI: "~ b3 e4 e3", AJ: "~ c4 e4 a3", AK: "~@3 a3 ~ c4 ~@2 e3@8", AL: "~@3 g#3 ~ b3 ~@2 e3@8",
  AM: "~@3 a3 ~ c4 ~@2 c3@8", AN: "~@3 g3 ~ c4 ~@2 [c3,g3]@8", AO: "~@3 b3 ~ d4 ~@2 g3@8", AP: "~@3 g3 ~ c4 ~@2 c3@8",
  AQ: "~@3 b3 ~ b4 ~@2 b3@8", AR: "~@3 b3 ~ d4 ~@2 d3@8", AS: "~@3 a3 ~ a4 ~@2 a3@8", AT: "~@3 g#3 ~ b3 ~@2 [e3,a3]@8",
  AU: "~@3 a3 ~ a4 ~@2 a3@3 a3@2 b3@3", AV: "c4@3 g4@2 c5@3 c3@4 ~@4", AW: "~@3 g#3 ~ e4 ~@2 e3@3 e3@2 e4@3",
  AX: "a3 ~", AY: "b3 d4@11 c#4@2 b3@2, ~ c#4 ~@14", AZ: "[c#3,a3]/2", BA: "[[d3,b3]@3 [c#3,a3]]/2", BB: "g#3 a3",
  BC: "f#3 g3", BD: "a3 b3", BE: "b3@2 a3 [g3,g4]", BF: "[g4@2 g4@7 [a3,g4] [a3,f#4]@2]/3", BG: "[a3,f#4] a3",
  BH: "a3 b3 c#4!2", BI: "g#3 b3!2 a3", BJ: "g#3 [b3,g#4]", BK: "[a4 g#4, b3]/2", BL: "[a4@2 g#4 g#3, b3@3 ~]/2",
  BM: "[e3,a#3]", BN: "[e3,b3]", BO: "[e3,a#3] g3", BP: "f#3!2 d3 f#3", BQ: "c#3 e3!2 d3",
  BR: "c#3@4 a3@4 b3@3 c4@2 c#4@3", BS: "a3!2 f3 a3", BT: "e3 g3!2 f3", BU: "e3 c4", BV: "d4", BW: "[c4,g4]",
  BX: "~@13 b3 ~@2", BY: "a3 ~@2 g3 ~ f3 ~@2 e3 ~@2 d3 ~ c4 ~@2", BZ: "b3 ~@2 a3 ~ g3 ~@2 f3 ~@2 e3 ~ d3 ~@2",
  CA: "c3@2 ~@2 e3 ~ e3 ~", CB: "e3 ~ e3 ~@5", CC: "c#4 ~ c#4 ~ d4 ~ e4 ~ a3 ~ a3 ~ b3 ~ c#4 ~",
  CD: "d4 ~ c4 ~ a#3 ~ a3 ~", CE: "b3 ~ b3 ~ c4 ~ d4 ~ g3 ~ g3 ~ a3 ~ b3 ~", CF: "d4@4 d4 ~ e4 ~",
  CG: "g#4@4 g#4 ~ a4 ~", CH: "b4@4 b4 ~ c5 ~", CI: "d5@4 d5 ~ e5 ~", CJ: "f5@2 e5 d#5 e5 e4 f#4 g#4",
  CK: "a4 ~ b4 ~ c5 ~ b4 ~ a4 ~ c5 ~ b4 ~ a4 ~", CL: "e4 ~ f#4 ~ g#4 ~ a4 ~ b4 ~ c5 ~ d5 ~ e5 ~",
  CM: "d5 ~ b4 ~ c5 ~ d5 ~ e5 ~ d5 ~ c5 ~ b4 ~", CN: "c5 ~ b4 ~ c5 ~ d5 ~ e5 ~ e4 ~ f#4 ~ g#4 ~", CO: "b3@4 b3 ~ b3 ~",
  CP: "a3 ~@3", CQ: "[c#3,e3]/2", CR: "a3 g3", CS: "a3@3 g3", CT: "e3", CU: "a3", CV: "g3", CW: "f3",
  CX: "g3 ~ [g3,g4] ~", CY: "[c3,c4] ~", CZ: "g#4@4 f#4 ~ g#4 ~", DA: "a4 ~@3", DB: "e3@4 e3 ~ f#3 ~", DC: "e3 ~ e3 ~",
  DD: "[e3,a3]@4 [e3,a3] ~ [e3,a3] ~", DE: "[e3,g#3] ~ [e3,a3] ~", DF: "[e3,e4]@4 [e3,e4] ~ [e3,e4] ~",
  DG: "[e3,e4] ~@3", DH: "[[c4,e4]@3 ~]/3",
})).s("gm_viola").gain(0.2)

// chords · pizzicato strings
const pizzicato_strings_4 = note(`<
  ~@149 A B C D E F G H I J K L M N O P I J K L M N O Q R S T Q U V@2 W X ~@72 Y Z AA Y ~@2 AB AC AD AE ~@4 AF AG ~@2 AF
  AG@2 ~@3
>`.pickRestart({
  A: "a3@2 a3!2", B: "g#3!2", C: "[b3,g#4]@2 [b3,g#4]!2", D: "[c4,a4]!2", E: "g3@2 g3 [a3,a4]", F: "[c4,e4]!2",
  G: "[b3,d4]@2 [b3,d4]!2", H: "[c4,e4] ~", I: "[c4,e4]@2 [c4,e4] [c4,f#4]", J: "[b3,f#4] [b3,f#4,b4]",
  K: "[a3,d4]@2 [a3,d4] [b3,e4]", L: "[a3,e4] [a3,e4,a4]", M: "[c4,a4]@2 [c4,a4] a3", N: "g#3 ~ [c4,a4] a3",
  O: "[b3,g#4]@2 a4 b4", P: "[c4,e4] ~@3", Q: "[c#4,e4] ~", R: "[c#4,e4]@2 [c#4,e4]!2", S: "[d4,f4] ~",
  T: "[d4,f4]@2 [d4,f4]!2", U: "[c#4,e4]!3 ~", V: "[d4,f4]!3 ~", W: "~@2 [c#4,e4]!2", X: "~@2 [d4,f4] d4", Y: "~ a3",
  Z: "~ e4", AA: "~ e3", AB: "d3@2 c3 d3", AC: "e3 ~", AD: "~ c3", AE: "~ b3", AF: "d3@2 d3!2", AG: "c3 ~",
})).s("gm_pizzicato_strings").gain(0.2)

// other · cello
const cello = note(`<
  A@2 B C D E F G H I J K L M N O D P J K L M N O D P Q R S T Q U V W X Y Z T Q AA S T X Y Z T Q AA S T AB AC AD AB@2
  AE@2 AF@2 AG@2 AB@2 AH AD AB AF AG@2 AB@2 AH AD AB AI AJ AK AI@2 AL@2 AM@2 AN@2 AO@2 AP AQ AR AM AN@2 AO@2 AP AQ P
  ~@47 AS AT AU ~@42 AV AW AX AY AZ BA BB BC BD BE BF@3 ~@2 BG BH BI BJ BK BL@2 BM N BN D M N O BO P D BP ~@19 BQ BR BS
  BT BU BV BW BX BU BV BW BX ~@21 P ~@2
>`.pickRestart({
  A: "a3/2", B: "[e2,a2]@4 [e2,a2] ~ [e2,a2] ~", C: "[e2,g#2] ~ [e2,g#2] ~", D: "e2@4 e2 ~ e2 ~",
  E: "[e2,a2] ~ [e2,a2] ~", F: "[e2,a2]@4 [e2,a2] ~ [d2,a2] ~", G: "[e2,g2] ~ [e2,g2] ~",
  H: "[d2,g2]@4 [c2,g2] ~ [d2,g2] ~", I: "e2 ~", J: "c3@4 c3 ~ c3 ~", K: "b2 ~ b2 ~", L: "b2@4 b2 ~ b2 ~",
  M: "a2 ~ a2 ~", N: "a2@4 a2 ~ a2 ~", O: "g#2 ~ a2 ~", P: "a2 ~", Q: "~@4 a2 ~ a2 ~", R: "g#2 ~@3 g#3 ~@3",
  S: "~@4 e2 ~ e2 ~", T: "a2 ~@3 a3 ~@3", U: "g2 ~@3 g3 ~@3", V: "~@4 g3 ~ g3 ~", W: "c3 ~@3 c4 ~@3",
  X: "~@4 c3 ~ c3 ~", Y: "b2 ~@3 b3 ~@3", Z: "~@4 e3 ~ e3 ~", AA: "g#2 ~@3 a2 ~@3", AB: "a2@2 ~ a3", AC: "g#2@2 ~ g#3",
  AD: "e2@2 ~ e3", AE: "g2@2 ~ g3", AF: "c3@2 ~ c4", AG: "b2@2 ~ b3", AH: "g#2@2 ~ a2", AI: "a2@4 a2 ~ a3 ~",
  AJ: "g#2@4 g#2 ~ g#3 ~", AK: "e2@4 e2 ~ e3 ~", AL: "g2@2 g2 g3", AM: "c3@2 c3 c4", AN: "b2@2 b2 b3", AO: "a2@2 a2 a3",
  AP: "g#2@2 a2 a3", AQ: "e2@2 e2 e3", AR: "a2@2 a2 b2", AS: "~@13 c4 ~@2", AT: "b3 ~@2 a3 ~ g3 ~@2 f3 ~@2 e3 ~ d3 ~@2",
  AU: "c3 ~@2 b2 ~ a2 ~@2 g#2@2 ~@2 g#2@2 ~@2", AV: "a3@4 a3 ~ b3 ~", AW: "c4 ~ c4 ~", AX: "b3@4 b3 ~ c#4 ~",
  AY: "d4 ~ c4 ~ b3 ~ a3 ~", AZ: "g3 ~ a3 ~ b3 ~ a3 ~ g3 ~ a3 ~ g3 ~ f#3 ~",
  BA: "e3 ~ f#3 ~ g3 ~ a3 ~ b3 ~ c#4 ~ d#4 ~ e4 ~", BB: "e4 ~ a3 ~ b3 ~ c#4 ~ d4 ~ b3 ~ e4 ~ d4 ~",
  BC: "c4 ~ b3 ~ c4 ~ d4 ~ e4 ~ e3 ~ f#3 ~ g#3 ~", BD: "a3 ~ g3 ~ f#3 ~ e3 ~",
  BE: "f#3 ~ f#3 ~ g3 ~ a3 ~ d3 ~ d3 ~ e3 ~ f#3 ~", BF: "[g3 ~ f3 ~ e3 ~ d3@4 c3@4 g3@4 c3@4 c4@2]/3",
  BG: "d4@4 d4 ~ e4 ~", BH: "f4 ~ f4 ~", BI: "f3 ~ e3 ~ g3 ~ f3 ~ e3 ~ g3 ~ f3 ~ e3 ~",
  BJ: "d3 ~ e3 ~ f3 ~ g3 ~ a3 ~ b3 ~ c#4 ~ d4 ~", BK: "d4 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~",
  BL: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", BM: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ c3 ~ b2 ~", BN: "g#2 ~ g#2 ~",
  BO: "e2@4 e3 ~ e3 ~", BP: "a2 ~@3", BQ: "a3", BR: "f3", BS: "e3", BT: "d3", BU: "g2 ~ g3 ~", BV: "c3 ~",
  BW: "[e3,b3]@4 [e3,b3] ~ [e3,b3] ~", BX: "[a2,a3] ~@3",
})).s("gm_cello").gain(0.23)

// other · pizzicato strings
const pizzicato_strings_5 = note(`<
  ~@100 A B@12 C D E@7 F G F G F G E B F G F G H I J K@6 ~@6 L M L M N O P Q R S T U L M A V R S T U L M A V W V W V X@3
  Y@3 ~@40 A B@18 ~@12 Z AA@2 AB@2 AC P Q AD AE AF AB@2 AG A V ~@2 A V@2 ~@3
>`.pickRestart({
  A: "e2@2 f#2 g#2", B: "a2@2 a3!2", C: "f#2 g#2 a2!2", D: "b2@2 b3!2", E: "e3@2 e4!2", F: "c#3@2 c#4!2",
  G: "d3@2 d4!2", H: "c#3@2 c3!2", I: "f2@2 f3!2", J: "g2@2 g3!2", K: "c3@2 c4!2", L: "e2@2 e2!2", M: "e2!2",
// … 9 more lines

More by Ludwig van Beethoven