Strudelify

Minute by Minute

The Doobie Brothers

KeyC majorTempo95 bpm
0:00/0:00
// Minute by Minute — The Doobie Brothers
// 95 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 92 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 · epiano2 · "E Piano2"
const epiano2 = note(`<
  ~ A B C D E@4 F G H I J K L M N O P Q N O R S T U V W X Y Z AA AB AC AD AE AF AG AH AI P Q N O R S T U V W X Y AJ AK
  AL AM B AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF AY AZ BA BB BC BD BE BF BG BH BI BJ BK@3
>`.pickRestart({
  A: "~@8 [d2,c4,d4,f4,a4] d3 [e1,c4,e4,g4] e2", // Dm7 C
  B: "[f1,c4,f4,a4,c5] f2 [f#1,c4,d#4,a4,c5] f#2 [g1,c4,e4,g4,c5] g2 [g#1,d4,f4,g#4,b4] g#2 [a1,a3,c4,e4,a4] a2 [b1,g3,d4,f4,g4] b2", // F F#dim C G#dim Am G7
  C: "[c2,g3,c4,e4,g4] c3 [c#2,c#4,e4,g4,a#4] c#3 [d2,c4,d4,f4,a4] d3 [e1,c4,e4,g4] e2 [f1,a3,c4,f4] f2 [f#1,c4,d#4,f#4,a4] f#2", // C C#dim Dm7 C F F#dim
  D: "[g1,c4,e4,g4,c5] g2 [g#1,d4,e4,g#4,b4] g#2 [a1,c4,e4,a4] a2 [b1,g3,d4,f4,g4] b2 [c2,g3,c4,e4,g4] c3 [c#2,a#3,c#4,e4,g4] c#3", // C E7 Am G7 C C#dim
  E: "[d2@2 ~@2 a2 ~ [c3,d3] ~@3 d3@6 a2 ~ [c3,d3] ~@3 d2@6 a2 c3 d3 ~@3 d3@6 a2 c3 d2 ~@3 g1@6 d2 e2 g2 ~@3 g2@6 d2 ~ [e2,g2] ~@3 g1@6 d2 e2 g2 ~@7 [d#4,c5] ~ [d2,e4,c5] ~ [g2,c5] ~ [g1,d#4,c5] ~ [a1,e4,c5] ~, [a3,c4,d4,f4]@23 [a3,c4,d4,f4]@16 ~@2 g2@3 ~ f4 ~@2]/4", // Csus2 Em Cm C C5 Cm Am Dm7
  F: "~@2 c3@2 [b3,d4,e4,g4]@3 ~ [a3,c4,d4,f4] ~ c3 ~ [g3,b3,c4,e4]@4 c3@2 [a3,c4,d4,f4] ~@3 c3@2, c2 ~@5", // Em7 Dm7 Cmaj7 Dm7
  G: "[b3,d4,e4,g4]@4 c3@2 [a3,c4,d4,f4] ~@3 c3 ~ [g3,b3,c4,e4]@4 c3@2 [a3,c4,d4,f4] ~ c3 ~ g3 ~", // Em7 Dm7 Cmaj7 Dm7
  H: "~@2 c3@2 [b3,d4,e4,g4]@2 c3 ~ [a3,c4,d4,f4] ~ c3 ~ [g3,b3,c4,e4]@4 c3@2 [a3,c4,d4,f4] ~@3 c2@2, c2 ~@5", // Em7 Dm7 Cmaj7 Dm7
  I: "[b3,d4,e4,g4]@4 c3@2 [a3,c4,d4,f4] ~ c3 ~ g3 ~ [g3,b3,c4,e4] ~ d#4 ~ c4 ~ [c4,g4]@3 ~ [c4,f4,a4] ~, ~@18 [d#4,e4] ~@5", // Em7 Dm7 Cmaj7 C5 F Emaj7
  J: "~@2 c3@2 [b3,d4,e4,g4]@2 c3 ~ [a3,c4,d4,f4] ~ c3 ~ [g3,b3,c4,e4]@3 ~ [g3,b3,c4,e4] ~ c3@2 [a3,c4,d4,f4] ~ c3@2, c2 ~@5", // Em7 Dm7 Cmaj7 Dm7
  K: "[b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ c3 ~ [a3,c4,d4,f4] ~ c3 ~ [b3,c4,e4]@4 [c3,g3] ~ [a3,c4,d4,f4]@3 ~ [c3,a3] ~, ~@4 g3 ~@3", // Em7 Dm7 Cmaj7 C5 Dm7 F
  L: "[c2,b3,d4,e4,g4]@4 [b3,d4,e4,g4] ~ c3 ~ [a3,c4,d4,f4]@2 c3 ~ [g3,b3,c4,e4]@3 ~ [g3,b3,c4,e4] ~ c3 ~ [a3,c4,d4,f4] ~ c3 ~", // Cmaj7 Em7 Dm7 Cmaj7 Dm7
  M: "[b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ c3 ~ [a3,c4,d4,f4] ~ c3 ~ [b3,c4,e4]@4 c2@2 [a3,c4,d4,f4]@4 c3 ~, ~@12 g3@3 ~ g3 ~@7", // Em7 Dm7 Cmaj7 Dm7
  N: "[f2,a#3,d4,d#4,g4]@4 [a#3,d4] ~ f2 ~ [d4,d#4,g4] ~ f2@2 [a#3,d4,d#4,g4]@3 ~ [d4,d#4] ~ f2@2 [a#3,d4,d#4,g4] ~ f2@2", // D#maj7 A# D#maj7
  O: "[a3,d4,d#4,g4]@3 ~ [a3,d4,d#4,g4] ~ f2 ~ [d4,d#4,g4] ~ f2 ~ [a3,d4,d#4,g4]@3 ~ [a3,d4,d#4,g4] ~ f2 ~ [a3,d4,d#4,g4] ~ f2 ~", // Dsus4 D#maj7 Dsus4
  P: "[g2,g3,a3,c4,e4]@4 [g3,a3,c4] ~@5 g2@2 [g3,a3,c4,e4]@3 ~ [g3,a3,c4,e4] ~ g2 ~ e4 ~ g2 ~", // Am7
  Q: "[f3,a3,c4,d4]@3 ~ [f3,a3,c4,d4] ~ g2 ~@3 g2 ~ [f3,a3,c4,d4]@3 ~ [f3,a3,c4,d4] ~ g2 ~ [f#2,e3]@3 ~", // Dm7 F#7
  R: "[b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ c3 ~ [b3,d4,e4,g4] ~ c3 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ c3 ~ [b3,d4,e4,g4] ~ c3 ~", // Em7
  S: "[g2,f3,a3,c4]@4 [f3,a3,c4] ~@3 [f3,a3,c4] ~@3 [f3,a3,c4]@3 ~ [f3,a3,c4] ~ g2 ~ f#2@3 ~, ~@5 g2@3 ~@4", // F
  T: "[f2,c4,e4,g4] ~@3 f2 ~@5 f2 ~ [g3,c4,e4] ~@3 f2 ~@5 f2@2, ~ [a3,d4,f4] ~ [a3,d4,f4]", // C Dm
  U: "[g2,c4]@2 ~@2 g2 ~ [a3,d4,f4]@4 g2 ~ [g3,c4,e4] ~@3 g2 ~ [a3,d4,f4]@4 g2@2, [e4,g4] ~@23", // C5 Dm C Dm Em
  V: "[c3,g3,c4] ~@3 [c3,d4,e4] ~@3 [a3,c4,d4,f4]@2 c3 ~ [g3,b3,c4,e4]@3 ~ [g3,b3,c4,e4]@2 c3 ~ [a3,c4,d4,f4]@2 c3 ~, ~@4 [b3,g4]@2 ~@6 d4 ~@11", // C5 C Dm7 Cmaj7 Dm7 Em
  W: "[b3,d4,e4,g4]@3 ~@9 [a3,d4]@3 ~ [g#3,d4]@3 ~ [g3,d4]@2 ~@2", // Em7 D5 G#dim G5
  X: "[f2,c4]@2 ~@4 [a3,d4,f4]@4 ~@2 [g3,c4,e4] ~@5 [a3,d4,f4]@5 ~, [e4,g4] ~@3 f2@20", // F5 Dm C Dm Em
  Y: "[g2,c4,e4,g4] ~@3 g2@2 [d4,f4,a4]@4 g2 ~ [g2,c4,g4] ~ [d#4,c5] ~ c5@2 c5@2 [d#4,c5]@2 [e4,c5]@2, ~@16 e4 ~ f4 ~@5", // C Dm C5 Cm C
  Z: "c3@4 [b3,d4,e4,g4]@2 ~@2 [a3,c4,d4,f4] ~ c3 ~ [g3,b3,c4,e4]@4 c2@2 [a3,c4,d4,f4] ~@3 c3@2", // Em7 Dm7 Cmaj7 Dm7
  AA: "[b3,d4,e4,g4]@5 ~ [a3,c4,d4,f4] ~@3 c3 ~ [g3,b3,c4,e4]@4 c3 ~ [a3,c4,d4,f4] ~@3 c3@2, c2@3 ~@5", // Em7 Dm7 Cmaj7 Dm7
  AB: "~@4 [b3,d4,e4,g4] ~@3 [a3,c4,d4,f4] ~ c3 ~ [b3,c4,e4]@4 [c3,g3] ~ [a3,c4,d4,f4] ~@3 c3@2, c2@8 ~@4 g3@3 ~@9", // Em7 Dm7 Cmaj7 C5 Dm7
  AC: "[b3,d4,e4,g4]@5 ~ [a3,c4,d4,f4] ~@3 c3 ~ c2@2 c5@3 ~ c5@2 d#4 ~@3, c2@8 ~@6 d#4 ~@3 f4 ~@5", // Em7 Dm7
  AD: "c2@4 [b3,d4,e4,g4] ~ c3 ~ [c4,d4,f4] ~ c2@2 [g3,b3,c4,e4]@4 c3 ~ [a3,c4,d4,f4] ~@3 c3@2, ~@4 a3 ~@7", // Em7 Dm7 Cmaj7 Dm7
  AE: "[b3,d4,e4,g4]@4 c2 ~ [a3,c4,d4,f4] ~@3 c3@2 [g3,b3,c4,e4]@4 c3 ~ [a3,c4,d4,f4] ~@3 c3@2", // Em7 Dm7 Cmaj7 Dm7
  AF: "c2@4 [b3,d4,e4,g4] ~ c3 ~ [c4,d4,f4] ~ c3 ~ [g3,b3,c4,e4]@4 c3@2 [a3,c4,d4,f4] ~@3 c3@2, ~@4 a3 ~@7", // Em7 Dm7 Cmaj7 Dm7
  AG: "[b3,d4,e4,g4]@4 c2@2 [a3,c4,d4,f4] ~@3 c3@2 [g3,b3,c4,e4]@4 c2@2 [a3,c4,d4,f4] ~@3 c3 ~", // Em7 Dm7 Cmaj7 Dm7
  AH: "[f2,a#3,d4,d#4,g4]@4 [a#3,d4,d#4,g4] ~ f2 ~ [a#3,d4,d#4] ~ f2 ~ [a#3,d4,d#4,g4]@3 ~ [a#3,d4,d#4,g4] ~ f2 ~@3 f2 ~", // D#maj7
  AI: "[a3,d4,d#4,g4]@3 ~ [a3,d4,d#4,g4] ~ f2 ~ [a3,d4,d#4,g4] ~ f2 ~ [a3,d4,d#4,g4]@4 [a3,d4,d#4,g4] ~ f2 ~@3 f2 ~", // Dsus4
  AJ: "c2@2 c3 ~ [b3,d4,e4,g4]@2 c3 ~ [a3,c4,d4,f4]@2 c3 ~ [g3,c4,e4]@2 c2 ~ [g3,b3,c4,e4]@2 c3@2 [a3,c4,d4,f4]@2 c3 ~", // Em7 Dm7 C Cmaj7 Dm7
  AK: "[c2,b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@2 c3@2 [a3,c4,d4,f4]@2 c3@2 [a3,d4]@3 ~ [g#3,d4]@3 ~ c4@2 f#3 ~, ~@20 g3 ~@3", // Cmaj7 Em7 Dm7 D5 G#dim
  AL: "[d1,c4,f4,a4,c5] d2 [e1,c4,e4,g4,c5] e2 [f1,c4,f4,a4,c5] f2 [f#1,c4,d#4,f#4] f#2 [g1,c4,e4,g4] g2 [g#1,d4,g#4,b4] g#2", // Dm7 C F Cdim C G#dim
  AM: "[a1,c4,e4,a4] a2 [b1,g3,d4,f4,g4] b2 [c2,c4,e4,g4] c3 [c#2,c#4,e4,g4,a#4] c#3 [d2,c4,d4,f4,a4] d3 [e1,c4,e4,g4] e2", // Am G7 C C#dim Dm7 C
  AN: "[c2,g3,c4,e4,g4]@2 c3@2 [c#2,c#4,e4,g4,a#4]@2 c#3@2 [d2,c4,d4,f4,a4]@2 d3@2 [e3,e4]@4 [d3,d4]@4 [b2,b3]@3 ~", // C C#dim Dm7 E D B
  AO: "[e2,b3,d4,e4,g4]@4 [b3,d4,e4,g4] ~ b2@2 ~@2 b2 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ b2@2 ~@2 b2 ~, ~@3 e2 ~@2", // Em7
  AP: "[b3,d4,e4,g4]@3 ~ [d4,e4,g4] ~ b2 ~@3 b2 ~ [e2,b3,d4,e4,g4]@4 [b3,d4,e4,g4] ~ e2@2 d2@3 ~, e2@2 b3 ~@9", // Em7
  AQ: "[c2,b3,d4,e4,g4]@4 [b3,d4,e4,g4] ~@5 g2@2 [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ c3@2 ~@2 g2@2, ~@12 c3 ~@11", // Cmaj7 Em7
  AR: "[b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ g2@3 ~ g2 ~ [c3,b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~ c3 ~ [g3,c4] ~@3, c3@4 ~@16 b2@3 ~", // Em7 Cmaj7 Em7 C5
  AS: "[g3,c4,e4]@3 ~ [g3,c4,d4] ~ e2@2 g3 ~ e2 ~ [a2,g3,c4,e4]@4 [g3,c4,e4] ~ e2@2 g3 ~ e2 ~, a2 ~@5", // C Gsus4 Am7 C
  AT: "[g3,c4,e4]@3 ~ [g3,c4,e4] ~ e2@2 g3 ~ e2 ~ [a2,g3,c4,e4]@4 [g3,c4,e4] ~ b2 ~ c3@3 ~, a2 ~@5", // C Am7 C
  AU: "[d3,c4,e4,g4]@4 [c4,e4,g4] ~@5 a2@2 [c4,e4,g4]@3 ~ [c4,e4,g4] ~ d3@2 c4 ~ a2@2, ~@3 d3 ~@2", // C
  AV: "[c4,e4,g4]@3 ~ [c4,e4,g4] ~ a2@2 ~@2 a2@2 [c4,e4,g4]@3 ~ [c4,e4,g4] ~@2 a2 c4 ~ a2@2, d3@3 ~@3 d3@2 ~@4", // C
  AW: "[c4,e4,g4]@3 ~ [c4,e4,g4] ~ a2@2 ~@2 a2@2 [c4,e4,g4]@3 ~ [c4,e4,g4] ~@3 c4 ~ a2 ~, d3 ~@2 d3 ~@2", // C
  AX: "[d3,c4,e4,g4]@4 [c4,e4,g4] ~ d3 ~ c4 ~ d3 ~ [d3,c4,e4,g4]@4 [c4,e4,g4] ~ d3 ~ [c#3,b3,f4,g4]@3 ~", // C C#7
  AY: "[c3,g4,b4,d5] ~@3 c3 ~@5 c3 ~ [d4,g4,b4] ~@3 c3 ~@5 c3@2, ~ [e4,a4,c5] ~ [e4,a4,c5]", // G Am
  AZ: "[d3,g4]@2 ~@2 d3 ~ [e4,a4,c5]@4 d3 ~ [d4,g4,b4] ~@3 d3 ~ [e4,a4,c5]@4 d3@2, [b4,d5] ~@23", // G5 Am G Am Bm
  BA: "[g3,d4,g4] ~@3 [g3,a4,b4] ~@3 [e4,g4,a4,c5]@2 g3 ~ [d4,f#4,g4,b4]@3 ~ [d4,f#4,g4,b4]@2 g3 ~ [e4,g4,a4,c5]@2 g3 ~, ~@4 [f#4,d5]@2 ~@6 a4 ~@11", // G5 G Am7 Gmaj7 Am7 D
  BB: "[f#4,a4,b4,d5]@3 ~@9 [e4,a4]@3 ~ [d#4,a4]@3 ~ [d4,a4]@2 ~@2", // Bm7 A5 D#dim D5
  BC: "[c3,g4]@2 ~@4 [e4,a4,c5]@4 ~@2 [d4,g4,b4] ~@5 [e4,a4,c5]@5 ~, [b4,d5] ~@3 c3@20", // C5 Am G Am Bm
  BD: "[d3,g4,b4,d5] ~@3 d3@2 [a4,c5,e5]@4 d3 ~ [d3,g4,d5] ~ [a#4,g5] ~ g5@2 g5@2 [a#4,g5]@2 [b4,g5]@2, ~@16 b4 ~ c5 ~@5", // G Am G5 D# Em
  BE: "g2@2 g3 ~ [f#4,a4,b4,d5]@2 g3 ~ [e4,g4,a4,c5]@2 g3 ~ [d4,g4,b4]@2 g2 ~ [d4,f#4,g4,b4]@2 g3@2 [e4,g4,a4,c5]@2 g3 ~", // Bm7 Am7 G Gmaj7 Am7
  BF: "[g2,f#4,a4,b4,d5]@3 ~ [f#4,a4,b4,d5]@2 g3@2 [e4,g4,a4,c5]@2 g3@2 [e4,a4]@3 ~ [d#4,a4]@3 ~ g4@2 c#4 ~, ~@20 d4 ~@3", // Gmaj7 Bm7 Am7 A5 D#dim
  BG: "[a1,g4,c5,e5,g5] a2 [b1,g4,b4,d5,g5] b2 [c2,g4,c5,e5,g5] c3 [c#2,g4,a#4,c#5] c#3 [d2,g4,b4,d5] d3 [d#2,a4,d#5,f#5] d#3", // Am7 G C Gdim G D#dim
  BH: "[e2,g4,b4,e5] e3 [f#2,d4,a4,c5,d5] f#3 [g2,g4,b4,d5] g3 [g#2,g#4,b4,d5,f5] g#3 [a2,g4,a4,c5,e5] a3 [b1,g4,b4,d5] b2", // Em D7 G G#dim Am7 G
  BI: "[c2,g4,c5,e5,g5] c3 [c#2,g4,a#4,e5,g5] c#3 [d2,g4,b4,d5,g5] d3 [d#2,a4,c5,d#5,f#5] d#3 [e2,e4,g4,b4,e5] e3 [f#2,d4,a4,c5,d5] f#3", // C C#dim G D#dim Em D7
  BJ: "[g2,d4,g4,b4,d5]@2 g3@2 [g#2,g#4,b4,d5,f5]@2 g#3@2 [a2,g4,a4,c5,e5]@2 a3@2 [b3,b4]@3 ~ [a3,a4]@3 ~ [g3,g4] ~@3", // G G#dim Am7 B A G
  BK: "[[c3,g3,b3,e4]@11 ~]/3", // Cmaj7
})).s("gm_epiano2").gain(0.19)

// chords · epiano2 · "E Piano2" · soft notes
const epiano2_soft = note(`<
  A B ~@10 C ~@4 D E F G D E ~@7 H ~@3 I ~@4 J ~ F G D E ~@7 H ~@6 K L K L ~@3 M N ~@6 O ~@7 O ~@9
>`.pickRestart({
  A: "[d1,c4,f4,a4,c5] d2 [e1,c4,e4,g4,c5] e2 [f1,c4,f4,a4,c5] f2 [f#1,c4,d#4,f#4] f#2 [g1,c4,e4,g4] g2 [g#1,d4,g#4,b4] g#2", // Dm7 C F Cdim C G#dim
  B: "[a1,c4,e4,a4] a2 [b1,g3,d4,f4,g4] b2 [c2,c4,e4,g4] c3 [c#2,c#4,e4,g4,a#4] c#3 ~@4", C: "~@20 c3 ~@3",
  D: "~@4 [d#4,g4] ~@3 a#3 ~@7 [a#3,g4] ~@7", E: "~@8 a3 ~@15", F: "~@4 e4 ~ g2 ~ g3 ~@11 [g3,a3,c4] ~@3",
  G: "~@8 [f3,a3,c4] ~@5 g2 ~@9", H: "~@12 e4 ~@11", I: "~@4 c3@2 ~@10 e4 ~@5 e4 ~", J: "~@8 g4 ~@11 a#3 ~@3",
  K: "~@20 b3 ~@3", L: "~@8 b3 ~@15", M: "~@8 c4 ~@15", N: "~@8 c4 ~@9 a2@2 ~@4", O: "~@12 b4 ~@11",
})).s("gm_epiano2").gain(0.12)

// bass · fretless bass · "El Bass"
const bass = note(`<
  A B C D E F@4 G@2 H I G@4 J@2 K L M N O P Q R S T U V G@2 H I G@4 J@2 K L M N O P Q R S T U V G W A B C X Y Z AA AB AC
  AD AE AF AE AG AH AI AJ AK AL AM AN AO AH AI AJ AK AL AM AN AO AP AQ AR AS AT@2 ~
>`.pickRestart({
  A: "d1@2 d2@2 e1@2 e2 ~ f1@2 f2 ~ f#1@2 f#2 ~ g1@2 g2 ~ g#1@2 g#2 ~",
  B: "a1@2 a2 ~ b1@2 b2 ~ c2@2 c3 ~ c#2@2 c#3@2 d2 ~ d3@2 e1@2 e2@2",
  C: "f1@2 f2@2 f#1@2 f#2 ~ g1@2 g2 ~ g#1@2 g#2 ~ a1@2 a2 ~ b1@2 b2 ~", D: "c2 c3 c#2 c#3 d2 d3 e1 e2 f1 f2 f#1 f#2",
  E: "g1@2 g2 ~ g#1@2 g#2@2 a1@2 a2 ~ b1@2 b2@2 c2@2 c3@2 c#2@2 c#3@2",
  F: "[d2@4 a2@2 d3 ~@3 d3@6 a2@2 d3 ~@3 d2@6 a2@2 d3 ~@3 d3@6 a2@2 d3 ~@3 g1@6 d2@2 g2 ~@3 g2@6 d2@2 g2 ~@3 g1@6 d2@2 g2 ~@3 g2@6 d2 ~ g2 ~ g1 ~ a1@2]/4",
  G: "c2@3 ~ g1@2 a1@3 ~ g1 ~ c2@3 ~ g1@2 a1@4 g1 ~", H: "c2@3 ~ g1@2 a1@4 g1 ~ c2@3 ~ g1@2 a1@4 g1 ~",
  I: "c2@3 ~ g1@2 a1@3 ~ g1 ~ c2@2 d#2 ~ e2 ~ f2 ~ a2 ~ g2 ~", J: "f2@4 a1@3 ~ c2 ~ d2 ~ f2@4 a1@3 ~ c2 ~ d2 ~",
  K: "g1@4 d2@3 ~ e2 ~ d2 ~ g1@4 d2@3 ~ e2 ~ d2 ~", L: "g1@4 d2@3 ~ e2 ~ d2 ~ g1@4 d2@3 ~ f#1@3 ~",
  M: "f1@4 a1@2 ~@2 c2 ~ d2 ~ f2@3 ~ a1@3 ~ c2 ~ d2 ~", N: "f1@3 ~ a1@2 ~@2 c2 ~ d2 ~ f2@3 ~ a1@3 ~ c2 ~ d2 ~",
  O: "g2@4 d2@3 ~ e2 ~ d2 ~ g1@3 ~ d2@3 ~ e2 ~ d2 ~", P: "g2@3 ~ d2@3 ~ e2 ~ d2 ~ g1@3 ~ g1@3 ~ f#1@3 ~",
  Q: "f1@4 c2 ~ d2@4 c2 ~ f2@3 ~ c2 ~ d2@4 c2 ~", R: "g1@3 ~ d2 ~ e2@3 ~ d2 ~ g2@3 ~ d2 ~ e2@4 d2 ~",
  S: "c2@4 g1@2 a1@3 ~ g1 ~ c2@3 ~ g1@2 a1@3 ~ g1 ~", T: "c2@3 ~ f#2 ~ g2 ~ c2 ~ a#1 ~ b1@3 ~ a#1@3 ~ a1@2 g1 ~",
  U: "f1@3 ~ c2@3 ~ c2 ~ d2 ~ f2@2 ~@2 f2@3 ~ f1@2 f#1 ~", V: "g1@2 ~@2 g1@3 ~ d2 ~ e2 ~ g2@2 ~@2 g2@3 ~ g1@2 a1@2",
  W: "c2@3 ~ g1@2 a1@3 ~ g1 ~ b1@3 ~ a#1@3 ~ a1@2 g1 ~", X: "c2@2 c3@2 c#2@2 c#3@2 d2@2 d3@2 e2@4 d2@4 b1@3 ~",
  Y: "e2@3 ~ e2 ~ b1@3 ~ b1 ~ e1@3 ~ e1 ~ b1@3 ~ b1 ~", Z: "e1@3 ~ e1@2 b1@3 ~ b1 ~ e2@3 ~ b1 ~ e1 ~ d1@4",
  AA: "c2@3 ~ c2 ~ g1@3 ~ g1 ~ c2@3 ~ c2 ~ g1@3 ~ g1 ~", AB: "c2@3 ~ c2 ~ g1@3 ~ g1 ~ c2@4 g1 ~ c2 ~ b1@3 ~",
  AC: "a1@3 ~ a1 ~ e2@3 ~ e2 ~ a2@3 ~ a2 ~ e2@3 ~ e2 ~", AD: "a2@3 ~ a2 ~ e2@3 ~ e2 ~ a2@3 ~ a2 ~ e2 ~ a1@3 ~",
  AE: "d2@3 ~ d2 ~ a1@3 ~ a1 ~ d2@3 ~ d2 ~ a1@3 ~ a1 ~", AF: "d2@3 ~ d2 ~ a1@3 ~ a1 ~ d2@2 e2 ~ d2 ~ e2@2 d2 ~ b1 ~",
  AG: "d2@3 ~ d2 ~ a1@3 ~ a1@2 d2@3 ~ d2@3 ~ c#2@3 ~", AH: "c2@4 g2 ~ a2@4 g2 ~ c3@3 ~ g2 ~ a2@4 g2 ~",
  AI: "d2@3 ~ a2 ~ b2@3 ~ a2 ~ d3@3 ~ a2 ~ b2@4 a2 ~", AJ: "g2@4 d2@2 e2@3 ~ d2 ~ g2@3 ~ d2@2 e2@3 ~ d2 ~",
  AK: "g2@3 ~ c#3 ~ d3 ~ g2 ~ f2 ~ f#2@3 ~ f2@3 ~ e2@2 d2 ~", AL: "c2@3 ~ g2@3 ~ g2 ~ a2 ~ c3@2 ~@2 c3@3 ~ c2@2 c#2 ~",
  AM: "d2@2 ~@2 d2@3 ~ a2 ~ b2 ~ d3@2 ~@2 d3@3 ~ d2@2 e2@2", AN: "g2@3 ~ d2@2 e2@3 ~ d2 ~ g2@3 ~ d2@2 e2@4 d2 ~",
  AO: "g2@3 ~ d2@2 e2@3 ~ d2 ~ f#2@3 ~ f2@3 ~ e2@2 d2 ~",
  AP: "a1@2 a2@2 b1@2 b2 ~ c2@2 c3 ~ c#2@2 c#3 ~ d2@2 d3 ~ d#2@2 d#3 ~",
  AQ: "e2@2 e3 ~ f#2@2 f#3 ~ g2@2 g3 ~ g#2@2 g#3@2 a2 ~ a3@2 b1@2 b2@2",
  AR: "c2@2 c3@2 c#2@2 c#3 ~ d2@2 d3 ~ d#2@2 d#3 ~ e2@2 e3 ~ f#2@2 f#3 ~",
  AS: "g2@2 g3@2 g#2@2 g#3@2 a2@2 a3@2 b2@3 ~ a2@4 g2@2 e2@2", AT: "[c2@3 ~]/2",
})).s("gm_fretless_bass").gain(0.4)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@21 A B C ~@15 D B E F@5 ~@3 G H I J@2 ~@4 K@6 L@4 M@4 N@12 ~@3 O P@2 ~
>`.pickRestart({
  A: "a#3", B: "a3", C: "g3@23 ~", D: "a#3@23 ~", E: "g3",
  F: "[~@24 a#3@24 a3@24 g3@24 f3@18 g3@2 a3 ~ c4 ~, f3@23 ~@97, ~@12 c6@103 ~@5]/5", G: "~@2 d6 e6", H: "c6",
  I: "g5@9 f5@2 g5", J: "[e5@5 ~@3]/2", K: "b5/6", L: "[e5@95 ~]/4", M: "[b5,g6]/2", N: "g5/2", O: "~@6 b3@2 a3@2 g3 ~",
  P: "[[c2,g2,e3,b3]@31 ~@17]/2", // Cmaj7
})).s("gm_string_ensemble_1").gain(0.24)

// chords · synth brass 1 · "SynthBras"
const synth_brass_1 = note(`<
  ~@28 A B ~@5 C D C ~ E F G H E F G I J@2 K A B L K ~ M N O P Q@4 R@2 S@4 T U V W U X Y Z X AA X AB X@3 AC AD AE AF AG
  AH@2 ~
>`.pickRestart({
  A: "~@7 e4 d#4 d4 a4 e4", B: "c5", C: "[b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4] ~@19",
  D: "~@18 [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~", // Dm7
  E: "[a#3,d4,d#4,g4]@3 ~ [a#3,d4,d#4,g4] ~@7 [a#3,d4,d#4,g4]@3 ~ [a#3,d4,d#4,g4] ~@7", // D#maj7
  F: "[a3,d4,d#4,g4]@3 ~ [a3,d4,d#4,g4] ~@7 [a3,d4,d#4,g4]@3 ~ [a3,d4,d#4,g4] ~@7", // Dsus4
  G: "[a3,c4,e4,g4]@3 ~ [a3,c4,e4,g4] ~@7 [a3,c4,e4,g4]@3 ~ [a3,c4,e4,g4] ~@7", // Am7
  H: "[a3,c4,f4,g4]@3 ~ [a3,c4,f4,g4] ~@7 [a3,c4,f4,g4]@3 ~ [a3,c4,f4,g4] ~@7", // F
  I: "[a3,c4,g4]@2 f4@2 [a3,c4,g4] ~@7 [a3,c4,f4,g4]@3 ~ [a3,c4,f4,g4] ~@7, f4 ~@3 f4@2 ~@18", // Am7 F
  J: "[e4,g4,c5] ~@17 [d4,f4,a4]@5 ~", K: "[c4,e4,g4] ~@23", L: "~@3 [d4,f4,a4]", M: "~@12 c4@2 c4 ~ a3 ~@3 f4@2 a4@2",
  N: "c5@2 c5 ~@9 c6 ~ c6 ~ a5 ~@3 f5 ~ a5 ~", O: "c6 ~ c6 ~@9 c6@2 c6 ~ a5 ~@3 g5@2 a5 ~",
  P: "e5 ~ e5 ~@9 e4@4 d4@3 ~ b3@3 ~", Q: "[d4,e4,g4,b4]@3 ~ [d4,e4,g4,b4] ~@7 [d4,e4,g4,b4]@3 ~ [d4,e4,g4,b4] ~@7",
  R: "[c4,e4,g4]@3 ~ [c4,e4,g4] ~@7 [c4,e4,g4]@3 ~ [c4,e4,g4] ~@7", // C
  S: "[c4,e4,a4]@3 ~ [c4,e4,a4] ~@7 [c4,e4,a4]@3 ~ [c4,e4,a4] ~@7", T: "[g4,b4,d5] ~@9 [e4,g4,b4] ~@13",
  U: "[g4,b4,d5] ~@9 [d4,e4,g4,b4] ~@13", V: "[d4,g4,b4] ~@9 [g4,b4,d5] ~@13", W: "[d4,g4,b4] ~@9 [a4,b4] ~@13",
  X: "[g4,b4,d5] ~@9 [d4,g4,b4] ~@13", Y: "[g4,b4,d5] ~@9 [d4,g4,a4] ~@13",
  Z: "[g4,b4,d5] ~@9 g4 ~ b4@3 ~ a#4@2 ~@2 a4 ~@3", AA: "[g4,b4,d5] ~@9 [d4,g4,b4] ~@9 d4 ~ e4 ~",
  AB: "[g4,b4,d5] ~@9 g4 ~ a4@3 ~ g4@3 ~ a4 ~@3", AC: "[g4,b4,d5] ~@9 [d4,g4] ~ b4@3 ~ a#4@3 ~ a4 ~ g4 ~",
  AD: "~@12 g4@2 g4 ~ e4 ~@3 c5@2 e5@2", AE: "g5@2 g5 ~@9 g6 ~ g6 ~ e6 ~@3 c6 ~ e6 ~",
  AF: "g6 ~ g6 ~@9 g6@2 g6 ~ e6 ~@3 d6@2 e6 ~", AG: "b5 ~ b5 ~@9 b4@4 a4@4 g4 ~@3", AH: "[[g3,b3,e4]@5 ~@3]/2",
})).s("gm_synth_brass_1").gain(0.17)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@6 A ~@2 B ~ C@2 B C ~ C B C ~ C B C ~ C B C ~ C B C ~ C B C B C ~ C B C ~ C B C ~ C B C ~ C B C ~ C B C ~@3 D ~ D@2
  ~@3 D E B C ~ C B C ~ C B C ~ C B C ~ C B C ~@5
>`.pickRestart({
  A: "~@11 x", B: "~@5 x ~@5 x", C: "~@5 x ~@6", D: "~@2 x", E: "~ x ~@4",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@5 A@3 B A@3 B A@45 C A@29 C ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@5 x!3", C: "x ~@2 x!2 ~ x ~@2 x!2 ~@13",
})).gain(0.64)

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

// drums · open hat
const open_hat = s("oh").struct("<~@8 [~@2 x] ~@3 [~@7 x ~@4] ~@47 [~@5 x] ~@31>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@58 A B ~@2 C B C B C B A ~@19 A B ~@2>".pickRestart({
  A: "~@3 x!3", B: "x", C: "~@5 x",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@5 x ~@3 x ~@82>").gain(0.58)

// drums · congas
// … 22 more lines

More by The Doobie Brothers