Strudelify

Luigi's Mansion Medley for Percussion Ensemble

Cloud Beat (Nathanael Quimby)

KeyA minorTempo90 bpm
0:00/0:00
// Luigi's Mansion Medley for Percussion Ensemble — Cloud Beat (Nathanael Quimby)
// 90 bpm, 4/4, key A 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 25, 4/4 at bar 25, 2/4 at bar 42, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/3809641; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 101 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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(`<
  A@2 B@2 C D@2 E ~@6 F E ~@6 F G H@3 I ~@9 J K L@3 M@7 ~@7 N@2 O P@2 Q R S@2 ~ T@2 ~@6 U V ~@2 W ~ X ~@3 Y ~@5 Z AA@2
  ~@2 AB AC AD AE AF@2
>`.pickRestart({
  A: "a3!32", B: "[a3!31 a3@33]/2", C: "a3@2 ~ e3 a3@2 ~@2", D: "[a3@7 e3]/2", E: "a3 ~@3", F: "~@2 a3 e3",
  G: "a3 e3 a3 e3", H: "[a3!16 g3@32 g3@32 f#3@16]/3", I: "g3 ~",
  J: "~ a#3@5 f2@2 ~@3 c3@5 ~@2 f2@3 f2@2 g#2@2 ~@3 a#3@4", K: "~ f2@2 ~@2 c3@5 ~@2 f2@3 f2@2 g#2@2 ~@3 a#3@5 f2@2 ~@3",
  L: "[c3@5 ~ f2@3 f2@2 g#2@2 ~@16 f2@7 ~@6 f2@7 ~@6 f2@7 f2@6 f2@9 ~@19]/3", M: "[~@13 f2@24 f2@24 f2@24 f2@24 ~@3]/7",
  N: "[~@30 g3@5 d3@2 ~@3 g3@4 ~@14 g3@5 ~]/2", O: "d3@2 ~@3 g3@4 ~@14 g3@5 ~ d3@2 ~",
  P: "[~@2 g3@4 ~@14 g3@5 d3@2 ~@4 g3@4 ~@14 g3@5 d3@2 ~@4 g3@4]/2", Q: "~@14 g3@5 d3@2 ~@3 g3@4 ~@4",
  R: "~@10 g3@5 ~ d3@2 ~@3 g3@4 ~@7", S: "[~@7 g3@29 ~@28]/2", T: "[~@13 a2@11 ~@8]/2", U: "~@25 a2!7", V: "a2!25 ~@7",
  W: "~@12 a2@4 ~ d3@4 ~@11", X: "~@25 a2@7", Y: "~@22 d3 d3@3 d3@3 ~@3", Z: "~@26 a2@5 ~", AA: "[~@28 f3@29 ~@7]/2",
  AB: "~ d3!31", AC: "d3!32", AD: "d3!23 ~ d3!4 ~ d3!3", AE: "d3 ~ d3!3 ~ d3!4 ~ d3!4 ~ d3!3 ~ d3!4 ~ d3!4 ~ d3!2",
  AF: "[~ g3@48 ~@15]/2",
})).s("gm_timpani").gain(0.25)

// other · glockenspiel
const glockenspiel = note(`<
  ~@2 A B C D E F G H I F J H K F G H I F J H K ~ L ~@2 M N O ~@3 P ~@2 Q R@2 S T U@2 V@3 W@3 ~ X ~ Y Z AA AB ~ AC AD AE
  AF AG AH AI ~ AJ@2 ~@7 AK AL AM@2 AN ~ AO ~@3 AP AQ@2 AR@2 ~ AS ~@8 AT AU
>`.pickRestart({
  A: "~@6 e7 f7", B: "e7 c7 a6 d7", C: "c7 ~@3", D: "a6@2 ~ e7 d#7@2 e7@2", E: "a6 ~@2 e6", F: "~ e7!3 e7@2 c7 e7",
  G: "d#7 b6 ~@2", H: "~ d7!3 d7@2 b6 d7", I: "c7@2 ~ a#6 b6@2 e6@2", J: "d#7@2 b6 e7 d#7@2 [b6,e7]@2",
  K: "e7 d7 [e6,c7] b6 a6@2 ~@2", L: "~@4 e6 f6 f#6 g6 a6@4 ~@4", M: "~@8 a#5@3 d6 ~@2 g6@2",
  N: "f#6@8 g5@3 a#5 ~@2 f6@2", O: "e6 ~", P: "~@21 a#6@3 ~@8", Q: "~@15 a#6",
  R: "[~ a6@3 ~ a#6@3 c7@3 c#7@3 ~ a#6@9 c#7@3 ~ c7@3 c#7@3 d#7@3 f7@3 ~ c#7@10 f6@3 e6@3 f6@3 g6@3 ~]/2",
  S: "g#6@3 f6@6 c6@3 ~ f6@3 e6@7 ~@3 c6@3 f6@3", T: "~@7 e6@3 f6@3 ~@7 e6@3 f6@3 ~ e6@3 f6@2",
  U: "[~ e6@3 f6@9 c7@4 ~ a#6@4 a6@2 ~ a6@2 a6@2 a6@2 c7@4 ~ c7@4 a#6@9 d#7 e7@8 ~@6]/2",
  V: "[f7!2 e7!2 d7!2 c7@2 ~@2 a6@2 ~@4 f7!2 e7!2 d7!2 c7@2 ~@2 g6@2 c7@2 ~@2]/3",
  W: "[f7@3 f7 ~ f7 e7@3 e7@3 d7@3 d7@3 c7@6 ~@6 a6@6 ~@12 a#6@3 a#6@3 a6@3 a6@3 g6@3 g6@3 f6@6 ~@6 g#6@6 ~@12]/3",
  X: "~@2 e7@4 d#7@7 e7@7 e6@7 ~@5", Y: "~@6 e7@2 d7@2 c7@2 b6@2 a6@7 ~@11", Z: "~@21 e7@4 d#7@7", AA: "e7@7 e6@7 ~@18",
  AB: "~@4 e7@4 d7@3 c7@4 b6@3 a6@7 ~@7", AC: "~@26 g6@5 ~", AD: "f6@2 ~@3 g6@4 a#6@3 c7@4 d7@7 g6@5 ~ f6@2 ~",
  AE: "~ g6@2 ~@13", AF: "~@17 g6@5 f6@2 ~@4 g6@4", AG: "~@14 g6@5 f6@2 ~@3 g6@4 a#6@4",
  AH: "c7@3 d7@7 g6@5 ~ f6@2 ~@3 g6@4 ~@7", AI: "~@7 g6@7 ~@18",
  AJ: "[~ [d6,g6]@14 ~@11 d6@4 c#6@7 d6@7 ~@7 [b5,e6]@7 [a6,c7]@6]/2", AK: "~@25 a6@7", AL: "~@9 a7@8 ~@15",
  AM: "[~@28 f#7@12 ~@23 f#6]/2", AN: "f#6 ~ f#6@2 d6 f#6@2 ~ a6@4 a6@4 ~@16", AO: "~@25 c#7@7",
  AP: "~@9 c7@4 c#7 ~@3 d7@3 ~@11 a6",
  AQ: "[g6 ~ g6 f6 ~ f#6 ~@2 a5 b5 ~ d6 ~@2 b5 d6 e6 ~@4 a6 g6 ~ g6 e6 ~@2 f#6 ~@2 d6@3 ~@2 c6@2 ~@26, ~@35 c#6@2 ~@27]/2",
  AR: "[~@14 f6@6 e6@2 ~@5 d6@9 ~@28]/2", AS: "~@11 f#6!2 ~@2 f#6@2 d6 ~ f#6@2 a6@5 ~@6", AT: "~ d7@12 ~@19",
  AU: "~@17 g7@11 ~@4, ~@17 g6 ~@14",
})).s("gm_glockenspiel").gain(0.4)

// chords · vibraphone
const vibraphone = note(`<
  ~ A@2 B A C A D E F G H I J K D E F G H I J K L M@4 ~ N@2 O P@3 Q R S@2 T U V@5 W@2 X@8 Y@2 Z AA@2 AB AC AD ~ AE@3
  AF@7 AG@3 AH@3 AI@8 AJ@2 ~@2 AK@2 AL@2 AM@2 AN@2
>`.pickRestart({
  A: "~ [c4,e4], a3", B: "~ [c4,f4], a3", C: "~ [c4,d#4], a3", D: "~ a5!3 ~@3 a5, ~@4 a5@3 ~, ~@3 e5", E: "f#5 d#5 ~@2",
  F: "~ b4!3 ~@3 b4, ~@4 b4@3 ~, ~@3 g#4", G: "a4 ~@2 e4, ~@3 a#4@5, ~ b4", H: "~ a4!3 ~@3 a4, ~@4 a4@3 ~, ~@3 e4",
  I: "b4 f#4 ~@2", J: "~ g#4!3 ~@3 g#4, ~@4 g#4@3 ~, ~@3 e4", K: "g#4!3 ~@4 a3, ~@3 g#4@5, ~ a4, ~@5 e4@3, ~@3 c4",
  L: "a4 e4 c4 a3 a4 e4 c4 a3",
  M: "[e4 f4 e4 d#4 e4 f4 f#4 g4 c5@16 ~@14 d5@2 ~@8 d5@8 ~@8, ~@12 g4@5 g4@3 ~@12, ~@15 a4@5 ~@12, ~@8 a#4!2 c#5@4 ~@2]/4",
  N: "[c5@48 ~@3 f4@2 ~@2 f4@2 ~ f4@2 ~ f4@3]/2", O: "~@4 c#4@2 ~ f4@2 ~ e4@3 ~@4 c4@3 ~@12",
  P: "[~@8 d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@3 ~@4 c4@2 ~ d#4@2 ~@2 c#4@3 ~@3 a#3@3 ~@13 a#4@3 ~@4 f4@2 ~ f4@2 ~@2 f4@2 ~ f4@3 ~@3 c#4@2 ~@2 f4@2 ~ e4@3 ~@3 c4@3 ~@4]/3",
  Q: "~@16 d#4@2 ~@2 d#4@2 ~ d#4@2 ~ d#4@3 ~@3", R: "~ c4@2 ~ d#4@2 ~ c#4@3 ~@4 a#3@3 ~@13 a#4@2",
  S: "[~ a4@3 ~ a#4@3 c5@3 c#5@3 ~ a#4@9 c#5@3 ~ c5@3 c#5@3 d#5@3 f5@3 ~ c#5@10 f4@3 e4@3 f4@3 g4@3 ~]/2",
  T: "g#4@3 f4@6 c4@3 ~ f4@3 e4@7 ~@3 c4@3 f4@3", U: "~@7 e4@3 f4@3 ~@7 e4@3 f4@3 ~ e4@3 f4@2",
  V: "[~ e4@3 f4@9 c5@4 ~ a#4@4 f4@2 ~ f4@2 f4@2 f4@2 a4@4 ~ a4@4 g4@9 c5@9 ~@21 f4@3 ~@21 f4@3 ~@21 f4@3 ~@21 f4@3 ~@3 f4@3, ~@29 [a4,c5]@3 a4@9 [a4,c5]@3 a4@9 [a4,c5]@3 a4@9 [a4,c5]@3 a4@9 [a4,c5]@3, ~@61 f4@6 f4@6 f4@6 ~@6 f4@6 f4@6 f4@6 ~@6 f4@6 f4@6 f4@6 ~@6 f4@6 f4@6 f4@6 ~@9, ~@32 c5@3 [a#4,c5]@3 [a#4,c5]@3 ~@3 c5@3 [a#4,c5]@3 [a#4,c5]@3 ~@3 c5@3 [a#4,c5]@3 [a#4,c5]@3 ~@3 c5@3 [a#4,c5]@3 [a#4,c5]@3 ~@3]/5", // Am A#sus2
  W: "[~@15 f4@3 ~@21 f4@3 ~@18 [a#4,c5]@3 f4, a4@9 [a4,c5]@3 a4@9 [a4,c5]@3 a4@8, c5@3 [a#4,c5]@3 [a#4,c5]@3 ~@3 c5@3 [a#4,c5]@3 [a#4,c5]@3 ~@3 c5@3 [a#4,c5]@3 ~@2, ~@3 f4@6 f4@6 ~@6 f4@6 f4@6 f4@6 ~@6 f4@6 f4@6 f4@6 ~]/2", // A#sus2 Am A#sus2
  X: "[~@14 g#4@12 ~@26 e4@3 ~@25 d#4@4 ~@25 d4@4 ~@25 d4@4 ~@25 e4@3 ~@26 d#4@3 ~@25 d4@4 ~@14 a4@14, ~@2 f4@24 ~@4 e4@7 e4@7 e4@7 ~@8 d#4@7 d#4@7 d#4@7 ~@8 d4@7 d4@7 d4@7 ~@7 c4@7 ~ c4@18 ~@3 e4@7 e4@7 ~ e4@7 ~@7 d#4@7 d#4@7 d#4@7 ~@8 d4@7 d4@7 d4@7 ~@11 c5@21, ~@5 c4@21 ~@8 c5@14 c5@7 ~@7 b4@14 ~ b4@7 ~@7 b4@14 ~ b4@7 ~@7 a4@22 ~@7 c5@14 c5@7 ~@8 b4@14 b4@7 ~@7 b4@14 ~ b4@7 e5@28, ~@8 a3@18 a3@14 ~ a3@14 a3@14 ~ a3@14 a3@14 a3@14 ~ a3@29 a3@14 a3@14 a3@14 ~ a3@14 a3@14 ~ a3@14 ~@11 b4@17, ~@11 g3@15 ~@101 b3@4 d4@3 g#4@7 ~@91 d5@24]/8",
  Y: "[~@30 a#4@5 a4@2 ~@3 a#4@4 ~@14 a#4@5 ~]/2", Z: "a4@2 ~@3 a#4@4 g4@3 a4@4 a#4@7 a#4@5 ~ a4@2 ~",
  AA: "[~@2 a#4@4 ~@14 a#4@5 a4@2 ~@4 a#4@4 ~@14 a#4@5 a4@2 ~@4 a#4@4]/2", AB: "~@14 a#4@5 a4@2 ~@3 a#4@4 g4@4",
  AC: "a4@3 a#4@7 a#4@5 ~ a4@2 ~@3 a#4@4 ~@7", AD: "~@7 g4@7 ~@18",
  AE: "[~ [d4,g4]@14 ~@11 d4@4 c#4@7 d4@7 ~@7 [e4,g#4]@7 a4@6 [e4,a4]@5 [e4,a4]@6 [e4,a4]@6 [e4,a4]@5 [e4,a4]@6 [e4,a4]@4, ~@29 c5@11 ~@8]/3", // G5 E A5
  AF: "[~ [e4,a4]@6 [f4,c5]@5 ~@6 [e4,g#4]@5 [e4,g#4]@6 [d#4,f#4]@5 ~@6 [d4,f4]@5 [d4,f4]@6 [c4,e4]@6 [c4,e4]@5 [c4,e4]@6 [c4,e4]@6 ~@2 [c4,d#4]@3 ~@8 [d4,f4]@3 [d4,f4]@5 ~@35 [c4,f4]@12 d4@23 ~@12 [c#4,a4]@11 [b3,f#4]@14 ~ [a3,d4]@14 [e4,a4]@7, ~@12 [f4,c5]@17 ~@5 [d#4,f#4]@17 ~@28 [c4,d#4]@16 e4@46 ~ g4@46 ~@36, ~@101 d4@41 ~@23 [d4,f#4]@23 ~@36, ~@107 c4@12 a3@23 ~@82, ~@113 b3@29 ~@82]/7", // A5 F5 E D#m Dm C Cm Dm …
  AG: "[~@25 f#4@6 d4@6 g4@5 g#4@6 a4@12 a3@12 ~@23 e4]/3",
  AH: "[e4 ~ e4@2 e4 e4@2 ~ a4@4 a4@4 ~@16 d5@2 ~@16 a4@2 ~@16 d5@2 ~@16 a4@2 ~ e4@7, ~@17 d4@18 ~@6 d4@11 ~ d4@18 ~@6 d4@11 ~@8, ~@20 f#4@15 ~@3 f#4@15 ~@3 f#4@15 ~@3 f#4@15 ~@7, ~@23 a4@6 b4@6 a4@12 e4@6 ~@6 a4@6 b4@6 a4@12 e4@6 ~@7, ~@26 g4@9 ~@9 c#4@9 ~@9 g4@9 ~@9 c#4@9 ~@7]/3",
  AI: "[~@51 g#4@4 ~@22 a4@3 ~@15 d5@5 a5@3 ~@19 f#4@2 ~@19 d5@3 ~@22 a#4@3 ~@26 d4@4 ~@18 f#4@18 ~@14 f#4@4 d4, ~@25 d4@21 f4@9 ~@5 f#4@20 ~@4 g4@18 ~@3 f#4@17 ~@6 f#4@11 b4@7 ~@12 g4@13 ~@11 c#4@20 ~@4 a4@32 ~@3 f4@15, ~@31 f#4@24 a4@18 e4@8 ~@7 b4@14 ~@11 d5@11 ~@11 g4@11 ~@4 f#4@21 ~@5 a#3@25 ~@47 a4@8, ~@37 c#5@18 ~@13 c#4@12 ~@11 a4@11 ~@7 a4@8 ~ a4@7 ~@7 a4@14 ~@9 a4@8 a4@8 ~@20 c4@10 ~@11 g4@25 a#4@8 a#4@11, ~@41 c#4@14 ~@10 d4@15 d4@22 ~@22 d4@21 ~ d4@25 a3@14 a3@16 ~@55]/8",
  AJ: "[~@16 d5@4 a4@2 ~@18 d4@3 e4 e4@3 ~@6 a4@10 ~, ~@2 a#4@8 a#4@12 a#4@8 a#4@13 ~@21, ~@6 f4@17 ~@3 f4@17 ~@4 e4@17, ~@12 a4@8 ~@13 a4@10 ~@8 g#4@13, ~@37 f#4@6 ~@6 f#4@14 ~]/2",
  AK: "[~@8 b3@7 ~@11 d4@38, ~@15 b3@22 ~@27, ~@11 c4@7 ~@14]/2",
  AL: "[~ f4@7 ~@11 d4@40 e4@5, ~@4 f4@11 ~@17, ~@8 e4@7 ~@17]/2",
  AM: "[~@13 c4@31 ~@10 a#3@10, ~ e4@11 ~@20, ~@9 d4@14 ~@21 a3@20]/2", AN: "[~ [b3,b4]@48 ~@15]/2",
})).s("gm_vibraphone").gain(0.3)

// other · xylophone
const xylophone = note(`<
  ~@3 A B C D E F G H E F G I E F G H E F G I J K ~@4 L M N O@3 P Q ~ R S T U@2 V@3 W@3 X Y Z@3 AA@2 AB@2 AC AD@3 AE AF
  ~ AG@2 AH AI@7 AJ@3 AK AL@2 ~ AM@2 AN ~ AO@4 AP ~@7 AQ AR ~
>`.pickRestart({
  A: "c6@2 ~ e6 f6@2 e6@2", B: "c6@4 ~@2 c6 b5 c6@4 ~@4", C: "a5@2 ~ e6 d#6@2 e6@2", D: "a5 ~@2 e5",
  E: "a5 [c6,e6] a5 [c6,e6]", F: "a5 [b5,d#6] a5 [b5,d#6]", G: "a5 [b5,d6] a5 [b5,d6]", H: "a5 [c6,e6] e5 [g#5,b5]",
  I: "e6 d6 c6 b5 a5 e5 c5 a4", J: "a5@2 e5@2 c5@2 a4@2 e5 f5 e5 d#5 e5 f5 e5 d#5",
  K: "e5 f5 e5 d#5 e5 f5 f#5 g5 a5@4 ~@4", L: "~@16 g5!16", M: "f#5!16 ~@3 f5@2 ~@2 f5@2 ~ f5@3 f5@3",
  N: "~@4 c#5@2 ~ f5@2 ~ e5@3 ~@4 c5@3 ~@12",
  O: "[~@8 d#5@2 ~ d#5@2 ~ d#5@2 ~ d#5@3 ~@4 c5@2 ~ d#5@2 ~@2 c#5@3 ~@3 a#4@3 ~@20 f5@2 ~ f5@2 ~@2 f5@3 f5@3 ~@3 c#5@2 ~@2 f5@2 ~ e5@3 ~@3 c5@3 ~@4]/3",
  P: "~@16 d#5@2 ~@2 d#5@2 ~ d#5@2 ~ d#5@3 ~@3", Q: "~ c5@2 ~ d#5@2 ~ c#5@3 ~@4 a#4@3 ~@15",
  R: "~@19 f6@3 e6@3 f6@3 g6@3 ~", S: "g#6@3 f6@6 c6@3 ~ f6@3 e6@7 ~@3 c6@3 f6@3",
  T: "~@7 e6@3 f6@3 ~@7 e6@3 f6@3 ~ e6@3 f6@2",
  U: "[~ e6@3 a5@9 c6@4 ~ a#5@4 f5@2 ~ f5@2 f5@2 f5@2 c6@4 ~ c6@4 a#5@9 d#6 e6@8 ~@6]/2",
  V: "[f6!2 e6!2 d6!2 c6@2 ~@2 a5@2 ~@4 f6!2 e6!2 d6!2 c6@2 ~@2 g5@2 c5@2 ~@2]/3",
  W: "[f6!2 e6!2 d6!2 c6@2 ~@2 a5@2 ~@4 a#5!2 a5!2 g5!2 f5@2 ~@2 [d5,e5]@4 a4@2]/3", // Dsus2
  X: "~@2 e5@7 a4@7 e5@7 d#5@2 e5@2 f#5@2 ~ f#5@2, ~@29 g#5@2 ~", Y: "e5@2 d#5@2 c#5@2 d#5@7 ~@7 g4@7 d5@5",
  Z: "[~@2 g4@7 ~ d5@7 f5@2 f5 f5@2 f5@2 f5@2 f5@2 ~ f5@2 g5@7 ~@8 a4@7 e5@7 a4@7 e5@7 d#5@2 e5@2 f#5@2 g#5@2 ~ e5@2 d#5@2 c#5@2 d#5@7, ~@14 a5 ~@26 f#5 ~@6]/3",
  AA: "[~@7 g4@7 d5@7 ~ g4@7 d5@7 e5@2 f5@2 ~ f5@2 e5@2 d5@2 c5@2 ~ a4@4 c5@2 e5@2 f5@3 f#5@3, ~@40 e5@2 ~@7 b4@2 ~@13]/2",
  AB: "[~ g5@5 f5@2 ~@4 g5@4 ~@14 g5@5 f5@2 ~@3 g5@4 ~@14 g5@5 ~]/2", AC: "f5@2 ~@3 g5@4 a#5@3 c6@4 d6@7 g5@5 ~ f5@2 ~",
  AD: "[~@2 g5@4 ~@14 d6@2 d5@2 ~ d5@2 d6@2 d5@2 g5@2 ~ d5@2 d6@2 d6@2 d5@2 ~ d6@2 d5@2 d6@2 c#6@2 ~ c#6@2 c#5@2 c#6@2 c#5@2 ~ c#6@2 c#5@2 c#6@2 c#6@2 ~ b5@2 c#6@2 c#5@2 c#6@2 ~ d5@2 d6@2 d5@2 d6@2 ~ g5@2 d6@2 d5@2 d6@2, ~@24 d6@2 ~@7 d6@2 ~@7 a#5@2 ~@7 c#5@2 ~@7 g5@2 ~@7 c#5@2 ~@7 d6@2 ~@7 d5@2 ~@7]/3",
  AE: "~ d5@2 a#5@2 d6@2 d5@2 ~ c#6@2 c#5@2 c#6@2 c#5@2 ~ c#5@2 g5@2 c#6@2 c#5@2 c#6 c#6@2 c#5@2, d6@2 ~@7 d6@2 ~@7 c#6@2 ~@12",
  AF: "b5@2 c#6@2 ~ c#6@2 g5@7 ~@18, ~@2 c#5 ~@13", AG: "[~ [d5,g5]@14 ~@11 d5@4 c#5@7 d5@7 ~@7 [b4,e5]@7 [a5,c6]@6]/2",
  AH: "[e5,a5]@5 [e5,a5]@6 [e5,a5]@6 [e5,a5]@5 [e5,a5]@6 [e5,a5]@4", // A5
  AI: "[~ [e5,a5]@6 [f5,a5]@5 [f5,a5]@6 [e5,b5]@5 [e5,b5]@6 [d#5,a5]@5 [d#5,a5]@6 [d5,g#5]@5 [d5,g#5]@6 [c5,a5]@6 [c5,a5]@5 [c5,a5]@6 [c5,a5]@6 ~@2 [f#5,a5]@3 [f#5,a5]@3 ~@5 [g#5,a#5]@3 [g#5,a#5]@3 ~@2 e5@6 d5@6 c5@6 b4@6 a4@11 a5@12 a5@11 a5@12 a5@12 [a5,c#6]@11 [a5,b5]@14 ~ [f#5,a5]@14 [c#5,e5]@7]/7", // A5 F E5 D#dim Ddim F F#m G#sus2 …
  AJ: "[~@25 f#5@6 d5@6 g5@5 g#5@6 a5@12 d5@12 ~@23 f#5]/3",
  AK: "f#5 ~ f#5@2 d5 f#5@2 ~ a5@4 a5@4 ~ d5@3 a4 ~@2 f#4@3 ~ b4@2 c#5 ~ c5",
  AL: "[b4 ~@2 a4 f#5 ~ a5 b5@2 g5 ~ a5 ~ f#5@2 d5 ~ e5 c#5@2 ~ d5@3 a4 ~@2 f#4@3 ~ b4@2 c#5 ~ c5 b4 ~@2 a4 f#5 ~ a5 b5@2 g5 ~ a5 ~ f#5@2 d5 ~ e5 c#5@2 ~ a4@7]/2",
  AM: "[~@26 a5@2 g5@2 ~ e5@2 ~@2 f#5@2 ~ d6@3 d6!2 ~@8 a#5 a5 ~ a5 g5 ~@2 g#5 ~@2 c#5 d5 f#5, ~@15 g5 ~@16]/2",
  AN: "~@2 e5 ~ g5 a5 ~@3 c6@4 c#6 ~@3 d6@3 ~@12",
  AO: "[~@14 d#6@2 d6@2 c6@2 a#5@2 ~ a#5@2 ~@2 c5@2 c5@2 d#5@2 ~@2 b4@2 d5@2 e5@2 ~@5 f5@6 e5@2 ~@5 d5@9 ~@9 d5 ~ d5 ~ d5@3 d5 e5@3 f#5 d5 ~ b4 ~ a4@5 d5!2 ~@2 d5@2 d5 ~ e5 f#5 ~@10 d5 ~ d5 ~ d5@3 d5 e5@2]/4",
  AP: "~ f#5 d5 ~@2 b4 a4@5 f#5!2 ~@2 f#5@2 d5 ~ f#5@2 a5@5 ~@6", AQ: "~@6 a4@5 a#4@5", AR: "~ b4@12 ~@19",
})).s("gm_xylophone").gain(0.4)

// other · marimba
const marimba = note(`<
  ~@3 A B A C D E F G D E F H D E F G D E F H I J ~@5 K L@3 M@2 N O P Q R S T U V@2 U W@2 ~ X ~ Y Z AA AB ~@2 AC AD ~ AE
  AF AG AH AI@2 AJ AK@5 AL@2 ~@3 AM AN AO ~@3 AP ~@2 AQ@2 AR AS ~@10
>`.pickRestart({
  A: "a3@2 ~ e4 d#4@2 e4@2", B: "a3@4 ~@2 a3!2 a3@4 ~@4", C: "a3 ~@2 e3", D: "a3 [c4,e4] a3 [c4,e4]",
  E: "a3 [b3,d#4] a3 [b3,d#4]", F: "a3 [b3,d4] a3 [b3,d4]", G: "a3 [c4,e4] e3 [g#3,b3]",
  H: "e4@2 d4@2 c4@2 b3@2 e4 f4 e4 d#4 e4 f4 e4 d#4", I: "e4 f4 e4 d#4 e4 f4 e4 d#4 e4 f4 e4 d#4 e4 f4 e4 d#4",
  J: "e4 f4 e4 d#4 e4 f4 f#4 g4 a4@4 ~@4", K: "~@16 a#3@5 f3@2 ~@3 c4@5 ~",
  L: "[f3@3 ~@2 g#3@2 ~@3 a#3@5 f3@2 ~@3 c4@5 ~@2 f3@3 ~ g#3@2 ~@3 a#3@5 f3@2 ~@3 c4@5 ~@2 f3@3 f3@2 g#3@2 ~@3 a#3@4 f3@2 ~@3 a#3@5 ~@2 f3@3 f3@2 a3@2 ~@3 a#3@5 f3@2, ~@2 f3 ~@12 f3 ~@32]/3",
  M: "[~@3 c4@5 ~ f3@3 f3@2 g#3@2 ~@3 a#3@5 f3@2 ~@3 c4@5 ~ f3@3 ~@2 g#3@2 ~@3 a#3@5 f3@2 ~@3 c4@5 ~ f3@3, ~@39 f3@2 ~@23]/2",
  N: "~@2 g#3@2 ~@3 a#3@5 f3@2 ~@3 a#3@5 ~@2 f3@3 f3@2 a3@2 ~, ~ f3@2 ~@29",
  O: "~ a#3@5 f3@2 ~@3 c4@5 ~@2 f3@3 f3@2 g#3@2 ~@3 a#3@4", P: "~ f3@2 ~@2 c4@5 ~@2 f3@3 f3@2 g#3@2 ~@3 a#3@5 f3@2 ~@3",
  Q: "c4@5 ~ f3@3 f3@2 g#3@2 ~@3 e3@7 ~@3 c3@3 f3@3", R: "~@7 e3@3 f3@3 ~@7 e3@3 f3@3 ~ e3@3 f3@2",
  S: "~ e3@3 f3@9 ~@19", T: "~@26 [a3,c4]@3 f3@3",
  U: "[a3,c4]@3 f3@3 [a#3,c4]@3 f3@3 [a#3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a#3,c4]@2", // Am A#sus2 Am A#sus2
  V: "[~ f3@3 [a#3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a#3,c4]@3 f3@3 [a#3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a#3,c4]@3 f3@3 [a#3,c4]@3 f3@3 [a3,c4]@3 f3@3]/2", // A#sus2 Am A#sus2 Am A#sus2 Am
  W: "[~ f3@3 [a#3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a3,c4]@3 f3@3 [a#3,c4]@3 f3@3 [a#3,c4]@3 f3@3 f3@6 ~@6 e4@3 b3@3 g#3@3 e3@3 ~@6]/2", // A#sus2 Am A#sus2
  X: "~@2 e3@4 d#3@7 e3@7 e3@7 ~@5", Y: "~@6 e4@2 d4@2 c4@2 b3@2 a3@7 ~@11", Z: "~@21 e3@4 d#3@7", AA: "e3@7 e3@7 ~@18",
  AB: "~@4 e4@4 d4@3 c4@4 b3@3 a3@7 ~@7", AC: "~@23 g3@5 ~ f3@2 ~", AD: "~ g3@2 ~@13",
  AE: "~@14 g3@5 f3@2 ~@3 g3@4 a#3@4", AF: "c4@3 d4@7 g3@5 ~ f3@2 ~@3 g3@4 ~@7", AG: "~@7 g3@7 ~@18",
  AH: "d3@4 c#3@7 d3@7 ~@14", AI: "[~@26 d3@4 c#3@7 d3@7 ~@7 e3@7 e4@6]/2", AJ: "~@17 a3@11 ~@2 e3@2",
  AK: "[~ g3@3 f#3@3 f3@6 ~@2 c3@3 e3@3 ~@5 a3@3 d#3@6 ~@2 d#3@3 d3@3 ~@5 d3@3 c3@6 e3@5 d#3@6 ~@2 e3@3 d#3@6 ~@2 e3@3 f3@6 ~@3 d#3@2 e3@6 d3@6 c3@6 e3@6 e3@11 a3@12 g3!18]/5",
  AL: "[g3!5 f#3!23 f#3@14 ~ d3@14 a3@7]/2", AM: "~@12 c3@4 ~ d3@2 d3!2 d3@2 d3 ~ d3 d3@2 d3!2 d3@2",
  AN: "d3 ~ d3 d3@2 d3!2 d3@2 d3 ~ d3 d3@2 d3!2 d3@2 d3 ~ d3 d3@2 d3!2 d3@2 d3 ~ d3 d3@2",
  AO: "d3!2 d3@2 d3 ~ d3 d3@2 d3!2 d3@2 d3 ~ d3 d3@2 d3!2 d3@2 d3 ~ d3 e3@7", AP: "~@22 d3 d3@3 d3@3 ~@3",
  AQ: "[~@14 f3@6 e3@2 ~@5 d3@9 ~@28]/2", AR: "~@2 d3!2 ~@2 d3@2 d3 ~ e3 f#3 ~@10 d3 ~ d3 ~ d3@3 d3 e3@2",
  AS: "~ f#3 d3 ~@8 f#3!2 ~@2 f#3@2 d3 ~ f#3@2 a3@5 ~@6",
})).s("gm_marimba").gain(0.4)

// other · tubular bells
const tubular_bells = note(`<
  ~ A@5 B A C D E A F G H A C D E A F G H I J@6 K ~@10 L M@3 N@3 O@8 ~@3 P@2 Q R S T U@2 V W@2 X Y@7 Z ~ AA ~@3 AB ~@2
  AC@2 ~@6 AD@3 ~@3
>`.pickRestart({
  A: "a4", B: "~@3 e4, a4", C: "f#4", D: "b4", E: "~ e4, e5", F: "~ b4@3, f#4", G: "~ d5@3", H: "~ a4, e5, ~ e4@3",
  I: "~ a4",
  J: "[e4@2 g#4@2 g4@8 ~@7 d5 ~@4 d5@4 g4@8 f4@8 d5@4, ~@12 g4@5 g4@3 ~@28, ~@15 a4@5 ~@28, ~@8 a#4!2 c#5@4 ~@10]/6",
  K: "c#5 ~", L: "~@4 f4@9 ~@19", M: "[~@13 [a4,c5]@6 [a#4,c5]@6 [a4,c5]@6 [a#4,c5]@6 [a4,c5]@6 [a#4,c5]@5]/3",
  N: "[~ [a4,c5]@6 [a#4,c5]@6 [a4,c5]@6 [a#4,c5]@6 [a4,c5]@6 [a#4,c5]@6 [a4,c5]@6 [a#4,c5]@5]/3", // Am A#sus2 Am A#sus2 Am A#sus2 Am A#sus2
  O: "[~@2 [a4,c5]@12 ~@12 a4@29 g#4@29 g4@29 f4@14 g4@14 ~ a4@28 g#4@29 g4@29 ~@28]/8", // Am
  P: "[~@20 g4@5 f4@2 ~@4 g4@4 ~@14 g4@5 f4@2 ~@4 g4@4]/2", Q: "~@14 g4@5 f4@2 ~@3 g4@4 a#4@4",
  R: "c5@3 d5@7 g4@5 ~ f4@2 ~@3 g4@4 ~@7", S: "~@7 g4@25", T: "d5@4 c#5@7 d5@7 ~@14",
  U: "[~@26 d5@4 c#5@7 d5@7 ~@20]/2", V: "~@17 a4@6 ~@9", W: "[~@7 f4@11 e4@11 d#4@11 d4@11 c4@11 ~@2]/2",
  X: "~@9 d#4@11 f4@11 ~", Y: "[~@11 e4@12 a4@23 a4@23 a4@23 f#4@14 ~@15 d5@16 c#5@16 f#4@12 g4@11 a4@12 d5@12 ~@24]/7",
  Z: "~@3 a4 ~@4", AA: "~@25 a4@7", AB: "~@9 c5@4 c#5 ~@3 d5@3 ~@2 d4!2 ~@2 d4 ~@5",
  AC: "[~@14 a4@6 g4@2 ~@5 f#4@9 ~@28]/2", AD: "[~@2 d5@9 ~]/3",
})).s("gm_tubular_bells").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@30 A B C D E F G H I J B K L M N O M N O ~@7 P Q R S T U V W X Y Z ~@11 AA ~ AB ~@9 L AC ~@9
>`.pickRestart({
  A: "~@16 x ~@12 x ~@2", B: "~@10 x ~@12 x ~@8", C: "~@4 x ~@12 x ~@13 x", D: "~@12 x ~@12 x ~@6",
  E: "~@6 x ~@12 x ~@12", F: "x ~@12 x ~@12 x ~@5", G: "~@7 x ~@12 x ~@11", H: "~ x ~@4 x ~@4 x ~@6 x ~@9 x ~@3",
  I: "~ x ~@3 x ~@6 x ~@9 x ~@4 x ~@4", J: "x ~@5 x ~@9 x ~@12 x ~@2", K: "~ x ~@6", L: "~@13 x ~@2",
  M: "~@18 x ~@2 x ~@10", N: "~@5 x ~@10", O: "~@2 x ~@2 x ~@8 x ~@2 x ~@8 x ~@5", P: "~@15 x",
  Q: "~@3 x ~@4 x ~@7 x ~@9 x ~@5", R: "x ~@4 x ~@6 x ~@10 x ~@5 x ~@2", S: "~@2 x ~@6 x ~@10 x ~@4 x ~@5 x",
  T: "~@6 x ~@10 x ~@4 x ~@5 x ~@3", U: "~@3 x ~@10 x ~@4 x ~@4 x ~@7", V: "x ~@9 x ~@5 x ~@4 x ~@6 x ~@3",
  W: "~@7 x ~@3 x ~@8 x ~@4 x ~@6", X: "~@4 x ~@3 x ~@8 x ~@4 x ~@9", Y: "~ x ~@2 x ~@8 x ~@5 x ~@10 x ~",
  Z: "~ x ~@8 x ~@5 x ~@4 x ~@4 x ~@5", AA: "~@3 x ~@4", AB: "~@25 x ~@6", AC: "x",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@56 [~@3 x!2 ~@27] ~@44>").gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  ~@30 A B C D E F G H I J B K L M N O M N P ~@8 Q R S T U V W X Y Z ~@10 AA AB ~@11 AC AD ~@9
>`.pickRestart({
  A: "~@23 x ~@8", B: "~@4 x ~@12 x ~@12 x ~", C: "~@11 x ~@12 x ~@7", D: "~@5 x ~@12 x ~@12 x", E: "~@12 x ~@12 x ~@6",
  F: "~@7 x ~@12 x ~@11", G: "~ x ~@12 x ~@12 x ~@4", H: "~@8 x ~@12 x ~@10", I: "~@2 x ~@12 x ~@12 x ~@3",
  J: "~@9 x ~@13 x ~@8", K: "~@4 x ~@17 x ~@2 x ~ x ~ x ~ x", L: "~@4 x ~@3 x ~@8 x ~@8 x ~@2 x ~ x",
  M: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~",
  N: "~ x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x",
  O: "~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x",
// … 40 more lines

More by Cloud Beat (Nathanael Quimby)