Strudelify

So What

Davis Miles

KeyD minorTempo160 bpm
0:00/0:00
// So What — Davis Miles
// 160 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 167 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/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 · piano
const piano = note(`<
  A@3 B C D@2 E F G H I J K@2 L M N O P Q R S T U V W X Y Z AA AB@2 AC@2 AD ~ AE@3 AF AG AH AI AJ AK@2 AL AM AN AO AP AQ
  AR AS AT AU AV@2 AW AX ~ AY AZ BA BB BC BD BE BF@2 BG@2 BH BI BJ BK BL BM@3 BN BO BP BQ BR ~ BS BT BU BV BW BX BY BZ ~
  CA@2 CB@2 CC ~ CD@2 CE CF ~ CG CH@2 CI CJ@2 CK CL@2 CM CN@4 CO CP CQ CR CS CT@3 CU@2 B C D@2 E F G H I J K@2 L M N O P
  Q R S T U V W X Y Z AA CV@2 CW@2 CV@2 CX@2
>`.pickRestart({
  A: "[~@4 d2@3 a2@4 b2@2 c3@3 ~ d3@2 e3@4 c3@2 ~@11 [a3,d4,g4,b4]@7 ~@4 a4@2 ~@3 d2@3 a2@3 b2@3 c3@3 d3@2 e3@3 ~ c3@2, ~@25 d3@22 g3 ~@24, ~@36 e3@9 ~ [c4,f4]@2 ~@24]/3", // G F5
  B: "d3@3 ~@9 [e3,g4,b4]@8 ~@2 [c4,f4,a4]@2, ~@3 a2@20 ~, ~@2 d4 ~, ~@12 a3@4 ~@6 [d3,g3] ~", // Em F G5
  C: "~@3 d2@3 a2@3 b2@3 c3@3 d3@2 ~ e3@3 c3@3",
  D: "[~@13 [a3,d4,g4]@7 ~@3 [d3,g3]@2 ~@3 e3@7 ~ e3@3 ~@3 e3@2 ~@4, d3@5 ~@7, ~@12 [e3,b4]@9 ~ [c4,f4,a4]@2 ~@24]/2", // Dsus4 G5 E5 F
  E: "d3@2 ~@11 [e3,b4]@7 ~@2 [c4,f4,a4]@2, ~ a2@5, ~@12 [d4,g4]@7 ~@5, ~@13 a3@4 ~@5 [d3,g3] ~", // E5 F G5
  F: "~@4 d2@2 a2@3 ~ b2@2 ~ c3@3 d3@2 e3@4 c3@2", G: "~@12 [a3,d4,g4,b4]@7 ~@3 [c4,f4,a4]@2, d3@23 ~, ~@12 e3@10 g3 ~",
  H: "~@3 d2@3 a2@3 b2@3 c3@3 d3@2 e3@4 c3@2 ~",
  I: "d3 ~@5 [e3,g4,b4]@4 ~ [c4,f4,a4], ~@4 a2@19 ~, ~@12 [a3,d4]@6 ~@4 [d3,g3] ~", // Em F D5 G5
  J: "~@4 d2@2 a2@3 ~ b2@2 c3@2 ~@2 d3@2 e3@2 ~@2 c3@2",
  K: "[~@13 [e3,g4,b4]@9 ~ [g3,a4]@2 ~@3 e3@6 ~@2 e3@3 ~@3 e3@2 ~@4, d3@25 ~@23, ~@13 [a3,d4]@7 ~@2 [c4,f4]@2 ~@24]/2", // Em Gsus2 D5 F5
  L: "d3@2 ~@11 [a3,d4,g4]@7 ~@3 d3, ~@4 a2@17 ~@3, ~@3 b4@2 ~, ~@13 e3@9 [c4,f4,a4]@2", // Dsus4 F
  M: "~@4 eb2@3 bb2@3 c3@2 ~ db3@3 eb3@2 f3@2 ~@2 db3@2",
  N: "~@13 f3@8 ~ [ab3,db4,gb4,bb4]@2, eb3@23 ~, ~@12 [ab4,c5]@7 ~@5, ~@12 eb4@5 ~@7, ~@13 bb3@5 ~@6", // Gb Ab
  O: "~@4 eb2@2 bb2@4 c3@2 db3@3 ~ eb3@2 f3@3 ~ db3@2",
  P: "eb3@2 ~@10 [bb3,eb4,c5]@7 ~@3 [eb3,ab3,db4,gb4,bb4]@2, ~@4 bb2@19 ~, ~@4 [f3,ab4]@3 ~", // Cm7 Ebm7 Fm
  Q: "~@4 eb2@2 bb2@3 ~ c3@2 db3@3 ~ eb3@2 f3@3 ~ db3@2",
  R: "~@13 f3@8 ~ [ab3,db4,gb4,bb4]@2, eb3, ~@2 [eb4,ab4,c5] ~, ~@13 bb3@5 ~@6", S: "~@2 f3@3 ~ f3 ~@2 f3 ~@2",
  T: "eb3@2 ~@10 [bb3,eb4,c5]@6 ~@4 [eb3,ab3,db4] ~, ~@2 bb2@9 ~, ~@6 [f3,ab4]@4 ~ [gb4,bb4]", // Cm7 Dbsus2 Fm Gb
  U: "~@4 d2@2 a2@3 ~ b2@2 c3@3 ~ d3@2 e3@3 c3@2 ~",
  V: "~@13 a3@6 ~@3 [g3,c4,f4,a4]@2, d3, ~@4 [e3,b4]@3 ~, ~@12 [d4,g4]@7 ~@5", // F E5 G5
  W: "~@4 d2@2 a2@3 ~ b2@3 c3@3 d3@2 e3@3 ~ c3@2",
  X: "d3@2 ~@10 [e3,g4,b4]@9 ~ [d3,g3,c4,a4]@2, ~@3 a2@20 ~, ~@12 [a3,d4]@7 ~@2 f4@2 ~", // Em Dsus4 D5
  Y: "~@4 d2@2 a2@3 ~ b2@3 c3@2 d3@3 e3@3 c3@3", Z: "~@13 [e3,d4,g4,b4]@8 ~ [g3,c4,f4,a4]@2, d3, ~@13 a3@6 ~@5",
  AA: "~@4 e3@6 ~@2 e3@3 ~@3 e3@2 ~@4",
  AB: "[d3@3 ~@10 [e3,d4,g4,b4]@7 ~@2 [c4,f4,a4]@3 ~@11 [c4,db4,f4]@8 ~@4, ~@2 a2@21 ~, ~@13 a3@5 ~@4 g3@23 ~@3]/2", // Em7 F Dbmaj7
  AC: "[~ [e3,f3,a3,e4]@25 ~@3 c4 ~@18, ~@14 [f3,a3,e4] ~@9]/2", // Fmaj7
  AD: "~@13 a3@3 ~ [b3,e4,a4]@3 ~@4, ~@12 [d4,g4]@4 ~ d4 ~@6", // Esus4 G5
  AE: "[~ [g3,c4,f4,a4]@3 ~@2 a3@2 ~@2 [a3,d4,g4,b4]@2 ~@2 [d4,g4]@3 ~@2 [f4,a4]@20 ~@4 [f3,eb4,g4]@4 [c4,d4,f4]@3 ~@22, ~@5 [d4,g4,b4]@2 ~@7 [a3,b4]@5 g3@24 ~@29, ~@18 c4@20 ~@5 bb3@3 ~@26]/3", // F G G5 F Cm Dm7 G Asus2
  AF: "~@5 g3 ~@11 g3@3 ~ g3 ~@2, ~@2 [c4,db4,f4] ~@5 eb4@3 ~, ~@4 [bb3,db4] ~", AG: "~ g3@4 ~@19, [a3,c4,e4]@5 ~@19",
  AH: "~@5 [a3,g4] ~@6, ~@3 [d4,b4,e5,a5] ~@4", // A7 Dsus2
  AI: "~ [a3,g4]@3 ~@3 a3@3 ~@14, [d4,b4,e5,a5]@2 ~ [d4,g4,b4,e5,a5]@2 ~@7", // A7 Dsus2 Em7
  AJ: "~@4 [a3,d4,g4,b4,e5,a5] ~@3 [d4,g4,e5] a5@2 ~@2 [bb3,eb4,ab4]@3 ~@2 [bb3,eb4,ab4,c5,f5]@3 ~ [bb3,eb4,ab4,c5,f5,bb5]@2, ~@9 b4 ~@2 [c5,f5,bb5]@4 ~ bb5@3 ~@4", // Em7 Ebsus4 Fm7 Fsus4
  AK: "[~@8 a3@26 ~@7 a3@3 ~@4, ~@7 d5@29 ~@12, ~@7 [g5,b5]@27 ~@14, ~@7 [d4,g4]@25 ~@8 [g3,db4,e4,e5,g5]@4 ~@4]/2", // G G5 Dbdim
  AL: "~ [f3,c4,d4,a4,f5]@4 ~@17 [c4,d4] ~", AM: "[e4,f4,c5]@4 ~ [e4,f4,c5]@4 ~@7 [e4,f4] ~@7, ~@8 c5 ~@3",
  AN: "~ f4@17 ~@6, [gb4,db5]@5 ~", AO: "~ ab3@3 [bb3,eb4,ab4]@3 ~@17, [db4,gb4] ~@5",
  AP: "~@6 [gb3,c4,f4]@2 [ab3,db4,gb4] ~@3", // F Dbsus4
  AQ: "~ [f3,bb3]@3 [gb3,c4,f4]@2 ~@6 [eb3,ab3,db4]@3 ~ [f3,bb3,eb4]@3 ~@5, eb4 ~@5", // Bb5 F Dbsus2 Ebsus2
  AR: "~@11 f3 ~ [gb3,db4]@3 ~@2 [gb3,db4]@3 ~@3", // Gb5
  AS: "f3 [gb3,db4] ~ f3 ~ [gb3,db4] ~@4 db4@4 ~@10, ~@9 [gb3,bb3]@5 ~@10", // Gb5 Gb
  AT: "f3 ~ [gb3,bb3] ~ f3 ~ [ab3,c4,eb4]@2 ~@2 [gb3,bb3]@2 ~@3 [ab3,c4] ~ f3 ~ [gb3,bb3]@3 ~@2, ~@2 db4@2 ~@6 db4@4 ~ eb4@2 ~@2 db4@5", // Gb Ab Gb Ab Gb
  AU: "f3 ~ [ab3,eb4]@2 f3 ~ [gb3,db4]@2 ~@3 eb4@2 ~@2 gb3@2 ~@2 ab3@2 db4 ~@2, ~@2 c4 ~@3 bb3 ~@3 [ab3,c4]@2 ~@2 db4@2 ~@2 eb4@6, ~@15 bb3 ~ f3@2 ~@5, ~@6 c4 ~", // Ab5 Gb5 Ab
  AV: "[~ [g3,c4,e4]@26 ~@2 f3@2 ~@17, ~@28 e4@5 ~@15, ~@14 [g3,c4] ~@9]/2", AW: "~@4 [f3,a3,c4,e4,a4,e5,g5]@3 ~@17",
  AX: "~@4 [d4,g4] a3 ~@7 a3@3 ~@2 [a3,d4,g4,e5,g5,c6,e6]@3 ~@3, ~@4 [e5,g5,c6,e6]@2 ~@6 [d4,g4,e5,g5,c6,e6]@5 ~@7", // G5 Am7 C
  AY: "~@5 c4@2 ~@5 [bb3,eb4,f5]@4 ~@2 [ab3,gb4,bb4,eb5]@5 ~, ~@2 [f4,bb4,d5,g5] ~@3 c5@3 ~@3, ~@12 ab4 ~@5 db4@3 ~@3", // Bbsus4 Ebm Gm7
  AZ: "~ g3@8 ~@4 [f3,b3,e4,g4]@8 ~@3, [a4,d5]@13 ~@11, [c4,f4]@9 ~@3 c5@11 ~", // Em D5 F5
  BA: "~ [e3,bb3,d4]@7 ~@4 bb4 [eb3,db4]@10 ~, bb4 ~, gb4@7 ~@5 [ab3,gb4]@9 ~@3", // Em7b5 Eb7 Ab7
  BB: "~ [d3,g3]@5 ~@18, [c4,e4,f4,a4]@5 ~@19", BC: "~@10 d3 ~ [a3,db4,d4,e4]@3 ~@3 [a3,d4]@2 ~@4, ~@17 f4@4 ~@3",
  BD: "~@13 g3@4 ~ [d4,gb4,g4,b4]@3 ~@3, ~@12 [c4,f4,a4]@4 ~@2 a3@5 ~", // Gmaj7 F
  BE: "~ b3@5 [a3,b4]@5 ~ [g3,f4,a4]@5 ~ [a3,d4,g4,b4]@3 ~ [g3,c4,f4,a4]@2, [e4,a4,c5]@5 ~ [d4,g4]@3 ~@3 c4@3 ~@9, ab4 ~@11", // Asus2 Dm G F Am G5
  BF: "[~@3 [g3,c4,f4,a4]@3 ~@2 [c4,f4,a4] ~@3 [f3,bb3,db4]@4 ~@2 [f3,bb3,e4]@4 ~ [e3,c4,d4,f4]@4 ~@3 [e3,c4]@4 ~@12 a3 ~, ~@8 g3@3 [e4,g4]@4 ~@2 [db4,g4]@4 ~@9 [d4,f4]@2 ~@16]/2", // F Bbm Bb Dm7 C Em Dbdim Dm
  BG: "[[bb3,db4,e4]@5 ~@2 g3@38 ~@3, ~@6 [a3,d4]@41 ~]/2", BH: "[f3,g3] ~ c4@2 a3@2 d4@3 ~ c4@3 ~@11",
  BI: "~@14 c4 ~@2 [a3,g4]@3 ~@4, ~@13 [g3,f4]@3 d4@3 ~@5", // A7 G7
  BJ: "~@4 f4 g3 c4@2 [a3,d4,g4]@3 ~@3 c4@2 ~ [a3,d4,g4]@4 ~ [g3,f4] ~, ~@13 [g3,f4]@2 ~@7 c4@2", // Dsus4 G7
  BK: "~ [a3,d4,g4]@4 ~ g3 c4@2 [a3,d4,g4]@4 ~@2 [g3,c4]@2 ~ [a3,d4,g4]@5 ~, ~@5 f4@2 ~@7 f4@2 ~@8", // Dsus4 C5 Dsus4
  BL: "~@12 [a3,d4,g4]@3 ~@2 [bb3,eb4,ab4]@3 ~@2 bb3@2, ~@7 [eb4,ab4]", // Dsus4 Ebsus4 Ab5
  BM: "[~ [ab3,db4,gb4]@4 ~@2 [ab3,db4,gb4]@3 ~ [a3,d4,g4]@3 ~@2 [a3,d4]@4 ~ f4@3 ~ [db4,e4]@11 [f3,d4]@12 [e3,c4]@12 [eb3,b3]@12, ~@16 g4@2 ~@2 c4@3 ~@2 a3@34 ~@13, ~@21 g3@17 ~@34]/3", // Dbsus4 Dsus4 D5 Dbm Dm C Abm
  BN: "[db3,eb3,ab3]@5 ~@19", BO: "~@10 eb3 ~ [f3,gb3,db4]@4 ~@8",
  BP: "~@11 ab3 ~ [db4,gb4,bb4]@4 ~ [bb3,eb4,ab4,c5]@5 ~", BQ: "[ab3,db4,gb4,bb4] ~@7",
  BR: "~@4 [gb3,bb3,f4,f5]@2 ~@2 [bb3,d4,bb4,d5,f5]@3 ~ [gb3,d4,f4,bb4]@7 ~@5, ~@3 [bb4,d5]@2 ~@19, ~@4 d4 ~@3 [gb3,f4] ~@3 [bb3,d5,f5]@9 ~@3", // Gbmaj7 Bb Gbmaj7 Bb
  BS: "~@4 [gb3,c4,f4,c5,f5,a5]@2 ~@7 [gb3,c4,f4,c5,f5]@3 ~@6 [gb3,c4,f4,c5,f5,a5]@2, ~@4 a5 ~@3", // F
  BT: "~@3 [gb3,c4,f4,c5,f5,a5]@2 ~@3 [bb3,eb4,ab4]@4, ~@5 [db5,gb5,bb5]@3", BU: "[a3,d4,d5,g5]@11 ~, [g4,b5]",
  BV: "~ [a3,d4,g4]@4 ~@2 [a3,d4,g4,g5]@3 ~@14, [c5,f5,a5]@5 ~ e5@3 ~@15", // Dsus4 F
  BW: "~@10 [a3,d4,g4] ~@3 d5@2 ~@2 e5@4 ~@2, ~@12 [a4,db5,f5]@4 ~ [g4,c5]@5 ~@2", // Dsus4 Aaug C5
  BX: "~@17 g3@5 ~@2, ~@2 db4, ~@16 [g4,ab4,c5]@5 ~@3", BY: "~ f3@5 ~@18, [c4,f4,c5] ~@3",
  BZ: "~@4 [c4,f4]@2 ~@11 gb3@3 ~@4, ~@4 [g3,db4] ~@11 [ab3,db4,eb4]@3 ~@5", // F5 Gdim Absus4
  CA: "[~ b3@5 [a3,db4,gb4]@5 ~ [ab3,c4,f4]@5 f4 ~@6 [f3,c4,d4]@20 ~@4, [e4,ab4]@5 ~@12 [bb3,eb4]@6 ~ a3@23 ~, ~@9 g3@5 ~@10]/2", // Gbm Fm Dm7 E Eb5
  CB: "[~@4 [g3,e4]@3 ~@2 [b3,g4]@2 ~@2 [d4,b4]@5 ~ [f4,d5]@3 ~ d4@2 ~@4 d4@3 ~ b3@3 ~ [c4,a4]@5 ~ a3@3 [b3,g4]@2, ~@22 b4@3 ~@3 b4@3 ~@2 g4 ~@8 f4@3 ~@3]/2", // C Em G Dm F Em
  CC: "~@4 [b3,g4]@3 ~@2 [g3,e4]@2 ~ [a3,f4]@5 ~ [f3,d4]@3 ~@3", // Em C Dm
  CD: "[~@4 [f3,d4]@2 [a3,f4]@2 ~@2 c5 ~@3 e4@2 ~@2 [e4,e5]@3 ~@2 [e4,e5]@4 ~@2 a3@2 ~ [d4,d5]@2 ~@2 [d4,d5]@3 ~@3 [g3,e4]@2 [c4,c5]@2 ~@2, ~@8 a4@2 ~@3 e5@3 ~@12 a4@2 ~@9 b4@2 g4@2 ~@5, ~@9 c4@3 ~@15 [c4,c5]@2 f4 ~@10 b3@2 ~@6]/2", // Dm E D C
  CE: "[c4,c5]@3 ~@3 f3 ~ b3@3 ~ e4@2 d3@2 ~ a3@3 ~@3 b3, ~@3 [a3,a4]@2 d4@2 ~@4 [g3,g4]@3 d4 ~@5 [f3,f4]@2 d3@2, ~@4 f4@2 ~ b4@4 ~@5 a4@5 d4@2 ~", // C A G F
  CF: "~ [g3,g4]@9 [f3,f4]@3 [e3,e4]@3 ~ f4@2 ~@5, ~@17 f3 ~@6", // G F E
  CG: "~@3 [f3,a3,db4,e4] ~@3 db5@2 e5@2 ~ f4@2 ~ [f3,a3,db4,e4] ~@3 db5@2 ~ f4@2, ~@6 e5@2 ~@10 e5@3 a4@2 ~", // A
  CH: "[[db4,e5] [f3,a3,e4] ~@3 f3 a4 f4 ~@2 [g3,b3,d4,f4] ~@4 b4@2 g4 ~@3 a4 ~@3 [f3,a3]@5 ~@10 [f3,a3,db4] ~ e4@2 f4@2 ab4@2, ~@4 [db4,e4,e5]@3 ~@6 [g3,b3,d4,f4,f5]@3 ~@4 db5@2 ~ f4@2 ~@23, ~@5 db5@2 ~@2 f5@2 ~@3 d5@2 ~@3 e5@2 ~@3 [db4,e4]@6 ~@18]/2", // Dbm Fmaj7 G7 F Faug Dbm G7 Dbm
  CI: "~ a4@3 db5@2 ~ d5@2 ~ eb5@2 ~ e5@2 ~@4 gb5@2 ~ g5 ~, ~@16 ab4@7 ~, ~@16 f5@3 ~@5, ~@17 [bb3,eb4]@7", // Eb5
  CJ: "[~@2 a5@3 ~@2 g5@3 ~ f5@2 e5@3 ~ d5@2 ~@8 g5@2 f5@2 e5@2 d5@2 ~ a5@2 g5@2 [a3,g4,a5]@2 g5@2 f5@2 e5 ~, ~ [d4,g4]@18 ~@3 d4@11 ~@7 d4@5 ~@3, ~ ab5@2 ~@18 ab5@2 [a3,g4]@11 ~@14, ~@2 a3@17 ~@3 a5@4 ~@22]/2", // A7 G5 A7
  CK: "~ [ab3,db4,gb4]@10 ab5@2 gb5@3 [ab3,gb4]@2 bb5@4 f5@2, ~ bb5@8 ~@15", // Dbsus4 Ab7
  CL: "[~@10 [c4,f4,bb4] ~@5 [bb3,eb4,ab4]@10 ~@2 [bb3,eb4,ab4] ~@5 ab5 ~@2 gb5@2 ~@3 gb5@2 eb5 ~ ab5 ~, ~@31 eb6@2 bb5@2 ~@5 ab4@6 ~@2, ~@16 db6 ~@3 [bb3,eb4,bb5] ~@3, ~@41 ab5@2 ~@5]/2", // Fsus4 Ebsus4 Eb5
  CM: "~@2 gb5 eb5@2 db5 ~ f5@2 g4 d4 ~ eb5@2 ~ db5@2 c5 bb4@2 ~ gb4@2 f4, ~ ab5@2 f5 ~@5 ab3@2 ~@3 d5@2 ~@4 ab4@2 ~@2",
  CN: "[ab4 ~ f4 gb4@2 ~ bb4 ~@2 db5@2 eb5 f5@2 ~ db5 ~@2 eb5 c5 ~ db5@2 eb5 f5@2 ~ ab5 ~@2 ab5@2 gb5 f5@2 ab5 f5 ~@2 ab5@2 bb5 c6@2 ~ eb6@2 ~@2 [bb3,eb4]@7 ~@2 f6@2 ~ [c4,f4,bb4,eb6]@3 ~ [bb3,eb4,ab4,f6]@4 ~@2 c4@3 ~@2 [eb4,ab4,f6]@5 eb6@2 ~@3 gb6@2 ~ f6@4 eb6@2 ~, ~@5 ab4@2 ~ c5@2 ~@4 eb5@2 ~ c5@2 ~@7 gb5@2 ~ bb5@2 ~@7 gb5@2 ~@4 db6@2 ~ f6@2 ~@35 f6@2 ~@10, ~@18 [c4,bb4]@26 ~@32 bb3@4 ~@5 [c4,f4,bb4]@2 ~@2 [bb3,eb4,ab4]@6 ~, ~@18 f4@23 ~@7 [ab4,gb6]@8 ~@14 [f4,bb4,gb6]@4 ~@22]/4", // Eb5 Cm7 Bbsus4 Fm7 C7 Fsus4 Ebsus4 Ab7 …
  CO: "~ e6@8 ~ d6@3 ~ a5@2 f5@2 e5@4 [a3,d4,g4] ~, eb6@2 ~@11 c6@3 ~@8, ~ [a3,d4,g4]@16 ~@7", // Dsus4
  CP: "~ g5@4 ~ f5@4 [a3,d4,g4] ~ e5@2 f5@2 [a3,d4,g4] ~ d5@3 ~@3", // Dsus4
  CQ: "~ [g4,e5] d5@2 e5@2 ~ a5@2 ~ d5 c5@2 d5 ~ a5 ~@2 e5 ~ d5@2 e5@2, ~ d4@2 ~@16 g4@3 ~@2, ~@2 a3 ~@7 [g3,c4,f4]@4 ~@5 [a3,d4]@5", // C Csus4 D5
  CR: "a5 ~@3 d5 ~ d5@2 ~ a5 ~@3 e5 d5@2 e5@2 a5 ~@5, ~@4 [g3,c4,f4]@5 ~@4 [a3,d4,g4]@6 ~@5, ~@5 c5@2 ~@17", // Csus4 Dsus4
  CS: "~@6 a5 ~ c6@2 a5@2 g5@2 ~ f5 ~ a5@2 f5@2 e5@2 d5, ~@4 [e4,a4]@9 ~@3 [d4,g4]@5 ~@3, ~@5 b3@9 ~@3 a3@5 ~@2", // A5 G5
  CT: "[~@2 eb5@2 d5@2 c5 ~ f5@3 ~@3 c5@2 bb4@2 g4@4 ~@3 f4@3 ~ f4@2 ~@4 g4@2 e4@3 ~ e4 ~@3 e4@2 f4@2 d4@3 ~ d2@2 a2@3 b2@3 c3@3 ~ d3@2 e3@3 c3@2, ~ [g3,c4,f4]@7 ~@4 [bb3,eb4]@10 a3@24 ~@26, ~ g5@3 ~@7 bb4@2 ~@9 d4@15 ~@35, ~@12 f3@8 ~@3 e3@24 ~@25, ~@6 eb5@2 ~@9 f4 ~@18]/3", // Csus4 Eb5
  CU: "[~@12 [a3,d4,g4,b4]@7 ~@4 a4@2 ~@3 d2@3 a2@3 b2@3 c3@3 d3@2 e3@3 ~ c3@2, ~ d3@22 g3 ~@24, ~@12 e3@9 ~ [c4,f4]@2 ~@24]/2", // G F5
  CV: "[d3@3 ~@10 [e3,d4,g4,b4]@7 ~@2 [c4,f4,a4]@3 ~@3 e3@6 ~@2 e3@3 ~@3 e3@2 ~@4, ~@2 a2@9 ~@13, ~@13 a3@5 ~@4 g3@6 ~@20]/2", // Em7 F
  CW: "[d3@3 ~@10 [e3,d4,g4,b4]@7 ~@2 [c4,f4,a4]@3 ~@3 e3@6 ~@2 e3@3 ~@3 e3@2 ~@4, ~@2 a2@21 ~, ~@13 a3@5 ~@4 g3@6 ~@20]/2", // Em7 F
  CX: "[d3@3 ~@10 [e3,d4,g4,b4]@7 ~@2 [g3,c4,f4,a4]@5 ~@21, ~@2 a2@9 ~@13, ~@13 a3@5 ~@30]/2", // Em7 F
})).s("gm_piano").gain(0.4).pan(0.3)

// chords · piano
const piano_2 = note("<~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ B ~ B ~ B ~ A ~ A ~ A ~ A ~@135>".pickRestart({
  A: "~@4 [e3,a3,d4,g4,b4]@3 [d3,g3,c4,f4,a4]", B: "~@4 [f3,bb3,eb4,ab4,c5]@3 [eb3,ab3,db4,gb4,bb4]",
})).s("gm_piano").gain(0.4).pan(0.3)

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

// other · alto sax
const alto_sax = note(`<
  ~ A ~ B@2 C ~ D ~ E@2 F ~ G ~ H ~ I ~ J@2 K ~ K ~ C ~ L@2 H ~ H ~@97 A ~ B@2 C ~ D ~ E@2 F ~ G ~ H ~ I ~ J@2 K ~ K ~ C
  ~ L@2 H ~ H ~ H ~ H ~ H ~
>`.pickRestart({
  A: "~@13 d4@8 ~ c4@2", B: "[~@12 d4@9 ~@2 c4@3 ~@22]/2", C: "~@12 d4@9 ~ c4@2", D: "~@13 d4@9 c4@2",
  E: "[~@12 g4@10 ~ f4@3 ~@22]/2", F: "~@6 g4@5 f4", G: "~@13 g4@8 ~ f4@2", H: "~@12 g4@9 ~ f4@2",
  I: "~@12 ab4@8 ~ gb4@3", J: "[~@12 ab4@10 ~ gb4@4 ~@21]/2", K: "~@12 eb4@9 ~ db4@2", L: "[~@12 d4@9 ~ c4@4 ~@22]/2",
})).s("gm_alto_sax").gain(0.45).pan(0.7)

// other · alto sax
const alto_sax_2 = note("<A B A C A B D C A B A C A B D C E F E G E F H G A B A C A B D C ~@135>".pickRestart({
  A: "~ d3 a3 b3 c4 d4 e4 c4", B: "d4", C: "d4 a3@7", D: "~ e4@3 e4@2 e4@2", E: "~ eb3 bb3 c4 db4 eb4 f4 db4", F: "eb4",
  G: "eb4 bb3@7", H: "~ f4@3 f4@2 f4@2",
})).s("gm_alto_sax").gain(0.45).pan(0.7)

// drums · clap
const clap = s("cp").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C D E F G H C I J K ~ L F M ~@17 B C D E F G H C I
  J K ~ L F M ~@17 B C D E F G H C I J K ~ L F M ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~
>`.pickRestart({
  A: "~@13 x ~@8 x ~", B: "~@2 x ~@2 x ~@6", C: "~@5 x ~ x", D: "~ x ~@2", E: "~@8 x ~@2 x", F: "~@11 x", G: "~ x ~@4",
  H: "~@5 x ~@5 x", I: "~@2 x", J: "~ x ~@2 x ~", K: "~@4 x!2", L: "x!2 ~@9 x", M: "~@4 x ~@5 x ~@4 x ~@8",
})).gain(0.35)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B@2 C A B@2 D E F B@2 G H I J K B@2 C A B@2 D E F B@2 G H I J K B@2 C A B@2 D E F B@2 G H I J K B@2 C A B@2 D E F
  B@2 G H I J K B@2 C A B@2 D E F B@2 G H I J K B@2 C A B@2 D E F B@2 G H I J K B@2 C A B@2 D E F B@2 G H I J K B@2 C A
  B@2 D E F B@2 G H I J L B@2 C A B@2 D E F B@2 G H I J K B@2 C A B@2 D E F B@2 G H I J I J I J I J ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@6 x ~@10 x ~ x ~@3 x", D: "x!2 ~ x", E: "~ x!3", F: "~@6 x ~@10 x ~@6",
  G: "~@3 x ~@5 x ~ x", H: "~@7 x ~@10 x ~@5", I: "~@2 x ~@6 x ~@2", J: "~@6 x ~@10 x!2 ~@5",
  K: "x!2 ~ x!2 ~ x!2 ~ x ~@2", L: "x!4",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~ B C ~@4 D ~@7 A ~ B C ~@4 D ~@7 A ~ B C ~@4 D ~@7 A ~ B C ~@4 D ~@7 A ~ B C ~@4 D ~@7 A ~ B C ~@4 D ~@7 A ~ B
  C ~@4 D ~@7 A ~ B C ~@4 D ~@7 A ~ B C ~@4 D ~@7 A ~ B C ~@11
>`.pickRestart({
  A: "~ x", B: "~@11 x", C: "~@3 x ~@4", D: "~@7 x",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@143 A ~@15 A ~ A ~ A ~ A ~>".pickRestart({
  A: "~@11 x",
// … 13 more lines

More by Davis Miles