Strudelify
Wonderful Tonight cover art

Slowhand 35th Anniversary

Wonderful Tonight

Eric Clapton

KeyG majorTempo93 bpm
0:00/0:00
// Wonderful Tonight — Eric Clapton
// 93 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/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 · electric bass finger · "tk2"
const bass = note(`<
  ~ A B C D E B F D E B C G E B C H C I J K C L A B C D E B M I N B M H M I O K P I Q R S T J K S U F V E B F D A B C D
  E B C I E B C H C L J K W I X Y C I A Z C D E B AA D AB@2
>`.pickRestart({
  A: "g2@13 ~ g2@2", B: "f#2@3 d2", C: "c2@6 e2 c2", D: "d2 e2 f#2 a2", E: "g2@11 ~ g2@4", F: "c2@3 e2",
  G: "d2@9 ~ e2@2 f#2@4", H: "d2@9 ~ d2@2 a1@2 b1@2", I: "d2@5 e2 f#2@2", J: "g2@8 f#2@5 ~ d2@2", K: "e2@6 d2 b1",
  L: "d2@6 e2 f#2", M: "c2@11 ~ e2@2 c2@2", N: "g2@3 g2", O: "g2@4 f#2@2 ~ d2", P: "c2@4 ~ c2 e2 c2",
  Q: "g2@9 ~ g2@2 e2@2 d2@2", R: "g1@5 a1 b1@2", S: "c2@6 ~ c2", T: "d2@6 ~ f#2", U: "d2@6 a1 b1", V: "d2",
  W: "c2@9 ~ c2@2 e2@2 c2@2", X: "g2 f#2", Y: "e2 d2", Z: "f#2@13 ~ d2@2", AA: "c2@5 d2 e2@2", AB: "[g2@29 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.2)

// chords · epiano1 · "tk3"
const epiano1 = note(`<
  ~ A B C D@3 E F@2 G H I J G C K L M N O H P Q G C R S G C I T G U K L B V W H X Y@3 I Z AA AB I H X AC G AD AE AF G C
  AG AH AI AJ I AF G AK AL AM AN@2 W H X AO AP AQ I AR G C AE AF B AS AT AF ~
>`.pickRestart({
  A: "~ [d5,g5,a5], [d5,g5,b5]@7 b5@9, ~@6 d6@9 ~", B: "~ d6, [d5,f#5,a5]", C: "[c5,e5,g5]",
  D: "[f#5@4 g5@4 ~@4 c6@3 ~ [g5,b5]@16 [a5,d6]@16, d5@23 ~, ~ a5 ~@4]/3", E: "[b4,e5,g5]",
  F: "[f#5@4 g5@4 a5@4 c6@4 [g5,b5]@7 ~ [d5,g5,a5]@8, d5@23 [b5,d6]@9]/2", G: "[d5,f#5,a5]", H: "[g4,c5,e5]",
  I: "[a4,d5,f#5]", J: "[g5,b5]@7 ~@2 d5@7, ~@7 [b5,d6]@9, ~ [g5,a5]", K: "[a4,d5,f#5]@6 a4 b4", L: "~ [g4,e5,g5], c5",
  M: "~@8 d6@7 ~, [d5,f#5,a5]", N: "[d5,g5,b5]@7 ~ [d5,f#5,a5]@7 ~",
  O: "[e5,g5]@2 [d5,f#5] [b4,e5,g5] [d5,f#5]@2 [b4,e5,g5]@10, b4 ~@15", P: "~@3 d6, [a4,d5,f#5]", Q: "[g5,b5]",
  R: "f#5 g5 ~ c6, d5 [d5,a5]", S: "~ [d5,g5,a5], [d5,g5,b5]@7 b5@9, ~@3 d6@5",
  T: "~@9 d5@6 ~, [g5,b5]@7 b5@8 ~, ~@6 d6@9 ~, ~ [g5,a5]", U: "~@3 g5, [g4,c5,e5]", V: "[g5,b5] [f#5,a5], d5@15 ~",
  W: "[b4,e5,g5]@2 [d5,f#5] [e5,g5] [d5,f#5]@2 [b4,e5,g5]@10, ~@3 b4@2 ~@11", X: "[f#4,a4,d5]",
  Y: "[~@2 [g4,c5,e5], [g4,b4]@7 [d5,g5]@16 ~, ~@13 b5@32 ~@3, ~@7 g4@9 ~@8, ~@15 [d4,b4]@32 ~]/3", // C G G5 G
  Z: "[d5,g5,b5] [d5,f#5,a5]", AA: "[b4,e5,g5]@2 [a4,d5,f#5] [b4,e5,g5] [d5,f#5]@2 [b4,e5,g5]@8 ~@2, ~@4 a4 ~@11",
  AB: "[c4,c5,e5]", AC: "d5 ~@8 c5@7, [g4,b4], ~@7 [b5,d6]@9, ~ [d5,g5,a5]", AD: "[g4,e5], c5@13 ~@3",
  AE: "f#5 [e5,g5] [f#5,a5] [a5,c6], d5", AF: "[d5,g5,b5]", AG: "[a4,f#5]@2 ~ [a4,a5,c6], d5",
  AH: "b5@7 ~@2 d5@7, [d5,g5] [g5,a5], ~@7 [b5,d6]@9", AI: "[f#5,a5], d5@7 ~", AJ: "[e5,g5], c5@7 ~",
  AK: "~ g5, [c5,e5]", AL: "f#5@2 [e5,g5]@2 [f#5,a5]@2 a4 b4, [a4,d5]@11 ~@5", AM: "~ [g4,e5,g5], c5@7 ~",
  AN: "[~@8 d6@6 c6 ~ [g5,b5]@8 [d5,f#5,a5]@6 ~@2, d5@23 ~@9, a5 ~, f#5@7 ~@9]/2", // G D
  AO: "b4@7 ~@3 a4@6, g4@15 ~, ~@8 [f#4,b4]@7 ~", AP: "[b4,d5,g5]", AQ: "[c5,e5]", AR: "[b4,d5,g5,b5]",
  AS: "~ c6, [e5,g5], ~@4 c5@3 ~", AT: "f#5@4 g5@4 a5@3 ~ [a5,c6]@4, d5@7 ~ d5@7 ~",
})).s("gm_epiano1").gain(0.1).pan(0.7)

// other · overdriven guitar · "tk5"
const overdriven_guitar = note(`<
  ~ A@4 B@3 C@3 ~@12 D@3 E@3 ~@12 F G ~@8 H@3 I@4 E@3 ~@12 J K ~@2 L@3 M@4 N@3
>`.pickRestart({
  A: "[~@8 a4@4 g4@2 a4@8 ~@2 a4@4 g4@2 d4@9 ~ a4@4 g4@2 a4@18]/4",
  B: "[~@8 a4@4 g4@2 a4@9 ~ a4@4 g4@2 d4@9 ~ a4@4 g4@4]/3", C: "[a4@4 b4@4 c5@4 d5@27 ~@9]/3",
  D: "[~@4 a4@2 g4 a4@4 ~ a4@2 g4 d4@4 ~ a4@2 g4@2]/3", E: "[a4@4 b4@4 c5@4 d5@21 ~@15]/3",
  F: "~@4 d4@2 e4@2 g4@2 a4@2 b4@2 d5 ~", G: "d5@2 a4 g4", H: "[~@8 a4@4 g4@2 a4@8 ~@2 a4@4 g4@2 d4@7 ~@3 a4@4 g4@4]/3",
  I: "[a4@4 b4@4 c5@4 d5@11 ~ a4@4 g4@2 a4@8 ~@2 a4@4 g4@2 d4@8 ~@2 a4@4 g4@4]/4", J: "~@8 a4@7 ~",
  K: "a4@2 g4 e4 d4@4", L: "[~@8 a4@4 g4@2 a4@9 ~ a4@2 b4@2 d5@2 [a4,c5]@6 g4@2 e4@2 g4@8]/3",
  M: "[d5@3 ~ d5@16 ~@4 a4@4 g4@2 a4@9 ~ a4@4 g4@2 e4@9 ~ a4@4 g4@4]/4", N: "[a4 b4 c5 d5@8 ~]/3",
})).s("gm_overdriven_guitar").gain(0.25)

// chords · acoustic guitar steel · "tk6"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J K L@2 F M N O P Q R S T U V W V X F Y@3 D Z AA O AB AC AD AE AF AG@2 AH@2 AI AJ AK AL AM AN AO
  AP AQ AR U V AS AT AU AV K AW@2 AX AY AZ BA BB BC AD BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR@2
>`.pickRestart({
  A: "~@3 g3 ~@2 g3@2, g3@3 ~@5, ~ b3@3 ~ d4@3, ~ d4 g4@2", B: "~@3 f#3 ~@2 a3@2, f#3@3 ~@5, ~ a3@3 ~ d4@3, ~ d4 f#4@2",
  C: "~@3 e3, e3@6 e3@5 ~@5, ~@2 g3@9 ~@5, ~@2 c4@3 c4@3, ~ e4", D: "~@3 a3, f#3@3 f#3@4 ~, ~ a3@3 ~ d4@3, ~ d4 f#4@2",
  E: "~ g4, g3 d4@3, ~ b3@7, ~@3 g3@5", F: "~@7 f#3, f#3@3 f#3@4 ~, ~ a3@5 a3@2, ~@2 d4@3 d4@3, ~ f#4",
  G: "~@7 e3, e3@3 e3@4 ~, ~ g3@5 g3@2, ~@2 c4@3 c4@3, ~ e4", H: "~@5 d4@3, f#3@3 f#3@4 ~, ~ a3@2 ~, ~ f#4",
  I: "~@8 g4@7 ~, g3@6 g3@9 ~, ~@2 b3@13 ~, ~@4 d4@11 ~", J: "~@3 a3, f#3@3 f#3@4 ~, ~ a3@5 ~@2, ~@2 d4@3 d4@3, ~ f#4",
  K: "~ c4@3, e3, ~ g3@7",
  L: "[~@7 g3, ~ a3@2 a3@3 a3@2 ~ b3@7, ~ d4 a4@2 ~@2 g4@2, ~@5 f#4@3 ~@2 d4@3 d4@3, ~@7 g3@4 g3@3 ~@2]/2",
  M: "~@3 g3, e3@3 ~ e4@4, ~ g3@5 ~@2, ~@2 c4@3 c4@3",
  N: "~@5 d4 a2 b2, f#3@3 f#3@3 ~@2, ~ a3@5 ~@2, ~@2 d4@3 ~@3, ~@2 f#4 ~",
  O: "~@3 c4, c3, ~ d4@4 d4@3, ~ c4@2 ~, ~@3 g4@5", P: "~@7 d3, d3@3 d3@4 ~, ~@2 d4@3 d4@3, ~ a4, ~@3 a3",
  Q: "~@3 b4 ~@2 a4@2, ~ g3@3 f#3@4, ~@2 d4@2 ~ d4@3", R: "~@6 d3 b2, e3@4 e3@11 ~, ~@2 b3@4 b3@9 ~",
  S: "~@3 g3, c3, ~ g3@2 ~, ~@3 g4@5, ~@5 c4@3", T: "~@3 a3, d3, ~ a3@5 ~@2, ~@3 d4@5",
  U: "~@3 g3, g3@3 g3@3 ~@2, ~ b3@7, ~@2 d4@3 d4@3, ~ g4", V: "~@3 a3, f#3@3 f#3@5, ~ a3@3 ~ d4@3, ~ d4 f#4@2",
  W: "~@3 e3, e3@3 e3@3 ~@2, ~ g3@7, ~@2 c4@3 c4@3, ~ e4", X: "~@7 g3, g3@3 g3@2 g3@2 ~, ~ b3@7, ~ d4@2 d4, ~ g4",
  Y: "[~@4 d4@5 ~@5 a3 ~@7 g3@2, e3@3 ~@10 f#4@2 ~@2 b3@7, ~ g3@8 a3@2 a3@3 ~ g3@4 g3@3 ~@2, ~@2 c4@7 ~ d4@2 a4@3 ~@3 d4@3 d4@3, ~@5 g4]/3",
  Z: "~@3 e3, e3@3 ~ e4@4, ~ g3@7, ~@2 c4@3 c4@3",
  AA: "~@5 d4 ~ b2, f#3@3 f#3@3 a2@2, ~ a3@5 ~@2, ~@2 d4@3 ~@3, ~@2 f#4 ~",
  AB: "~@7 d3, ~ a3@5 a3@2, ~@2 d4@3 d4@3, ~@3 d3@4 ~, ~ a4", AC: "~ b4 ~ a4, g3@7 ~ f#3@8, ~ d4@3 ~@4",
  AD: "g4@2 f#4 g4 f#4@2 ~@8 e3@2, ~@3 g4@5, ~@3 g3", AE: "~@6 g3 c3, c3@7 ~, ~ g3@2 ~, ~@3 g4@5, ~@5 c4@3",
  AF: "~@3 a3, d3@15 ~, ~ a3@2 ~, ~@3 d4@5", AG: "[~@2 g4@2 ~@11 g3, g3@7 ~ g3@7 ~, ~ g4@3, ~@5 d4@7 d4@4]/2",
  AH: "[~@6 e3 f#3, c3@2 d3 ~, ~ g3@7 ~ a3@3 ~@4, ~ c4@5 ~@2, ~@5 a4@3]/2",
  AI: "~@3 d4 ~@3 d4, g3 f#3, ~@2 b4@2 ~ d4@2 ~, ~@3 a4", AJ: "g4@2 f#4 g4 f#4@2 ~@8 e3@2, ~@3 g4@5",
  AK: "~@7 e3, c3@15 ~, ~ d4@2 g4@5, ~ c4@2 c4, ~@10 d4@5 ~", AL: "~@7 a3, d3, ~ d4@2 d4@3 d4@2, ~@2 e4@3 e4@3, ~ a4",
  AM: "~@3 c4, c3, ~ g3@7, ~ e4 g4@2, ~@3 c4@2 e4@3", AN: "d4", AO: "~@3 g3, g3@3 ~ g4@4, ~@2 d4@3 d4@3",
  AP: "~@3 a3, f#3, ~ a3@2 ~ f#4@4, ~@2 d4@3 d4@3", AQ: "~@3 e3, e3@3 ~, ~ g3@2 g3@5, ~@2 c4@3 c4@3, ~ e4",
  AR: "~@7 f#3, f#3@7 ~, ~@2 d4@3 d4@3, ~@3 a3@3 a3@2, ~ f#4",
  AS: "~@3 e3, e3@3 e3@3 ~@2, ~ g3@3 e4@4, ~@4 c4@5 ~ c4@6", AT: "~@2 d4@2 ~@3 f#3, f#3@7 ~, ~ a3@2 ~ f#4@4, ~@5 d4@3",
  AU: "~@7 g3, g3@3 g3@4 ~, ~ d4@3, ~ g4", AV: "~@7 f#3, f#3@7 ~, ~ a3@2 a3@3 a3@2, ~@2 d4@3 d4@3, ~ f#4",
  AW: "[~@7 g3 ~@6 g3@2, ~ a3@2 a3@3 a3@2 g3@3 g3@3 ~@2, ~@2 d4@7 ~ d4@3 d4@3, ~@4 a4@5 ~@7, ~@5 f#4@4 ~@3 g4@4]/2",
  AX: "~@3 a3, f#3@3 f#3@5, ~ a3@5 ~@2, ~@2 d4@3 d4@3, ~ f#4", AY: "~@3 e3, e3@3 ~, ~ g3@7, ~@2 c4@3 c4@3, ~ e4",
  AZ: "~@5 d4 ~ b2, f#3@3 a2, ~@2 d4@3 ~@3, ~@2 a4 ~", BA: "~ g3@2 ~ e4@4, c3, ~@3 g3@3 ~@2",
  BB: "~@3 a3@3 ~ f#3, d3@3 e3, ~ a3@2 ~@5, ~ a4@3", BC: "~@3 d4 ~@3 d4, g3 f#3, ~ d4@2 ~@2 d4@2 ~, ~@4 b4@5 ~@3 a4@4",
  BD: "~ g4, c3, ~ g3@6 ~, ~ d4@3, ~@3 c4@5", BE: "~@6 a3 d3, ~ a3@5 ~@2, ~@2 d4@3 d4@3, ~@3 d3@4 ~, ~@8 a4@7 ~",
  BF: "~@2 d3@2 e3@2 g3@2 a3@4 a3@3 ~", BG: "a3@2 g3@2 e3 d3 e3@9 ~", BH: "~@3 g4@5, ~ c4@3",
  BI: "~@3 a4@5, ~ a3@7, ~ d4@3", BJ: "~@7 g3, g3@7 ~, ~@2 d4@3 d4@3, ~ g4",
  BK: "~@3 a3, f#3, ~ a3@2 a3@3 ~@2, ~@2 d4@3 d4@3, ~ f#4", BL: "~@5 c4@3, e3@3 e3@4 ~, ~ g3@5 ~@2, ~@2 c4@3 ~@3, ~ e4",
  BM: "~@3 a3, f#3@9 ~ d4@6, ~ a3@2 a3@3 ~@2, ~@4 d4@4 f#4@7 ~", BN: "~ b3 ~@4 b3@2, g3@2 d4@3 d4@3, ~@3 g3@5, ~ g4",
  BO: "~@12 a3@3 ~, f#3@6 f#3@9 ~, ~ a3@3 ~ d4@3, ~ d4 f#4@2", BP: "~ g3 ~@4 g3@2, e3 c4 e4@2, ~@3 e3@5, ~@5 c4@3",
  BQ: "f#3 g3 a3 c4", BR: "[b3@7 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.3)

// chords · acoustic guitar steel · "tk6" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@4 A ~@3 B ~ A ~@4 C ~@13 D@2 ~ A E ~@3 F ~@3 G H ~@2 I J ~@4 K L ~ M ~@3 N O ~@6 P Q ~@3 R ~@4 S T ~ U ~@7
>`.pickRestart({
  A: "~@7 f#3", B: "~@7 f#3, ~@3 a3", C: "~@3 e3@5", D: "[~@3 e3@6 ~@7]/2", E: "~@3 e3@3 ~@2", F: "~@10 d4@5 ~",
  G: "~ d4@2 d4@2 ~@2 g3", H: "~@3 b3@2 b3@3", I: "~ d4@2 ~@5", J: "~@6 g3 ~", K: "~@3 g3@3 ~@2", L: "~@3 a3@3 ~@2",
  M: "~ a3@2 ~@5", N: "~@3 a3 ~@4", O: "~ b3@7", P: "~ a3@2 a3@3 ~@2", Q: "~@2 c4@3 ~ g3@2, ~@5 c4@3", R: "~@7 g3",
  S: "f#3", T: "~ b3@2 b3@3 b3@2", U: "~@7 e3, ~@3 g3",
})).s("gm_acoustic_guitar_steel").gain(0.09).pan(0.3)

// chords · rock organ · "tk7"
const rock_organ = note(`<
  ~ A@2 B C D E F G@2 H I H J K L M N O P Q@2 H R S T U V W I H X@2 Y Z I AA AB AC I H AD@2 B AE AF AG F H AH S AI AJ B
  AK@2 AL F AM AN@2 AO AP AQ@2 B AR AS AT AU AV AW AX AY AZ BA BB BC AX BD BE@2 BF BG BH BI@2
>`.pickRestart({
  A: "[[g5,b5]@8 a5@7 a6, d6@15 ~, ~ f#5]/2", B: "[c6,e6,g6]", C: "[f#5,a5] [g5,b5] [a5,c6]@2, d6@15 ~",
  D: "[g5,b5,d6]@3 [b5,e6]", E: "~@3 a6, [a5,d6]", F: "[c6,e6]",
  G: "[[f#5,a5]@4 [g5,b5]@4 a5@3 ~ [c6,e6]@4 [b5,d6]@16, d6@3 g5@5]/2", H: "[f#5,a5,d6]", I: "[g5,c6,e6]",
  J: "~@8 d6@7 ~, [g5,b5]", K: "[a5,d6], d5@7 ~", L: "[c6,e6], g5@9 ~@7", M: "[a5,d6]@6 a5 b5, f#5@5 ~@3",
  N: "~@2 d6@2 ~@2 g5@9 ~, e6, ~ c6@3", O: "d6@8 e6@4 d6@3 ~, a5", P: "[b5,d6]@3 e6 [f#5,d6]@2 e6@2, ~ a5",
  Q: "[[g5,b5,d6]@5 e6@2 ~ e6@7 ~, ~@7 g5@9]/2", R: "b5@6 a5 b5, g5@7 ~", S: "a5", T: "[e5,g5]", U: "[d6,e6] ~ d6@14",
  V: "g5", W: "d6", X: "[a5 b5@9 c6@2 b5@4 [f#5,a5]@14 ~@2, d6@31 ~, g5 ~]/2", Y: "[c6,e6], a6 ~@3",
  Z: "[a5,d6]@6 a5 b5", AA: "[f#5,a5]@2 e5 [f#5,a5], d6, ~@4 g5 ~@3", AB: "~ d5 e5 g5 b5@2 d6@2, ~@8 a5 ~@7",
  AC: "g6@5 [b5,d6]@3", AD: "[[g5,b5,d6]@7 ~ [b5,d6]@16 [g5,g6]@8]/2", AE: "[a5,d6,f#6]",
  AF: "[g5,b5,d6]@2 b5 d6, ~@8 a5 ~@7", AG: "g6@5 b5 d6@2, ~@10 a5 ~@5", AH: "c6 b5 a5 g5, ~@4 a5 ~@11",
  AI: "d5@2 d6 e6, g5@15 ~, ~ b5", AJ: "~@3 a6, [f#5,a5,d6]",
  AK: "[a5@12 d6@2 a5 ~ [g5,d6]@15 ~, f#5@7 ~@9, d6@2 ~@5 b5@9]/2", AL: "a5@3 a6, d6",
  AM: "[d5,f#5] [e5,g5] f#5 c6, d6@15 ~, ~@8 a5@7 ~", AN: "[b5 [f#5,a5], d6]/2", AO: "c6",
  AP: "f#5@6 a5 g5, d6@15 ~, ~@3 d5", AQ: "[a5 ~ b5@13 a5 a5@11 ~ a6@4, d6@31 ~, ~@2 a5 ~@13 d5@9 ~@7, ~@16 g5 ~@15]/2",
  AR: "d6 e6 f#6@2", AS: "g6@2 d6 e6@13", AT: "[d6,f#6]@4 d6@4 e6@4 f#6@3 ~, a5@7 ~@9",
  AU: "~@2 d5 ~ e5@2 g5@2 a5 ~ d6 ~ d6@2 e6@2, ~@4 d5 ~@4 b5@2 ~@5", AV: "g5@4 d6 e6 d6 b5, ~@14 a5 ~",
  AW: "g5@11 ~ g5@4", AX: "[a5,d6]", AY: "~ d5 e5 g5 b5@2 g5@2, ~@8 a5 ~@7",
  AZ: "b5@2 d6 ~ d6@2 e6@2 d6@4 [a5,a#5] ~@3, ~@3 b5", BA: "g5, a5 ~@15", BB: "[f#5,a5]", BC: "[b5,d6]@7 e6, g5",
  BD: "[g5,e6]@15 ~, c6@13 ~@3", BE: "[f#5@3 ~ g5@3 ~ a5@4 a6@4 ~@14 e6@2, d6@31 ~]/2", BF: "d6@7 a6",
  BG: "d6 e6@15, [c6,g6]", BH: "a5@3 ~ [g5,b5]@4 [a5,c6]@8, d6@15 ~", BI: "[[g5,d6]@31 ~, b5@11 ~@21]/2",
})).s("gm_rock_organ").gain(0.1).pan(0.7)

// chords · rock organ · "tk7" · soft notes
const rock_organ_soft = note(`<
  ~@7 A B ~@4 C ~@4 D E ~ F ~@2 G ~@8 H ~@7 I@2 ~@4 J ~@3 K ~@2 L ~ M A ~ J ~ N O ~ P ~@11 Q ~@4 R S ~@4
>`.pickRestart({
  A: "g6", B: "~@8 c6@3 ~@5", C: "d6@7 ~@9", D: "f#5@15 ~", E: "g5@7 ~@9", F: "c6@15 ~", G: "f#5", H: "~ g6@3",
  I: "[~@8 g5@15 ~@9]/2", J: "g5", K: "b4 ~", L: "~ e6@2 ~", M: "~@8 f#5@5 ~@3", N: "e5, g5@7 ~", O: "a5@11 ~@5",
  P: "~@7 e6 ~@8", Q: "d5@15 ~", R: "[b5,g6]@7 ~", S: "f#5@3 ~",
})).s("gm_rock_organ").gain(0.06).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ x!49 ~ x!34 ~@2>").gain(0.25)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.15)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~@3 x ~@2 x ~@7]!49 ~ [~ x ~@3 x ~@2 x ~@7]!34 ~@2>").gain(0.05)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x!8]!49 ~ [x!8]!34 ~@2>").gain(0.15)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ [~@3 x ~@3 x ~@3 x ~@4]!49 ~ [~@3 x ~@3 x ~@3 x ~@4]!34 ~@2>").gain(0.1)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@15 x]!49 ~ [~@15 x]!34 ~@2>").gain(0.1)

// drums · crash
const crash = s("cr").struct("<~ A ~@39 A ~@8 A@2 ~@25 A ~@6 B A ~>".pickRestart({
  A: "x", B: "x!3 ~",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct("<~@84 [~@3 x] ~@2>").gain(0.2)

stack(
  bass, epiano1, overdriven_guitar, acoustic_guitar_steel, acoustic_guitar_steel_2, rock_organ, rock_organ_soft, kick,
  kick_soft, snare, hihat, hihat_soft, open_hat, crash, ride
)

More by Eric Clapton