Strudelify
Cocaine cover art

Slowhand 35th Anniversary

Cocaine

Eric Clapton

KeyD majorTempo107 bpm
0:00/0:00
// Cocaine — Eric Clapton
// 107 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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.

// other · electric guitar jazz · "Gtr. 1"
const electric_guitar_jazz = note(`<
  A@2 B C D E F G ~@10 H@2 I ~@11 H@2 I J K@2 L M N@2 O P Q R S T U V W X Y Z AA AB ~ AC AD ~@11 AE@2 AF@2 ~@2 AG@2 AH@2
  AI@2 AJ@2 AK@3 AL@2 AM AN AO AP AQ
>`.pickRestart({
  A: "[[e4,b4,e5,g#5] ~ [e4,b4,e5,g#5] ~ [d4,a4,d5,f#5] ~ [e4,b4,e5,g#5] ~@5 e5 ~ [d4,a4,d5,f#5]@7 ~@3 a3 [a3,b3] b3!2 d4@3 ~, ~@27 a3@4 ~]/2", // E D E D Asus2
  B: "d4 e4@14 ~", C: "~@2 d4@2 ~ a3 b3 ~ d4 ~ a3 ~ g3 ~ e3 ~", D: "[e3,e4]@11 ~@5",
  E: "d5 b4 ~@2 a4@3 ~ g4 ~ g#4 ~ e4 ~ d4 ~", F: "e4 ~", G: "a3 b3 d4 ~ [a3,d4]@3 ~ g#3@5 ~@3",
  H: "[[e4,b4,e5,g#5] ~ [e4,b4,e5,g#5] ~ [d4,a4,d5,f#5] ~ [e4,b4,e5,g#5] ~@5 [e4,b4,e5,g#5] ~ [d4,a4,d5,f#5]@7 ~@3 f#5@2 ~ d5 ~ d5 a4 ~]/2", // E D E D
  I: "[e4,g#4] ~ [e4,g#4] ~ [d4,g4] ~ [e4,g#4] ~@5 e4 ~@3", J: "~@2 d4@13 ~",
  K: "[~@4 d5 ~ e5@5 ~@3 g5@5 ~ e5 ~ e5 ~ d5 e5@2 ~ e5 ~ d5 ~]/2", L: "e5@3 ~ g5@4 ~@2 e5@4 ~@2", M: "~@12 a5@3 ~",
  N: "[a5@3 ~ a5@8 ~@2 a5@5 ~ a5@3 ~ [a5,b5]@3 ~ [a5,b5]@2 ~ a5]/2", O: "a5 ~ g5 ~ e5 ~@3 d5 e5@2 ~ e5 ~ d5 ~",
  P: "~@4 a5!2 b5 e6 d6 b5 a5!2 g5 ~ a5@2", Q: "~@2 g5 ~ e5 ~ e5 ~ d5@3 ~ e5 ~@3",
  R: "~@2 d6 a5@4 ~ g5 e5@2 ~ g5 d5@2 ~", S: "e5 ~ e5 ~ g5 e5@2 ~ d5 ~ e5 ~ g5@3 ~",
  T: "~@3 a5 b5 e6 d6 b5 a5!2 g5 ~ a5 ~ b5 ~", U: "d6 ~ d6 ~ a5 ~ a5@3 ~ [g5,b5] ~ e5@3 ~",
  V: "~@3 d6 ~ a5@3 ~ [g5,b5] e5 ~ [g5,b5] ~ e5 ~, ~ e6 ~@6", // G
  W: "e5@3 ~@2 e5 ~ [g5,b5]@2 ~ [g5,b5] ~ e5@3 ~, ~@2 [d5,g5] ~@5", // G G5
  X: "a4 b4!2 [d5,g5] ~ b4 [d5,g5] ~ [d5,g5] b4 [e5,g5] ~ [e5,g5] d5 e5 ~", // G5 Em
  Y: "e5 ~ e5 ~ [g5,b5] ~ [a5,c#6] ~ [a5,c#6] ~ [g5,b5] ~ e5@4", Z: "~@2 e6 d6 ~ e6 d6 ~ e6 d6 ~ e6 d6 ~ e6 ~",
  AA: "d6 ~ d6 ~ e6 ~ d6 ~ d6 ~ e6@2 ~ e6 d6 b5", AB: "a5!2 g5 e5 g5 a5@2 ~ e6 d6 b5 a5 ~ g5 e5@2",
  AC: "d5 e5 g5 e5 a5 ~ g5 e5 a5 g5 e5 ~ g5 ~ e5 ~", AD: "~@2 a5 ~ a5 ~ e6 d6 b5 a5 ~ g5 a5 g5 e5 ~",
  AE: "[[d4,e4] ~ e4 ~ d4 ~ e4 ~@3 a3 b3 d4 e4 [d4,a4]@10 ~@8, ~@14 g4 ~@17]/2", // Dsus2 D5
  AF: "[[e3,b3] ~ [e3,b3] ~ d4 ~ e4 ~@5 [e4,g#4] ~ [d4,a4]@5 ~ [d4,a4,d5]@5 ~@7]/2", // E5 E D5
  AG: "[[d4,e4] ~ e4 ~ d4 ~ e4 ~@3 a3 b3 d4 e4 [d4,a4]@10 [d4,a4]@3 ~ [d4,a4]@3 ~, ~@14 g4 ~@17]/2", // Dsus2 D5
  AH: "[[e4,g#4] ~ [e4,g#4] ~ [d4,g4] ~ [e4,g#4] ~@5 [e4,g#4] ~ [d4,a4]@10 ~@8]/2", // E G5 E D5
  AI: "[~@2 d5@3 ~ [d5,e5] ~ e5@3 ~ d5 ~ e5@4 ~ d5 d5@3 ~@5 d5@3 ~]/2", // Dsus2
  AJ: "[~@8 d6 ~ d6 ~ b5 ~ d6@5 ~ a5 ~ g5@3 ~ e5 ~@5]/2",
  AK: "[~@4 d5@3 ~ d5@3 ~ d5@7 ~ d5@4 ~@3 [d5,e5] e5@7 ~ d5@3 ~ e5@3 ~ d5 e5@2 ~]/3", // Dsus2
  AL: "[e5 d5@2 ~ d5@3 ~@2 e5@2 ~ a4 g4 e4@5 ~ a3 b3!2 d4 ~ d4 e4 ~ e4 ~ d4@2, ~@8 b4@3 ~@21]/2",
  AM: "~@2 a3 b3@2 ~ d4 ~ a3 b3 g4@2 ~@2 g3 ~, ~@13 a3@2 ~", AN: "~@2 [e4,g#4]@3 ~@9 d5 ~, e3@5 ~@11",
  AO: "~ d5@2 ~@3 b4 d5 b4 d5 b4 a4 g4 ~ e4 ~", AP: "~@2 e4 ~ d4 ~ e4@4 ~@4 g4 e4, e3@5 ~@11", AQ: "g4 a4 b4 ~ d5 ~@11",
})).s("gm_electric_guitar_jazz").gain(0.26)

// chords · electric guitar clean · "Gtr. 2"
const electric_guitar_clean = note("<~@2 A@12 B@4 ~@2 C@2 A@6 B@4 ~@2 C@2 A@30 B@4 ~@2 D E@3 F ~ A@16>".pickRestart({
  A: "[[e4,b4,e5] ~ [e4,b4,e5] ~ [d4,a4,d5] ~ [e4,b4,e5] ~@7 [d4,a4,d5]@13 ~@5]/2", // E5 D5 E5 D5
  B: "[[e4,b4,e5] ~ [e4,b4,e5] ~ [d4,a4,d5] ~ [e4,b4,e5] ~@7 [d4,a4]@13 ~@3 [e4,b4,e5]@6 ~@2 [d4,a4,d5]@5 ~@3 [c4,g4,c5]@7 ~@3 [b3,f#4,b4] ~@7, ~@7 d5@5 ~@20]/4", // E5 D5 E5 D5 E5 D5 C5 B5
  C: "[[e4,b4,e5] ~ [e4,b4,e5] ~ [d4,a4,d5] ~ [e4,b4,e5] ~@5 e5 ~ [d4,a4,d5]@13 ~@5]/2", // E5 D5 E5 D5
  D: "[e4,b4] ~ [e4,b4] ~ [d4,a4,d5] ~ [e4,b4] ~@9", // E5 D5 E5
  E: "[~@14 [e4,b4,e5]@6 ~@2 [d4,a4,d5]@5 ~@3 [c4,g4,c5]@7 ~@3 [b3,f#4,b4] ~@7]/3", // E5 D5 C5 B5
  F: "[e4,b4,e5] ~ [e4,b4,e5] ~ [d4,a4,d5] ~ [e4,b4,e5] ~@9", // E5 D5 E5
})).s("gm_electric_guitar_clean").gain(0.26)

// other · electric guitar jazz · "Gtr. 3"
const electric_guitar_jazz_2 = note(`<
  A@2 B@2 A@10 C@4 D@4 A@6 C@4 D@4 ~@3 E F@2 ~@7 G ~@2 H@2 I J K L M N A@6 C@4 ~@2 C@4 A@4 O@2 A@2 P@2 A@6 Q ~
>`.pickRestart({
  A: "[~@11 [d5,d#5] e5 ~ d5@13 ~@5]/2", B: "[d5 e5@8 ~@2 [d5,d#5] e5 ~ d5@13 ~@5]/2",
  C: "[~@11 [d5,d#5] e5 ~ d5@10 ~@6 e5@6 ~@2 d5@6 ~@2 c5@7 ~@3 b4 ~@7]/4", D: "[~@11 [d5,d#5] e5 ~ d5@10 ~@8]/2",
  E: "~@12 b5@3 ~", F: "[b5@3 ~ b5@8 ~@2 b5@5 ~ b5@3 ~@9]/2", G: "~@5 d6 ~ d6 ~@8",
  H: "[~@2 a5@2 ~ a5@2 ~ a5@3 ~ g5 ~ e5@5 ~ d5 e5@2 ~@2 e6 ~@2 [d5,e6] e5@2 ~, ~@24 e5@3 ~@5]/2", I: "e6 ~ e6 ~@13",
  J: "~@2 d6 a5 d6 a5 d6 a5 ~ g#5 a5@3 ~ a5 ~", K: "g5@3 ~ e5 d5 e5 ~ g5 e5 ~ d5@2 ~ e5 ~",
  L: "~@2 a5 ~ a5@3 ~ g5 ~ a5 g5 a5 ~ g5 ~", M: "~ e5 ~ d5 e5 ~ e5 g5 ~ g5 e5 d5 e5 ~ d5 ~",
  N: "~@2 b4 ~ d5 ~ e5 ~ [e5,g5]@5 ~@3, ~ [a4,d5]@2 ~@13", O: "[~@2 e5@3 ~@6 [d5,d#5] e5 ~ d5@13 ~@5]/2",
  P: "[~@4 e5@3 ~ e5@3 ~ e5@7 ~ e5@4 ~@8]/2", Q: "~@11 [d5,d#5] e5 ~@3",
})).s("gm_electric_guitar_jazz").gain(0.2)

// chords · electric guitar muted · "Gtr. 4"
const electric_guitar_muted = note("<~@6 A@10 ~@6 A@8 ~@30 A@8 ~@2 B C D E ~@2 F G H G ~@14>".pickRestart({
  A: "~@2 [b5,e6] ~@2 [b5,e6] ~@2 [b5,e6] ~@2 [b5,e6] ~@2 [b5,e6] ~", // E5
  B: "~@2 [b5,e6] ~@2 [b5,e6] ~@2 [b5,e6] ~@2 [b5,e6] ~@2 [b5,e6]!2", // E5
  C: "~@2 [g5,b5,e6] ~@2 [g5,b5,e6] ~@2 [g5,b5,e6] ~@2 [g5,b5,e6] ~@2 [g5,b5,e6]!2", // Em
  D: "~@2 [g5,b5] g#5 ~@3 [g5,b5,e6] g#5 ~@5 [b5,e6] ~", E: "~@2 [g5,b5,e6] g#5 ~@3 [g5,b5,e6] g#5 ~@7",
  F: "~@2 [g5,b5] g#5 ~@3 [g5,b5,e6] g#5 ~@7", G: "~@2 [e5,a5,c#6] ~@2 [e5,a5,c#6] ~@2 [g5,b5] ~ [g5,b5] ~ e5 ~ d5 ~",
  H: "~@2 g5 g#5 ~@3 [g5,b5] g#5 ~@7", // G
})).s("gm_electric_guitar_muted").gain(0.15)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D E F G B H B I D I B J K@3 L M C B N B O P H P Q R@3 S B T B U V W V X Y Z AA Z Y AB AC Z AD AE AF AG Y AB B G
  AC G AD H B I D I B AH K@3 C D E K@3 N B O B AB B X B AB B AI B AB B AB B AB AJ
>`.pickRestart({
  A: "e2@3 ~@11 d2 e2", B: "d2@5 ~@3 a1@3 ~ d2@3 ~", C: "e2@3 ~@5 b1@3 ~ e2 ~ d2 e2", D: "d2@5 ~@3 a1@3 ~ d2 ~@3",
  E: "e2@3 ~@5 b1@3 ~ e2@3 ~", F: "d2@3 ~@5 a1@3 ~ d2 ~@3", G: "e2@3 ~@5 b1@3 ~ e2 ~@3", H: "e2@3 ~@5 b1@3 ~ e2 ~ b1 ~",
  I: "e2@3 ~@3 e2 ~ b1@3 ~ e2 ~ d2 e2", J: "e2@4 ~@4 b1@3 ~ e2 ~ c2 c#2",
  K: "[d2@5 ~@3 a1@3 ~ d2 ~ e2@6 ~@2 d2@5 ~@3 c2@7 ~@3 b1 ~@7]/3", L: "e2@5 ~@9 d2 e2", M: "d2@5 ~@2 d2 a1@3 ~ d2@3 ~",
  N: "e2@3 ~@5 b1 ~@3 e2 ~ b1 ~", O: "e2@3 ~@3 e2 ~ b1@3 ~@3 d2 e2", P: "d2@5 ~@3 a1@3 ~@3 d2 d#2",
  Q: "e2@5 ~@3 b1@3 ~ e2 ~ d2 e2", R: "[d2@3 ~@5 a1@3 ~@3 e2@6 ~@2 d2@5 ~@3 c2@7 ~@3 b1 ~@7]/3",
  S: "e2@5 ~@3 b1 ~@5 d2 e2", T: "e2@3 ~@5 b1 ~@5 d2 e2", U: "e2@3 ~@5 b1@3 ~@5", V: "d2@3 ~@5 a1@3 ~ d2@3 ~",
  W: "e2@3 ~@3 e2 ~ b1@3 ~ e2@3 ~", X: "e2@4 ~@4 b1@3 ~ e2@3 ~", Y: "d2@4 ~@4 a1@3 ~ d2@3 ~",
  Z: "e2@4 ~@4 b1@3 ~ e2 ~ b1 ~", AA: "d2@4 ~@4 a1@3 ~ a1 b1 d2 ~", AB: "e2@4 ~@4 b1@3 ~ e2 ~@3",
  AC: "d2@5 ~@3 a1@4 ~@2 d2 ~", AD: "d2@5 ~@3 a1@3 ~ a1 b1 d2 ~", AE: "e2@4 ~@4 b1@3 ~ e2 ~@2 d2",
  AF: "d2@5 ~@3 a1 ~@3 a1 b1 d2 ~", AG: "e2 ~ b1 ~", AH: "e2@4 ~@4 b1@3 ~ e2 ~ d2 c#2",
  AI: "e2@4 ~@2 e2 ~ b1@3 ~ e2@3 ~", AJ: "d2@5 ~@11",
})).s("gm_electric_bass_finger").gain(0.26)

// drums · snare
const snare = s("sd").struct("<A@3 B C A@2 D A@8 E F A@3 B A@8 E F A@3 B A@23 B A@8 E F A@4 E F A@14 ~@4>".pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~", C: "x!2 ~ x", D: "~@4 x ~@3 x ~@3 x ~ x!2", E: "x!2 ~@2 x ~@3 x!2 ~@2 x ~@3",
  F: "x!2 ~@2 x ~ x!2 ~@8",
})).gain(0.26)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@3 A ~@3 B ~@13 A ~@13 A ~@23 A ~@30 C@3 D>".pickRestart({
  A: "~@9 x!7", B: "~@9 x!3 ~@4", C: "~ x ~ x", D: "~ x ~@2",
})).gain(0.1)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A@3 B A@3 B A@7 C ~@2 A@3 B A@8 ~@2 A@3 B A@23 B A@7 C ~@2 A@4 ~@2 A@12 ~@2 D E@2 F
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~ x ~ x ~ x ~@2", D: "~@3 x!2 ~ x!3 ~ x!3 ~ x!2",
  E: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", F: "x ~ x!3 ~ x!2 ~@8",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<A@3 B A@3 C A@8 D E A@3 B A@8 D E A@3 B A@23 B A@8 D E A@4 D E A@17 B>".pickRestart({
  A: "x!2", B: "x", C: "x ~@3 x ~ x!2", D: "~@2 x!2 ~@6 x!2 ~@4", E: "~@2 x!2 ~@12",
})).gain(0.26)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~ A ~ A ~ A B C D A ~ A ~ A ~ A ~ A ~ A B C D A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A B C D ~ A ~ E C D A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x", B: "~@7 x", C: "~@3 x ~@3 x", D: "~ x", E: "x ~@6 x",
})).gain(0.26)

stack(
  electric_guitar_jazz, electric_guitar_clean, electric_guitar_jazz_2, electric_guitar_muted, bass, snare, snare_soft,
  hihat, hihat_soft, mid_tom, crash
)

More by Eric Clapton