Strudelify
Family Affair cover art

There's A Riot Goin' On

Family Affair

Sly

KeyF majorTempo115 bpm
0:00/0:00
// Family Affair — Sly
// 115 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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(`<
  ~@2 A B C D E F G H I J K L M L N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV AW AX AY AZ AW BA BB BC BD BE BF BE BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BS BV BY
>`.pickRestart({
  A: "d2@2 d3@2 d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~", B: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ a1 g1 ab1@2 a1@2",
  C: "bb1@3 ~ bb1 ~@3 a1@4 a1 ~@3", D: "g1@3 ~ g1 ~ g1@2 c2 ~ c2@2 c2 ~ db2@2",
  E: "d2 ~ d2@2 d3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", F: "d2 d3@2 d2 d3@2 d2@2 a1 ~ a1@2 c2 bb1 a1@2",
  G: "bb1@4 bb1 ~@3 a1@3 ~ a1@4", H: "g1@3 ~ g1 ~ d2@2 c2@2 c2@2 c2 ~@2 g1", I: "g1@2 g1 ~@4 g1 g1@2 a1@2 bb1@2 b1@2",
  J: "c2@2 c2@2 c2 ~@3 c2 ~@3 c2 ~ c2!2", K: "g1@2 g1@2 g1 ~@3 g1 ~@3 g1 ~ g1@2", L: "c2 ~@3 c2 ~@3 c2 ~@3 c2 ~ d2@2",
  M: "g1@2 g1@2 g1 ~ g1 ~ g1 ~@3 g1 ~@3", N: "g1 ~ g1 ~ g1 ~ g1@2 g1 ~@3 g1 ~@3",
  O: "c2 ~@3 c2 ~ c2 ~ c2 d2 ~ a1@3 ab1@2", P: "g1@2 g1@2 g1 ~@3 g1 ~ g1@2 g1 ~ g1@2",
  Q: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 bb1@2 a1@2", R: "g1@3 ~ g1 ~ g1@2 g1 ~@3 g1 ~ g1@2",
  S: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 a1 d2@2", T: "g1@2 g1@2 g1 ~@3 g1@2 g1@2 g1 ~ g1@2",
  U: "c2 ~ c2@2 c2 ~@3 c2 ~ c2@2 a1@2 d2@2", V: "g1@2 g1 ~ g1 ~ g1 ~ g1 ~@3 g1@2 g1@2",
  W: "c2 ~@3 c2 ~ c2 ~ c2 ~ c2 ~ c2@2 d2@2", X: "g1@3 ~ g1@3 ~ g1 ~ g1@2 g1@3 ~", Y: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 d2@2",
  Z: "g1@3 g1 g1@3 ~ g1 ~ g1@3 b1@3", AA: "d2 ~ d2@2 d2 ~ d2@2 d2@2 d2@2 d2@2 d2@2",
  AB: "d2 ~ d2@2 d2 ~ d2@2 d2@2 d2@2 d2@2 ~@2", AC: "g1@2 g1 ~@4 f1 g1@2 g1 ~@5", AD: "c2@2 c2 ~@5 c2@2 c2 ~@5",
  AE: "g1@2 g1 ~@5 g1@2 g1 ~@5", AF: "c2@2 c2 ~@4 a1 c2!2 d2 ~ f2 ~ g2 ~", AG: "g2@2 ~@3 f2 ~ f2 e2!2 ~ e2 d2!2 ~ d2",
  AH: "c2!2 ~ c2 d2!2 ~ d2 a1!2 ~ a1 ab1!2 ~ ab1", AI: "g1@2 g1 ~@4 g1 g1@2 g1 ~@2 c2 ~ a1",
  AJ: "d2@2 d2@2 d2@2 d2@2 d2 ~ d2@2 d2@2 d2@2", AK: "d2 d3@2 d2 d3@2 d2 d3@2 d2 d3 ~ a1 ~ ab1 ~",
  AL: "g1@3 ~ g1 ~@3 g1 ~ g1@2 g1 ~ g1@2", AM: "c2 ~@3 c2 ~@3 c2 ~ c2 ~ c2!2 d2@2",
  AN: "g1@3 ~ g1 ~@3 g1!2 a1 ~ bb1 ~ b1 ~", AO: "c2@3 ~ c2@2 c2 ~ c2 ~ c2@2 c2 ~ c2@2",
  AP: "g1@3 ~ g1 ~@3 g1 ~@3 g1 ~@3", AQ: "c2 ~@3 c2 ~@3 c2 ~@3 c2 ~ a1@2", AR: "g1@3 ~ g1@2 a1@2 bb1!3 ~ bb1@2 b1@2",
  AS: "c2@2 ~ c2 d2!2 ~ d2 a2!2 ~ a2 ab2!2 ~ ab2", AT: "g2@3 g2 f2!2 ~ f2 d2 d2@3 ~@2 g1@2",
  AU: "c2@2 c2@2 bb1 ~ bb1@2 a1 ~ a1@2 d2 a1 d2@2", AV: "g1@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2",
  AW: "c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2@2 d2@2", AX: "g1 ~ g1@2 g1 ~ g1@2 g1 ~ g1 ~ g1 ~ g1@2",
  AY: "c2@2 c2@2 c2 ~ c2@2 c2 ~ c2@2 c2 ~ d2@2", AZ: "g1@2 g1@2 g1 ~ g1 ~ g1 ~ g1@2 g1 ~ g1@2",
  BA: "g1 ~ g1@2 g1 ~ g1@2 g1@2 g1 ~ g1 ~ g1@2", BB: "c2 ~@2 c2!2 ~@3 c2 ~ c2 ~ c2 ~@3",
  BC: "g1@3 ~ g1@3 ~ g1 ~ g1 ~ g1 ~ g1@2", BD: "c2@3 c2 c2@3 ~ c2 ~ c2 ~ c2@2 d2@2",
  BE: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2", BF: "c2@2 ~ c2 c2@2 ~@2 c2 ~ c2 ~ c2@2 d2@2",
  BG: "d2 ~ d2 ~ d2 ~ d2@2 d2@2 d2@2 d2@2 d2 ~", BH: "d2 ~ d2@2 d2 ~ d2@2 d2@2 d2 ~ d2 ~ ab1@2",
  BI: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", BJ: "a1 ~ a1@2 a2 ~ a2@2 a1 ~ a1@2 a2 ~ a2@2",
  BK: "d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", BL: "d2 ~ d2 ~ d2 ~ d2 ~ d2 g1 ~ g1 ab1@2 a1@2",
  BM: "bb1@2 bb1@2 bb1 ~ bb1 ~ a1@2 a1 ~ a1 ~ a1@2", BN: "g1!3 d2 c2 ~ c2 db2",
  BO: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d3@2 d2 d3", BP: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2 ~@2 a1",
  BQ: "bb1@2 bb1 ~ bb1 ~@3 a1@2 a1 ~ a1 ~ a1@2", BR: "g1 ~ g1@2 g1 ~ g1@2 c2@2 c2 ~ c2 ~@2 f1",
  BS: "g1@2 g1@2 g1 ~@2 f1 g1@2 g1@2 g1 ~@2 bb1", BT: "c2@2 c2 ~ c2 ~@2 bb1 c2@2 c2 ~ c2 ~@2 f1",
  BU: "g1@2 g1 ~ g1 ~@2 f1 g1 ~ g1@2 g1 ~@2 bb1", BV: "c2@2 c2 ~ c2 ~@2 bb1 c2@2 c2@2 c2 ~@2 f1",
  BW: "g1 ~ g1@2 g1 ~@2 f1 g1 ~ g1@2 g1 ~@2 bb1", BX: "c2@2 c2@2 c2 ~@2 bb1 c2 ~ c2@2 c2 ~@2 f1",
  BY: "g1@2 g1 ~ g1 ~@2 f1 ~@8",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · epiano2 · "Keyboard 1"
const epiano2 = note(`<
  ~@2 A@2 ~@2 B@2 ~@2 C D E D F D E G E D H I E D E J K L M N@2 O P Q R S T U V@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ
  AK AL C AM AN AO AN AP E AQ AR AS@2 AT AU AV@2 AW@2 AX AY AZ ~@8
>`.pickRestart({
  A: "[d4@31 ~]/2", B: "d4/2", C: "[g3,bb3,d4,f4]", D: "[c4,e4,g4,c5]", E: "[d4,f4,bb4,d5]",
  F: "[d4,f4,bb4,d5]@10 [f4,bb4,d5]@3 [f4,a4,c5]@3", // Bb F
  G: "[c4,e4,g4,c5]@8 ~@2 g4 ~ g4 f4 d4 ~, ~@10 d5@3 ~@3, ~@11 ab4@2 ~@3", H: "[d4,f4,bb4,d5]@15 ~",
  I: "[c4,e4,g4,c5]@15 ~", J: "[c4,e4,g4,c5]@8 ~@2 [ab3,d4]@2 g3 f3 d3 ~, ~@10 g3 ~@5", K: "[g3,bb3,d4,f4] ~@7",
  L: "[g3,bb3,c4] ~@7, e3 ~@15", M: "[f3,g3,bb3,d4]@15 ~",
  N: "[[a4,c5,d5]@3 f5 ~@2 [gb4,c5,d5,f5]@3 f5 d5 c5 a4 ab4 [f4,g4] d4@13 ~ ab4 g4@2, ~@29 d4@3]/2", // D7 Fsus2
  O: "[g3,bb3,d4,f4]@9 ~ [f4,bb4,d5]@3 [f4,a4,c5]@3", P: "[e4,g4,c5]@10 g3 ab3 g3 f3 ~@2, ~@5 d4@2 ~",
  Q: "[f4,bb4,d5]@2 ~@8 [f4,bb4,d5] [f4,bb4,d5]@2 ~ c5@2, ~@13 [f4,a4]@3", R: "[e4,g4,c5]@10 [f4,g4,c5]@2 e5 ~@3",
  S: "[f4,bb4,d5]", T: "[e4,g4,c5]@10 [f4,bb4,d5] ~ [g4,c5,e5] ~ [e4,g4,c5]@2",
  U: "[f4,bb4,d5]@9 ~ [f4,bb4,d5] [f4,bb4,d5]@3 [f4,a4,c5]@2", // Bb F
  V: "[[d4,f4,a4]@7 ~ [c5,d5] c5 a4 [ab4,a4] g4 f4 d4 d4@16 ~, ~@11 d5@2 ~@19]/2", // Dm Csus2 Amaj7
  W: "[g3,bb3,d4,f4]@9 ~ [f4,bb4,d5] ~@2 [f4,a4,c5]@3", X: "[e4,g4,c5]",
  Y: "[f4,bb4,d5]@5 [f4,bb4,c5] [g4,c5,d5] [bb4,d5,f5] ~ [f4,bb4,c5] [g4,c5,d5] [bb4,d5,f5] ~ f4 [d5,f5]@2, ~@14 bb4 ~", // Bb Fsus4 Gsus4 Bb Fsus4 Gsus4 Bb Dm
  Z: "[g4,c5,e5]@7 ~", // C
  AA: "[f4,bb4,d5]@5 [f4,bb4,c5] [g4,c5,d5] [bb4,d5,f5] ~ [f4,bb4,c5] [g4,c5,d5] [bb4,d5,f5] ~ f4 [bb4,d5,f5]@2", // Bb Fsus4 Gsus4 Bb Fsus4 Gsus4 Bb
  AB: "[g4,c5,e5]@15 ~", // C
  AC: "[f4,bb4,d5]@4 ~ [f4,bb4,c5] [g4,c5,d5] [bb4,d5,f5] ~ [f4,bb4,c5] [g4,d5] [bb4,d5,f5] ~ f4 [bb4,d5,f5]@2", // Bb Fsus4 Gsus4 Bb Fsus4 G5 Bb
  AD: "[g4,c5,e5]@10 g3 ab3 g3 [f3,d4] d3 ~", AE: "[g3,bb3,d4,f4]@10 [f4,bb4,d5]@3 [f4,a4,c5]@2 ~",
  AF: "[e4,g4,c5]@15 ~", AG: "[f4,bb4,d5]@10 [f4,bb4,d5]@3 [f4,a4,c5]@2 ~",
  AH: "[g4,c5,e5]@10 [g4,d5]@4 f4 ~, ~@10 ab4 ~@5", AI: "[f4,bb4,d5]@9 ~ [d4,f4,bb4]@3 [c4,f4,a4]@3",
  AJ: "[bb3,c4,e4,g4]@15 ~", AK: "[f4,bb4,d5]@10 [d4,f4,bb4]@3 [f4,a4,c5]@3, ~@13 ab4 ~@2",
  AL: "[bb3,c4,e4,g4]@12 c5 [d5,f5] ~@2", AM: "[e3,g3,bb3,c4]", AN: "[g3,bb3,d4,f4]@15 ~",
  AO: "d5@2 c5@4 [d4,f4,g4,bb4]@2 ~@2 [bb3,c4,e4,g4]@5 ~, c5 ~@15", AP: "[bb3,e4,g4,c5]@12 d5 ~@3, b4 ~@15",
  AQ: "~@2 [d5,f5]@2 ~ [d5,f5]@2 ~ d5 c5 a4 [ab4,d5] [g4,d5] f4 d4@2, ~@2 c5 ~@2 c5 ~@2 f5@2 ~@6", AR: "d4",
  AS: "[~@14 [d4,f4,g4,c5]@4 a4 ~@3 a4 ~ c5 ~ a4 ~ c5 ~ d5 ~]/2", // Dm7
  AT: "~@6 [c5,d5,f5] ~ [c5,d5,f5] ~ [c5,d5] ~@3 [a4,c5,d5] ~", // Dm7 Csus2 D7
  AU: "[g4,a4] ~ [g4,a4] ~@3 [g4,c5]@4 [c4,d4,f4] ~@2 [c4,d4,f4]@3, ~@6 ab4 ~@9", // Gsus2 C5 Dm7
  AV: "[[f3,a3,bb3,d4]@5 ~ [f3,a3,bb3,d4]@18 ~@5 c4 d4 ~]/2", AW: "[[g4,c5,f5] ~ [f4,a4,d5]@30]/2",
  AX: "[bb3,d4,f4,a4] [a3,c4,d4,g4]", AY: "[g3,bb3,d4,f4] [g3,bb3,d4]", AZ: "[g3,bb3,d4,f4] ~@15",
})).s("gm_epiano2").gain(0.26).pan(0.1)

// chords · lead 8 bass lead · "Keyboard 2"
const lead_8_bass_lead = note(`<
  A B C D E F G D E F H I J K L I M N M I M K M O H I H O P Q@2 L O R K M N M Q@2 S@2 P T H T H I H O M O H O H I U I U
  I M I L V@2 W@2 X Y Z AA AB AC E AD AE AF AG AH AI AF AJ AK AL
>`.pickRestart({
  A: "d5 ~@3 d5 ~@3 d5@2 ~@6", B: "d5!2 ~@3 d5 ~@2 d5@4 ~@4", C: "[a4,c5,d5,f5]@3 ~",
  D: "[a4,c5,d5,g5]@5 ~@3 [a4,c5,d5,f5]@4 ~@4", E: "[bb4,d5,f5,a5]@4 ~@4 [g4,c5,d5,f5]@5 ~@3",
  F: "[g4,bb4,d5,f5]@4 ~@4 [e4,g4,a4,c5]@5 ~@3", G: "[a4,c5,d5,f5]@13 ~@3", H: "[g4,bb4,d5,f5]@5 ~@3",
  I: "[e4,g4,bb4,c5]@11 ~@5", J: "[g4,bb4,d5,f5]@13 ~@3", K: "[e4,g4,bb4,c5]@9 ~@7", L: "[g4,bb4,d5,f5]@9 ~@7",
  M: "[g4,bb4,d5,f5]@11 ~@5", N: "[e4,g4,bb4,c5]@3 ~", O: "[e4,g4,bb4,c5]@5 ~@3", P: "[g4,bb4,d5,f5]@7 ~@9",
  Q: "[[a4,c5,d5]@31 ~]/2", R: "[g4,bb4,d5,f5]@7 ~", S: "[[g4,bb4,d5,f5]@7 ~@9 [e4,g4]@11 ~@5, ~@15 [bb4,c5]@11 ~@6]/2",
  T: "[e4,g4,bb4,c5] ~", U: "[g4,bb4,d5,f5]@3 ~", V: "[[a4,c5,d5,f5]@15 ~]/2", W: "[[a4,db5,f5]@15 ~]/2",
  X: "[a4,c5,d5,f5]@15 ~", Y: "[a4,c5,d5,g5]@5 ~@3 [a4,c5,d5,f5]@5 ~@3", Z: "[bb4,d5,f5,a5]@5 ~@3 [g4,c5,d5,f5]@5 ~@3",
  AA: "[g4,bb4,d5,f5] ~ [e4,g4,bb4,c5] ~", AB: "[a4,c5,d5,f5]@11 ~@5", AC: "[a4,c5,d5,g5]@3 ~ [a4,c5,d5,f5]@2 ~@2",
  AD: "[g4,bb4,d5,f5]@4 ~@4 [e4,g4,bb4,c5]@3 ~@5", AE: "[bb4,d5,f5]@2 f4 ~ f4 ~@2 f4 [bb4,d5,f5] f4 ~ f4 ~@4",
  AF: "[e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~@2 [e4,g4,bb4,c5] ~@8", // C7
  AG: "[bb4,d5]@2 [bb4,d5,f5] ~ [bb4,d5,f5] ~@2 f4 [bb4,d5,f5] ~@2 [bb4,d5,f5] ~@2 d4!2, f5 ~@15", // Bb
  AH: "[g4,bb4,c5]@2 [e4,g4,c5] ~ [e4,g4,bb4,c5] ~@2 [e4,g4,bb4,c5] ~@8, e4 ~ bb4@2 ~@12", // C7 C C7
  AI: "[bb4,d5,f5]@2 f4 ~ f4 ~@2 f4 [d5,f5] f4 ~ f4 ~@4, ~@4 bb4 ~@3", // Bb Dm
  AJ: "[bb4,f5] ~ [bb4,f5] ~ [bb4,d5,f5] ~@2 f4 [bb4,d5,f5] ~@2 [bb4,d5,f5] ~@2 d4!2, d5!2 ~@6", // Bb5 Bb
  AK: "[bb4,c5]@2 [e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~@2 [e4,g4,bb4,c5] ~@8, [e4,g4] ~@15", // Bbsus2 C7 Em
  AL: "[bb4,d5,f5]@2 f4 ~ f4 ~@2 f4 f5 ~@7", // Bb
})).s("gm_lead_8_bass_lead").gain(0.14).pan(0.2)

// chords · epiano1 · "Keyboard 3"
const epiano1 = note(`<
  A B C@2 D E F@2 G H@2 I J I J I J I J I K I J I K I J I J L M N O P Q P Q R S T J I J I J I J I J I J I J I J I J I J
  I J I J U V W@2 X Y Z AA AB AC AD AE AF AG AH AI AJ AI AH AI AK
>`.pickRestart({
  A: "[d3,d4] ~ [d3,d4] ~ [d3,d4] ~@2 [d3,d4]@3 ~@6", B: "[d3,d4]!2 ~ [d3,d4] ~ [d3,d4] ~ [d3,d4]@3 ~@6",
  C: "[[a3,c4,d4,f4]@9 ~ e4@2 f4@2 ~@2 [a3,d4,g4]@2 [a3,d4,g4]@2 ~@2 [a3,d4,g4]@2 ~@2 [a3,d4,f4]@3 ~@3, d3@31 ~, ~@5 [a3,d4]@2 ~@9]/2", // Dm7 Dsus4 Dm D5
  D: "[f3,bb3,d4,f4]@7 ~ [a3,d4,f4,g4]@2 [a3,d4,f4,g4]@2 ~@2 [a3,d4,f4,g4]@2", // Bb Dm
  E: "~@2 [g3,bb3,d4,f4]@2 ~@2 [g3,bb3,d4,f4]@3 ~ [g3,bb3,d4,e4]@3 ~ [g3,bb3,d4,e4] ~", // Gm7 Em7b5
  F: "[[a3,c4,d4,f4]@8 ~@2 e4@2 f4@3 ~ [a3,d4,g4]@2 [a3,d4,g4]@2 ~@2 [a3,d4,g4]@2 ~@2 [a3,d4,f4]@3 ~@3, d3@15 ~, ~@5 [a3,d4]@2 ~@9]/2", // Dm7 Dsus4 Dm D5
  G: "[f3,bb3,d4,f4]@7 ~ [a3,d4,f4]@2 [a3,d4,f4,g4]@2 ~@2 [a3,d4,f4,g4]@2, ~@8 g4 ~@7", // Bb Dm
  H: "[~@2 [g3,bb3,d4,f4]@3 ~ [g3,bb3,d4,f4]@3 ~ [g3,bb3,d4,e4]@3 ~ [bb3,d4,e4]@2 [bb3,d4,f4]@15 ~, ~@14 g3@17 ~]/2", // Gm7 Em7b5 Bb
  I: "[g3,bb3,d4,e4]@15 ~", J: "[g3,bb3,d4,f4]@15 ~", K: "[g3,bb3,d4,f4]",
  L: "~ [c4,d4,f4] ~ [c4,d4,f4] ~ [c4,d4,f4] ~ [c4,d4], ~@14 f4 ~", // Dm7 Csus2
  M: "~ [c4,d4,f4] ~ [c4,d4,f4] ~ [c4,d4,f4] ~ [c4,d4,f4]", // Dm7
  N: "[g3,bb3,d4]@2 [g3,bb3,d4,f4] ~@4 [g3,bb3,d4,f4] ~@8, f4 ~@15", // Gm Gm7
  O: "[g3,bb3,d4,e4]@2 [g3,bb3,d4,e4] ~@4 [g3,bb3,d4,e4] ~@8", // Em7b5
  P: "[g3,bb3,d4,f4]@2 [g3,bb3,d4,f4] ~@4 [g3,bb3,d4,f4] ~@8", // Gm7
  Q: "[bb3,d4,e4]@2 [g3,bb3,d4,e4] ~@4 [g3,bb3,d4,e4] ~@8, g3 ~@15", // Em7b5
  R: "[g3,bb3,d4,f4]@2 ~ [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]!3 [g3,d4,f4] ~@2, ~@13 bb3@2 ~", // Gm7 G7
  S: "[c4,d4,f4]@2 [c4,f4]@2 ~@2 [c4,d4,f4]@2 ~@2 [c4,d4,f4]@2 ~@2 [d4,f4] ~, ~@2 d4 ~@11 c4@2", // Dm7 F5 Dm7 Dm
  T: "~@5 g4@2 f4 g4@2 g4!4 ~@2", U: "~@2 [c4,d4,f4]@3 ~ [c4,d4,f4]@2 ~@2 [c4,d4,f4]@2 ~@2 [c4,d4,f4]@2",
  V: "~@2 [c4,d4,f4] ~@3 g4 ~ [c4,d4,f4,a4]@3 g4 ~@4, ~@5 [c4,d4,f4]@2 ~@9", // Dm7
  W: "~ [a3,db4,f4,g4] ~ [a3,db4,f4,g4] ~ [a3,db4,f4,g4] ~ [a3,db4,f4,g4]", // Aaug
  X: "~@2 [a3,c4,d4,f4]@2 ~@2 [a3,c4,d4,f4]@2 ~@2 [a3,c4,d4,f4]@2 ~@2 [a3,c4,d4,f4] ~", // Dm7
  Y: "~ [a3,c4,d4,g4] ~ [a3,c4,d4,g4] ~ [a3,c4,f4] ~ [c4,d4,f4], ~@10 d4 ~@3 a3 ~", // Am7 F Dm7
  Z: "~ [d4,e4] ~ [bb3,d4,e4] ~ [f4,g4] ~ [a3,d4,f4,g4], ~@2 [f3,bb3] ~@3 f3 ~@3 [a3,d4] ~@5", // Dsus2 Em7b5 Fsus2 Dm Bb5 D5
  AA: "~@2 [g3,bb3,d4,f4]@2 ~@2 [g3,bb3,d4,f4]@2 ~@2 [g3,bb3,d4,e4]@2 ~@2 [g3,bb3,d4,e4] ~", // Gm7 Em7b5
  AB: "~ [d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [c4,d4,f4], ~@2 [a3,c4] ~@11 a3 ~", // Dm Dm7 Am
  AC: "~ [a3,c4,d4,g4] ~ [a3,c4,d4,g4] ~ [a3,c4,d4,f4] ~ [a3,d4], ~@14 [c4,f4] ~", // Am7 Dm7 D5 F5
  AD: "~ [f3,bb3,e4] ~ [f3,bb3,d4,e4] ~ [a3,d4,f4,g4] ~ [a3,d4,f4,g4], ~@2 d4 ~@13", // Bb Dm
  AE: "~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,e4] ~ [g3,e4], ~@14 [bb3,d4] ~", // Gm7 Em7b5 C Bb
  AF: "[g3,bb3,d4,f4] ~@7 [g3,d4,f4] ~@7, ~@4 bb3 ~@3", // Gm7 G7
  AG: "[g3,bb3,d4,e4]@2 [g3,bb3,d4] ~ [g3,bb3,d4,e4] ~@2 [g3,bb3,d4,e4] ~@8, ~ e4 ~@6", // Em7b5 Gm Em7b5
  AH: "[g3,bb3,d4]@2 [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4] ~@4, f4 ~@15", // Gm Gm7
  AI: "[g3,bb3,d4,e4] ~ [g3,bb3,d4,e4] ~ [g3,bb3,d4,e4] ~@2 [g3,bb3,d4,e4] ~@8", // Em7b5
  AJ: "[g3,bb3,d4,f4] ~@7 [g3,bb3,d4,f4] ~@7", AK: "[g3,bb3,d4,f4] ~@7 [g3,bb3] ~@7",
})).s("gm_epiano1").gain(0.35).pan(1)

// other · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note("<~@30 A B C D E F G H I J K ~@23 L M N O P Q R ~@6 S T U V W ~@2>".pickRestart({
  A: "g5@7 ~", B: "g5 f5@7", C: "c5 d5 c5@13 ~", D: "f5", E: "d5@3 c5@11 ~@2", F: "bb4@7 ~", G: "d5@2 c5@2 a4@3 g4@8 ~",
  H: "~@4 c5 b4 ~@2 g4@2 ~@2 f4@2 ~@2", I: "g4@2 ~@2 a4@2 ~@2 c5 d5@3 d5@3 ~",
  J: "d5 ~ f5 ~ g5 ~ a5 ~ c6@2 ~@2 a5 ~ g5 ~", K: "f5@11 ~@5", L: "~@2 g5@2 f5 d5 d5@2",
  M: "f5@2 g5 ~ g5 ~ f5 ~ g5 ~ f5 ~ g5 ~ f5 ~", N: "g5@3 ~ a5@3 ~ a5@3 ~ a5@3 ~",
  O: "a5!2 ~ a5!2 ~ a5 a5@2 a5!2 ~ a5!2 ~ a5", P: "a5 ~ a5 ~ a5 ~ a5 ~",
  Q: "bb5 a5 ab5 ~@3 f5@2 g5 ~ f5@2 e5 ~ d5 ~, ~@2 g5 ~@5, ~@5 gb5@2 ~@2 gb5@2 ~@2 eb5@2 ~",
  R: "~@2 d5@2 ~ c5 ~@2 d5@8, e5 ~@7, ~ eb5@2 ~ db5@2 ~ b4@2 ~@7", S: "~@9 g3 ~ f3 ~ d3 d3@2",
  T: "c3@2 ~@7 f5 ~ d5 ~ g4@3", U: "~ f5 ~ d5 ~ g4@3 ~ f5 ~ d5 ~ g4@3", V: "~ f5 ~ d5 ~ g4@3 c5 ~@3 g4@2 d4 ~",
  W: "f4@2 g4@2 f4 ~@11",
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0.8)

// drums · rim
const rim = s("rim").struct("<[~@7 x ~@7 x]!83 [~@7 x ~@8]>").gain(0.24)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x ~@4 x ~ x ~ x ~@3]!83 [x ~@2 x ~@12]>").gain(0.42)

// drums · snare
const snare = s("sd").struct(`<
  A@4 B@4 A@2 B@2 A@4 B C B@2 A B@6 A@2 B@2 A@4 B@3 A B@8 A B A B@4 A@3 B@6 A B A@2 B@4 A@2 B@3 A B@2 A B@3 D
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@6 x!2 ~@3", C: "~@4 x ~@7 x!2 ~@2", D: "~ x ~@2",
})).gain(0.42)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@2 A@2 ~@4 A@2 ~@2 A@4 ~@4 A ~@6 A@2 ~@2 A@4 ~@3 A ~@8 A ~ A ~@4 A@3 ~@6 A ~ A@2 ~@4 A@2 ~@3 A ~@2 A ~@4
>`.pickRestart({
  A: "~@11 x ~@4",
})).gain(0.24)

// drums · cowbell
const cowbell = s("cb").struct("<[~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~]!83 [~@2 x ~@2 x ~@10]>").gain(0.3)

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

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct(`<
// … 11 more lines

More by Sly