Strudelify

Tracks of My Tears

Smokey Robinson

KeyG majorTempo95 bpm
0:00/0:00
// Tracks of My Tears — Smokey Robinson
// 95 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 74 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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 · electric guitar muted
const electric_guitar_muted = note("<~ A@7 B@8 C@8 D@8 E@8 F@6 G@8 H@2 I@8 C@8 J@2>".pickRestart({
  A: "[~@14 [g2,b3]@6 ~@3 [c3,c4]@9 ~@6 [c3,c4]@6 ~@3 [d3,d4]@9 ~@6 [g2,b3]@6 ~@3 [c3,c4]@9 ~@6 c4@2 ~ b3@2 ~ a3@2 ~ g3@13 ~@8 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~ c3, ~@110 g2@7 ~@41 g2@8 ~@2, ~@113 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~@2]/7", // G C D G C
  B: "[~@8 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@8 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~@10 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@8 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~ c3, ~@38 g2@7 ~@41 g2@8 ~@40 g2@7 ~@41 g2@8 ~@2, ~@41 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~ c3@11 ~@31 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~@2]/8",
  C: "[~@8 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@8 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@4 g2@3 ~@3 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~ c3, ~@38 g2@7 ~@41 g2@8 ~@88 g2@8 ~@2, ~@41 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~@2]/8",
  D: "[~@8 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@8 c4@2 ~@10 b3@2 ~@10 c4@3 ~@9 b3@2 ~@10 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~@10 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@8 b3@2 ~ c3, ~@38 c3@8 ~ g2@11 ~@7 g3@5 ~@7 d3@5 ~@7 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~ c3@11 ~@31 d3@5 ~@2, ~@53 d3@5 ~@4 c3@9 g2@11 ~@4 g2@7 ~@41 g2@8 ~@40 g2@7 ~@3]/8",
  E: "[~@8 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~@10 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@8 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@4 g2@3 ~@3 b3@2 ~ c3, ~@14 c3@8 ~ d3@11 ~@4 g2@8 ~@40 g2@7 ~@41 g2@8 ~@50, ~@41 d3@5 ~ c3@11 ~@31 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~@2]/8",
  F: "[~@8 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~@10 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@8 c4@2 ~@10 b3@2 ~@10 c4@3 ~@9 b3@2 ~@4 [g2,b3]@2 ~@8, ~@14 c3@8 ~ d3@11 ~@4 g2@8 ~@49 g2@11 ~@7 g3@5 ~@7 d3@5 ~@14, ~@41 d3@5 ~ c3@11 ~@28 c3@8 ~@7 d3@5 ~@4 c3@9 g2@11 ~@14]/6", // G
  G: "[~@14 [c3,b3]@6 ~@3 [g2,b3]@10 ~@5 [c3,b3]@6 ~@3 [g2,b3]@9 ~@6 [c3,b3]@6 ~@3 [g2,b3]@10 ~@5 [c3,g3,b3]@6 ~@3 [g2,b3]@9 ~@6 [c3,b3]@6 ~@3 [g2,b3]@9 ~@6 [c3,b3]@6 ~@3 [g2,b3]@10 ~@5 [c3,b3]@6 ~@3 [g2,g3,b3]@10 ~@5 [c3,b3]@6 ~@3 g2]/8", // Cmaj7 G Cmaj7 G Cmaj7 G Cmaj7 G …
  H: "[~@14 g3@4 ~ f#3@3 ~ e3@3 g3@4 ~ f#3@3 ~ e3@3 g3@4 ~@5 e3]/2",
  I: "[~@2 g3@3 ~@2 e3@4 g3@3 a3@22 ~@8 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@4 g2@3 ~@3 b3@2 ~@10 c4@2 ~@10 c4@2 ~@10 d4@2 ~@10 b3@2 ~ c3, ~@38 g2@7 ~@41 g2@8 ~@88 g2@8 ~@2, ~@41 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~ c3@11 ~@4 c3@8 ~ d3@11 ~@7 d3@5 ~@2]/8",
  J: "[~@8 c4@2 ~@4 c4@2 ~ b3@2 ~ a3 ~@2 g3@13 ~@12]/2",
})).s("gm_electric_guitar_muted").gain(0.5)

// chords · electric guitar muted · soft notes
const electric_guitar_muted_2 = note(`<
  ~ A@4 B C D E B C D E B C D E B C D F D C D E G H I C D E B C D E B C D F D C D E G H J K@7 L@2 M ~ B C D F D C D E B
  C D F D C D E ~
>`.pickRestart({
  A: "[~@14 g3@6 ~@3 g3@9 ~@6 g3@6 ~@3 a3@9 ~@6 g3@6 ~@3 g3@9 ~@16]/4", B: "~@10 g3 ~", C: "~@5 g3@6 ~@6 g3@5 ~@2",
  D: "~@5 a3@5 ~@10 g3@2 ~@2", E: "~@5 g3@5 ~@14", F: "~@5 g3@5 ~@7 g3@5 ~@2", G: "~@17 g3@5 ~@2", H: "~@4 g3 ~@7",
  I: "~@4 g3 ~@5 g3 ~", J: "~@4 g3 ~@2 g3 ~@4",
  K: "[~@14 g3@6 ~@3 g3@10 ~@5 g3@6 ~@3 g3@9 ~@6 g3@6 ~@3 g3@10 ~@14 g3@9 ~@6 g3@6 ~@3 g3@9 ~@6 g3@6 ~@3 g3@10 ~@5 g3@6 ~@4, ~@143 g#3 ~@24]/7",
  L: "[~@14 g3@6 ~@3 [g3,b3]@9 ~@16]/2", M: "~@19 f#3@3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.3)

// bass · fretless bass
const bass = note("<~ A@6 B@8 C@8 D@3 E F@6 G@8 H@5 I@8 J K L@7 M@8 N@3>".pickRestart({
  A: "[~@14 g2@9 c3@14 ~ c3@8 ~ d3@14 ~ g2@9 c3@14 ~ c3@3 b2@2 ~ a2@3 g2@14 ~ g1@6 ~@3 c2@9 ~@6 c2@6 ~@3 d2]/6",
  B: "[~@14 g1@6 ~@3 c2@13 ~@2 c2@3 b1@3 a1@3 g1@15 g1@6 ~@3 c2@9 ~@6 c2@6 ~@3 d2@9 ~@3 d2@2 ~ g1@6 ~@3 c2@9 ~@3 d1@2 ~ c2@3 b1@3 a1@2 ~ g1@9 ~@3 g1 ~@2 g1@6 ~@3 c2@9 ~@6 c2@5 ~@4 d2]/8",
  C: "[~@11 d2@3 g1@6 b1@2 ~ c2@9 ~@6 c2@3 b1@2 ~ a1@2 ~ g1@14 ~ g1@6 ~@3 c2@9 ~@6 c2@6 ~@3 d2@9 ~@3 d2@3 g1@6 ~@3 c2@10 ~@5 c2@6 ~@3 d2@9 ~@3 d2@2 ~ g1@6 ~@3 c2@10 ~@5 c2@6 ~@3 d2, ~@158 d2 ~@33]/8",
  D: "[~@11 d2@3 g1@6 ~@3 c2@9 ~@3 d1@2 ~ c2@3 b1@2 ~ a1@2 ~ g1@14 f#1 c2@6 ~@3 g1]/3",
  E: "~@5 g1@3 ~@3 g1@2 ~ c2@6 ~@3 g1",
  F: "[~@5 g1@3 ~@3 g1@2 ~ g1@2 ~@7 c2@9 ~@6 c2@6 ~@3 d2@9 ~@3 d2@2 ~ g1@6 ~@3 c2@11 ~@3 a1@3 ~ b1@2 ~ a1@2 ~ g1@9 b0 ~ d1 e1 ~ g1 g1@6 ~@3 c2@9 ~@6 c2@6 ~@3 d2]/6",
  G: "[~@11 d2@3 g1@7 ~@2 c2@10 ~@4 a1@3 ~ b1@2 ~ a1@2 ~ g1@14 ~ g1@6 ~@3 c2@9 ~@6 c2@6 ~@3 d2@9 ~@3 d2@3 g1@6 ~@3 c2@10 ~@5 c2@6 ~@3 d2@9 ~@3 d2@2 ~ g1@6 ~@3 c2@10 ~@5 c2@6 ~@3 d2, ~@158 d2 ~@33]/8",
  H: "[~@11 d2@3 g1@6 ~@3 c2@9 ~@3 d1@2 ~ c2@3 b1@2 ~ a1@2 ~ g1@14 f#1 c2@6 ~@3 g1@5 ~ g1@3 ~@3 g1@2 ~ c2@6 ~@3 g1@6 g1@3 ~@3 g1@2 ~ g1@2 ~@8]/5",
  I: "[~@14 c2@6 ~@3 g1@9 ~@3 g1@3 c2@6 ~@3 g1@6 d2@2 ~ g2@2 ~@4 c2@6 ~@3 g1@9 ~@3 g1@2 ~ c2@6 ~@3 g1@6 d2@2 ~ g2@3 ~@3 c2@6 ~@3 g1@5 ~ g1@3 ~@3 g1@3 c2@6 ~@3 g1@6 d2 ~@2 g2@2 ~@4 c2@6 ~@3 g1@5 ~ g1@3 ~@3 g1@2 ~ c2@6 ~@3 g1]/8",
  J: "~@5 g1@3 ~@3 g1@3 g2@4 ~ f#2@4 e2", K: "~@2 g2@4 ~ f#2@4 e2@3 g2@4 ~ f#2@3 ~ e2",
  L: "[~@2 g2@4 ~ e2@3 ~ g2@2 ~ c2@24 g1@6 ~@3 c2@9 ~@6 c2@6 ~@3 d2@9 ~@3 d2@3 g1@6 ~@3 c2@9 ~@6 c2@6 ~@3 d2@5 ~ d2@3 g2@3 ~@3 g1@6 ~@3 c2@9 ~@3 g1@3 c2@6 ~@3 d2]/7",
  M: "[~@5 d2@6 d2@3 g1@6 ~@3 c2@9 ~@5 a1@4 b1@2 ~ a1@3 g1@6 b0@2 d1 e1 ~ g1 e1@3 g1@6 ~@3 c2@10 ~@2 g1 ~@2 c2@6 ~@3 d2@5 ~ d2@3 g2@2 ~@4 g1@6 ~@3 c2@9 ~@3 g1 ~ a1 c2@6 ~@3 d2@5 ~ d2@2 ~ d2@3 g2@3 g1@6 ~@3 c2@9 ~@3 g1@3 c2@6 ~@3 d2, ~@85 a1@2 ~@105]/8",
  N: "[~@5 d2@3 ~@3 d2@2 ~ g1@6 a1@2 ~ c2@9 ~@3 g1@3 c2@2 ~ b1@2 ~ a1@2 ~ g1@15 ~@10]/3",
})).s("gm_fretless_bass").gain(0.6)

// bass · fretless bass · soft notes
const bass_soft = note("<~@11 A ~@14 B ~@2 C D ~ E ~ F ~@9 B ~@3 G ~ H ~ I ~@8 J ~@5 K ~ L ~@4>".pickRestart({
  A: "~@14 d2 ~@9", B: "~@8 b1 ~@15", C: "~@20 b1 ~@3", D: "~@23 a1", E: "~@20 b0 ~@3", F: "~@19 [a0,a#0] ~@4",
  G: "~@8 e2 ~@2 e2@2 ~@7 b2 ~@3", H: "~@11 g2@2 ~@11, ~@11 b2 ~@12",
  I: "~@7 d#2 ~@2 a2 g2@2 [f2,f#2] ~@10, ~@11 b2 ~@12", J: "~@11 g2@2 f#2 ~@10, ~@11 b2 ~@12",
  K: "~@11 g2@2 [f2,f#2] e2 ~@9, ~@11 b2 ~@12", L: "~@14 e2 ~@9",
})).s("gm_fretless_bass").gain(0.3)

// chords · piano
const piano = note("<~ A@2 B@4 C@6 D@4 E@8 F@6 D@4 E@8 G@3 H@8 I@2 J E@16 ~>".pickRestart({
  A: "[~@17 [b3,d5]@3 [d4,b4]@3 ~@12 c5@3 ~@6 g4@3 [d4,d5], ~@7 g3@17, ~@14 g5@15 e4@8 ~@4 e4@6 ~, ~@23 c4@14 ~ c4@8 ~@2, ~@23 c5@9 g4@6 c5@6 ~@4]/2", // Bm G D
  B: "[~@11 f#5@3 ~@3 d5@3 [d4,b4]@3 c5@6 ~@6 e5@2 ~ [c4,g4,c5,e5]@3 [b3,b4,d5]@2 ~ [a3,a4,c5]@3 [g3,g4,b4]@13 ~@5 d3@3 [g3,b3]@3 ~@12 c4@3 ~@3 e3@3 [g3,c4]@3 [d3,d4], ~@5 a4@9 g3@23 ~@25 g2@7 ~@2 [c3,e4]@13 ~@2 [c3,e4]@6 ~@4, ~@8 d5@6 g5@18 c5@5 ~@43 g3@6 ~@10, ~@17 b3@6 c4@14 ~@28 d4@5 ~@7 e3@8 ~@11, ~@29 e4@7 ~@26 g4@30 ~@4]/4", // G C Bm Am G C5 D C
  C: "[~@8 a3@3 f#4@3 ~@3 b2@3 d3@3 ~@12 c4@2 ~ [c3,c4,e4]@3 [b2,b3,d4]@2 ~ [a3,c4]@2 ~ [g2,g3,b3]@15 ~@3 d3@3 g3@3 [c3,c4,e4,g4]@14 ~ [c3,c4,e4,g4]@8 ~ [d3,d4,f#4,a4]@13 ~@5 d3@3 g3@3 [c3,c4,e4,g4]@14 ~ [c3,c4,e4,g4]@3 [b3,d4] ~@2 [a2,a3,c4] ~@2 [g2,g3,b3], ~@5 f#3@6 ~@3 g4@24 ~@106, ~@14 g2@9 [c3,e4]@13 ~@8 a2 ~@17 [g2,b3,d4,g4]@8 ~@40 [g2,d4,g4]@9 ~@18 b2@2 ~@5, ~@29 e3@8 ~@107, ~@32 g3@5 ~@73 b3@7 ~@27]/6", // C Bm Am G C D C Bm …
  D: "[~@14 g2@3 d3@3 g3@3 [c3,c4,e4,g4]@14 ~ [c3,c4,e4,g4]@8 ~ [d3,d4,f#4,a4]@14 ~@4 d3@3 g3@3 [c3,c4,e4,g4]@14 ~ [c3,c4,e4,g4]@3 [b3,d4] ~@2 [a2,a3,c4] ~@2 [g2,g3,b3], ~@14 [b3,d4,g4]@8 ~@40 [g2,d4,g4]@9 ~@18 b2@2 ~@5, ~@62 b3@7 ~@27]/4", // C D C Bm Am G G5
  E: "[~@14 [g2,b3,d4,g4]@7 ~@2 [c3,c4,e4,g4]@13 ~@2 [c3,c4,e4,g4]@8 ~ [d3,d4,f#4,a4]@14 ~ [g2,b3,d4,g4]@8 ~ [c3,c4,e4,g4]@14 ~ [c3,c4,e4,g4]@9 [d3,d4,f#4,a4]@14 ~ [g2,b3,d4,g4]@8 ~ [c3,c4,e4,g4]@13 ~@2 [c3,c4,e4,g4]@8 ~ [d3,d4,f#4,a4]@13 ~@2 [g2,b3,d4,g4]@8 ~ [c3,c4,e4,g4]@14 ~ e4@3 g4@3 a4@2 ~ [g2,g4,a4]]/8", // G C D G C D G C …
  F: "[~@14 [c3,c4,e4,g4]@8 ~ [g2,b3,d4,g4]@14 ~ [c3,c4,e4,g4]@7 ~@2 [g2,b3,d4,g4]@14 ~ [g2,b3,d4,g4]@3 ~@6 [c3,c4,e4,g4]@14 ~ [c3,c4,e4,g4]@8 ~ [d3,d4,f#4,a4]@13 ~@5 d3@3 g3@3 [c3,c4,e4,g4]@14 ~ [c3,c4,e4,g4]@3 [b3,d4] ~@2 [a2,a3,c4] ~@2 [g2,g3,b3], ~@110 [g2,d4,g4]@9 ~@18 b2@2 ~@5, ~@110 b3@7 ~@27]/6", // C G C G C D C Bm …
  G: "[~@14 [c3,c4,e4,g4]@8 ~ [g2,b3,d4,g4]@14 ~ [c3,c4,e4,g4]@7 ~@2 [g2,b3,d4,g4]@14 ~ [g4,b4,d5]@2 ~@8]/3", // C G C G
  H: "[~@14 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@13 ~@2 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@13 ~@2 [e4,g4,b4]@8 ~ [d4,g4,b4]@13 ~@2 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@13 ~@2 [e4,g4,b4]@8 ~ [d4,g4,b4]@14 ~ [e4,g4,b4]@7 ~@2 [d4,g4,b4]@14 ~ [e4,g4,b4]@8 ~ [d4,g4,b4]@14 ~ [e4,g4,b4]@8 ~ [d4,g4,b4], ~@95 a4 ~@96]/8", // Em G Em G Em G Em G …
  I: "[~@14 [g3,g4]@4 ~ [f#3,f#4]@4 [e3,e4]@3 [g3,g4]@5 [f#3,f#4]@4 [e3,e4]@3 [g3,g4]@5 [f#3,f#4]@4 [e3,e4]]/2", // G F# E G F# E G F# …
  J: "~@2 [g3,g4]@4 ~ [e3,e4]@4 [g3,g4]@3 [a3,a4]@10", // G E G A
})).s("gm_piano").gain(0.5)

// chords · tremolo strings
const tremolo_strings = note("<~@25 A@3 ~@3 B@5 ~@7 C@3 D@4 E@6 F@2 ~@16>".pickRestart({
  A: "[~@38 g5@24 [g4,g5] ~@9, ~@7 g4@24 ~@5]/3", // G
  B: "[~@11 [g4,a4] [b4,c5] [d5,e5,f5] ~@9 c5@24 d5@15 g5@9 c5@14 ~ c5@3 b4@3 a4@3 g4@14 ~@11, ~@7 g5@18 ~@35]/5", // Gsus2 Cmaj7 Dm
  C: "[~@19 g5@12 ~@5, ~@7 g4@24 ~@5]/3",
  D: "[~@14 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@10 ~@5 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@10 ~@5 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@9 ~@6 [e4,g4,b4]@7 ~@2 [d4,g4,b4]]/4", // Em G Em G Em G Em G
  E: "[~@11 d6 ~ e6 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@9 ~@6 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@10 ~@5 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@9 ~@6 [e4,g4,b4]@7 ~@2 [d4,g4,b4]@10 ~@5 g5@2 ~@3 f#5@2 ~@2 e5@2 ~ g5@2 ~@3 f#5@2 ~@2 e5@2 ~ g5@2 ~@3 f#5@2 ~@2 [e5,e6], ~@14 g6@95 ~ g6 ~@4 f#6 ~@3 e6 ~@2 g6 ~@4 f#6 ~@3 e6 ~@2 g6 ~@4 f#6 ~@4, ~@62 g5@47 ~@35]/6", // Em G Em G Em G Em G …
  F: "[~@2 g5@2 ~@3 [e5,e6]@2 ~@2 g5@2 ~ [a5,a6]@23 ~@11, ~@2 g6 ~@8 g6 ~@36]/2", // E A
})).s("gm_tremolo_strings").gain(0.35)

// other · trumpet
const trumpet = note(`<
  ~@2 A@2 B@2 ~@11 C D@2 E@2 F@2 ~@11 C D@2 E@2 F@2 ~@15 C D@2 E@2 F@2 ~ C D@2 E@2 F@2 ~@2
>`.pickRestart({
  A: "[~@14 c4@3 d4 ~@2 e4 ~@2 f#4@12 ~@13]/2", B: "[~@14 c4@2 ~ b3 ~@2 a3 ~@2 g3@15 ~@10]/2", C: "~@7 g4@5",
  D: "[~@2 g4@3 ~@2 e4@2 ~@2 d4@2 ~ e4@2 ~@2 e4@2 ~@3 g4@2 ~ a4@10 ~@2 g4@10]/2",
  E: "[~@2 g4@3 ~@2 e4@3 ~ d4@2 ~ e4@2 ~@3 e4@3 ~ g4@2 ~ f#4@10 ~@2 g4@10]/2",
  F: "[~@2 g4@4 ~ e4@3 ~@4 e4@2 ~@3 e4@3 ~ g4@2 ~ a4@12 ~@10]/2",
})).s("gm_trumpet").gain(0.8).pan(0.3)

// chords · brass section
const brass_section = note(`<
  ~@17 A B@2 C@2 D@2 ~@11 A B@2 C@2 D@2 ~@15 A B@2 C@2 D@2 ~ A B@2 C@2 D@2 ~@2
>`.pickRestart({
  A: "~@5 [b4,d5]@3, ~@7 g5@5", // Bm
  B: "[~@2 [b4,g5]@3 ~@2 [c5,e5]@3 ~ d5@2 ~ [c5,e5]@3 ~ [c5,e5]@2 ~@3 [c5,e5,g5]@2 ~ [d5,f#5,a5]@11 ~ [b4,d5,g5]@10]/2", // Em C D G
  C: "[~@2 [b4,g5]@3 ~@2 [c5,e5]@3 ~ d5@2 ~ [c5,e5]@2 ~@3 [c5,e5]@3 ~ [c5,e5,g5]@2 ~ [a4,d5,f#5]@10 ~@2 [b4,d5,g5]@10]/2", // Em C D G
  D: "[~@2 [b4,g5]@4 ~ [c5,e5]@3 ~ d5@2 ~ [c5,e5]@3 ~@2 [c5,e5]@3 ~ [c5,e5,g5]@2 ~ [d5,f#5,a5]@12 ~@10]/2", // Em C D
})).s("gm_brass_section").gain(0.4).pan(0.4)

// other · brass section
const brass_section_2 = note("<~@24 A@2 ~@16 A@2 ~@10 B@2 C@2 ~@6 A@2 ~@6 A@2>".pickRestart({
  A: "[~@14 [e3,e4]@3 [g3,g4]@3 [a3,a4]@3 [g3,g4]@14 ~@11]/2", // E G A G
  B: "[~@14 g3@2 ~@3 f#3@2 ~@2 e3@2 ~ g3@2 ~@3 f#3@2 ~@2 e3@2 ~ g3@2 ~@3 f#3 ~@3 e3]/2",
  C: "[~@2 g3@2 ~@3 f#3@2 ~@2 g3@2 ~ [d3,a3]@23 ~@11]/2", // D5
})).s("gm_brass_section").gain(0.4).pan(0.6)

// drums · rim
const rim = s("rim").struct("<[~@7 x ~@2 x ~] [~ x ~@2 x ~@7] ~@72>").gain(0.26)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B@2 C D B@3 E B@3 F B G B E B H B G D I B@3 J B@3 K B G B E B H B G D L M@2 D N D M D N O P Q N B E B N B R B S
  B E B N B R B ~
>`.pickRestart({
  A: "~@2 x ~@2 x ~ x!2 ~@11 x ~@3", B: "~@2 x ~@2 x", C: "~@5 x ~@2 x ~ x!2 ~@12", D: "~@5 x ~@2 x ~ x!2 ~@8 x ~@3",
  E: "~@8 x ~ x!2 ~@8 x ~@3", F: "~@5 x!4 ~@11 x ~@3", G: "~@5 x!3 ~@12 x ~@3", H: "~@5 x ~@2 x ~@2 x!3 ~@6 x ~@3",
  I: "~@5 x ~@2 x!3 ~@9 x ~@3", J: "~@8 x ~@2 x ~@8 x ~@3", K: "~@5 x ~ x ~@12 x ~@3", L: "~@5 x ~@2 x!3 ~@13",
  M: "~@2 x ~@2 x!4 ~@2 x ~@8 x ~@3", N: "~@2 x ~@2 x!3 ~@12 x ~@3", O: "~@5 x ~ x!2 ~@5 x ~@4 x ~@3 x",
  P: "~@2 x ~@4 x ~@3 x ~@2 x ~@4 x ~@3 x", Q: "~@2 x ~@4 x ~@3 x ~@2 x ~@9", R: "~@2 x ~@2 x ~@2 x!4 ~@8 x ~@3",
  S: "~@2 x ~@2 x!3 ~@3 x ~@8 x ~@3",
})).gain(0.66)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@5 A B@2 C A B@2 D E B@2 F G B H B G B I J K G H B@2 D E B@2 F G B H B G B I J K G L K@2 G K G K G@2 M ~@2 K B H B G
  B I J K B H B G B I J ~
>`.pickRestart({
  A: "~@17 x ~@2 x ~@2 x", B: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", C: "~@2 x ~@2 x ~@2 x ~@5 x ~@8 x",
  D: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x", E: "~@2 x ~@2 x ~@2 x ~@11 x ~@2 x",
  F: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x", G: "~@2 x ~@17 x ~@2 x", H: "~@2 x ~@14 x ~@2 x ~@2 x",
  I: "~@2 x ~@2 x ~@11 x ~@2 x ~@2 x", J: "~@2 x ~@2 x ~@2 x ~@14 x", K: "~@20 x ~@2 x", L: "~ x ~@5 x ~@4",
  M: "~ x ~@10",
})).gain(0.66)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@5 A ~@9 B ~ A ~@5 A ~@5 A ~@7 B ~@3 A ~@7 A ~@4>".pickRestart({
  A: "~@11 x ~@12", B: "~@11 x ~ x ~@10",
})).gain(0.66)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@3 B C ~@2 A D ~ E ~ D ~ F G H D E ~@2 B C ~@2 A D ~ E ~ D ~ F G H D E H@8 ~@3 H ~ E ~ D ~ F G H ~ E ~ D ~ F G
  ~
>`.pickRestart({
  A: "~@11 x ~@12", B: "~@5 x", C: "~@11 x ~@5 x ~@6", D: "~@5 x ~@11 x ~@6", E: "~@5 x ~@18", F: "~ x ~",
  G: "~@11 x ~@8 x ~@3", H: "~@17 x ~@6",
})).gain(0.66)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@17 A ~ B ~@5 B ~ C ~@7 B ~ B ~@5 B ~ C ~@3 D ~@3 E ~@3 B ~@3 B ~@3 D ~@3 B ~@4
>`.pickRestart({
  A: "~@10 x!2 ~@12", B: "~@4 x!2 ~@6", C: "~@11 x ~@12", D: "~ x ~", E: "~@8 x ~@2 x ~@12",
})).gain(0.66)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A B A@3 ~@3 A ~@3 A ~ A ~ A ~ A B A@2 ~ A@8 ~@3 A ~ A ~ A ~ A B A ~ A ~ A ~ A B ~
>`.pickRestart({
  A: "~@7 x ~@4", B: "~@14 x ~@8 x",
})).gain(0.66)

stack(
  electric_guitar_muted, electric_guitar_muted_2, bass, bass_soft, piano, tremolo_strings, trumpet, brass_section,
  brass_section_2, rim, kick, snare, hihat, mid_tom, open_hat, high_tom, crash
)

More by Smokey Robinson