Strudelify

Tell It Like It Is

Don Johnson

KeyF majorTempo78 bpm
0:00/0:00
// Tell It Like It Is — Don Johnson
// 78 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 82 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(78/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 1"
const piano = note(`<
  A ~@3 B@2 C@2 D E C@2 D F G H I H I J K L C@2 D M C@2 D N I H I H I J K L C@2 D O C@2 D N I H I H I J K L C@2 D P C@2
  N O C@2 N O C@2 N O C@2 Q R@8 ~
>`.pickRestart({
  A: "db-1",
  B: "[~@9 c5@7 ~@7 c7@14 ~@11, ~ c3@5 e4@11 ~@5 [e6,ab6]@15 ~@11, ~@2 e3@5 ab4@9 [e5,ab5]@22 ~@10, ~@3 ab3@7 ~@38, ~@4 c4@5 ~@7 c6@20 ~@12]/2", // E
  C: "[g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~", // Gm7
  D: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // F C
  E: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [gb3,a3,c4,d4] ~ [gb3,a3,c4,d4] ~ [gb3,a3,c4,d4] ~ [gb3,a3,c4,d4] ~ [gb3,a3,c4,d4] ~ [gb3,a3,c4,d4] ~", // Dm D7
  F: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // Dm F
  G: "[g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4] ~@3 [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~, ~@3 e4 ~@2", // Am7
  H: "[a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~", // Dm
  I: "[g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~", // Am7
  J: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~", // Bb
  K: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~", // C Bb
  L: "[a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [gb3,a3,c4,eb4] ~ [gb3,a3,c4,eb4] ~ [gb3,a3,c4,eb4] ~", // Am Am7 Gbdim
  M: "[f3,a3,c4,d4,f4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [gb3,a3,c4,eb4] ~ [gb3,a3,c4,eb4] ~ [gb3,a3,c4,eb4] ~", // Dm7 Dm Am7 Gbdim
  N: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  O: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4] ~ [gb3,a3,c4,eb4] ~ [gb3,a3,c4,eb4] ~ [gb3,a3,c4,eb4] ~", // F Am7 Gbdim
  P: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [gb3,a3,c4,d4] ~@11", // F D7
  Q: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [ab3,bb3,d4,f4] ~ [ab3,bb3,d4,f4] ~ [ab3,bb3,d4,f4] ~ [ab3,bb3,d4,f4] ~ [ab3,bb3,d4,f4] ~ [ab3,bb3,d4,f4] ~", // F Bb7
  R: "[[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,d4,g4]@180]/8", // F Dsus4
})).s("gm_piano").gain(0.36).pan(0.2)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@13 A B ~@7 C D E ~ F@2 E A B ~@7 F C E ~ C@2 E ~@9 C@2 E ~ F@2 D E C G C H C@2 D H C@2 I E ~@8
>`.pickRestart({
  A: "~@9 [f2,c3] [g2,d3] [ab2,eb3]", B: "[a2,e3] ~@5", C: "~@3 [f4,a4]@2 ~@4 [f4,a4]@2 ~",
  D: "~@6 [f4,a4]@5 ~@7 [f4,a4]@4 ~@2", E: "~@6 [f4,a4]@5 ~@13", F: "~@6 [f4,a4]@4 ~@8 [f4,a4]@5 ~",
  G: "~@2 [f4,a4] ~@3 [f4,a4] ~", H: "~@3 [f4,a4]@2 ~@7", I: "~@6 [f4,a4]@5 ~@7 [f4,ab4]@5 ~",
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.8)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@20 A B ~@9 C ~@4 A D ~@11 E ~@2 A F ~@28>".pickRestart({
  A: "g4 a4 e5@10 f4 g4 d5@10", B: "d4 e4 c5@11 ~@11", C: "~@12 d4 c4 f4 d4 c4 a3 c4 a3 g3 f3 d3 c3",
  D: "d4 e4 c5@10 ~@12", E: "~@12 d4 c4 f4 d4 c4 a3 c4 ~ g3 f3 d3 c3, ~@19 a3@3 ~@2", F: "d4 e4 c5@9 ~@13",
})).s("gm_electric_guitar_clean").gain(0.36).pan(0.7)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@21 A B ~ C D E ~ F@2 G ~@6 H I ~ J K E ~@10 L I ~ M N ~@2 O P Q ~ R S T ~ U@2 V ~@11
>`.pickRestart({
  A: "~@12 [g4,a4,c5]@6 [gb4,a4,c5]@5 ~", B: "[f4,g4,bb4] ~@5", C: "[a4,c5,f5]@9 ~ [a4,c5,f5]@2 [g4,c5,e5]@12",
  D: "[f4,d5]@12 g4@5 ~ gb4@5 ~, a4@11 ~, ~ c5", E: "[f4,g4,bb4] ~@7",
  F: "[[a4,c5,f5]@6 [g4,e5]@6 [f4,a4]@9 f4 g4 ab4, ~@2 c5@5 ~]/2", G: "a4 ~@23",
  H: "~@12 [a4,c5,e5]@5 ~ [a4,c5,eb5]@5 ~", I: "[g4,bb4,d5] ~@5",
  J: "[a4,c5,f5]@9 ~ [a4,c5,f5]@2 [g4,c5,e5]@9 ~ [g4,c5,e5]@2", // F C
  K: "[f4,d5]@9 ~ d5@2 [g4,a4,c5]@6 [gb4,a4]@4 ~@2, a4@10 f4 ~@7 c5@6", L: "~@2 [a4,c5,e5] [a4,c5,eb5]",
  M: "[a4,c5,f5]@7 ~ [a4,c5,f5]@4 [a4,c5,e5]@9 ~ [c5,e5]@2, ~@22 a4 ~", N: "[f4,a4,d5]@11 ~ [gb4,a4,d5] ~@11",
  O: "[a4,f5] [g4,e5]@5 [c5,e5] [f4,a4,d5]@5, c5@12 g4 ~@11", P: "[f4,a4,c5]@11 ~ [g4,a4,c5]@6 [gb4,a4,c5]@4 ~@2",
  Q: "[f4,g4,bb4] ~@11", R: "[a4,f5] [g4,e5]@5 [g4,c5,e5] [f4,a4,d5]@5, c5 ~",
  S: "[f4,a4,c5]@11 ~ [a4,c5,e5]@5 ~ [a4,c5,eb5]@6", T: "[g4,bb4,d5] ~@11",
  U: "[[a4,f5]@2 [g4,e5]@9 ~ [g4,c5,e5]@2 [a4,d5]@10 [a4,c5]@11 ~ [a4,c5,e5]@5 ~ [a4,c5,eb5]@6, c5@11 ~@3 f4@20 ~@14]/2", // Dm C D5 Am Adim
  V: "[g4,bb4,d5] ~@7", // Gm
})).s("gm_brass_section").gain(0.4).pan(0.3)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@14 A B C D E F G H I ~@2 J K ~@3 L M N O P Q R S T ~@2 U V ~@3 W X Y Z AA Q G AB AC ~@2 AD AE AF@2 AG AH AI AJ AG AK
  AL@3 AM AN AO ~@9
>`.pickRestart({
  A: "[g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5] ~@13 [g4,a4,c5,e5] ~ [a4,d5]@2 [a4,c5,e5] ~, ~@20 f5 ~@3", // Am7 D5 Am
  B: "[a4,d5,f5]@4 [a4,d5,f5] ~@13 [a4,d5,f5]@2 [c5,e5]@2 [a4,f5] ~, ~@20 a4 ~ d5@2", // Dm C Dm
  C: "[g4,a4,c5,e5]@4 [g4,a4,c5,e5] ~@9 [g4,a4,c5,e5] ~@3 [g4,a4,c5,e5]@6", // Am7
  D: "[a4,d5,f5]@3 ~ [a4,d5,f5] ~@13 [a4,d5,f5]@2 [a4,c5,e5]@2 [d5,f5] ~", // Dm Am Dm
  E: "[g4,a4,c5,e5]@4 [g4,a4,c5,e5] ~@11 [g4,a4,c5,e5]@5 [d2,e2,f2] [g2,a2,b2,c3] [d3,e3,f3,g3,a3,b3,c4]", // Am7 Dm Cmaj7 Dm7
  F: "[g5,g6] [f5,f6], [d4,e4] ~@23", G: "[g5,c6,e6] [f5,bb5,d6]",
  H: "[e5,a5,c6]@11 ~ [g5,e6]@6 [gb5,eb6]@5 ~, ~@12 [a5,c6]@11 ~", // Am C Ebm Am
  I: "[f5,g5,bb5,d6]@4 [e4,f4,g4,a4] [g3,a3,b3,c4,d4] [d3,e3,f3,g3] c3 ~@16", // Gm7 Fmaj7 G Em7
  J: "~@12 e5@6 [gb4,eb5]@5 ~, ~@12 [a4,c5]@11 ~, ~@12 g4@5 ~@7", // Ebm Am
  K: "~@3 d4 [a3,b3,c4] [e3,f3,g3] [c3,d3] ~@17, [f4,g4,bb4,d5]@5 ~@19", // Am Em Csus2 Gm7
  L: "[g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5] ~@13 [g4,a4,c5,e5] ~ [a4,d5,f5] ~ [g4,c5,e5] ~", // Am7 Dm C
  M: "[a4,d5,f5]@4 [a4,d5,f5] ~@13 [d5,f5] ~ [a4,d5] ~ [a4,f5] ~, ~@9 a4 e5 d5", // Dm D5 Dm
  N: "[g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5] ~@11 [g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5]@3 ~", // Am7
  O: "[a4,c5,d5,f5]@3 ~ [a4,c5,d5,f5] ~@13 [a4,d5,f5] ~ [c5,e5]@2 [a4,d5,f5] ~, ~@20 a4 ~@3", // Dm7 Dm C Dm
  P: "[g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5] ~@9 [g4,a4,c5,e5]@5 ~ [c2,d2,f2,g2] [a2,b2,c3,d3] [e3,f3,g3,a3] [b3,c4,d4,e4,f4,g4], ~@19 e2@2 ~@3", // Am7 Csus4 D7 Fmaj7 Cmaj7
  Q: "[g4,a4,b4,c5] ~@11 [f5,f6]@12, [g5,g6] ~", R: "[g5,c6] [f5,bb5,d6], e6 ~@23",
  S: "[e5,a5,c6]@11 ~ [g5,a5,c6,e6]@6 [gb5,a5,c6,eb6]@5 ~", // Am Am7 Gbdim
  T: "[f5,g5,bb5,d6]@6 [c5,d5,e5,a5] [d4,e4,f4,g4,a4,b4] [g3,a3,b3,c4] ~@15", // Gm7 Am Em7 Cmaj7
  U: "~@12 [g4,c5,e5]@6 [gb4,c5,eb5]@5 ~, ~@12 a4@11 ~", // C Cdim
  V: "[f4,g4,bb4,d5]@4 a4 [c4,d4,e4,f4] [f3,g3,a3,b3] [c3,d3,e3] ~@16", // Gm7 Dm7 G7 C
  W: "[g4,a4,c5,e5]@4 [g4,a4,c5,e5] ~@9 [g4,a4,c5,e5]@9 ~", // Am7
  X: "[a4,c5,d5,f5]@3 ~ [a4,c5,d5,f5] ~@15 [c5,e5]@2 [a4,f5] ~, ~@20 a4 ~ d5@2", // Dm7 C Dm
  Y: "[g4,a4,c5,e5]@4 [g4,a4,c5,e5] ~@3 [g4,a4,c5,e5] ~@7 [g4,a4,c5,e5]@6 ~@2", // Am7
  Z: "[a4,d5,f5]@3 ~ [a4,d5,f5] ~@13 [a4,d5]@2 [c5,e5]@2 [d5,f5]@2, ~@18 f5 ~@3 a4 ~", // Dm D5 C Dm
  AA: "[g4,a4,c5,e5]@4 [g4,a4,c5,e5] ~@9 [g4,a4,c5,e5]@7 [e2,f2,g2,a2,b2] [c3,d3,e3,f3,g3,a3] [b3,c4,d4,e4,f4,g4]", // Am7 Em Dm7 Cmaj7
  AB: "[e5,a5,c6]@12 [g5,a5,c6,e6]@6 [gb5,a5,c6,eb6]@5 ~", // Am Am7 Gbdim
  AC: "[f5,g5,bb5,d6]@3 [c5,d5,e5] [e4,f4,g4,a4,b4] [g3,a3,b3,c4,d4,e4] [a2,b2,c3,d3,e3,f3,a3] ~ [e2,f2] [g2,a2,b2] [c3,d3,e3] [f3,g3,a3,b3,c4,d4] [d5,f5,g5,bb5]@3 [d4,e4,f4,g4] [f3,g3,a3,b3,c4] [a2,b2,c3,d3,e3] [f2,g2] ~@5, ~@12 [d4,e4,f4,g4] ~@11", // Gm7 C Em Cmaj7 Dm7 Fmaj7 G C …
  AD: "~@12 [a4,d5] ~@11", AE: "~@8 c4 d4 ~ d4 f4!2 ~@10, ~@5 f4 ~@6",
  AF: "[~@2 [f4,a4] [c5,d5] c5 a4 c4@16 bb3@4 a3@6 c4 d4 f4 ~@13]/2", AG: "~@12 [g4,a4,c5,e5]@6 [gb4,a4,c5,eb5]@5 ~",
  AH: "[f4,g4,bb4,d5]@4 [d4,e4,f4,a4] [d3,e3,f3,g3,a3,b3,c4] [a2,b2,c3] ~@9 f4 g4 bb4!2 ~@4", // Gm7 Dm Dm7 Am
  AI: "~@8 g4 [a4,c5] d5 a4 ~@2 c4@8 ~ d4, ~@5 c5 ~@6", AJ: "f4 ~@5 [c4,f4]@2 d4 ~@15",
  AK: "[f4,g4,bb4,d5]@3 [d4,e4] [a3,bb3,b3,c4] [b2,c3,db3,d3] [g2,a2,bb2] ~@2 [e2,f2,g2,a2] [b2,c3,d3,e3] [f3,g3,a3,b3,c4] [d5,f5,g5,bb5]@3 [e4,f4,g4,a4,b4] [g3,a3,b3,c4,d4] [b2,c3,db3,d3,e3,f3] [g2,a2] ~@5, ~@12 [d4,e4] ~@11", // Gm7 Dsus2 Gm Fmaj7 Cmaj7 F Gm7 Em …
  AL: "[~@16 [c5,d5] a4 c4@42 [g4,a4,c5,e5]@5 ~ [gb4,a4,c5,eb5]@4 ~@2]/3", // Csus2 Am7 Gbdim
  AM: "[f4,g4,bb4,d5]@3 [f4,a4] [c4,d4,e4] [g3,a3,b3] [c3,d3,e3,f3] [a2,b2] ~@16", AN: "~@2 d5 [a4,c5] c4@12 ~@6 c4 d4",
  AO: "f4 ~ f4 ~@21",
})).s("gm_rock_organ").gain(0.36)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@6 A B C D E F C G H I J I K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AE AI AJ AK AL AM AN Z AO AB AP AQ
  AR AS AT AU S AV AW AX AY AZ BA BB S BC BD BE S BF BG BH@2 ~@7
>`.pickRestart({
  A: "g1@7 ~@3 g1@2 d1@10 ~@2", B: "c2@8 ~@2 c2@2 c2@9 ~ c2@2", C: "f1@9 ~ f1@2 e2@9 ~ e2@2",
  D: "d2@8 ~@2 d2@2 gb1@9 ~ gb1@2", E: "g1@7 ~@3 g1@2 d1@8 ~@2 d2@2", F: "c2@4 ~ c2 c2@4 ~ c2",
  G: "d2@8 ~@2 d2@2 f1@5 ~ f1@2 g1@2 ab1@2", H: "a1@7 ~@3 g1@2 a1@6 ~@2 c2@2 db2@2",
  I: "d2@7 ~@3 c2@2 d2@4 e2@4 f2@2 g2@2", J: "a1@7 ~@3 a1@2 a1@6 ~@4 g1@2", K: "a1@7 ~@3 g1@2 a1@8 ~@2 a1@2",
  L: "bb1@2 a1@2 g1 f1 bb1@4 ~ bb1", M: "c2@7 ~ g1@2 c2@2 bb1@8 ~@2 bb1@2", N: "a1@9 ~ a1@2 c1@6 gb1@6",
  O: "g1@6 ~@4 g1@2 d1@7 ~@5", P: "c2@7 ~@3 c2@2 c2@8 ~@2 c2@2", Q: "f1@4 ~ f1 e2@4 ~ e2", R: "d2@9 ~ d2@2 c2@6 gb1@6",
  S: "g1@7 ~@3 g1@2 d1@6 ~@4 d2@2", T: "c2@7 ~@3 c2@2 c2@9 ~ c2@2", U: "f1@7 ~@3 f1@2 c2@9 ~ c2@2",
  V: "f1@8 ~@2 f1@2 f1@5 ~ f1@2 g1@2 ab1@2", W: "a1@3 ~@2 g1 a1@3 ~ c2 db2", X: "d2@4 ~@6 c2@2 d2@3 ~ e2@3 ~ f2@2 g2@2",
  Y: "a1@2 ~@3 g1 a1@2 ~@2 g1 a1", Z: "d2@6 ~@4 c2@2 d2@3 ~ e1@4 f1@2 g1@2", AA: "a1@5 ~@5 g1@2 a1@6 ~@4 a1@2",
  AB: "bb1@3 ~ a1@4 g1@2 f1@2 bb1@6 ~@4 bb1@2", AC: "c2@7 ~ g1@2 c2@2 bb1@9 ~ bb1@2", AD: "a1@4 ~ a1 c2@3 gb1@3",
  AE: "g1@7 ~@3 g1@2 d1@7 ~@3 d2@2", AF: "c2@8 ~@2 c2 ~ c2@7 ~ c2@2 d2@2", AG: "f1@4 ~ f1 c2@4 ~ c2",
  AH: "d2@7 ~@3 d2@2 c2@6 gb1@6", AI: "c2@7 ~@3 c2@2 c2@7 ~ c2@2 d2@2", AJ: "f2@9 ~ f2 ~ c2@9 ~ c2@2",
  AK: "f1@9 ~ f1 ~ f1@5 ~ f1@2 g1@2 ab1@2", AL: "a1@6 ~@4 g1@2 a1@5 ~@3 c2@2 db2@2",
  AM: "d2@4 ~@6 c2 ~ d2@3 ~ e2@3 ~ f2@2 g2@2", AN: "a1@2 ~@3 g1 a1@3 ~ a1 c2", AO: "a1@5 ~@5 g1@2 a1@6 ~@2 a1@2 c2@2",
  AP: "c2@3 ~ g1 c2 bb1@4 ~ bb1", AQ: "a1@7 ~@3 a1@2 c2@6 gb1@6", AR: "g1@6 ~@4 g1@2 d1@7 ~@3 d2@2",
  AS: "c2@7 ~@3 c2 ~ c2@7 ~ c2@2 d2@2", AT: "f1@9 ~ f1@2 c2@7 ~@3 c2@2", AU: "f2@3 ~@2 f2 d2 ~@5",
  AV: "c2@8 ~@2 c2 ~ c2@6 ~@2 c2@2 d2@2", AW: "f1@7 ~@3 f1@2 c2@7 ~@3 c2@2",
  AX: "f2@9 ~ f2@2 a1@2 c2@2 e2@2 c2@2 a1@2 gb1@2", AY: "g1@6 ~@4 g1@2 d1@9 ~ c2 ~",
  AZ: "c2@9 ~ c2@2 g1@6 c2@6, d2 ~@23", BA: "f1@8 ~@2 f1@2 c2@9 ~ c2@2", BB: "f1@4 ~ f1 a1 c2 e2 gb2 c2 gb1",
  BC: "c2@7 ~@3 c2@9 ~ c2@2 d2@2", BD: "f2@4 ~ f2 c2@4 ~ c2", BE: "f1@7 ~ f1@2 a1@2 c2@2 e2@2 c2@2 gb1@6",
  BF: "c2@4 ~ c2 c1@5 c2", BG: "f1@9 ~ f1@2 bb1@9 ~ bb1@2", BH: "[f1@3 d2 c2 a1 f1@9 ~@9]/2",
})).s("gm_acoustic_bass").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~@6 A@2 B A@12 C A@3 C A@11 C A B A@13 C A@3 B A@6 B C B@3 C B A@2 B ~@8>".pickRestart({
  A: "x ~@4 x!2 ~@4 x", B: "x ~@4 x!2 ~@5", C: "x ~@4 x!2 ~@2 x ~@2",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@6 A@15 B ~@8 A@7 B ~@8 A@7 B ~@28>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@22 A@3 B A@3 C ~@8 A@3 D A@2 E F ~@8 A@3 G A@3 H A@3 I A@3 E A@3 G ~@8>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x!2 ~@2", C: "~@3 x ~@3 x!2 ~@3", D: "~@3 x ~ x ~ x ~ x ~@2", E: "~@3 x ~@3 x ~ x ~@2",
  F: "~ x ~@6 x!2 ~@2", G: "~ x ~@2", H: "~ x ~ x ~@2 x!2 ~@4", I: "~@3 x ~@3 x ~ x!3",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@21 A ~@3 B ~@3 B ~@7 C ~@3 B ~@3 D ~@7 B ~@7 E ~@3 B ~@3 B ~@3 F ~@8>".pickRestart({
  A: "~@10 x!2", B: "~@11 x", C: "~@5 x", D: "~@23 x", E: "~@5 x ~@5 x", F: "~@5 x ~@6",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@6 A@15 B A@15 B A@8 C@7 B A C@2 D A C A@2 C E A E A C@6 F ~@8>".pickRestart({
  A: "x!12", B: "x!7 ~@2 x ~@2", C: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", D: "x!7 ~@5",
  E: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", F: "x ~ x!3 ~ x ~ x ~ x ~ x ~@11",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 A ~@7 B ~@7 C ~@3 B ~@3 D ~@7 B ~@7 E ~@3 B ~@3 B ~@3 F ~@8>".pickRestart({
  A: "~@8 x!2 ~@2", B: "~@5 x", C: "~@2 x", D: "~@10 x!2", E: "~@2 x ~@2 x", F: "~ x ~",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@21 A ~@3 B ~@3 C ~@7 D ~@3 C ~@3 E ~@7 C ~@7 F ~@3 C ~@3 C ~@3 G ~@8>".pickRestart({
  A: "~@6 x!2 ~@4", B: "~@5 x", C: "~@3 x", D: "~ x", E: "~@5 x ~@2 x!2 ~@2", F: "~ x ~ x", G: "~ x ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A ~@6 B A ~@2 B A ~@3 A ~@6 B A ~@3 A ~@3 A ~@6 C ~@3 D A ~@2 C ~@3 C ~@3 C ~@3 D ~@8
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "~@6 x ~@2 x ~ x", D: "~ x",
})).gain(0.4)

stack(
  piano, electric_guitar_muted, electric_guitar_clean, brass_section, rock_organ, bass, kick, rim, snare, low_tom,
  hihat, mid_tom, high_tom, crash
)

More by Don Johnson