Strudelify
Listen to the Music cover art

1975 · Toulouse Street

Listen to the Music

The Doobie Brothers

KeyE majorTempo107 bpm
0:00/0:00
// Listen to the Music — The Doobie Brothers
// 107 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 1.
setcpm(107/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 · fretless bass · "Bass"
const bass = note(`<
  ~@2 A@2 B@5 C D E F G H I J@3 K L M N H O P Q R S T Q U V W X@2 Y Z B C D E F G H I J@3 K L M N H O P Q R S T Q U V W
  AA@2 AB AC AD AE AF@2 T Q R S T Q U V W T Q R S T Q U V W T Q R S T Q U V W T Q R S T Q U V W T Q R S T Q U V W T Q R
  S T Q U V W AG ~
>`.pickRestart({
  A: "[e2@4 b1@4 e3@15 e2 a1 ~ a1@2 b1 ~ b1@2]/2", B: "e2@4 b1@2 ~ b1 e2 ~ e2@2 b1@2 ~ b1",
  C: "e2@4 b1@3 b1 e2 ~ e2@2 b1@2 ~ b1", D: "e2@3 ~ b1@2 ~ b1 e2@3 ~ d#2@3 ~",
  E: "c#2@4 g#1@3 g#1 c#2 ~ c#2@2 g#1@2 c#2@2", F: "b1@4 f#1@2 ~ f#1 b1 ~ b1@2 f#1@2 b1@2",
  G: "a1@3 a1 b1@2 ~ b1 c#2@2 ~ c#2 d#2@2 e2@2", H: "e2@2 ~ e2 f#2@2 ~ f#2 a2 f#2 a2@2 a#2@2 b2@2",
  I: "e2@3 ~ b1@2 ~ b1 e2 ~ e2@2 b1@3 b1", J: "e2@3 ~ b1@3 b1 e2 ~ e2@2 b1@2 ~ b1", K: "e2@3 ~ b1@2 ~ b1 e2@3 ~ d#2@4",
  L: "c#2@3 c#2 d#2@2 ~ d#2 e2@2 ~ e2 f#2@2 g#2 ~", M: "b1@3 ~ f#1@2 ~ f#1 b1 ~ b1@2 f#1@2 b1 ~",
  N: "a1@2 ~ a1 b1@2 ~ b1 c#2@2 ~ c#2 d#2@2 e2@2", O: "e2@4 b1@2 ~ b1 e2@2 b1@2 e2 b1 e2 b1",
  P: "c#2@4 g#1@2 ~ g#1 c#2@2 ~ c#2@2 g#1 c#2 ~", Q: "a1@2 ~ a1 b1@2 ~ b1 c#2 ~ d2 ~ d#2@2 e2 ~",
  R: "c#2@2 ~ c#2 g#1@2 ~ g#1 c#2@2 ~ c#2@2 g#1 c#2 ~", S: "a1@4 b1@2 ~ b1 c#2 ~ d2 ~ d#2@2 e2 ~",
  T: "c#2@3 ~ g#1@2 ~ g#1 c#2@2 ~ c#2@2 g#1 c#2 ~", U: "f#2@4 c#2@2 ~ c#2 f#2@3 c#2 f#2@2 g#2@2",
  V: "a2@2 ~ a2 g#2@2 ~ g#2 f#2@2 ~ f#2 e2@2 ~ e2", W: "d2@2 ~ d2 c#2@2 ~ c#2 b1 ~ b1 ~ e2 ~ e2 ~",
  X: "e2@3 ~ b1@2 ~ b1 e2 ~ e2 ~ b1@2 ~ b1", Y: "e2@3 ~ b1@2 ~ b1 e2@2 e2 ~ b1@2 ~ b1",
  Z: "e2 g#1@3 a1@3 a1 b1 ~ b1 ~ c#2 b1 d#2@2", AA: "e2@15 ~", AB: "a2@12 e2@3 ~", AC: "e2@11 ~ e2@2 ~@2",
  AD: "e2@7 ~ e2 ~ e2@4 ~@2", AE: "e2@7 ~", AF: "[a2@31 ~]/2", AG: "e1",
})).s("gm_fretless_bass").gain(0.42)

// chords · electric guitar clean · "Guitar 1"
const electric_guitar_clean = 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 Y AB AC AD AE F G H ~ I J K L M N AF P ~ Q ~ R S T U Q W
  X Y Z AA Y AB AC AD ~@8 W X Y Z AA Y AB AC AD W X Y Z AA Y AB AC AD W X Y Z AA Y AB AC AD W X Y Z AA Y AB AC AD W X Y
  Z AA Y AB AC AD W X Y Z AA Y AB AC AD AG ~
>`.pickRestart({
  A: "[a#3,d#4,g4] [b3,e4,g#4]@2 [e4,g#4] ~@2 [e4,g#4]@3 [e4,g#4]!3 [b3,e4,g#4] ~ [b3,e4,g#4] ~, ~@3 b3@3 ~@2", // D# E
  B: "[a#3,d#4,g4] e4 g#4 [e4,g#4] b3 ~ [b3,g#4] a4@2 [e4,a4] ~ a4 [c#4,e4,a4] [b3,e4,g#4] ~@2, ~ b3@3 ~@2 e4@3 ~ [e4,a4]@2 ~@4, ~@7 c#4@5 ~@4", // D# E A5 A E A5
  C: "~@10 e4 ~@5", D: "~@10 a4!2 ~@4", E: "~@3 e4 ~@12", F: "~@11 a4 ~@4", G: "~@3 b3!2 ~@4 b3@2 e4 ~@4",
  H: "~@6 d#4 ~@4 e4 ~ e4 ~@2", I: "~@2 g#4 b3 d#4 ~@11", J: "~@2 g#4 ~@13", K: "~@3 [e4,c#5] ~@5 c#5 e4@2 ~@4",
  L: "~@3 b4 [d#4,f#4] ~@4 b4@3 ~@4", M: "~@3 a4@3 ~@2 a4 ~ c#4@2 ~@2 a4@2, ~@9 a4@3 ~@4",
  N: "[g#3,c4,d#4,g#4] a4@2 a4 ~@5 a4 ~@6", O: "[a#3,d#4,g4] ~ [e4,g#4] ~@3 [a#3,d#4,g4] ~@4 e4 ~@4",
  P: "~@8 a4 ~@4 e4 ~@2", Q: "~@3 b3 ~@7 e4 ~@4", R: "c5 ~@2 [e4,c#5] e4 ~@4 e4 e4@2 ~@4, ~@9 c#5@3 ~@4",
  S: "~@3 d#4@6 ~ d#4@2 ~@2 d#4 a#3, ~@3 b4@3 ~@3 [b3,b4]@3 ~@4", // B
  T: "[d#4,g#4] ~@2 [a3,a4]@3 ~@4 c#4@2 ~@2 a4@2, ~@9 a4@3 ~@4", // G#5 A
  U: "c#4 ~@2 a4@3 ~@3 a4@2 [d4,e4,a4] ~@2 [a3,a4]@2, ~@9 a3@4 ~@3", V: "[d#4,g4] ~@2 b3 ~@7 e4 ~@4", W: "~@14 c#5 ~",
  X: "~@4 e4 ~@11", Y: "~@13 c#5 ~@2", Z: "~@2 g#4@3 c#5@3 ~@8", AA: "~@5 c#5@3 ~@5 c#5 ~@2",
  AB: "~@5 a#4@3 ~@3 [a#3,a#4]@2 a#4 ~@2", AC: "~@5 a3@3 ~@8", AD: "~@11 e4@3 [e3,g#3,e4]@2, ~@4 b3@3 ~",
  AE: "a#3 ~@2 [e4,g#4] ~@12", AF: "~@2 [e4,g#4] ~@3 [a#3,d#4,g4] ~@4 e4 ~@4", AG: "g#3@15 ~",
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.9)

// chords · electric guitar clean · "Guitar 1" · soft notes
const electric_guitar_clean_2 = note(`<
  A B C D C@2 ~ E F G H I ~@2 J K G L M N O@2 ~ P L ~@3 Q ~@5 C@2 ~ E F G H I ~@2 J K G L M N O@2 ~ P L ~@3 Q ~@16 Q ~@8
  Q ~@8 Q ~@8 Q ~@8 Q ~@8 Q ~@7
>`.pickRestart({
  A: "~@5 b3 ~@7 e4 ~ b3", B: "~ g#4 ~@3 b3 ~@8 b3!2", C: "~@5 b3 ~@9 b3", D: "~@14 e4 b3", E: "~@5 b3 ~@8 b3!2",
  F: "~@15 b3", G: "~@5 b3 ~@8 b3 f#4", H: "~@5 b3 ~@7 b3 ~ b3", I: "~@5 c#4 ~@10", J: "~ e4@2 ~@12 a3",
  K: "~@5 b3 ~ g#4@2 ~@4 b3 ~ e4", L: "~@5 e4 ~@7 e4 ~ b3", M: "~@5 g#4 ~@8 e4!2", N: "~@5 g#4 ~@10",
  O: "[~@15 b3@7 ~@9 d#4]/2", P: "~ [d4,e4]@2 ~@13", Q: "~@5 c#4@11",
})).s("gm_electric_guitar_clean").gain(0.09).pan(0.9)

// chords · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel = note(`<
  ~@2 A B C D E F G H G I J K@2 L F G H G I J K@2 L M N O P Q R S T U V D E F G H G I J K@2 W F G H G I J K@2 W M N O P
  Q R S T U X@2 Y@2 Z AA AB AC M N O P Q R S T U M N O P Q R S T U M N O P Q R S T U M N O P Q R S T U M N O P Q R S T U
  M N O P Q R S T U AD ~
>`.pickRestart({
  A: "[g3,a#3,d#4,g4] [g#3,b3,e4]@2 [b3,e4,g#4] [b3,g#4] ~ [g#3,e4,g#4]@3 ~@2 [e4,g#4] [b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~, ~@3 b3@3 ~@2, ~@9 [e4,g#4]@2 ~@5, ~@5 [g#3,g#4] ~@2", // D# E C#m E G#
  B: "[g3,a#3,d#4,g4] [g#3,b3,e4] [e4,g#4] [g#3,b3,e4,g#4] [b3,e4] e4 [b3,g#4] [c#4,a4]@2 [e4,a4] [c#4,e4]@2 [c#4,e4,a4] [b3,g#4] ~@2, ~@6 e4@3 ~@7", // D# E E5 E F#m A5 C#m A …
  C: "[g3,a#3,d#4,g4] [g#3,b3,e4]@2 [b3,g#4] [g#3,b3,e4,g#4] ~ [e4,g#4]@3 [e4,g#4]!3 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~, ~@3 [g#3,b3]@3 ~@2", // D# E G#m
  D: "[g3,a#3,d#4,g4] [e4,g#4]!2 [b3,e4,g#4]!2 ~ [b3,g#4] [c#4,a4]@2 [e4,a4] [c#4,e4,a4]@2 [c#4,e4,a4] [b3,e4,g#4] ~@2, ~ [g#3,b3]@3 ~@2 e4@3 ~@7", // D# E F#m A5 A E G#m
  E: "[g3,a#3,d#4,g4] [g#3,b3,e4]@2 [e4,g#4]!2 ~ [g#3,e4,g#4]@3 [e4,g#4] ~ g#4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~, ~@3 b3@3 ~@2, ~@5 [e4,g#4] ~@2", // D# E C#m E
  F: "[g3,a#3,d#4,g4] [g#3,b3,e4]@2 [e4,g#4] [b3,e4,g#4] ~ [b3,g#4] [c#4,a4]@2 [c#4,e4,a4]!2 a4 [c#4,e4,a4] [b3,g#4] ~@2, ~@6 e4@3 ~@7", // D# E F#m A E
  G: "[g3,a#3,d#4,g4] [g#3,b3,e4]@2 [b3,e4,g#4] [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@3 [b3,e4,g#4] ~ [e4,g#4] [b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~, ~@5 [g#3,b3,e4,g#4] ~@2", // D# E
  H: "[g3,a#3,d#4,g4] [b3,e4] ~ [e4,g#4] [g#3,e4,g#4] ~ [b3,g#4] [c#4,a4]@2 [c#4,e4,a4] ~ a4 [c#4,e4,a4] [b3,e4,g#4] ~@2, ~ g#3@3 ~@12, ~@2 [b3,e4]@2 ~@2 e4@3 ~ [c#4,e4,a4]@2 ~@4", // D# E5 E C#m E F#m A E …
  I: "[c#3,g#3,g#4]@3 ~ [c#3,g#3]@2 [c#3,g#3,g#4]@3 ~ [c#3,g#3]@2 [c#3,g#3,c#4,e4,g#4]@2 [g#3,c#4,e4] ~, [c#4,e4]@3 [c#4,e4]@3 ~@2, ~@3 g#4@3 ~@3 g#4@3 ~@4", // C#5 C#m
  J: "[b2,f#4]@3 ~@3 [f#3,d#4,f#4]@3 ~@3 [f#3,b3,d#4,f#4]@2 [f#3,b3] ~, [f#3,b3,d#4]@5 f#2@4 [d#4,f#4]@2 f#2@3 ~@2, ~@3 f#4@3 b3@6 ~@4, ~@4 b2@6 [b2,f#3]@3 ~@3", // B5 D#m B B5 B D#m B5
  K: "[[a2,a3,c#4,e4]@3 ~ a3@2 [e3,a3,c#4,e4]@3 e3 a3@2 [c#4,e4]@2 [c#4,e4]@2 [e3,a3,d4,e4]@3 d4 [e3,a3,d4]@2 [e3,a3,d4,e4]@3 [d4,e4] [e3,a3,d4,e4]@2 [e3,e4]@2 [e3,c#4,e4]@2, e3@3 ~@2 e3@3 ~@6 a3@2, ~@3 [c#4,e4]@3 ~@3 [c#4,e4]@3 a3@4 ~@3 e4@3 ~@6 d4 ~@3, ~@2 a2@3 a2@5 a2@3 a2@2 ~]/2", // A C#m Dsus2 E C#m
  L: "~ [g#3,b3,e4]@2 [e4,g#4]!2 ~ [g#3,e4,g#4]@3 [e4,g#4] ~ g#4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~, ~@3 b3@3 ~@2, ~@5 [e4,g#4] ~@2", // E C#m E
  M: "~@2 [c#3,g#3,c#4,e4,g#4]@3 [g#3,c#4,e4,g#4] c#3 ~ [c#4,e4,g#4]!2 [g#3,c#4,e4,g#4] [g#3,c#4,e4,g#4]@2 ~ [g#3,e4,g#4] ~, ~@8 c#3@5 [c#3,c#4,e4,g#4]@2 ~, ~@4 g#3 ~@3", // C#m
  N: "~@2 [a2,e3,a3,c#4,e4,a4]@3 [a2,e3,c#4,e4,a4] ~@3 [a3,a4] [c#4,e4,a4] [c#4,e4,a4]@2 [e3,c#4,a4] [e3,c#4,a4]@2, ~@4 [a2,e3,a3,c#4,e4,a4] [a2,a3]@3, ~@10 e3@3 e4@3", // A
  O: "~@2 [c#3,g#3,c#4,e4,g#4]@3 [c#4,e4,g#4] ~@2 [e4,g#4] [g#3,e4,g#4] [e4,g#4] [c#3,e4,g#4]@2 [e4,g#4] [c#3,g#3,c#4,e4,g#4] ~, ~@4 c#4@3 ~, ~@4 c#3 g#3@2 ~", // C#m E C#m E C#m E C#m
  P: "~@2 [a2,e3,a3,c#4,e4,a4]@3 [e3,e4,a4] ~@2 [e3,a4] a4 [e3,c#4,a4] [e3,c#4,e4,a4]@2 [e3,c#4,e4,a4,d6] [c#4,e4,a4] ~, ~@4 [a2,a3,c#4,e4] [a2,a3]@3", // A A5 A
  Q: "~@2 [g#3,e4,g#4]@3 [g#3,e4,g#4] ~@2 [c#3,g#3,c#4,e4,g#4]!3 [e4,g#4]@2 [e4,g#4] [c#4,e4,g#4] ~, ~@2 [c#3,c#4]@5 ~@4 [c#3,c#4]@4 ~", // C#m E C#m C#
  R: "~@2 [e3,a3,c#4,e4,a4]@3 [e3,a3,c#4,e4,a4] ~@2 [e4,a4]!2 [a3,c#4,e4,a4] [e4,a4]@2 [e4,a4] [c#4,e4,a4] ~, ~@2 a2@5 ~ [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4]@4 ~", // A A5 A A5 A
  S: "~@2 [c#3,f#3,c#4,f#4]@2 f#4 [f#3,c#4,f#4]@3 [c#4,f#4]@3 [c#3,c#4,f#4]@2 [c#4,f#4] [c#3,f#3,a#3,c#4,f#4] ~, ~@2 f#2@13 ~, ~ a#3@3 [f#3,a#3]@3 ~, ~@5 c#3@6 ~@5", // F#5 F#
  T: "~@2 [a2,c#4,e4]@3 [b3,e4]@3 [e3,a3,b3,e4]@3 [e3,a3,b3,e4]@2 e4 [e3,a3,c#4,e4]@2, ~ [e3,a3]@3 ~@4", // A E5 Esus4 A A5
  U: "c#4@2 [a3,c#4,e4]@3 [a3,b3,e4]@3 [e3,a3]@2 [g#3,b3]@2 f#3 g#3 b3 ~, ~@2 e3@5 ~@9", // A Asus2 A5 G#m
  V: "[d#4,g4] [g#3,b3,e4,g#4]@2 b3 [g#3,b3,e4,g#4] ~ [e4,g#4]@3 [e4,g#4]!3 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~, ~@3 [g#3,b3]@3 ~@2", // D# E G#m
  W: "[g3,a#3,d#4] [g#3,b3,e4]@2 [e4,g#4]!2 ~ [g#3,e4,g#4]@3 [e4,g#4] ~ g#4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~, ~@3 b3@3 ~@2, ~@5 [e4,g#4] ~@2", // D# E C#m E
  X: "[[g#3,b3,e4]@10 [g#3,b3]@2 [g#3,b3,e4,g#4]@2 ~@2 [a3,d4,f#4]@7 ~ [a3,b3,d4] ~ [a3,b3,d4]@2 d4@2 ~ e4, ~@10 e3@4 ~ f#3@8 ~@9]/2", // E G#m E D Bm7
  Y: "[~ a4@7 [e4,f#4,a4] ~@2 [c#4,e4] g#3@2 [g#3,b3]@2 ~ e4@3 [g#3,b3]@2 ~ b3 c#4 b3 g#3 ~ [f#3,b3]@2 [g#3,b3]@2, c#4@11 ~ e3@10 [g#3,b3]@2 [g#3,e4]@3 ~@5, e4@7 ~@3 [e4,a4]@2 ~@4 [g#3,b3]@4 e4@4 ~@8]/2", // F#m7 C#m G#m B5 G#m C#m A5 G#m
  Z: "[e3,g#3,b3]@8 [b3,e4,g#4] ~ c#4 ~ [g#3,c#4]@2 [f#3,g3,b3,c4] ~, ~@9 [e4,f#4]@2 ~@5", // E C#5 Cmaj7 Esus2
  AA: "~ [d4,f#4]@7 ~ [d4,f#4] b3 ~ [a3,d4,f4,f#4]@2 b3 ~, [f#3,a3]@4 [a3,e4] ~@3", // D F#m A5
  AB: "~ a4@4 [a3,c#4,e4,a4] ~ [e4,a4] [e4,a4]@2 [c#4,e4,a4] ~ [e4,a4] [a3,e4,a4] [e4,a4] [a3,e4,a4], [a3,c#4,e4]@5 ~@2 [a3,c#4]@4 ~ c#4@4", // A A5 A A5 A
  AC: "[a3,c#4,e4,a4]@2 [c#4,e4,a4] ~@2 [c#4,e4,a4]!2 [e4,a4] [a3,c#4,e4,a4]@2 a4 ~@2 [e4,a4] [a3,c#4,e4,a4] [c#4,e4,a4], ~@5 a3@3 ~@4 [a3,c#4,e4,a4]@2 ~@2", // A A5 A A5 A
  AD: "[e3,b3,e4]", // E5
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.2)

// other · electric guitar jazz · "Solo Guitar"
const electric_guitar_jazz = note(`<
  ~@63 A@4 B@5 C@2 ~@16 D E F G H I J K L M@2 N O P Q R S@2 T U T U V W X Y Z AA@2 AB AC AD AE AF AG AH AI ~
>`.pickRestart({
  A: "[~@13 b4@15 ~@2 f#4@13 ~@2 e5@12 ~@7]/4",
  B: "[b4@12 ~@2 b4@14 ~@2 f#4@13 ~@3 e5@14 ~@2 f#5@6 f#5@3 ~ f#5@4 f#5@3 ~]/5", C: "[f#5@9 ~@7]/2", D: "~ f#4@7",
  E: "e4@8 ~@2 e4@3 c#4 e4 ~", F: "f#4@4 f#4@3 ~ f#4@4 f#4@4", G: "e4@15 ~",
  H: "b4 c#5 e5 b4 c#5 e5 ~ c#5 e5 b4 c#5 e5 b4 c#5 e5 b4, ~@3 b4 ~@4",
  I: "c#5 e5 b4 c#5 e5 b4 c#5 e5 ~ c#5 e5 ~ c#5 e5 e5@2, ~@8 b4@2 ~ b4@2 ~@3",
  J: "g#5@4 e5@3 ~ e5@2 e5 c#5 e5@2 [d#5,e5]@2", K: "f#5@4 e5 ~ f#5@4 e5 ~ f#5@4",
  L: "e5 ~ f#5@6 e5 f#5 e5 c#5 e5@2 f#5 ~", M: "[b5@4 c#5@6 e5 f#5 e5 c#5 e5 f#5@4 ~ f#5@3 b5 f#5@3 b5 f#5@3 b5]/2",
  N: "f#5@3 b5 e5 f#5 e5 c#5 e5@3 ~ f#5@3 b5", O: "f#5@3 ~ e5 f#5 e5 c#5 e5@3 ~ f#5@3 b5",
  P: "f#5@4 e5 f#5 e5 c#5 e5 f#5 e5 c#5 e5 f#5 e5 c#5", Q: "e5 f#5 e5 c#5 e5 f#5 e5 c#5 e5 f#5 e5 c#5 e5 f#5 e5 c#5",
  R: "~@2 e5@3 e5@3 e5@3 e5@3 e5@2", S: "~@2 f#5@3 f#5@3 e5@3 c#5@3 e5 ~", T: "b5@3 ~ b5@4 ~@2 b5@2 b5@4, a#5 ~@15",
  U: "e5@7 ~ e5 f#5 e5 c#5 e5 f#5 e5 c#5", V: "b5@3 ~ b5@5 ~ b5@2 b5@4", W: "e5@3 ~ e5@2 e5 ~",
  X: "b4 c#5 e5 b4 c#5 e5 b4 c#5 e5 ~ c#5 e5 ~ c#5 e5 b4, ~@9 b4@2 ~ b4@2 ~@2",
  Y: "c#5 e5 ~ c#5 e5 b4 c#5 e5 ~ c#5 e5 b4 ~ e5 b4 c#5, ~ b4 ~@2 b4 ~ c#5 ~", Z: "~@2 f#5@6 e5 f#5 e5@3 c#5 b4 g#4",
  AA: "[b4@11 ~ b4 c#5 b4 ~ b4@9 ~@4 c#5 b4 g#4, ~@15 g#4@2 ~@11 b4@2 ~@2]/2", AB: "b4@11 ~ b4 c#5 ~ g#4, ~@7 b4",
  AC: "b4@2 ~ f#5@3 e5 c#5", AD: "e5@8 ~@2 b4@5 ~", AE: "b4@10 ~@2 b4 c#5 [g#4,b4]@2", AF: "e5@5 ~@3",
  AG: "~@2 b4@6 g#4@3 f#4@3 e4 ~", AH: "~@2 f#4@6 e4@3 c#4@3 b3@2", AI: "e4@3 ~",
})).s("gm_electric_guitar_jazz").gain(0.42).pan(0.3)

// other · banjo
const banjo = note(`<
  ~@15 A@10 B C D E F@2 D F G A@20 H I C D E F@2 D F G ~@17 I C D E F@2 D F G I C D E F@2 D F G I C D E F@2 D F G I C D
  E F@2 D F G I C D E F@2 D F G ~@2
>`.pickRestart({
  A: "e5!16", B: "e5 ~ e4 ~ e4 d#4 c#4 b3 e4 d#4 c#4 ~ e4 ~ c#4 b3, ~@11 b3@2 d#4@2 ~",
  C: "~ b3 e4 ~ e4 ~ c#4 b3 e4 d#4 c#4 b3 e4 d#4 c#4 b3, ~@5 d#4@2 ~@9",
  D: "~ b3 e4 ~ e4 d#4 c#4 b3 e4 d#4 c#4 ~ e4 ~ c#4 b3, ~@11 b3@2 d#4@2 ~",
  E: "~ b3 e4 ~ e4 ~ c#4 b3 e4 ~ c#4 b3 e4 ~ c#4 b3, ~@5 d#4@2 ~@2 d#4@2 ~@2 d#4@2 ~",
  F: "~ b3 e4 ~ e4 d#4 c#4 b3 e4 ~ c#4 b3 e4 ~ c#4 b3, ~@9 d#4@2 ~@2 d#4@2 ~",
  G: "~ b3 e4 ~ e4 d#4 c#4 b3 e4 d#4 c#4 b3 e4 ~ c#4 b3, ~@13 d#4@2 ~", H: "e5!15 ~",
  I: "~@2 e4 ~ e4 d#4 c#4 b3 e4 d#4 c#4 ~ e4 ~ c#4 b3, ~@11 b3@2 d#4@2 ~",
})).s("gm_banjo").gain(0.25).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@4 C@2 B D B@2 E B@7 E B F B@6 F B@10 G B@18 F B H ~@7 B@8 E B@7 F B@8 F B@5 D B@2 E@2 B@8 I B@7 F D H ~
>`.pickRestart({
  A: "x ~@5 x ~ x ~ x ~@4 x", B: "x ~@6 x!2 ~ x ~@3 x ~", C: "x ~@6 x!2 ~ x ~@5", D: "x ~@6 x!2 ~@5 x ~",
  E: "x ~@6 x!2 ~ x ~@4 x", F: "x ~@6 x!2 ~@6 x", G: "~@7 x!2 ~ x ~@3 x ~", H: "x", I: "x ~@6 x ~@2 x ~@3 x ~",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct("<~@97 [~@15 x] ~@30>").gain(0.3)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A B C D E F B G H I D J K L B C M B F B N ~@8 O A B C P B F B G H I D J K L B C M B F B N ~@73
>`.pickRestart({
  A: "~@3 x ~@5 x ~@5 x", B: "~@2 x!2 ~@5 x ~@5 x", C: "~@3 x ~@5 x ~ x ~@3 x", D: "~@2 x!2 ~@10 x!2",
  E: "x ~ x!2 ~@5 x ~@5 x", F: "~@2 x!2 ~@5 x ~@6", G: "~@3 x ~@11 x", H: "~@3 x ~@12", I: "~ x ~ x ~@11 x",
  J: "x ~ x!2 ~@5 x ~ x ~@3 x", K: "~@3 x ~@5 x ~@4 x!2", L: "x ~@2 x ~@5 x ~@5 x", M: "~@2 x!2 ~@11 x",
  N: "~@3 x ~@5 x!2 ~@4 x", O: "~@7 x!2 ~@7", P: "~@2 x!2 ~@4 x ~@7",
})).gain(0.12)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@59 B ~@7 C ~@8 D ~@8 D ~@38>".pickRestart({
  A: "~@7 x", B: "~@6 x!2", C: "x ~@2 x ~@2 x!2", D: "~@14 x!2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B@3 C@3 B@4 D C B C@2 B@5 ~@9 B C B C@4 B@4 D B C@3 B@5 ~@9 E@8 D B@5 C B F D B@2 C B C@2 B@2 D C B C B@2 G B@2
  D B@2 C G B C B G H B@2 C G B G B G B G C@2 G B@4 ~@2
>`.pickRestart({
  A: "~@3 x!2 ~ x ~ x ~ x ~ x ~ x ~", B: "x!8", C: "x!5 ~ x!2", D: "~ x!7", E: "~ x ~ x", F: "x!4 ~@4", G: "x!7 ~",
  H: "~@2 x!6",
})).gain(0.3)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A@3 ~@5 A ~ A@2 ~@15 A ~ A@4 ~@6 A@3 ~@28 A ~@5 A ~ A@2 ~@3 A ~ A ~@2 B ~@5 A B ~ A ~@5 A B ~ B ~ B ~ B A@2 B ~@6
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@70 [~ x ~@2] [~@3 x ~@5 x ~@6] ~@56>").gain(0.48)
// … 18 more lines

More by The Doobie Brothers