Strudelify
KeyD♭ majorTempo116 bpm
0:00/0:00
// Fire — The Pointer Sisters
// 116 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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 · percussive organ
const percussive_organ = note(`<
  ~@23 A@4 B@4 C@2 D@2 E@2 F@2 G H I@4 J K L M N O P Q@3 ~ R S T S U V W S X V Y@5 Z AA@8 AB@7 S@5 AC ~@6 AD@7 R AE@4
>`.pickRestart({
  A: "[[db5,f5]@2 [bb4,eb5] [db5,f5]@3 [bb4,eb5] [db5,f5]@3 [bb4,eb5] [db5,f5]@3 [bb4,eb5] [db5,f5]]/4", // Db Eb5 Db Eb5 Db Eb5 Db Eb5 …
  B: "[[db5,f5] ~@7 [bb4,eb5]@4 [db5,f5]@12 [bb4,eb5]@4 gb5@4 f5@8 [bb4,eb5]@4 [db5,f5]@12 [bb4,eb5]@4 [db5,f5]@4, ~@7 db5@3 ~@6]/4", // Db Eb5 Db Eb5 Db Eb5 Db
  C: "[[eb5,gb5]@2 [db5,f5] [eb5,gb5]@3 [db5,f5] [eb5,gb5]]/2", // Ebm Db Ebm Db Ebm
  D: "[[db5,f5]@2 [bb4,eb5] [db5,f5]@3 [bb4,eb5] [db5,f5]]/2", // Db Eb5 Db Eb5 Db
  E: "[[eb5,gb5]@2 [db5,f5] [eb5,gb5]@3 [db5,f5] [eb5,gb5], f5 ~@27 f5 ~@3]/2", // Ebm Db Ebm Db Ebm
  F: "[~@16 e5 ~@7 bb5@8, [bb4,db5], ~ f5]/2", G: "[gb4,bb4,db5]", H: "[ab4,c5,eb5]@3 ~, [bb4,db5] ~@15",
  I: "[[db5,f5]@8 [bb4,eb5]@4 [db5,f5]@12 [bb4,eb5]@4 [db5,f5]@12 [bb4,eb5]@4 [db5,f5]@12 [bb4,eb5]@4 [db5,f5]@3 ~]/4", // Db Eb5 Db Eb5 Db Eb5 Db Eb5 …
  J: "a5 bb5@15, [gb5,db6]", K: "[f5,ab5,db6]@15 ~", L: "[eb5,gb5,c6]",
  M: "[f5,ab5,db6]@9 ~ [f5,b5,db6] ~ [f5,ab5,b5,db6] ~ [f5,ab5,b5] ~, g5 ~@9 ab5@2 ~@2 db6@2", // Db Db7 Fdim
  N: "[gb5,bb5,db6], a5 ~@15", O: "[f5,ab5,db6]", P: "[db5,g5,bb5]",
  Q: "[[c5,ab5]@8 [bb4,gb5]@10 [ab4,f5]@4 [g4,e5]@3 [gb4,eb5]@22 ~, g5 ~@47]/3", R: "~ [db5,f5]",
  S: "[bb4,eb5] [db5,f5]@3", T: "[bb4,eb5] gb5 f5@2, ~ db5@3", U: "[bb4,eb5] [db5,f5] [eb5,gb5]@2",
  V: "[db5,f5] [eb5,gb5]@3", W: "[db5,f5] [eb5,gb5] [db5,f5]@2", X: "[bb4,eb5] [db5,f5] [eb5,gb5]@2, ~@8 f5 ~@7",
  Y: "[[db5,f5]@4 [eb5,gb5]@4 ~@16 e5 ~@7 bb5@8 [gb4,bb4,db5]@16 [ab4,c5,eb5]@12 ~@12, ~@4 f5 ~@3 [bb4,db5]@32 ~@16 bb4 ~@23, ~@3 f5@2 ~@5]/5", // Db Ebm Gb Ab Bbm
  Z: "~@5 f5 ab5 bb5, ~@10 e5 ~@5",
  AA: "[[eb5,e5] ~ db5 ~ db5@2 bb4@2 db5@25 db5 f5@2 e5 [db5,eb5,e5] bb4@2 db5@25 ~ [db5,f5,ab5]!6 [eb5,gb5]@18 e5!2 ~@8 [eb5,e5] db5 bb4@2 db5@24, ~@33 eb5@2 ~@55 f5@9 ~@29, ~@34 e5 ~@37 bb5@28 ~@28]/8", // Emaj7 Dbm Db Ebm Emaj7
  AB: "[~@2 [db5,f5,ab5]!3 ~ [db5,f5,ab5] ~ [eb5,gb5]@18 e5 f5@5 e5 f5@3 f5@3 ~ eb5@2 db5 ~ db5@12 bb4@2 db5 ~ db5@4 eb5@2 db5@2 bb4@2 db5@2 [gb4,bb4,db5]@16 [ab4,c5,eb5]@13 ~@3 [db5,f5]@8, ~@8 bb5@59 ~@45, ~@33 e5 ~@2 e5 ~@3 e5 ~@23 d5 ~@7 a4 ~@15 bb4 ~@23]/7", // Db Ebm Gb Ab Db
  AC: "[bb4,eb5] [db5,f5] ~@2", // Eb5 Db
  AD: "[~@4 [db4,eb4] [f4,gb4,ab4] [gb4,ab4,bb4,c5,db5] [eb5,f5,gb5,ab5] [ab5,bb5,c6,db6,eb6] f6@27 [eb6,e6] db6 bb5@2 db6@26 f6@2 [eb6,e6] [db6,e6] bb5@2 db6@29 ~@11]/7", // Dbsus2 Fm Gb Fm7 Ab Emaj7 Dbm
  AE: "[[bb4,eb5]@4 f5@10 ~@2 [gb5,bb5]@15 ~ [f5,ab5]@17 ~@15, ~@4 db5@45 ~@15, ~@32 e5 ~@31]/4", // Eb5 Gb Fm
})).s("gm_percussive_organ").gain(0.36)

// bass · acoustic bass
const bass = note(`<
  ~ A B A B A B A ~ A C D E F G A B F H I J K L M B N O A B A B F G P B F Q R S T L A U A V W X Y X W X Z AA@3 ~ AB AC
  AD AE AF AG AH AE AF AG AI AJ AK AL AM AN AD AE AO AE AP AG AQ AE AR AG AS AT AU AV AW AN AX AN AY AE AZ AB AE BA AE
  BB AZ BC AN AD AE AD AE AZ AB BD BE BF ~
>`.pickRestart({
  A: "db3@2 ~@4 db3@2 bb2 ~ bb2@2 db3@2 ~@2", B: "~@2 db3@2 ~@2 db3@2 bb2 ~ bb2@2 db3@2 ~@2",
  C: "~@2 db3 ~@3 db3@2 bb2@2 bb2@2 db3@2 ~@2", D: "db3 ~@5 db3@2 bb2 ~ bb2@2 db3@2 ~@2",
  E: "~@2 db3 ~@3 db3@2 bb2 ~ bb2@2 db3@2 ~@2", F: "eb3@2 ~@4 eb3@2 bb2 ~ bb2@2 eb3@2 ~@2",
  G: "~@2 eb3@2 ~@2 eb3@2 bb2 ~ bb2@2 eb3@2 ~@2", H: "~@2 eb3@2 ~@2 eb3 ~ bb2 ~ bb2@2 eb3@4",
  I: "bb2@3 ~@3 bb2@2 f2 ~ f2@2 bb2@2 ~@2", J: "~@2 bb2@2 ~@2 bb2@2 f2 ~ f2@2 bb2@4", K: "gb2@5 ~ gb2 ~ gb2@7 ~",
  L: "ab2@5 ~ ab2 ~ ab2@4 ~@4", M: "db3@3 ~@3 db3@2 bb2 ~ bb2@2 db3@2 ~@2", N: "db3 ~@2 db3 bb2!2 db3 ~",
  O: "~@2 db3@2 ~@2 db3@2 bb2 ~ bb2@2 db3 ~@3", P: "db3@2 ~@4 db3@2 bb2@2 bb2 ~ db3@2 ~@2",
  Q: "~@2 eb3@2 ~@2 eb3@2 bb2 ~ bb2@2 eb3@4", R: "bb2@2 ~@4 bb2@2 f2 ~ f2@2 bb2@2 ~@2",
  S: "~@2 bb2@2 ~@2 bb2@2 f2 ~ f2@2 bb2@2 f2@2", T: "gb2@4 ~@2 gb2 ~ gb2@6 ~@2", U: "~ db3 ~ db3 bb2!2 db3 ~",
  V: "~@2 db3@2 ~@2 db3 ~ bb2 ~ bb2@2 db3@4", W: "gb2 ~ gb2 ~ gb2 ~ gb2 ~ gb2 ~ gb2 ~ gb2 ~ gb2 ~",
  X: "db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~", Y: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~",
  Z: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3@2", AA: "[ab2@17 ~@7]/3", AB: "~@4 db3 ~@2 db3",
  AC: "bb2!2 db3 ~@2 db3 ~ db3", AD: "bb2 ~ bb2@2 db3@2 ~@2 db3@2 ~@4 db3@2",
  AE: "bb2 ~ bb2@2 db3@2 ~@4 db3@2 ~@2 db3@2", AF: "bb2 ~ bb2@2 db3@2 ~@2 eb3@2 ~@4 eb3@2",
  AG: "bb2 ~ bb2@2 eb3@2 ~@4 eb3@2 ~@2 eb3@2", AH: "bb2 ~ bb2@2 eb3@2 ~@2 db3@2 ~@4 db3@2",
  AI: "bb2 ~ bb2@2 eb3@2 bb2@5 ~@3 bb2@2", AJ: "f2 ~ f2@2 bb2@2 ~@4 bb2@2 ~@2 bb2 ~",
  AK: "f2 ~ f2@2 bb2@2 f2 ~ gb2@5 ~ gb2 ~", AL: "gb2@5 ~ gb2 ~ ab2@5 ~ ab2 ~", AM: "ab2@4 ~@4 db3@3 ~@3 db3@2",
  AN: "bb2 ~ bb2 ~ db3@2 ~@4 db3@2 ~@2 db3@2", AO: "bb2 ~ bb2 ~ db3@2 ~@2 db3@2 ~@4 db3@2",
  AP: "bb2 ~ bb2 ~ db3@2 ~@2 eb3@2 ~@4 eb3@2", AQ: "bb2 ~ bb2@2 eb3@2 bb2 ~ db3@2 ~@4 db3@2",
  AR: "bb2 ~ bb2 ~ db3 ~ db3 ~ eb3@4 ~@2 eb3@2", AS: "bb2 ~ bb2@2 eb3@4 bb2@4 ~@2 bb2@2",
  AT: "f2 ~ f2@2 bb2@2 ~@4 bb2@2 ~@2 bb2@2", AU: "f2 ~ f2@2 bb2@2 f2@2 gb2@5 ~ gb2 ~",
  AV: "gb2@5 ~ gb2 ~ ab2@4 ~@2 ab2 ~", AW: "ab2@5 ~@3 db3@3 ~@3 db3@2", AX: "bb2 ~ bb2@2 db3@2 ~@2 db3@4 ~@2 db3@2",
  AY: "bb2 ~ bb2@2 db3 ~@3 db3@4 ~@2 db3@2", AZ: "bb2 ~ bb2@2 db3@2 ~@10", BA: "bb2 ~ bb2@2 db3@2 ~@2 db3 ~@5 db3@2",
  BB: "[bb2,db3] ~ bb2@2 db3@2 ~@2 db3@2 ~@4 db3@2", BC: "~@8 db3@3 ~@3 db3@2",
  BD: "bb2 ~ bb2@2 db3 ~@5 ab2@2 bb2@2 db3@2", BE: "bb3@2 ab3@2 f3@2 ~ eb3@3 db3@2 ab2@3 ~", BF: "db3",
})).s("gm_acoustic_bass").gain(0.46)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~ A B A C D E@2 ~ F B F G@2 H F I@5 J K L M N O F B P G@2 H F Q R S@3 J K N M N M T U@5 V@5 W X Y X Z@2 AA X AB@2 AC
  AD AE@2 AF AG AH AI AJ AI AK AL AM AN AK AL AC AO AP@3 AQ@2 AN AJ AI AR W AS AT X AU AV AW AX AJ AN AJ AI AY W AZ BA
  BB ~
>`.pickRestart({
  A: "[db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4] ~@3", // Db5
  B: "~@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2", // Db5
  C: "~@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ab2 db3", // Db5
  D: "[ab3,db4] ~@5 [db3,ab3,db4] ~ bb2 ~ bb2@2 [db3,ab3,db4] ~@3, f4 ~, db3 ~@7", // Db5
  E: "[~@2 [db3,ab3,db4] ~@3 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4] ~@3 [db3,ab3,db4] ~@5 db3@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2, ~@15 ab2@2 ~@5 ab3@6 ~@4, ~@16 f4@11 ~@5, ~@22 db4 ~@9]/2", // Db5
  F: "[db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2", // Db5
  G: "[~@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~ bb3 [eb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@2, ~@15 db4@17, ~ [gb4,bb4], ~@16 bb3 ~@15]/2", // Db5 Eb Eb5 Gb
  H: "~@2 [eb3,bb3,eb4]@2 ~@2 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@2", // Eb5
  I: "[~@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~ bb3 [eb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 ~@2 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4] ~@3 [f3,bb3,db4,f4,bb4]@8 [a3,bb3,db4]@2 ab3@2 a3!2 ~@4 ab3 ~@3 ab3@2 [a3,bb3,db4]@2 ab3@2 [bb3,db4]@4, ~@15 db4@24 ~@21 [bb3,db4]@6 ~@14, ~@2 [gb4,bb4]@3 ~@5, ~@16 bb3 ~@30 bb2@8 ~@25]/5", // Db5 Eb Eb5 Bbm A Bbm Gb
  J: "[gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~, [bb3,db4,gb4]@15 ~", // Gb5 Gb
  K: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3,c4,eb4,ab4]@2 ~@2, [c4,eb4,ab4]@11 ~@5", // Ab5 Ab
  L: "[db3,ab3,db4] ~ [ab3,db4,f4] [ab3,db4] bb2!2 [db3,ab3,db4] ~, ~@6 db3 ~@9", // Db5 Db Db5
  M: "[ab3,db4,f4] ~ [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2", // Db Db5
  N: "[db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2", // Db5 Db Db5
  O: "[ab3,db4,f4] ~ [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 bb2@2 bb2@2 [db3,ab3,db4]@2 ~@2", // Db Db5
  P: "[db3,ab3,db4] ~@2 [db3,ab3,db4] bb2!2 [db3,ab3,db4] ~", // Db5
  Q: "~@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~ bb3", // Db5
  R: "[eb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@2, [db4,gb4,bb4], bb3 ~@15", // Eb Eb5 Gb
  S: "[~@2 [eb3,bb3,eb4]@2 ~@2 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4] ~@3 [db4,f4,bb4]@8 [a3,bb3,db4]@2 ab3@2 a3!2 ~@4 ab3 ~@7 [bb3,db4]@2 ab3 ~@3, ~@15 [bb2,f3,bb3]@8 ~@5 [bb3,db4]@6 ~@14]/3", // Eb5 Bbm A Bbm Bb5 Bbm
  T: "[gb2,db3,gb3,bb3,db4,gb4]@15 ~", // Gb
  U: "[[db3,ab3,db4,f4]@13 ~@3 [ab3,c4,eb4,ab4]@12 ~@4 [ab3,db4,f4]@7 ~ [ab3,b3,f4]@5 ~@3 [bb3,db4,gb4]@14 ~@2 [ab3,db4,f4]@11 ~@5, ~@15 [ab2,eb3]@13 ~@3 db3@14 ~@2 [gb2,db3,gb3]@14 ~@2 db3@12 ~@5]/5", // Db Ab Db Fdim Gb Db Ab5 Gb5
  V: "[eb3@4 [g3,db4,eb4] ~@5 [g3,db4,eb4]@2 ~@4 [gb3,c4,gb4]@59 ~@5, ~@15 eb3@59 ~@6]/5", // Eb7 Gbdim
  W: "~@4 [db3,ab3,db4] ~@2 [db3,ab3,db4]", X: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2",
  Y: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@2", // Db5
  Z: "[bb2 ~ bb2@2 [db3,ab3,db4]@2 ~ bb3 [eb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 ~@2 [eb3,bb3,eb4]@2, ~@4 [db4,gb4,bb4]@11 ~, ~@8 bb3 ~@23]/2", // Db5 Eb Eb5 Gb
  AA: "bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@2 [db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@2", // Eb5 Db5
  AB: "[bb2 ~ bb2@2 [db3,ab3,db4]@2 ~ bb3 [eb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 ~@2 [eb3,bb3,eb4]@2, ~@7 db4@20 ~@5, ~@2 [gb4,bb4]@5 ~, ~@8 bb3 ~@23]/2", // Db5 Eb Eb5 Gb
  AC: "bb2 ~ bb2@2 [eb3,bb3,eb4] ~@3 [db4,f4,bb4]@8, ~@7 [bb2,f3,bb3]@8 ~", // Eb5 Bbm Bb5
  AD: "[a3,bb3,db4]@2 ab3@2 a3!2 ~@4 ab3 ~@3 ab3@2, ~@2 [bb3,db4]@3 ~@3", // A Bbm
  AE: "[~@2 ab3@2 [bb3,db4]@3 ~ [gb2,db3,gb3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3,c4,eb4,ab4] ~, [a3,db4]@2 ~@6 [bb3,db4,gb4]@15 ~ [c4,eb4,ab4]@5 ~@3, ~ [ab3,bb3]@2 ~@29]/2", // Bbm Gb5 Ab5 Ab A Gb Ab Absus2
  AF: "[ab2,eb3,ab3,c4,eb4,ab4] ~ [ab2,eb3,ab3,c4,eb4,ab4] ~ [ab2,eb3,ab3,c4,eb4,ab4]@2 ~@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [ab3,db4]@2, ~@14 db3 ~", // Ab Db5 Db Db5
  AG: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [db3,ab3,db4] ~@3 [db3,ab3,db4]@2", // Db5 Db Db5
  AH: "bb2!2 [db3,ab3,db4] ~ [db3,ab3,db4] ~ [ab3,db4,f4] [db3,ab3,db4]", // Db5 Db Db5
  AI: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4] ~ [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2", // Db5 Db Db5
  AJ: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [db3,ab3,db4]@2", // Db5 Db Db5
  AK: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2", // Db5 Eb5
  AL: "bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 ~@2 [eb3,bb3,eb4]@2", // Eb5
  AM: "bb2 ~ bb2@2 [eb3,bb3,eb4]@2 ~@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [db3,ab3,db4]@2", // Eb5 Db5 Db Db5
  AN: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2", // Db5 Db Db5
  AO: "[a3,bb3,db4]@2 ab3@2 [bb3,db4]@6 ab3 ~@5", // A Bbm
  AP: "[~@3 a3 ab3@2 ~@2 [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3]@2 ~@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [db3,db4]@2, ~@2 [a3,bb3,db4]@2 ~@4 [bb3,db4,gb4]@15 ~ [c4,eb4,ab4]@14 ~@8 ab3 ~]/3", // Gb5 Ab5 Db5 Db A Gb Ab
  AQ: "[bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4] ~ [db3,ab3,db4]@2 ~@2 db3@2 bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@2 [db3,ab3,db4]@2 ~@2 [ab3,db4,f4]@2 [db3,ab3,db4]@2, ~@7 [ab3,db4]@2 ~@7]/2", // Db5 Db Db5 Db Db5
  AR: "bb2!2 [db3,ab3,db4] ~@5", AS: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@2 ~@2 [ab3,db4]@2, ~@14 db3 ~",
  AT: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ab2 [db3,ab3] db4@6 [db3,ab3,db4] ~, ~ f4, ~@4 db3 ~@3, ~@8 ab3 ~@7", // Db5
  AU: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ab2 db3 [ab3,db4] ~@5 [db3,ab3,db4] ~, ~ f4, ~@4 db3 ~@3", // Db5
  AV: "bb2 ~ bb2@2 [db3,ab3,db4] ~@11", AW: "~@4 [db3,ab3,db4] ~ [ab3,db4,f4] [db3,ab3,db4]",
  AX: "bb2 ~ bb2@2 [db3,ab3,db4] ~@3 [ab3,db4,f4] ~ [db3,ab3,db4] ~@3 [db3,ab3,db4]@2", // Db5 Db Db5
  AY: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@10", AZ: "bb2 ~ bb2@2 [db3,ab3,db4]@2 ~@4 ab2@2 bb2@2 db3@2",
  BA: "bb3 ~ ab3@2 f3@2 ~ eb3@3 db3@2 ab2@3 ~, [gb3,gb4], db4@7 ~", BB: "db3 [ab3,db4,f4]@15",
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.6)

// chords · piano
const piano = note(`<
  ~@27 A B C D E F A G@2 H@2 I J K L M N O P Q R S T U V W@4 X Y Z AA AB AC AD Y AE AF AG@2 AH AI AJ AK AL AM AN AM AO
  AP AQ AK AR AS AT@2 AU AV AW AX AY@3 AX AZ ~@2 BA ~@2 BB BC BD BE BF BE BG BH BI AZ BJ@2 ~
>`.pickRestart({
  A: "[db4,ab4,db5,f5]@2 ~@4 [ab4,db5,f5] ~ [gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@2, ~@3 db4 bb3@2 ~@2", // Db Ebm Db
  B: "~@2 [db4,ab4,db5,f5]@2 ~@2 [ab4,db5,f5] ~ [bb3,gb4,bb4,eb5]@2 db4@2 [bb4,db5,gb5]@4, ~@3 db4 ~@4", // Db Ebm Gb
  C: "[db4,ab4,db5,f5]@2 ~@4 [db4,ab4]@2 [gb4,bb4] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@2, ~@6 [db5,f5] ~ bb3@4 ~@4, ~@4 eb5 ~@3", // Db Db5 Gb Ebm Db
  D: "~@2 [db4,ab4,db5,f5]@2 ~@2 [ab4,db5,f5] ~ [gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@2, ~@3 db4 bb3@2 ~@2", // Db Ebm Db
  E: "[eb4,bb4,db5,gb5]@2 ~@4 [eb4,gb5]@2 [ab4,db5,f5] ~ [ab4,db5] ~ [eb4,bb4,db5,gb5]@2 ~@2, ~@6 [bb4,db5] ~ bb3@4 ~@4, ~@5 f5 ~@2", // Ebm7 Ebm Db Db5 Ebm7 Bbm
  F: "~@2 [eb4,bb4,db5,gb5]@2 ~@2 [eb4,gb5]@2 [ab4,db5] ~ [ab4,db5] ~ [eb4,bb4]@2 ~@2, ~@6 [bb4,db5] ~ bb3@4 ~@4, ~@8 f5@2 f5@2 [db5,gb5] ~@3", // Ebm7 Ebm Db5 Eb5 Bbm Gb5
  G: "[~@2 [db4,ab4,db5,f5]@2 ~@2 [ab4,db5,f5] ~ [gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@2 [bb4,db5,gb5]@6 [eb4,gb5]@2 [db5,f5] ~ [db5,f5]@2 [eb4,bb4,db5,gb5]@2 ~@2, ~@6 db4@2 bb3@4 ~@3 eb4@7 [bb4,db5] ~ bb3@4 ~@4, ~@24 ab4@2 ab4 ~@5]/2", // Db Ebm Db Gb Ebm Db Ebm7 Bbm
  H: "[~@2 [eb4,bb4,db5,gb5]@2 ~@2 [eb4,gb5]@2 [ab4,db5,f5] ~ [ab4,db5,f5] ~ [eb4,bb4,gb5]@2 ~@2 [f4,bb4,db5]@12 ~@4, ~@6 [bb4,db5] ~ bb3@4 [db5,f5] ~@2 bb3@12 ~@5]/2", // Ebm7 Ebm Db Ebm Bbm Db
  I: "~@2 [f4,bb4,c5,db5] ~@3 bb3@2 [f4,bb4,c5,db5] ~ [f4,bb4,db5]@2 ~@4, ~@10 c5 ~@5", // Bbm
  J: "[db5,gb5,bb5]@2 [db5,gb5] ~ [db5,gb5,bb5] ~ [db5,gb5,bb5] ~ [db5,gb5,ab5,bb5] ~ [gb5,ab5,bb5] ~ [db5,gb5,ab5,bb5] ~ [db5,gb5,ab5,bb5] ~, ab5 ~@9 db5@2 ~@4", // Gb Gb5 Gb
  K: "[c5,e5,f5] ~ [c5,f5] ~ [f5,ab5] ~ [c5,f5,ab5] ~ [f5,ab5]@2 ~@2 [eb5,gb5]@2 ~@2, ab5@2 ab5@2 c5@2 ~@2 c5 ~ bb4@4 ~@2, ~@12 f5 ~@3", // Fmaj7 F5 Fm Ebm
  L: "[ab3,db4,f4]@2 ~@4 [db4,f4]@2 [bb3,db4,f4] ~ [bb3,db4,f4]@2 [ab3,f4]@2 ~@2, ~@6 ab3 ~@5 db4 ~@3", // Db Bbm Db
  M: "~@2 [ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [ab3,db4,f4]@2 ~@2", // Db Bbm Db
  N: "[ab3,db4,f4]@2 ~@4 [ab3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [ab3,db4,f4]@2 ~@2", // Db Bbm Db
  O: "~@2 [ab3,db4,f4]@2 ~@2 [ab3,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [ab3,f4] ~@3, ~@3 db4 ~@2 db4 ~", // Db Bbm Db
  P: "[gb2,gb3] ~ [gb2,gb3] ~ [gb2,gb3] ~ [gb2,gb3,db4,db5] ~ [gb2,gb3,db4,db5] ~ [gb2,gb3,db4,db5] ~ [gb2,gb3,db4,db5] ~ [gb2,gb3,db4,db5] ~", // Gb Gb5
  Q: "[db2,db3] ~ [db2,db3,db5,db6] ~ [db2,db3,db5,db6] ~ [db2,db3,bb4,bb5] ~ [db2,db3,eb4,e4,f4,eb5,e5,f5] ~ [db2,db3,db4,db5] ~ [db2,db3,bb3,bb4] ~ [db2,db3,ab3,ab4] ~", // Db Gb Db Gb Db5
  R: "[ab2,ab3] ~ [ab2,ab3] [bb3,b3] [ab2,ab3,ab4] ~ [ab2,ab3,c4,ab4] ~ [ab2,ab3,c4,ab4] ~ [ab2,ab3,c4,ab4] ~ [ab2,ab3,c4,ab4] ~ [ab2,ab3,c4,ab4] ~, ~@2 c4 ~@5", // Ab Bmaj7 Ab
  S: "[db2,db3] ~ [db2,db3,f4,db5] ~ [db2,db3,db5] ~ [db2,db3,g4,db5] ~ [db2,db3,g4,ab4,db5] ~ [db2,db3,g4,ab4,db5] ~ [db2,db3,gb4,g4] [f4,g4] [db2,db3,gb4,db5] ~, ~@2 gb4 ~@3 db5 ~", // Db Dbdim Db Gb Fsus2 Gb5
  T: "[gb2,gb3] ~ [gb2,gb3] ~ [e4,gb4,bb4,db5]@2 [gb2,gb3] ~ [gb2,gb3] ~ [gb2,gb3,e4,gb4,bb4,db5] ~ [gb2,gb3] ~ [gb2,gb3,db4,eb4] e4, ~@4 [gb2,gb3] ~@11", // Gb Gb7 Gb Gb7 Gb Ebm7 Gb
  U: "[db2,db3,f4] ~ [db2,db3] ~ [db2,db3,db5] ~ [db2,db3,a4] ~ [db2,db3] ~ [db2,db3] ~ [ab4,db5]@2 [db2,db3] ~, db5@2 f4@2 ~@2 db5@3 ~@7, ~@7 bb4@3 f4@2 [db2,db3] ~@3", // Db Gbm Db Db5 Db
  V: "[db4,g4,bb4,eb5]@2 [eb2,eb3] ~ [eb2,eb3] ~ [db4,g4,bb4,eb5]@2 [eb2,eb3] ~ [eb2,eb3] ~ [db4,g4,bb4,eb5]@2 ~@2, [eb2,eb3] ~@5 [eb2,eb3] ~@5 [eb2,eb3] ~@3", // Eb7 Eb Eb7 Eb Eb7 Eb
  W: "[[ab2,gb3,ab3,c4,eb4,ab4]@49 ~@15, gb4 ~@63]/4", X: "~@8 [db4,ab4,db5,f5]@2 ~@4 [ab4,db5,f5] ~, ~@7 db4",
  Y: "[gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@4 [db4,ab4,db5,f5]@2 ~@2 [ab4,db5,f5] ~, bb3@2 ~@5 db4", // Ebm Db
  Z: "[bb3,gb4,bb4,eb5] db4 [bb4,db5,gb5]@2 [db4,ab4,db5,f5] ~@2 [db4,ab4], ~@14 [db5,f5] ~", // Ebm Gb Db Db5 Db
  AA: "[gb4,bb4] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@4 [db4,ab4,db5,f5]@2 ~@2 [ab4,db5,f5] ~, bb3@2 ~@5 db4, eb5 ~@7", // Gb Ebm Db
  AB: "[gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@2 [eb4,bb4,db5,gb5]@2 ~@4 [eb4,gb5]@2, bb3@4 ~@10 [bb4,db5] ~", // Ebm Db Ebm7 Ebm Bbm
  AC: "[db5,f5] ~ [ab4,db5] ~ [eb4,bb4,db5,gb5]@2 ~@4 [eb4,bb4,db5,gb5]@2 ~@2 [bb4,db5,gb5] ~, bb3@2 ~@5 eb4, ab4 f5 ~@6", // Db Db5 Ebm7 Gb
  AD: "[ab4,db5] ~ [ab4,db5] ~ [db5,f5,gb5] ~@3 [db4,ab4,db5,f5]@2 ~@4 [ab4,db5,f5] ~, bb3@2 [eb4,bb4] ~@4 db4, f5!2 ~@6", // Db5 Gbmaj7 Db Eb5
  AE: "[gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [db4,ab4,db5,f5]@2 ~@2 [bb4,db5,gb5]@6 [eb4,gb5]@2, bb3@4 ~@3 eb4@7 [bb4,db5] ~", // Ebm Db Gb Ebm Bbm
  AF: "[db5,f5] ~ [db5,f5]@2 [eb4,bb4,db5,gb5]@2 ~@4 [eb4,bb4,db5,gb5]@2 ~@2 [eb4,gb5]@2, bb3 ~@3, ab4@2 ab4 ~@11 [bb4,db5] ~", // Db Ebm7 Ebm Bbm
  AG: "[[ab4,db5,f5] ~ [ab4,db5,f5] ~ [eb4,bb4,gb5]@2 ~@2 [f4,bb4,db5]@12 ~@6 [f4,bb4,c5,db5] ~@3 bb3@2, bb3@4 [db5,f5] ~@2 bb3@12 ~@13]/2", // Db Ebm Bbm Db
  AH: "[f4,bb4,c5,db5] ~ [f4,bb4,db5]@2 ~@4 [db5,gb5,bb5]@2 [db5,gb5] ~ [db5,gb5,bb5] ~ [db5,gb5,bb5] ~, ~@2 c5 ~@5 ab5 ~@7", // Bbm Gb Gb5 Gb
  AI: "[db5,gb5,ab5,bb5] ~ [gb5,ab5,bb5] ~ [db5,gb5,ab5,bb5] ~ [db5,gb5,ab5,bb5] ~ [c5,e5,f5] ~ [c5,f5] ~ [f5,ab5] ~ [c5,f5,ab5] ~, ~ db5 ~@2 ab5!2 c5 ~", // Gb Fmaj7 F5 Fm
  AJ: "[f5,ab5]@2 ~@2 [eb5,gb5]@2 ~@2 [db3,ab3,db4,f4]@2 ~@4 [ab3,db4,f4] ~, c5 ~ bb4@4 ~@8 db3@2, ~@4 f5 ~@11", // Fm Ebm Db
  AK: "[gb3,bb3,eb4] ~ [gb3,bb3,eb4] ~ [db3,ab3,db4,f4]@2 ~@4 [db3,ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~, bb2@2 ~@5 db3", // Ebm Db
  AL: "[bb2,gb3,bb3,eb4] db3 [bb3,db4,gb4]@2 [db3,ab3,db4,f4] ~@2 [db3,ab3], ~@14 [db4,f4] ~", // Ebm Gb Db Db5 Db
  AM: "[gb3,bb3] ~ [gb3,bb3,eb4] ~ [db3,ab3,db4,f4]@2 ~@4 [db3,ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~, bb2@2 ~@5 db3, eb4 ~@7", // Gb Ebm Db
  AN: "[gb3,bb3,eb4] ~ [gb3,bb3,eb4] ~ [db3,ab3,db4,f4]@2 ~@2 [db3,ab3,db4,f4]@2 ~@4 [db3,ab3]@2, bb2@4 ~@10 [db4,f4] ~", // Ebm Db Db5 Db
  AO: "[gb3,bb3,eb4] ~ [gb3,bb3,eb4] ~ [db3,ab3,db4,f4]@2 ~@2 [eb3,bb3,db4,gb4]@2 ~@4 [eb3,gb4]@2, bb2@4 ~@10 [bb3,db4] ~", // Ebm Db Ebm7 Ebm Bbm
  AP: "[db4,f4] ~ [ab3,db4] ~ [eb3,bb3,db4,gb4]@2 ~@4 [eb3,bb3,db4,gb4]@2 ~@2 [bb3,db4,gb4] ~, bb2@2 ~@5 eb3, ab3 f4 ~@6", // Db Db5 Ebm7 Gb
  AQ: "[ab3,db4] ~ [ab3,db4] ~ [db4,f4,gb4] ~@3 [db3,ab3,db4,f4]@2 ~@4 [ab3,db4,f4] ~, bb2@2 [eb3,bb3] ~@4 db3, f4!2 ~@6", // Db5 Gbmaj7 Db Eb5
  AR: "[gb3,bb3,eb4] ~ [gb3,bb3,eb4] ~ [db3,ab3,db4,f4]@2 ~@2 [bb3,db4,gb4]@6 [eb3,gb4]@2, bb2@4 ~@3 eb3@7 [bb3,db4] ~", // Ebm Db Gb Ebm Bbm
  AS: "[db4,f4] ~ [db4,f4]@2 [eb3,bb3,db4,gb4]@2 ~@4 [eb3,bb3,db4,gb4]@2 ~@2 [eb3,gb4]@2, bb2 ~@3, ab3@2 ab3 ~@11 [bb3,db4] ~", // Db Ebm7 Ebm Bbm
  AT: "[[ab3,db4,f4] ~ [ab3,db4,f4] ~ [eb3,bb3,gb4]@2 ~@2 [f3,bb3,db4]@12 ~@6 [f3,bb3,c4,db4] ~@3 bb2@2, bb2@4 [db4,f4] ~@2 bb2@12 ~@13]/2", // Db Ebm Bbm Db
  AU: "[f3,bb3,c4,db4] ~ [f3,bb3,db4]@2 ~@4 [gb4,bb4]@2 [db4,gb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~, ~@2 c4 ~@5 [db4,ab4] ~@7", // Bbm Gb Gb5 Gb Db5
  AV: "[db4,gb4,ab4,bb4] ~ [gb4,ab4,bb4] ~ [db4,gb4,ab4,bb4] ~ [db4,gb4,ab4,bb4] ~ [c4,e4,f4] ~ [c4,f4] ~ [f4,ab4] ~ [c4,f4,ab4] ~, ~ db4 ~@2 ab4!2 c4 ~", // Gb Fmaj7 F5 Fm
  AW: "[f4,ab4] ~ [eb4,gb4] ~ [ab3,db4,f4] ~@3, c4 ~ bb3@4 ~@10, ~@4 f4 ~@11", // Fm Ebm Db
  AX: "[bb3,db4,f4] ~ [ab3,db4,f4] ~@2 [ab3,db4,f4] ~@2", AY: "[bb3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~@3",
  AZ: "[bb3,db4,f4] ~ [ab3,db4,f4] ~@5", BA: "[eb4,ab4]@2 db4 ~ [eb4,ab4]@2 db4 ~@9, d4 ~@3 d4 ~@11",
  BB: "~@2 [db4,db5] ~@5", BC: "~@4 [ab3,db4,f4] ~@3",
  BD: "[bb3,db4,f4]@3 ~ [ab3,db4,f4]@2 ~@4 [ab3,db4,f4]@2 ~@2 [db4,f4]@2, ~@14 ab3 ~", // Bbm Db
  BE: "[bb3,db4,f4]@3 ~ [ab3,db4,f4]@2 ~@2 [ab3,db4,f4]@2 ~@6", // Bbm Db
  BF: "[bb3,db4,f4]@2 ~@2 [ab3,db4,f4]@2 ~@4 [ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~", // Bbm Db
  BG: "[bb3,db4,f4]@3 ~ [ab3,db4,f4]@2 ~@4 [ab3,db4,f4]@2 ~@2 [ab3,db4,f4] ~", // Bbm Db
  BH: "[bb3,db4,f4]@3 ~ [ab3,db4,f4]@2 ~@10", BI: "~@8 [ab3,db4,f4]@3 ~@5",
  BJ: "[[gb3,bb3,db4,gb4]@15 ~ [ab3,db4,f4]@16, ~@15 db3@17]/2", // Gb Db
})).s("gm_piano").gain(0.5)

// drums · rim
const rim = s("rim").struct("<A ~@22 B@17 C B@3 C ~@11 D B@13 D B@15 D B@5 C ~@6 D B@5 C ~@5>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "~ x ~@2", D: "~@3 x",
})).gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@22 A B C B C B C B C B C B C B C B C B C B C B D E F E F E F G H ~@3 I J K J K J K J K J K J K J K J K J K J K J K J
  K J K J K J K J K J K J L M J K J K N O J K J K J L I J ~ H@2
>`.pickRestart({
// … 55 more lines

More by The Pointer Sisters