Strudelify
Born On The Bayou cover art

Cosmo's Factory

Born On The Bayou

Creedence Clearwater Revival

KeyE majorTempo113 bpm
0:00/0:00
// Born On The Bayou — Creedence Clearwater Revival
// 113 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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
const bass = note(`<
  ~@7 A B A C A B A C A B A D A B A C A B A C A B A E F G F H F H F I F J K@6 A L K@6 M N O P Q P R S T U V W X Y V Z V
  U V W X Y V AA AB AC A B A C A B A C A B A C A B A E F G F H F H F J A B A B A B A AD@2 AE AF@3
>`.pickRestart({
  A: "e2@3 ~ e2@2 b1@2 c#2@2 b1@2 c#2 ~ e2@2", B: "~ e2@2 b1 c#2 b1 c#2 b1", C: "~@2 e2@4 b1@2 c#2@2 b1@2 c#2@2 b1 ~",
  D: "~@2 e2@4 g#2@4 a2@3 ~ b2 ~", E: "~@2 e2@3 ~ d2@4 a1@3 ~ b1@2", F: "e1@2 e1@2 ~@2 b1@2 c#2@2 b1@2 c#2 ~ e2@2",
  G: "~@2 e2@3 ~ d2@3 ~ a1@3 ~ b1@2", H: "~@2 e2@3 ~ d2@2 ~@2 a1@3 ~ b1@2", I: "~@2 e2@3 ~ d2@2 ~@2 c#2@3 ~ b1 ~",
  J: "~@2 e2 ~ e2@2 e2@2 g#2@2 a2@2 a#2@2 b2@2",
  K: "[e2@3 ~ e2@2 b1@2 c#2@2 b1@2 c#2 ~ e2@5 ~ e2@2 b1@2 c#2@2 b1@2 c#2@2 b1 ~]/2",
  L: "~@2 e2@2 e2@2 b1@2 g#2@2 a2@2 a#2@2 b2 ~", M: "d2@3 ~ d2@3 ~ a1 ~ a1@2 b1 ~ e2@2",
  N: "~@2 b1@2 d2@2 e2@2 [a1,b1] ~ d2@2 b1@2 a1 ~", O: "d2@3 ~ d2@3 ~ a1 ~ a1 ~ g1 ~ e2@2",
  P: "~@2 e2@2 c#2@2 b1 ~ b1 ~ b1@2 c#2@2 b1 ~", Q: "d2@2 e2@2 f#2@2 a2@2 a2@2 e2 ~ c#2@2 e2@2",
  R: "d2@2 e2 ~ f#2@2 g#2@2 a2@2 e2@2 c#2 ~ e2@2", S: "~ a1 ~ a#1 ~ b1 ~ c2", T: "~ c#2 ~ d2 ~ d#2 ~ e2",
  U: "e2@4 e2@2 b1 ~ c#2@2 b1@2 c#2 ~ e2@2", V: "~@2 e2@2 c#2@2 b1@2 c#2@2 b1@2 c#2@3 ~",
  W: "e2@2 ~@2 e2@4 c#2@2 e2@3 ~ e1@2", X: "~@2 e1@2 a1@2 b1@2 c#2@2 b1@2 c#2@3 ~",
  Y: "e2@4 ~@2 b1 ~ c#2@2 b1@2 c#2 ~ e2@2", Z: "e2@2 ~@2 e2@3 ~ c#2@2 b1@2 c#2 ~ e2@2",
  AA: "d2@3 ~ d2@4 a1 ~ a1@2 ~@2 e1@2", AB: "~@2 g#1@3 ~ a1@4 a#1@4 b1@2", AC: "~@2 c#2@4 d2@4 d#2@3 ~ e2 ~",
  AD: "[~@2 e2@2 d2@2 b1@2 d2@5 ~@2 d2@6 ~@2 e1!5 ~ e1!3]/2", AE: "e1!5 ~ e1!8 ~ e1",
  AF: "[e1!6 ~ e1!4 e1@18 ~@2 e1@3 ~@14]/3",
})).s("gm_fretless_bass").gain(0.54)

// chords · overdriven guitar · "Rhythm Gtr 1"
const overdriven_guitar = note(`<
  ~@11 A B@3 C@4 D@2 E F G H@3 I@2 J@2 K L M@2 N O P@2 Q R ~@48 G H@3 I@2 J@2 K L M@2 N O S R ~@13
>`.pickRestart({
  A: "[g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ e2@2 [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2", // E7
  B: "[e2 ~ [g#3,d4,e4]@2 ~@2 [g#3,d4,f#4]@3 ~ [g#3,d4,e4]@2 e2 ~@3 e2@4 [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 [g#3,d4,e4]@2 e2 ~@5 [g#3,d4,e4]@2 [g#3,d4,e4] ~ [g#3,d4,f#4]@4 [g#3,d4,f#4]@2 e2 ~ [g#3,d4,f#4]@2, ~@14 [d4,e4]@6 ~@12 e2@5 ~@11, ~@7 g#3@2 ~@6 [g#3,d4,e4]@2 ~@7]/3", // E7 G#m7b5 E7 G#m7b5 Dsus2 E7
  C: "[e2 ~ [g#3,d4,e4] ~@3 e2@2 ~@2 e2@2 [g#3,d4,e4] ~@5 [g#3,d4,e4]@2 ~@2 [g#3,d4,f#4]@4 [g#3,d4,f#4]@2 e2 ~@3 e2 ~@5 e2@2 [g#3,d4,e4]@2 [g#3,d4,e4]@2 e2 ~@7 e2@2 [a3,c#4]@4 ~@2 e2@2 [a3,c#4,e4]@2, ~@4 [g#3,d4,e4]@4 [g#3,d4,e4]@4 ~@2 [g#3,d4,e4]@4 ~@12 [g#3,d4,e4]@5 ~ [g#3,d4,e4]@4 ~@6 [g#3,d4,e4]@4 [g#3,d4,e4]@4 ~@4 [a3,c#4]@4 ~@2, ~@4 e2 ~@7 e2 ~@3]/4", // E7 G#m7b5 E7 A E7 A
  D: "[e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 [g#3,d4,e4]@2 e2 ~@5 [g#3,d4,e4]@2 e2 ~ [g#3,d4,f#4]@3 ~@5 [g#3,d4]@2, ~@7 [g#3,d4,e4]@2 ~@4 f#4@3, ~@8 e2@2 ~@3 [g#3,d4]@2 ~, ~@7 e2]/2", // E7 G#m7b5 G#dim E7 G#dim
  E: "[e2,g#3,d4,e4] ~ e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2", // E7
  F: "e2 ~@3 e2@2 ~@2 e2 ~ [a3,c#4]@2 e2 ~ [g#3,d4] ~, ~ [g#3,d4,e4]@2 [a3,c#4]@2 ~@3", // A G#dim E7 A
  G: "[g#3,d4,e4]@3 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2", // E7
  H: "[e2@2 [g#3,d4,e4]@2 e2 ~ [g#3,d4,f#4]@4 [g#3,d4,f#4]@2 e2 ~ f#4@2 e4@2 e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4] ~ e2 ~@5 [g#3,d4,e4]@2 [g#3,d4,e4] ~ [g#3,d4,f#4]@4 [g#3,d4,f#4]@2 e2 ~ [g#3,d4,f#4]@2, ~@7 [g#3,d4]@2 ~@6 [g#3,d4,e4]@2 ~@7, ~@32 e2@5 ~@11]/3", // E7 G#m7b5 E7 G#m7b5 G#dim E7
  I: "[[g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@4 [g#3,d4,e4]@2 e2 ~ [g#3,d4,f#4]@4 [g#3,d4,f#4]@2 e2 ~ [g#3,d4,e4]@2]/2", // E7 G#m7b5 E7
  J: "[e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~@5 [g#3,d4,e4]@2 a3 ~ [a3,d4,f#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@2, ~@7 [g#3,d4,e4]@2 ~@7, ~@4 e2 ~@3]/2", // E7 D A E7
  K: "[g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2", // E7
  L: "~ [g#3,d4,e4]@2 [a3,d4,f#4]@2 ~@2 [a3,c#4,e4], ~@5 [a3,c#4,e4]@2 ~, ~@3 e2", // E7 D A
  M: "[[g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~@5 [g#3,d4,e4]@3 ~ [a3,c#4,e4]@4 ~@4 [e2,g#3]@2, ~@7 [g#3,d4,e4]@2 ~@4 [g3,b3]@3, ~@16 e2@5 ~@11]/2", // E7 A E E7 G
  N: "[e2,e4] ~ g#3 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 [g#3,d4,e4]@2", // E E7
  O: "e2 ~ [g#3,d4,e4]@2 ~@2 [a3,d4,f#4]@4 ~@4 [a3,c#4,e4]@2, ~@5 [a3,c#4,e4]@2 ~, ~@3 e2", // E7 D A
  P: "[[g#3,d4,e4]@3 ~ g#3@2 e2@2 [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~@5 [g#3,d4,e4]@2 ~@2 [a3,d4,f#4]@4 ~@4 [g#3,d4,e4]@2, ~@2 [d4,e4]@2 ~@3 [g#3,d4,e4]@2 ~@4 [a3,c#4]@3, ~@8 e2@2 ~@3 e4@2 ~, ~@7 e2]/2", // E7 D E7 Dsus2 E7 A
  Q: "[g#3,d4,e4]@3 ~ [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~@3 e2@2 [g#3,d4,e4]@2, ~@5 [g#3,d4,e4]@2 ~", // E7
  R: "e2@2 [g#3,d4,e4] ~@3 e2@2 [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@2 ~@2, ~ [g#3,d4,e4] ~@2", // E7
  S: "[g#3,d4,e4]@3 ~ g#3@2 e2@2 [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2, ~ [d4,e4] ~@2", // E7 Dsus2
})).s("gm_overdriven_guitar").gain(0.18).pan(0.8)

// chords · overdriven guitar · "Lead Guitar"
const overdriven_guitar_2 = note(`<
  ~@2 A B@4 C@2 D@2 ~@30 E F G H I J G K L M N O P Q R@2 S@2 T@2 U@3 V@2 W@2 X@2 Y@2 V@2 W@2 X@2 Z@3 AA@3 ~ AB@2 D@2
  ~@16 AB@6 AC@7
>`.pickRestart({
  A: "~@7 b2", B: "[~@2 e4 d4@2 ~ e4 d4@2 ~ e4 d4@2 ~ e4 d4, e3@31 ~, ~@2 g#3@6 ~@2 g#3@7 ~ g#3@6 ~@2 g#3@5 ~]/2",
  C: "[~@2 e4 d4@2 ~ e4 d4@2 ~ e4 d4@2 ~ e4 d4, e3@15 ~, ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@2 ~]/2",
  D: "[~@4 e4@2 d4@4 ~@2 e4@2 d4@4 ~@2 e4@2 d4@4 ~@2 e4@2 d4 ~, e3@31 ~, ~@2 g#3@6 ~@2 g#3@6 ~@2 g#3@6 ~@2 g#3@5 ~]/2",
  E: "a3@15 ~", F: "a3 g#3 a3 g#3 a3 g#3 a3 g#3", G: "a3@2 g#3@2 a3@2 g#3@4 e3@3 ~ e3@2",
  H: "a3@2 g#3@2 a3@2 g#3@3 ~ e3@2 g#3@2 a3 ~", I: "b3@2 d4 e4 b3 g#3 b3@2", J: "d4 e4 b3 g#3 a3 g#3 a3 g#3",
  K: "a3 g#3 a3 g#3@2 e3@2 ~", L: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@2 [a3,d4,f#4]@2 ~@2 [a3,d4,f#4]@2",
  M: "~@2 [e3,g#3,b3]@2 ~@2 [e3,g#3,b3]@3 ~ [a3,d4,f#4]@3 ~@3", // E D
  N: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4] ~ [a3,d4,f#4]@2 ~@2 [d4,e4,a4]@2", // E D Dsus2
  O: "~@2 [b3,e4,g#4]@2 ~@2 [a3,d4,f#4]@3 ~ [b3,e4,g#4]@3 ~@3", // E D E
  P: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [a3,d4,f#4] ~ [a3,d4,f#4]@2", // E D
  Q: "~@2 [e3,g#3,b3]@2 ~@2 [e3,g#3,b3]@3 ~ [a3,d4,f#4]@2 ~@4", // E D
  R: "[[a3,d4,f#4]@4 [a3,d4,f#4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 ~@2 e4@4 g#4@3 ~ [d4,f#4]@4 e4@4 ~@2, ~@7 [g#3,b3]@8 ~, ~@9 e4@4 ~@3]/2", // D A D G#m
  S: "[[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 ~@2 e4@4 g#4@3 ~ f#4@3 ~ e4@5 ~, ~@14 [g#3,b3]@17 ~, ~@9 e4@4 ~@3]/2", // D A G#m
  T: "[[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@3 ~ e4@4 g#4@3 ~ f#4@4 e4@3 ~@3, ~@14 [g#3,b3]@15 ~@3, ~@9 e4@4 ~@3]/2", // D A G#m
  U: "[[a3,d4]@3 ~ [a3,d4]@3 ~ [a3,c#4] ~ [a3,c#4]@2 ~@2 [g#3,b3]@19 ~@15]/3", // D5 A G#m
  V: "[e3@8 c#3@2 e3@2 ~@2 e2@9 ~ b2@2 c#3@2 e3@2 c#3 ~]/2", W: "[e3@8 c#3 ~ e3@2 ~@2 e2@9 ~ b2@2 c#3@2 e3@2 c#3 ~]/2",
  X: "[e3@7 ~ c#3@2 e3@2 ~@2 e2@10 b2@2 c#3@2 e3@2 c#3 ~]/2",
  Y: "[e3@7 ~ c#3@2 e3@2 ~@2 e2@9 ~ b2@2 c#3@2 e3@2 c#3@2]/2",
  Z: "[[a3,d4,f#4]@4 [a3,d4,f#4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 ~@2 [e2,e3]@33 ~]/3", AA: "e3/3",
  AB: "[~@2 e4 d4@2 ~ e4 d4@2 ~ e4 d4@2 ~ e4 d4, e3@31 ~, ~@2 g#3@6 ~@2 g#3@6 ~@2 g#3@6 ~@2 g#3@5 ~]/2",
  AC: "[~@4 e4@2 d4@4 ~@2 e4@2 d4@4 ~@2 e4@2 d4@2 [d3,a3,d4,f#4]@5 ~@2 [d3,a3,d4,f#4]@6 ~@2 e3@54 ~@2 [e2,b2,e3,g#3]@5 ~@12, e3@24 ~@15 d4@28 ~@45, ~@2 g#3@6 ~@2 g#3@6 ~@2 g#3@6 ~@15 g#3@46 ~@27, ~@39 e4@17 ~@56]/7", // D E
})).s("gm_overdriven_guitar").gain(0.41)

// chords · acoustic guitar steel · "Rhythm Guitar 2"
const acoustic_guitar_steel = note(`<
  ~@7 A@24 B@2 C@2 D@2 E@2 F@2 A@14 G@4 H@2 I J@2 A@14 K L M N O P Q R S@6 T@3 A@16 U@3 ~@4
>`.pickRestart({
  A: "[[e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~@5 [g#3,d4,e4]@2 e3@2 [g#3,e4]@2 ~@6 [g#3,d4,e4]@2, ~@7 [g#3,d4,e4]@2 ~@2 d4@2 [g#3,d4,e4]@2 ~, ~@4 [e2,e3] e2@2 [e2,e3], ~@6 e3 ~]/2", // E E7 E E7 E E7 E E7 …
  B: "[[e2,e3]@2 [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@4 [g#3,d4,e4]@2 [e2,e3] ~ [a3,d4,f#4]@4 [a3,c#4,e4]@3 ~ [a3,c#4,e4] ~]/2", // E E7 E E7 E E7 E E7 …
  C: "[~@2 [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2 e2 ~ [g#3,d4,e4]@4 [g#3,d4,e4] ~ [e2,e3] ~ [a3,c#4,e4]@3 ~ e4@4 [a3,c#4,e4]@2, [e2,e3]@2 ~@11 [g3,b3]@3]/2", // E7 E E7 E E7 E A E …
  D: "[[e2,e3]@2 [g#3,d4,e4]@2 ~@2 [g#3,d4,e4]@2 ~@4 [e2,e3]@2 [g#3,d4,e4]@4 [g#3,d4,e4]@2 [e2,e3] ~ [a3,d4,f#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@2, ~ [e2,e3]!2 ~@5, ~@5 [g#3,d4,e4]@2 ~@9]/2", // E E7 E E7 E D A E …
  E: "[~@2 [g#3,d4,e4] ~@3 [g#3,d4,e4]@2 ~@2 [g#3,d4,e4]@2 [g#3,d4,e4]@2 ~@4 [g#3,d4,e4]@3 ~ [a3,d4,f#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@2, [e2,e3]@2 ~@2 [e2,e3]@3 [g#3,d4,e4]@2 ~@7, ~@16 [e2,e3]@5 ~@11]/2", // E7 D A E E7 E
  F: "[~@2 [g#3,d4,e4] ~@3 [g#3,d4,e4]@2 ~@2 [g#3,d4,e4]@2 [g#3,d4,e4]@2 ~@4 [g#3,d4,e4]@3 ~ [g#3,d4,e4]@4 [g#3,d4,e4]@4 [g#3,d4,e4]@2, [e2,e3]@2 ~@2 [e2,e3]@3 [g#3,d4,e4]@2 ~@7, ~@16 [e2,e3]@5 ~@11]/2", // E7 E E7 E
  G: "[[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [g#3,b3,e4]@3 ~ [g#3,b3,e4]@2 [e2,e3] ~ [g#3,b3,e4]@2 [e2,e3]@2 [g#3,b3,e4]@2 [e2,e3]@2 [g#3,b3,e4] ~, ~@7 [e2,e3]@2 ~@7]/2", // D A E
  H: "[[a3,d4,f#4]@3 ~ [a3,d4,f#4]@2 ~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [g#3,b3,e4]@3 ~ [g#3,b3,e4]@2 [e2,e3] ~ [g#3,b3,e4]@2 [e2,e3]@2 [g#3,b3,e4]@2 [e2,e3]@2 [g#3,b3,e4] ~, ~@7 [e2,e3]@2 ~@7]/2", // D A E
  I: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [g#3,b3,e4]@2", // D A E
  J: "[~@2 [g#3,b3,e4]@2 [e2,e3] ~ [g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2 [e2,e3] ~@5 [g#3,b3,e4]@2 [e2,e3] ~ [g#3,b3,e4]@2 [e2,e3] ~@3 [e2,e3]@2 [g#3,b3,e4]@2, ~@4 [e2,e3]@2 ~ [g#3,b3,e4]@2 ~@4 [g#3,b3,e4]@2 ~, ~@4 [e2,e3] ~@3]/2", // E
  K: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [g#3,d4,e4]@2", // D A E7
  L: "~@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2 ~@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2, ~@2 [e2,e3] ~", // E7 E E7 E E7 E
  M: "~@2 [g#3,d4,e4] ~@7 [g#3,d4,e4]@2 ~@2 [e2,e3]@2, ~@2 [e2,e3]@2 [e2,e3]@3 ~, ~@3 [g#3,d4,e4]@2 ~ [g#3,d4,e4]@2", // E7 E E7
  N: "[e2,e3]@2 [g#3,d4,e4] ~ [e2,e3] ~@3 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2, ~@3 [g#3,d4,e4]@2 ~@3", // E E7 E E7 E E7
  O: "[e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~@5 [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2, ~@3 [g#3,d4,e4]@2 ~@3, ~@2 [e2,e3] ~", // E E7 E E7 E E7 E
  P: "[e2,e3]@4 ~@4 [g#3,d4,e4] ~@3 [e2,e3]@2 [g#3,d4,e4]@2, ~@2 [g#3,d4,e4]@2 ~ [g#3,d4,e4]@2 ~, ~@3 [e2,e3]@3 ~@2", // E E7 E E7 E
  Q: "[e2,e3]@2 [g#3,d4,e4] ~@3 [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2, ~ [e2,e3] ~@2", // E E7 E E7 E E7 E
  R: "[e2,e3]@4 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2", // E E7 E E7 E E7
  S: "[[e2,e3] ~@5 [g#3,d4,e4]@2 e3@2 [g#3,e4]@2 ~@6 [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2, ~ [g#3,d4,e4]@2 ~@2 d4@2 [g#3,d4,e4]@2 ~@7, ~ [e2,e3] e2@2 [e2,e3] ~@3, ~@3 e3 ~@4]/2", // E E7 C#m E7 E E7 E E7 …
  T: "[[e2,e3] ~@5 [g#3,d4,e4]@2 e3@2 [g#3,e4]@2 ~@22 [g#3,d4,e4]@2 e3@2 [g#3,e4]@2 ~@6 [g#3,d4,e4]@2, ~ [g#3,d4,e4]@2 ~@2 d4@2 [g#3,d4,e4]@2 [g#3,d4,e4]@2 [g#3,d4,e4]@2 [g#3,d4,e4]@2 [g#3,d4,e4]@2 ~@2 d4@2 [g#3,d4,e4]@2 ~, ~ [e2,e3] e2@2 [e2,e3]!4 [e2,e3] e2@2 [e2,e3], ~@3 e3 ~@6 e3 ~]/3", // E E7 C#m E7 C#m E7 E
  U: "[[e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~ [g#3,d4,e4]@2 [e2,e3]@2 [g#3,d4,e4]@2 [e2,e3] ~@5 [g#3,d4,e4]@2 ~@2 [g#3,d4,e4]@2 [d3,f#3,a3,d4]@7 [d3,f#3,a3,d4]@8 [e2,b2,e3,g#3,d4]@8 ~, ~@7 [g#3,d4,e4]@2 ~@15, ~@4 [e2,e3]!2 ~@6]/3", // E E7 E E7 E E7 E E7 …
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.3)

// other · drawbar organ · "Hammond Organ"
const drawbar_organ = note("<A@8 ~@71 B@6 C@4 ~@16 C@4 D@8 ~>".pickRestart({
  A: "[~ [e3,e4,e5]@31]/8", B: "[e4@47 ~]/6", C: "[e3,e4,e5]/4", D: "[[e3,e4,e5]@71 [e3,e4]@54 ~@3]/8",
})).s("gm_drawbar_organ").gain(0.18).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A@3 B A@7 C A@3 C A@7 D A@5 B A@11 E F G B H A G I G I J I J K L M N O P O B O P Q N O P J B O I R D N O N G S@4
  A@7 D A@3 B A@3 T S@7 U ~@3 V ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x", C: "x ~@2 x!2 ~ x ~", D: "x!2 ~ x ~ x ~@2", E: "x ~@2 x!3 ~ x",
  F: "x!2 ~@2 x ~@2 x", G: "~ x ~ x!2 ~@3", H: "~@2 x ~@3 x ~ x ~ x!2 ~@2 x ~", I: "x ~@2 x ~@2 x!2",
  J: "~ x ~ x!3 ~@2", K: "x ~@5 x!2", L: "~ x ~@2 x!2 ~ x", M: "~@2 x ~@2 x ~@2", N: "x ~@3 x!2 ~ x",
  O: "~ x ~ x!3 ~ x", P: "~@4 x!2 ~ x", Q: "~@3 x!3 ~ x", R: "~ x ~ x ~ x ~@2", S: "x!2 ~@2 x!2 ~@2",
  T: "x ~@2 x!3 ~@2", U: "x!2 ~ x ~@4", V: "~@7 x!2 ~@6 x",
})).gain(0.6)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@53 [~@7 x] ~@59 [~@7 x!5 ~ x!3] [x!5 ~ x!8 ~ x] [x!2 ~@14] ~@2>").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@2 [x!4] ~@115>").gain(0.06)

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A B C B D E B@6 F B G B H B@9 I B@3 J B@3 K B@7 L B I G M B N O L O P O Q R S T B@2 U B@3 V W B@2 U I B@2 O X Y Z
  B Z W B@3 I B@11 AA B@3 C B@3 I B@3 AB ~@2 AC AD ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@2 x ~@4 x!3 ~", D: "~@4 x ~@2 x ~ x ~ x!3 ~ x", E: "~@2 x!2 ~@2 x ~",
  F: "~@4 x ~@5 x!2 ~ x!2 ~", G: "~@4 x ~@2 x ~@4 x ~@3", H: "~@4 x ~@2 x ~@2 x!2 ~ x!3", I: "~@4 x ~@7 x!3 ~",
  J: "~@4 x ~@7 x!2 ~ x", K: "~@4 x ~@2 x ~@3 x!4 ~", L: "~@4 x ~@2 x ~ x ~@2 x!2 ~ x",
  M: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", N: "~@4 x ~@2 x ~@3 x ~@4", O: "~@2 x ~ x!2 ~@2", P: "~@4 x ~@4 x ~@2 x!2 ~ x",
  Q: "~@4 x ~@2 x ~@3 x!5", R: "~@4 x ~ x!3 ~ x ~@5", S: "~@4 x ~ x!2 ~ x ~@2 x ~@2 x",
  T: "x ~@4 x!2 ~ x!2 ~ x ~@2 x!2", U: "x!2 ~ x", V: "x ~@3 x ~@2 x ~@4 x ~@3", W: "~@4 x ~@7 x!4",
  X: "~@4 x ~@4 x ~@2 x ~@3", Y: "~ x ~@2 x ~@2 x!2 ~@2 x ~@4", Z: "~ x!3", AA: "~@4 x ~@7 x!2 ~@2",
  AB: "~@4 x ~@3 x ~@6 x", AC: "~@3 x!7 ~ x ~@4", AD: "~ x ~ x!2 ~ x ~@2 x ~@6",
})).gain(0.6)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@3 [x!4]!3 [x!3 ~] ~@111>").gain(0.06)

// drums · mid tom
const mid_tom = s("mt").struct("<~@56 A ~ B ~@4 C ~@16 D ~@34 A ~@2>".pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "~ x!3 ~@8 x!2 ~@2", D: "~@9 x ~@2 x!2 ~@2",
})).gain(0.6)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@115 [~@13 x ~ x] ~@2>").gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A B C D C A@6 B A@3 E A@7 F A E A@3 G C A@2 B C A H A@4 I J B K A L M N D O D N D P D ~ C A Q A C A R S T U V U W
  U X Y Z P A N E AA@3 AB C A@6 AC A@7 E AA AB AD@2 AE AD@2 AF ~@5
>`.pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "~ x!7", D: "x!4 ~@4", E: "x!6 ~@2", F: "x!3 ~@3 x!2", G: "x!5 ~@2 x", H: "x!7 ~",
  I: "x!3 ~@2 x ~ x", J: "~ x!4 ~ x!2", K: "x!5 ~ x!2", L: "x!4 ~@2 x ~", M: "x!3 ~@5", N: "~ x!6 ~",
  O: "~ x!3 ~ x!2 ~", P: "~ x!4 ~ x ~", Q: "~ x ~ x!5", R: "~ x ~ x!2 ~@3", S: "x ~ x!3 ~@3", T: "~@2 x!5 ~",
  U: "x ~ x!4 ~@2", V: "~@3 x!2 ~ x ~", W: "x ~ x!3 ~ x ~", X: "~@4 x!3 ~", Y: "~@3 x ~@4", Z: "~ x!2 ~@5",
  AA: "~ x ~ x ~ x ~ x", AB: "~ x ~ x ~ x ~@2", AC: "x!3 ~ x ~ x!2", AD: "~@3 x ~ x ~@2", AE: "~@3 x ~ x ~ x",
  AF: "~ x ~@2",
})).gain(0.3)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@43 A ~@27 B C@2 B C B C B ~@27 A C B@2 C@2 B D E F ~@2>".pickRestart({
  A: "~@7 x", B: "~ x ~@6", C: "~ x ~@5 x", D: "~@8 x!3 ~@2 x ~ x", E: "~ x ~ x ~@2 x ~ x ~ x ~ x ~@2 x", F: "~ x ~@14",
})).gain(0.18)

// drums · high tom
const high_tom = s("ht").struct("<~@54 A ~@5 B C ~ D ~@51 E ~@2>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@12 x!4", C: "~ x", D: "~@11 x ~@4", E: "~@11 x!3 ~@2",
})).gain(0.3)

// … 40 more lines

More by Creedence Clearwater Revival