Strudelify

donkey kong country theme

David Wise

KeyF majorTempo125 bpm
0:00/0:00
// donkey kong country theme — David Wise
// 125 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5939428; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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.

// chords · piano
const piano = note(`<
  A B@2 ~@7 C D E D F G H I J K L M N O N F G H I J K L P Q R Q S@8 T U V W X Y Z AA AB AC AD AE@5 AF AG AH AI G H I J K
  L M N O N F G H I J K L AJ AK AL AM
>`.pickRestart({
  A: "~@8 [bb3,bb4] ~ [g3,c5] [f3,bb4] ~ [d3,f4] [eb3,g4] ~", // Bb C5 Bb5 Dm Eb
  B: "[[g3,c5] [f3,bb4] ~ [c3,f4] ~@3 d4 e4 [f4,bb4] c5 d5@12 ~@9, ~@4 [c3,g3,c4]@11 ~@17]/2", // C5 Bb5 F5 Bb5 C5
  C: "~@4 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2, ~ f4 ~@2", D: "c3@2 db3@2 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2",
  E: "g3@2 f3@2 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2", F: "[g3,d4]@2 [f3,d4]@2 d3@2 d2@2 d3@2 d2 d3@2 d3 [d2,f4]@2, ~ a4@2 ~",
  G: "[c3,g4]@2 [d3,f4]@2 [bb3,d4]@2 bb2@2 bb3@2 bb2 bb3@2 bb3 bb2@2", // C5 Dm Bb
  H: "[a3,d4]@2 [bb3,d4]@2 g3@2 g2@2 g3@2 g2 g3@2 g3 [g2,g4]@2, ~ bb4@2 ~", // D5 Bb G
  I: "[f3,a4]@2 [g3,g4]@2 c3@2 c2@2 c3@2 c2 ~@2 c3 c2@2, ~@2 e4@3 d4 c4 ~, ~@11 c3@2 ~@3", // F G
  J: "[bb2,c4]@2 [c3,c4]@2 a2@2 a1@2 a2@2 a1 a2@2 a2 [a1,a4]@2, ~ c5@2 ~", // Bbsus2 C A
  K: "[g2,bb4]@2 [a2,c5]@2 bb2@2 bb1@2 bb2@2 bb1 ~@2 bb2 bb1@2, ~@2 d5@3 f4 f4@2, ~@11 bb2@2 ~@3", // Gm Am
  L: "[a2,f4]@2 [bb2,g4]@2 f3@2 f2@2 f3@2 f2 c4@2 c4 [c3,e4]@2, ~ a4@2 ~", // Dm Eb C
  M: "[bb3,f4]@2 [c4,g4]@2 d3@2 d2@2 [d3,d4,d5]@2 d2 [d3,d4,d5]@2 [d3,d4,d5] d2@2, ~ f4 ~@2", // Bb5 C5 D
  N: "[c3,c4,c5]@2 [db3,db4,db5]@2 d3@2 d2@2 [d3,d4,d5]@2 d2 [d3,d4,d5]@2 [d3,d4,d5] d2@2", // C Db D
  O: "[g3,g4,g5]@2 [f3,f4,f5]@2 d3@2 d2@2 [d3,d4,d5]@2 d2 [d3,d4,d5]@2 [d3,d4,d5] d2@2", // G F D
  P: "[bb3,f4]@2 [c4,g4]@2 d3@2 d2@2 [d3,d4,d5,d6]@2 d2 [d3,d4,d5,d6]@2 [d3,d4,d5,d6] d2@2, ~ f4 ~@2", // Bb5 C5 D
  Q: "[c3,c4,c5,c6]@2 [db3,db4,db5,db6]@2 d3@2 d2@2 [d3,d4,d5,d6]@2 d2 [d3,d4,d5,d6]@2 [d3,d4,d5,d6] d2@2", // C Db D
  R: "[g3,g4,g5,g6]@2 [f3,f4,f5,f6]@2 d3@2 d2@2 [d3,d4,d5,d6]@2 d2 [d3,d4,d5,d6]@2 [d3,d4,d5,d6] d2@2", // G F D
  S: "[[g3,g4,g5,g6]@2 [f3,f4,f5,f6]@2 ~@4 a3@2 ~ a3@2 ~@11 bb3@2 ~ bb3@2 ~@11 bb3@2 ~ bb3@2 ~@11 bb3@2 ~ bb3@2 ~@11 a3@2 ~ a3@2 ~@11 bb3@2 ~ bb3@2 ~@11 bb3@2 ~ bb3@2 ~@14 c3@2 ~ c3@2, ~@8 d4@10 f3@2 g4@6 d4@20 d3@2 g2@18 g3@16 f3@2 g4@6 d4@20 d3@2 [g2,a4]@2 [d3,bb4]@2 [c3,c5]@2 f3@2 [g3,bb4]@2 [f3,a4]@3 f3@3, ~@10 a4@4 f3@2 d3@4 bb2@2 f3@2 f4@12 [g2,bb4]@2 d3@2 g4@2 [d3,bb4]@3 bb3 g4@16 g3@2 [c3,bb4]@16 g4@2 a4@16 f3@2 [g2,bb4]@2 d3@2 g4@2 [d3,bb4]@3 bb3@19, ~@10 f3@3 a3@13 f3@3 bb3 f3@2 bb2@16 a4@2 d3@2 c3@2 g3@2 bb4@2 [g3,a4]@3 bb3@13 [f3,a4]@3 a3@13 f3@3 bb3 f3@2 bb2@32, ~@7 f4 g4 a4@8 f3@8 bb4 c5@7 a4 d3 f3 d4@3 [f3,f4] d3@2 bb2 f3 f4@11 g4@9]/8", // G F Gsus2 Gm C Gm F Gm …
  T: "~@2 [c2,a4]@2 d2@2 [d1,d4]@2 f4 ~ d1 [d2,f4]@2 [d2,f4] [d1,d4]@2, [g2,bb4]@2 ~@2 d2 ~@3, ~@9 d4@2 ~@5", // F D Dm D Gm
  U: "c2@2 db2@2 d2@2 [d1,d4]@2 f4 ~ d1 [d2,f4]@2 [d2,f4] [d1,d4]@2, ~@4 d2 ~@3, ~@9 d4@2 ~@5", // D Dm D
  V: "g2@2 f2@2 d2@2 [d1,d4]@2 d5 ~ d1 [d2,d5]@2 [d2,d5] [d1,d4]@2, ~@4 d2 ~@3, ~@9 d4@2 ~@5", // D
  W: "c2@2 db2@2 d2@2 [d1,d4]@2 d5 ~ d1 [d2,d6]@2 [d2,d6] [d1,d5]@2, ~@4 d2 ~@3, ~@9 d4@2 ~@5", // D
  X: "[g2,d4]@2 [f2,d4]@2 [d2,d3,a3]@2 ~@2 f4@2 ~ f4@2 f4 [a3,f4]@2, ~ a4@2 ~, ~@3 a3@2 a3 ~@2", // G5 Dm D5 Dm
  Y: "[d3,g4]@2 [a3,f4]@2 [bb1,bb2,d3]@2 ~@2 f3@2 ~ f3@2 f3 d3@2, ~@4 d4@11 ~, ~@3 d3@2 d3@2 ~", // G5 Dm Bb
  Z: "[bb2,d4]@2 [a2,d4]@2 [g1,g2]@2 d3@2 g3@2 d3 g3@2 g3 [d3,g4]@2, ~ [bb3,bb4]@2 ~", // Bb D5 G G5 Bb
  AA: "[g2,a4]@2 [d3,g4]@2 [c2,c3,e3]@2 ~@2 a3@2 ~@3 a3 e3@2, ~@4 e4@6 ~ a3@2 ~@3, ~@3 e3@2 [e3,d4] c4 ~", // Gsus2 G5 C E7
  AB: "[d3,c4]@2 [bb2,c4]@2 [a1,a2]@2 e3@2 a3@2 e3 a3@2 a3 [e3,a4]@2, ~ [c4,c5]@2 ~", // D7 Bbsus2 A A5 C
  AC: "[a3,bb4]@2 [f3,c5]@2 [bb1,bb2]@2 f3@2 bb3@2 f3 ~@2 bb3 f3@2, ~@2 [d4,d5]@3 f4 f4@2, ~@11 bb3@2 ~@3", // Bbmaj7 F5 Bb D
  AD: "[bb2,f4]@2 [f3,g4]@2 [f1,f2]@2 c3@2 ~@2 c3 [c2,c3]@2 c3 [g3,e4]@2, ~ a4@2 ~, ~ a3!2 ~", // Bb5 Fsus2 F C
  AE: "[[e3,f4]@2 [c3,g4]@2 d3@4 ~@12 d2@2 ~@2 d3@2 ~ d3@2 ~@3 d3@4 d2@2 ~@2 d3@2 ~ d3@2 ~@5 d2@2 d2@2 ~@2 d3@2 ~ d3@2 ~@3 d3@2 [d2,d3]@2 [d2,d3]@2 [d4,d5]@2 [f4,f5]@2 [d4,d5] [f4,f5]@2 [f4,f5] [d4,d5]@2, ~@2 [f3,f4]@16 ~ d2@2 d2@2 d2@2 ~@2 d2@2 d2@2 d2@2 ~@7, ~@2 d2 ~@4 d2@2 ~@2 d2@2 d2@2 d2@2 ~ d1@8 [d1,d4]@7 ~@7, ~@16 d3@8 ~@5 d3@3 ~@4 d3@4 ~@5 d3@3 d3@4 d3@4 ~@5 d3@3 ~@16]/5", // Fmaj7 C5 D F D F D F …
  AF: "[d2,d3,d4]@4 d4@2 [d4,d5]@2 [f4,f5]@2 [d4,d5] [f4,f5]@2 [f4,f5] [d4,d5]@2, ~ [d2,d3] ~@2", // D F D F D
  AG: "[g2,g3]@2 [f2,f3]@2 [d2,d3]@2 [d4,d5]@2 [f4,f5]@2 [d4,d5] [f4,f5]@2 [f4,f5] [d4,d5]@2", // G F D F D F D
  AH: "[c2,c3]@2 [db2,db3]@2 [d2,d3]@2 [d4,d5]@2 [f4,f5]@2 [d4,d5] [d2,d3,f4,f5]@2 [f4,f5] [d2,d3,d4,d5]@2", // C Db D F D Dm F D
  AI: "[g2,g3,d4]@2 [f2,f3,d4]@2 [d2,d3]@2 d2@2 d3@2 d2 d3@2 d3 [d2,f4]@2, ~ a4@2 ~", // G5 Dm D Dm
  AJ: "[bb3,f4]@2 [c4,g4]@2 [d3,f4]@2 [d2,d4,d5]@2 [d3,f4,f5]@2 [d2,d4,d5] [d3,f4,f5]@2 [d3,f4,f5] [d2,d4,d5]@2", // Bb5 C5 Dm D Dm D Dm D
  AK: "d3@2 d2@2 d2@2 [d2,d4,d5]@2 [d3,f4,f5]@2 [d2,d4,d5] [d3,f4,f5]@2 [d3,f4,f5] [d2,d4,d5]@2", // D Dm D Dm D
  AL: "d3@2 d2@2 [d1,d2,d3]@2 [d2,d4,d5]@2 [d3,f4,f5]@2 [d2,d4,d5] [d3,f4,f5]@2 [d3,f4,f5] [d2,d4,d5]@2", // D Dm D Dm D
  AM: "d3@2 d2@2 [d1,d2,d3,d4]@2 [d2,d3,d4,d5]@2 [f2,f3,f4,f5]@2 [d2,d3,d4,d5] [f2,f3,f4,f5]@2 [f2,f3,f4,f5] [d2,d3,d4,d5]@2", // D F D F D
})).s("gm_piano").gain(0.5)

// chords · piano · soft notes
const piano_soft = note("<~@3 A@7 B ~@25 C ~@18 D E@2 ~@27>".pickRestart({
  A: "[d4@2 d4@2 ~@24 d4@4 d4@2 ~@26 c4@4 c4@2 ~@24 f4@2 f4@4 ~@8 a3@2 ~ a3@2 ~ [a2,e4]@2, ~@4 [f2,a4]@10 f4@2 g4@8 d3@2 a3@16 bb3@10 e4@2 g2@18 a3@4 e4@10 f3@2 bb3@2 d4@6 f4@2 g4@2 [a3,a4]@2 a2@4 a2@3 a3@3, ~@3 c3@6 f4@8 d4 [bb2,bb4]@7 g4@8 c4 a2@5 a4 bb4@16, ~@4 f3@6 d2@9 d3@7 e2@8 c5 e3@6 c5@15, ~@5 a3 c4@4 d4 a2@9 g3@2 d4 g4 a4@4 e3 [g3,d4]@8 c4@5 [bb2,d5]@14]/7", // A5 F A Bb G5 Bb
  B: "[a3,f4] [a2,g4] ~@6", C: "~@3 f3@2 ~@3, ~ d3@3", D: "~@8 d3@2 ~ d3@2 d3@3, ~@3 d2@2 d2@2 ~", E: "~ d2 ~@6",
})).s("gm_piano").gain(0.25)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  ~@8 A B@3 C B C D E F G H I J B C B C D E F G H I J B C B K ~@3 L@4 M N O N P Q R S T Q U V ~@3 V W P X C D E F G H I
  J B C B C D E F G H I Y Z@2 AA
>`.pickRestart({
  A: "~@4 d2@4 d2@3 d2@2 d2 d2@2", B: "c2@2 db2@2 d2@4 d2@3 d2@2 d2 d2@2", C: "g2@2 f2@2 d2@4 d2@3 d2@2 d2 d2@2",
  D: "c3@2 d3@2 bb2@4 bb2@3 bb2@2 bb2 bb2@2", E: "a3@2 bb3@2 g2@4 g2@3 g2@2 g2 g2@2",
  F: "f3@2 g3@2 c3@4 c3@3 c3@2 c3 c3@2", G: "bb2@2 c3@2 a2@4 a2@3 a2@2 a2 a2@2",
  H: "g2@2 a2@2 bb2@4 bb2@3 bb2@2 bb2 bb2@2", I: "a2@2 bb2@2 f2@4 f2@3 f3@2 f3 f2@2",
  J: "bb3@2 c4@2 d2@4 d2@3 d2@2 d2 d2@2", K: "g2 f2 ~@6",
  L: "[~@4 d2@16 bb1@16 g1@16 c3@2 c3@2 g3@2 f3 c3@2 f3 c3@2]/4", M: "g2@2 c2@2 d2@2 d1@2 d2@2 d1 d2@2 d2 d1@2",
  N: "c2@2 db2@2 d2@2 d1@2 d2@2 d1 d2@2 d2 d1@2", O: "g2@2 f2@2 d2@2 d1@2 d2@2 d1 d2@2 d2 d1@2", P: "g2 f2 d2 ~@5",
  Q: "~@2 bb1 ~@5", R: "~@2 g1 ~@5", S: "~@2 c2 ~@5", T: "~@2 a1 ~@5", U: "~@2 f1 ~@5", V: "~@2 d2 ~@5", W: "d2!2 ~@2",
  X: "c2@2 db2@2 d2@2 ~@5 d2@3 d2@2", Y: "bb3@2 c4@2 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2",
  Z: "d3@2 d2@2 d2@2 d2@2 d3@2 d2 d3@2 d3 d2@2", AA: "d3@2 d2@2 d2@2 d2@2 f2@2 d2 f2@2 f2 d2@2",
})).s("gm_electric_bass_finger").gain(0.5)

// other · vibraphone
const vibraphone = note(`<
  ~@7 A B C D E F E F G H I J K L M N O N F G H I J K L M N O N P@8 Q R S R T U V W X Y Z AA ~@7 F G H I J K L M N O N F
  G H I J K L AB AC@2 AD
>`.pickRestart({
  A: "~ c5 a4 f4", B: "d4 d5 a4 g4", C: "f4 g4 a4@4 ~ e4", D: "f4@2 g4@2 d5@2 d4@2 d5@2 d4 d5@2 d5 d4@2",
  E: "c5@2 db5@2 d5@2 d4@2 d5@2 d4 d5@2 d5 d4@2", F: "g5@2 f5@2 d5@2 d4@2 d5@2 d4 d5@2 d5 d4@2",
  G: "c5@2 d5@2 bb5@2 bb4@2 bb5@2 bb4 bb5@2 bb5 bb4@2", H: "a5@2 bb5@2 g5@2 g4@2 g5@2 g4 g5@2 g5 g4@2",
  I: "f5@2 g5@2 c5@2 c4@2 c5@2 c4 c5@2 c5 c4@2", J: "bb4@2 c5@2 a4@2 a3@2 a4@2 a3 a4@2 a4 a3@2",
  K: "g4@2 a4@2 bb4@2 bb3@2 bb4@2 bb3 bb4@2 bb4 bb3@2", L: "a4@2 bb4@2 f5@2 f4@2 f5@2 f4 c6@2 c6 c5@2",
  M: "bb5@2 c6@2 d5@2 d4@2 [d5,d6]@2 d4 [d5,d6]@2 [d5,d6] d4@2", // D
  N: "[c5,c6]@2 [db5,db6]@2 d5@2 d4@2 [d5,d6]@2 d4 [d5,d6]@2 [d5,d6] d4@2", // C Db D
  O: "g5@2 f5@2 d5@2 d4@2 [d5,d6]@2 d4 [d5,d6]@2 [d5,d6] d4@2", // D
  P: "[g5@2 f5@2 ~@4 a5@2 ~ a5@2 ~@11 bb5@2 ~ bb5@2 ~@11 bb5@2 ~ bb5@2 ~@11 bb5@2 ~ bb5@2 ~@11 a5@2 ~ a5@2 ~@11 bb5@2 ~ bb5@2 ~@11 bb5@2 ~ bb5@2 ~@14 c5@2 ~ c5@2, ~@4 d5@12 d5@18 f5@28 g5@2 c5@18 f5@2 bb4@2 f5@4 f5@3 bb5@7 g4@10 d5@2 g4@4 c5@2 f5@2 g5@2 f5@3 f5@3, ~@6 f5@4 f5@3 a5@25 d5@4 d5@3 bb5@5 d5@16 g5@28 f5@2 bb4@32, ~@14 f5@4 f5@4 f5@4 f5@3 bb5@7 g4@10 d5@2 g4@20 d5@2 f5@4 f5@3 a5@25 d5@4 d5@3 bb5@19, ~@20 bb4@10 f5@2 bb4@20 c5@2 g5@4 g5@3 bb5@17 f5@2 d5@18 f5@16 d5@14]/8",
  Q: "~@2 c4@2 d4@2 d3@2 d4@2 d3 d4@2 d4 d3@2, g4 ~@3", R: "c4@2 db4@2 d4@2 d3@2 d4@2 d3 d4@2 d4 d3@2",
  S: "g4@2 f4@2 d4@2 d3@2 d4@2 d3 d4@2 d4 d3@2", T: "g4@2 f4@2 [d4,d5]@2 a5@2 f6@2 a5 f6@2 f6 a5@2",
  U: "d5@2 a5@2 [bb3,bb4]@2 d5@2 f5@2 d5 f5@2 f5 d5@2", V: "bb4@2 a4@2 [g3,g4]@2 d5@2 g5@2 d5 g5@2 g5 d5@2",
  W: "g4@2 d5@2 [c4,c5]@2 e5@2 a5@2 e5 a5@2 a5 e5@2", X: "d5@2 bb4@2 [a3,a4]@2 e5@2 a5@2 e5 a5@2 a5 e5@2",
  Y: "a5@2 f5@2 [bb3,bb4]@2 f5@2 bb5@2 f5 bb5@2 bb5 f5@2", Z: "bb4@2 f5@2 [f3,f4]@2 c5@2 a5@2 c5 [c4,c5]@2 c5 g5@2",
  AA: "e5 c5 [d4,d5]@6", AB: "bb5@2 c6@2 d5@2 d4@2 d5@2 d4 d5@2 d5 d4@2",
  AC: "d5@2 d4@2 d4@2 d4@2 d5@2 d4 d5@2 d5 d4@2", AD: "d5@2 d4@2 d4@2 d4@2 f4@2 d4 f4@2 f4 d4@2",
})).s("gm_vibraphone").gain(0.5)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@25 A B C D E F G H I J I K ~@7 L@2 M N O P Q R S T U V ~@18 A B C D E F G W X@2 Y
>`.pickRestart({
  A: "d4!2 a4@4 ~ f4", B: "g4 f4 d4 ~@5", C: "d4!2 bb4@4 ~ g4", D: "a4 g4 e4@3 d4 c4 ~", E: "c4!2 c5@4 ~ a4",
  F: "bb4 c5 d5@3 f4 f4@2", G: "f4 g4 a4@4 ~ e4", H: "f4@2 g4@2 f4@4 d5@2 ~ d5@2 d5 ~@2",
  I: "c5@2 db5@2 ~@4 d5@2 ~ d5@2 d5 ~@2", J: "g5@2 f5@2 ~@4 d5@2 ~ d5@2 d5 ~@2", K: "g5 f5 ~@6",
  L: "~@6 d4@2 f4 d4@2 f4@2 f4 d4@2", M: "~@6 d3@2 d4 d3@2 d4@2 d4 d3@2", N: "~@6 d3@2 d4 d3@2 d5@2 d5 d4@2",
  O: "g4@2 f4@2 d4@2 a4@2 f5@2 a4 f5@2 f5 a4@2", P: "d4@2 a4@2 bb3@2 d4@2 f4@2 d4 f4@2 f4 d4@2",
  Q: "bb3@2 a3@2 g3@2 d4@2 g4@2 d4 g4@2 g4 d4@2", R: "g3@2 d4@2 c4@2 e4@2 a4@2 e4 a4@2 a4 e4@2",
  S: "d4@2 bb3@2 a3@2 e4@2 a4@2 e4 a4@2 a4 e4@2", T: "a4@2 f4@2 bb3@2 f4@2 bb4@2 f4 bb4@2 bb4 f4@2",
  U: "bb3@2 f4@2 f3@2 c4@2 a4@2 c4 c4@2 c4 g4@2", V: "e4 c4 d4@2 ~@4", W: "f4@2 g4@2 f4@2 d4@2 f4@2 d4 f4@2 f4 d4@2",
  X: "~@6 d4@2 f4@2 d4 f4@2 f4 d4@2", Y: "~@6 d5@2 f5@2 d5 f5@2 f5 d5@2",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@25 A B C D E F G H I J I K ~@7 L@2 M N O P Q R S T U V ~@18 A B C D E F G W X@3
>`.pickRestart({
  A: "d3!2 a3@4 ~ f3", B: "g3 f3 d3 ~@5", C: "d3!2 bb3@4 ~ g3", D: "a3 g3 e3@3 d3 c3 ~", E: "c3!2 c4@4 ~ a3",
  F: "bb3 c4 d4@3 f3 f3@2", G: "f3 g3 a3@4 ~ e3", H: "f3@2 g3@2 f3@4 d3@2 ~ d3@2 d3 ~@2",
  I: "c3@2 db3@2 ~@4 d3@2 ~ d3@2 d3 ~@2", J: "g3@2 f3@2 ~@4 d3@2 ~ d3@2 d3 ~@2", K: "g3 f3 ~@6",
  L: "~@6 d3@2 f3 d3@2 f3@2 f3 d3@2", M: "~@6 d3@2 d4 d3@2 d4@2 d4 d3@2", N: "~@6 d3@2 d4 d3@2 d5@2 d5 d4@2",
  O: "d4!2 a4@4 ~ f4", P: "g4 f4 d4@6", Q: "d4!2 bb4@4 ~ g4", R: "a4 g4 e4@3 d4 c4 ~", S: "c4!2 c5@4 ~ a4",
  T: "bb4 c5 d5@3 f4 f4@2", U: "f4 g4 a4@4 ~ e4", V: "f4 g4 f4@2 ~@4", W: "f3@2 g3@2 f3@2 d3@2 f3@2 d3 f3@2 f3 d3@2",
  X: "~@6 d3@2 f3@2 d3 f3@2 f3 d3@2",
})).s("gm_tenor_sax").gain(0.45)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@10 A B C B C D E F G H I J B C B C D E F G H I J B C B K ~@6 L M N O N P Q R S T Q U V ~@3 W X Y Z C D E F G H I J B
  C B C D E F G H I AA AB AC@2
>`.pickRestart({
  A: "~@4 d3@4 d3@3 d3@2 d3 d3@2", B: "c3@2 db3@2 d3@4 d3@3 d3@2 d3 d3@2", C: "g3@2 f3@2 d3@4 d3@3 d3@2 d3 d3@2",
  D: "c4@2 d4@2 bb3@4 bb3@3 bb3@2 bb3 bb3@2", E: "a3@2 bb3@2 g3@4 g3@3 g3@2 g3 g3@2",
  F: "f3@2 g3@2 c4@4 c4@3 c4@2 c4 c4@2", G: "bb3@2 c4@2 a3@4 a3@3 a3@2 a3 a3@2",
  H: "g3@2 a3@2 bb3@4 bb3@3 bb3@2 bb3 bb3@2", I: "a3@2 bb3@2 f2@4 f2@3 f3@2 f3 f2@2",
  J: "bb3@2 c4@2 d3@4 d3@3 d3@2 d3 d3@2", K: "g3 f3 ~@6", L: "~@8 g4@2 f4 c4@2 f4 c4@2",
  M: "g3@2 c3@2 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2", N: "c3@2 db3@2 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2",
  O: "g3@2 f3@2 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2", P: "g3 f3 d3 ~@5", Q: "~@2 bb2 ~@5", R: "~@2 g2 ~@5", S: "~@2 c3 ~@5",
  T: "~@2 a2 ~@5", U: "~@2 f2 ~@5", V: "~ d3 ~@2", W: "~@2 d2 ~@5", X: "d2!2 ~@2", Y: "g2 f2 d2 ~@5",
  Z: "c2@2 db2@2 d2@2 ~@5 d2@3 d2@2", AA: "bb3@2 c4@2 d3@2 d2@2 d3@2 d2 d3@2 d3 d2@2",
  AB: "d3@2 d2@2 d2@2 d2@2 d3@2 d2 d3@2 d3 d2@2", AC: "[d3@2 d2@2 d2@16 d2@2 d2@2 f2@2 d2 f2@2 f2 d2@2]/2",
})).s("gm_baritone_sax").gain(0.5)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B@2 ~@11 C D E F G H I J K L K M N O P Q R S T K U V W ~@9 X Y Z D AA AB G H I AC ~@7 C D E F G H I J K L K M N O P
  Q R S AD AE@2 AF
>`.pickRestart({
  A: "~@8 f4 ~ g4 f4 ~ d4 eb4 ~", B: "[g4 f4 ~ c4 bb3@3 d5 e5 [f5,bb5] c6 d6@13 ~@8]/2", C: "d4!2 a4@5 f4",
  D: "g4 f4 d4@6", E: "d4!2 bb4@5 g4", F: "a4 g4 e4@3 d4 c4@2", G: "c4!2 c5@4 ~ a4", H: "bb4 c5 d5@3 f4 f4@2",
  I: "f4 g4 a4@4 ~ e4", J: "f4@2 g4@2 f4@4 d5@2 ~ d5@2 d5 ~@2", K: "c5@2 db5@2 ~@4 d5@2 ~ d5@2 d5 ~@2",
  L: "g5@2 f5@2 ~@4 d5@2 ~ d5@2 d5 ~@2", M: "g5 f5 a5@5 f5", N: "g5 f5 d5@6", O: "d5!2 bb5@5 g5",
  P: "a5 g5 e5@3 d5 c5@2", Q: "c5!2 c6@4 ~ a5", R: "bb5 c6 d6@3 f5 f5@2", S: "f5 g5 a5@4 ~ e5",
  T: "f5@2 g5@2 f5@4 d5@2 ~ d5@2 d5 ~@2", U: "g5@2 f5@2 ~@4 d6@2 ~ d6@2 d6 ~@2", V: "c6@2 db6@2 ~@4 d6@2 ~ d6@2 d6 ~@2",
  W: "g6 f6 ~@6", X: "~@6 d4@2 d5 d4@2 d5@2 d5 d4@2", Y: "~@6 d4@2 d5 d4@2 d6@2 d6 d5@2", Z: "d4!2 a4@4 ~ f4",
  AA: "d4!2 bb4@4 ~ g4", AB: "a4 g4 e4@3 d4 c4 ~", AC: "f4 g4 f4@2 ~@4", AD: "f5@2 g5@2 f5@2 d5@2 f5@2 d5 f5@2 f5 d5@2",
  AE: "~@6 d5@2 f5@2 d5 f5@2 f5 d5@2", AF: "~@6 d6@2 f6@2 d6 f6@2 f6 d6@2",
})).s("gm_trumpet").gain(0.45)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  A B@2 ~@18 C D E D F G H I J K L M D N O P ~@9 Q R S T U V W X Y Z ~@14 C D E D F G H I J K L AA AB@3
>`.pickRestart({
  A: "~@8 bb4 ~ c5 bb4 ~ f4 g4 ~", B: "[c5 bb4 ~ f4 c5@20 ~@8]/2", C: "~@8 d4@2 ~ d4@2 d4 ~@2",
  D: "c4@2 db4@2 ~@4 d4@2 ~ d4@2 d4 ~@2", E: "g4@2 f4@2 ~@4 d4@2 ~ d4@2 d4 ~@2", F: "g4 f4 a4@5 f4", G: "g4 f4 d4@6",
  H: "d4!2 bb4@5 g4", I: "a4 g4 e4@3 d4 c4@2", J: "c4!2 c5@4 ~ a4", K: "bb4 c5 d5@3 f4 f4@2", L: "f4 g4 a4@4 ~ e4",
  M: "f4@2 g4@2 f4@4 d4@2 ~ d4@2 d4 ~@2", N: "g4@2 f4@2 ~@4 d5@2 ~ d5@2 d5 ~@2", O: "c5@2 db5@2 ~@4 d5@2 ~ d5@2 d5 ~@2",
  P: "g5 f5 ~@6", Q: "~@6 d4@2 d5 d4@2 d5@2 d5 d4@2", R: "~@6 d4@2 d5 d4@2 d5@2 d5 d5@2",
  S: "~@6 a4@2 f5@2 a4 f5@2 f5 a4@2", T: "d4@2 a4@2 bb3@2 d4@2 f4@2 d4 f4@2 f4 d4@2",
  U: "bb3@2 a3@2 g3@2 d4@2 g4@2 d4 g4@2 g4 d4@2", V: "g3@2 d4@2 c4@2 e4@2 a4@2 e4 a4@2 a4 e4@2",
  W: "d4@2 bb3@2 a3@2 e4@2 a4@2 e4 a4@2 a4 e4@2", X: "a4@2 f4@2 bb3@2 f4@2 bb4@2 f4 bb4@2 bb4 f4@2",
  Y: "bb3@2 f4@2 f3@2 c4@2 a4@2 c4 c4@2 c4 g4@2", Z: "e4 c4 d4@2 ~@4", AA: "f4@2 g4@2 f4@2 d4@2 f4@2 d4 f4@2 f4 d4@2",
  AB: "~@6 d4@2 f4@2 d4 f4@2 f4 d4@2",
})).s("gm_trumpet").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~ A B ~@7 C D@25 E ~@6 F G D@10 H ~@6 A G D@21>".pickRestart({
  A: "~@6 x!2", B: "x ~@2 x ~@2 x ~@9", C: "~@2 x!2 ~ x ~ x", D: "~ x!3 ~ x ~ x", E: "~ x ~@6",
  F: "~@4 x ~ x ~ x ~ x!2 ~ x!2 ~", G: "x ~ x!3 ~ x ~@3 x ~@3 x ~", H: "~ x!2 ~@5",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@10 A B@25 C ~@6 D B@11 C ~@6 E B@22>".pickRestart({
  A: "~@8 x ~@2 x ~ x ~@2", B: "x ~@7 x ~@2 x ~ x ~@2", C: "x", D: "~@4 x ~ x ~ x ~ x!2 ~@4", E: "~@6 x!2",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~ A B ~@7 C D@25 E ~@6 A F D@10 G ~@7 F D@21>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@12", C: "~@2 x!2 ~ x ~ x", D: "~ x!3 ~ x ~ x", E: "~ x ~@6", F: "~@3 x!2 ~ x ~@3 x ~@3 x ~",
  G: "~ x!2 ~@5",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@10 A B@25 C ~@7 A B@10 D ~@6 E A B@20 F>".pickRestart({
  A: "~@4 x ~ x ~ x ~ x!2 ~ x!2 ~", B: "x ~@3 x ~ x ~ x ~ x!2 ~ x!2 ~", C: "x", D: "x!2 ~@2", E: "~@7 x",
  F: "x ~@3 x ~ x ~ x ~ x!2 ~ x ~@2",
// … 22 more lines