Strudelify

Your Smiling Face

James Taylor

KeyA♭ majorTempo144 bpm
0:00/0:00
// Your Smiling Face — Taylor James
// 144 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/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.

// bass · electric bass finger · "bass"
const bass = note(`<
  A B C D E F G H I J K L M N G O P Q K L R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AE AM AN AO AP AQ AR AS
  AT AR 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 BQ BY BZ CA CB BN CC
  CD CE CF CG CH CI CJ CK BX CL CM CN CO CP CQ BW BX CR CS CT CU CV CW CX
>`.pickRestart({
  A: "~@2 gb2@2 ab2 ~ a2 ~@3 bb2 ~@3 b2 ~", B: "b1@5 ~ b1 ~ b1@4 ~@2 b1 ~", C: "b1@4 ~@2 b1 ~ b1@4 ~@2 b1 ~",
  D: "b2@4 ~@2 b2@3 ~ b2 ~@3 b2 ~", E: "b1@4 ~@2 b1 ~ b2@4 ~@2 b2 ~", F: "e2@5 ~ e2 ~ eb2@5 ~ eb2 ~",
  G: "db2@5 ~ db2 ~ b1@4 ~@2 b1 ~", H: "a1@5 ~ a1 ~ ab1@5 ~ ab1 ~", I: "gb1@5 ~ b1@6 ~@2 d2 eb2",
  J: "e2@4 ~@2 e2@8 eb2 ~", K: "db2@5 ~ db2@6 e2 ~ f2 ~", L: "gb2@4 ~@2 gb2 ~ gb2@4 ~@2 gb2 ~",
  M: "b1@4 ~@2 b1@6 db2 ~ eb2 ~", N: "e2@4 ~@2 e2 ~ eb2@5 ~ eb2 ~", O: "a1@5 ~ a1 ~ ab1@4 ~@2 ab1 ~",
  P: "gb1@5 ~ b1@6 d2 ~ eb2 ~", Q: "e2@4 ~@2 e2@6 ~@2 e2 ~", R: "b1@5 ~@2 b1 ~@2 c2@3 ~ c2 ~",
  S: "db2@5 ~ db2 ~ ab2@5 ~ ab2 ~", T: "a2@5 ~ a2 ~ bb2@5 ~ bb2 ~", U: "b2@4 ~@2 b2 ~ c3@4 ~@2 c3 ~",
  V: "db3@5 ~ db3 ~ b2@4 ~@2 b2 ~", W: "a2@6 a2@7 ~ a2 ~", X: "ab2@4 ~@2 ab2 ~ ab2@5 ~ ab2 ~",
  Y: "gb2@5 ~ gb2 ~ ab2@4 ~@2 ab2 ~", Z: "a2@5 ~ a2@3 ~ a2 ~ db2 ~ c2 ~", AA: "b1@4 ~@2 b1 ~ b1@5 ~ b1@2",
  AB: "ab1@4 ~@2 ab1 ~ ab1@4 ~@2 ab1 ~", AC: "db2@5 ~ db2 ~ db2@3 ~ db2 ~ ab1 ~", AD: "gb2@5 ~ gb2 ~ f2@5 ~ f2 ~",
  AE: "eb2@5 ~ eb2 ~ db2@5 ~ db2 ~", AF: "b1@5 ~ b1 ~ bb1@5 ~ bb1 ~", AG: "ab1@4 ~@2 ab1 ~ db2@2 ab1 ~ e2 ~ f2 ~",
  AH: "gb2@2 ~ gb2@3 f2@2", AI: "eb2@5 ~ eb2@6 bb1@2 a1 ~", AJ: "ab1@5 ~ ab1@5 ~ ab1@4",
  AK: "db2@4 ~@2 db2 ~@3 db2@2 f2@2 db2 ~", AL: "gb2@4 ~@2 gb2 ~ f2@5 ~ f2 ~", AM: "b1@4 ~@2 b1 ~ bb1@4 ~@2 bb1 ~",
  AN: "ab1@4 ~@2 ab1 ~@5 ab1 ~ f2@2, ~@4 db2@3 ~", AO: "gb2@5 ~ gb2 ~ gb2@4 f2 ~ e2@2",
  AP: "eb2@4 ~@2 eb2 ~ eb2@4 bb1@2 a1 ~", AQ: "ab1@5 ~ ab1 ~ ab2@4 eb2@2 d2@2", AR: "db2@5 ~ db2@2 d2@5 ~ d2 ~",
  AS: "eb2@4 ~@2 eb2 ~ bb2@5 ~ bb2 ~", AT: "b1@5 ~ b1 ~ c2@5 ~ c2@2", AU: "eb2@5 ~ eb2 ~ db2@4 ~@2 db2 ~",
  AV: "b1@4 ~@2 b1 ~ b1@5 ~ b1 ~", AW: "bb1@5 ~ bb1 ~ bb1@5 ~ bb1@2", AX: "ab1@5 ~ ab1@3 ~ ab1@3 ~ ab1 ~",
  AY: "ab1 ~ ab2 ~ bb2@2 b2 ~@3 c3 ~@3 db3 ~", AZ: "db2@5 ~ db2 ~ db2@5 ~ db2 ~", BA: "db2@5 ~ db2 ~ db2@4 ~@2 db2 ~",
  BB: "db2@4 ~@2 db2 ~ db2@3 db2 ~@2 db2 ~", BC: "~@2 bb2 ~ c3 ~ db3 ~@3 d3 ~@3 eb3 ~",
  BD: "eb2@5 ~ eb2 ~ eb2@4 ~@2 eb2 ~", BE: "eb2@4 ~@2 eb2 ~ eb2@4 ~@2 eb2 ~", BF: "ab2@5 ~ ab2 ~ g2@4 ~@2 g2 ~",
  BG: "f2@4 ~@2 f2 ~ eb2@5 ~ eb2 ~", BH: "db2@4 ~@2 db2 ~ c2@5 ~ c2 ~", BI: "bb1@3 ~@3 bb1 ~ eb2@5 ~ eb2 ~",
  BJ: "ab1@3 ab2@3 ab1 ab2", BK: "f2@5 ~ f2 ~ f1@4 f2@2 f1@2", BL: "bb1@6 bb2@5 ~ f2 ~ e2@2",
  BM: "eb2@7 ~ f2@2 eb2 ~ c2 ~ bb1 ~", BN: "ab1@4 ~@2 ab1 ~ g2@5 ~ g2 ~", BO: "f2@5 ~ f2 ~ eb2@4 ~@2 eb2 ~",
  BP: "db2@5 ~ db2 ~ c2@5 ~ c2 ~", BQ: "bb1@4 ~@2 bb1 ~ eb2@3 ~ bb1@2 eb2 ~", BR: "ab1@6 c2 ~ eb2@4 ab1@2 ab2 ~",
  BS: "f2@5 ~ f2@2 f1@4 f2@2 b1@2", BT: "bb1@4 ~@2 bb1 ~ bb1@4 db2 ~ d2 ~",
  BU: "eb2@5 ~ eb2@3 ~ [gb2,g2] ~ eb2 ~ [b1,c2] ~", BV: "ab2@5 ~ ab2 ~ g2@5 ~ g2 ~",
  BW: "f2@4 c2 ~ f2 ~ eb2@4 b1 ~ eb2 ~", BX: "db2@4 a1 ~ db2 ~ c2@4 ~@2 c2 ~", BY: "ab1@6 ab2@6 ab1@2 ab2 ~",
  BZ: "f2@5 ~ f2@2 c2@4 f2@2 b1@2", CA: "bb1@4 ~@2 bb1 ~ bb2@4 f2 ~ bb1 ~", CB: "eb2@7 ~ f2 ~ eb2 ~ c2 ~ bb1 ~",
  CC: "f2@4 ~@2 f2 ~ eb2@4 ~@2 eb2 ~", CD: "db2@4 ~@2 db2 ~ c2@4 ~@2 c2 ~", CE: "bb1@4 ~@2 bb2 ~ eb2@4 bb1 ~ ab2 ~",
  CF: "ab1@5 ~ ab2@4 eb2 ~ c2@2 e2@2", CG: "f2@6 f1@5 ~ f2 ~ b1@2", CH: "bb1@5 ~ f2 ~ bb2@3 ~ f2@2 b1 ~",
  CI: "eb2@4 b1 ~@3 eb2 ~ eb2 ~ f2 ~ g2 ~", CJ: "ab2@4 c2 ~ ab2 ~ g2@4 c2 ~ g2 ~",
  CK: "f2@4 c2 ~ f2 ~ eb2@4 [b1,c2] ~ eb2 ~", CL: "bb1@3 eb2@4 a1", CM: "ab1@4 ~@2 ab1 ~ ab2@3 ~ eb2 ~ e2 ~",
  CN: "f2@3 f1@2 f2@2 b1", CO: "bb1@5 ~@5 b1 ~ f2 ~ e2 ~, ~@3 bb2@3 ~@2", CP: "eb2@4 ~@2 eb2 ~ f2@3 ~ g2@3 ~",
  CQ: "ab2@3 ~ d2 ~ ab2 ~ g2@4 [c2,d2] ~ g2 ~", CR: "bb1@4 ~@2 bb1 ~ eb2@6 a1@2",
  CS: "ab1@5 ~ ab2@4 ~@2 eb2 ~ e2@2, ~@11 ab1@2 ~@3", CT: "f2@4 ~@2 f2 ~ f1@3 ~ f2@2 b1@2",
  CU: "bb1@6 ~@4 bb1 ~ f2@2 e2@2, ~@3 bb2@3 ~@2", CV: "eb2@6 bb2@8 bb1 ~", CW: "ab2 ~ c2 ~@3 db2 ~@3 d2 ~@3 eb2 ~",
  CX: "ab1",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note(`<
  ~ 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@2 AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@2 AR AS AT
  AU AV@2 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@3 BV BW BX BY BZ CA CB CC CD CE CF
  CG CH@2 CI CJ CK CL CM CN CO CP CI CJ CK CL CM CN CO CP CI CQ CR
>`.pickRestart({
  A: "[e3,a3,db4]", B: "~@2 d4@2 eb4@2 gb4 ~@3 b4 ~ ab4 ~@3", C: "[db4,e4,a4]",
  D: "~@3 e4@2 a4@2 b3, ~@2 [a3,db4]@9 ~@5", E: "~@4 [e3,ab3,b3,e4,ab4] ~@7 [eb4,gb4,b4] ~ e3 ~",
  F: "~@4 b3 ~ db4@2 ~@2 b3 ~ [e4,ab4,b4] ~ [a3,b3] ~, [db4,e4]@3 ~@5", // E Asus2 Dbm
  G: "db4@4 a3@2 db4@2 ~@2 b3 ~ [e4,ab4] ~ b3 ~, [e4,a4]@8 e3@5 ~@3", // E A5
  H: "~@4 db4@2 a3@2 ~@4 gb3@2 a3 ~, [db4,gb4] ~ a4@2, ~ gb3@2 ~@5", // Gb5
  I: "~@2 [b3,e4,ab4] ~ [b3,e4,ab4] ~ [ab3,a3,b3,e4,ab4] ~@3 [b3,e4,ab4] ~@3 [db3,b3,e4,ab4] ~", // E Dbm7
  J: "~@2 ab3 ~ [db4,ab4]@2 b3@3 ~ b3@4 ~@2, e3@3 [e3,ab3,db4,ab4]@4 ~, [b3,db4,gb4] ~@3", // Db5 Dbm Bsus2
  K: "[db3,a3,db4,e4,gb4]@2 [a3,e4,ab4] ~ [gb3,a3,db4,e4,ab4] ~ [gb3,a3,db4,e4,ab4] ~@3 [db4,e4,ab4] ~@3 [db4,e4,ab4] ~, ~@10 [db3,gb3]@3 ~@3", // Gbm7 Amaj7 Gbm7 Dbm Gb5
  L: "[e4,gb4,b4]@2 a3@2 [e4,ab4] ~ gb3 ~ [a3,b3,e4] ~ eb3@2 a3@2 db4 ~, eb3@6 ~@4 a3 ~@5, a3 ~@9 [db4,gb4]@4 ~@2", // Esus2 E Asus2 Gb5
  M: "e3@2 b3 ~ [e4,ab4] ~ b3 ~ b2 ~@3 [eb4,gb4] ~ a3 ~", N: "db3@5 ~ ab3 ~@3 b3 ~ [e4,ab4] ~@3, e4 ~, ab3@3 ~@13",
  O: "[db4,e4]@4 a3@2 db4@2 [a3,b3] ~@3 [e4,ab4,b4]@2 b3 ~, a3 ~@7", // Dbm Asus2 E
  P: "a3@4 gb3@2 [a3,db4] ~@3 b2@2 a3@2 db4 ~, [db4,a4]@3 ~@5, gb4 ~@7 a4@5 ~@3", // A Gbm
  Q: "~@4 [e3,b3,gb4] ~ [e3,ab3,db4,gb4]@3 ~ [e3,ab3]@2 b3 ~ [db4,e4] ~, ~@5 [db4,e4,ab4]@2 ~, ~@10 b3 ~@5", // Esus2 Dbm E Dbm
  R: "[e3,ab3,b3,db4,e4,gb4]@2 ~@2 [ab3,b3,e4,ab4]@2 ~@2 [e3,ab3,b3,db4]@4 b3 ~ db4 ~, ~@4 [e4,ab4] ~@3", // Dbm7 E Dbm7 E
  S: "[gb3,gb4] ~ [db3,gb3,a3,db4] ~ [gb3,a3,db4,ab4] ~ [db3,gb3,a3,db4,ab4] ~@3 [db3,db4]@2 a3@2 db4 ~, ~@5 [gb3,ab4]@2 ~, ~@10 a3 ~@5", // Gb Gbm Db Gbsus2
  T: "[a3,eb4,gb4,b4]@3 ~ [a3,eb4,ab4] ~ eb3 ~ [a3,e4]@2 ~@2 a3@3 ~, [eb3,gb3] ~ eb3 ~, ~@8 db4 ~ [c4,eb4,gb4]@5 ~", // B7 Ab A5 Ebm Cdim
  U: "[db3,db4]@4 ab3@2 db4 ~ b3@2 ~@2 [b3,eb4]@2 ab3 ~, e4@3 e4@2 ab2@2 ~, ~@12 ab3 ~@3", // Db B
  V: "[db4,e4,a4]@5 ~ [bb3,db4,g4]@8 e4 ~, ~@6 e4@7 ~@3", // A Gdim
  W: "~@4 eb3 ~ a3 ~ [eb3,c4,eb4]@4 ~@2 c4 ~, [b3,e4,ab4]@7 ~ gb4@7 ~, ~@3 a3", // Cm E
  X: "db3@2 e3 ~ ab3@2 db4 ~ gb3@3 ~ gb3 ~ eb4 ~, [db4,e4]@3 ~ [b3,eb4]@3 ~, ~@8 bb2 ~@7", // Dbm B
  Y: "~@2 a3 ~ [db4,e4,a4] ~@3 a3 ~ e3@2 [db4,e4,a4] ~ a3 ~", // A
  Z: "~@2 b3@2 [e4,ab4,b4] ~@7 [e4,ab4,b4] ~ b3 ~, e3@6 ~@4 ab3@5 ~", // E
  AA: "~@4 db3 ~@3 [e3,ab3,b3]@4 b3 ~@3, [a3,db4,e4,a4]@6 ~@2 [e4,ab4]@7 ~", // E A E
  AB: "[[e4,a4]@2 [e4,a4]@4 e3 e3@2 ~ a3@2 eb3@3 ~ a3@4 eb3@2 gb3@2 a3@2 eb4@2 gb4 ~ a3 ~, db4@6 a4@5 ~ b4@19 ~, ~@2 [e3,a3] ~@3 [a3,db4]@3 ~@7 eb3@2 ~@14, ~@7 e4@5 [eb4,gb4]@10 ~@10]/2", // A5 A Ebm
  AC: "gb3@2 ~@2 gb3 ~ b3@4 gb3@2 b3 ~ eb4 ~, ab2@9 ~@7, [b3,eb4]@6 eb4@7 ~@3", // B
  AD: "~@2 gb3@2 bb3@2 ~@4 db3@2 bb3 ~ db4 ~, [db3,gb4]@3 ~@5, db4@2 ~ [db4,f4]@3 ~@2", // Gb5 Db
  AE: "[db3,bb3]@4 [gb3,bb3] ~ db4 ~ f3 ~ ab3 ~ [db4,f4,ab4] ~ ab3 ~, [db4,gb4,bb4]@3 ~@5, gb3 ~@15", // Gb Db Gb
  AF: "eb3@4 [gb3,bb3] ~ eb4 ~ db4@4 bb3 ~ db4 ~, [eb4,gb4]@3 ~@5", // Gb Ebm
  AG: "b2@2 gb3 ~ [eb4,gb4,b4] ~ gb3 ~ [db4,bb4]@4 [gb3,bb3]@2 ~@2, ~@8 gb4 ~@7", // B Gb
  AH: "ab2@4 gb3@2 ~@4 a3 ~ f4 ~ db4 ~, [b3,eb4,ab4]@6 ab4@9 ~, ~@3 [db4,f4]@3 ~@2", // Abm Db
  AI: "[gb3,db4]@4 bb3 ~ [bb3,db4,ab4] ~ [bb3,db4,gb4]@3 bb3 gb4 ~ [bb3,db4,gb4] ~, gb4@3 ~@5 gb3@7 ~", // Gb5 Bbm7 Gb
  AJ: "[bb3,db4,gb4]@2 [bb3,eb4,ab4] ~@3 bb3@2 [eb4,gb4]@2 eb4@2 bb3@2 eb4 ~, ~@3 gb3@4 ~, ~@3 eb3@3 ~@2, ~@10 bb3 ~@5", // Gb Ebsus4 Ebm
  AK: "ab2 ~ ab3 ~ [b3,eb4,bb4] ~@3 [b3,eb4]@2 ab3@2 b3 ~ gb4 ~, ~@6 ab2@5 ~@5, ~@8 ab3 ~@7", // Bmaj7 B
  AL: "[db4,gb4]@4 db4@2 ~@6 bb3@2 db4 ~, db3@3 [db4,f4]@3 ~@2, ~@5 db3@2 ~", // Gb5 Db
  AM: "[db4,gb4,bb4]@4 bb3 ~ db4 ~@5 ab3 ~ db4 ~, gb3@3 ~@5 [db4,f4]@6 ~@2, ~@2 db3 ~, ~@10 ab4@5 ~", // Gb Db
  AN: "[eb3,db4]@4 bb3@2 db4 ~@5 db4@2 f4 ~, gb4 ~@7 f3@6 ~@2, ~@2 db4 ~, ~@10 ab3@5 ~", // Eb7
  AO: "[b2,eb4]@4 gb3 ~ eb4 ~ [gb3,db4,gb4,bb4]@4 [a3,bb3] ~ b3 ~, gb4@7 ~ bb3 ~@7", // B Gb Bbmaj7
  AP: "[ab2,b3]@2 gb3@2 ~@6 ab3@2 db4@2 [ab3,f4] ~, [eb4,ab4]@3 f3@4 ~, ~@3 [db4,f4]@3 ~@2", // Abm Db Ab5 Db
  AQ: "[[bb3,db4,bb4]@4 ~@2 [bb3,db4,ab4] ~ [bb3,db4,ab4]@2 ~@2 bb3 ~ [gb3,eb4,gb4]@3 ~ gb3@2 ~@2 gb3@4 bb3@2 gb4 ~ bb3 ~, db3@3 ~ [db3,gb3]@2 ~ eb3@8 ~, gb3@2 ~@12 bb3@7 ~@11, ~@18 [eb4,ab4]@9 ~@5]/2", // Bbm Bbm7 Ebm Gb5 Ab5
  AR: "[b3,eb4,bb4]@2 ~ [b3,eb4]@2 ab3 ~@2, ab2@5 ~@3, ab3 ~ ab3@2 ~@4, ~@6 ab4@7 ~@3, ~@6 gb4 ~@9", // Bmaj7 B
  AS: "~@2 [b3,gb4,ab4] ~ [gb3,b3,gb4,ab4]@2 ab4 [b3,gb4] ~@3 [b3,d4,f4]@5, ~@10 ab4@5 ~", // Abm7 B5 Bdim
  AT: "bb3@2 ~@2 bb3@2 db4 ~ bb3@2 bb2 ~ bb3 ~ db4 ~, [eb3,gb3,eb4,gb4]@6 ~@2 [f4,bb4]@7 ~, ~@8 db4@5 ~@3", // Ebm Bb5
  AU: "eb3@4 gb3@2 eb4 ~ [eb3,gb3]@4 a3@4, [eb4,gb4,b4]@6 ~@2 c5@7 ~, gb3 ~@7 a3@2 ~@6", // Ebm B
  AV: "[bb3 ~@3 bb3@2 db5 ~ [b3,d5]@4 [g3,ab3] ~@7 bb3@2 db4@2 [f3,db4,f4]@4 ab3@2 db4 ~, [db3,gb3,db5]@3 ~ f3@3 ~ [eb3,db4,bb4]@3 ~@5, ~@4 ab3 ~@2 b3@2 gb3@2 ~@5, ~@4 gb4 ~@3]/2", // Bm Abmaj7 Db Gb5 Eb7
  AW: "[eb4,gb4,b4]@3 ~@3 [eb4,gb4,b4] ~@3 [eb4,gb4]@3 ~ eb4 ~, ~@5 b4@2 ~", // B Ebm
  AX: "[db4,gb4,bb4]@5 ~ [db4,bb4] ~@3 [db4,gb4,bb4]@2 a3 ~ b3 ~", // Gb
  AY: "[b3,eb4,ab4]@5 ~@7 b3@2 eb4 ~, ab2@7 ~, ab3@8 ~@2 ab3@5 ~, gb4 ~@5 ab4@8 ~@2, ~@3 [b3,eb4]@3 ~@2", // Abm B
  AZ: "ab2 ~ ab3 ~ bb3@2 b3 ~@3 c4 ~@3 db4 ~", BA: "[eb3,gb3,b3,eb4,gb4,b4,db5]",
  BB: "~@2 e3@2 f3@2 ab3 ~@3 db4 ~@3 bb3 ~", BC: "[b3,eb4,gb4,b4]@15 ~", BD: "ab3 ~ bb3 ~ c4 ~ db4 ~@3 d4 ~@3 eb4 ~",
  BE: "[eb3,db4,f4,ab4]@5 ~ [eb3,db4,f4,ab4] ~ [eb3,db4,f4,ab4]@5 ~ [eb3,db4,f4] ~", // Db
  BF: "~@2 [gb3,gb4]@2 [g3,g4]@2 [bb3,bb4] ~@3 [eb3,eb4]@5 ~", // Gb G Bb Eb
  BG: "~@4 [c4,eb4,ab4] ~ ab3 ~ eb3@3 ~ [eb4,g4,bb4] ~ bb3 ~", // Ab Eb
  BH: "~@4 f3@2 [ab3,c4]@2 ab2 ~ ab3 ~ [c4,eb4,gb4,ab4] ~ ab3 ~, ab4 ~, [c4,eb4]@3 ~@5", // Ab Ab7 Cm
  BI: "f3@4 ab3@2 db4 ~ [c4,eb4]@4 c3 ~ c4 ~, [db4,f4]@3 ~ ab4@4, ~@4 c3 ~@3, ~@8 b3 ~@7", // Cm Db
  BJ: "f3@2 ab3 ~ [db4,f4,bb4] ~ ab3 ~ db3 ~ [db4,f4,ab4]@3 ~ db4 ~", // Bbm Db
  BK: "[eb3,c4,eb4,g4,bb4] ~ [eb3,c4,eb4,ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~@3 [eb3,ab3,ab4,c5] ~@3 [ab4,c5] ~", // Cm7 Ab
  BL: "[f3,ab3,eb4,ab4,bb4]@3 ~ [f3,ab3,eb4,ab4,c5]@3 ~ [ab3,eb4,ab4,c5]@4 f3 ~ ab3 ~, ~@4 f3 ~@3", // Fm7 Ab
  BM: "ab4 a4 [ab3,db4,c5] ~ [bb2,f3,ab3,db4,c5] ~ [db4,c5] [bb2,f3,ab3] ~@2 [bb2,f3,ab3,db4,c5]@2 ab3 ~@3, [bb2,f3,ab3,db4]@3 ~@13", // Dbmaj7 Bbm7 Dbmaj7 Bb7 Bbm7
  BN: "[eb3,g3,bb3,db4,eb5] ~@3 [eb3,bb3,db4,c5] ~ bb3 ~ bb4 ~ c5 ~ bb3 ~ c4 ~, ~@7 g3@5 ~@4", // Eb7
  BO: "eb3 ~ ab3 ~ [c4,eb4,gb4,ab4,bb4] ~ ab3 ~ eb3@4 [eb4,g4] ~ bb3 ~", // Cm7b5 Eb
  BP: "c4@4 ab3 ~ c4@2 eb3@2 ab3 ~ [c4,eb4,gb4,ab4] ~ ab3 ~, f4@7 ~@9, ab3 ~@15", // Ab7
  BQ: "f3@4 [ab3,a3] ~@5 eb3@2 ab3@2 c4 ~, [db4,f4]@6 [eb4,ab4]@9 ~, ~@3 c4@3 ~@2", // Amaj7 Db Ab5
  BR: "[f3,db4,f4]@4 ~@2 db4 ~@5 db4@2 f4 ~, ab3 ~ ab3@2 [db4,f4,ab4]@2 ~@2, ~@10 eb3@5 ~", // Db
  BS: "[c4,eb4,ab4] ~ [eb3,c4,c5] ~ [eb3,ab3,c4,c5] ~ [eb3,ab3,c4,c5] ~@3 [eb3,c4,c5]@4 [ab3,c4] ~, ~@10 ab3 ~@5", // Ab Cm Ab Cm Ab
  BT: "[f3,ab3,bb4]@3 ~ [f3,ab3,c5]@3 ~ f3@4 ab3@2 ~@2, ~@8 c5@7 ~, ~@4 ab3 ~@3", // Bb7 Fm
  BU: "[[bb2,f3,ab3,bb4]@2 c5 ~ [f3,c5] ~ [bb2,f3,ab3,c5] ~@3 [bb2,f3,c5]@2 ~@2 c5 ~ [eb3,g3,eb5]@4 [db4,c5] ~ [gb3,g3] ~ bb4 ~ eb3@4 g3 ~ eb3 ~@3 [c4,eb4,gb4,ab4] ~ ab3 ~ eb3@4 g3 ~ c4 ~, ~@10 ab3 ~ ab3@23 ~@5 eb4@6 ~@2, ~@16 db5 ~@9 c5@2 ~@12 g4@8]/3", // Bb7 F5 Fm Bbsus2 Eb Dbmaj7 Gmaj7 Ab7
  BV: "f3@3 ~ ab3 ~ c4 ~ [eb3,c4]@4 ab3@2 c4 ~, [c4,f4]@7 ~ eb4@7 ~, ab3 ~@15", // Cm F5
  BW: "f3@4 ab3 ~ db4@2 eb3@3 ~ ab3@2 c4 ~, [db4,f4]@3 ~ [c4,eb4]@3 ~, ab3 ~@7", // Db Cm
  BX: "[f3,db4]@4 ~@2 db4 ~ [db4,f4,ab4]@4 eb3@2 ~@2, ab3@2 ~@2 ab3@4 eb3@3 ~@5", // Db
  BY: "[ab3,db4,bb4]@2 [eb3,c5] ~ [eb3,eb4,c5] ~ [eb3,ab3,eb4,ab4,c5] ~@3 eb3@2 ab3@2 eb4 ~, ~@5 [eb4,c5]@2 ~, ~@10 ab4 ~@5", // Bbm7 Cm Ab Cm
  BZ: "[f3,ab3,eb4,bb4]@3 ~ [f3,ab3,c5]@3 ~ f3@4 ab3@2 eb4 ~, ~@4 [eb4,c5]@3 ~, ~@4 ab3 ~@3", // Fm7 Fm Cm
  CA: "[bb2,f3,bb4]@2 [ab3,c5] ~ [bb2,f3,ab3,c5] ~ [ab3,c5]@4 ~@2 ab3@2 f4 ~, ab3 ~@5 [bb2,f3]@6 ~@4, ~@5 c5@2 ~", // Bb5 Ab Fm Ab Bb5
  CB: "[eb3,g3,bb3,db4]@4 c5 ~ db4 ~ [db4,ab4]@2 bb4@2 [g3,bb3] ~ c4 ~, eb5@3 ~@5 eb3@4 ~@4, ~@8 g3 ~@7", // Eb7 Db5 Gm
  CC: "eb3 ~ ab3 ~ [c4,eb4,gb4,ab4] ~ ab3 ~@7 bb3 ~, ~@3 [eb4,g4]", // Ab7 Eb
  CD: "~@2 ab3 ~ [c4,f4] ~ f3 ~@3 eb3@2 ab3@2 c4 ~, ~@5 [c4,eb4]@2 ~", // F5 Cm
  CE: "f3@2 ab3 ~ [db4,f4,ab4] ~ [f3,gb3] ~ c4@2 ~@2 [c4,eb4,ab4]@2 ab3@2, ~@5 eb3@2 ~", // Db Gbmaj7 Ab
  CF: "f3@3 ~@3 db4 ~ [db4,f4,ab4]@4 eb3@2 db4 ~, [db4,f4]@3 ~@5, ~@4 ab3@4 eb3@3 ~@5", // Db
  CG: "[db3,db4,bb4] ~ [eb4,c5] ~ [gb3,eb4,c5] ~ [eb4,c5]@3 ~@3 ab3@2 eb4 ~, ~@6 gb3 ~@3 [eb4,c5]@4 ~@2", // Gb Cm Cdim Cm
  CH: "[[f3,ab3,bb4]@3 ~ [f3,ab3,c5]@3 ~ [f3,ab3]@3 ~ ab3@2 ~@2 [db4,f4,bb4] ~ c5 ~ [db4,f4,c5] ~ [ab3,db4,f4,c5]@3 ~ [db4,f4,c5] ~ ab3 ~@3, ~@8 c5@6 ~ bb2@4 ~@13, ~@8 [f3,ab3] ~@2 f3@3 ~@2]/2", // Bb7 Fm Bbm Dbmaj7 Fm
  CI: "[db4,eb5] ~@3 c5 ~ db4 ~ bb4 ~ [eb3,g3,c5]@2 bb3 ~ c4 ~, [eb3,g3]@3 ~@5", // Dbsus2 Cm Eb
  CJ: "eb3 ~ ab3 ~ [c4,eb4,gb4,ab4] ~ ab3 ~@2 g3 ~@2 bb3 ~ c4 ~, ~ g4, ~@4 eb4@3 ~, ~@8 eb3@3 ~@5", // Ab7
  CK: "c4@4 ab3 ~ c4 ~ eb3@4 ab3@2 c4@2, f4 ~, f3@3 ~@5 ab3@2 ~@6, ab3 ~@7 [c4,eb4]@6 ~@2", // Cm
  CL: "~@4 [db4,f4,ab4] ~ ab3 ~ c4@2 eb3@2 ab3@2 c4 ~, db3@5 ~@11, ~ f3@2 ~ [eb4,ab4]@3 ~", // Db Ab5
  CM: "[ab3,db4,bb4]@4 f3@2 ~ ab3@3 [db4,f4]@2 eb3@2 [ab3,db4] ~, [f3,f4] ~@5 [db4,f4,ab4]@3 ~ ab4 ~@5", // Bbm7 Db Db5 F Db
  CN: "bb4 ~ [eb3,ab3,db4,c5] ~ [eb3,ab3,eb4,c5] ~ [ab3,eb4]@4 [eb4,ab4,c5]@2 ab3@2 eb4 ~, ~@3 eb3@3 ~@2, ~@3 [ab4,c5] ~@4", // Ab Ab5 Ab
  CO: "[f3,ab3]@4 c5@2 b4 ~@3 f3@4 ab3 ~, bb4@3 ~@3 c5@7 ~@3", // Fm
  CP: "[bb2,f3,ab3]@2 c5 ~ [db4,f4,c5] ~ [ab3,db4,f4,c5]@3 ~ [db4,f4,c5] ~ ab3 ~@3, [db4,f4,bb4] ~@5 f3@6 ~@4", // Bb7 Dbmaj7 Bbm
  CQ: "ab3@2 c4 ~@3 db4 ~@3 d4 ~@3 eb4 ~", CR: "[ab2,eb3,g3,c4,f4,bb4]",
})).s("gm_acoustic_guitar_steel").gain(0.43)

// chords · acoustic guitar steel · "guitar" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@6 A ~@3 B C D ~@2 E F G ~ H ~@3 I J K L M ~@2 N O ~ P ~@2 Q R S T U V W X Y Z AA ~@18 AB AC ~@2 AD ~ AE ~ AF AG ~ AH
  AI ~@2 AJ AK AL ~@2 AM AN AO AP ~ AQ ~ AR AS ~@3 AT AU ~ AR AS ~@3 AT AU ~ AR AS ~@2
>`.pickRestart({
  A: "~@4 ab3 ~@4 e3 ~@6", B: "~@2 [ab3,b3] ~@5", C: "gb3 ~@7", D: "gb3@2 ~@3 gb3 ~@2", E: "~ e3@2 ~@13",
  F: "~@3 gb4@3 ~@10", G: "~@4 db4 ~@11", H: "[db3,a3,db4] ~ ab4 ~ db3 ~@11", I: "~@6 gb3 ~@9", J: "~@9 b2@3 ~@4",
  K: "e3 ~@7", L: "~@9 b3 ~@6", M: "~@12 ab3 ~@3", N: "~@8 gb3 ~@7", O: "bb3 ~@15", P: "~@2 db3 ~, ~@6 gb4@7 ~@3",
  Q: "bb3@2 db3@2 ~@8 db4 ~@3, ~@4 db3@3 ~", R: "gb3@2 eb3 ~@7 ab4@3 eb3 ~@2", S: "~@2 ab2 ~@13",
  T: "~@2 bb3 ~ bb3@2 ~@10", U: "~@4 gb3 ~@11", V: "~ gb4@2 ~@5", W: "~@4 eb3 ~@7 gb3 ~@3", X: "~ gb3 ~@14",
  Y: "gb4 ~ gb4@2 gb3@2 ~@4 [db4,gb4] ~@5", Z: "~@5 gb3@2 ~", AA: "~@14 db4 ~", AB: "~@2 f3@3 ~@11", AC: "~@2 ab3 ~@13",
  AD: "~@7 bb3@2 eb3@3 ~@4", AE: "~@2 f3 ~@13", AF: "bb2 ~@3", AG: "ab3 ~ ab3 ~@13", AH: "~@4 ab3 ~@11",
  AI: "~@4 bb3 ~@11", AJ: "~@4 f3 ~@11", AK: "bb2@4 ~@10 db4 ~", AL: "~@4 ab3 ~@5 ab3 ~@5", AM: "~@8 bb3 ~ g3@3 ~@3",
  AN: "~@8 eb3@2 bb3 ~@5", AO: "~ f3@2 ~@13", AP: "~@4 ab3 ~@3", AQ: "~@2 gb3 ~@13", AR: "~@2 db4 ~@13",
  AS: "~ e5 ~@4 bb3 ~@9, bb3@5 ~@11", AT: "bb2@2 ~@4 ab4 ~", AU: "eb3 ~@11 eb3@2 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.21)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A D A B A B A B A B A B A B A B A C A B A B A B A B A B
  A B A B A D A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A D A B A B A B A B A B A B A E F
>`.pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@2 x ~ x ~@2", C: "x ~@2 x ~@4", D: "x ~@2 x ~ x ~ x", E: "x", F: "x ~@11 x!4",
})).gain(0.61)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@3 B A@3 C A@3 D A@3 E A@3 F A@3 G A@3 F A@7 B A@3 C A@3 D A@3 E A@3 F A@3 G A@3 F A@7 B A@3 C A@3 D A@3 E A@3 F
  A@3 G A@3 F A@7 B A@3 C A@3 D A H I
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@7 x!4", D: "~@2 x ~@3 x!2", E: "~@4 x ~@3 x!3 ~@5",
  F: "~@4 x ~@7 x!2 ~ x", G: "~@4 x!3 ~@9", H: "~ x ~ x ~ x ~ x", I: "x!5 ~@11",
})).gain(0.61)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A ~@3 B ~@23 C ~@3 A ~@3 B ~@23 C ~@3 A ~@3 B ~@23 C ~@3 A ~@3 B ~@7
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@10", C: "~@2 x!2 ~@12",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A ~@7 B ~@7 C ~@7 D ~@7 A ~@7 B ~@7 C ~@7 D ~@7 A ~@7 B ~@7 C ~@7 D ~@7 A ~@6 E
>`.pickRestart({
  A: "~@7 x", B: "~@13 x!2 ~", C: "~@12 x!4", D: "~@5 x ~@2", E: "~@8 x!4 ~@4",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!109 ~@2>").gain(0.48)
// … 16 more lines

More by James Taylor