Strudelify

Strange Brew

Eric Clapton

KeyA majorTempo124 bpm
0:00/0:00
// Strange Brew — Eric Clapton
// 124 bpm, 4/4, key A 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: duplicate parts dropped: ch 9 "Lead" synth choir (copy of ch 8 "Lead 2" lead 6 voice); ch 9 "Lead" synth brass 1 (copy of ch 8 "Lead 2" synth brass 1); ch 9 "Lead" dulcimer (copy of ch 8 "Lead 2" dulcimer); ch 9 "Lead" tenor sax (copy of ch 8 "Lead 2" tenor sax)
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass pick · "Bass"
const bass = note(`<
  A@4 B@2 A@2 C B A@3 B A@2 B@2 A@2 C B A@3 B A@2 B@2 A@2 C B A@3 B A@2 B@2 A@2 C B A@6 B@2 A@2 C B A@7 B@2 A@2 C B A@7
  B@2 A@2 C B A@3 B A@2 B@2 A@2 C B A@5 B@2 A@2 C B A@2 ~
>`.pickRestart({
  A: "a1@2 a1@2 ~@6 e2@2 ~ g2 g#2 a2", B: "d2@2 d2@2 ~@6 e2@2 ~ g2 g#2 a2", C: "e2@2 e2@2 ~@6 e2@2 ~ g2 g#2 a2",
})).s("gm_electric_bass_pick").gain(0.75).pan(0.3)

// chords · dulcimer · "Rhythm"
const dulcimer = note(`<
  A@4 B@2 A@2 C D A@3 B E A B@2 A@2 C D A@3 F E A B@2 A@2 C G A@3 B A@2 B@2 A@2 C D A@6 B@2 A@2 C D A@2 H E@3 H I@2 H J
  K L E@2 H@5 I@2 H@2 K M H@2 A B A@2 B@2 A@2 C G A@2 H@3 I@2 H@2 K M H@2 ~
>`.pickRestart({
  A: "~@4 [c#4,e4,g4,a4]@3 ~@9", B: "~@4 [c4,e4,f#4,a4]@3 ~@9", C: "~@4 [g#3,d4,g4]@3 ~@9", D: "~@4 [c4,e4,f#4]@3 ~@9",
  E: "~@4 [g4,a4]@3 ~@9", F: "~@4 [f#4,a4]@3 ~@9", G: "~@4 [f#3,c4,f4]@3 ~@9", H: "~@4 [e4,g4,a4]@3 ~@9",
  I: "~@4 [e4,f#4,a4]@3 ~@9", J: "~@4 [c#4,g4,a4]@3 ~@9", K: "~@4 [d4,g4]@3 ~@9", L: "~@4 [e4,f#4]@3 ~@9",
  M: "~@4 [c4,f4]@3 ~@9", // F5
})).s("gm_dulcimer").gain(0.62).pan(0.3)

// other · distortion guitar · "Fills"
const distortion_guitar = note(`<
  A B C D E F C D G H A I A H C D E J A I K L M N A H C D O P M Q K R A C A H C D O P M Q K R A I A B C D E F C D G H A
  I@2 A B C D E F C D G H A I S T U V W X Y Z AA AB X AC S@2 AD Z AA AD AE Z AA AF AG S AH S T U X Y Z AA AB X AC S ~
>`.pickRestart({
  A: "a3@3 ~ a3 ~@5 a3 ~@5", B: "~@2 a3 ~ a3 ~@3 a3@2 a3 ~@3 a3 ~", C: "a3@3 ~ a3@2 ~@4 a3 ~@5",
  D: "~@2 a3@2 g3@2 e3 ~ a3@2 g3 ~@3 e3 ~", E: "d4@4 d4 ~@5 d4 ~@5", F: "~@2 a3@2 d4@2 ~@2 d4@2 d4@2 ~@2 d4 ~",
  G: "e4@3 ~ e4@2 ~@4 e4 ~@5", H: "d4@3 ~ d4@2 ~@4 d4 ~@5", I: "~@2 c#3@2 d3@2 d#3@2 e3@2 f3@2 g3@2 b3 ~",
  J: "~@2 f#3@2 a3@2 ~@2 f#3@2 a3 ~@5", K: "e4@3 ~ e4 ~@5 e4 ~@5", L: "d4 ~ d4 ~ a3 ~@3 d4@2 f#3@2 ~@4",
  M: "a3@4 a3 ~@5 a3 ~@5", N: "~@2 e3@2 a3@2 ~@2 a3@2 a3@2 ~@2 a3 ~", O: "d4@3 ~ d4 ~@5 d4 ~@5",
  P: "~@2 f#3@2 g3@2 g#3@2 a3@2 b3@2 c4@2 e4 ~", Q: "~@2 c#3@2 e3@2 ~@2 c#3@2 e3 ~@5",
  R: "~@2 d4@2 a3 ~@3 d4@2 f#3@2 g3@2 a3 ~", S: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 a1 a2 a1 a2!2",
  T: "a2 ~ a2@2 a2 ~ a2@2 a2 ~ a2@2 a2 ~ a2@2", U: "a2 ~ a2@2 a2 ~ a2@2 a2 ~ a2 ~ a2 ~ a2 ~",
  V: "a2 ~ a2 ~ a2 ~ a2 a1 a2 ~ a2 ~ a2 ~ a2@2", W: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
  X: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3@2", Y: "d3 ~ d3 ~ d3 ~ d3@2 d3 ~ d3@2 d3 ~ d3 ~",
  Z: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2@2", AA: "a2 ~ a2 ~ a2 ~ a2@2 a2 ~ a2@2 a2 ~ a2 ~",
  AB: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3@2 c#3 ~", AC: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2@2 g#2 ~",
  AD: "d3 ~ d3 ~ d3 ~ d3@2 d3 ~ d3 ~ d3 ~ d3 d2", AE: "d3 ~ d3 ~ d3 ~ d3 d2 d3 ~ d3 ~ d3 ~ g#2 ~",
  AF: "e3 ~ e3 ~ e3 ~ e3 e2 e3 ~ e3 ~ e3@2 c#3 ~", AG: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 d2 d3 d2 d3!2",
  AH: "a2 ~ a2 ~ a2 ~ a2@2 a2 ~ a2 ~ a2 ~ a2 a1",
})).s("gm_distortion_guitar").gain(0.68).pan(0.7)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@81 A ~@3 B ~@7 B ~@10 A ~@3 B ~>".pickRestart({
  A: "~@3 x", B: "~@2 x!6",
})).gain(0.68)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@81 [~@3 x ~@2 x ~] ~@22 [~@3 x ~@2 x ~] ~@5>").gain(0.68)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A B A C A D ~ C A D A ~ A ~@3 A ~@3 A B A C A B ~@2 A ~ A ~ A E A C A B ~@2 A ~ A ~ A D ~@2 A B A C A D ~ C A D
  ~@3 A B A C A D ~ C A D ~@2 F ~ G ~@11 H ~@2 F ~@2 F@2 G ~@2 F ~@9
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@4 x!3 ~", C: "~@3 x ~@12", D: "~@4 x ~ x!2", E: "~@5 x!2 ~", F: "~@3 x ~@4", G: "~ x ~@2",
  H: "~@2 x ~@3 x!2",
})).gain(0.68)

// drums · high tom
const high_tom = s("ht").struct("<~@81 x ~@22 x ~@5>").gain(0.68)

// drums · crash
const crash = s("cr").struct(`<
  A ~@2 B ~@4 A ~@7 A ~@3 A ~@2 B ~@3 B A ~@10 B A ~@7 A ~@2 B ~@4 A ~@3 A@2 ~@2 B ~@4 A ~@3 A@2 ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A@2 ~ A ~@3 A ~@4
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.6)

// drums · ride
const ride = s("rd").struct(`<
  A@2 B C B D B C A D B C B A B C A@2 B C A@2 B C B A B C A@2 B C B A B C B A B C A@2 B C B A B C A@2 B C B D B C A D B
  ~ A@3 B C B D B C A D B C A D B C A D B C A D B C A D B C A D B C A D B C A D B C D B C A D B C A ~
>`.pickRestart({
  A: "x!8", B: "x!3 ~ x ~ x!3 ~ x ~ x ~ x ~", C: "x!3 ~@13", D: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~",
})).gain(0.6)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@74 [x!8]!35 ~>").gain(3.42)

stack(bass, dulcimer, distortion_guitar, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride, cabasa)

More by Eric Clapton