Strudelify

Blue Kiss From Brazil

Claude Bolling

KeyE♭ majorTempo84 bpm
0:00/0:00
// Blue Kiss From Brazil — Claude Bolling
// 84 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 151 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · "A.PIANO 2"
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S@2 T R U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL F E F AM@2 AN AO AP AQ AR
  AS AT AU AV@2 AW AX AY AZ BA BB BC BD AU BE BF BG BH BI BJ BK BL BM BN BO AM@2 AN AO AP AQ AR AS AT AU AV@2 AW AX AY
  AZ BA BB BC BD AU BE BF BG BH BI BJ BK BL BM BN BO BP F E F BQ BR BS BT BU BV BW BX Q R BY@2 Q R BZ CA CB CC CD CE CF
  CG CH CI CJ CK CL@2 CM CN CO CP CQ CR CO CP CS CT CU CV
>`.pickRestart({
  A: "[eb2,bb2]@3 ~@5 [eb2,bb2] ~@5 [eb2,bb2] ~@5 [eb2,bb2] ~@3 [eb2,bb2] ~@3 [eb2,bb2] ~@3", // Eb5
  B: "[bb1,bb2]@3 ~@5 [bb1,bb2] ~@5 [bb1,bb2] ~@3 [bb1,bb2] ~@5 [bb1,bb2] ~@3 [bb1,bb2] ~@3", // Bb
  C: "[eb2,bb2] ~@5 [eb2,bb2] ~@5 [eb2,bb2] ~@5 [eb2,bb2] ~@3 [eb2,bb2] ~@3 [eb2,bb2] ~@5", // Eb5
  D: "[eb2,bb2] ~@5 [eb2,bb2] ~@5 [eb2,bb2] ~@3 [bb1,bb2] ~@3 [bb1,bb2] ~@3 [bb1,bb2] ~@3 [bb1,bb2] ~@3", // Eb5 Bb
  E: "~@6 eb2 ~ bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  F: "~@6 e2 ~ b2 ~ db3@3 ~ d3@3 ~ db3@3 ~ b2 ~ db3@3 ~ b2@3 ~",
  G: "~@6 eb2 ~ bb2 ~ c3@3 ~ db3 ~ db3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  H: "~@6 e2 ~ b2 ~ db3@3 ~ d3 ~ d3 ~ db3@3 ~ b2 ~ db3@3 ~ b2@3 ~",
  I: "~@2 [eb3,g3,bb3,d4] ~@9 [eb3,g3,bb3,d4]@3 ~ [eb3,g3,bb3,d4]@15 ~", // Ebmaj7
  J: "~@2 [ab3,c4,d4,gb4] ~@9 [ab3,c4,d4,gb4]@3 ~ [ab3,c4,d4,gb4]@15 ~", // Ab7
  K: "~@2 [g3,bb3,db4,f4] ~@9 [g3,bb3,db4,f4]@3 ~ [g3,bb3,db4,f4]@15 ~", // Gm7b5
  L: "~@2 [c3,bb3,e4] ~@15 c3@2 db3@2 b2@2 c3@2 ab3@2 e3@2 g3@2", M: "~@8 f2@7 ~ c3@16, f3",
  N: "[f2,db3]@23 ~ [f2,db3]@7 ~", O: "[f2,d3]@15 ~ [f2,d3]@15 ~",
  P: "~@10 [g3,bb3,d4,f4]@5 ~ [f3,a3,c4,e4]@7 ~ [f3,ab3,b3,eb4]@7 ~", Q: "~@4 [eb3,g3,a3,d4]@27 ~",
  R: "f2 ~ c3 ~ f3 ~ g3 ~ ab3 ~ bb3 ~ c4 ~ eb4 ~ d4@15 ~", S: "~@2 [c3,eb3,g3] ~@5 [c3,eb3,g3]@7 ~ [ab2,c3,gb3]@15 ~",
  T: "g3 ab3 a3 bb3, c3@15 ~ c3@15 ~", U: "~@2 [g3,bb3,d4,f4]@5 ~@9 [c3,bb3,e4]@15 ~",
  V: "~@2 [f3,ab3,c4,eb4]@5 ~@9 [bb2,ab3,d4]@15 ~", // Fm7 Bb7
  W: "~@2 [eb3,g3,bb3,d4] ~@5 [eb3,g3,bb3,d4]@3 ~@5 [eb3,g3,bb3,d4]@15 ~", // Ebmaj7
  X: "~@2 [ab3,c4,d4,gb4] ~@5 [ab3,c4,d4,gb4]@3 ~@5 [ab3,c4,d4,gb4]@15 ~", // Ab7
  Y: "~@2 [g3,bb3,db4,f4] ~@5 [g3,bb3,db4,f4]@3 ~@5 [g3,bb3,db4,f4]@15 ~", // Gm7b5
  Z: "~@2 [g3,bb3,c4,e4] ~@5 [g3,bb3,c4,e4]@7 ~@3 c3@2 db3@2 b2@2 c3@2 ab3@2 e3@2 g3@2", AA: "~ c4@3, f3@31 ~",
  AB: "~@8 db4@23 ~, f3@31 ~", AC: "~@8 d4@23 ~, f3@31 ~",
  AD: "~@10 [g3,bb3,d4,f4]@5 ~ [ab3,bb3,db4,f4]@7 ~ [g3,bb3,db4,e4]@7 ~", // Gm7 Bbm7 Gdim
  AE: "~@2 [g3,ab3,c4,eb4]@13 ~ [g3,ab3,c4,eb4]@3 ~@13", // Abmaj7
  AF: "[f3,ab3,b3,eb4]@3 ~@3 [f3,ab3,b3,eb4]@3 ~@3 [f3,ab3,b3,eb4]@3 ~@3 [f3,ab3,b3,eb4]@3 ~@3 [f3,ab3,b3,eb4]@3 ~@5", // Fm7b5
  AG: "~@2 [eb3,g3,bb3,d4]@13 ~ [eb3,g3,bb3,d4]@3 ~@13", // Ebmaj7
  AH: "[eb3,gb3,a3,d4]@3 ~@3 [eb3,gb3,a3,d4]@3 ~@3 [eb3,gb3,a3,d4]@3 ~@3 [eb3,gb3,a3,d4]@3 ~@3 [eb3,gb3,a3,d4]@3 ~@5", // D
  AI: "~@2 [f2,c3,ab3] ~@9 [f2,c3,ab3]@3 ~ [f2,c3,ab3]@15 ~", // Fm
  AJ: "~@2 [ab2,gb3,b3] ~@9 [ab2,gb3,b3]@3 ~ [ab2,gb3,b3]@15 ~", // Abm7
  AK: "~@2 [g2,bb3] ~@5 [gb2,a3]@7 ~ [f2,ab3]@7 ~ [bb2,ab3]@7 ~", // Gm Gbm Fm Bb7
  AL: "[eb3,g3,bb3]@3 ~@3 eb2 ~ bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~", // Eb
  AM: "[bb2@3 ~@3 ab2 ~ g2 ~ f2@3 ~ eb2@3 ~ db2@3 ~ c2@3 ~ b1@3 ~ bb1@17 ~ bb1@15 ~]/2",
  AN: "[g2,f3]@15 ~ [g2,f3]@15 ~", AO: "[c2,e3]@31 ~",
  AP: "[f2,ab3]@3 ~@5 [f2,ab3]@3 ~@5 [f2,ab3]@3 ~@5 [f2,ab3]@3 ~@5", // Fm
  AQ: "[db3,f3,ab3]@3 ~@5 [db3,f3,ab3]@3 ~@5 [db3,f3,ab3]@3 ~@5 [db3,f3,ab3]@3 ~@5", AR: "[bb2,d3,ab3]@3 ~@29",
  AS: "[bb2,eb3,g3]@15 ~ d3@7 ~ g2@7 ~", AT: "~@8 g2@7 ~@3 g3 ~ a3 ~ b3 ~@9, eb3@15 ~ c2@15 ~", AU: "f2@31 ~",
  AV: "[c3,eb3,g3]@3 ~@13 [ab2,c3,gb3]@15 ~", // Cm Ab7
  AW: "~@2 c2 ~@5 g3 ~ gb3 ~ f3 ~ eb3 ~ c3 ~ eb3 ~ f3 ~ gb3 ~ f3 ~ eb3 ~ c3 ~ d3 ~",
  AX: "eb3 ~ f3 ~ g3 ~ bb3 ~ f3 ~ ab3 ~ c4 ~ eb4 ~ [c3,ab3]@15 ~, f2@31 ~", AY: "[g2,d3,bb3]@15 ~ [c3,e3,ab3]@15 ~",
  AZ: "[f2,c3,ab3]@15 ~ [bb2,d3,ab3]@15 ~", BA: "[eb2,bb2,g3]@3 ~@29", BB: "[bb2,d3,ab3]@31 ~", BC: "[g2,f3]@31 ~",
  BD: "g3@2 ~@2 bb3 ~ ab3 ~ g3 ~ bb3 ~ f3 ~ bb3 ~ e3 ~ bb3 ~ db3 ~ bb3 ~ c3 ~ bb2 ~ ab2 ~ g2 ~, [c2,e3]@15 ~@17, ~ ab3 ~@14, ~@3 a3@2 ~@27", // C
  BE: "~@2 db2@3 ~@3 [ab3,db4,f4]@3 ~@5 db2@3 ~@3 [ab3,d4,f4] ~@9", // Db Ddim
  BF: "[bb2,d3,ab3]@3 ~@3 [bb2,d3,ab3]@3 ~@3 [bb2,d3,ab3]@3 ~@3 [bb2,d3,ab3]@3 ~@3 [bb2,d3,ab3]@3 ~ [bb2,d3,ab3]@3 ~", // Bb7
  BG: "[bb2,eb3,g3]@3 ~@13 eb2@15 ~", BH: "~@2 [ab2,c3,eb3,g3]@3 ~@27",
  BI: "[ab2,f3,b3]@15 ~ [ab2,f3,b3]@3 ~@5 [ab2,f3,b3]@7 ~", BJ: "[g2,d3,bb3]@3 ~@29",
  BK: "[gb2,eb3,a3]@15 ~ [gb2,eb3,a3]@3 ~@3 [gb2,eb3,a3]@3 ~@3 [gb2,eb3,a3]@3 ~", // Ebdim
  BL: "[f2,c3,ab3]@15 ~@3 [f2,c3,ab3] ~@3 [f2,c3,ab3] ~@9", BM: "[ab2,gb3,b3]@15 ~ [ab2,gb3,b3]@3 ~@13",
  BN: "[g2,f3]@3 ~@5 [gb2,e3]@3 ~@5 [f2,eb3]@3 ~@5 [e2,d3]@3 ~@5", BO: "[eb2,d3]@3 ~@29",
  BP: "~ eb3@3 ~@2 eb2 ~ bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~, [g3,bb3]@3 ~@29", // Gm
  BQ: "[eb2,g3]@7 ~ [bb3,eb4,g4]@3 ~@5 [bb3,eb4,g4]@3 ~@3 [bb3,eb4,g4]@5 ~ [eb2,g3]@3 ~", // Eb
  BR: "[d2,gb3]@7 ~ [ab3,d4,gb4]@3 ~@3 [ab3,d4,gb4]@9 ~ [d2,gb3]@7 ~", // D Abm7b5 D
  BS: "[db2,f3]@7 ~ [g3,db4,f4]@3 ~@5 [g3,db4,f4]@3 ~@3 [g3,db4,f4]@5 ~ [db2,f3]@3 ~", // Db Gm7b5 Db
  BT: "[c2,e3]@7 ~ [g3,bb3,c4,e4]@3 ~@3 [g3,bb3,c4,e4]@9 ~ [c2,c3] ~ [db2,db3] ~ [d2,d3] ~ [e2,e3] ~", // C C7 C Db D E
  BU: "[f2,f3]@7 ~ [ab3,c4,f4]@3 ~@5 [ab3,c4,f4]@3 ~@3 [ab3,c4,f4]@3 ~ [e2,e3] ~ [eb2,eb3] ~ [d2,d3] ~", // F Fm E Eb D
  BV: "[db2,db3]@7 ~ [ab3,db4,f4]@3 ~@3 [ab3,db4,f4]@7 ~ [db2,db3]@3 ~ [c2,c3]@3 ~ [b1,b2] ~", // Db C B
  BW: "[bb1,bb2]@7 ~ [ab3,d4,f4]@3 ~@5 [ab3,d4,f4]@3 ~@3 [ab3,d4,f4]@9 ~", // Bb Ddim
  BX: "[eb2,bb2]@7 ~@3 [g3,bb3,d4,f4]@5 ~ [f3,a3,c4,e4]@5 ~ [f3,ab3,b3,eb4]@9 ~", // Eb5 Gm7 Fmaj7 Fm7b5
  BY: "~@4 [c3,eb3,g3]@3 ~@5 [c3,eb3,g3]@3 ~@3 [ab2,gb3]@13 ~", BZ: "~@2 [g2,d3,bb3] ~@13 [c3,e3,bb3]@15 ~",
  CA: "~@2 [f2,c3,ab3] ~@13 [bb2,d3,ab3]@15 ~", // Fm Bb7
  CB: "[bb3,eb4,g4]@3 ~@5 [bb3,eb4,g4]@3 ~@3 [bb3,eb4,g4]@7 ~ [bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@3 ~", // Eb
  CC: "[ab3,d4,gb4]@3 ~@5 [ab3,d4,gb4]@3 ~@3 [ab3,d4,gb4]@7 ~ [ab3,d4,gb4]@5 ~ [ab3,d4,gb4]@3 ~", // Abm7b5
  CD: "[g3,db4,f4]@3 ~@5 [g3,db4,f4]@3 ~@3 [g3,db4,f4]@7 ~ [g3,db4,f4]@5 ~ [g3,db4,f4]@3 ~", // Gm7b5
  CE: "[c3,bb3,e4]@3 ~@5 [c3,bb3,e4]@3 ~@3 [c3,bb3,e4] ~@3 c3 ~ db3 ~ b2 ~ c3 ~ ab3 ~ e3 ~ g3 ~", // C7
  CF: "f3@7 ~ c3@7 ~ f2@7 ~ c3@7 ~", CG: "db3@11 ~@3 [ab3,db4,f4]@17 ~", CH: "d3@11 ~@3 [ab3,d4,f4]@17 ~",
  CI: "~@16 [eb3,d4] ~ db4 ~@3 [eb3,g3,db4]@9 ~", // Ebmaj7 Eb7
  CJ: "[ab2,eb3,c4] ~@5 [ab2,eb3,c4]@5 ~@2 ab2@3 [ab2,eb3,c4]@3 ~ [ab2,eb3,c4]@3 ~ [ab2,eb3,c4] ~ [ab2,eb3,c4] ~@3 [ab2,eb3,b3] ~, ~@12 [eb3,c4]@3 ~@17", // Ab Abm Cm
  CK: "~@4 [ab2,f3,b3]@7 ~ [ab2,eb3,b3] ~ [ab2,eb3,b3]@17 ~", // Fdim Abm
  CL: "[[g2,eb3,bb3] ~@5 [g2,eb3,bb3]@5 ~ [g2,eb3,bb3]@3 ~ [g2,eb3,bb3]@3 ~ [g2,eb3,bb3]@3 ~ [g2,eb3,bb3] ~ [g2,eb3,bb3] ~@4 [gb2,eb3,a3]@5 ~ [gb2,eb3,a3]@3 ~@3 [gb2,eb3,a3]@5 ~ [gb2,eb3,a3]@3 ~@3 [gb2,eb3,a3]@5 ~ [gb2,eb3,a3]@3]/2", // Eb Ebdim
  CM: "~ [f2,eb3,ab3]@3 ~@5 [f2,eb3,ab3]@3 ~@3 [f2,eb3,ab3]@7 ~ [f2,eb3,ab3]@5 ~ [f2,eb3,ab3]@3", // Fm7
  CN: "~ [ab2,gb3,b3]@3 ~@5 [ab2,gb3,b3]@3 ~@3 [ab2,gb3,b3]@7 ~ [ab2,gb3,b3]@5 ~ [ab2,gb3,b3]@3", // Abm7
  CO: "~ [g2,bb3]@7 ~ [gb2,a3]@7 ~ [f2,ab3]@7 ~ [bb2,d3,ab3]@7", CP: "~ [eb2,bb2,g3]@3 ~@28",
  CQ: "~ [f2,c3,ab3]@3 ~@5 [f2,c3,ab3]@3 ~@3 [f2,c3,ab3]@7 ~ [f2,c3,ab3]@5 ~ [f2,c3,ab3]@3", // Fm
  CR: "~ [ab2,eb3,gb3,b3]@3 ~@5 [ab2,eb3,gb3,b3]@3 ~@3 [ab2,eb3,gb3,b3]@7 ~ [ab2,eb3,gb3,b3]@5 ~ [ab2,eb3,gb3,b3]@3", // Abm7
  CS: "~ f3@3 ~@5 f3@3 ~@3 f3@7 ~ f3@5 ~ f3@3", CT: "~ ab3@3 ~@5 ab3@3 ~@3 ab3@7 ~ ab3@5 ~ ab3@3",
  CU: "~ g3@7 ~ f3@7 ~ f3@7 ~ bb3@7", CV: "~ eb3 f3 g3 ab3 [eb3,bb3]@27",
})).s("gm_piano").gain(0.39).pan(0.2)

// bass · fretless bass · "ACOU BASS"
const bass = note(`<
  ~@4 A B C D E F G H I J K L H M N@2 H M O P E F G H I J K Q R S T U V W X Y B Y B Z AA AB AC AD AB AE AF AC AD AG@2 AC
  AD AH AI Z AA AB AC AD AB AE AJ AK AL AM AN AD AO AP Z@2 AA AB AC AD AB AE AF AC AD AG@2 AC AD AH AI Z AA AB AC AD AB
  AE AJ AK AL AM AN AD AO AP Z AQ B Y B AR AS AT AU AV AW AX L H M N@2 H M O P E F AY H I J K Q AZ BA BB@2 BC BD BE BF
  BC BD BE BF BC BD BE BG
>`.pickRestart({
  A: "~@6 eb2 ~ bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  B: "~@6 e2 ~ b2 ~ db3@3 ~ d3@3 ~ db3@3 ~ b2 ~ db3@3 ~ b2@3 ~",
  C: "~@6 eb2 ~ bb2 ~ c3@3 ~ db3 ~ db3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  D: "~@6 e2 ~ b2 ~ db3@3 ~ d3 ~ d3 ~ db3@3 ~ b2 ~ db3@3 ~ b2@3 ~", E: "eb2@5 ~ bb2 ~ eb3@7 ~ eb2@5 ~ bb2 ~ eb3@7 ~",
  F: "d2@5 ~ bb2 ~ d3@7 ~ d2@5 ~ bb2 ~ d3@7 ~", G: "db2@3 ~ g2 ~ db3@7 ~@3 db2@3 ~ g2 ~ db3@7 ~@3",
  H: "c2@5 ~ g2 ~ c3@7 ~ c2@5 ~ g2 ~ c3@7 ~", I: "f2@5 ~ c3 ~ f3@7 ~ f2@5 ~ c3 ~ f3@7 ~",
  J: "db2@5 ~ ab2 ~ db3@7 ~ db2@5 ~ ab2 ~ db3@7 ~", K: "bb1@5 ~ f2 ~ bb2@7 ~ bb1@5 ~ f2 ~ bb2@7 ~",
  L: "eb2@5 ~ g2 ~ bb2@3 ~ eb2@3 ~ d2@7 ~ g2@7 ~", M: "f1@5 ~ c2 ~ f2@7 ~ f1@5 ~ c2 ~ f2@7 ~",
  N: "c2@5 ~ g2 ~ c3@3 ~ g2@3 ~ ab1@5 ~ eb2 ~ ab2@3 ~ eb2@3 ~", O: "g1@5 ~ d2 ~ g2@7 ~ c2@5 ~ g2 ~ c3@7 ~",
  P: "f1@5 ~ c2 ~ f2@7 ~ bb1@5 ~ f2 ~ bb2@7 ~", Q: "eb2@5 ~ g2 ~ bb2@3 ~ eb2@3 ~ bb1@7 ~ eb2@7 ~",
  R: "ab1@5 ~ eb2 ~ ab2@7 ~ ab1@5 ~ eb2 ~ ab2@7 ~", S: "ab1@5 ~ eb2 ~ ab2@7 ~ db2@5 ~ ab2 ~ db3@7 ~",
  T: "g2@5 ~ eb3 ~ g2@7 ~ g2@5 ~ eb3 ~ g2@7 ~", U: "gb2@5 ~ eb3 ~ gb2@7 ~ gb2@5 ~ eb3 ~ gb2@7 ~",
  V: "f2@5 ~ c3 ~ f2@7 ~ f2@5 ~ c3 ~ f2@7 ~", W: "ab2@5 ~ eb3 ~ ab2@7 ~ ab2@5 ~ eb3 ~ ab2@7 ~",
  X: "g2@5 ~ g2 ~ gb2@5 ~ gb2 ~ f2@5 ~ f2 ~ bb2@5 ~ bb2 ~",
  Y: "eb2@3 ~@3 eb2 ~ bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~", Z: "eb2@3 ~@29", AA: "d2@3 ~@29",
  AB: "db2@3 ~@29", AC: "c2@3 ~@29", AD: "f2@3 ~@29", AE: "bb1@3 ~@29", AF: "eb2@3 ~@13 d2@3 ~@5 g2@3 ~@5",
  AG: "c2@3 ~@13 ab1@3 ~@13", AH: "g2@3 ~@13 c2@3 ~@13", AI: "f2@3 ~@13 bb1@3 ~@13",
  AJ: "eb2@3 ~@13 bb2@3 ~@5 eb2@3 ~@5", AK: "ab1@3 ~@29", AL: "ab2@3 ~@13 db2@3 ~@13", AM: "g2@3 ~@29",
  AN: "gb2@3 ~@29", AO: "ab2@3 ~@29", AP: "g2@3 ~@5 gb2@3 ~@5 f2@3 ~@5 bb1@3 ~@5",
  AQ: "~ eb2@3 ~@2 eb2 ~ bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  AR: "eb2@5 ~ bb2 ~ eb3@7 ~ eb2@5 ~ bb2 ~ eb3@3 ~ eb2@3 ~", AS: "d2@5 ~ bb2 ~ d3@7 ~ bb2@5 ~ gb2 ~ d2@7 ~",
  AT: "db2@5 ~ g2 ~ db3@7 ~ db2@5 ~ g2 ~ db3@3 ~ db2@3 ~", AU: "c2@5 ~ g2 ~ c3@7 ~ g2@5 ~ e2 ~ c2@7 ~",
  AV: "f2@5 ~ c3 ~ f3@7 ~ f2@5 ~ f2@3 ~ e2 ~ eb2 ~ d2 ~", AW: "db2@5 ~ ab2 ~ db3@7 ~ db2@5 ~ db2@3 ~ c2 ~ b1@3 ~",
  AX: "bb1@5 ~ f2 ~ bb2@7 ~ bb1@5 ~ f2 ~ bb2@3 ~ bb1@3 ~", AY: "db2@5 ~ g2 ~ db3@7 ~ db2@5 ~ g2 ~ db3@7 ~",
  AZ: "~ ab2@3 ~@2 ab2@5 ~@2 ab2@3 ab2@3 ~ ab2@3 ~ ab2 ~ ab2 ~@3 ab2 ~",
  BA: "~@4 db2@7 ~ ab2 ~ db2@5 ~ ab2@3 ~ f2@3 ~ db2@3 ~",
  BB: "[~ g2@3 ~@2 g2@5 ~ g2@3 ~@2 g2@3 g2@3 ~ g2 ~ g2 ~@4 gb2@5 ~ gb2@3 ~@3 gb2@5 ~ gb2@3 ~@3 gb2@5 ~ gb2@3]/2",
  BC: "~ f2@5 ~ c3 ~ f2@7 ~ f2@5 ~ c3 ~ f2@7", BD: "~ ab2@5 ~ eb3 ~ ab2@7 ~ ab2@5 ~ eb3 ~ ab2@7",
  BE: "~ g2@5 ~ g2 ~ gb2@5 ~ gb2 ~ f2@5 ~ f2 ~ bb1@5 ~ bb2", BF: "~ eb2@3 ~@28", BG: "~@5 eb2@27",
})).s("gm_fretless_bass").gain(0.24).pan(0.2)

// other · drawbar organ · "ORGAN"
const drawbar_organ = note("<~@4 A B C D ~@31 A B A B ~@64 E F E F ~@40>".pickRestart({
  A: "~@6 eb2 ~ bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  B: "~@6 e2 ~ b2 ~ db3@3 ~ d3@3 ~ db3@3 ~ b2 ~ db3@3 ~ b2@3 ~",
  C: "~@6 eb2 ~ bb2 ~ c3@3 ~ db3 ~ db3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  D: "~@6 e2 ~ b2 ~ db3@3 ~ d3 ~ d3 ~ db3@3 ~ b2 ~ db3@3 ~ b2@3 ~",
  E: "~@7 eb2 bb2 ~ c3@3 ~ db3@3 ~ c3@3 ~ bb2@3 ~ c3 ~ bb2@3 ~",
  F: "~@7 e2 ~ b2 db3@3 ~ d3@3 ~ db3@3 ~ b2 ~@2 db3@3 b2@3 ~",
})).s("gm_drawbar_organ").gain(0.23).pan(0)

// chords · electric guitar jazz · "A.GUITAR"
const electric_guitar_jazz = note(`<
  ~@43 A B C D E F G H I E J@2 I E K L A B C D E F G M N O A P Q R S A@2 B C D E F G H I E J@2 I E K L A B T U V W X Y Z
  AA AB AC AD AE AF AB ~@44
>`.pickRestart({
  A: "[g3,bb3,eb4]@3 ~@29", B: "[gb3,ab3,bb3,d4]@3 ~@29", C: "[g3,b3,db4,f4]@3 ~@29", D: "[g3,bb3,c4,e4]@3 ~@29",
  E: "[ab3,c4,f4]@3 ~@29", F: "[ab3,db4,f4]@3 ~@29", G: "[ab3,bb3,d4,f4]@3 ~@29",
  H: "[g3,bb3,eb4]@3 ~@13 [f3,a3,c4,d4]@3 ~@5 [g3,b3,d4,f4]@3 ~@5", I: "[g3,c4,eb4]@3 ~@29",
  J: "[g3,c4,eb4]@3 ~@13 [gb3,ab3,c4,eb4]@3 ~@13", K: "[g3,bb3,d4,f4]@3 ~@13 [g3,bb3,c4,e4]@3 ~@13",
  L: "[ab3,c4,eb4,f4]@3 ~@13 [ab3,bb3,d4,f4]@3 ~@13", // Fm7 Bb7
  M: "[g3,bb3,eb4]@3 ~@13 [ab3,bb3,db4,f4]@3 ~@5 [g3,bb3,db4,eb4]@3 ~@5", N: "[ab3,c4,eb4]@3 ~@29",
  O: "[ab3,b3,eb4,f4]@3 ~@13 [f3,ab3,b3,eb4]@3 ~@13", P: "[gb3,a3,c4,eb4]@3 ~@29", Q: "[ab3,c4,eb4,f4]@3 ~@29",
  R: "[gb3,ab3,b3,eb4]@3 ~@29", // Abm7
  S: "[g3,bb3,d4,f4]@3 ~@5 [gb3,a3,db4,e4]@3 ~@5 [ab3,c4,eb4,f4]@3 ~@5 [ab3,bb3,d4,f4]@3 ~@5", // Gm7 Gbm7 Fm7 Bb7
  T: "~ [g3,b3,db4,f4]@3 ~@28", U: "~ [g3,bb3,c4,e4]@3 ~@28", V: "~ ab3@3 ~@28, [c4,f4]@3 ~@29",
  W: "~ [ab3,f4]@3 ~@28, db4@3 ~@29", X: "~ [ab3,bb3,d4,f4]@3 ~@28",
  Y: "~ [g3,bb3,eb4]@3 ~@13 [ab3,db4,f4]@3 ~@5 [g3,eb4]@3 ~@4, ~@16 bb3@3 ~@5 [bb3,db4]@3 ~@5", // Eb Db Cm Bbm
  Z: "~ [ab3,eb4]@3 ~@28, c4@3 ~@29", AA: "~ [ab3,b3,eb4,f4]@3 ~@13 [f3,ab3,b3,eb4]@3 ~@12",
  AB: "~ [g3,bb3,eb4]@3 ~@28", AC: "~ [gb3,a3,c4,eb4]@3 ~@28", AD: "~ [ab3,c4,eb4,f4]@3 ~@28",
  AE: "~ [gb3,ab3,b3,eb4]@3 ~@28", // Abm7
  AF: "~ [g3,bb3,d4,f4]@3 ~@5 [gb3,db4,e4]@3 ~@5 [ab3,c4,eb4,f4]@3 ~@5 [ab3,bb3,d4,f4]@3 ~@4, ~@8 a3@3 ~@21", // Gm7 Gb7 Fm7 Bb7
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.1)

// drums · snare
const snare = s("sd").struct(`<
  A@59 B@4 A@28 B@4 A@3 C A C A@6 C A C@2 B@4 A@4 B@8 C@3 A B@4 D E F G H@3 I H@3 J H@3 ~
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3", B: "x ~@2 x ~@5 x ~@2 x ~@3", C: "~ x ~@4 x ~@5 x ~@5 x ~@5 x ~@7",
  D: "~ x ~@5 x ~@5 x ~@3 x ~@3 x ~@2 x ~@2 x ~@3 x", E: "~@3 x ~@4", F: "~ x ~@5 x ~@5 x ~@3 x ~@3 x ~@3 x ~ x ~@3 x",
  G: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@2", H: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@6", I: "~ x ~@13 x ~@13 x ~@2",
  J: "~@9 x ~@15 x ~@6",
})).gain(0.06).pan(0.1)

// drums · hihat
const hihat = s("hh").struct("<A@107 B A@3 C A@2 C A@2 C A@17 ~ D ~@2 E@3 F E@3 ~ E@3 ~>".pickRestart({
  A: "x!16", B: "~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
  C: "x ~ x ~ x ~ x ~@2 x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", D: "~@8 x!8",
  E: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  F: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
})).gain(0.06).pan(0.1)

// drums · low tom
const low_tom = s("lt").struct("<~@142 [~@7 x ~@15 x ~@8] ~@3 [~@7 x ~@3 x ~@11 x ~@3 x ~@4] ~@3 [~@5 x ~@26]>")
  .gain(0.12).pan(0.1)

// drums · mid tom
const mid_tom = s("mt").struct("<~@142 [~@3 x ~@9 x ~@3 x ~@9 x ~@4] ~@8>").gain(0.12).pan(0.1)

// drums · crash
const crash = s("cr").struct("<~@146 [~ x ~@7 x ~@7 x ~@7 x ~@6] ~@3 [~@5 x ~@11 x ~@14]>").gain(0.12).pan(0.1)

// drums · high tom
const high_tom = s("ht").struct(`<
  A@97 B@2 A B@6 A B@4 C D C D C D C B A@6 E@2 F@3 G A@4 H I J K L@3 M L@3 N L@3 ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", B: "~ x ~@4 x ~ x ~@7 x ~@5 x ~ x ~@7", C: "x ~@5 x ~@2 x ~@7 x ~@5 x!2 ~@7",
  D: "x ~@5 x ~@2 x ~@6 x ~@5 x ~ x ~@7", E: "x ~@5 x ~ x ~@8 x ~@4 x ~ x ~@7", F: "~ x ~@4 x ~@2 x ~@6 x ~@6 x!2 ~@7",
  G: "~ x ~@4 x ~@2 x ~@6 x ~@5 x ~ x ~@7", H: "~ x ~@5 x ~@5 x ~@3 x ~@7 x ~@6", I: "~@5 x ~@10 x ~@5 x ~ x ~@7",
  J: "~ x ~@5 x ~@5 x ~@3 x ~@3 x ~@3 x ~ x ~@3 x", K: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@2",
// … 11 more lines

More by Claude Bolling