Strudelify

Majora's Mask

Jordan Bender

KeyD minorTempo100 bpm
0:00/0:00
// Majora's Mask — Jordan Bender
// 100 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 12, 5/4 at bar 13, 4/4 at bar 14, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/699221; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 174 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// 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 · timpani
const timpani = note(`<
  ~@21 A@3 ~@27 B@2 C@12 D@8 ~ E@2 F G H I J H K L ~@3 M N O@2 P Q R S T@23 ~@40 U V@2 W@6 X@2 ~@2 Y Z@2
>`.pickRestart({
  A: "[~@15 d2@29 ~@4]/3", B: "[~@7 d2@3 d2@3 d2@3]/2", C: "[d2@6 d2@6 d2@6 d2@6 d2@6 d2@6 d2@6 d2@3 a2@2 a2]/3",
  D: "[d2@12 d2!11 d2@233]/8", E: "[~@6 d2@3 a2@3 d2@3 a2@3 d2@3 a2@3 d2@3 a2@3 d2@2]/2",
  F: "~ a2@3 d2@3 a2@3 d2@3 a2@3", G: "d2@3 a2@3 d2@2 d2!4 a2@2 a2!2", H: "a2!2 d2@2 d2!4 a2@2 a2!4 d2@2",
  I: "d2!4 a2@2 a2!4 d2@2 d2!4", J: "a2@2 a2!4 d2@2 d2!4 a2@2 a2!2", K: "a2 d2 a2 d2 a2 d2 a2 d2",
  L: "a2@4 d2@4 a2@4 d2@5 ~@15", M: "~@19 d2@5 g2@5 ~@3", N: "~@27 d2@5", O: "[~@25 d2@5 a2@5 ~@25 d2@4]/2",
  P: "~ a2@5 ~@22 a2 ~ a2!2", Q: "a2!2 ~ a2 d2@5 ~@5 d2@5 ~@5 d2!8", R: "d2!11 d2@21", S: "c3!2 ~@2",
  T: "c3@2 c3 g3 ~@4", U: "~@31 g2", V: "[g2!3 ~ g2!12 a2@25 d3@17 d3@6]/2",
  W: "[~@2 g2@17 g2@8 c3@25 f2@25 bb2@17 bb2@8 g2@17 c3@8 g2@25 a2@25 d3@15]/6", X: "[~@2 d3@8 g2@17 g2@8 c3@25 ~@4]/2",
  Y: "~@7 e3!9 ~ e3!15", Z: "[e3!7 e3@34 ~@23]/2",
})).s("gm_timpani").gain(0.4)

// other · timpani · soft notes
const timpani_soft = note("<~@132 A@6 B@3 C@4 ~@13 D ~@15>".pickRestart({
  A: "[~@4 a2@13 a2@22 a2@13 a2@22 ~ a2@13 a2@22 a2@13 ~ g2@22 a2@13 a2@22 a2@11]/6",
  B: "[~@3 a2@22 a2@13 a2@22 f2@36]/3", C: "[g2@13 g2@22 ~ f2@13 f2@22 f2@13 f2@22 ~ e2@13 e2@4 ~@4]/4",
  D: "~@23 g2!8 ~",
})).s("gm_timpani").gain(0.2)

// other · glockenspiel
const glockenspiel = note(`<
  A@5 B@5 ~@2 C@8 ~@33 D@2 E F@2 G H@2 I J@2 K L ~@2 D@2 E F@2 G H@2 I J@2 M N@2 M O ~@18 P Q P R S T S U ~@4 V W X Y Z
  W AA AB ~@9 AC@2 AD AE AF AG@3 AH AI AJ AK AL AM@3 ~@12 AN AO AP@5 AQ AR@7
>`.pickRestart({
  A: "[~@29 b7@131]/5", B: "[~@19 b7@125 ~@16]/5", C: "[~@7 b7@81 b7@150 ~@18]/8",
  D: "[~@6 d6@2 d7 db7 b6 a6 b6@3 g6@3 a6@2 e6 a6 g6 e6 g6@2 a6 gb6@3 d6@2]/2",
  E: "d7 db7 b6 a6 b6@3 g6@3 a6 g6 e6 g6@2 gb6",
  F: "[d6@6 d6@2 d7 db7 b6 a6 b6@3 g6@3 a6@2 e6 a6 g6 e6 g6@2 a6 gb6@3 d6@2]/2",
  G: "d7 db7 b6 a6 b6@3 g6@3 a6 g6 e6 gb6 g6 e6",
  H: "[d6@6 d7@2 d7!2 db7 d7 e7@3 a6@3 g7 gb7 g7 gb7@2 d7 e7@3 a6@3 d7@2]/2",
  I: "d7!2 db7 d7 e7@2 db7 a6@3 g7 gb7 g7 gb7@2 db7",
  J: "[d7@6 d7@2 d7!2 db7 d7 e7@3 a6@3 g7 gb7 g7 gb7@2 d7 e7@2 db7 a6@3 d7@2]/2",
  K: "d7!2 db7 d7 e7@3 a6@3 g7 gb7 g7 gb7@2 db7", L: "d7@3 ~@5", M: "d7!2 db7 d7 e7@3 a6@3 g7 gb7 g7 gb7@2 d7",
  N: "[e7@2 db7 a6@3 d7@2 d7!2 db7 d7 e7@3 a6@3 g7 gb7 g7 gb7@2 d7 e7@2 db7 a6@3 d7@2]/2",
  O: "e7@2 db7 a6@3 [d6,d7]@5 ~@5", P: "a7@2 c8@2 b7@3 g7", Q: "a7 c8 b7 a7 g7@2 e7@2", R: "a7 c8 b7 g7 a7@4",
  S: "a6@2 c7@2 b6@3 g6", T: "a6 c7 b6 a6 g6@2 e6@2", U: "a6 c7 b6 g6 a6@4", V: "e7@2 e7@2 d7@3 b6",
  W: "e7@2 d7 c7 b6@4", X: "e7@2 e7@2 d7@3 c7", Y: "b6!2 a6@2", Z: "e7!2 d7@2", AA: "e7 f7 e7 d7 c7@2 b6@2", AB: "a6",
  AC: "[~@20 bb6@2 c7@2 d7@2 ~ e7@2 f7@2 g7@2 ab7@2 ~ a7@4 c7@4 f7@4 ~ a7@4 ~@11]/2",
  AD: "~@7 a7@4 ~ bb6@4 d7@4 a7@4 ~@8", AE: "~@11 a7@4 c7@4 ~ f7@4 a7@4 ~@4", AF: "~@14 a7@4 ~ bb6@4 d7@4 ~ g7@4",
  AG: "[~@18 a7@4 bb6@4 ~ d7@4 a7@4 ~@18 a7@4 ~ bb6@4 d7@4 ~ a7@4 ~@18 a7@4 db7@3]/3", AH: "~ d7@2 a7@2 ~@9 f7@2",
  AI: "~ a6@4 d7@4 ~ f7@4 ~@18", AJ: "g7@4 b6@4 ~ d7@4 g7@4 ~@15", AK: "~@4 f7@4 b6@4 d7@4 ~ f7@4 ~@11",
  AL: "~@7 f7@4 ~ g6@4 bb6@4 f7@4 ~@8",
  AM: "[~@11 e7@4 g6@4 ~ bb6@4 e7@7 bb6@2 c7@2 d7@2 e7@2 ~ f7@2 g7@2 ab7@2 c8@50]/3", AN: "~@16 [f6,a6]@8 ~ [f6,a6]@7",
  AO: "~ [f6,a6]@8 [a6,d7]@8 ~ [a6,d7]@8 [a6,d7]@6", // F D5
  AP: "[~@2 [e6,g6]@8 ~ [e6,g6]@8 [e6,g6]@8 [e6,c7]@8 ~ [e6,g6]@16 [d6,f6]@8 ~ [d6,f6]@8 [d6,f6]@8 [f6,bb6]@8 ~ [f6,bb6]@8 [f6,bb6]@8 [c6,e6]@8 ~ [c6,d6]@8 [c6,a6]@8 [c6,e6]@25 [f6,a6]@8]/5", // Em C Em Dm Bb5 C Csus2 F …
  AQ: "~ [f6,a6]@8 [f6,a6]@8 [a6,d7]@8 ~ [a6,d7]@6", // F D5
  AR: "[~@2 [a6,d7]@8 [e6,g6]@8 ~ [e6,g6]@8 [e6,g6]@8 [e6,c7]@8 ~ [e6,g6]@16 [d6,f6]@8 ~ [d6,g6]@8 [d6,a6]@8 [f6,bb6]@8 ~ [f6,c7]@8 [f6,d7]@8 [f6,a6]@8 ~ [f6,b6]@8 [f6,d7]@8 e7@67 ~@22]/7", // D5 Em C Em Dm G5 D5 Bb5 …
})).s("gm_glockenspiel").gain(0.3)

// chords · vibraphone
const vibraphone = note(`<
  ~@3 A B@7 C@2 D@2 E@6 F ~ G@2 H@5 I@5 J@5 K@5 L@8 M@2 N O@2 P Q@2 R S@2 T U ~@8 V@2 R W@2 X Y@2 X Z AA AB AC@2 AD AE
  AF AG AH@2 ~@2 AI AJ AI AK AI AJ AI AJ AI AK AI AJ AI AK AI AJ AI AK AI AJ AI AK AI AJ AI AK AI AK ~@2 AI AK AL AM
  AN@2 AO@6 AP@3 AQ@6 ~@12 AR AS AT@5 AU AV@7
>`.pickRestart({
  A: "~@10 b4@3 [ab4,e5]@3", // Dbm
  B: "[~ [f4,bb4,d5]@50 ~@12 b4@6 [ab4,e5]@6 ~ [f4,bb4,d5]@12 [db4,gb4,bb4]@12 ~ [e4,a4,db5]@12 [c4,f4,a4]@12 ~ [a3,d4,gb4]@25 [a3,c4,e4]@25 [a3,d4,gb4]@25 [a3,c4,e4]@23]/7", // Bb Dbm Bb Gb A F D Am …
  C: "[~@2 [a3,d4,gb4]@37 ~@19 b4@6]/2", D: "[[ab4,e5]@3 [f4,bb4,d5]@25 ~@4]/2",
  E: "[~@5 b4@6 [ab4,e5]@6 [f4,bb4,d5]@12 ~ [db4,gb4,bb4]@12 [e4,a4,db5]@12 ~ [c4,f4,a4]@12 [eb4,ab4,c5]@12 ~ [bb4,eb5,g5]@12 [g4,b4,d5]@25 [f4,a4,d5]@25 [e4,ab4,d5]@25 [d4,gb4]@25]/6", // Dbm Bb Gb A F Ab Eb G …
  F: "[c4,e4]@31 ~", G: "[~@3 [f4,db5]@5]/2", H: "[[e4,c5]@2 [c4,ab4] [f4,b4] [e4,bb4]@8 [f4,db5]@4]/5",
  I: "[[e4,c5]@2 [c4,ab4] [b4,f5] [bb4,e5]@8 [f4,db5]@4]/5", // C Fm Bdim Bbdim Db
  J: "[[e4,c5]@2 [c4,ab4] [f4,b4] [e4,bb4]@8 [c4,gb4]@2 [b3,f4] [d4,ab4]]/5", // C Fm Fdim Edim Cdim Bdim Ddim
  K: "[[eb4,a4]@2 [d4,ab4] [f4,b4] [e4,bb4]@8 [eb4,a4]@2 [d4,ab4]@2]/5", // Ebdim Ddim Fdim Edim Ebdim Ddim
  L: "[[b3,f4]@20 a4@5 ab4@5 [f4,b4]@20 [d4,a4,d5]@5 [d4,d5]@3 [db4,db5]@3 [b3,b4]@3]/8", // Bdim Fdim D5 D Db B
  M: "[[db4,db5]@6 d4 ~ d5 db5 b4 a4 b4@3 g4@3 a4 ~ e4 a4 g4 e4 g4@2 a4 gb4@3 d4 ~]/2", // Db
  N: "d5 db5 b4 a4 b4@3 g4@3 a4 g4 e4 g4 ~ gb4",
  O: "[d4@6 d4 ~ d5 db5 b4 a4 b4@3 g4@3 a4 ~ e4 a4 g4 e4 g4@2 a4 gb4@3 d4@2]/2",
  P: "d5 db5 b4 a4 b4@3 g4@3 a4 g4 e4 gb4 g4 e4",
  Q: "[d4@6 d5 ~ d5!2 db5 d5 e5@3 a4@3 g5 gb5 g5 gb5 ~ d5 e5@3 a4@3 d5 ~]/2",
  R: "d5!2 db5 d5 e5@2 db5 a4@3 g5 gb5 g5 gb5 ~ db5",
  S: "[d5@6 d5 ~ d5!2 db5 d5 e5@3 a4@3 g5 gb5 g5 gb5 ~ d5 e5@2 db5 a4@3 d5 ~]/2",
  T: "d5!2 db5 d5 e5@3 a4@3 g5 gb5 g5 gb5 ~ db5", U: "d5@3 ~@5",
  V: "[~@6 d5 ~ d5!2 db5 d5 e5@3 a4@3 g5 gb5 g5 gb5 ~ d5 e5@3 a4@3 d5 ~]/2",
  W: "[d5@6 d5@2 d5!2 db5 d5 e5@3 a4@3 g5 gb5 g5 gb5@2 d5 e5@2 db5 a4@3 d5@2]/2",
  X: "d5!2 db5 d5 e5@3 a4@3 g5 gb5 g5 gb5@2 d5",
  Y: "[e5@2 db5 a4@3 d5@2 d5!2 db5 d5 e5@3 a4@3 g5 gb5 g5 gb5@2 d5 e5@2 db5 a4@3 d5@2]/2",
  Z: "e5@4 db5@2 a4@6 d4@5 ~@5 d4@2 ~@5 d4@2 ~", AA: "~@2 eb4@2 ~ c4@2 ~@8 d4@2 ~@8 d4@2 ~@5",
  AB: "d4@2 ~@3 eb4@2 ~ f4@2 ~@8 d4@2 ~@8 d4@2 ~@2",
  AC: "[~@3 d4@2 ~@3 eb4@2 ~ c4@2 ~@8 d4@2 ~@8 d4@2 ~@5 d4@2 ~@3 eb4@2 ~ f4@2 ~@8 g4@2 ~@6]/2",
  AD: "~@2 g4@2 ~@5 g4@2 ~@3 ab4@2 ~ f4@2 ~@8 g4@2 ~@3", AE: "~@5 g4@2 ~@5 g4@2 ~@3 ab4@2 ~ bb4@2 ~@8 a4@2",
  AF: "~@8 a4@2 ~@5 a4@2 ~@3 bb4@2 ~ g4@2 ~@7", AG: "~ a4@2 ~@8 a4@2 ~@5 a4@2 ~@3 bb4@2 ~ c5@2 ~@4",
  AH: "[~@9 d5@5 ~@5 d5@5 d4@40]/2", AI: "[a4,e5]", AJ: "[bb4,f5] [g4,d5]", AK: "[bb4,f5] [a4,e5]", AL: "[f4,c5]",
  AM: "[gb4,db5] [f4,c5]", AN: "[[f4,f5]@50 ~@2 bb3@2 c4@2 d4@2 ~ e4@2 f4@2 g4]/2",
  AO: "[~ ab4@2 ~ [c4,f4,a4]@13 [c4,f4,a4]@22 [bb3,d4,a4]@13 [bb3,d4,a4]@22 ~ [c4,f4,a4]@13 [c4,f4,a4]@22 [bb3,d4,a4]@13 ~ [bb3,d4,g4]@22 [bb3,d4,a4]@13 [bb3,d4,a4]@22 [bb3,d4,a4]@11]/6", // F Bbmaj7 F Bbmaj7 Gm Bbmaj7
  AP: "[~@3 [bb3,d4,a4]@22 [db4,e4,a4]@13 [db4,e4,a4]@22 [a3,d4,f4]@36]/3", // Bbmaj7 A Dm
  AQ: "[[b3,d4,g4]@13 [b3,d4,g4]@22 ~ [b3,d4,f4]@13 [g3,b3,f4]@22 [g3,bb3,f4]@13 [g3,bb3,f4]@22 ~ [g3,bb3,e4]@13 [g3,bb3,e4]@7 bb3@2 c4@2 d4@2 e4@2 ~ f4@2 g4@2 ab4@2 [c4,f4,a4]@50]/6", // G Bdim G7 Gm7 Edim F
  AR: "~@16 [f4,a4]@8 ~ [f4,a4]@7", AS: "~ [f4,a4]@8 [a4,d5]@8 ~ [a4,d5]@8 [a4,d5]@6",
  AT: "[~@2 [e4,g4]@8 ~ [e4,g4]@8 [e4,g4]@8 [e4,c5]@8 ~ [e4,g4]@16 [d4,f4]@8 ~ [d4,f4]@8 [d4,f4]@8 [f4,bb4]@8 ~ [f4,bb4]@8 [f4,bb4]@8 [c4,e4]@8 ~ [c4,d4]@8 [c4,a4]@8 [c4,e4]@25 [f4,a4]@8]/5", // Em C Em Dm Bb5 C Csus2 F …
  AU: "~ [f4,a4]@8 [f4,a4]@8 [a4,d5]@8 ~ [a4,d5]@6", // F D5
  AV: "[~@2 [a4,d5]@8 [e4,g4]@8 ~ [e4,g4]@8 [e4,g4]@8 [e4,c5]@8 ~ [e4,g4]@16 [d4,f4]@8 ~ [d4,g4]@8 [d4,a4]@8 [f4,bb4]@8 ~ [f4,c5]@8 [f4,d5]@8 [f4,a4]@8 ~ [f4,b4]@8 [f4,d5]@8 [e4,e5]@67 ~@22]/7", // D5 Em C Em Dm G5 D5 Bb5 …
})).s("gm_vibraphone").gain(0.3)

// chords · tubular bells
const tubular_bells = note(`<
  ~@59 A@3 B@3 C ~@8 D E F G E F G E F H ~@3 I@4 J K@2 ~@8 L M L N L M L N ~@4 O P Q R S P T U ~@8 V@2 W@6 X@3 Y@4 Z@2
  ~@12 AA AB AC@5 AD AE@7
>`.pickRestart({
  A: "[~@2 d5@2 db5@2 b4@2 db5@2 d5@2 db5@2 b4 db5]/3", B: "[d5@2 d5@2 db5@2 b4@2 db5@2 d5@2 db5@2 b4 db5]/3",
  C: "d5@3 ~@5", D: "~@3 [d4,f4] [a4,c5] [d5,f5] [d4,f4] [a4,c5]",
  E: "[d5,f5] [d4,f4] [a4,c5] [d5,f5] [d4,f4] [a4,c5] [d5,f5] [d4,f4]", // Dm Am Dm Am Dm
  F: "[a4,c5] [d5,f5] [d4,f4] [a4,c5] [d5,f5] [d4,f4] [a4,c5] [d5,f5]", // Am Dm Am Dm Am Dm
  G: "[d4,f4] [a4,c5] [d5,f5] [d4,f4] [a4,c5] [d5,f5] [d4,f4] [a4,c5]", H: "[d4,f4] [a4,c5] [d5,f5] d4@5",
  I: "[~@19 d4@5 g4@20 ~@15 d4@20 ~@10 d4@5 a4@20 ~@10 d4@4]/4", J: "~ a4@20 ~@11", K: "[~@9 d5@5 ~@5 d5@5 d4@40]/2",
  L: "a4@2 c5@2 b4@3 g4", M: "a4 c5 b4 a4 g4@2 e4@2", N: "a4 c5 b4 g4 a4@4", O: "e5@2 e5@2 d5@3 b4",
  P: "e5@2 d5 c5 b4@4", Q: "e5@2 e5@2 d5@3 c5", R: "b4!2 a4@2", S: "e5!2 d5@2", T: "e5 f5 e5 d5 c5@2 b4@2", U: "a4",
  V: "[[f4,f5]@25 ~@7]/2", W: "[~@4 a4@13 a4@22 a4@13 a4@22 ~ a4@13 a4@22 a4@13 ~ g4@22 a4@13 a4@22 a4@11]/6",
  X: "[~@3 a4@22 a4@13 a4@22 f4@36]/3", Y: "[g4@13 g4@22 ~ f4@13 f4@22 f4@13 f4@22 ~ e4@13 e4@4 ~@4]/4",
  Z: "[~@7 c5@25]/2", AA: "~@16 [f4,a4]@8 ~ [f4,a4]@7", AB: "~ [f4,a4]@8 [a4,d5]@8 ~ [a4,d5]@8 [a4,d5]@6",
  AC: "[~@2 [e4,g4]@8 ~ [e4,g4]@8 [e4,g4]@8 [e4,c5]@8 ~ [e4,g4]@16 [d4,f4]@8 ~ [d4,f4]@8 [d4,f4]@8 [f4,bb4]@8 ~ [f4,bb4]@8 [f4,bb4]@8 [c4,e4]@8 ~ [c4,d4]@8 [c4,a4]@8 [c4,e4]@25 [f4,a4]@8]/5", // Em C Em Dm Bb5 C Csus2 F …
  AD: "~ [f4,a4]@8 [f4,a4]@8 [a4,d5]@8 ~ [a4,d5]@6", // F D5
  AE: "[~@2 [a4,d5]@8 [e4,g4]@8 ~ [e4,g4]@8 [e4,g4]@8 [e4,c5]@8 ~ [e4,g4]@16 [d4,f4]@8 ~ [d4,g4]@8 [d4,a4]@8 [f4,bb4]@8 ~ [f4,c5]@8 [f4,d5]@8 [f4,a4]@8 ~ [f4,b4]@8 [f4,d5]@8 e5@67 ~@22]/7", // D5 Em C Em Dm G5 D5 Bb5 …
})).s("gm_tubular_bells").gain(0.3)

// chords · tubular bells · soft notes
const tubular_bells_soft = note("<A@5 B@5 ~@2 C@8 ~@31 D@2 E@3 F@3 G ~@114>".pickRestart({
  A: "[~@29 b4@131]/5", B: "[~@19 b4@125 ~@16]/5", C: "[~@7 b4@81 b4@150 ~@18]/8", D: "[~@7 d5@3 db5@3 b4@3]/2",
  E: "[db5@2 d5@2 db5@2 b4@2 db5@2 d5@2 db5@2 b4 db5]/3", F: "[d5@2 d5@2 db5@2 b4@2 db5@2 d5@2 db5@2 b4 db5]/3",
  G: "d5@3 ~@5",
})).s("gm_tubular_bells").gain(0.2)

// chords · marimba
const marimba = note(`<
  ~@21 A@2 B@2 C@2 D@3 E@2 F@3 C@2 G@3 H@2 I@3 J K@6 L M N O P N Q P N O R S T U@2 V@9 W@8 X Y Z@3 AA AB AC@2 AD ~@8 AE
  AF AE AG AH AI AH AJ ~@4 AK AL AM AN AO AP AQ AR ~@9 AS@3 AT@5 AU@2 AV@3 AW@3 ~@12 AX AY@3 AZ@3 BA@3 BB@3 BC@2
>`.pickRestart({
  A: "[~@2 e5@2 ~ e5@2 ~ e5@2 ~ e5@2 d5@2 ~ bb4@2 ~ c5@2 ~ ab4@2 ~ bb4@2 ab4@2 ~ e4@8 ~@26, ~@4 c5@2 ~ c5@2 ~ c5@2 ~@3 c5@2 ~ ab4@2 ~ bb4@2 ~ gb4@2 ~@3 gb4@2 ~@33]/2",
  B: "[~@3 db4@5]/2", C: "[c4@20 ab3@10 b3@10 bb3!3 ~ bb3!4 ~ bb3!4 ~ bb3!4 ~ bb3!4 ~]/2",
  D: "[bb3!5 ~ bb3!4 ~ bb3!3 bb3@41 ~ db4@40]/3", E: "[c4@20 ab3@10 f4@10 e4!3 ~ e4!4 ~ e4!4 ~ e4!4 ~ e4!4 ~]/2",
  F: "[e4!5 ~ e4!4 ~ e4!3 e4@41 ~ db4@40]/3", G: "[bb3!5 ~ bb3!4 ~ bb3!3 bb3@41 ~ gb3@20 f3@10 ab3@10]/3",
  H: "[a3@20 ab3@10 b3@10 bb3!3 ~ bb3!4 ~ bb3!4 ~ bb3!4 ~ bb3!4 ~]/2",
  I: "[bb3!5 ~ bb3!4 ~ bb3!3 bb3@41 ~ a3@20 ab3@20]/3", J: "f3!3 ~ f3!4 ~ f3!4 ~ f3!4 ~ f3!4 ~ f3!5 ~ f3!2",
  K: "[f3!2 ~ f3!3 f3@41 ~ a3@20 ab3@20 b3@80 ~@20 d3@2 gb3@2]/6",
  L: "a3 d4 a3 gb3 g3 a3 g3 db4 a3 g3 b2 g3 b3 d4 b3 g3", M: "db4 a3 db4 g3 a3 db4 d3 gb3 a3 d4 a3 gb3 g3 a3 g3 db4",
  N: "a3 g3 b2 g3 b3 d4 b3 g3 db4 a3 db4 g3 a3 db4 d3 gb3", O: "a3 d4 a3 gb3 g3 a3 b3 db4 a3 g3 b2 g3 b3 a3 b3 db4",
  P: "d4@2 db4 d4@2 a3 d3 gb3 a3 d4 a3 gb3 g3 a3 g3 db4", Q: "a3 d4 a3 gb3 g3 a3 db4!2 a3 g3 db4 b3 db4 a3 b3 db4",
  R: "d4@2 db4 d4@2 a3 d3 gb3 a3 d4 a3 gb3 g3 a3 b3 db4", S: "a3 g3 b2 a3 db4 b3 db4 a3 db3 g3 a3 d4@3 d3 gb3",
  T: "a3 d4 a3 gb3 g3 a3 db4!2 a3 g3 b2 g3 b3 a3 b3 db4",
  U: "[d4@4 a3@2 d4@6 [a2,d3]!11 [a2,d3]@12 ~ [db3,gb3]!11 [db3,gb3]@12 ~ [b2,e3]!4]/2", // D5 Gb5 E5
  V: "[[b2,e3]!7 [b2,e3]@12 ~ [d3,g3]!11 [d3,g3]@12 ~ [a2,d3]!11 [a2,d3]@12 ~ [db3,gb3]!11 [db3,gb3]@12 ~ [b2,e3]!4]/3", // E5 G5 D5 Gb5 E5
  W: "[[b2,e3]!7 [b2,e3]@12 ~ [d3,g3]!11 [d3,g3]@12 ~ [a2,d3]@24 [db3,gb3]@24 [b2,e3]@24 [d3,g3]@24 [a2,d3]@24 [db3,gb3]@24 [b2,e3]@24 [d3,g3]@24 d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~]/8", // E5 G5 D5 Gb5 E5 G5 D5 Gb5 …
  X: "d3@2 eb3@2 ~ d3@2 db3@2 ~ c3@2 db3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2",
  Y: "eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ f3@2 gb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2",
  Z: "[~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 db3@2 ~ c3@2 db3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ d3@2 eb3@2 ~ f3@2 gb3@2 ~ g3@2 ab3@2 ~ g3@2 ab3@2 ~ g3@2 ab3@2 ~ g3@2 ab3@2 ~ g3@2 ab3@2 ~ g3@2 gb3@2 ~ f3@2 gb3@2 ~ g3@2 ab3@2 ~]/3",
  AA: "g3@2 ab3@2 ~ g3@2 ab3@2 ~ g3@2 ab3@2 ~ g3@2 ab3@2 ~ g3@2 ab3@2 ~ bb3@2 bb3@2 ~ a3@2",
  AB: "bb3@2 ~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ a3@2 ab3@2 ~ g3@2 ab3@2",
  AC: "[~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ a3@2 bb3@2 ~ c4@2 db4@2 ~ d3@5 ~@5 d3@5 ~@5 d3!8]/2",
  AD: "d3!11 d3@21", AE: "a4@2 c5@2 b4@3 g4", AF: "a4@4 c5@4 b4 c5 b4@2 a4@4 g4@8 e4@8",
  AG: "a4@4 c5@4 b4 c5 b4@2 g4@4 a4@16", AH: "a3@2 c4@2 b3@3 g3", AI: "a3@4 c4@4 b3 c4 b3@2 a3@4 g3@8 e3@8",
  AJ: "a3@4 c4@4 b3 c4 b3@2 g3@4 a3@16", AK: "[a4,e5]@2 [a4,e5]@2 [g4,d5]@3 [e4,b4]",
  AL: "[a4,e5]@2 [g4,d5] [f4,c5] [e4,b4]@4", AM: "[g4,e5]@2 [g4,e5]@2 [f4,d5]@3 [e4,c5]", AN: "[d4,b4]!2 [c4,a4]@2",
  AO: "[g4,e5]!2 [f4,d5]@2", AP: "[g4,e5]@2 [f4,d5] [e4,c5] [d4,b4]@4",
  AQ: "[g4,e5] [a4,f5] [g4,e5] [f4,d5] [e4,c5]@2 [d4,b4]@2", AR: "[c4,a4]",
  AS: "[~@20 bb2@2 c3@2 d3@2 ~ e3@2 f3@2 g3@2 ab3@2 ~ f3@13 c3@4 f3@18 bb2@9 f3@16]/3",
  AT: "[~@2 f3@9 f3@26 f3@9 bb2@9 f3@18 f3@9 eb3@9 eb3@4 eb3@13 eb3@9 e3@9 e3@18 e3@9 a2@7]/5",
  AU: "[~@2 g3@18 g3@8 d3@9 d3@4 ~ d3@13 c3@9]/2", AV: "[b2@9 d3@18 b2@9 g3@8 d3@18 d3@9 c3@25]/3",
  AW: "[~@2 g3@9 c3@9 g3@4 c3@22 [c3,f3]@50]/3", AX: "~@16 bb2@4 f3@4 ~ bb3@4 f3@3",
  AY: "[~ d4@4 bb3@4 bb2@4 f3@4 ~ bb3@4 f3@4 d4@4 bb3@4 a2@4 e3@4 ~ g3@4 e3@4 c4@4 g3@4 a2@4 e3@4 ~ g3@4 e3@4 c4@8 g3@4 d3@4 ~ f3@3]/3",
  AZ: "[~ d3@4 bb3@4 f3@4 g3@4 d3@4 ~ f3@4 d3@4 bb3@4 f3@4 f3@4 c3@4 ~ e3@4 c3@4 a3@4 e3@4 f3@4 c3@4 ~ e3@4 c3@4 a3@8 bb2@4 f3@4]/3",
  BA: "[~ bb3@4 f3@4 d4@4 bb3@4 bb2@4 f3@4 ~ bb3@4 f3@4 d4@4 bb3@4 a2@4 e3@4 ~ g3@4 e3@4 c4@4 g3@4 a2@4 e3@4 ~ g3@4 e3@4 c4@8 bb2@4]/3",
  BB: "[f3@4 ~ bb3@4 f3@4 d4@4 bb3@4 bb2@4 f3@4 ~ bb3@4 f3@4 d4@4 bb3@4 b2@4 f3@4 ~ a3@4 f3@4 d4@4 a3@4 e4!9 ~ e4!15]/3",
  BC: "[e4!7 e4@34 ~@23]/2",
})).s("gm_marimba").gain(0.3)

// chords · marimba · soft notes
const marimba_soft = note("<~@9 A@4 ~@6 B C@2 ~@152>".pickRestart({
  A: "[~@17 gb5@2 ~ gb5@2 d5@2 ~ d5@2 ~ d5@2 ~ d5@2 ~ d5@2 gb5@2 ~ gb5@2 ~ e5@2 ~ e5@2 c5@2 ~ c5@2 ~ c5@2 ~ c5@2 ~ c5@2 e5@2 ~ e5@2 ~ gb5@2 ~ gb5@2 d5@2 ~ d5@2 ~ d5@2 ~ d5@2 ~ d5@2 gb5@2 ~ gb5@2 ~ gb5@2 ~ gb5@2 d5@2 ~ d5@2 gb5@2 ~@24, ~@16 d5@2 ~ d5@2 ~@3 gb5@2 ~ gb5@2 ~ gb5@2 ~ gb5@2 ~@3 d5@2 ~ c5@2 ~ c5@2 ~@3 e5@2 ~ e5@2 ~ e5@2 ~ e5@2 ~@3 c5@2 ~ d5@2 ~ d5@2 ~@3 gb5@2 ~ gb5@2 ~ gb5@2 ~ gb5@2 ~@3 d5@2 ~ d5@2 ~ d5@2 ~@3 gb5@2 ~@27]/4",
  B: "~@14 e5@2 ab5@2 ~ ab5@2 ~ ab5@2 ~ ab5@2 e5@2 ~ e5@2, ~@18 e5@2 ~ e5@2 ~ e5@2 ~@3 ab5@2 ~",
  C: "[~ e5@2 ~ e5@2 ~ d5@2 gb5@2 ~ gb5@2 ~ gb5@2 ~ gb5@2 d5@2 ~ d5@2 ~ d5@2 ~ d5@2 ~ c5@2 ~@30, ab5@2 ~ ab5@2 ~ ab5@2 ~@3 d5@2 ~ d5@2 ~ d5@2 ~@3 gb5@2 ~ gb5@2 ~ gb5@2 ~ gb5@2 ~@31]/2",
})).s("gm_marimba").gain(0.2)

// chords · piano
const piano = note(`<
  A@5 B@5 ~@2 C@8 ~ D@4 E@5 F@5 G@5 H@5 I@8 J@2 K L@2 M N@2 O P@2 Q R@7 S@6 T@6 U V W@3 X Y Z@3 ~@2 AA AB AA AC AD AE AF
  AG AF AH AI AJ AI AK AA AB AA AC AL AM AN AO AP AQ AR AS AA AC ~@2 AD AE AT AU AV@2 AW@2 AX@7 AY@6 AZ@7 BA@6 BB@6 BC@8
>`.pickRestart({
  A: "[~@29 b5@131]/5", B: "[~@19 b5@125 ~@16]/5", C: "[~@7 b5@81 b5@150 ~@18]/8", D: "[~@15 d2@29 [f3,db4]@20]/4",
  E: "[[e3,c4]@2 [c3,ab3] [f3,b3] [e3,bb3]@8 [f3,db4]@4]/5", // C Fm Fdim Edim Db
  F: "[[e3,c4]@2 [c3,ab3] [b3,f4] [bb3,e4]@8 [f3,db4,f4,db5]@4]/5", // C Fm Bdim Bbdim Db
  G: "[[e3,c4,e4,c5]@2 [c3,ab3,c4,ab4] [f3,b3,f4,b4] [e3,bb3,e4,bb4]@8 [c3,gb3,c4,gb4]@2 [b2,f3,b3,f4] [d3,ab3,d4,ab4]]/5", // C Fm Fdim Edim Cdim Bdim Ddim
  H: "[[eb3,a3,eb4,a4]@2 [d3,ab3,d4,ab4] [f3,b3,f4,b4] [e3,bb3,e4,bb4]@8 [a2,eb4,a4]@2 [ab2,d4,ab4]@2]/5", // Ebdim Ddim Fdim Edim Adim Abdim
  I: "[[f2,b3,f4]@40 [a2,a4]@10 [ab2,ab4]@10 [b2,f4,b4]@40 ~ [d3,d5]@9 d3 gb3 a3 d4 a3 gb3 g3 a3 g3 db4 a3 g3 b2 g3 b3 d4 b3 g3, ~@50 [d2,d4]@5 [d1,a1,d2]@3 [db1,g1,db2]@3 [b0,gb1,b1]@3, ~@201 [a2,a4]@19 ~@36]/8", // Fdim A Ab Bdim D D5 Dbdim B5 …
  J: "[db4 a3 db4 g3 a3 db4 [d3,d5] gb3 [a3,d6] [d4,db6] [a3,b5] [gb3,a5] g3 a3 g3 db4 a3 g3 [b2,a5] g3 [b3,e5] [d4,a5] [b3,g5] [g3,e5] db4 a3 [db4,a5] g3 a3 db4 [d3,d5] gb3, [db1,g1,db2]@6 ~@6 b5@3 g5@3 ~@6 g5@2 ~ gb5@3 ~@2]/2", // D D5 Dmaj7 Asus2 Gbm B7 E5 D5 …
  K: "[a3,d6] [d4,db6] [a3,b5] [gb3,a5] g3 a3 b3 db4 a3 g3 [b2,a5] [g3,g5] [b3,e5] [a3,g5] b3 [db4,gb5], ~@4 b5@3 g5@3 ~@6", // D5 Dmaj7 Asus2 Gbm B7 G E5 A7 …
  L: "[d4 ~ db4 d4@2 a3 [d3,d5] gb3 [a3,d6] [d4,db6] [a3,b5] [gb3,a5] g3 a3 g3 db4 a3 g3 [b2,a5] g3 [b3,e5] [d4,a5] [b3,g5] [g3,e5] db4 a3 [db4,a5] g3 a3 db4 [d3,d5] gb3, d5@6 ~@6 b5@3 g5@3 ~@6 g5@2 ~ gb5@3 ~@2]/2", // D D5 Dmaj7 Asus2 Gbm B7 E5 D5 …
// … 124 more lines