Strudelify

Incognito

Spyro Gyra

KeyB♭ minorTempo140 bpm
0:00/0:00
// Incognito — Spyro Gyra
// 140 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: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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 · epiano1
const epiano1 = note(`<
  A B C@2 D@2 E@4 F@2 G H@3 I J K L M N O P Q R S@2 ~ T U V W@3 X@2 Y Z AA@2 AB@2 AC AD AE@3 AF AG AH AI@4 AJ AK AL AM
  AN@3 AO AP@7 AQ@2 AR AS AQ@2 AT AU AT AV AW AX AY AZ BA BB BC BD BE BF ~ BG BH BI BJ BK BL BM BN BO BP BQ BR BS ~ BG
  BT BU BV BW@3 BX BY@5 BZ@4 CA@2 CB@2 CC@2 CD CE CF@4 CG CH@2
>`.pickRestart({
  A: "~@2 [c5,f5,a5,c6]@2 ~ [db5,f5,ab5]@3", B: "~@4 [bb4,eb5,g5]@5 ~ [gb4,ab4,db5]@5 ~", C: "[[f4,bb4,eb5]@29 ~@3]/2",
  D: "[~@4 [c5,f5,a5,c6]@4 ~@2 [ab4,db5,f5,ab5]@8 ~@2 [bb4,eb5,g5]@4 ~@2 [gb3,gb4,ab4,db5]@5 ~]/2", // F Db Eb Gbsus2
  E: "[eb5@14 ~@8 eb6@11 ~@3 [c4,f4,a4,c5]@4 ~@2 [db4,f4,ab4]@8 ~@2 [bb3,eb4,g4]@5 ~ db4 ~@3 ab3@2, [f3,f4,bb4]@33 ~@25 [b2,gb3]@6, ~@18 ab5@15 ~@31]/4", // F Db Eb Bb5 B5
  F: "[[f3,bb3,eb4]@29 ~@3, bb2]/2", G: "[c5,f5,a5,c6]@2 ~ [ab4,db5,f5,ab5]@4 ~",
  H: "[[bb4,eb5,g5]@4 ~@2 [gb4,ab4,db5]@5 ~@5 [bb3,eb4]@2 ~ [ab3,bb3,eb4] ~@2 bb3 ~@3 [ab3,eb4] ~@5 [ab3,bb3,eb4]@3 eb4 ~@4 bb4 db5 bb4@2 eb5@2 ~@2, ~@3 [f4,eb5]@8 ~, ~@3 bb4@7 ~@2]/3", // Eb Gbsus2 Eb5 Absus2 Ab5 Absus2 F7
  I: "[ab3,bb3,eb4]@2 ~ [ab3,bb3,eb4] ~@2 [ab3,bb3,eb4] ~@2 [ab3,bb3,eb4] ~@6", // Absus2
  J: "[ab3,bb3,eb4]@2 ~ [ab3,bb3] ~@4 bb4 db5 ~@2 eb5@2 ~@2", // Absus2
  K: "[ab3,bb3,eb4]@2 ~ [ab3,bb3,eb4] ~@2 [ab3,eb4] ~@3 [ab3,bb3,eb4] ~@2 [ab3,eb4] ~@2", // Absus2 Ab5 Absus2 Ab5
  L: "[ab3,bb3,eb4]@2 ~ [ab3,bb3,eb4] ~@2 [ab3,bb3,eb4] ~@9", M: "[bb3,eb4] ~@2 [bb3,eb4] ~@6 ab3 ~@5",
  N: "bb3@2 [ab3,bb3] ~@7 ab3 ~ bb3 ~@3", O: "bb3 ~@2 bb3 ~@6 ab3 ~@5", P: "bb3 ~@2 bb3 ~@2 ab3 ~@9",
  Q: "~@3 [b3,eb4,f4]@13", R: "[b3,f4] ~@2 [b3,eb4] ~@12", S: "[[b3,eb4,f4]@31 ~]/2", T: "f3 ~@2 f3 ~@12",
  U: "bb3@2 ~ bb3 ~@8 bb3 ~@3", V: "bb3@2 ~@4 bb3 ~@9",
  W: "[~@2 [db3,eb4,gb4]@14 gb5 ~ [db3,b3,eb4,gb4]@2 db5 [db3,ab3,db4,f4,eb5]@3, ~@12 f5 ~@3]/3", // Ebm7 B Db
  X: "[db5@3 ~ [db3,b3,gb4]@4 db5@2 [eb3,ab3,db4,f4]@22, ~@4 ab4@3 ~@3 bb4@18 ~@4]/2", // Gbsus4 Db
  Y: "~@4 [c4,f4,ab4,c5]@3 [bb3,eb4,ab4] ~@2 [bb3,g4]@6, ~@10 gb4 ~@5", Z: "f4 ~ [bb3,e4,ab4]@11 ~@3",
  AA: "[~@4 [c5,f5,a5,c6]@4 ~@2 [ab4,db5,f5,ab5]@8 ~@2 [bb4,eb5,g5]@4 ~@2 [gb4,ab4,db5]@5 ~]/2", // F Db Eb Gbsus2
  AB: "[[f4,bb4,eb5]@15 ~]/2", AC: "~@2 [c5,f5,a5,c6]@2 ~ [ab4,db5,f5,ab5]@3",
  AD: "~@4 [bb4,eb5,g5]@4 ~@2 [gb4,db5]@5 ~", // Eb Gb5
  AE: "[[f4,bb4,eb5]@35 ~ [ab3,bb3,eb4]@2 ~ [ab3,bb3,eb4] ~@2 [ab3,bb3,eb4] ~@3 [bb3,eb4] ~]/3", // Ebsus2 Absus2 Eb5
  AF: "~@4 [ab3,bb3,eb4]@3 [ab3,bb3,eb4] ~@2 [ab3,bb3,eb4] ~@5", // Absus2
  AG: "~@4 [ab3,bb3,eb4]@2 ~ [ab3,bb3,eb4] ~@2 [bb3,eb4] ~@3 [ab3,bb3,eb4] ~", // Absus2 Eb5 Absus2
  AH: "~@4 [ab3,bb3,eb4]@2 ~ [bb3,eb4] ~@2 [ab3,bb3,eb4] ~@5", AI: "[~@4 [ab3,bb3,eb4] ~@2 [b3,eb4,f4]@56 ~]/4",
  AJ: "~@4 [bb3,eb4] ~ ab3 bb3 ~@6 [bb3,eb4] ~, ~@2 ab3 ~@5", AK: "~@4 [ab3,bb3,eb4]@2 bb3 ~@7 [ab3,bb3,eb4] ~",
  AL: "~@4 [bb3,eb4]@2 [ab3,bb3,eb4] ~@9", AM: "~@4 [bb3,eb4]@2 [ab3,bb3,eb4] ~@3 [bb3,eb4] ~@5",
  AN: "[[bb3,eb4] ~@7 [db3,b3,eb4,gb4]@29 ~@3 [c3,bb3,d4,f4] d4 bb3 [d3,c4,e4,g4] e4 c4 [e3,d4,gb4,a4] gb4]/3", // Eb5 B Bb C D
  AO: "d4 [f3,eb4,g4,bb4] g4 eb4 [gb3,e4,ab4,b4] ~ db4 eb4 e4 gb4 ab4 bb4 b4 db5 eb5 e5", // Eb E
  AP: "[gb5 ab5 bb5 b5 [db4,gb4,bb4]@14 ~@26 gb4@12 ~@12 gb5@13 ~@3 [c5,f5,a5,c6]@4 ~@2 [ab4,c5,eb5,ab5]@8 ~@2 [bb4,eb5,g5]@4 ~@2 [gb4,ab4,db5]@5 ~, ~@4 [e2,e3]@12 ~@4 c2@65 ~@27, ~@4 bb5@3 ~@35 d5@19 ~@51, ~@4 b2 ~@15 [d4,gb4,a4]@23 c3@17 ~@6 c3@16 ~@30, ~@43 a4 d4@10 ~@58]/7", // Gb F Ab Eb Gbsus2 E D
  AQ: "[f4,bb4,eb5]/2", AR: "~@2 [c5,f5,a5,c6]@2 ~ [ab4,c5,eb5,ab5]@3", AS: "~@4 [bb4,eb5,g5]@4 ~@2 [gb4,ab4,db5]@5 ~",
  AT: "~@10 [ab3,bb3,eb4] ~@5", AU: "~@5 [bb3,eb4]@3", AV: "~@2 [bb3,eb4] ~@13", AW: "[ab3,eb4]@3 ~ bb3 ~@11",
  AX: "~@4 bb3 ~@11", AY: "~@6 bb3 ~@7 [bb3,eb4] ~", AZ: "~@10 [bb3,eb4]@3 ~@3, ~@10 ab4 ~@5", BA: "~@12 eb4 ~@3",
  BB: "~@2 [ab3,bb3] ~@7 [bb3,eb4]@2 ab3 ~@3, ~@2 eb4@3 ~@5 ab3 ~@5", BC: "~@8 [ab3,bb3] ~ [ab3,eb4] ~ bb3 ~@3",
  BD: "~@5 [ab3,bb3,eb4]@3", BE: "~@12 bb2 ~@3", BF: "~@5 [ab3,eb4] ~@2, ~@5 bb3@2 ~, ~@10 ab4 ~@5",
  BG: "~@2 [ab3,bb3,eb4] ~@13", BH: "~@2 [ab3,eb4] ~@5 [bb3,eb4]@2 ab3 ~@5, ~ bb3 ~@6", BI: "~@5 [bb3,eb4,ab4]@2 ~",
  BJ: "~@10 eb4 ~@5", BK: "~@10 [bb3,bb4] ~@5", BL: "bb4 ~@7", BM: "~@2 [ab3,bb3,eb4] ~@7 [ab3,bb3,eb4] ~@5",
  BN: "~@14 [bb3,eb4] ~", BO: "~@11 [ab3,bb3,eb4,ab4]@4 ~", BP: "~@10 [bb3,eb4,bb4] ~ ab3 ~@3",
  BQ: "~@5 [bb3,bb4] ~@2, ~@10 eb4@5 ~", BR: "bb4@2 ~@12 [ab3,bb3,eb4] ~", BS: "~@10 [bb3,eb4,ab4] ~@5",
  BT: "[bb2,bb3,eb4,ab4]@4 ~@6 [bb2,ab3,eb4,ab4] ~@5", BU: "~@2 [eb4,ab4] ~@7 [bb2,eb4]@5 ~, ~@10 [bb3,ab4]@3 ~@3",
  BV: "eb4@4 bb3 ~@5 [bb3,eb4,ab4] ~@5", // Ebsus4
  BW: "[~@6 eb4 ~@3 bb3 ~@3 ab4@6 f4 ~ eb4 ~ ab4@4 ~@2 [bb2,bb3]@6 eb4 ~ ab4@2 g4@2 eb4@2 ~@4, ~@14 [bb2,f3,bb3]@8 ~ [bb2,bb3]@5 ~@2 ab4@4 ~@14]/3", // Bb Bb5 Bb
  BX: "ab4@4 f4@2 eb4 ~ ab4@4 f4 ~ ab4@2, ~@7 bb3@5 ~@4",
  BY: "[~@2 f4@2 eb4 ~ ab4@2 g4@2 eb4@2 c4@2 ~@2 ab4@4 f4 ~@3 ab4@4 f4 ~ ab4@4 f4@2 ~@2 ab4 ~ g4@2 eb4@2 c4@2 ~@2 ab4@4 ~@4 ab4@2 f4@2 ~@2 ab4@4 ~@2 eb4 ~ ab4 ~ g4@2 eb4@2 c4@2 bb3@2, ~@6 [bb2,bb3]@6 ~@2 [bb2,bb3]@7 ~@9 bb3@7 ~@9 [bb2,bb3]@7 ~@3 [bb2,bb3]@4 ~@2 [bb2,bb3]@11 ~@7]/5", // Bb
  BZ: "[ab4@4 f4@2 eb4 ~@3 f4@2 ~@2 ab4@4 f4@2 eb4 ~ ab4 ~ g4@2 eb4@2 c4@2 ~@2 ab4@4 f4@2 ~@2 [bb2,ab4]@2 f4@2 ~@2 ab4@4 f4@2 eb4 ~ ab4 ~ g4@2 eb4@2 c4@2 ~@2, ~@8 [bb3,ab4]@4 ~@2 [bb2,f3,bb3]@9 ~ bb3@4 ~@2 bb3@7 ~@9 [bb2,bb3]@7 ~ [bb2,bb3]@7 ~@3]/4", // Bb7 Bb5 Bb
  CA: "[[db3,ab3,b3,eb4,gb4]@10 db4 ~ [db3,ab3] ~ db4@11 ~ ab3@2 db4 ~ db3 ~, db4@4 ~@3 [db3,f4,ab4]@7 ~@2, ~@14 ab3@9 ~@9]/2", // Abm7 Db5 Db
  CB: "[[db3,b3,eb4,gb4,b4]@9 ~ [db3,b3,eb4,gb4,b4] ~@3 [db3,db4,f4,ab4,db5]@11 ~ [db3,db4,ab4,db5]@3 [d4,gb4,a4] ~@2, ~@26 f4 ~@2 d3@3]/2", // B Db Db5 D
  CC: "[[eb3,db4,f4,ab4,db5]@9 ~ [db4,f4,ab4] ~@3 [eb3,eb4,g4,bb4]@8 [eb3,eb4]@4 eb3@2 eb4 ~ eb3 ~, ~@5 [eb3,db5] ~@5 [g4,bb4,eb5]@3 ~@2]/2", // Db Eb Eb7 Eb
  CD: "[eb3,db4,ab4,db5]@10 ~@2 db4 ~@3, f4@3 ~, ~@5 eb3@2 ~", // Dbsus2
  CE: "[d4,f4] d4 bb3 [e4,g4] e4 c4 [gb4,a4] gb4 d4 [g4,bb4] g4 eb4 [e4,ab4,b4] ~ db4 eb4, [c3,bb3]@2 ~ [d3,c4]@2 ~ [e3,d4]@3 [f3,eb4]@3 gb3@2 ~@2", // Dm Em Gbm Gm E C7 D7 E7 …
  CF: "[e4 gb4 ab4 bb4 b4 db5 eb5 e5 gb5 ab5 bb5 b5 [e3,db4,gb4,bb4]@14 ~ g3 ~@8 a5@16 ~@2 d6@6 [c5,f5,a5,c6]@4, ~@12 bb5@3 ~@13 c3@30 ~@6, ~@28 [d4,e4,gb4,a4]@11 ~@25, ~@36 gb5@7 ~@21]/4", // Gb7 F D
  CG: "~@2 [ab4,c5]@7 ~@3 [bb4,eb5,g5]@3 ~", CH: "[~@2 [ab4,db5]@5 ~ [f4,bb4,eb5]@10 ~@14]/2",
})).s("gm_epiano1").gain(0.16).pan(0.4)

// chords · epiano1 · soft notes
const epiano1_soft = note(`<
  A@2 ~@4 B@3 ~@5 C D E F G ~ H I@2 ~@5 J K I J L@3 M N O ~@6 P ~@4 Q ~@7 R@2 H ~@4 S@5 ~@8 T ~ U ~ V W ~ X ~@2 Y ~ Z
  ~@2 AA ~ AB AC ~ AD I ~@2 AE AF ~@4 AG AH AI AJ AK@3 AL@2 AM AN@2 AO@2 AP ~@2 AQ ~@3 AR ~@2 AS@3 AT AU ~
>`.pickRestart({
  A: "[~@5 ab4@4 ~@7]/2", B: "[~@14 eb5@19 ~@9 ab3@6]/3", C: "ab3@2 ~@4 ab3 ~@3 bb3 ~@2 [ab3,eb4] ~@2",
  D: "~@2 bb3 ~@13", E: "~@13 [ab3,eb4] ~@2", F: "~@3 eb4 ~@6 bb4@2 ~@4", G: "~@6 bb3 ~@9", H: "ab3 ~@15",
  I: "~@14 ab3 ~", J: "~@3 bb3 ~@12", K: "f4 ~@15", L: "[~@4 b3@29 ~@15]/3", M: "~@2 db3 ~ eb4@4 ~@8",
  N: "~@2 bb3@13 ~", O: "~@3 eb4", P: "~@13 ab4@2 ~", Q: "~@10 ab3 ~@5", R: "~@2 ab3 ~@5",
  S: "[~@4 g2 ~@46 a4@11 ~@18, ~@4 e4@65 ~@11]/5", T: "~@5 [ab3,ab4]@3", U: "~@10 ab3 ~ bb3@2 ~@2",
  V: "~@10 ab3 ~ bb3 ~@3", W: "bb3 ~ bb3 ~ ab3 ~@11", X: "~@10 bb3 ~@5", Y: "~@10 ab4@5 ~, ~@10 bb2 ~@5",
  Z: "~@12 ab3 ~@3", AA: "~@4 ab3 ~@3 ab3 ~@7", AB: "~@10 eb5 ~@5", AC: "~@12 [ab3,ab4] ~@3", AD: "~@10 ab4 ~@5",
  AE: "~@13 ab3 ~@2", AF: "[bb3,eb4]@2 ~@2 [eb4,ab4] ~@11", AG: "~@2 bb3 ~@10 ab3@2 ab4, ~@10 f3@5 ~",
  AH: "[ab3,ab4]@4 ~@6 ab3 ~@5", AI: "~@6 [ab3,bb3] ~@3 ab3 ~@5", AJ: "~@6 f4 ~",
  AK: "[~@2 f4@2 ~@8 c4 ~ [bb2,bb3]@6 ~@3 bb2@4 ~@3 [bb2,bb3]@7 ~@11]/3", // Bb
  AL: "[~@7 [bb2,bb3]@5 ~@2 bb2@6 eb4 ~@3 ab4 ~@7, ~@23 [bb2,bb3]@4 ~@5]/2", AM: "~@4 f4@2 ~@6 eb4 ~@3",
  AN: "[~ f4 ~@5 [bb2,f3]@3 ~@2 bb2@2 ~@2]/2", AO: "[~@8 bb2@4 ~@2 bb2@6 ~@2 eb4 ~ bb3@3 ~@5]/2",
  AP: "~@8 ab4 ~@5 ab3 ~", AQ: "~@12 db3 ~@3", AR: "~@11 [ab4,db5] ~@4",
  AS: "[~@10 [d5,e5]@3 g3@8 ~@3, ~@6 c4@7 ~@11]/3", AT: "~ eb5@4 ~@3", AU: "~@2 gb4@5 ~@9",
})).s("gm_epiano1").gain(0.08).pan(0.4)

// bass · slap bass 1
const bass = note(`<
  ~@9 A B C D E F G H G H@3 I H E J H K L M@2 L N O P Q R S T U V W X Y@2 Z Y@2 AA X AB AC AD@2 AC AE AF AD@2 AC AG AH
  AI AJ AK@3 AL@6 AM@2 AN AO AP AQ AR AS AR AT AR AU AV AW AV AX AV AY AR AZ AR BA AV BB AV BC BD BE AR BF AV BG BH BI
  BJ BK BL BM BN BO BN BP BN BQ BR BS BJ BT BU BV BW BX BY BZ CA CB CA CC CD@3 CE CF CG@2
>`.pickRestart({
  A: "~@10 b1@5 ~", B: "bb1@3 ~ bb2@2 bb1 ~@3 bb1@2 bb2 ~@3", C: "bb1@3 bb2@2 ~ bb1 ~@3 bb1@2 bb2@2 ~@2, ~@3 bb1 ~@12",
  D: "bb1@2 ~ bb2 ~@2 bb1 ~@3 bb1@2 bb2@2 ~@2", E: "bb1@2 ~ bb2@2 ~ bb1@2 ~@2 bb1@2 bb2 ~@3",
  F: "bb1@3 bb2@2 ~ bb1@2 ~@2 bb1@2 bb2@2 ~@2", G: "bb1@3 bb2@2 ~ bb1@2 ~@2 bb1@2 bb2 ~@3",
  H: "bb1@2 ~ bb2@2 ~ bb1@2 ~@2 bb1@2 bb2@2 ~@2", I: "bb1@2 ~ bb2@2 ~ bb1 ~@3 bb1@2 bb2@2 ~@2",
  J: "bb1@2 ~ bb2 ~@2 bb1@2 ~@2 bb1@2 bb2 ~@3", K: "bb1@2 ~ bb2@2 ~ bb1 ~@3 bb1 ~ bb2 ~@3",
  L: "bb1@2 ~ bb2 ~@2 bb1 ~@3 bb1@2 bb2 ~@3", M: "bb1@3 bb2 ~@2 bb1 ~@3 bb1@2 bb2 ~@3",
  N: "bb1@3 bb2@2 ~ bb1 ~@3 bb1 ~ bb2@2 ~@2", O: "bb1@3 ~ db2@2 ~ db3@2 ~ db2@2 ~@2 db2@2",
  P: "db3 ~@3 db2@3 db3 ~@2 db2 ~@3 db2@2", Q: "db3@2 ~@2 db2@2 ~ db3 ~@2 db2 ~@3 db2@2",
  R: "db3@2 ~@2 db2@3 db3 ~@2 eb2 ~ eb2@3 eb3", S: "~@2 eb2 ~@3 eb2@2 eb3@2 ~@2 eb2@2 ~@2", T: "~@4 c3@3 c3@2 ~ ab2@6",
  U: "c2 ~ c2@7 ~@7", V: "~@4 bb1@2 ~ bb2@2 ~ bb1@2 ~@2 bb1@2", W: "bb2@2 ~@2 bb1@3 bb2@2 ~@2 bb1@2 ~ bb1@2",
  X: "bb2 ~@3 bb1@2 ~ bb2@2 ~ bb1@2 ~@2 bb1@2", Y: "bb2@2 ~@2 bb1@2 ~ bb2@2 ~ bb1@2 ~@2 bb1@2",
  Z: "bb2@2 ~@2 bb1@2 ~ bb2@2 ~ bb1 ~@3 bb1@2", AA: "bb2 ~@3 bb1@2 ~ bb2 ~@2 bb1@2 ~@2 bb1@2",
  AB: "bb2@2 ~@2 bb1@2 ~ bb2@2 ~ bb1 ~@3 bb1 ~", AC: "bb2 ~@3 bb1@2 ~ bb2 ~@2 bb1 ~@3 bb1@2",
  AD: "bb2 ~@3 bb1@3 bb2 ~@2 bb1 ~@3 bb1@2", AE: "bb2 ~@3 bb1@3 bb2@2 ~ bb1 ~@3 bb1 ~",
  AF: "bb2@2 ~@2 bb1@3 bb2 ~@2 bb1 ~@3 bb1@2", AG: "bb2 ~@3 bb1@3 ~ db2@2 ~ db3@2 ~ db2@2",
  AH: "~@2 db2@2 db3 ~@3 db2@3 db3 ~@2 db2 ~", AI: "~@2 db2@2 db3@2 ~@2 c2@2 ~ d2@2 ~ e2@2", AJ: "~ f2@2 ~ gb2@2 ~@10",
  AK: "[~@2 e2@7 d2 c2@14]/3",
  AL: "[~@2 g1@2 c2@2 ~@2 c2@28 ~@14 bb1 ~@3 bb2@14 ~@8 bb2@7 ~@3 g1@6 ab1@4, ~@36 bb1@13 ~@3 bb1@14 ~@2 bb1@16 ~@12, ~@7 bb2@2 ~@7]/6",
  AM: "[bb1 ~ bb1@2 ~ bb1@4 ~ bb1@2 ~ bb1@2 ~]/2", AN: "bb1@8 bb2 ~@5 bb2@2", AO: "bb1 ~@5 bb1 ~ db2@2 ab1 ~@5",
  AP: "bb1@8 bb2@2 bb1 ~@3 bb1 ~", AQ: "~@4 ab1 ab2 a1 ~", AR: "bb1@5 ~ bb1@2 bb2@2 bb1 ~@5",
  AS: "~@2 bb1 ~ bb2 ~@3 db2@7 ~", AT: "~@2 bb1 ~ bb2 ~@3 ab1@2 ~ ab2 a1@2 ~@2",
  AU: "db2@2 ~@2 bb1 ~@3 db2@2 bb1@3 ~@3", AV: "bb1@5 ~ bb1@2 bb2 ~@7", AW: "~@2 bb1 ~ bb2@2 ~@2 ab1@2 ab2 ~ a1@2 ~@2",
  AX: "~@2 bb1@2 bb2 ~@3 db2@6 db2 ~", AY: "~@2 bb1 ~ bb2 ~@3 ab1@2 ab2@5 ~", AZ: "~@6 db2 ~@3 db2@2 bb1 ~@3",
  BA: "~@2 db2@2 bb1 ~@3 db2@2 bb1@4 ~@2", BB: "~@2 bb1@2 bb2 ~@3 ab1@2 ab2@2 a1@2 a2 ~",
  BC: "~@2 bb1@2 bb2 ~@3 db2 ~ bb1@4 ~@2", BD: "bb1@6 bb1@2 bb2 ~@7", BE: "~@6 bb1 ~ ab1 ~ a1@4 ~@2",
  BF: "~@2 db2@2 db3 ~@3 db2@2 c2@4 ~@2", BG: "~@2 bb1@2 bb2 ~@3 ab1@2 ab2@2 a1@2 ~@2", BH: "bb1@5 ~ bb1 ~ bb2 ~@7",
  BI: "~@2 bb1@2 bb2 ~ bb1 ~ db2 ~ bb1@4 ~@2", BJ: "bb1@3 ~ bb2@2 ~ bb1!2 ~ bb1@2 bb2@2 bb1 ~",
  BK: "~@2 bb1@2 bb2@2 bb1 ~@3 bb1@2 bb2 ~ bb1 ~", BL: "bb1@4 bb2@3 bb1!2 ~ bb1@2 bb2 ~ bb1@2",
  BM: "~@2 bb1 ~ bb2@2 bb1 ~ ab1@2 ab2 ~ a1@2 a2 ~", BN: "bb1@4 bb2@2 ~ bb1!2 ~ bb1@2 bb2@2 bb1 ~",
  BO: "~@2 bb1 ~ db2 ~@3 db2 ~ c2@2 bb1@2 ~@2", BP: "~@2 bb1 ~ bb2 bb1 ~@2 ab1@2 bb1 ~ a1@2 ~@2",
  BQ: "~@2 bb1@2 bb2@2 bb1 ~ ab1@2 ab2 ~ a1 ~ a2 ~", BR: "bb1@3 ~ bb2@2 ~ bb1@2 ~ bb1@2 bb2@2 bb1 ~",
  BS: "~@2 bb1 ~ bb2@2 bb1 ~ db2 ~ db2 ~ db2 c2@2 ~", BT: "~@2 bb1@2 bb2 ~@3 ab1@2 ab2 ~ a1@2 ~@2",
  BU: "bb1@4 bb2@2 ~ bb2 bb1 ~ bb1@2 bb2 ~ bb1 ~", BV: "~@2 bb1@2 bb2@2 bb1 ~ [ab1,bb1] ~ ab2@2 a1 ~ bb1 ~",
  BW: "db2@4 db3@2 db2 db3 db2 ~ db2@2 db3@2 db2 ~", BX: "~@2 db2 ~ db3@2 db2 ~@3 db2 ~ db3 ~ bb1 ~",
  BY: "~@4 db3@2 ~ db3 db2 ~ db2@2 db3 ~ db2 ~, db2@3 ~@5", BZ: "~@2 db2@2 db3 ~ db2 ~ db2@2 db3 ~ d2@2 db3 ~",
  CA: "~@4 eb3@2 ~ eb3 eb2 ~ eb2@2 eb3@2 eb2 ~, eb2@3 ~@5", CB: "~@2 eb2@2 eb3 ~ eb2 ~ eb2 ~ eb2 ~ eb3@2 eb2 ~",
  CC: "c2@2 ~ d2@2 ~ e2@3 f2@2 ~ gb2@2 ~@2", CD: "[~@12 e2@13 ~ d2@2 c2@15 ~ c2 ~@3]/3", CE: "c2@9 ~@3 bb1@4",
  CF: "~ bb1@4 ~ bb1@2", CG: "[~@2 b1@5 ~ bb1@10 ~@14]/2",
})).s("gm_slap_bass_1").gain(0.17)

// other · oboe
const oboe = note(`<
  A@2 B@2 C@2 D@2 E@2 F G@2 ~@6 H I ~@2 H J K@3 I ~@2 H L@2 M N@2 O P ~@7 Q R ~@2 Q S T@3 R ~@2 Q U ~ V W X@2 Y@3 Z@2
  AA@2 AB@2 AC@2 ~@53 AD AE@5 AF@2
>`.pickRestart({
  A: "[~@4 c6@5 ~ ab5@9 ~ g5@4 ~@3 db5@5]/2", B: "[eb5@29 ~@3]/2",
  C: "[~@4 c6@5 ~ [a5,bb5] ab5@8 ~ g5@5 ~ db5@4 ~@2, ~@20 gb5 ~@11]/2", D: "[d5 eb5@24 ~@7]/2",
  E: "[~@4 c5@5 ~ ab4@9 ~ g4@5 ~@2 db4@5]/2", F: "~ eb4@7 e4 eb4 [eb4,e4] e4 eb4 [eb4,e4] e4 eb4",
  G: "[[eb4,e4] e4 eb4 e4 eb4 [eb4,e4] e4 eb4 [eb4,e4] e4 eb4 [eb4,e4] e4 eb4 e4 eb4@7 ~@10]/2", // Emaj7
  H: "~@9 f5 c5 eb5 db5 ab4 f4 eb4", I: "db4 ~@7", J: "db4@2 eb4 f4@3 ~@6 bb4@4",
  K: "[db5@4 f5@4 f5@4 ab5@21 ~@8 f5 c5 eb5 db5 ab4 f4 eb4]/3", L: "[db4@2 eb4 f4 gb4@23 ~@5]/2",
  M: "gb5@2 ~@2 f5@3 ~ db5@2 eb5@5 ~", N: "[db5@2 ~@2 ab4@3 ~ db5@2 bb4@17 ~@5]/2", O: "~@4 c5@2 ~ ab4@2 ~ g4@5 ~",
  P: "f4 ~ c5@9 ~@5, ~@2 b4 ~@13", Q: "~@13 f5 c5 eb5", R: "db5 ab4 f4 eb4 db4@2 ~@10",
  S: "db5 ab4 f4 eb4 db4@2 eb4 f4@3 ~@6", T: "[bb4@4 db5@4 ab5@4 f5@14 eb5 bb4 f5@9 ~@8 f5 c5 eb5]/3",
  U: "db5 ab4 f4 eb4 db4@2 eb4 f4 gb4@7 ~", V: "~@8 f4 d4 bb3 g4 e4 c4 a4 gb4",
  W: "d4 bb4 g4 eb4 b4 ~ db4 eb4 e4 gb4 ab4 bb4 b4 db5 eb5 e5", X: "[gb5 ab5 bb5 b5 bb5@14 gb5 g5 a5@12]/2",
  Y: "[~@3 gb5 ~@14 b4@2 a4@6 g4 gb4 e4@18 ~@2, ~ g5 e5@8 ~@14]/3", Z: "[~@4 c6@6 ab5@9 ~ g5@6 db5@5 ~, ~@4 d6 ~@27]/2",
  AA: "[d5 eb5@28 ~@3]/2", AB: "[~@4 c5@5 ~ ab4@9 ~ g4@5 ~ db4@4 ~@2]/2", AC: "[eb4@7 ~, d4 ~@31]/2",
  AD: "f4 d4 bb3 g4 e4 c4 a4 gb4 d4 bb4 g4 eb4 b4 ~ db4 eb4",
  AE: "[e4 gb4 ab4 bb4 b4 db5 eb5 e5 gb5 ab5 bb5 b5 bb5@12 ~@2 gb5 g5 a5@12 ~ g5@2 gb5@2 e5@15 c6@6 ab5@9 ~ g5@4]/5",
  AF: "[~@2 db5@6 d5 eb5@13 ~@10]/2",
})).s("gm_oboe").gain(0.17)

// other · tenor sax
const tenor_sax = note(`<
  ~@19 A B ~@2 A C ~@2 A B ~@2 A D@2 E F@2 G H ~@7 I J ~@2 I K ~@2 I J ~@2 I L ~ M N O P Q@2 ~@62 R S T@3 ~@3
>`.pickRestart({
  A: "~@9 f5 c5 eb5 db5 ab4 f4 eb4", B: "db4 ~@7", C: "db4@2 eb4 f4@3 ~@10", D: "[db4@2 eb4 f4 gb4@21 ~@7]/2",
  E: "gb5@2 ~@2 f5@3 ~ db5@2 eb5@5 ~", F: "[db5@2 ~@2 ab4@3 ~ db5@2 bb4@17 ~@5]/2", G: "~@4 c5@2 ~ ab4@2 ~ g4@5 ~",
  H: "f4 ~ c5@9 ~@5, ~@2 b4 ~@13", I: "~@13 f5 c5 eb5", J: "db5 ab4 f4 eb4 db4@2 ~@10",
  K: "db5 ab4 f4 eb4 db4@2 eb4 f4@3 ~@6", L: "db5 ab4 f4 eb4 db4@2 eb4 f4 gb4@7 ~", M: "~@8 f4 d4 bb3 g4 e4 c4 a4 gb4",
  N: "d4 bb4 g4 eb4 b4 ~ db4 eb4 e4 gb4 ab4 bb4 b4 db5 eb5 e5", O: "gb5 ab5 bb5 b5 bb5@12", P: "~@2 gb5 g5 a5@12",
  Q: "[~@3 gb5 e5@16 ~@12, ~ g5 ~@14]/2", R: "f4 d4 bb3 g4 e4 c4 a4 gb4 d4 bb4 g4 eb4 b4 ~ db4 eb4",
  S: "e4 gb4 ab4 bb4 b4 db5 eb5 e5 gb5 ab5 bb5 b5 bb5@3 ~", T: "[~@10 gb5 g5 a5@12 ~ g5@2 gb5@2 e5@15 ~@4]/3",
})).s("gm_tenor_sax").gain(0.14).pan(0.6)

// other · marimba
const marimba = note("<~@76 A B C D E F G H I J K L M ~ N O P Q ~ R S T U V W X Y Z AA AB AC ~@30>".pickRestart({
  A: "~@6 f3 ~ bb3 ~@3 ab3 ~@3", B: "g3 ~ ab3 ~ bb3 ~ c4 ~ db4 ~ eb4 ~ f4 ~ g4 ~",
  C: "ab4@3 ~ bb4 ~ [g4,ab4] ~@3 g4 ~ f4 ~ eb4 ~", D: "f4 ~@4 f4@3 ~@8", E: "~@2 c4 ~ f4 ~ bb4 ~ c5@2 f5@2 bb4 ~ c5@2",
  F: "~@8 eb5 bb4 ~@2 db5 c5 ~@2", G: "bb4 ~@2 ab4 g4 ~@2 eb4 ~@8", H: "~@10 g3 ~ bb3 ~@3",
  I: "ab3 ~ bb3 ~ b3 ~ db4 ~ eb4@2 c4 db4 eb4 e4 f4 gb4", J: "g4 ~ bb4 ~@2 ab4 ~ a4 bb4 b4 ~ db5 d5 ~ eb5 ~",
  K: "~@8 db5 ~ eb5 ~ c5 db5 ~@2", L: "c5@2 ~@2 bb4 ~ c5 ~@5 bb4 ~ ab4@2", M: "~ g4@2 ~ f4 ~ g4 ~@9",
  N: "~@2 c5 ~ eb5@2 ~@2 d5@2 b4 ~@3 db5@2", O: "~@4 g4 ~ c5 ~ bb4@2 ~@2 ab4 ~@3",
  P: "bb4 ~ g4 ~ ab4 ~ g4@2 f4 ~@3 f4@2 c4 ~", Q: "eb4 ~ bb3@2 ~@4 ab3@2 g3@2 f3@4",
  R: "~@2 c4 ~ eb4 ~ c4 ~ db4 eb4 ~ e4 gb4 ~ g4 a4", S: "bb4 ~ c5 eb5 c5 ~ db5 eb5 e5 ~ gb5 g5 a5 bb5 ~ c6",
  T: "bb5 ~@7", U: "~@6 f5 ~ bb5@2 ~@2 ab5 ~@3", V: "g5 ~@3 f5 ~ g5 ab5 gb5 g5 f5 ~ eb5@2 ~@2",
  W: "f5@2 ~@4 eb5@2 bb4 ~@3 eb5@2 ~@2", X: "db5@2 ~@2 c5@2 f4 ~ bb4 ~ ab4 ~ g4@2 f4 ~", Y: "eb4@2 ~ eb4@2 ~ eb4@2",
  Z: "~@4 eb4@2 ~@2 db4@2 ~@2 f4 ~ ab4 ~", AA: "~@4 g4 ~ bb4 ~@5 bb4 ~@3",
  AB: "ab4 ~ bb4 ~ b4 ~ c5 ~ db5 ~ d5 ~ eb5 ~ f5 ~", AC: "g5@3 ~@13",
})).s("gm_marimba").gain(0.27)

// other · marimba · soft notes
const marimba_soft = note("<~@79 A ~ B C ~@2 D ~ E F ~@2 G ~ H ~@6 I ~@3 J ~@32>".pickRestart({
  A: "~@2 g4 ~ eb4 ~@11", B: "~@10 f4 ~@4 f4", C: "~@5 f4 ~@2 c4 ~@7", D: "~@4 g4 ~@5 c5 ~@5", E: "~@8 f4 ~@7",
  F: "~@9 eb4@2 c4 ~@4", G: "bb4 ~@15", H: "~@4 g3 ~@11", I: "~@2 c5 ~@13", J: "eb4 ~ e4 ~@5 f4 ~ g4 ~@3 g4 ~",
})).s("gm_marimba").gain(0.18)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A@22 B C@4 D E C@20 F A@2 ~ G@5 ~@4 H@2 I J I J@2 K I L J@3 K I J@2 K I ~ I L I ~ I M J K I G J K I G A@23 ~ N@4
  O P ~
>`.pickRestart({
  A: "x!2", B: "x!2 ~ x", C: "~ x ~ x", D: "~@4 x ~@2 x ~@2 x ~@5", E: "x!2 ~@6", F: "~ x!2 ~", G: "~ x ~@2",
// … 130 more lines

More by Spyro Gyra