Strudelify
You Can Leave Your Hat On cover art

1996 · Organic

You Can Leave Your Hat On

Joe Cocker

KeyD♭ majorTempo109 bpm
0:00/0:00
// You Can Leave Your Hat On — Joe Cocker
// 109 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "Ch  6" tenor sax (copy of ch 5 "Ch  5" baritone sax)
// note: Full arrangement: all 95 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(109/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 · "Ch  1"
const bass = note(`<
  A B@3 C D@4 E@8 F@4 G H I J K@8 L@6 G H I J M@2 N@7 O@7 P@2 Q@8 A R A R A B S M@2 N@7 O@7 P@2 ~
>`.pickRestart({
  A: "~@6 b1 db2", B: "e2@2 db2 e2@2 db2 b1 db2", C: "ab1 a1 b1@8 ~@6",
  D: "[db2@3 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@2]/4",
  E: "[~@4 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ ab2@2 g2@2 ab2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ b2@2 bb2@2 b2 ~ ab1 ~ bb1 ~ db2@2]/8",
  F: "[~@4 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ [a1,bb1] ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ ab2@2 g2@2 ab2 ~ ab1 ~ bb1 ~@3]/4", // Bbmaj7
  G: "db2@7 ~", H: "f2@7 ~", I: "gb2@7 ~", J: "ab2 ~ ab2 ~@13",
  K: "[db2@4 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ b2@2 bb2@2 b2 ~ ab1 ~ [ab1,bb1] ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@2]/8", // Absus2
  L: "[~@4 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ b2@2 bb2@2 b2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~@3, ~@52 e2 ~@43]/6",
  M: "[db2@3 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ b1@2]/2",
  N: "[b1@7 ~ eb2@2 db2 ~ b1 ~ gb1@8 ~@2 db2@2 b1 ~ gb1@2 db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ b1@9 ~ eb2@2 db2 ~ b1 ~ gb1@8 ~@2 db2@2 b1 ~ gb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@2]/7",
  O: "[~@4 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ b1@8 ~@2 eb2@2 db2 ~ b1 ~ gb1@9 ~ db2@2 b1 ~ gb1 ~ db2@4 ~@2 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ b1@8 ~@2 eb2@2 db2 ~ b1 ~ gb1@9 ~ db2@2 b1 ~ gb1 ~ db2@2]/7",
  P: "[~@4 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ b2@2 bb2@2 b2 ~ ab1 ~ bb1 ~ db2@2]/2",
  Q: "[db2@4 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ b2@2 bb2@2 b2 ~ ab1 ~ [ab1,bb1] ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@6 f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ f2@2 e2@2 f2 ~ ab1 ~ bb1 ~ db2@5 ~ b2@2 bb2@2 b2 ~ ab1 ~ bb1 ~ db2@2]/8", // Absus2
  R: "e2@4 db2@2 e2@4 db2@2 b1@2 db2 ~", S: "b1 ~@15",
})).s("gm_electric_bass_finger").gain(0.55)

// chords · piano · "Ch  2"
const piano = note(`<
  A B@3 C D@18 E F D@16 E F D@2 G H D@2 G H D@2 G H D@2 G I J D@10 ~ D ~ D ~@2 D@2 G H D@2 G H D@2 G H D@2 G I J D ~
>`.pickRestart({
  A: "~@6 b2 db3", B: "e3@2 db3 e3@2 db3 b2 db3", C: "ab2 a2 b2@8 ~@6",
  D: "[db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~", // Db7
  E: "[db4,gb4,b4] ~ [db4,gb4,b4] ~ [db4,gb4,b4] ~ [db4,gb4,b4] ~ [db4,gb4,b4] ~ [db4,gb4,b4] ~ [db4,gb4,b4] ~ [db4,gb4,b4] ~", // Gbsus4
  F: "[eb4,ab4,c5] ~ [eb4,ab4,c5] ~@13", // Ab
  G: "[eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~", // B
  H: "[db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~", // Gb
  I: "[db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db4,gb4,ab4,bb4] ~ [db4,gb4,bb4] ~", // Gb
  J: "[db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,b4] ~ [db4,f4,gb4,b4] ~", // Db7
})).s("gm_piano").gain(0.5)

// chords · brass section · "Ch  4"
const brass_section = note(`<
  A B@3 C ~@2 D ~@5 E ~@3 D ~@3 F G H I J K ~ L ~@6 M K@2 M F G H I N@3 ~ O P@2 ~ O P@2 ~ Q@3 ~ R@2 ~@8 A S A T A B U
  N@3 ~ O P@2 ~ O P@2 ~ Q@3 ~ R@2 ~
>`.pickRestart({
  A: "~@6 [b3,b4] [db4,db5]", B: "[e4,e5]@2 [db4,db5] [e4,e5]@2 [db4,db5] [b3,b4] [db4,db5]",
  C: "[ab3,ab4] [a3,a4] [b3,b4]@8 ~@6", D: "~@2 [db4,db5,db6] ~@13", E: "~@2 [db4,b4,db5,b5] ~@13", F: "[db3,db4]",
  G: "[f3,f4]@15 ~", H: "[gb3,gb4]", I: "[b3,b4,b5] ~ [b3,b4,b5] ~@13",
  J: "~@4 [db4,ab4,db5,ab5] ~@3 [db4,ab4,db5,ab5] ~ [db4,ab4,db5,ab5] ~ [b3,c4,gb4,b4,c5,gb5] ~ [db4,ab4,db5,ab5] ~", // Db5 B Db5
  K: "~@8 [db4,ab4,db5,ab5] ~ [db4,ab4,db5,ab5] ~ [b3,gb4,b4,gb5] ~ [db4,ab4,db5,ab5] ~", L: "~@14 [db4,b4,db5,b5] ~",
  M: "~@4 [db4,ab4,db5,ab5] ~@3 [db4,ab4,db5,ab5] ~ [db4,ab4,db5,ab5] ~ [b3,gb4,b4,gb5] ~ [db4,ab4,db5,ab5] ~", // Db5 B5 Db5
  N: "[~@4 [f4,f5]@2 [e4,e5] ~ [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [db4,db5]@4 ~@2 [f4,f5]@2 [e4,e5]@2 [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [b3,b4]@4 ~@2 [gb4,b4,gb5,b5] ~@3 [gb4,b4,gb5,b5] ~ [gb4,b4,gb5,b5] ~ [gb4,b4,gb5,b5] ~ [gb4,bb4,gb5,bb5] ~]/3", // F E F Ab Bb Db F E …
  O: "~@4 [f4,f5]@2 [e4,e5]@2 [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [db4,db5]@2", // F E F Ab Bb Db
  P: "[~@4 [f4,f5]@2 [e4,e5]@2 [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [b3,b4]@4 ~@2 [gb4,b4,gb5,b5] ~@3 [gb4,b4,gb5,b5] ~ [gb4,b4,gb5,b5] ~ [gb4,b4,gb5,b5] ~ [gb4,bb4,gb5,bb5] ~]/2", // F E F Ab Bb B B5 Gb
  Q: "[~@4 [f4,f5]@2 [e4,e5]@2 [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [db4,db5]@4 ~@2 [f4,f5]@2 [e4,e5]@2 [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [b3,b4]@4 ~@2 [gb4,b4,gb5,b5] ~@3 [gb4,b4,gb5,b5] ~ [gb4,b4,gb5,b5] ~ [gb4,b4,gb5,b5] ~ [gb4,bb4,gb5,bb5] ~]/3", // F E F Ab Bb Db F E …
  R: "[~@4 [f4,f5]@2 [e4,e5]@2 [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [db4,db5]@4 ~@2 [f4,f5]@2 [e4,e5]@2 [f4,f5] ~ [ab3,ab4] ~ [bb3,bb4] ~ [b3,b4]@2]/2", // F E F Ab Bb Db F E …
  S: "[e4,e5]@4 [db4,db5]@2 [e4,e5]@4 [db4,db5]@2 [b3,b4]@2 [db4,db5] ~", // E Db E Db B Db
  T: "[e4,e5]@4 [db4,db5]@2 [e4,e5]@4 [db4,db5]@2 [b3,b4]@2 [db4,db5] ~, ~@4 [d4,d5] ~@11", U: "[b3,b4] ~@7",
})).s("gm_brass_section").gain(0.8)

// other · baritone sax · "Ch  5"
const baritone_sax = note("<~@55 A B C D E F G H G H G H G H ~@26>".pickRestart({
  A: "[bb2,bb3]@12 ~ [ab2,ab3] [f2,f3]!2", B: "[db2,db3]@3 ~ [f2,f3] ~@3 [f2,f3] ~@7",
  C: "[bb2,bb3] ~ [bb2,bb3]!2 ~ [bb2,bb3]!2 ~ [bb2,bb3]!2 ~ [bb2,bb3]!2 ~ [bb2,bb3]!2", // Bb
  D: "~ [bb2,bb3]!2 ~ [bb2,bb3]!2 ~ [bb2,bb3]!2 ~ [bb2,bb3]!2 ~ [bb2,bb3]!2 ~", // Bb
  E: "[db3,db4]@12 ~ [ab2,ab3] [bb2,bb3]!2", // Db Ab Bb
  F: "[ab2,ab3]@2 ~ [db3,db4] ~@4 [bb2,bb3] [db3,db4]!2 [db3,eb3,db4,eb4] [db3,db4]@2 ~@2", // Ab Db Bb Db Dbsus2 Db
  G: "~@2 [db2,db3] ~@5 [db2,db3] ~ [db2,db3] ~@5", // Db
  H: "~@2 [db2,db3] ~@5 [db2,db3] ~ [db2,db3] ~ [db2,db3] ~ [db2,db3] ~", // Db
})).s("gm_baritone_sax").gain(0.8)

// drums · kick
const kick = s("bd").struct("<A B@3 C D@19 E D@17 E D@27 B D B D B F D@18 ~>".pickRestart({
  A: "~@7 x", B: "x ~@2 x ~@3 x", C: "x ~@6 x", D: "x ~@3 x!2 ~ x", E: "x!2 ~@5 x", F: "x ~@7 x ~@2 x ~@4",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@3 B A@3 C A@7 D A@3 D A@3 E A F A@7 D A@7 E A F A@3 C A@3 G A@2 F A@4 C A@14 H A C A@3 F A@3 I A@3 F A@4 ~
>`.pickRestart({
  A: "~ x ~ x", B: "x ~@2 x", C: "~@4 x ~@4 x!2 ~ x ~ x ~", D: "~@2 x ~@3 x!2", E: "x ~ x ~@12 x", F: "~@2 x ~@2 x!3",
  G: "~@4 x ~@3 x!3 ~ x ~@3", H: "~@9 x!2 ~ x!2 ~@2", I: "~@4 x!2 ~@2 x!3 ~ x ~ x ~",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@4 [~@3 x] ~@90>").gain(0.8)

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

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

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

stack(bass, piano, brass_section, baritone_sax, kick, snare, low_tom, hihat, open_hat, crash)

More by Joe Cocker