Strudelify

Lost Swamp Theme (Combat)

Danny Baranowsky

KeyE♭ majorTempo117 bpm
0:00/0:00
// Lost Swamp Theme (Combat) — Danny Baranowsky
// 117 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5918763; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 68 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(117/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 · marimba · "Glockenspiel"
const marimba = note(`<
  ~@7 A B C D E ~ F G ~ H@3 I ~ J K L M N O P Q R S T ~@8 U V W X Y ~@4 Z AA ~@5 AB AC AD AE ~@8
>`.pickRestart({
  A: "~@5 [c5,c6] [d5,d6] [eb5,eb6] [g5,g6]@4 [b4,b5]@4", B: "[c5,c6]@2 [c6,c7]@2 [c5,c6]@8 ~ [c5,c6] [c6,c7]@2",
  C: "[bb5,bb6]@6 [bb4,bb5] [bb5,bb6]", D: "[ab5,ab6]@12 ~@2 [ab5,ab6] [bb5,bb6]", E: "[c6,c7] ~ [bb5,bb6] ~",
  F: "~ c3 eb3 c3 eb3 c3 eb3 f3 gb3 c3 c5 [db4,gb4]@4 eb4", G: "c4 ~@3", H: "bb4!32", I: "bb4!28 ~@4",
  J: "[c4,c6]@3 [d4,d6]@3 [eb4,eb6]@2 ~@4 [g5,g7]@4", K: "[c5,c7] [g4,g6] [gb5,gb7] [eb5,eb7]@2 ~ [c5,c7]@2",
  L: "[c4,c6] [g3,g5] [ab4,ab6] [g4,g6]@2 ~ [eb4,eb6]@2", M: "[c4,c6] ~@3",
  N: "eb6@2 eb7 eb6@9 ~ [eb4,eb6] [f4,f6] [gb4,gb6], eb4@3 ~", // Eb F Gb
  O: "[ab4,ab6]@6 [gb4,gb6] [f4,f6] [gb4,gb6]@4 [eb4,eb6]@4", P: "[eb4,eb6]@12 ~ [eb4,eb6] [f4,f6] [gb4,gb6]",
  Q: "[ab4,ab6] [bb4,bb6]", R: "[c4,c5]@2 ~ [d4,d5]@2 ~ [eb4,eb5]@2 ~@4 [f4,f5]@4",
  S: "eb5@2 f5@2 eb5 f5 eb5 f5 gb5 gb5@3 f5@2 eb5 c5", T: "g4", U: "~@3 [g3,g5] ~@4",
  V: "[g4,g6]@3 [g4,g6] [c5,c7]@3 [d5,d7]@5 ~@7 [g4,g6] [d5,d7]@3 [eb5,eb7] [d5,d7]@3 [c5,c7] [g4,g6]@4", // G C D G D Eb D C …
  W: "[eb4,eb5,eb7]@3 [d4,d5,d7]@3 [db4,db5,db7]@2 [c4,c5]@2 c4@2 c4@2 c4@2, ~@2 c7 ~", // Eb D Db C
  X: "eb5@5 eb5@5 ~ eb5@5 eb5@11 d5@2 c5@3", Y: "d5@3 c5@5 ~@5 c5@3 ~@5 c5@3 ~@5 c5@3",
  Z: "f5@11 c5@2 bb4@3 c5@11 ab4@2 f4@3", AA: "ab4@5 f4@3 ~@5 f4@3 ~@5 f4@3 ~@5 f4@3",
  AB: "~@13 [c5,c6] [d5,d6] [eb5,eb6]", AC: "[f5,f6]@6 [bb4,bb5]@2 [f5,f6]@3 [eb5,eb6]@3 [d5,d6]@2",
  AD: "[c5,c6]@2 [eb5,eb6] [d5,d6]", AE: "[c5,c6]",
})).s("gm_marimba").gain(0.25)

// other · marimba · "Glockenspiel" · soft notes
const marimba_soft = note("<~@19 A@2 ~@32 B C ~@13>".pickRestart({
  A: "[~@28 bb4!3 bb4@9 ~@24]/2", B: "c6!32", C: "c6!24 ~@8",
})).s("gm_marimba").gain(0.15)

// other · xylophone
const xylophone = note("<~@6 A@3 B C B D E ~@7 F G H I J K L M N O P N Q N P ~@4 R S T ~@13 U V W X ~@8>".pickRestart({
  A: "c5 b4 c5 eb5 f5 eb5 d5 eb5 ~ c5 d5 eb5 ~ d5 c5 d5", B: "~ ab4 c5 d5 eb5 d5 c5 d5 ~ bb4 c5 d5 ~ c5 bb4 c5",
  C: "ab4 eb4 ab4 bb4 c5 bb4 ab4 bb4 ~ eb4 ab4 bb4 ~ bb4 ab4 ~", D: "[c5,c6]@2 ~ [d5,d6]@2 ~ [eb5,eb6]@2 ~@4 [f5,f6]@4",
  E: "[gb5,gb6] ~@3", F: "c6@3 d6@3 eb6@2 ~@4 g7@4", G: "c7 g6 gb7 eb7@2 ~ c7@2", H: "c6 g5 ab6 g6@2 ~ eb6@2",
  I: "c6 ~@3", J: "eb5 d5 f5 gb5 ab5 gb5 f5 gb5 ~ eb5 f5 gb5 ~ f5 eb5 f5",
  K: "db5 ab4 db5 eb5 f5 eb5 db5 eb5 ~ ab4 db5 eb5 ~ db5 eb5 db5",
  L: "eb5 b4 db5 eb5 gb5 eb5 db5 eb5 ~ b4 db5 eb5 ~ db5 eb5 db5",
  M: "~ ab4 d5 eb5 f5 eb5 d5 eb5 ~ bb4 d5 f5 ~ eb5 f5 eb5", N: "c6@2 c6@2 c7 c6@2 c6@2 c6@2 c7 c6@4",
  O: "c6@2 c6@2 c7 c6@2 c6@2 c6@2 c6 c7@4", P: "c6@2 c6@2 c7 c6@2 c6@2 c6@2 c7 c6@2 c6@2",
  Q: "c6@2 c6@2 ~@3 c6@2 c6@2 c6 c7@4", R: "~@4 d5 eb5@3", S: "f5@3 e5@3 e5@2",
  T: "eb5@3 d5@3 db5@2 c5@2 c5@2 c5@2 c5@2", U: "~@13 c5 d5 eb5", V: "f5@6 bb4@2 f5@3 eb5@3 d5@2", W: "c5@2 eb5 d5",
  X: "c5",
})).s("gm_xylophone").gain(0.25)

// chords · vibraphone · "Xylophone"
const vibraphone = note(`<
  A B C D E@2 F G H I J K L M N O P O L P@2 Q R S T U V W X Y Z ~@2 AA AB AC ~@4 AD AE AF AG@2 AH@2 AI@2 AJ@2 AK@2 AL@2
  ~ AM AN AO AP ~@8
>`.pickRestart({
  A: "[c5,g5]!2 ~ [c5,g5] ~ [c5,g5] ~ [c5,g5]", B: "~ [c5,g5] ~ [c5,g5] ~ [c5,g5] ~ [c5,g5]",
  C: "~@2 [c5,g5]@2 ~@2 [c5,g5]@2 ~@2 [c5,g5]@2 ~ c5 d5 eb5, ~@7 [c5,g5]", // C5
  D: "[bb4,f5]@2 [bb4,f5]@2 ~@3 f4 f5@2 ~ eb5@3 [bb4,d5,f5]@2, ~@3 [bb4,f5] ~ [bb4,f5] ~@2", // Bb5 Bb Bb5
  E: "[[ab4,eb5]@2 [ab4,eb5]@2 ~@2 [ab4,eb5]@2 ~@2 [ab4,eb5]@2 c5 d5 ~@4 [bb4,f5]@2 ~@2 [bb4,f5]@2 f5@2 [bb4,f5]@2 ~@2 [bb4,f5]@2, c5@6 ~ [ab4,eb5] ~@8, ~@15 d5@9 ~@8]/2", // Ab5 Bb5 Ab5
  F: "g5 [c5,g5] ~ [c5,g5] ~ [c5,g5] ~ [c5,g5]", // C5
  G: "~@2 [c5,g5]@2 ~ c4 d4 eb4 ~@2 [c5,g5]@2 ~@2 [c5,g5]@2, ~@3 [c5,g5] g4@2 b3@2", // C5
  H: "c4@2 [c5,g5]@2 ~@2 [c5,g5]@2 ~@2 [c5,g5]@2 ~ c4 [c5,g5]@2, ~ c4@2 ~", // C5
  I: "bb4 [bb4,f5] ~ [bb4,f5] ~ [bb4,f5] bb3 [bb4,f5]", // Bb5
  J: "ab4@2 [ab4,eb5]@2 ~@2 [ab4,eb5]@2 ~@2 [ab4,eb5]@2 ~@3 bb4, ~@7 [ab4,eb5]", // Ab5
  K: "~ [bb4,f5] ~ [bb4,f5] bb4 [bb4,f5] ~ [bb4,f5], c5 ~@3", L: "c5@2 c5@2 c6 c5@2 c5@2 c5@2 c6 c5@4",
  M: "c5@2 c5@2 c6 c5@2 c5@2 c5@2 c5 c6@4", N: "c5!2 c6 c5 ~@4", O: "c5@2 c5@2 c6 c5@2 c5@2 c5@2 c6@5",
  P: "c5@2 c5@2 c6 c5@2 c5@2 c5@2 c6 c5@2 c5@2", Q: "[c4,c5]@3 [d4,d5]@3 [eb4,eb5]@2 ~@4 [f5,g5]@4",
  R: "c5 g4 gb5 eb5@2 ~ c5@2, gb5 ~@3", S: "c4 g3 ab4 g4@2 ~ eb4@2", T: "c4 ~@3",
  U: "eb6 ~ eb6 f6 ~@2 gb6@2 ~@5 eb5 f5 gb5, eb5@6 ab6 ~", V: "ab5@6 gb5 f5 gb5@4 [eb5,eb6]@4, bb6 ~@3",
  W: "f6 gb6@3 f6@2 eb6@18 ~@2 [eb5,eb6]@2 [f5,f6]@2 [gb5,gb6]@2, eb5@3 ~", // Eb F Gb
  X: "ab6@2 gb6 f6@5 d6@2 ~ [d6,f6]@2 ~@3, ab5 bb5", Y: "[c4,c5]@2 ~ [d4,d5]@2 ~ [eb4,eb5]@2 ~@4 [f4,f5]@4",
  Z: "[gb4,gb5] ~@3", AA: "c5@2 gb5 eb5@3 c5@10", AB: "g4@5 eb4@3", AC: "c4",
  AD: "[g3,bb3,d4]@2 ~@2 [g3,bb3,d4]@2 g4@2 [g3,bb3,d4] ~ [g3,bb3,eb4]@6", // Gm Eb
  AE: "g5@3 g5 c6@3 d6@5 ~@7 g5 d6@3 eb6 d6@3 c6 g5@4, [b3,d4,f4]@3 [bb3,e4]@3 [bb3,e4]@2", // Bdim Bbdim
  AF: "[eb4,eb5,eb6]@3 [d4,d5,d6]@3 [db4,db5,db6]@2 [c4,c5]@2 c5@2 c5@2 c5@2, ~@2 c6 ~", // Eb D Db C
  AG: "[~ f6@3, c5@11 c6@2 eb6@51, ~@3 eb5@61, ~@5 f5@59, ~ g5@7]/2",
  AH: "[~@29 g6@35, c5@11 c6@2 eb6@8 f6@43, ~@3 eb5@61, ~@5 f5@59, ~ g5@7]/2",
  AI: "[~@51 ab4@13, db5@35 ab6@2 f6@3 db6@3 ab5@2 f5@3 db5@16, ~@3 e5@61, ~@5 g5@59, ~@8 ab5@3 db6@2 e6@3 ab6@5 e6@43]/2",
  AJ: "[~@16 c6@11 ~@8 c6@5 ~@5 c6 ~@7 c6 ~@7 c6 ~@2, c5@11 c6@2 eb6@14 d6@2 c6@3 d6@8 ~@24, ~@3 eb5@37 ~@24, ~@5 f5@35 ~@24, ~ g5@4 ~@3]/2",
  AK: "[~@53 f6@11, ~@5 bb4@16 ab5@11 db5@3 f5@2 ab5@3 db6@24, ~ db5 bb5@6, ~@11 eb5@53, ~@13 g5@51]/2", AL: "g6/2",
  AM: "~@13 [c4,c6] [d4,d6] [eb4,eb6]", AN: "f6@6 bb5@2 [bb3,bb4,f6]@3 [bb3,bb4,eb6]@3 [bb3,bb4,d6]@2, [bb3,bb4] ~",
  AO: "[ab3,ab4,c6]@8 eb4 ~ eb4 ~ d4 ~ d4 ~, ~@2 eb6 d6", AP: "[c4,c6]",
})).s("gm_vibraphone").gain(0.3)

// other · marimba · "Vibraphone"
const marimba_2 = note(`<
  ~@7 A B C D E F G ~@4 H I ~ J K L M N O P Q R S T ~@2 U V W X Y Z AA AB AC ~ AD AE AF ~@4 AG ~ AH AI ~ AJ AK AL AM ~@8
>`.pickRestart({
  A: "~@5 [c4,c5] [d4,d5] [eb4,eb5] [g4,g5]@4 [b3,b4]@4", B: "[c4,c5]@2 [c5,c6]@2 [c4,c5]@8 ~ [c4,c5] [c5,c6]@2",
  C: "[bb4,bb5]@6 [bb3,bb4] [bb4,bb5]", D: "[ab4,ab5]@12 ~@2 [ab4,ab5] [bb4,bb5]", E: "[c5,c6] ~ [bb4,bb5] ~",
  F: "[c3,c4]@2 ~ [d3,d4]@2 ~ [eb3,eb4]@2 ~@4 [f3,f4]@4", G: "[gb3,gb4] ~@3", H: "g4!32", I: "g4!24 ~@8",
  J: "[c3,c4,c5]@3 [d3,d4,d5]@3 [eb3,eb4,eb5]@2 ~@4 [f3,f4,g6]@4", K: "c6 g5 gb6 eb6@2 ~ c6@2, [gb3,gb4] ~@3",
  L: "c5 g4 ab5 g5@2 ~ eb5@2", M: "c5@4 ~@4 [bb3,bb4]@3 [g3,g4]@3 [f3,f4]@2",
  N: "eb4 d4 [f4,eb6] gb4 ab4 gb4 f4 gb4 ~ eb4 f4 gb4 ~ [f4,eb5] [eb4,f5] [f4,gb5], eb5@2 ~ eb5@9 ~@4", // F7 Ebsus2 Gbmaj7
  O: "db4 ab3 db4 eb4 f4 eb4 [db4,gb5] [eb4,f5] ~ ab3 db4 eb4 ~ db4 eb4 db4, ab5@3 ~ gb5@2 eb5@2", // Gb5 Ebsus2
  P: "eb4 b3 db4 eb4 gb4 eb4 db4 eb4 ~ b3 db4 eb4 ~ [db4,eb5] [eb4,f5] [db4,gb5], eb5@3 ~", // Dbsus2 Ebsus2 Gb5
  Q: "~ ab3 d4 eb4 f4 eb4 d4 eb4 ~ bb3 d4 f4 ~ eb4 f4 eb4, ab5 bb5",
  R: "[c2,c3]@2 ~ [d2,d3]@2 ~ [eb2,eb3]@2 ~@4 [f2,f3]@4", S: "~@2 c5!12 bb4 g4, [gb2,gb3] ~@3", T: "g4 ~@3",
  U: "g5 c5 eb6 d6@3 g5@10",
  V: "gb5 f5 ~ e5 eb5 ~ d5 db5 c5 ~ b4 bb4 a4 ~ ab4 g4 ~ gb4 f4 e4 ~ eb4 d4 db4 ~ c4 b3 ~ bb3 a3 ab3@2",
  W: "[c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~, g3 ~@3", X: "[c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~",
  Y: "[c4,c5] ~ [c4,c5] ~ [c4,c5,d5] ~ [c4,c5] ~, g4@3 ~@2 eb5@2 ~", // C Csus2 C
  Z: "eb5 f5 eb5 ~ [c4,c5]@2 ~@2 [c4,c5]@2 ~@2 [c4,c5]@2 ~@2, [c4,c5]@2 ~ d5@3 d4@10", AA: "~@4 d3 eb3@3",
  AB: "f3@3 e3@3 e3@2", AC: "[eb3,eb6]@3 [d3,d6]@3 [db3,db6]@2 c6@4 ~@4, ~@4 c3 ~@3", AD: "~@24 eb3@3 c3@2 eb3@3",
  AE: "f3@8 ~@5 eb3@3 ~@5 f3@3 ~@5 eb3 ~ c3", AF: "eb3@5 c3@3 ~@5 bb2@3 ~@5 c3@3 ~@8",
  AG: "g3@5 g3@3 ~@3 g3@2 c4@3 db4!16", AH: "c4!32", AI: "c4!24 ~@8", AJ: "~@13 [c3,c5] [d3,d5] [eb3,eb5]",
  AK: "[f3,f4,f5,f6]@6 [bb2,bb3,bb4,bb5]@2 [f3,f4,f5,f6]@3 [eb3,eb4,eb5,eb6]@3 [d3,d4,d5,d6]@2", // F Bb F Eb D
  AL: "[c3,c4,c5,c6]@2 [eb3,eb4,eb5,eb6] [d3,d4,d5,d6]", AM: "[c3,c4,c5,c6]",
})).s("gm_marimba").gain(0.25)

// other · marimba · "Vibraphone" · soft notes
const marimba_soft_2 = note("<~@19 A@2 ~@47>".pickRestart({
  A: "[~@24 g4!7 g4@9 ~@24]/2",
})).s("gm_marimba").gain(0.15)

// other · tubular bells · "Marimba (Grand Staff)"
const tubular_bells = note(`<
  A@2 B ~@3 C@3 D E F G H I ~@2 J K ~@2 L M ~ N O P Q R S T U ~@4 V@4 W X Y ~@4 Z AA ~@3 AB AC AD ~ AE AF AG AH ~@8
>`.pickRestart({
  A: "c4@2 c4@2 d4 eb4 d4 c4!4 g3 ~ g3 a3 b3", B: "c4@2 c4@2 d4 eb4 d4 c4!4 g3 ~ g3 a3 bb3",
  C: "c4 b3 c4 eb4 f4 eb4 d4 eb4 ~ c4 d4 eb4 ~ d4 c4 d4", D: "~ ab3 c4 d4 eb4 d4 c4 d4 ~ bb3 c4 d4 ~ c4 bb3 c4, bb4",
  E: "ab3 eb3 ab3 bb3 c4 bb3 ab3 bb3 ~ eb3 ab3 bb3 ~ bb3 ab3 bb3, ab4",
  F: "~ ab3 c4 d4 eb4 d4 c4 d4 ~ bb3 c4 d4 ~ c4 bb3 c4, c5 ~ bb4 ~", G: "[c4,c5]@2 ~ [d4,d5]@2 ~ [eb4,eb5]@2 ~@4 f4@4",
  H: "~ c3 eb3 c3 eb3 c3 eb3 f3 gb3 c3!2 [gb3,bb3]@4 g3, gb4 ~@3", I: "eb3 ~@3", J: "~@7 gb4!25", K: "gb4!6 ~@26",
  L: "[c4,c5]@2 ~ [d4,d5]@2 ~ [eb4,eb5]@2 ~@4 [f4,f5]@4", M: "[gb4,gb5] ~@3", N: "~@8 [bb4,bb5]@3 [g4,g5]@3 [f4,f5]@2",
  O: "eb5@12 ~ eb5 f5 gb5, eb4 ~@3", P: "ab5@6 gb5 f5 gb5@4 eb5@4", Q: "eb5@12 ~ eb5 f5 gb5",
  R: "ab5@8 [bb4,d5]@2 ~ [d5,f5]@2 ~@3, ~ bb5", S: "[c3,c4]@2 ~ [d3,d4]@2 ~ [eb3,eb4]@2 ~@4 [f3,f4]@4",
  T: "[eb4,gb4]@2 f4@2 eb4 f4 eb4 f4 gb4 gb4@3 f4@2 eb4 c4", U: "g3", V: "[g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~",
  W: "~@3 g3 ~@4", X: "g3@3 g3 c4@3 d4@5 ~@7 g3 d4@3 eb4 d4@3 c4 g3@4",
  Y: "[eb3,eb4,eb5]@3 [d3,d4,d5]@3 [db3,db4,db5]@2 [c3,c4]@2 c3@2 c3@2 c3@2, ~@2 c5 ~", Z: "db5@5 db5@5 ~ db5@5 db5!16",
  AA: "ab4!24 ~@8", AB: "eb4@11 f4@2 g4@3 ab4!16", AC: "c5!32", AD: "c5!24 ~@8", AE: "~@13 c4 d4 eb4",
  AF: "[f4,bb4,f5]@6 [bb3,bb4]@2 [f4,bb4,f5]@3 [eb4,bb4,eb5]@3 [d4,bb4,d5]@2", AG: "[c4,ab4,c5]@2 [eb4,eb5] [d4,d5]",
  AH: "[c4,c5]", // C
})).s("gm_tubular_bells").gain(0.3)

// other · tubular bells · "Marimba (Grand Staff)" · soft notes
const tubular_bells_soft = note("<~@16 A@2 B@2 ~@48>".pickRestart({
  A: "[~@32 gb4!7 ~@25, bb4]/2", B: "[~@6 gb4!10 gb4@17 ~@31, g4]/2",
})).s("gm_tubular_bells").gain(0.15)

// other · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  ~@2 A B C@2 D ~@2 E F G H I J@3 ~@4 H I ~@2 K L M N ~@2 O P Q ~@6 R ~ S T ~ U@2 V@2 W@2 X Y Z@2 AA AB AC AD AE@2 AF AG
  AH AI AJ AK D
>`.pickRestart({
  A: "~@13 c3 d3 eb3", B: "f3@7 f2 f3@2 f3 eb3@3 d3@2", C: "[c3@12 c3 d3 eb3 d3@9 bb2@8]/2", D: "c3 ~@7",
  E: "~@3 bb3@29, bb2, ~ d3@31, ~ f3@15", F: "~@3 ab3@29, ab2, ~ c3@31, ~ eb3@15",
  G: "~@3 bb3@13 bb3@6 bb3@2 bb4@8, bb2 ~, ~ d3@15 ~@16, ~ f3@7 ~@8", H: "c3@2 c3 d3@2 ~ eb3@2 ~@4 f3@2 ~@2",
  I: "gb3 ~@3", J: "[c3@3 eb3@3 f3 eb3 gb3 f3 eb3 f3@3 eb3 c3@33]/3", K: "eb5 ~ eb5 f5 ~@2 gb5@2 ~@4 ab5@2 ~@2",
  L: "bb5 ~@2 eb5", M: "f5 gb5@3 f5@2 eb5@18 ~@2 eb5@2 f5@2 gb5@2", N: "ab5@2 gb5 f5@5 [f3,d4]@2 ~ [bb3,f4]@2 ~@3",
  O: "c5@2 c5@2 c5@2 c5@2 c5 bb4 g4 gb4@2 bb4 g4@2", P: "eb4 c4 f4 gb4@3 f4 eb4 ~@2 eb4 f4 eb4@4", Q: "c4",
  R: "g2 c3 ~@14", S: "eb3@3 d3@3 db3@2 c3@2 ~@6", T: "g3@5 ~@27", U: "[c3@5 c3@3 d3@5 eb3@3 ~@5 f3@3 ~@5 g3@35]/2",
  V: "[ab3@11 g3@2 f3@3 ab3@48]/2", W: "c3/2", X: "g2@11 g2@2 c3@3 db3@16", Y: "g3 ab3", Z: "[c4@7 ~]/2",
  AA: "c3 ~ c3 ~ c3 ~ c3 ~ d3 ~ eb3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g2 ~@3 g2 ~ a2 ~ b2 ~",
  AB: "c3 ~ c3 ~ c3 ~ c3 ~ d3 ~ eb3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g2 ~@3 g2 ~ a2 ~ bb2 ~",
  AC: "~@3 bb3@13 bb3@6 bb3@6 bb3@4, bb2 ~, ~ d3@15 ~@16, ~ f3@7 ~@8", AD: "ab3 ~", AE: "c4/2", AF: "c3 ~@31",
  AG: "~@13 g3 f3 eb3", AH: "c3 bb2 c3 eb3 ~ eb3 c3 bb2 c3 bb2 c3 eb3 ~ eb3 f3 gb3",
  AI: "g3 ~ g3 ~ f3 g3 bb3 c4 eb4 ~ eb4 c4 ~ c4 g3 eb3", AJ: "gb3 ~ f3 ~ eb3 f3 eb3 c3 eb3 c3 bb2 c3 ~ bb2 c3 eb3",
  AK: "gb3 f3 gb3 g3 ~ f3 eb3 c3 eb3 ~ c3 ~ bb2!2 b2 ~",
})).s("gm_electric_guitar_clean").gain(0.25)

// other · electric guitar clean · "Electric Guitar" · soft notes
const electric_guitar_clean_2 = note("<~@43 A B ~@13 C ~@2 D E ~@5>".pickRestart({
  A: "~@5 g3@5 ~ g3@5 g3@11 f3@2 eb3@3", B: "f3@3 eb3@3 ~@26", C: "~@8 eb4 ~ eb4 ~ d4 ~ d4 ~",
  D: "~@2 c3 ~ c3 ~ c3 ~ d3 ~ eb3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g2 ~@3 g2 ~ a2 ~ b2 ~",
  E: "c3 ~ c3 ~ c3 ~ c3 ~ d3 ~ eb3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g2 ~@9",
})).s("gm_electric_guitar_clean").gain(0.15)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A@3 B C B A@3 B C B ~ D E ~@7 F ~ G H I J B K L M N O ~ P Q R Q R Q R S T@4 U@2 T@2 V U T W A@2 X Y A@8 Z
>`.pickRestart({
  A: "c2 ~ g1 ~ c2 ~ g1 ~", B: "bb1 ~ f1 ~ bb1 ~ f1 ~", C: "ab1 ~ eb1 ~ ab1 ~ eb1 ~",
  D: "~ c3 g2 gb2 f2 e2 eb2 c2 gb1 c2 eb2 f2 gb2 f2 eb2 c2", E: "c2@3 c2@4 c2",
  F: "~ c2 eb2 f2 gb2 ~@3 c2 g1 c2 eb2 gb2 eb2 c2 ~", G: "c2@2 ~@4 g1@2 bb2@3 g2@3 f2@2", H: "eb2 ~ bb1 ~ eb2 ~ bb1 ~",
  I: "db2 ~ ab1 ~ db2 ~ ab1 ~", J: "b1 ~ gb1 ~ b1 ~ gb1 ~", K: "c2 ~@2 d2 ~@2 eb2 ~@5 f2@2 ~@2",
  L: "gb2@2 ~@6 c2@2 ~ g1@2 ~@3", M: "c2!3 d2 eb2!2 c2 ~ c2 g1 c2 eb2 f2 eb2 c2 ~", N: "c2!3 d2!3 eb2!4 eb3!2 f3@4",
  O: "c2 g1 d2 eb2 c2 g1 ~@2 g1 bb1 c2 eb2@3 c2@2", P: "~@8 c2 g1 c2 eb2 f2 g2 eb2 b1", Q: "c2 ~@2 g1 ~@4",
  R: "g1@3 g1 a1@3 bb1@5 ~@7 g1 a1@3 bb1 a1@3 g1 c1@4", S: "eb2@3 d2@3 db2@2 c2@2 ~@4 g1@2",
  T: "c2@5 eb2@3 f2@5 gb2@3 f2@5 eb2@3 c2@5 eb2@3", U: "f2@5 ab2@3 bb2@5 b2@3 bb2@5 ab2@3 f2@5 ab2@3",
  V: "g2@5 bb2@3 c3@5 db3@3 c3@5 bb2@3 g2@5 bb2@3", W: "c2@3 c2@2 eb2@3 f2@5 gb2@3 f2@5 eb2@3 c2@5 eb2@3",
  X: "bb1@8 bb1@3 bb1@3 bb1@2", Y: "ab1@8 eb2 ~ eb2 ~ d2 ~ d2 ~", Z: "c2 ~@7",
})).s("gm_electric_bass_finger").gain(0.25)

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

// drums · rim
const rim = s("rim").struct("<~@3 [~@11 x ~@3 x] [~@4 x ~@10 x] [~@15 x] ~@3 [~@15 x] ~@58>").gain(0.4)

// drums · snare
// … 69 more lines