Strudelify

Spaceman

Babylon Zoo

KeyC majorTempo151 bpm
0:00/0:00
// Spaceman — Babylon Zoo
// 151 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "BASS&LEAD" lead 8 bass lead (copy of ch 13 "XYLOPHONE" xylophone)
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(151/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.

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@8 A B C ~@9 D@2 E@2 F@4 G@4 H@2 I@3 J K L M N O P O Q O P O Q R S T U V W X@4 Y@2 Z@2 AA@2 AB AC AD AC AE AF AG L AH
  AI AJ AK AL@2 E@2 F@4 G@4 H@2 AM@3 J K L M N O P O Q R S T U V W X@4 Y@2 Z@2 AA@2 AN@2 Y@2 Z@2 AO ~ AP AQ@2 AR AS AT
  AU AV AW AX AY ~@4
>`.pickRestart({
  A: "~ g1 g2 ~@2 g2 ~@2 g2@4 f#2 g2 ~@2", B: "b1 ~ b1@3 ~@2 b1 g2 ~ g2 ~@2 g2@3", C: "b1 f#2 ~@14",
  D: "[~@3 c1@2 ~@3]/2", E: "[c1 ~ e1@2 ~@2 e1 ~@3 d1 ~ c1@19 ~]/2",
  F: "[c1 ~ e1@2 ~@2 e1 ~@3 d1 ~ c1@21 ~ e1 ~@3 e1@5 ~ c1@19 ~]/4",
  G: "[c1 ~ e1@2 ~@2 e1 ~@5 c1@21 ~ e1 ~@3 e1 ~@3 d1 ~ c1@19 ~]/4", H: "[c1 ~ e1@2 ~@2 e1 ~@3 d1 ~ c1@18 ~ c1]/2",
  I: "[~@2 e1@2 ~@2 e1 ~@3 d1 ~ c1@22 ~ e1 ~@2 e1 ~@5 c2@2 ~@2]/3", J: "c2@2 ~@2 c2@3 ~ c2 ~ e1@3 ~ e1@2",
  K: "~@2 e1@2 e1 ~ e1 ~ e1 ~ e1 ~ c2@3 ~", L: "c2@2 ~@2 c2@3 ~ c2 ~ e2@2 ~@2 e2@2",
  M: "~@2 e2@2 e2 ~ e2 ~ e2 ~ e2 ~ c2@2 ~@2", N: "c2@2 ~@2 c2@3 ~ c2 ~ e1@2 ~@2 e1@2",
  O: "~@2 e1@2 ~@2 e1 ~ e1 ~ e1 ~ c2@3 ~", P: "c2@2 ~@2 c2@2 ~@2 c2 ~ e1@2 ~@2 e1@2",
  Q: "c2@3 ~ c2@3 ~ c2 ~ e1@3 ~ e1@2", R: "~@2 e1@2 ~@2 e1 ~ e1 ~ e1 ~ a1 ~ a1 ~",
  S: "a1@2 ~@2 a1@3 ~ a1 ~ a1@3 ~ g1 ~", T: "g1@2 ~@2 g1@3 ~ g1 ~ e1 ~ f1@3 ~", U: "f1@3 ~ f1@3 ~ f1 ~ f1@3 ~ g1 ~",
  V: "g1@3 ~ g1@3 ~ g1 ~ g1 ~ a1@3 ~", W: "a1@4 a2@3 ~ a1 ~ g1@3 ~ g1@2",
  X: "[~@2 g1@2 g2@4 g1 ~ e1 ~ f1@8 f2@23 ~ a1@7 ~ a1@5 ~ a1@2 ~@2 c2 ~]/4",
  Y: "[c2@3 ~ c2@3 ~ c2 ~ c2 ~ f1@7 ~ f1@5 ~ f1@2 ~@2 d2 ~]/2",
  Z: "[d2@3 ~ d2@3 ~ d2 ~ d2@2 a1@7 ~ a1@5 ~ a1@2 ~@2 c2 ~]/2",
  AA: "[c2@3 ~ c2@3 ~ c2 ~ c2 ~ f1@7 ~ f1@5 ~ f2@2 ~@2 d2 ~]/2", AB: "d2@3 ~ d2@2 d2 ~ d2 ~ d2@2 e2@2 ~@2",
  AC: "e2@2 ~@2 e2@3 ~ e2@2 d1@3 ~ d1@2", AD: "~@2 d1 ~ d2@3 ~ d2@3 ~ e2@3 ~", AE: "~@2 d1@2 d2@3 ~ d2@3 ~ c2@2 ~@2",
  AF: "c2@3 ~ c2@3 ~ c2@2 e1@3 ~ e1@2", AG: "~@2 e1@3 ~ e1 ~ e1 ~ e1 ~ c2@2 ~@2",
  AH: "~@2 e2@3 ~ e2 ~ e2 ~ e2 ~ c2@3 ~", AI: "c2@3 ~ c2@3 ~ c2 ~ e1@2 ~@2 e1@2",
  AJ: "~@2 e1@2 ~@2 e1 ~ e1 ~ e1 ~ c2@2 ~@2", AK: "c2@3 ~ c2@3 c2 ~@2 e2@2 ~@2 e2@2",
  AL: "[~@2 e2@2 ~@2 e2 ~ e2 ~ e2 ~ c1@20]/2", AM: "[~@2 e1@2 ~@2 e1 ~@3 d1 ~ c1@22 e1 ~@3 e1 ~@5 c2@2 ~@2]/3",
  AN: "[d2@3 ~ d2@2 d2 ~ d2 ~ d2@2 a1@7 ~ a1@5 ~ a1@2 ~@2 c2 ~]/2", AO: "c2@3 ~ c2@3 ~ c2 ~ c2 ~@5",
  AP: "~@8 e2 ~ e2 ~@2 e2@3",
  AQ: "[~ f#2 g2 ~ e2 g2 ~@2 g2@3 ~ d2 c2@2 c2@2 ~ c2@3 ~ c2 a2 ~ g2 a2 ~@2 a2@3, ~@18 f#2 ~@13]/2",
  AR: "~ g2 e2@2 e2 ~@2 e2@3 ~ f#2 g2 ~ e2 g2", AS: "~@2 g2@3 ~ d2 c2 ~ c2 ~@2 c2@3 ~",
  AT: "c2 a2 ~ g2 a2 ~@2 a2@4 g2 e2@2 e2 ~", AU: "~ e2@3 ~ f#2 g2 ~ e2 g2 ~@2 g2@3 ~",
  AV: "d2 c2 ~ c2 ~@2 c2@3 ~ g2 a2 ~ g2 a2 ~", AW: "~ a2@4 g2 e2 ~ e2 ~@2 e2@3 ~ f#2",
  AX: "g2 ~ e2 g2 ~@2 g2@3 ~ d2 c2@2 ~ c2 ~", AY: "c2@3 ~ g2 a2 ~ g2 a2 ~@2 a2@4 ~",
})).s("gm_synth_bass_2").gain(0.34)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@20 A@2 B@14 C ~@13 D@2 E F G H I J@5 K L@2 M N@3 O@5 P@6 B@12 C ~@11 D@2 E F G H I J@5 K L@2 M Q@4 K R@4 ~@14
>`.pickRestart({
  A: "[~@12 [c2,g2]@14 [c2,g2]@3 ~ [c2,g2]@2]/2", B: "[~@2 [e2,b2]@3 ~ [d2,a2]@5 ~ [c2,g2]@14 [c2,g2]@3 ~ [c2,g2]@2]/2",
  C: "~@2 [e2,b2]@3 ~ [d2,a2]@5 ~@5", D: "[~@12 [a2,e3]@8 [a2,e3]@4 [a2,e3] ~ [g2,d3]@4 [g2,d3]@2]/2",
  E: "[g2,d3]@2 [g2,d3] ~ [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3] ~ [f2,c3]@2", // G5 F5
  F: "[f2,c3]@4 [f2,c3]@4 [f2,c3] ~ [f2,c3]@4 [g2,d3]@2", // F5 G5
  G: "[g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3] ~ [a2,e3]@2", // G5 A5
  H: "[a2,e3]@4 [a2,e3]@4 [a2,e3] ~ a2@2 a2@2 [g2,d3]@2, ~@5 e3@2 ~", // A5 G5
  I: "[g2,d3]@2 [g2,d3]@2 g2@2 g2 ~ [g2,d3]@2 [g2,d3]@2 [f2,c3]@2 [f2,c3]@2, ~ d3 ~@2", // G5 F5
  J: "[[f2,c3] ~@3 [f2,c3]@24 d4@6 c4@2 b3@4 a3@4 d4@6 c4@2 b3@4 a3@4 d4@6 c4@2 b3@4 a3@4 a3@2 b3@2]/5", // F5
  K: "b3@2 c4@2 c4@2 d4@2 d4@4 d4 ~@3", L: "[~ c4 b3@2 a3@2 d4@3 c4 b3@2 a3@2 a3 b3]/2",
  M: "b3@2 c4@2 c4@2 d4@2 d4 ~ c4@2 c4@2 b3@2", N: "[b3 ~ a3@2 a3@33 ~@6 b3 [b3,e4]@4]/3",
  O: "[[c#4,g#4]@3 ~ [b3,e4]@21 d4 [c3,g3,c4]@33 ~ [c3,g3,c4]@20]/5", // C#5 E5 C5
  P: "[~@12 g#2@2 ~@4 [a2,b2]@58 [c2,g2]@14 [c2,g2]@3 ~ [c2,g2]@2, ~@3 [e2,g2,d3]@16 ~@5, ~@12 a2 ~@83]/6", // Asus2 C5 Em7
  Q: "[b3 ~ a3@2 ~@8 d4@6 c4@2 b3@4 a3@4 d4@6 c4@2 b3@4 a3@4 d4@6 c4@2 b3@4 a3@4 a3@2 b3@2, ~ a3@5 ~@10]/4",
  R: "[~ c4 b3@2 a3@2 d4@3 c4 b3@2 a3@2 a3@14 ~@4]/4",
})).s("gm_distortion_guitar").gain(0.19).pan(0)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~@20 A@8 B@8 C@2 D@4 E@7 F@2 G H I J K L@4 M@2 N@2 M@2 O P Q R S T@2 U@2 T@2 V@7 B@8 W@2 C@2 D@4 X@5 G H I J K L@4 M@2
  N@2 M@2 N@2 M@2 N@2 Y@3 ~@14
>`.pickRestart({
  A: "[~@12 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@20]/8", // C5 E5 D5 C5 E5 D5 C5 E5 …
  B: "[~@2 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@20]/8", // E5 D5 C5 E5 D5 C5 E5 D5 …
  C: "[~@2 [e3,b3]@3 ~ [d3,a3]@6 g2@4 g2 ~@3 [g2,c3]@4 [g2,c3]@2 [e2,b2,e3]@6, ~@6 g3@7 ~@3, ~@3 c3@2 ~@3]/2", // E5 D5 C5 E5
  D: "[[a2,b2]@2 e3 ~@3 e3 ~ [e2,b2] ~ d3@2 ~@4 c3@4 ~@2 d3@2 c3@2 ~@4 f3@2 [b2,e3] ~ b3@2 ~@2 e3 ~ [e2,b2] ~ e3@2 c3@12 c3@2 [e2,b2,e3]@6, ~ b3@2 a3@3 g3@4 g3@3 ~@4 e3@2 a3@3 ~@10, ~@2 [e2,b2]@2 ~@2 g2@7 e2@7 ~@2 [g2,g3]@7 ~@3, ~@8 d3 ~ c3@2 ~ [b2,e3]@3 ~@2 b2@2 ~@12]/4", // Asus2 E5 G E5
  E: "[b2 ~ b3@2 ~@4 [e2,b2]@4 [c3,g3,c4]@14 [e2,b2,e3]@18 [c3,g3,c4]@14 [e2,b2,e3]@18 [c3,g3,c4]@14 [e2,b2,e3]@18 [c3,g3,c4]@4, e3 b2 ~@26, ~@3 [e3,a3]@3 ~@50]/7", // E5 C5 E5 C5 E5 C5 E5 C5 …
  F: "[~@10 [e2,b2,e3]@18 [a2,e3,a3]@2 [a2,e3,a3] ~]/2", // E5 A5
  G: "[e3,a3] ~@3 [a2,e3,a3] ~@5 [a2,e3,a3]@4 [g2,d3,g3]@2, a2 ~@3", // A5 G5
  H: "[g2,d3,g3]@4 [g2,d3,g3] ~@5 [e2,d3,g3]@2 c3@2 c3 ~, ~@3 [f2,f3]", // G5 Em7 F
  I: "[f2,c3,f3] ~@3 [f2,c3,f3]@6 [f2,c3,f3]@4 [g2,d3,g3]@2", // F5 G5
  J: "[g2,d3,g3] ~@3 [g2,d3,g3] ~@7 [g2,d3,g3] ~ [a2,e3,a3]@2", // G5 A5
  K: "[a2,e3,a3]@4 [a2,e3,a3] ~@5 [a2,e3,a3]@4 [g2,d3,g3]@2", // A5 G5
  L: "[[g2,d3,g3]@4 [g2,d3,g3] ~@7 [f2,c3,f3]@32 [a2,e3,a3]@8 [e3,a3] ~@7 [a2,e3,a3]@2 [c3,g3,c4]@2, ~@13 a2@2 ~]/4", // G5 F5 A5 C5
  M: "[[c3,g3,c4] ~@3 [g3,c4] ~@5 [g3,c4]@2 [f3,c4,f4]@8 [f3,c4,f4]@8 [f3,c4,f4] ~ [d3,a3,d4]@2, ~ c3@2 ~@5]/2", // C5 F5 D5
  N: "[[d3,a3] ~@3 [d3,a3,d4] ~@5 [d3,a3,d4]@2 [a2,e3,a3]@8 [e3,a3] ~@7 [a2,e3,a3]@2 [c3,g3,c4]@2, d4 ~@4 a2@2 ~]/2", // D5 A5 C5
  O: "[d3,a3] ~@3 [d3,a3,d4] ~@5 [d3,a3,d4]@2 [e3,b3,e4]@4, d4 ~@3", // D5 E5
  P: "[e3,b3,e4] ~ [e3,b3,e4]@2 [e3,b3,e4]@8 [a3,d4]@2 [a3,d4]@2", // E5 D5
  Q: "[a3,d4]@2 [a3,d4]@2 [a3,d4]@2 [a3,c#4]@2 [a3,c#4] ~ [g#3,b3]@2 [e3,e4]@4, ~@12 b3 ~@3", // D5 A G#m E
  R: "[e3,b3,e4,g#4] ~ [e3,b3,e4,g#4]@2 [b3,e4]@8 [a3,d4]@2 [a3,d4]@2, ~@4 e3 ~@11", // E E5 D5
  S: "[a3,d4]@2 [a3,d4]@2 [a3,d4]@2 [a3,c#4]@2 [a3,c#4] ~ [g#3,b3]@2 [c3,g3]@2 [c3,g3]@2, ~@3 c4", // D5 A G#m C5
  T: "[[c3,g3,c4] ~@3 [c3,g3,c4] ~@9 c3@4 b2@2 [a2,e3,a3]@2 [a2,e3,a3] ~ [a2,e3,a3] ~@3 [c3,g3]@2 [c3,g3]@2, ~@5 e2@6 ~@5, ~@5 b2@3 ~@8, ~@7 [g3,c4]@3 ~@4 c4@2]/2", // C5 A5 C5
  U: "[[c3,g3,c4] ~@3 [c3,g3,c4] ~@9 c3@4 b2@2 [a2,e3,a3]@2 [a2,e3,a3] ~ [a2,e3] ~@3 [c3,g3]@2 [c3,g3]@2, ~@5 e2@8 ~@3, ~@5 b2@3 ~@8, ~@7 c4@5 c4@2 c4@2, ~@7 g3@3 ~@6]/2", // C5 A5 C5
  V: "[[c3,g3,c4] ~@3 [c3,g3,c4] ~@9 c3@4 b2@2 [a2,e3,a3]@2 [a2,e3,a3] ~ [a2,e3,a3]@4 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@22 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@20, ~@5 e2@6 ~@45, ~@5 b2@3 ~@48, ~@7 [g3,c4]@3 ~@46]/7", // C5 A5 C5 E5 D5 C5 E5 D5 …
  W: "[~@2 [e3,b3]@3 ~ [d3,a3]@6 [c3,g3]@20]/2", // E5 D5 C5
  X: "[b2 ~ b3@2 ~@4 [e2,b2]@4 [c3,g3,c4]@14 [e2,b2,e3]@18 [c3,g3,c4]@14 [e2,b2,e3]@18 [a2,e3,a3]@2 [a2,e3,a3] ~, e3 b2 ~@18, ~@3 [e3,a3]@3 ~@34]/5", // E5 C5 E5 C5 E5 A5
  Y: "[[c3,g3,c4] ~@3 [g3,c4] ~@5 [g3,c4]@2 [f3,c4,f4]@28 ~@8, ~ c3@2 ~@9]/3", // C5 F5
})).s("gm_distortion_guitar").gain(0.14).pan(0.9)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_3 = note("<~@36 A@2 B@4 C@8 D ~@43 A@2 E@8 D ~@38>".pickRestart({
  A: "[~@12 g2@4 g2 ~@3 [g2,c3]@4 [g2,c3]@2 [e2,b2,e3]@6, ~@6 g3@7 ~@3, ~@3 c3@2 ~@3]/2", // C5 E5
  B: "[[a2,b2]@2 e3 ~@3 e3 ~ [e2,b2] ~ d3@2 ~@4 c3@4 ~@2 d3@2 c3@2 ~@4 f3@2 [b2,e3] ~ b3@2 ~@2 e3 ~ [e2,b2] ~ e3@2 c3@12 c3@2 [e2,b2,e3]@6, ~ b3@2 a3@3 g3@4 g3@3 ~@4 e3@2 a3@3 ~@10, ~@2 [e2,b2]@2 ~@2 g2@7 e2@7 ~@2 [g2,g3]@7 ~@3, ~@8 d3 ~ c3@2 ~ [b2,e3]@3 ~@2 b2@2 ~@12]/4", // Asus2 E5 G E5
  C: "[b2 ~ b3@2 ~@4 [e2,b2]@4 c3@10 c3 ~ [g2,c3,g3] ~ [b2,e3]@8 [b2,e3] ~ [b2,e3]@4 [b2,e3]!2 ~@2 [g2,c3,g3]@14 [g2,c3]@2 [e2,b2]@12 [e2,b2]@4 c3@6 c3 ~ [g2,c3,g3]@8 [e2,b2,e3]@10 b2@4 b2@2 c3@6 c3 ~ [g2,g3] ~@7 [e2,b2,e3]@4, e3@2 b2@2 ~@2 [g2,g3]@6 ~ e2@9 ~@16 [g2,g3]@4 ~@9 [e2,e3]@3 [g2,g3]@4 ~@6, ~@3 [e3,a3]@3 c4@7 ~@17 e3@8 ~@20 c3@4 ~@2]/8", // E5 C5 E5 C5 E5 C5 E5 G …
  D: "[b2,e3]@2 [b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3] ~@5", // E5
  E: "[[a2,b2]@2 e3 ~@3 e3 ~ [e2,b2] ~ d3@2 ~@4 c3@4 ~@2 d3@2 c3@2 ~@4 f3@2 [b2,e3] ~ b3@2 ~@2 e3 ~ [e2,b2] ~ e3@2 c3@12 c3@2 [b2,e3]@6 b2 ~ b3@2 ~@4 [e2,b2]@4 c3@6 c3 ~ [c3,g3]@6 ~@2 [e2,b2,e3]@10 b2@4 b2@2 c3@6 c3 ~ [g2,g3] ~@7 [e2,b2,e3]@4, ~ b3@2 a3@3 g3@4 g3@3 ~@4 e3@2 a3@3 ~@10 e3@2 ~ [e3,a3]@3 c4@7 ~@19, ~@2 [e2,b2]@2 ~@2 g2@7 e2@7 ~@2 [g2,g3]@7 e2@7 ~@2 [g2,g3]@4 g2@4 ~@5 [e2,e3]@3 [g2,g3]@4 ~@6, ~@8 d3 ~ c3@2 ~ [b2,e3]@3 ~@2 b2@2 ~@14 b2@2 ~@22 c3@4 ~@2]/8", // Asus2 E5 C5 E5 G E5 A5 E5 …
})).s("gm_distortion_guitar").gain(0.1).pan(0.8)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<A@8 B@2 C@2 D@2 E@7 ~@61 F@5 ~@39 G@7 H@2 I@2 J@6>".pickRestart({
  A: "[~@2 b2@11 a2@11 b2@10 a2@11 g3@11 b2@10 g3@11 b2@11 b3@10 a3@11 b3@11 a3@8]/8", B: "[~@2 g3@11 b2@11 g3@8]/2",
  C: "[~@3 [e3,b3,e4]@10 [g3,d4,g4]@10 [c3,c4]@9, ~@23 g3 ~@8]/2", // E5 G5 C
  D: "[~@2 [a2,e3,a3]@11 [e3,b3,e4]@10 ~ [g3,g4]@8, ~@23 d4@9]/2", // A5 E5 G
  E: "[~@2 [c3,c4]@10 ~ a2@10 ~ [e3,b3,e4]@11 [g3,d4,g4]@10 [c3,g3,c4]@11 [a2,e3,a3]@11 [e3,b3,e4]@8 [e2,e3,b3,e4]@32 ~@5, ~@2 g3 ~@9 [e3,a3]@10 ~@90]/7", // C E5 G5 C5 A5 E5 A5
  F: "[~@12 [c3,g3]@22 [e3,b3] ~@3 [d3,a3] ~@5 [c3,g3]@22 [e3,b3] ~@3 [d3,a3] ~@9, ~@3 c2@8 c2@8 ~]/5", // C5 E5 D5 C5 E5 D5
  G: "[~@12 d4@28 [e3,b3,e4]@10 [g3,d4,g4]@10 ~ [g3,c4,g4]@10 [a3,e4,a4]@11 [e3,b3,e4]@10 [g3,d4,g4]@10 ~ [g3,c4,g4]@9, ~@11 a3@28 ~@73]/7", // E5 G5 C5 A5 E5 G5 C5
  H: "[~ [a3,e4,a4]@11 [e3,b3,e4]@10 [g3,d4,g4]@10]/2", I: "[~ [g3,c4,g4]@10 [a3,e4,a4]@11 [e3,b3,e4]@10]/2",
  J: "[[g3,d4,g4]@10 ~ [g3,c4,g4]@10 [e4,a4]@11 ~@64, ~@21 a3@68 ~@7]/6", // G5 C5 A5
})).s("gm_synth_strings_1").gain(0.08)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@13 A B@2 ~@117 C@6 ~@4>".pickRestart({
  A: "~@8 b4@3 a4 ~ a4@3, ~@6 g4 ~", B: "[e4@2 ~ g4@21 ~@8]/2", C: "[~@12 d6@21 b5@18 ~@3 d6@21 b5@20 ~]/6",
})).s("gm_lead_2_sawtooth").gain(0.06).pan(0.2)

// other · pad poly · "POLYSYNTH"
const pad_poly = note("<A@8 B@3 ~@117 C@8 ~@7>".pickRestart({
  A: "[~@2 b2@11 a2@11 b2@10 a2@11 g3@11 b2@10 g3@11 b2@11 b3@10 a3@11 b3@11 a3@8]/8",
  B: "[~@2 g3@11 b2@11 g3@11 ~@13]/3", C: "[~@3 f#4@61]/8",
})).s("gm_pad_poly").gain(0.17).pan(0.9)

// other · ocarina
const ocarina = note(`<
  A B C D E F G H I J K ~@4 L M N O P Q R S ~@36 T@2 U@2 V@4 ~@11 W R S ~@32 T@2 U@2 V@4 ~@8 X@2 Y@2 Z@2 AA@2 AB@2 ~@4
>`.pickRestart({
  A: "~@5 [b5,c#6] d6 [e6,f#6] g6 a6 [b5,b6,c#7] [c#6,d7] [d6,e6,e7,f#7] [f#6,g7] [g6,a6,a7,b7] b6", // Bsus2 Esus2 Bsus2 Dmaj7 D Gmaj7 G
  B: "[c#7,d7] e7 [b5,f#7,g7] [c#6,a7] [d6,e6,b7] f#6 [g6,a6] b6 [c#7,d7] e7 [b5,f#7,g7] [c#6,a7] [d6,e6,b7] f#6 [g6,a6] b6", // Dmaj7 Gmaj7 F#m E7 Gsus2 Dmaj7 Gmaj7 F#m …
  C: "[c#7,d7] e7 [f#7,g7] a7 b7 ~@4 b7 ~@3 [e5,f#5] [g5,a5] [b5,c#6]", // Dmaj7 Gmaj7 Esus2 Gsus2 Bsus2
  D: "[d6,e6,f#6] [g6,a6] [e5,b6,c#7] [f#5,g5,d7,e7] [a5,b5,c#6,f#7,g7] [d6,e6] [f#6,g6] [a6,b6] [e5,c#7,d7,e7] [f#5,g5,f#7,g7] [a5,b5] [c#6,d6] [e6,f#6] [g6,a6,b6] [c#7,d7] [f#5,e7,f#7]", // D Gsus2 C#m7 Em7 F#m Dsus2 Gmaj7 Asus2 …
  E: "[c#6,g7] e6 f#6 a6 [c#7,e7] ~ f#5 ~@2 f#5 ~ c#7 ~@2 c#7 ~", F: "~@10 b5 c#6 [d6,e6] f#6 [g6,a6] b6",
  G: "[b5,c#6,c#7,d7] [d6,e7] [e6,f#6,f#7,g7] [g6,a7] [a6,b6,b7] c#7 [d7,e7] f#7 [b5,c#6,g7,a7] [d6,b7] [e6,f#6] g6 [a6,b6] c#7 [d7,e7] f#7", // Bm Dsus2 Em Gsus2 Asus2 Dsus2 A7 G …
  H: "[b5,g7,a7] [c#6,d6,b7] e6 [f#6,g6] a6 [b6,c#7] d7 [e7,f#7] g7 [a7,b7] ~@5 b7", // Em G Gmaj7 Bsus2 Esus2 Asus2
  I: "~@2 e5 [f#5,g5] [a5,b5] [c#6,d6] [e6,f#6,g6] [a6,b6] [e5,f#5,c#7,d7] [g5,a5,e7,f#7] [b5,c#6,d6,g7] [e6,f#6] [g6,a6] [b6,c#7] [e5,f#5,d7,e7,f#7] [g5,a5,g7]", // Gmaj7 Asus2 Dmaj7 Em Asus2 Dmaj7 F#m7 G …
  J: "[b5,c#6] [d6,e6] [f#6,g6,a6] [b6,c#7] [f#5,d7,e7] [f#7,g7] c#6 [e6,f#6] a6 c#7 e7 f#5 ~@3 f#5", K: "c#7 ~@15",
  L: "~@8 [e6,f#6] [g6,a6] [b6,c#7] [d7,e7] [f#7,g7,a7] [e6,b7,c#8] [f#6,g6,d8,e8] [a6,b6,f#8,g8]", // Esus2 Gsus2 Bsus2 Dsus2 F#m C#m7 Em7 Gmaj7
  M: "[c#7,d7,e7] [f#7,g7] [a7,b7] [c#8,d8] [e6,f#6,g6,e8,f#8,g8] [a6,b6] [c#7,d7] [e7,f#7] [g7,a7] [b7,c#8,d8] [f#6,e8,f#8] g8 [c#7,e7] f#7 a7 c#8", // C#m Gmaj7 Asus2 Dmaj7 Em Asus2 Dmaj7 Esus2 …
  N: "e8 f#6 ~@2 f#6 ~ c#8 ~@2 c#8 ~@6",
  O: "~@3 [e6,f#6] [g6,a6] [b6,c#7,d7] [e7,f#7] [g7,a7] [e6,b7,c#8] [f#6,g6,d8,e8] [a6,b6,f#8,g8] [c#7,d7] e7 [f#7,g7] [a7,b7] [c#8,d8]", // Esus2 Gsus2 Bm Esus2 Gsus2 C#m7 Em7 Gmaj7 …
  P: "[e6,e8] [f#6,g6,f#8,g8] a6 b6 [c#7,d7] e7 [f#7,g7] a7 b7 [c#8,d8] [f#6,e8] f#8 g8 c#7 ~ e7", // E Gmaj7 Dmaj7 Gmaj7 Dmaj7 F#7
  Q: "f#7 a7 ~ c#8 ~ e8 ~@2 f#6 ~@5 b5 [c#6,d6]", // Dmaj7
  R: "[e6,f#6] [g6,a6] [b5,b6,c#7] [c#6,d6,d7,e7] [e6,f#6,f#7,g7] [g6,a6,a7,b7] [b6,c#7] [d7,e7] [b5,f#7,g7] [c#6,d6,a7,b7] [e6,f#6] [g6,a6] [b6,c#7] [d7,e7] [b5,f#7,g7] [c#6,d6,a7,b7]", // Esus2 Gsus2 Bsus2 C#m Em G Bsus2 Dsus2 …
  S: "[e6,f#6] [g6,a6] [b6,c#7] [d7,e7] [f#7,g7] [a7,b7] ~@3 b7 ~@6", T: "[~@7 a4@20 ~@5]/2", U: "[~@5 a6@8 ~@3]/2",
  V: "[~@3 a4@18 ~@10 a5@22 ~@11]/4", W: "~@14 b5 [c#6,d6]", X: "[~ [c6,e6]@8 ~@7]/2",
  Y: "[~@6 c7@5 ~@5, ~@2 e7@13 ~@17]/2", Z: "[~ e5@7 ~@2 e6@17 ~@5]/2", AA: "[~@7 e5@12 ~@13, ~@4 c6@11 ~@17]/2",
  AB: "[~@2 e6@5 b5@6 ~@3]/2",
})).s("gm_ocarina").gain(0.03)

// other · ocarina · soft notes
const ocarina_soft = note("<~@2 A B C D ~ E F G H ~@5 I J ~ K L ~ M ~@57 M ~@62>".pickRestart({
  A: "[b5,c#6] d6 [e6,f#6] g6 [a6,b6] c#7 [d7,e7] f#7 [b5,c#6,g7,a7] d6 [e6,f#6] g6 [a6,b6] ~@3", B: "~@14 e5 g5",
  C: "[a5,b5] d6 g6 b6 d7 [f#7,g7] [e5,g5] [a5,b5] [c#6,d6] [e5,e6,f#6] [g5,a5,g6,a6,b6] [b5,c#6,d7] [d6,e6,f#6,e7,f#7] [g6,a6,g7] b6 [d7,e7]", // Asus2 Gmaj7 Em Asus2 Dmaj7 Esus2 G Bm …
  D: "[f#7,g7] ~@15", E: "~@5 b5 c#6 [d6,e6] f#6 [g6,a6] b6 [c#7,d7] e7 [b5,f#7,g7] [c#6,a7] [d6,e6]",
  F: "f#6 [g6,a6] b6 ~@13", // Gsus2
  G: "~@4 e5 [g5,a5,b5] d6 ~ g6 [b6,d7] f#7 [e5,g7] [g5,a5] [b5,c#6] [e5,d6,e6] [g5,f#6,g6,a6]", // G Bm Em Gsus2 Bsus2 E7 D
  H: "[a5,b5,b6] [c#6,d6,d7,e7] [e6,f#6,g6,f#7,g7] ~@13", I: "~@9 e6 g6 [a6,b6] d7 g7 b7 d8",
  J: "[f#8,g8] e6 [g6,a6,b6] [c#7,d7] [e6,e7,f#7] [g6,a6,g7,a7] [b6,c#7,b7,d8] [d7,e7,e8,f#8] [f#7,g7,a7,g8] b7 [d8,e8] [f#8,g8] ~@4", // Gmaj7 G Dmaj7 Esus2 Gsus2 Bm D F#m …
  K: "~@9 e6 ~ [g6,a6] b6 ~ d7 ~", L: "g7 ~ b7 ~ d8 ~ f#8 [e6,g8] ~ g6 a6 b6 ~@4",
  M: "~@2 b5 [c#6,d6] [e6,f#6] [g6,a6] [b6,c#7] [d7,e7] [b5,f#7,g7] [c#6,d6,a7] [e6,f#6] [g6,a6] b6 ~@3", // Dmaj7 Esus2 Gsus2 Bsus2 Dsus2 Gmaj7 Dmaj7 Esus2 …
})).s("gm_ocarina").gain(0.01)

// other · xylophone
const xylophone = note(`<
  ~@20 A B C B C B C B C B C B C B C B D ~@41 A B C B C B C B C B C B C B C B D ~@48
>`.pickRestart({
  A: "~@12 e3 ~ e3 ~", B: "e4 ~ e3 ~ e3 ~ e4 ~ e3 ~ e3 ~ e3 ~ e4 ~", C: "e3 ~ e3 ~ d4 ~ e4 ~ e3 ~ e3 ~ e3 ~ e3 ~",
  D: "e3 ~ e3 ~ d4 ~ e4 ~ e3 ~ e3 ~@5",
})).s("gm_xylophone").gain(0.2).pan(0.2)

// other · pad poly · "POLYSYNTH"
const pad_poly_2 = note("<A@2 B@3 C@2 ~ D@2 ~@10 E@5 ~@53 E@5 ~@60>".pickRestart({
  A: "[~@2 b1@21 ~@9]/2", B: "[~@13 g2@21 ~@14]/3", C: "[~@8 b1@21 ~@3]/2", D: "[~ g2@22 ~@9]/2",
  E: "[~@12 c2@31 ~ c2@33 ~@3]/5",
})).s("gm_pad_poly").gain(0.17).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A B C B C D ~@4 E F G H ~@17 I J K J K J K L K L K L K L M N K N K L O ~ I L K J K N K P K Q R Q S T U@2 V Q S V W
  ~@15 I J K J K J K L K L K L K L K L O ~ I N K P K N K P K N K P K N O ~ A X Y Z AA AB AC AD AE AF AG ~@4
>`.pickRestart({
  A: "~@8 x!3 ~@5", B: "~ x!2 ~ x!2 ~@6 x!2 ~ x", C: "x ~@6 x!4 ~@5", D: "~ x ~@14", E: "~@8 x ~ x!2 ~@4",
  F: "~@2 x!4 ~@6 x!2 ~ x", G: "x ~@6 x!2 ~ x!2 ~@4", H: "~@2 x!4 ~@10", I: "~@3 x", J: "~@4 x!2 ~ x", K: "x ~@2 x",
  L: "x ~@3 x!2 ~ x", M: "x ~@2 x!2 ~ x ~", N: "x ~@4 x ~ x", O: "x", P: "~@5 x ~ x", Q: "x!2 ~@3 x ~ x",
  R: "x!2 ~@4 x ~", S: "x ~@4 x!2 ~", T: "x!2 ~@3 x!3", U: "~ x ~@3 x!2 ~", V: "x!2 ~@3 x!2 ~", W: "x!2 ~@3 x ~@2",
  X: "~ x!2 ~ x!2 ~@6 x!4", Y: "~@6 x!2 ~ x!2 ~@5", Z: "~ x!4 ~@6 x!2 ~ x!2", AA: "~@6 x!4 ~@6",
  AB: "x!2 ~ x!2 ~@6 x!4 ~", AC: "~@5 x!2 ~ x!2 ~@6", AD: "x!4 ~@6 x!2 ~ x!2 ~", AE: "~@5 x!4 ~@6 x",
  AF: "x ~ x!2 ~@6 x!3 ~ x ~", AG: "~@4 x!2 ~ x!2 ~@7",
})).gain(0.47)

// drums · snare
const snare = s("sd").struct(`<
// … 58 more lines