Strudelify

Hungarian Dances No. 5 YG

Brahms

KeyB♭ majorTempo126 bpm
0:00/0:00
// Hungarian Dances No. 5 YG — Brahms
// 126 bpm, 2/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/2706286; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 157 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · flute · "플루트"
const flute = note(`<
  A B C D E F G D A B ~@5 H I J K L M N G D O P Q R ~@3 H S T U V W X Y Z ~@7 AA AB AC AD AE@2 AF AG AH@2 AI AJ ~@7 AK
  AL AM@3 AN AO AP@5 AQ AR AS AT@6 AU AV@3 ~@3 AW@2 ~@3 AX AY@7 AZ@6 ~@3 BA@3 BB@4 BC@2 ~@7 BD BE BF BG BH@2 BI BJ BK@2
  BL F ~@7 BM BN BO@2 BP BQ
>`.pickRestart({
  A: "d4@3 g4", B: "bb4@3 g4", C: "gb4@6 g4 a4", D: "g4@15 ~", E: "eb4@6 f4 g4", F: "d4@15 ~", G: "c5 bb4!2 a4 a4@3 d5",
  H: "~@2 g5 ~", I: "d5@3 g5", J: "bb5@3 g5", K: "gb5@6 g5 a5", L: "g5@15 ~", M: "eb5@6 f5 g5", N: "d5@15 ~",
  O: "d4@3 g4 bb4 d5 g5 bb5", P: "d6@11 ~ bb5@4", Q: "a5@11 ~ bb5@2 c6@2", R: "bb5@15 ~", S: "f4!2", T: "g4@3 f4",
  U: "~@2 c5@4 b4 c5", V: "d5 c5 b4 d5 c5@2 ~@2", W: "eb5!2", X: "f4@3 eb4", Y: "~@2 bb4@4 a4 bb4",
  Z: "c5 bb4 a4 c5 bb4@2 ~@2", AA: "~@5 d6@4 ~@7", AB: "~@3 d5@2 e5@4 ~@4 gb5@3", AC: "~@5 a5 g5@3 g5@7",
  AD: "~ gb5@2 g5@2 ~ g5@2 gb5@2 ~ a5@2 g5@3, ~@5 a5@2 ~@3 g5@2 ~@4", AE: "[~@5 f4@8 f4@8 g4@11]/2",
  AF: "~ f4@4 ~@4 c5@7", AG: "~ b4@2 c5@2 d5@2 c5@2 b4@2 d5@2 c5@3", AH: "[~@5 eb5@8 eb5@8 f4@11]/2",
  AI: "~ eb4@4 ~@4 bb4@7", AJ: "~ a4@2 bb4@2 c5@2 bb4@2 a4@2 c5@2 bb4@3", AK: "~@5 d6@2 ~", AL: "~@4 d5 e5@2 ~",
  AM: "[~@2 gb5@4 ~@4 a5 g5@3 g5@8 gb5@2 g5@2 ~ g5@2 gb5@2 ~ a5@2 g5@4 ~@4 g5@3 d5@2 ~, ~@26 a5@2 ~@3 g5@2 ~@15]/3",
  AN: "d5@2 ~ d5@2 ~ d5@2 ~ c5@2 ~@2 b4@2 ~", AO: "c5@2 ~ d5@5 ~ d5@5 ~@2",
  AP: "[g5@3 d5@2 ~ d5@2 ~ d5@2 ~ d5@2 ~ c5@2 ~ b4@2 ~@2 a4@2 ~ g4@6 g4@6 g5@3 d5@2 ~@2 d5@2 ~ d5@2 ~ d5@2 ~ c5@2 ~ b4@2 ~ c5@2 ~@2 d5@5 ~ d5@5 ~ g5@3 d5@2]/5",
  AQ: "~ d5@2 ~@2 d5@2 ~ d5@2 ~ c5@2 ~ b4@2", AR: "~ a4@2 ~ g4@6 ~ g4@5", AS: "~ b4@7 b4@7 ~",
  AT: "[c5@7 c5@7 b4@7 b4@7 ~ a4@7 a4@7 b4@3 ~ b4@3 c5@3 c5@3 d5@3 g5@3 d5@6 ~ b4@7 b4@7 c5@7 c5@6]/6",
  AU: "~@2 d5@7 c5@7", AV: "[d5@7 ~ d5@7 c5@3 b4@3 b4@3 b4@3 ~ a4@3 g4@3 g4@3 ~@11]/3",
  AW: "[~@3 b4@2 ~ b4@2 ~ c5@2 ~ c5@2 ~ d5@3 g5@2 ~@2 d5@6 ~@4]/2", AX: "~@6 d5@2 ~ c5@2 ~@2 b4@2 ~",
  AY: "[a4@2 ~ g4@3 g5@2 ~ g4@3 ~@3 d4@12 g4@4 bb4@12 g4@4 gb4@12 g4@2 a4@2 g4@15 ~ eb4@12 f4@2 g4@2 d4@15 ~ c5]/7",
  AZ: "[~ bb4@2 bb4@2 a4@2 a4@6 d5@2 g4@15 ~ d4@6 g4@2 bb4@2 d5@2 g5@2 bb5@2 d6@11 ~ bb5@4 a5@11 ~ bb5@2 c6@2 bb5@15 ~@2]/6",
  BA: "[~@7 g5@4 ~@4 f4@8 f4@8 g4@12 f4@4 ~]/3", BB: "[~@3 eb4@8 eb4@15 ~@5 eb4@8 eb4@8 f4@12 eb4@4 ~]/4",
  BC: "[~@3 d4@8 d4@15 ~@6]/2", BD: "~ d6 ~@2", BE: "~ d5 e5@2 ~@2 gb5@2", BF: "~@4 a5 g5@3 g5@8",
  BG: "gb5@2 g5@2 a5@2 g5@2 ~ g5@2 ~ g5@4, ~@8 gb5@2 ~ a5@2 ~@3", BH: "[~ f4@2 f4@2 g4@3]/2", BI: "f4 ~ eb4@2",
  BJ: "eb4@15 ~", BK: "[~ eb4@2 eb4@2 f4@3]/2", BL: "eb4 ~ d4@2", BM: "~@9 d6@4 ~@3", BN: "~@7 d5@2 e5@4 ~@3",
  BO: "[~ gb5@4 ~@4 a5 g5@3 g5@8 gb5@2 g5@2 a5@2 ~ gb5@2 g5@2, ~@27 g5@2 ~@3]/2", BP: "~ g5@4 ~@4 g5@3 ~@4, a5 ~@7",
  BQ: "~ gb5@3 ~@5 g5@3 ~@4",
})).s("gm_flute").gain(0.4)

// other · flute · "플루트" · soft notes
const flute_soft = note(`<
  ~@12 A B C D ~@12 A B C D ~@8 E@4 F G@2 ~@12 H@2 I@4 J ~@24 K@2 L M ~ N@5 ~@12 O@5 ~@7 P@4 Q R S@2 ~@12 T U V@4 W ~@6
>`.pickRestart({
  A: "eb5@2 f5@2 g5 ~ eb5 ~ d5@2 eb5@2 f5 ~ d5 ~", B: "c5@2 d5@2 eb5 ~ c5 ~ bb4@2 c5@2 d5 ~ bb4 ~",
  C: "c5 bb4!2 a4 a4@3 d5", D: "g4 ~", E: "[a5@15 a5@14 c6@7 ~ bb5@14 a5@7 a5@6]/4", F: "~ g5@7",
  G: "[gb5@4 g5@3 ~ a5@3 g5@4 gb5@4 a5@3 g5@7 ~@3]/2", H: "[~@5 a5@14 a5@13]/2",
  I: "[~@2 c6@7 bb5@14 ~ a5@7 a5@7 ~ g5@14 gb5@4 g5@3 ~ a5@3]/4", J: "g5@4 gb5@3 a5@4 g5@5",
  K: "[~@8 b4@11 ~@4 c5@9]/2", L: "~@5 b4@11", M: "~@4 a4@11 ~", N: "[~@12 b4@11 ~@3 c5@11 ~@4 d5@11 ~@4 d5@11 ~@13]/5",
  O: "[~@15 eb5@2 f5@2 g5 ~ eb5 ~ d5@2 eb5@2 f5 ~ d5 ~ c5@2 d5@2 eb5 ~ c5 ~ bb4@2 c5@2 d5 ~ bb4 ~ c5@2 bb4@2 bb4@2 a4@2 a4@6 d5@2 g4@8 ~@9]/5",
  P: "[~@15 a5@14 ~ a5@14 ~ c6@7 bb5@12]/4", Q: "~@3 a5@7 a5@6", R: "~ g5@14 ~",
  S: "[gb5@3 g5@3 ~ a5@4 g5@3 gb5@4 a5@4 g5@7 ~@3]/2", T: "~ a5@3", U: "~@3 a5@13",
  V: "[~@2 c6@7 bb5@14 a5@7 ~ a5@7 g5@14 ~ gb5@3 g5@3 ~ a5@4]/4", W: "g5@3 gb5@4 a5@4 g5@5",
})).s("gm_flute").gain(0.2)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B C D E F G H I J K L ~@3 M N O P L Q L R D S O T U ~@3 V W X Y Z AA AB AC AD ~@7 AE AF AG AH AI@2 AJ AK AL@2 AM AN
  ~@7 AO AP AQ@3 AR AS AT@5 AU AV AW AX@6 AY AZ@3 ~@3 BA@2 ~@3 BB BC@7 BD@6 ~@3 BE@3 BF@4 BG@2 ~@7 BH BI BJ BK BL@2 BM
  BN BO@2 BP BQ ~@7 BR BS BT@2 BU BV
>`.pickRestart({
  A: "d4@3 g4", B: "bb4@3 g4", C: "gb4@6 g4 a4", D: "g4", E: "eb4@6 f4 g4", F: "d4", G: "c4 bb3!2 a3 a3@3 d4", H: "g3",
  I: "d4@6 g4 bb4", J: "d5@3 bb4", K: "a4@6 bb4 c5", L: "bb4", M: "~@2 g5 ~", N: "d5@3 g5", O: "bb5@3 g5",
  P: "c5@6 c5 a5", Q: "c5@6 d5 eb5", R: "c5 bb4!2 a4 a4@3 d5", S: "d4@3 g4 bb4 d5 g5 bb5", T: "gb5@6 g5 a5", U: "g5",
  V: "~@2 bb4 ~", W: "d5!2", X: "eb5@3 d5", Y: "~@2 c5@4 b4 c5", Z: "d5 c5 b4 d5 c5@2 ~@2", AA: "c5!2", AB: "d5@3 c5",
  AC: "~@2 bb4@4 a4 bb4", AD: "c5 bb4 a4 c5 bb4@2 ~@2", AE: "~@5 gb5@4 ~@7", AF: "~@3 d5@2 e5@4 ~@4 gb5@3",
  AG: "~@5 a5 g5@3 g5@7", AH: "~ gb5@2 g5@2 ~ g5@2 gb5@2 ~ a5@2 g5@3, ~@5 a5@2 ~@3 g5@2 ~@4",
  AI: "[~@5 d5@8 d5@8 eb5@11]/2", AJ: "~ d5@4 ~@4 c5@7", AK: "~ b4@2 c5@2 d5@2 c5@2 b4@2 d5@2 c5@3",
  AL: "[~@5 c5@8 c5@8 d5@11]/2", AM: "~ c5@4 ~@4 bb4@7", AN: "~ a4@2 bb4@2 c5@2 bb4@2 a4@2 c5@2 bb4@3",
  AO: "~@5 gb5@2 ~", AP: "~@4 d5 e5@2 ~",
  AQ: "[~@2 gb5@4 ~@4 a5 g5@3 g5@8 gb5@2 g5@2 ~ g5@2 gb5@2 ~ a5@2 g5@4 ~@4 b4@3 b4@2 ~, ~@26 a5@2 ~@3 g5@2 ~@15]/3",
  AR: "b4@2 ~ b4@2 ~ b4@2 ~ a4@2 ~@2 g4@2 ~", AS: "a4@2 ~ b4@5 ~ b4@5 ~@2",
  AT: "[b4@3 b4@2 ~ b4@2 ~ b4@2 ~ b4@2 ~ a4@2 ~ g4@2 ~@2 gb4@2 ~ g4@6 g4@6 b4@3 b4@2 ~@2 b4@2 ~ b4@2 ~ b4@2 ~ a4@2 ~ g4@2 ~ a4@2 ~@2 b4@5 ~ b4@5 ~ b4@3 b4@2]/5",
  AU: "~ b4@2 ~@2 b4@2 ~ b4@2 ~ a4@2 ~ g4@2", AV: "~ gb4@2 ~ g4@6 ~ g4@5", AW: "~ b4@7 b4@7 ~",
  AX: "[c5@7 c5@7 b4@7 b4@7 ~ a4@7 a4@7 b4@3 ~ b4@3 c5@3 c5@3 d5@3 g5@3 d5@6 ~ b4@7 b4@7 c5@7 c5@6]/6",
  AY: "~@2 d5@7 c5@7", AZ: "[d5@7 ~ d5@7 c5@3 b4@3 b4@3 b4@3 ~ a4@3 g4@3 g4@3 ~@11]/3",
  BA: "[~@3 g4@2 ~ g4@2 ~ a4@2 ~ a4@2 ~ b4@3 b4@2 ~@2 b4@6 ~@4]/2", BB: "~@6 b4@2 ~ a4@2 ~@2 g4@2 ~",
  BC: "[gb4@2 ~ d4@3 d5@2 ~ d4@3 ~@3 d4@12 g4@4 bb4@12 g4@4 gb4@12 g4@2 a4@2 g4@16 eb4@12 f4@2 g4@2 d4@16 c4]/7",
  BD: "[~ bb3@2 bb3@2 a3@2 a3@6 d4@2 g3@16 d4@6 g4@2 bb4@2 d5@2 g5@2 bb5@2 bb5@12 g5@4 gb5@12 g5@2 a5@2 g5@16 ~]/6",
  BE: "[~@7 bb4@4 ~@4 d5@8 d5@8 eb5@12 d5@4 ~]/3",
  BF: "[~@3 c5@8 b4@2 c5@2 d5@2 c5@2 b4@2 d5@2 c5@4 ~@4 c5@8 c5@8 d5@12 c5@4 ~]/4",
  BG: "[~@3 bb4@8 a4@2 bb4@2 c5@2 bb4@2 a4@2 c5@2 bb4@4 ~@5]/2", BH: "~ gb5 ~@2", BI: "~ d5 e5@2 ~@2 gb5@2",
  BJ: "~@4 a5 g5@3 g5@8", BK: "gb5@2 g5@2 a5@2 g5@2 ~ g5@2 ~ g5@4, ~@8 gb5@2 ~ a5@2 ~@3", BL: "[~ d5@2 d5@2 eb5@3]/2",
  BM: "d5 ~ c5@2", BN: "b4 c5 d5 c5 b4 d5 c5@2", BO: "[~ c5@2 c5@2 d5@3]/2", BP: "c5 ~ bb4@2",
  BQ: "a4 bb4 c5 bb4 a4 c5 bb4@2", BR: "~@9 gb5@4 ~@3", BS: "~@7 d5@2 e5@4 ~@3",
  BT: "[~ gb5@4 ~@4 a5 g5@3 g5@8 gb5@2 g5@2 a5@2 ~ gb5@2 g5@2, ~@27 g5@2 ~@3]/2", BU: "~ g5@4 ~@4 g5@3 ~@4, a5 ~@7",
  BV: "~ d5@3 ~@5 g4@3 ~@4",
})).s("gm_clarinet").gain(0.4)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note(`<
  ~@12 A B C D ~@12 E F G D ~@8 H@4 I J@2 ~@12 K@6 L ~@24 M@2 N O ~ P@5 ~@12 Q@5 ~@7 R@5 S T@2 ~@12 U@6 V ~@6
>`.pickRestart({
  A: "eb5@2 f5@2 g5 ~ eb5 ~ d5@2 eb5@2 f5 ~ d5 ~", B: "c5@2 d5@2 eb5 ~ c5 ~ bb4@2 c5@2 d5 ~ bb4 ~",
  C: "c5 bb4!2 a4 a4@3 d5", D: "g4 ~", E: "g4 f4", F: "eb4 d4", G: "c4@2 bb3@2 a3@3 d4",
  H: "[a5@15 a5@4 bb5@5 b5@5 c6@7 ~ bb5@14 a5@13]/4", I: "~ g5@7", J: "[gb5@4 g5@4 a5@3 g5@4 gb5@4 a5@3 g5@7 ~@3]/2",
  K: "[~@5 a5@14 a5@5 bb5@5 b5@5 c6@7 bb5@15 a5@15 g5@14 gb5@4 g5@4 a5@3]/6", L: "g5@4 gb5@3 a5@4 g5@5",
  M: "[~@8 b4@11 ~@4 c5@9]/2", N: "~@5 b4@11", O: "~@4 a4@11 ~", P: "[~@12 b4@11 ~@3 c5@11 ~@4 d5@11 ~@4 d5@11 ~@13]/5",
  Q: "[~@15 g4@8 f4@8 eb4@8 d4@8 c4@4 bb3@4 a3@6 d4@2 g4@8 ~@9]/5",
  R: "[~@15 a5@15 a5@5 bb5@5 b5@5 c6@7 bb5@15 a5@13]/5", S: "~ g5@15",
  T: "[gb5@3 g5@4 a5@4 g5@3 gb5@4 a5@4 g5@7 ~@3]/2",
  U: "[~@4 a5@15 a5@5 bb5@5 b5@5 c6@7 bb5@14 a5@15 g5@15 gb5@3 g5@4 a5@4]/6", V: "g5@3 gb5@4 a5@4 g5@5",
})).s("gm_clarinet").gain(0.2)

// chords · piano · "ピアノ"
const piano = note(`<
  A@2 B A B A C A D@2 E D ~@3 F D@2 E D G D H D@3 E D ~@3 I J K L M N O P@2 ~@7 Q R S T U V W X Y Z AA AB AC ~@6 AD AE
  AF@3 AG AH AI@5 AJ AK ~@3 AL@3 ~@2 AM@3 ~@3 AN@2 ~@3 AO AP@8 AQ@5 ~@3 AR@8 AS ~@7 AT AU AV AW AX AY AZ BA BB BC BD BE
  BF ~@6 BG BH BI@2 BJ BK
>`.pickRestart({
  A: "g2 [g3,bb3] d2 [g3,bb3]", B: "g2 ~ c2 [g3,c4], ~ [g3,c4]@2 ~", C: "gb2 [a3,c4] d2 [a3,c4]",
  D: "g2 [bb3,d4] d2 [bb3,d4]", E: "g2 ~ c2 [eb4,gb4], ~ [c4,eb4]@2 ~", F: "~@2 [g2,g3,bb3] ~",
  G: "g2 ~ c2 [c4,eb4], ~ [c4,eb4]@2 ~", H: "gb2 d4 d2 [d4,gb4]", I: "~ [g2,g3,bb3]!2 ~", J: "b2 [b3,d4] g2 [b3,d4]",
  K: "b2 [g3,b3] g2 [b3,d4]", L: "c3 [g3,c4] g2 [g3,c4]", M: "c3 [g3,c4] bb2 [g3,c4]", N: "a2 [a3,c4] f2 [a3,c4]",
  O: "a2 [a3,d4] f2 [a3,c4]", P: "bb2 [f3,bb3] f2 [f3,bb3]", Q: "~@5 [gb2,a3,d4]@4 ~@7",
  R: "~@3 [d2,d4]@2 [e2,e4]@4 ~@4 [gb2,gb4]@3", S: "~@5 [g2,bb3,d4]@4 [g2,bb3,d4]@7",
  T: "~ [g2,bb3,d4]@4 g2@4 d2@4 [g2,bb3,d4]@3, ~@5 [eb4,gb4]@8 ~@3", U: "~@5 b2@4 [b3,d4]@4 g2@3",
  V: "~ [b3,d4]@4 b2@4 [g3,b3]@4 g2@3", W: "~ [b3,d4]@4 c3@4 [g3,c4]@4 g2@3", X: "~ [g3,c4]@4 c3@4 [g3,c4]@4 bb2@3",
  Y: "~ [g3,c4]@4 a2@4 [a3,c4]@4 f2@3", Z: "~ [a3,c4]@4 a2@4 [a3,d4]@4 f2@3", AA: "~ [a3,c4]@4 bb2@4 [f3,bb3]@4 f2@3",
  AB: "~ [f3,bb3]@4 bb2@4 [f3,bb3]@4 f2@3", AC: "~ [f3,bb3]@4 ~@11", AD: "~@5 [gb2,a3,d4]@2 ~",
  AE: "~@4 [d2,d4] [e2,e4]@2 ~", // D E
  AF: "[~@2 [gb2,gb4]@4 ~@4 [g2,bb3,d4]@4 [g2,bb3,d4]@8 [g2,bb3,d4]@4 g2@4 d2@4 [g2,bb3,d4]@4 ~@4 g2@3 g3@3, ~@13 [eb4,gb4]@4 ~@7]/3", // Gb Gm Ebm
  AG: "g2@3 g3@3 g2@3 g3@3 ~ g2@3", AH: "g3@3 [g2,b3,d4]@6 ~ d4@4 ~@2, ~@9 [g2,b3]@6 ~",
  AI: "[g2@3 g3@3 g2@3 g3@3 g2@3 g3@3 g2@3 ~ g3@3 [g2,b3,d4]@6 ~ d4@4 ~ g2@3 g3@3 ~ g2@3 g3@3 g2@3 g3@3 g2@3 g3@3 ~ [g2,b3,d4]@6 [g2,b3,d4]@6 g2@3 g3@2, ~@31 [g2,b3]@6 ~@43]/5", // G
  AJ: "~ g2@3 ~ g3@3 g2@3 g3@3 g2@2", AK: "~ g3@3 ~ d4@4 ~@2 [g2,b3,d4]@5, ~@2 [g2,b3]@3 ~@3",
  AL: "[~@11 [g3,b3]@2 ~@2 [g3,b3]@2 ~ [e3,a3,c4]@2 ~ [c3,a3,c4]@2 ~ [g3,d4]@3 [d3,g4]@2 ~ [g3,d4]@6 ~@12]/3", // G Am F G5
  AM: "[~@15 [g2,g3,b3,d4]@2 ~ [c2,c3,a3,c4]@2 ~ [d2,d3,g3,b3]@2 ~ [d2,d3,gb3,a3]@2 ~@2 g3@3 [d3,g4]@2 ~ [g2,g3]@3 ~@11, ~@28 g2@5 ~@15]/3", // G F G D G5 G
  AN: "[~@3 [g3,b3]@2 ~ [g3,b3]@2 ~ [e3,a3,c4]@2 ~ [c3,a3,c4]@2 ~ [g3,d4]@3 [d3,g4]@2 ~@2 [g3,d4]@6 ~@4]/2", // G Am F G5
  AO: "~@6 [g3,b3,d4]@2 ~ [c3,a3,c4]@2 ~@2 [d3,g3,b3]@2 ~", // G F G
  AP: "[[d3,gb3,a3]@2 ~ g3@3 [d3,g4]@2 ~ [g2,g3]@3 ~@3 g2@4 [g3,bb3]@4 d2@4 [g3,bb3]@4 g2@4 [g3,bb3]@4 d2@4 [g3,bb3]@4 g2@4 ~@4 c2@4 [g3,c4]@4 g2@4 [g3,bb3]@4 d2@4 [g3,bb3]@4 g2@4 ~@4 c2@4 [g3,c4]@4 g2@4 [g3,bb3]@4 d2@4 [g3,bb3]@4 gb2@4 [a3,c4]@4 d2@4 [a3,c4]@4 g2, ~@3 g2@5 ~@43 [g3,c4]@8 ~@24 [g3,c4]@8 ~@37]/8", // D G5 G Gm C5 Gm C5 Gm …
  AQ: "[~@3 [g3,bb3]@4 d2@4 [g3,bb3]@4 g2@4 [bb3,d4]@4 d2@4 [bb3,d4]@4 g2@4 [bb3,d4]@4 d2@4 [bb3,d4]@4 f2@4 ~@4 c2@4 [eb4,gb4]@4 g2@4 [bb3,d4]@4 d2@4 [bb3,d4]@4 ~, ~@51 [c4,eb4]@8 ~@21]/5", // Gm Bb Ebm Bb Cm
  AR: "[~@3 [g2,g3,bb3]@4 [g2,g3,bb3]@4 ~@4 b2@4 [b3,d4]@4 g2@4 [b3,d4]@4 b2@4 [g3,b3]@4 g2@4 [b3,d4]@4 c3@4 [g3,c4]@4 g2@4 [g3,c4]@4 c3@4 [g3,c4]@4 bb2@4 [g3,c4]@4 a2@4 [a3,c4]@4 f2@4 [a3,c4]@4 a2@4 [a3,d4]@4 f2@4 [a3,c4]@4 bb2@4 [f3,bb3]@4 f2@4 [f3,bb3]@4 bb2]/8", // Gm Bm G Bm C5 Am D5 Am …
  AS: "~@3 [f3,bb3]@4 f2@4 [f3,bb3]@4 ~", AT: "~ [gb2,a3,d4] ~@2", AU: "~ [d2,d4] [e2,e4]@2 ~@2 [gb2,gb4]@2",
  AV: "~ [g2,bb3,d4] [g2,bb3,d4]@2", AW: "[g2,bb3,d4] g2 d2 [g2,bb3,d4], ~ [eb4,gb4]@2 ~", AX: "~ b2 [b3,d4] g2",
  AY: "[b3,d4] b2 [g3,b3] g2", AZ: "[b3,d4] c3 [g3,c4] g2", BA: "[g3,c4] c3 [g3,c4] bb2", BB: "[g3,c4] a2 [a3,c4] f2",
  BC: "[a3,c4] a2 [a3,d4] f2", BD: "[a3,c4] bb2 [f3,bb3] f2", BE: "[f3,bb3] bb2 [f3,bb3] f2", BF: "[f3,bb3] ~@3",
  BG: "~@9 [gb2,a3,d4]@4 ~@3", BH: "~@7 [d2,d4]@2 [e2,e4]@4 ~@3",
  BI: "[~ [gb2,gb4]@4 ~@4 [g2,bb3,d4]@4 [g2,bb3,d4]@8 [g2,bb3,d4]@4 g2@4 d2@3, ~@25 [eb4,gb4]@7]/2", // Gb Gm Ebm
  BJ: "~ [g2,bb3,d4]@4 ~@4 [c2,c4,eb4]@3 ~@4", BK: "~ [d2,a3,d4]@3 ~@5 [g2,bb3,d4]@3 ~@4",
})).s("gm_piano").gain(0.35)

// chords · piano · "ピアノ" · soft notes
const piano_soft = note(`<
  ~@12 A B C D ~@12 A B E F ~@8 G@4 H I@3 ~@11 J@2 K L@4 M ~@13 N O@3 ~ P Q R S ~ T@3 U ~ V@5 ~@12 W@5 ~@7 X@4 Y Z AA@3
  ~@11 AB@2 K AC@4 AD ~@5
>`.pickRestart({
  A: "g2 ~ [g3,bb3] ~ f2 ~ [f3,a3] ~", B: "eb2 ~ [eb3,g3] ~ d2 ~ [d3,g3] ~", C: "d2 [d3,gb3] d2 [d3,gb3]",
  D: "g2 [g2,g3,bb3] ~@2", E: "d3 [d3,gb3] d2 [d3,gb3]", F: "g2 ~@3",
  G: "[gb2@7 [c4,d4]@7 ~ d2@7 [c4,d4]@7 gb2@7 ~ [c4,d4]@7 d2@7 [c4,d4]@7 eb2@6]/4", H: "~@2 [bb3,eb4]@7 bb2@7",
  I: "[[bb3,eb4]@7 ~ eb2@7 [bb3,eb4]@7 bb2@7 ~ [g3,bb3,d4]@7 ~@11]/3", J: "[~@5 gb2@7 [c4,d4]@7 d2@7 ~ [c4,d4]@5]/2",
  K: "~@2 gb2@7 [c4,d4]@7", L: "[~ d2@7 [c4,d4]@7 eb2@7 ~ [bb3,eb4]@7 bb2@7 [bb3,eb4]@7 ~ eb2@7 [bb3,eb4]@7 bb2@5]/4",
  M: "~@2 [g3,bb3,d4]@7 ~@7", N: "~@2 d3 ~, ~ [g2,g3,b3]@11 ~@4",
  O: "[~@7 e3@4 ~@10 d3@4 ~@11 d3@4 ~@8, [g2,g3,c4]@11 ~@3 [g2,g3]@11 ~@4 [g2,gb3,a3]@11 ~@8, ~@15 b3@10 ~@23]/3", // C5 G D
  P: "~@3 d3, ~@5 [g2,g3,b3]@11", Q: "~@5 e3@2 ~, ~@3 [g2,g3]@11 ~@2, ~@2 c4@5 ~",
  R: "~@9 gb3@4 ~@3, ~@2 [g2,a3,d4]@11 ~@3", S: "~@2 g3 ~, [g2,b3]@11 ~@5, ~ d4@10 ~@5",
  T: "[~@16 d3@4 ~@10 e3@4 ~@11 d3@3, ~@8 [g2,g3]@11 ~@4 [g2,g3,c4]@11 ~@3 [g2,g3]@11, ~@9 b3@10 ~@19 b3@10]/3", // G C5 G
  U: "~@11 d3@4 ~, ~@4 [g2,gb3]@11 ~, ~@5 a3@10 ~", // Gmaj7
  V: "[~@19 d3@4 ~@11 e3@4 ~@10 gb3@4 ~@11 g3@4 ~@13, ~@12 [g2,g3,b3]@11 ~@3 [g2,g3]@11 ~@4 [g2,c4]@11 ~@4 [g2,b3,d4]@11 ~@13, ~@27 c4@10 ~@5 d4@10 ~@28]/5", // G C5 G
  W: "[~@15 g2@2 ~@2 [g3,bb3]@2 ~@2 f2@2 ~@2 [f3,a3]@2 ~@2 eb2@2 ~@2 [eb3,g3]@2 ~@2 d2@2 ~@2 [d3,g3]@2 ~@2 d3@4 [d3,gb3]@4 d2@4 [d3,gb3]@4 g2@4 ~@13]/5", // Gm F Eb G5 D
  X: "[~@15 gb2@7 ~ [c4,d4]@7 d2@7 [c4,d4]@7 ~ gb2@7 [c4,d4]@7 d2@5]/4", Y: "~@3 [c4,d4]@7 eb2@6",
  Z: "~ [bb3,eb4]@7 ~ bb2@7", AA: "[[bb3,eb4]@7 eb2@7 [bb3,eb4]@7 ~ bb2@7 [bb3,d4]@7 ~@12]/3",
  AB: "[~@4 gb2@7 ~ [c4,d4]@7 d2@7 [c4,d4]@6]/2", // Csus2
  AC: "[d2@7 [c4,d4]@7 ~ eb2@7 [bb3,eb4]@7 bb2@7 ~ [bb3,eb4]@7 eb2@7 [bb3,eb4]@7 ~ bb2@5]/4", AD: "~@2 [bb3,d4]@7 ~@7",
})).s("gm_piano").gain(0.2)

// other · piano · "피아노"
const piano_2 = note(`<
  A@2 B A B A C A D@2 E D ~@3 F D@2 E D G D H D@3 E D ~@3 I J@2 K L M@2 N@2 ~@7 O P Q R S T U V W X Y@2 Z ~@6 AA AB AC@3
  AD AE AF@5 AG AH ~@3 AI@3 ~@2 AJ@3 ~@3 AK@2 ~@3 AL AM@8 AN@5 ~@3 AO@8 AP ~@7 AQ AR AS AT AU AV AW AX AY AZ BA@2 BB ~@6
  BC BD BE@2 BF BG
>`.pickRestart({
  A: "g2 d3 d2 d3", B: "g2 ~ c2 eb3, ~ eb3@2 ~", C: "gb2 [d3,gb3] d2 [d3,gb3]", D: "g2 g3 d2 g3",
  E: "g2 ~ c2 [g3,c4], ~ a3@2 ~", F: "~@2 [g2,d3] ~", G: "g2 ~ c2 g3, ~ g3@2 ~", H: "gb2 a3 d2 [a3,c4]",
  I: "~ [g2,d3]!2 ~", J: "b2 g3 g2 g3", K: "c3 g3 g2 g3", L: "c3 g3 bb2 g3", M: "a2 f3 f2 f3", N: "bb2 f3 f2 f3",
  O: "~@5 [gb2,gb3]@4 ~@7", P: "~@3 [d2,d4]@2 [e2,e4]@4 ~@4 [gb2,gb4]@3", Q: "~@5 [g2,g3]@4 [g2,g3]@7",
  R: "~ [g2,g3]@4 g2@4 d2@4 [g2,g3,bb3]@3, ~@5 [a3,c4]@8 ~@3", S: "~@5 b2@4 g3@4 g2@3", T: "~ g3@4 b2@4 g3@4 g2@3",
  U: "~ g3@4 c3@4 g3@4 g2@3", V: "~ g3@4 c3@4 g3@4 bb2@3", W: "~ g3@4 a2@4 f3@4 f2@3", X: "~ f3@4 a2@4 f3@4 f2@3",
  Y: "~ f3@4 bb2@4 f3@4 f2@3", Z: "~ f3@4 ~@11", AA: "~@5 [gb2,gb3]@2 ~", AB: "~@4 [d2,d4] [e2,e4]@2 ~",
  AC: "[~@2 [gb2,gb4]@4 ~@4 [g2,g3]@4 [g2,g3]@8 [g2,g3]@4 g2@4 d2@4 [g2,g3,bb3]@4 ~@4 g2@3 g3@3, ~@13 [a3,c4]@4 ~@7]/3", // Gb G Gm Am
  AD: "g2@3 g3@3 g2@3 g3@3 ~ g2@3", AE: "g3@3 [g2,g3,b3]@6 ~ b3@4 ~@2, ~@9 [g2,g3]@6 ~",
  AF: "[g2@3 g3@3 g2@3 g3@3 g2@3 g3@3 g2@3 ~ g3@3 [g2,g3,b3]@6 ~ b3@4 ~ g2@3 g3@3 ~ g2@3 g3@3 g2@3 g3@3 g2@3 g3@3 ~ [g2,g3,b3]@6 [g2,g3,b3]@6 g2@3 g3@2, ~@31 [g2,g3]@6 ~@43]/5", // G
  AG: "~ g2@3 ~ g3@3 g2@3 g3@3 g2@2", AH: "~ g3@3 ~ b3@4 ~@2 [g2,g3,b3]@5, ~@2 [g2,g3]@3 ~@3",
  AI: "[~@11 [g2,g3]@2 ~@2 [g2,g3]@2 ~ [e2,a3]@2 ~ [d2,a3]@2 ~ b3@3 b3@2 ~ [g2,b3]@6 ~@12, ~@24 g2@5 ~@19]/3", // G A5 D5 G
  AJ: "[~@15 [g2,b3,d4]@2 ~ [c2,a3,c4]@2 ~ [d2,g3,b3]@2 ~ [d2,gb3,a3]@2 ~@2 d3@3 b3@2 ~ [g2,d3]@3 ~@11, ~@28 g2@5 ~@15]/3", // G F G D G5
  AK: "[~@3 [g2,g3,b3]@2 ~ [g2,g3,b3]@2 ~ [e2,a3,c4]@2 ~ [c2,a3,c4]@2 ~ b3@3 b3@2 ~@2 [g2,b3]@6 ~@4, ~@15 g2@5 ~@12]/2", // G Am F G
  AL: "~@6 [g2,b3]@2 ~ [c2,a3]@2 ~@2 [d2,g3]@2 ~", // G F G5
  AM: "[[d2,gb3]@2 ~ d3@3 b3@2 ~ [g2,d3]@3 ~@3 g2@4 [d3,g3]@4 d2@4 [d3,g3]@4 g2@4 [d3,g3]@4 d2@4 [d3,g3]@4 g2@4 ~@4 c2@4 [eb3,g3]@4 g2@4 [d3,g3]@4 d2@4 [d3,g3]@4 g2@4 ~@4 c2@4 [eb3,g3]@4 g2@4 d3@4 d2@4 d3@4 gb2@4 [d3,gb3]@4 d2@4 [d3,gb3]@4 g2, ~@3 g2@5 ~@43 [eb3,g3]@8 ~@24 [eb3,g3]@8 ~@37]/8", // D G5 Eb G5 Eb D Eb
  AN: "[~@3 d3@4 d2@4 d3@4 g2@4 g3@4 d2@4 g3@4 g2@4 g3@4 d2@4 g3@4 f2@4 ~@4 c2@4 [g3,c4]@4 g2@4 [g3,bb3]@4 d2@4 [g3,bb3]@4 ~, ~@51 [a3,c4]@8 ~@21]/5", // C5 Gm Am
  AO: "[~@3 [g2,d3,g3]@4 [g2,d3,g3]@4 ~@4 b2@4 [g3,b3]@4 g2@4 [g3,b3]@4 b2@4 g3@4 g2@4 [g3,b3]@4 c3@4 [g3,c4]@4 g2@4 [g3,c4]@4 c3@4 [g3,c4]@4 bb2@4 [g3,c4]@4 a2@4 [f3,a3]@4 f2@4 [f3,a3]@4 a2@4 f3@4 f2@4 f3@4 bb2@4 f3@4 f2@4 f3@4 bb2]/8", // G5 G C5 F
  AP: "~@3 f3@4 f2@4 f3@4 ~", AQ: "~ [gb2,gb3] ~@2", AR: "~ [d2,d4] [e2,e4]@2 ~@2 [gb2,gb4]@2",
  AS: "~ [g2,g3] [g2,g3]@2", AT: "[g2,g3] g2 d2 [g2,g3,bb3], ~ [a3,c4]@2 ~", AU: "~ b2 [g3,b3] g2",
  AV: "[g3,b3] b2 g3 g2", AW: "[g3,b3] c3 [g3,c4] g2", AX: "[g3,c4] c3 [g3,c4] bb2", AY: "[g3,c4] a2 [f3,a3] f2",
  AZ: "[f3,a3] a2 f3 f2", BA: "f3 bb2 f3 f2", BB: "f3 ~@3", BC: "~@9 [gb2,gb3]@4 ~@3",
  BD: "~@7 [d2,d4]@2 [e2,e4]@4 ~@3", // D E
  BE: "[~ [gb2,gb4]@4 ~@4 [g2,g3]@4 [g2,g3]@8 [g2,g3]@4 g2@4 d2@3, ~@25 [a3,c4]@7]/2", // Gb G Am
  BF: "~ [g2,g3,bb3]@4 ~@4 [c3,g3,a3]@3 ~@4", BG: "~ [d3,gb3]@3 ~@5 [d3,g3]@3 ~@4",
})).s("gm_piano").gain(0.35)

// … 21 more lines