Strudelify
Take Five cover art

1959 · On Time

Take Five

Dave Brubeck

KeyE♭ minorTempo180 bpm
0:00/0:00
// Take Five — Dave Brubeck
// 180 bpm, 5/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 1) are rendered on a constant 5/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 119 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/5)

// 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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~ A B@10 C D E F G H I J K L B@6 M N O P Q R S@3 T U@2 V W X Y Z AA AB AC@2 AD AE AF@2 AG AH@2 AI AJ AK AL AM@2 AN AO
  AP@2 AQ@2 AR AS AT@6 AU A B AV AW AX@7 AY AZ BA AZ BB AZ BA BC BD BE AX@6 BF BG AX BH@4 BI BJ ~@6
>`.pickRestart({
  A: "eb2 ~@2 [gb3,bb3,eb4] ~@4 eb2 ~ [gb3,bb3,eb4] ~@3 bb2@4 ~ [db3,ab3,bb3,db4] ~@4", // Ebm Bbm7
  B: "eb2@2 ~ [gb3,bb3,eb4] ~@4 eb2@2 [gb3,bb3,eb4] ~@3 bb2@4 ~ [db3,ab3,bb3,db4]@2 ~@3", // Ebm Bbm7
  C: "eb2@2 ~ [gb3,bb3,eb4] ~@4 eb2 ~ [gb3,bb3,eb4] ~@3 bb2@4 ~ [ab3,bb3,db4]@2 ~@3, ~@19 db3@5", // Ebm Bbm7
  D: "gb3@12 ~@2 f3@9 ~, [b3,eb4]@23 ~", E: "[bb3,db4,f4]@4 ~ bb3@3, ~@7 gb4@4 ~, ~@15 g3@7 ~@2",
  F: "[gb3,b3,eb4]@13 ~@5 [f3,b3,eb4]@6", // B Fm7b5
  G: "[bb3,db4,f4]@6 ~@2 [bb3,db4] ~@7 g3@3 [g3,db4,e4]@4 ~, ~@8 f4@2 ~@5 [db4,gb4]@4 ~@5", // Bbm Dbdim Gb5
  H: "[gb3,b3]@12 ~@2 [f3,b3,eb4]@9 ~", I: "[bb3,db4,f4]@13 ~@5 [g3,db4,ab4,db5]@6",
  J: "[gb3,b3]@6 ~@2 [gb3,b3] ~@9 [f3,b3,ab4]@2 ~@4", // B5 Fdim
  K: "~@3 [ab3,b3,g4] ~@6 [ab3,b3,eb4,g4]@3 ~ [ab3,d4,gb4]@3 ~@2 [ab3,d4,gb4]@5, ~@3 eb4@2 ~@19", // Abm Abm7b5
  L: "~@3 [gb3,bb3,eb4] ~@4 eb2 ~ [gb3,bb3,eb4] ~@3 bb2@4 ~ [db3,ab3,bb3,db4]@2 ~@3", // Ebm Bbm7
  M: "eb2@2 ~ [gb3,bb3,eb4] ~@4 eb2 ~ [gb3,bb3] ~@3 bb2@4 ~ db3@2 ~@3", // Ebm Gb
  N: "f5@3 [ab3,gb4] f5@2 ~@2 f5@3 ~@2 f5@2 ~ f5@3 ~ gb5@3 ~, e5 ~@2 db4@2 ~@19", // Ab7
  O: "eb5@3 [eb4,ab4] ~@7 db4@7 ~@2 [bb3,eb4]@2 c5@2, ~@4 eb5@17 ~@3, ~@10 [ab3,gb4]@7 ~@2 ab4@3 ~@2", // Ab5 Eb5 Ab7
  P: "[db4,gb4]@2 ~@2 eb5@3 ~ eb5@3 ~ eb5@2 ~ eb5@4 f5@5, eb5 ~@5, ab3 ~@23", // Gb5
  Q: "~@3 [ab3,db4,gb4] ~@13 [g3,b3,d4,gb4]@6 ~, ~ bb4@20 ~@3", // Dbsus4 Gmaj7
  R: "~@5 f5@2 ~ d5@2 eb5@2 ~ f5@2 gb5@2 [bb3,db4,f4] ab5@2 f5 ~ gb5@2, [gb3,bb3,db4,f4]@3 ~@5", // Bbm Gbmaj7
  S: "[~ eb5@2 [db4,gb4] ~ db5 ~@2 eb5@2 c5@2 ~ db5@2 bb4@2 [bb3,eb4,ab4] c5@2 ab4@2 ~ bb4@2 f4@7 eb4 ~ f4@3 ~@2 f4@3 e4 eb4 d4@2 ~@2 d4@2 ~ eb4@2 e4@2 ~ g4@2 b4@2 d5@2 ~ g5@2 b5 ~ d6@2 ~ db6@2, ~@3 f5@2 ~@42 f4@2 ~@16 [g3,b3,c4,e4]@7]/3", // Gb5 Ebsus4 Cmaj7
  T: "~ [bb4,bb5]@6 ~ [gb4,gb5]@2 ~@5 f5@2 ab5@2 ~ d5@2 b4@2, ~ [gb3,bb3,b3,eb4]@12 eb5@2 ~@9, ~@14 [f3,b3,eb4]@9 ~", // Bb Gb Bmaj7 Fm7b5
  U: "[bb4@2 ~ f4 ~ ab4@2 ~ [bb3,db4,f4,gb4]@2 f4@2 ~ gb4@2 g4@2 ~ bb4 ~ db5@2 ~@4 b4@2 ~ b4@2 ~ db5@2 ~@2 db5@2 ~ eb5@2 [f3,b3] eb4 eb5 f5@3 ~, ~@8 ab3 ~@9 [g3,db4]@5 c5@2 [gb3,bb3]@10 ~@3 [f3,b3,eb4]@2 ~@8, ~@12 [b3,eb4]@5 ~@7]/2", // Gbmaj7 Fdim Gdim Gb Fm7b5 B
  V: "bb5@2 ~ ab5@2 ~@8 [ab3,bb3,db4,f4] ~@6 e5@3 ~, ~@8 db5@8 ~@2 [g3,db4,gb4]@5 ~, ~@20 eb5 ~@3", // Bbm7 Gb
  W: "~ eb5@5 ~@2 [gb3,b3,eb4] ~ bb4@2 ~ ab4 ~ b4 db5@2 bb4@2 ~@2 [f3,b3,eb4] ~, ~@8 b4@2 ~@11 ab4@2 ~", // B Fm7b5
  X: "f4@2 eb4@2 ~@2 db4@5 ~@2 [ab3,bb3,db4,f4] ~@2 bb3 ~ b3 ~ g4 ~ b4@2, ~@19 eb4@2 ~@3", // Bbm7
  Y: "bb4 ~@2 bb4 ab4 g4 ~@2 [gb3,bb3,b3,eb4] ~ db5@2 ~ bb4@2 ab4@2 b3 ~ db4@2 ~ d4@2, ~@7 ab4@2 ~@15", // Bmaj7
  Z: "~ e4@2 [gb3,bb3,b3,eb4] ~ g4@2 ~ ab4@2 bb4@2 b4@3 db5 ~@2 d5@2 eb5 ~@2 e5, ~@3 f4@2 ~@3 bb1@8 ~@2 [ab3,d4,gb4]@6", // Bmaj7 Abm7b5
  AA: "~ f5@3 ~ f5@2 ~@7 [gb3,bb3,db4,f4]@3 ~ [gb3,bb3,db4,f4] ~@5", // Gbmaj7
  AB: "~ f5@2 ab5@2 f5@3 ~@2 db5@3 ~@2 db5@2 f4 [bb3,db4] ~@5, ~@17 eb5@2 ~@5", // Bbm
  AC: "[~@3 [ab3,db4,gb4] ~@10 [gb3,bb3,db4,f4]@10 ~@9 [bb5,eb6]@4 ~@4 gb5 ~ [ab5,eb6]@3 gb5 ~, ~@7 [bb5,eb6]@7 ~@5 eb6 ab5 ~@3, ~@14 a5@2 ~@17 a5 ~@5 a5@2 ~@7]/2", // Dbsus4 Gbmaj7 Eb5 Ab5 Eb5
  AD: "~@8 [g3,db4,gb4] ~@8 eb5@2 ~ gb5@2 ab5@2, ~@13 [gb3,bb3,db4,f4]@8 ~@3", // Gb Gbmaj7
  AE: "~ a5@2 bb5@2 ~ a5@2 ab5@2 gb5@2 ~ eb5 ~ gb5@2 ~ ab5@2 ~@2 ab5@2",
  AF: "[~@2 gb5@2 ~ bb5@12 ~ [bb3,db4,f4] ~@5 ab5@2 ~ f5@2 db5@3 ~@2 f5@2 ~ db5@2 bb4@3 [gb3,bb3,db4,f4] eb5@3 c5@2, ~@23 eb5@2 ~@23]/2", // Bbm Gbmaj7
  AG: "[eb1,bb1]@11 ~, ab4, eb2@19 ~@5", AH: "[[bb3,eb4,ab4,db5,f5]@26 ~@6 [bb3,eb4,ab4,db5,f5,ab5] ~@15]/2",
  AI: "~@17 [f4,gb4] [bb3,db5,ab5] ~@5", AJ: "[eb3,bb3,gb4,db5,ab5]@2 ~", AK: "[db4,f4,ab4]@8 [gb4,bb4] ~@15",
  AL: "[bb3,db4,ab4]@3 [gb4,bb4] ~@20", // Bbm7 Gb
  AM: "[~@22 [gb3,b3,eb4,gb4,bb4,db5]@12 ~@3 [f3,b3,eb4,ab4]@2 ~@9, ~@37 db5 ~@10]/2", // Ebm7 Fm7b5
  AN: "~@3 [ab3,ab4]@2 ~@13 [g3,db4,e4,bb4,e5]@5 ~, ~@3 f4 ~@20", // Ab Gdim
  AO: "[gb3,b3,eb4]@6 ~@2 [gb3,eb4] ~@8 ab6 [f3,b3,eb4,ab5,eb6] ~@5, ~@4 b3 ~@7", // B Ebm Fm7b5
  AP: "[~@3 [gb3,b3,eb4,db5,gb5,bb5] ~@13 [g3,db4,e4,db5,e5] ~@4 [gb3,b3,eb4,b4,eb5,gb5]@8 ~@2 [gb3,b3,eb4,b4,eb5,gb5] ~@8 db5 d5@4 ~@2, ~@41 [f3,b3,eb4,f5]@6 ~]/2", // Ebm7 Dbdim B Fm7b5
  AQ: "[[bb3,db4,bb4,db5]@7 ~ [bb3,db4,bb4,db5] ~@6 [gb4,db5]@4 [e4,f5]@3 e5@4 ~ [gb3,b3,eb4,db5,gb5,bb5]@8 ~@2 [f3,b3,eb4]@10 ~, f4 ~@13 bb5@12 ~@22, ~@14 gb5@4 ~@4 d4 ~@25, ~@5 [g3,db4]@4 ~@7]/2", // Bbm Gb5 Fmaj7 Ebm7 Fm7b5 Gdim
  AR: "~@5 [eb4,f4,b4,g5]@3 eb5 ~@10 [ab3,d4,ab4,d5,gb5]@4 ~", AS: "~@10 [gb3,bb3,eb4] ~@3 bb2@4 ~ [db3,ab3,bb3]@2 ~@3",
  AT: "eb2@2 ~ [gb3,bb3,eb4] ~@4 eb2@2 [gb3,bb3,eb4] ~@3 bb2@4 ~ [db3,ab3]@2 ~@3, ~@19 bb3 ~@4", // Ebm Db5
  AU: "eb2@2 ~ [gb3,bb3,eb4] ~@4 eb2 ~ [gb3,bb3,eb4] ~@3 bb2@4 ~ [ab3,bb3]@2 ~@3, ~@19 db3@5", // Ebm Absus2
  AV: "eb2 ~@2 [gb3,bb3,eb4] ~@4 eb2 ~ [gb3,bb3,eb4] ~@3 bb2@4 ~ db3 ~@4", // Ebm
  AW: "eb2@2 ~ [gb3,bb3,eb4] ~@4 eb2 ~ [gb3,bb3,eb4] ~@3 b2@4 ~ [b1,a3,b3,d4]@5", // Ebm Bm7
  AX: "e2@2 ~ [g3,b3,e4] ~@4 e2@2 [g3,b3,e4] ~@3 b2@4 ~ [d3,a3,b3,d4]@2 ~@3", // Em Bm7
  AY: "e2@2 ~ [g3,b3,e4] ~@4 e2 ~ [g3,b3,e4] ~@3 b2@4 ~ [a3,b3,d4]@2 ~@3, ~@19 d3@5", // Em Bm7
  AZ: "a2 ~@2 [c4,e4,b4] ~@6 [c4,e4,b4]@2 ~@2 d2@4 ~ [gb2,c4,e4,a4]@3 ~@2, ~@4 a2@3 ~@5", // Cmaj7 Gbm7b5
  BA: "g2 ~@2 [b3,gb4,a4] ~@6 [b3,gb4,a4]@2 ~@2 e2@4 ~ [d4,f4,ab4]@5, ~@8 g2@6 ~@5 b2@3 ~@2", // B7 Ddim
  BB: "g2 ~@2 [b3,gb4,a4] ~@6 [b3,gb4,a4]@2 ~@3 ab4@4 [d4,f4,ab4]@5, ~@8 g2@6 [e2,d4,gb4]@5 ab2@3 ~@2", // B7 Ddim D
  BC: "a2 ~@2 [c4,e4,b4] ~@6 [c4,e4,b4]@2 ~@2 d2@4 ~ [c3,c4,e4,a4]@3 ~@2, ~@4 a2@3 ~@5", // Cmaj7 Am
  BD: "b2 ~@2 [a3,eb4,gb4]@2 ~@5 [a3,eb4,gb4]@2 ~@7 b2@3 ~@2, ~@8 b2@6 a3@7 ~@3, ~@7 gb2@2 ~@3, ~@15 [eb4,g4]@7 ~@2", // Ebdim Eb
  BE: "e2 ~@2 [g3,b3,e4] ~@4 e2 ~ [g3,b3,e4] ~@3 b2@4 ~ [d3,a3,b3,d4]@2 ~@3", // Em Bm7
  BF: "e2@2 ~ [g3,b3,e4] ~@4 e2 ~ [g3,b3] ~@3 b2@4 ~ d3@2 ~@3", // Em G
  BG: "e2 ~@2 [g3,b3,e4] ~@4 e2 ~ [g3,b3,e4] ~@3 b2@4 ~ [d3,a3,b3,d4] ~@4", // Em Bm7
  BH: "e2 ~@2 [g3,b3,e4] ~@4 e2 ~ [g3,b3,e4] ~@3 b2@4 ~ [d3,a3,b3] ~@4", BI: "e2 ~@2 [g3,b3,e4] ~@4 e2 ~ [g3,b3] ~@13",
  BJ: "e2 ~@11",
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@30 A ~@3 B ~@11 C ~@10 D E F ~@2 G ~@3 H ~ I J@8 ~@2 K ~@27 L M L M N O P Q P Q P Q
>`.pickRestart({
  A: "~@4 bb3 ~@19", B: "~@3 ab3 ~@20", C: "~@18 gb3 ~@5", D: "f4@5 ~@3", E: "~ [eb3,gb3,bb3]@7 ~@16",
  F: "[eb3,gb3,f4] ~@5", G: "~@4 c4 ~@19", H: "gb3 ~@3", I: "~@5 [ab3,b3,g4]@3 ~@16", J: "~@19 db4@2 ~@3",
  K: "~@19 [ab3,bb3,db4] ~@4", L: "~@19 d4 ~@4", M: "~@19 d4@2 ~@3", N: "~@10 e4 ~@3 b2@4 ~ [d3,a3,b3,d4] ~@4",
  O: "~@3 [g3,b3,e4] ~@4 e2 ~ [g3,b3,e4] ~@3 b2@4 ~ [d3,a3,b3,d4]@2 ~@3", // Em Bm7
  P: "e2 ~@2 [g3,b3,e4] ~@4 e2 ~ [g3,b3,e4] ~@3 b2@4 ~ [d3,a3,b3,d4] ~@4", // Em Bm7
  Q: "e2@2 ~ [g3,b3,e4] ~@4 e2 ~ [g3,b3,e4] ~@3 b2@4 ~ [d3,a3,b3,d4]@2 ~@3", // Em Bm7
})).s("gm_piano").gain(0.1)

// bass · acoustic bass
const bass = note(`<
  ~ A@4 B C@2 B@2 C@2 D E F E G E H I J B C@2 B@2 C@2 B@2 C B C B C B K L M N M O P Q R B C@2 B@2 C@2 D B C@2 B@2 C@2
  S@2 M N M O P Q T B C@2 B@2 C@2 D U B U V W X@2 W@2 X@2 Y Z AA Z AB Z AA AC AD W AE X W@2 X@2 W X W X W X W AF@2 ~@6
>`.pickRestart({
  A: "eb2@4 ~ eb2 ~@2 eb2@6 bb1@3 ~@2 db2@3 ~@2", B: "eb2@4 ~@4 eb2@6 bb2@3 ~@2 db2@3 ~@2",
  C: "eb2@4 ~@4 eb2@6 bb1@3 ~@2 db2@4 ~", D: "eb2@4 ~@4 eb2@5 ~ bb2@3 ~@2 db2@4 ~",
  E: "ab2@6 ~@2 ab2@4 ab2 ~ db2@3 ~@2 f2@3 ~@2", F: "gb2@6 ~@2 gb2@4 ~@2 eb2@3 ~@2 bb2@2 ~@3",
  G: "gb2@6 ~@2 gb2@4 gb2 ~ eb2@3 ~@2 g2@2 ~@3", H: "gb2@6 ~@2 gb2@4 ~@2 a1@3 ~@2 a2@4 ~",
  I: "ab2@6 ~@2 ab2@4 ab2 ~ db2@3 ~@2 b2@3 ~@2", J: "bb1@6 ~@2 bb1@4 ~@2 f2@4 ~ bb2@2 ~@3",
  K: "eb2@4 ~@4 eb2@6 bb1@3 ~@2 a1@4 ~", L: "ab2@5 ab1@5 b1@4 db2@5 ab2@5", M: "gb2@5 f2@5 e2@4 eb2@5 g2@5",
  N: "ab2@5 bb2@5 b2@4 db3@2 ab2@2 ~ db2@5, ~@9 f2 ~@2", O: "ab2@5 gb2@5 eb2@4 db2@5 f2@5",
  P: "gb2@5 f2@5 e2@4 eb2@5 bb1@5", Q: "ab1@5 bb1@5 b1@4 db2@5 f2@5", R: "f2@5 f1@5 bb1@4 bb2@5 bb1@5",
  S: "[eb2@4 ~@4 eb2@6 bb2 ~ a2 ~ ab2 gb2 ~ eb2 ab1@6 ~ ab1@5 b1@4 db2@5 ab2@5]/2", T: "f2@5 f1@5 b1@4 bb1@5 bb2@5",
  U: "eb2@4 ~@4 eb2@6 bb1@3 ~@2 db2@3 ~@2", V: "eb2@4 ~@4 eb2@6 b1@3 ~@2 b1@3 ~@2",
  W: "e2@4 ~@4 e2@6 b2@3 ~@2 d2@3 ~@2", X: "e2@4 ~@4 e2@6 b1@3 ~@2 d2@3 ~@2", Y: "e2@4 ~@4 e2@6 b2@4 ~ d2@5",
  Z: "a2@6 ~@2 a2@4 a2 ~ d2@3 ~@2 gb2@3 ~@2", AA: "g2@6 ~@2 g2@4 ~@2 e2@3 ~@2 b2@2 ~@3",
  AB: "g2@6 ~@2 g2@4 g2 ~ e2@3 ~@2 ab2@2 ~@3", AC: "a2@6 ~@2 a2@4 a2 ~ d2@3 ~@2 c3@3 ~@2",
  AD: "b1@6 ~@2 b1@4 ~@2 gb2@4 ~ b2@2 ~@3", AE: "e2@4 ~@4 e2@6 b1@3 ~@2 d2@4 ~", AF: "e2@4 ~@15 d2@3 ~@2",
})).s("gm_acoustic_bass").gain(0.21)

// bass · acoustic bass · soft notes
const bass_soft = note("<~@111 A B C D C D C D>".pickRestart({
  A: "~@8 e2@6 b1@3 ~@7", B: "~@8 e2@6 b2@3 ~@7", C: "e2@4 ~@4 e2@6 b1@3 ~@2 d2@3 ~@2",
  D: "e2@4 ~@4 e2@6 b2@3 ~@2 d2@3 ~@2",
})).s("gm_acoustic_bass").gain(0.06)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~ A@11 B C D E F C D G H A@8 ~@4 I@2 J@2 K@4 L M L N O P ~@2 Q R S T ~ U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK
  AL@2 AM AN AO@3 ~@2 AP AQ@7 AR AS AT AU AV AS AT AW AX AQ@11 AY AZ ~@9
>`.pickRestart({
  A: "~@3 [eb4,gb4,bb4] ~@6 [eb4,gb4,bb4]@2 ~@12", B: "~@3 [eb4,gb4,bb4] ~@6 [eb4,gb4,bb4]@2 ~@3 bb4@3 a4@2 bb4@2 b4 ~",
  C: "b4@3 ~ eb5@2 ~@2 b4@2 ab4@3 ~@2 f4@3 gb4@2 ab4@2 a4 ~",
  D: "bb4@3 ~ db5@2 ~@2 bb4 ~ gb4@3 ~ eb4@3 f4@2 gb4@3 g4@2", E: "ab4@3 b4@2 ~@2 ab4@2 f4@2 ~@4 db4@2 eb4@2 f4@3 f4@2",
  F: "gb4@3 f4@2 gb4@2 ~ ab4@2 bb4@3 ~@2 bb4@3 a4@2 bb4@2 bb4@2",
  G: "ab4@3 b4@2 ~@2 ab4@2 f4@3 ~@3 db4@2 f4@2 b4@3 ab4@2", H: "f4@4 ~ bb4@3, ~@13 d4@11, ~@7 gb4@5",
  I: "[[f4,ab4]@11 ~@5]/2", J: "[[eb4,gb4]@7 ~ [f4,ab4]@27 ~@13]/2", K: "[gb4@14 f4@23 ~ e4@9 ~]/2", L: "gb4@7 f4@5",
  M: "~ f4@13 e4@10", N: "g4@7 gb4@5", O: "f4@17 ~@2 [f4,ab4]@3 ~@2", P: "[gb4,bb4]@4 ~ [f4,ab4]@15 ~@4",
  Q: "~@3 [bb3,db4,f4] ~@4 db4 ~ [bb3,db4,f4]@3 [bb3,db4,f4] ~ db4@2 ~@2 db4@3 eb4 ~", // Bbm
  R: "~@3 [bb3,db4,f4] ~@4 [bb3,db4,f4] ~ [bb3,db4,f4]@3 [bb3,db4,f4] ~@5 db4@3 ~@2", // Bbm
  S: "db4@2 ~ [bb3,db4,eb4,f4] ~@4 [bb3,db4,f4] ~ [bb3,db4,f4]@3 [bb3,db4,f4] ~@5 db4@3 ~@2", // Bbm
  T: "db4@2 ~ [bb3,db4,eb4,f4] ~@4 [bb3,db4,f4] ~ [bb3,db4,f4]@3 [bb3,db4,f4] db4@3 ~@2 db4@2 ~ eb4 ~", // Bbm
  U: "f4@2 ~ ab4@2 ~@3 gb4 ~@4 d4 ~ f4@3 d4 eb4@4 ~", V: "~@15 eb4@2 ~@2 bb4@3 ~@2, ~@9 ab4 ~@2, ~@19 a4 ~@4",
  W: "[bb4,eb5]@4 ~ [bb4,eb5]@5 ~@14, a4@2 ~@3 a4 ~@18", X: "eb5@2 ~ a4 ab4@4 ~@2 gb4@3 ~@2 eb4@3 gb4@6, ~ eb5 ~@6",
  Y: "~@15 eb4@2 ~ gb4 ab4@3 ~@2", Z: "ab4 [ab4,a4] ~ gb4 ~ ab4@3 ~@2 gb4@2 ~ eb4@3 ~@2 ab3@3 ~@3, ~@18 a3 ~@5",
  AA: "gb3@3 eb3@3 ~@2 eb3 ~@15", AB: "~@3 eb3@2 ab3@2 ~ bb3 ~ b3@2 eb4 ~ gb4@2 ~ ab4 ~@2 bb4@2 b4@2",
  AC: "~ c5@2 ~ db5@2 ~@2 bb4@2 ab4@2 ~ gb4@2 g4@2 bb4@2 e4@3 d4 ~",
  AD: "[d4,eb4]@2 ~ b3@2 bb3@2 ab3@2 ~ g3@3 ~ gb3@2 ~@3 f3@2 ~ ab3@2", // Ebmaj7
  AE: "~ b3@2 eb4@2 db4@2 ~ b3@2 bb3@3 ~@6 db4 ~ e4 ~ g4", AF: "g4 ab4@4 ~@3 eb4@2 ~@2 b3@2 bb3@3 ~ ab3@2 ~@4",
  AG: "bb4@3 eb4 f4@2 ~ eb4 ~ db4@2 c4@2 ~ b3@9 ~",
  AH: "~@3 bb3@2 ~ bb3 ~ g3@2 ab3@2 bb3 ~ b3@2 ~ db4@2 eb4@2 ~ f4@2, ~@5 b3@2 ~@17",
  AI: "~ g4@2 ab4 ~ a4@2 ~ bb4 ~ b4@2 ~ c5 ~ db5@2 b4 ~@2 db5@2 b4 ~",
  AJ: "bb4@2 ~@2 [e4,e5]@2 [f4,f5]@2 f5 f4 f5 ~ f4 f5 f4 f5 f4 f5 ~ f4 f5 f4 f5 ~", // E F
  AK: "f4 ~ f4 ~ f5 f4 ~ f5 f4 f5 ~ f4 f5 ~ f4 ~@9, ~ f5@2 ~@21",
  AL: "[~@3 [g4,ab4,g5] ab5 ~ [f4,f5]@2 [db4,db5] ~@2 [bb3,bb4]@2 ~ [gb3,gb4]@2 ~ [f3,f4] ~@2 [eb3,eb4]@3 [f3,f4]@14 ~@6 f3 bb3 ~ eb4 f4, ~@20 [d3,d4] ~@27]/2", // Abmaj7 F Db Bb Gb F Eb F …
  AM: "~@3 g4 ab4@4 ~@2 [gb4,bb4]@8 ~ db4@3 ~@2, ~@3 c5@5 ~@16", // Gb
  AN: "db4@3 eb4 ~@4 [ab4,c5]@5 ~ [gb4,bb4]@8 ~@2, ~@8 g4 ~@15", // Ab Gb
  AO: "[[d4,eb4] ~ db4 bb3 ~ a3 ab3 ~ gb3 ~@4 [ab4,c5]@5 ~@2 gb4@10 ~@2 a4@2 ab4 gb4 ~ eb4 ~ db4@2 ~@2 bb3 ~ ab3 ~@2 eb3@19 ~@5, ~@13 g4 ~@5 bb4@10 ~@18 gb3@2 ~@23]/3", // Ebmaj7 Ab
  AP: "~@3 [gb4,bb4] ~@6 [eb4,gb4,bb4]@2 ~@4 g4@8, ~@7 a3@5, ~@5 eb4@3", AQ: "~@3 [e4,g4,b4] ~@6 [e4,g4,b4]@2 ~@12",
  AR: "~@3 [e4,g4,b4] ~@6 [e4,g4,b4]@2 ~@3 b4@3 bb4@2 b4@2 c5 ~", // Em
  AS: "c5@3 ~ e5@2 ~@2 c5@2 a4@3 ~@2 gb4@3 g4@2 a4@2 bb4 ~", AT: "b4@3 ~ d5@2 ~@2 b4 ~ g4@3 ~ e4@3 gb4@2 g4@3 ab4@2",
  AU: "a4@3 c5@2 ~@2 a4@2 gb4@2 ~@4 d4@2 e4@2 gb4@3 gb4@2", AV: "g4@3 gb4@2 g4@2 ~ a4@2 b4@3 ~@2 b4@3 bb4@2 b4@2 b4@2",
  AW: "a4@3 c5@2 ~@2 a4@2 gb4@3 ~@3 d4@2 gb4@2 c5@3 a4@2", AX: "gb4@4 ~ b4@3", AY: "~@3 [g4,b4] ~@6 [e4,g4,b4]@2 ~@12",
  AZ: "~@3 [g4,b4] ~@6 [g4,b4]@2 ~@12", // G
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.6)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~@29 A@3 B ~@63 C ~@11 D E F@9>".pickRestart({
  A: "~@8 f4@2 ~ f4@2 ~ f4@2 ~@6 ab4@2, gb4@6 gb4@6 ~ gb4@6 gb4@5, ~@2 f4@3 f4@3 ~@10 f4@3 f4@3, ~@3 ab4@6 ~ ab4@6 ab4@6 ~@2",
  B: "f4 ~ ab4 f4 ~ gb4 f4 ~@12 [eb4,gb4]@4 ~", C: "~@7 g4@5, ~@13 eb4@11", D: "~@3 e4 ~@20", E: "~@3 e4 ~@6 e4@2 ~@12",
  F: "~@3 [e4,g4,b4] ~@6 [e4,g4,b4]@2 ~@12", // Em
})).s("gm_electric_guitar_jazz").gain(0.07).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@9 B A C A@3 C A@3 D A@7 C A@5 B A C E A@2 C F A@2 G A@3 H A B A C A@5 B A I E A@6 J A@5 B C K A@9 B A C A@3 C A@3
  D A@7 C A@4 L ~@3 L ~@5
>`.pickRestart({
  A: "x ~@2 x", B: "x ~@18 x ~@4", C: "x ~@8 x ~ x", D: "x ~@2 x ~@9 x ~@8 x ~", E: "~@3 x",
  F: "x ~@2 x ~@9 x ~@4 x ~@5", G: "x ~@2 x ~@4 x ~@4 x ~@10", H: "~@4 x ~@4 x ~@2", I: "x ~@10 x",
  J: "x ~@2 x ~@9 x ~@10", K: "x ~@4 x ~ x ~ x ~ x", L: "x",
})).gain(0.1)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@109 [~@3 x] [x ~@2 x]!3 [~@3 x] [x ~@2 x]!4 x>").gain(0.03)

// drums · snare
const snare = s("sd").struct(`<
  A B C D E F G D H I J F K I F L M J N D O I J I D P Q R S F G D H I J F T I F D M J N D U F G D V I J F W F G D H I J
  F X I F L Y J N D Z F G D H I C I AA J C J C F G D H I J F K I F L M J N D AB I J I D P Q R AC J AD AE AD AE Q AF ~@7
>`.pickRestart({
  A: "~@23 x", B: "x ~@7 x ~@8 x ~@3 x!2 ~", C: "~@8 x ~@5 x ~@2 x ~@3 x!2 ~", D: "~@8 x ~@5 x ~@4 x ~ x!2 ~",
  E: "~@8 x ~@4 x ~@3 x ~@3 x!2 ~", F: "~@8 x ~@8 x ~@4 x ~", G: "~@8 x ~@12 x!2 ~", H: "~@3 x ~@6 x ~@6 x ~@3 x!2 ~",
  I: "~@8 x ~@8 x ~@6", J: "~@8 x ~@8 x ~@3 x!2 ~", K: "~@6 x ~ x ~@4 x ~@3 x ~ x ~ x!2 ~", L: "~@8 x ~@5 x ~@6 x!2 ~",
  M: "~@8 x ~@4 x ~@3 x ~ x ~ x ~@2", N: "~@8 x ~@4 x!2 ~@4 x ~ x!2 ~", O: "~@3 x ~@4 x ~@5 x ~ x!2 ~ x ~@2 x ~",
  P: "~@8 x ~@5 x ~@4 x ~@4", Q: "~@4 x ~@2 x ~@4", R: "~@3 x ~@13 x ~@3 x!2 ~",
  S: "~@3 x ~@4 x ~@4 x!2 ~ x!2 ~ x ~ x!3", T: "~@6 x ~ x ~@4 x!2 ~@2 x ~ x!4 ~", U: "~@3 x ~@9 x!11",
  V: "x ~ x!2 ~ x ~@4 x ~@6 x ~@3 x!2 ~", W: "~@6 x ~ x ~@4 x ~@3 x ~ x ~@4", X: "~@6 x ~ x ~@4 x!4 ~ x!5 ~",
  Y: "~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x!3 ~ x!2 ~", Z: "~@3 x ~@4 x ~@5 x!3 ~@2 x ~ x ~@2",
  AA: "~@5 x!2 ~ x ~@4 x ~@3 x ~ x ~ x!2 ~", AB: "~@3 x ~@4 x ~@5 x ~ x!2 ~@4 x ~",
  AC: "~@3 x ~@4 x ~@4 x!2 ~ x!2 ~@4 x ~", AD: "~@4 x ~@2 x ~@3 x", AE: "~@4 x ~@6 x", AF: "~ x ~",
})).gain(0.13)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A ~@5 B ~@5 C ~@2 D ~@4 E ~@9 B ~@5 C ~@9 B ~@5 C ~ B ~@5 C ~@2 D ~@4 E ~ B ~@11 B ~@5 C ~@2 D ~@4 E ~@9 F@4 G@2 H I H
  I H I H
>`.pickRestart({
  A: "~@11 x", B: "~@17 x ~@6", C: "~@5 x ~@18", D: "~@19 x ~@4", E: "~@13 x ~@10", F: "~@17 x ~@3 x ~@2",
  G: "~@17 x ~@3 x!2 ~", H: "~@8 x ~@5 x ~@2 x ~@3 x!2 ~", I: "~@8 x ~@8 x ~@3 x!2 ~",
})).gain(0.03)

// drums · pedal hat
// … 113 more lines

More by Dave Brubeck