Strudelify

Super Mario Galaxy 2 - Throwback Galaxy

Mahito Yokota Ryo Nagamatsu and Koji Kondo

KeyC majorTempo234 bpm
0:00/0:00
// Super Mario Galaxy 2 - Throwback Galaxy — Mahito Yokota Ryo Nagamatsu and Koji Kondo
// 234 bpm, 2/2, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/2 at bar 1, 1/4 at bar 35, 3/4 at bar 36, 2/2 at bar 36, ...) are rendered on a constant 2/2 grid of one bar per cycle
// note: ch 1 "Alto Sax" named as a reed, played on alto sax (its electric bass finger patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/3147816; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(234/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 · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@19 A B C D E F G H A B I D J F K L@2 ~@28 M N O P ~@15 A B C D E F G H A B I D J F K L@2
>`.pickRestart({
  A: "~@12 d3@3 d#3", B: "e3@3 d#3 e3@3 g3 ~@3 a3 g3@2 ~@2", C: "c3@2 ~@10 g3@3 g#3",
  D: "a3@3 g#3 a3@3 c4 ~@3 d4 c4@2 ~@2", E: "a3@2 ~@13 g#3", F: "g3@3 f#3 g3@3 g4 ~@4 g3@3 f#3",
  G: "g3@2 f#4 ~ g4 ~@3 g3@3 f#3 g3@3 g4", H: "~@4 g3@2 ~@2 a3@3 g3 ~@3 d3", I: "a#3 ~@5 g#3 ~", J: "a3 ~@5 g#3 ~",
  K: "g3@3 g4 ~@3 g3 f3 e3 ~@2 f3 e3 ~@2", L: "[c3@5 ~@3]/2", M: "c3!2", N: "c3@2 ~ g3", O: "a3 ~ a3 ~ a3 ~ c4 ~",
  P: "d#4 ~@3",
})).s("gm_tenor_sax").gain(0.72).pan(0.3)

// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
  ~@19 A B C D E F G H A B I J K L M N@2 ~@28 O P Q R ~@15 A B C D E F G H A B I J K L M N@2
>`.pickRestart({
  A: "~@12 d3@3 d#3", B: "e3@3 d#3 e3@3 g3 ~@3 a3 g3@2 ~@2", C: "c3@2 ~@10 g2@3 g#2",
  D: "a2@3 g#2 a2@3 c3 ~@3 d3 c3@2 ~@2", E: "a2@2 ~@13 g#2", F: "g2@3 f#2 g2@3 g3 ~@4 g2@3 f#2",
  G: "g2@2 f#3 ~ g3 ~@3 g2@3 f#2 g2@3 g3", H: "~@4 g3@2 ~@2 a3@3 g3 ~@3 d3", I: "a#3 ~@5 g#3 ~",
  J: "a3@3 g#3 a3@3 c4 ~@3 d4 c4@2 ~@2", K: "a3 ~@5 g#3 ~", L: "g3@3 f#3 g3@3 g2 ~@4 g3@3 f#3",
  M: "g3@3 g2 ~@3 g2 f3 e3 ~@2 f3 e3 ~@2", N: "[c3@5 ~@3]/2", O: "c3!2", P: "c3@2 ~ c3", Q: "d#3 ~ d#3 ~ d#3 ~ d#3 ~",
  R: "d#3 ~@3",
})).s("gm_baritone_sax").gain(0.72).pan(0.1)

// other · trumpet · "Trumpet 1"
const trumpet = note(`<
  A B C@2 ~@14 D@2 E F ~ G H@2 I@2 ~ J ~ K H@2 L@2 M N O@2 M N P@2 Q R S@2 Q R T@2 ~@6 U V ~@6 W X ~@14 D@2 E F ~ G H@2
  I@2 ~ J ~ K H@2 Y@2
>`.pickRestart({
  A: "c6@2 ~@2 a5@2 ~@2 c6@4 d6@3 c6", B: "~@3 e5@5 f5@2 ~@2 f#5@2 ~@2", C: "[g5@2 ~@2 g5@4 g5@2 ~ g5 ~@3 g5@5 ~@12]/2",
  D: "[~@8 g4@3 a4 ~@3 c5@5 d5@3 c5 ~@3 d4 d#4@4]/2", E: "e4 ~@3", F: "~@8 g5@6 e5 c5", G: "~@8 f5@6 c5 a4",
  H: "[~@15 g5@17]/2", I: "[a4@2 ~@5 c5 ~@4 d5@12 ~@8]/2", J: "a#4@4 c5@4 d5@3 e5 ~@3 c5",
  K: "~@4 c5@4 d#5@3 d5 ~@3 c5", L: "[~@4 c6@2 ~@2 a#5@3 b5 ~@3 c6@5 ~@4 e5@3 f5 g5@3 g#5]/2", M: "a5@3 g#5",
  N: "g5@3 f#5", O: "[f5@4 ~@3 g5 ~@4 e5@8 ~@4 e5@3 f5 g5@3 g#5]/2", P: "[f5@4 ~@3 e5 ~@4 c5@12 ~@8]/2",
  Q: "a5!2 g#5!2", R: "g5!2 f#5!2", S: "[f5@4 ~@3 g5@3 ~@2 e5@12 ~@8]/2", T: "[f5@4 ~@3 e5 ~@4 c5@11 ~@9]/2",
  U: "a4 ~ a4 ~ a4 ~ a4 ~", V: "g#4 ~@3", W: "a4 ~ a4 ~ a4 ~ c5 ~", X: "d#5 ~ d5@2",
  Y: "[~@4 c6@2 ~@2 a#5@3 b5 ~@3 c6@5 ~@12]/2",
})).s("gm_trumpet").gain(0.36).pan(0.4)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
  A B C@2 ~@14 D@2 E F ~ G H@2 I@2 ~ J ~ K L@2 M@2 N O P@2 N O Q@2 R S T@2 R S U@2 V@2 W@2 V@2 X Y V@2 W@2 V@2 X Z ~@14
  D@2 E F ~ G H@2 I@2 ~ J ~ K L@2 AA@2
>`.pickRestart({
  A: "c5@2 ~@2 a4@2 ~@2 c5@4 d5@3 c5", B: "~@3 e4@5 f4@2 ~@2 f#4@2 ~@2", C: "[g4@2 ~@6 g5@2 ~ g5 ~@3 g5@5 ~@12]/2",
  D: "[~@8 g4@3 a4 ~@3 c5@5 d5@3 c5 ~@3 d4 d#4@4]/2", E: "e4 ~@3", F: "~@8 g5@6 e5 c5", G: "~@8 f5@6 c5 a4",
  H: "[~@15 g4@17]/2", I: "[a4@2 ~@5 a4 ~@4 g4@12 ~@8]/2", J: "a#4@4 c5@4 d5@3 e5 ~@3 c5",
  K: "~@4 c5@4 d#5@3 d5 ~@3 c5", L: "[~@15 g5@17]/2", M: "[~@4 c5@2 ~@2 a#4@3 b4 ~@3 c5@5 ~@4 e5@3 f5 g5@3 g#5]/2",
  N: "f5@3 f5", O: "e5@3 d#5", P: "[c5@4 ~@3 e5 ~@4 c5@8 ~@4 e5@3 f5 g5@3 g#5]/2", Q: "[c5@4 ~@3 b4 ~@4 g4@12 ~@8]/2",
  R: "f5!4", S: "e5!2 d#5!2", T: "[c5@4 ~@3 e5@3 ~@2 c5@12 ~@8]/2", U: "[c5@4 ~@3 b4 ~@4 g4@11 ~@9]/2",
  V: "c5@3 c4 ~@3 a#4 ~@8", W: "a4@3 c4 ~@3 d#4 ~@8", X: "f4 ~ f4 ~ f4 ~ f4 ~", Y: "f4 ~@3", Z: "f4 ~ b4@2",
  AA: "[~@4 c5@2 ~@2 a#4@3 b4 ~@3 c5@5 ~@12]/2",
})).s("gm_trumpet").gain(0.36).pan(0.6)

// other · trumpet · "Trumpet 3"
const trumpet_3 = note(`<
  A B C@2 ~@14 D@2 E F ~ G H@2 I@2 ~ J ~ K@3 L@2 M N O@2 M N P@2 Q R S@2 Q R T@2 ~@7 U ~@6 V W ~@14 D@2 E F ~ G H@2 I@2
  ~ J ~ K@3 X@2
>`.pickRestart({
  A: "c5@2 ~@2 a4@2 ~@2 c5@4 d5@3 c5", B: "~@3 e4@5 f4@2 ~@2 f#4@2 ~@2", C: "[g4@2 ~@6 g4@2 ~ g4 ~@3 g4@5 ~@12]/2",
  D: "[~@8 g4@3 a4 ~@3 c5@5 d5@3 c5 ~@3 d4 d#4@4]/2", E: "e4 ~@3", F: "~@8 e5@6 c5 g4", G: "~@8 c5@6 a4 f4",
  H: "[~@15 b3@17]/2", I: "[~@7 e4 ~@4 d4@12 ~@8]/2", J: "e4@4 e4@4 e4@3 e4 ~@3 f4",
  K: "[~@4 f#4@4 f#4@3 f#4 ~@3 g4@33]/3", L: "[~@4 c5@2 ~@2 a#4@3 b4 ~@3 c5@5 ~@4 e4@3 f4 g4@3 g#4]/2", M: "c5@3 c5",
  N: "b4@3 a#4", O: "[a4@4 ~@3 b4 ~@4 g4@8 ~@4 e4@3 f4 g4@3 g#4]/2", P: "[a4@4 ~@3 g4 ~@4 e4@12 ~@8]/2", Q: "c5!4",
  R: "b4!2 a#4!2", S: "[a4@4 ~@3 b4@3 ~@2 g4@12 ~@8]/2", T: "[a4@4 ~@3 g4 ~@4 e4@11 ~@9]/2",
  U: "~@8 g4 f#4 f4 e4 d#4 d4 c#4 c4", V: "d#4 ~ d#4 ~ d#4 ~ f4 ~", W: "f4 ~ g4@2",
  X: "[~@4 c5@2 ~@2 a#4@3 b4 ~@3 c5@5 ~@12]/2",
})).s("gm_trumpet").gain(0.34)

// other · trombone · "Trombone 1"
const trombone = note(`<
  A B C@2 ~@14 D@2 E F ~ G H@2 I@2 ~ J ~ K L@2 M@2 N@2 O@2 N P Q@2 R@2 S@2 R T U@2 ~@6 V W ~@6 V X ~@14 D@2 E F ~ G H@2
  I@2 ~ J ~ K L@2 M@2
>`.pickRestart({
  A: "c4@2 ~@2 a3@2 ~@2 c4@4 d4@3 c4", B: "~@3 e3@5 f3@2 ~@2 f#3@2 ~@2", C: "[g3@2 ~@6 g3@2 ~ g3 ~@3 g3@5 ~@12]/2",
  D: "[~@8 g3@3 a3 ~@3 c4@5 d4@3 c4 ~@3 b3 c4@4]/2", E: "c4 ~@3", F: "~@8 g4@6 e4 c4", G: "~@8 f4@6 c4 a3",
  H: "[~@15 g3@17]/2", I: "[a3@2 ~@5 a3 ~@4 [d3,d4]@12 ~@8]/2", J: "a#3@4 c4@4 d4@3 e4 ~@3 c4",
  K: "~@4 c4@4 d#4@3 d4 ~@3 c4", L: "[~@3 g3@5]/2", M: "[~@4 c4@2 ~@2 a#3@3 b3 ~@3 c4@5 ~@12]/2", N: "c4@3 c4",
  O: "[c4@4 ~@3 c4 ~@4 c4@8 ~@12]/2", P: "c4@3 c#4", Q: "[d4@4 ~@3 e4 ~@4 c4@12 ~@8]/2", R: "c4!4",
  S: "[c4@4 ~@3 c4@3 ~@2 c4@12 ~@8]/2", T: "b3!2 a#3!2", U: "[a3@4 ~@3 c4 ~@4 e4@11 ~@9]/2",
  V: "d#4 ~ d#4 ~ d#4 ~ d#4 ~", W: "d#4 ~@3", X: "d#4 ~ b3@2",
})).s("gm_trombone").gain(0.34).pan(0.7)

// other · trombone · "Trombone 2"
const trombone_2 = note(`<
  A B C@2 ~@14 D@2 E F ~ G H@2 I@2 ~ J ~ K@3 L@2 M N O@2 M N P@2 Q R S@2 Q R T@2 ~@6 U V ~@6 W X ~@14 D@2 E F ~ G H@2
  I@2 ~ J ~ K@3 L@2
>`.pickRestart({
  A: "c4@2 ~@2 a3@2 ~@2 c4@4 d4@3 c4", B: "~@3 e3@5 f3@2 ~@2 f#3@2 ~@2", C: "[g3@2 ~@6 g3@2 ~ g3 ~@3 g3@5 ~@12]/2",
  D: "[~@8 g3@3 a3 ~@3 c4@5 d4@3 c4 ~@3 f3 f#3@4]/2", E: "g3 ~@3", F: "~@8 c4@6 g3 e3", G: "~@8 a3@6 f3 c3",
  H: "[~@15 d#3@17]/2", I: "[d3@2 ~@5 f#3 ~@4 g3@12 ~@8]/2", J: "g3@4 g3@4 c4@3 c4 ~@3 c4",
  K: "[~@4 a3@4 a3@3 a3 ~@3 g3@25 g3@8]/3", L: "[~@4 c4@2 ~@2 a#3@3 b3 ~@3 c4@5 ~@12]/2", M: "a3@3 g#3", N: "g3@3 f#3",
  O: "[f3@4 ~@3 e3 ~@4 c3@8 ~@12]/2", P: "[f3@4 ~@3 g3 ~@4 c3@12 ~@8]/2", Q: "a3!2 g#3!2", R: "g3!2 f#3!2",
  S: "[a3@4 ~@3 b3@3 ~@2 g3@12 ~@8]/2", T: "[f3@4 ~@3 g3 ~@4 c3@11 ~@9]/2", U: "f3 ~ f3 ~ f3 ~ f3 ~", V: "d#3 ~@3",
  W: "a3 ~ a3 ~ a3 ~ a3 ~", X: "a3 ~ g3@2",
})).s("gm_trombone").gain(0.34).pan(0.3)

// chords · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note(`<
  A B C@2 D E F G H I J K D L F M N O P Q D E F G H I J K D L F M N O P R S T U T S T U T V@3 W X@2 Y@2 Z AA AB AC AD AE
  AF AG AH AI AB AJ AD AE AK AL D E F G H I J K D L F M N O P Q D E F G H I J K D L F M N O P AM
>`.pickRestart({
  A: "c5@2 ~@2 a4@2 ~@2 c5@4 d5@3 c5", B: "~@3 e5@5 f5@2 ~@2 f#5@2 ~@2",
  C: "[g5@2 ~@6 [g4,g5]@3 [g4,g5] ~@3 [g4,g5]@5 ~@12]/2", D: "[c4,e4,g4]@2 ~@5 [c4,e4,g4] ~@4 [c4,e4,g4]@2 ~@2",
  E: "~@2 [c4,e4,g4] ~ [c4,e4,g4] ~@3", F: "[c4,f4,a4]@2 ~@5 [c4,f4,a4] ~@4 [c4,f4,a4]@2 ~@2",
  G: "~@2 [c4,f4,a4] ~ [c4,f4,a4] ~@3", // F
  H: "[c4,e4,g4]@2 ~ [c4,e4,g4] [c4,e4,g4]@3 [c4,e4,g4] ~@4 [b3,d#4,g4]@2 ~ [b3,d#4,g4]", // C Baug
  I: "[b3,d#4,g4]@3 [b3,d#4,g4] ~@4 [b3,d#4,g4]@2 ~ [b3,d#4,g4] [b3,d#4,g4]@3 [b3,d#4,g4]", // Baug
  J: "[a3,d4,f#4]@4 [a3,d4,f#4]@3 [a3,d4,f#4] ~@4 [b3,d4,g4]@4", K: "[b3,d4,g4] [b3,f4,g4] [b3,f4,g4]@2",
  L: "[c4,e4,a#4]@2 ~ [c4,e4,a#4] ~@4 [c4,e4,a#4]@2 ~ [c4,e4,a#4] ~@4", // C7
  M: "[c4,f#4,a4]@2 ~ [c4,f#4,a4] ~@4 [c4,f#4,a4]@2 ~ [c4,f#4,a4] ~@4", // F#dim
  N: "[b3,d4,g4]@2 ~ [b3,d4,g4] [b3,d4,g4]@3 [b3,d4,g4] ~@4 [b3,f4,g4]@2 ~ [b3,f4,g4]", // G G7
  O: "[b3,f4,g4]@3 [b3,f4,g4] ~@4 [b3,f4,g4]@2 ~ [b3,f4,g4] [b3,f4,g4]@3 [b3,f4,g4]", // G7
  P: "[c4,e4,g4]@4 [c4,e4,g4]@2 ~ [c4,e4,g4] ~@4 [c4,e4,g4]@2 ~ [c4,e4,g4]", Q: "[c4,e4,g4] [b3,d#4,g4]@2 ~",
  R: "[c4,e4,g4] c4 d4 e4", // C
  S: "[c4,f4,c5]@3 [c4,f4,c5] [c4,f4,c5]@3 [c4,f4,c5] [c4,f4,c5]@3 [c4,f4,c5] [c4,f4,c5]@3 [c4,f4,c5]", // F5
  T: "[c4,g4,c5]@3 [c4,g4,c5] [c4,g4,c5]@3 [c4,g4,c5] [c4,g4,c5]@3 [c4,g4,c5] [c4,g4,c5]@3 [c4,g4,c5]", // C5
  U: "[d4,a4,d5]@3 [d4,a4,d5] [d4,a4,d5]@3 [d4,a4,d5] [d4,a4,d5]@3 [d4,a4,d5] [d4,a4,d5]@3 [d4,a4,d5]", // D5
  V: "[c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~", // C
  W: "[c4,c5]@3 [c4,c5] [c4,c5]@3 [c4,c5] [c4,c5]@3 [c4,c5] [c4,c5]@3 [c4,c5]", X: "[c4,c5]!4",
  Y: "[[c4,c5]@4 [c4,c5]@4 [c4,c5]@3 [c4,c5] [c4,c5]@20]/2", // C
  Z: "[e4,a#4,c5]@2 ~ [e4,a#4,c5] ~@3 [e4,a#4,c5] [e4,a#4,c5]@2 ~ [e4,a#4,c5] [e4,a#4,c5]@3 ~", // C7
  AA: "[e4,a#4,c5]@2 ~ [e4,a#4,c5] ~@3 [e4,a#4,c5] [e4,a#4,c5]@2 ~ [e4,a#4,c5] ~@4", // C7
  AB: "[f4,a4,c5]@2 ~ [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5]", // F
  AC: "~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5]", // F
  AD: "[c4,e4,a#4,c5]@2 ~ [c4,e4,a#4,c5] ~@3 [c4,e4,a#4,c5] [c4,e4,a#4,c5]@2 ~ [c4,e4,a#4,c5] ~@3 [c4,e4,a#4,c5]", // C7
  AE: "~@3 [c4,e4,a#4,c5] ~@3 [c4,e4,a#4,c5] [c4,e4,a#4,c5]@2 ~ [c4,e4,a#4,c5] ~@4", AF: "[f4,c5]!4",
  AG: "[d#4,c5] ~@3", // Cm
  AH: "[c4,e4,a#4,c5]@2 ~ [c4,e4,a#4,c5] ~@3 [c4,e4,a#4,c5] [c4,e4,a#4,c5]@2 ~ [c4,e4,a#4,c5] [c4,e4,a#4,c5]@3 ~", // C7
  AI: "[c4,e4,a#4,c5]@2 ~ [c4,e4,a#4,c5] ~@3 [c4,e4,a#4,c5] [c4,e4,a#4,c5]@2 ~ [c4,e4,a#4,c5] ~@4", // C7
  AJ: "[f4,a4,c5]@2 ~ [f4,a4,c5] [f4,a4,c5]@2 ~ [f4,a4,c5] [f4,g#4,c5]@5 ~@3", // F Fm
  AK: "[f4,c5] ~ [f4,c5] ~ [f4,c5] ~ [f4,c5] ~", AL: "[f4,c5] ~@3", AM: "[c4,e4,g4] ~@3",
})).s("gm_electric_guitar_jazz").gain(0.48).pan(0)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A B C@2 D E F G H I J K L M N O P@2 Q@2 R S T U V@2 W@2 R X Y O Z AA AB@2 AC AD AE@2 AC AF AG@2 AH AI AJ@2 AH AK AL@2
  AM@2 AN AO AP AQ AR AS AT AU AV AW AX AU AH AY D E F G H I J K L M N O P@2 Q@2 R S T U V@2 W@2 R X Y O Z AA AZ@2
>`.pickRestart({
  A: "c3@2 ~@2 a2@2 ~@2 c3@4 d3@3 c3", B: "~@3 e2@5 f2@2 ~@2 f#2@2 ~@2",
  C: "[g2@2 ~@2 g2@2 ~@2 g3@3 g3 ~@3 d3@8 g2@5 d2@4]/2", D: "c2@8 ~@3 c2 g1@4", E: "c2 e1", F: "f1@7 f2 ~@4 f1@4",
  G: "f2 ~ f1@2", H: "e2@4 e1@3 e2 ~@4 d#2@4", I: "d#1@3 d#2 ~@4 d#2@4 d#2@4", J: "d2@4 d1@4 d2@3 f1 f#1@4",
  K: "g1@7 g1 g2@4 g1@4", L: "c2@7 c2 ~@3 g1 d#2@4", M: "e2@4 ~@3 g1 e2@3 c2 e1@4", N: "f1@7 f2 ~@3 f2 f1@4",
  O: "f#1@7 f#1 f#2@3 c2 f#1@4", P: "[g1@7 g2 ~@3 g1 g2@11 g1 g2@3 b1 g1@4]/2",
  Q: "[c2@4 ~@4 e2@3 g2 ~@3 f2@5 d#2@3 b1 g1@4 d2@3 d#2]/2", R: "c2@2 ~ g1", S: "c2@7 g1 g2@4 f#2@4",
  T: "f2@7 f2 ~@3 f1 c2@4", U: "f1 ~ f2@2", V: "[e2@7 e2 ~@4 d#2@7 d#2 ~@4 d#1@4 d#2@4]/2",
  W: "[d2@7 d2 ~@4 g1@11 g1 g2@4 g1@4]/2", X: "c2@7 g1 e2@3 c2 e1@4", Y: "f1@8 ~@3 f2 f1@4", Z: "g1@7 g1 ~@4 g1@3 g2",
  AA: "g1@7 g1 g2@3 d2 g1@4", AB: "[c2@3 c2@2 c2 d2 e2]/2", AC: "f1 f2 f1 f2", AD: "e1 e2 e1 e2",
  AE: "[d1@4 d2@4 d1@4 c2@11 g1 c2@3 g1 e1@4]/2", AF: "e1@4 e2@4 g1@3 c2 e2@4",
  AG: "[d2@4 d1@3 d2 ~@4 c2@8 c2@4 d2@4 e2@4]/2", AH: "f2 ~ f2 ~ f2 ~ f2 ~", AI: "e2 ~ e2 ~ e2 ~ e2 ~",
  AJ: "[d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 c2@8 c2@4 d2@3 d#2 e2@4]/2", AK: "e2@2 ~@2 e2@2 ~@2 g1@3 c2 e2@4",
  AL: "[d2 ~ d2 ~ d2 ~ c2@10]/2", AM: "[c2@8 ~@4 f#2 f2@7 e2@2 ~@2 d#2@4 e1@4]/2", AN: "f1@8 ~@7 c2",
  AO: "f2@3 f2 d#2@2 ~@2 f2@4 d#2@2 ~@2", AP: "c2@7 c3 ~@7 a#2", AQ: "c3@3 c3 a#2@2 ~@2 c3@4 ~@4",
  AR: "f2 ~ f2 ~ f2 ~ f#2 ~", AS: "g2@2 ~@6 g3 f3 [d3,e3] [b2,c3] g2@4, ~@12 a2 ~@3", AT: "c2@7 c3 ~@4 g2@3 g2",
  AU: "c3@3 c3 a#2@2 ~@2 c3@2 ~@2 e2@4", AV: "f1@7 f2 ~@4 c2@3 c2", AW: "f2@3 f2 d#2@2 ~@2 f2@4 g2@2 ~@2",
  AX: "c2@7 c3 ~@4 c2@3 c2", AY: "f2 ~ g2@2", AZ: "[c2@3 c2@2 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  A B C D A@7 C A C A C A C A@2 E A E A E A E A E A E A E A E F A G H I A G H I J@4 A G D K L M L M L M J E L M L M L M
  J E A@7 C A C A C A C A@2 E A E A E A E A E A E A E A E N
>`.pickRestart({
  A: "x ~@7 x ~@2 x!2 ~@3", B: "x ~ x!2", C: "x ~@3 x ~@2 x!2 ~@3 x ~@3", D: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", E: "x!2",
  F: "x ~@3 x ~@3 x ~@2 x!2 ~@3", G: "~@4 x ~@3 x ~@2 x!2 ~@3", H: "x ~@6 x ~@4 x ~@3", I: "~@3 x ~@4 x ~@2 x!2 ~@3",
  J: "x!4", K: "x ~@2 x!2 ~@3 x ~@3 x ~@2 x", L: "x ~@2 x", M: "~ x ~ x", N: "x",
})).gain(0.05)

// drums · snare
const snare = s("sd").struct("<~@20 A@24 B@2 C D E@2 C ~@8 A ~@24 A@15 ~>".pickRestart({
  A: "~ x", B: "x!2", C: "x ~@6 x ~@4 x ~@3", D: "~@3 x ~@4 x ~@7", E: "x!4",
})).gain(0.07)

// drums · clap
const clap = s("cp").struct("<~@4 A@7 B A@15 B A@7 ~@17 A@14 C D A@7 B A@15 B A@7 ~>".pickRestart({
  A: "~ x", B: "~ x!2 ~", C: "x!4", D: "x",
})).gain(0.05)

// drums · low tom
const low_tom = s("lt").struct("<~ A B ~@16 C ~@28 D@2 ~@33 C ~@16>".pickRestart({
  A: "~@3 x ~@7 x ~@3 x", B: "~@4 x ~@6 x ~@4", C: "~@11 x!3 ~ x", D: "x!4",
})).gain(0.06)

// drums · hihat
const hihat = s("hh").struct(`<
  A@3 B C@14 A D E@3 A@12 D ~@8 F@2 E D ~@3 G H@6 E ~ H@6 D F C@14 A D E@3 A@12 ~
>`.pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@2 x", B: "~@11 x!2 ~@2 x", C: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", D: "~ x ~@2", E: "~ x ~ x",
  F: "~@4 x ~@7 x ~@2 x", G: "x!4", H: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x",
// … 29 more lines