Strudelify
Treat Her Like A Lady cover art

1971 · The Story Of Cornelius Brothers & Sister Rose

Treat Her Like A Lady

Cornelius Brothers & Sister Rose

KeyF♯ majorTempo134 bpm
0:00/0:00
// Treat Her Like A Lady — Cornelius Brothers & Sister Rose
// 134 bpm, 4/4, key F# major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "CLEAN GTR" electric guitar clean (copy of ch 1 "JAZZ GTR" electric guitar jazz)
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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.

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  A@8 B@2 C@4 D C E F G F G H ~@4 B@2 C@5 D G H G F G H ~@4 I J F B I J H I B J H B@2 J F B@3 D C B I D@2 B I C@2 G H G
  F G F ~@4 G H G H G F ~@2
>`.pickRestart({
  A: "[[f#2,c#3,f#3,a#3,c#4,f#4]@12 ~@2 [a2,e3,a3,c#4,e4,a4]@14 ~@2 [b2,f#3,b3,d#4,f#4,b4]@14 ~@2 [f#2,c#3,f#3,a#3,c#4,f#4]@15 ~ [f#2,c#3,f#3]@15 ~ [a2,e3,a3,c#4,e4,a4]@15 ~ [b2,f#3,b3,d#4,f#4,b4]@14 ~@2 [f#2,c#3,f#3,a#3,c#4,f#4]@17 ~, ~@62 [a#3,c#4,f#4]@13 ~@53]/8", // F# A B F# F#5 A B F#
  B: "~@4 [a#3,c#4,f#4]@3 [a#3,c#4] [a#3,c#4,f#4] ~@7", C: "~@4 [a#3,c#4,f#4]@3 [a#3,c#4] [a#3,c#4,f#4]@2 ~@6",
  D: "~@4 [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4]@2 ~@6", E: "~@4 [c#4,e4,a4]@3 ~ [c#4,e4,a4] ~@7",
  F: "~@4 [d#4,f#4,b4]@3 [d#4,f#4] [d#4,f#4,b4] ~@7", G: "~@4 [c#4,e4,a4]@3 [c#4,e4] [c#4,e4,a4] ~@7",
  H: "~@4 [d#4,f#4,b4]@3 ~ [d#4,f#4,b4] ~@7", I: "~@4 [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4] ~@7",
  J: "~@4 [c#4,e4,a4]@3 [c#4,e4] [c#4,e4,a4]@2 ~@6", // A C#m A
})).s("gm_electric_guitar_jazz").gain(0.17).pan(0.7)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@14 A ~ B ~@4 C ~@11 A ~ C ~@3 C ~@4 A ~@3 A ~ C A ~@2 C ~@7 A ~@2 A@3 ~ A ~@3 C ~@9 C ~ C ~@4
>`.pickRestart({
  A: "~@7 [a#3,c#4] ~@8", B: "~@7 [c#4,e4] ~@8", C: "~@7 [d#4,f#4] ~@8",
})).s("gm_electric_guitar_jazz").gain(0.1).pan(0.7)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D E F G H I J K L@2 M N O P Q R Q S T U V@2 W I J K J@2 M N O S Q X Q Y Z AA@3 AB AC AD AE AF AG AD AH AI AJ AK
  AL AM AN AO AP AQ I J K AR I J K AS I AT AU AV R Q AW Q AX Q AA@3 AQ AX Q R Q AY Q ~@2
>`.pickRestart({
  A: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ a1 ~", B: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ b1 ~",
  C: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ f#1 ~", D: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ c#1 ~ e1 ~ f#1 ~",
  E: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ e1 ~ a1 ~", F: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ e1 ~ a1 ~ b1 ~",
  G: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ a1 ~ e1 ~ f#1 ~", H: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ e1 ~",
  I: "f#1 ~ f#1@2 ~@2 f#1@2 ~@2 f#1@2 c#1@2 e1 ~", J: "f#1!2 ~ f#1 ~ f#1 c#1 e1",
  K: "f#1 ~ f#1@2 ~@2 f#1@2 ~@2 f#1@2 c#1 ~ e1 ~", L: "f#1@2 f#1@2 ~@2 f#1@2 ~@2 f#1 ~ c#1@2 e1@2",
  M: "f#1 ~ f#1@2 ~@2 f#1@2 ~@2 f#1 ~ c#1 ~ e1 ~", N: "f#1@2 f#1@2 ~@2 f#1@2 ~@2 f#1 ~ c#1 ~ e1 ~",
  O: "f#1 ~ f#1@2 ~@2 f#1@2 ~@2 f#1 ~ f#1 ~ e1@2", P: "a1 ~ a1@2 ~@2 a1@2 e1 ~ e1@2 a1 ~ e1 ~",
  Q: "b1 ~ b1@2 ~@2 b1 ~ b1 ~ f#1 ~ f#1 ~ e1 ~", R: "a1 ~ a1@2 ~@2 a1@2 e1 ~ e1@2 a1@2 e1 ~",
  S: "a1 ~ a1@2 ~@2 a1@2 e1 ~ e1 ~ a1@2 e1 ~", T: "b1 ~ b1@2 ~@2 b1 ~ b1 ~ a1 ~ e1@2 f1 ~",
  U: "f#1 ~ f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2", V: "~ f#1 ~ f#1 ~ f#1 ~ f#1", W: "~ f#1 ~ f#1 ~ f#1 ~ e1",
  X: "a1@2 a1@2 ~@2 a1@2 e1 ~ e1@2 a1@2 e1 ~", Y: "a1 ~ a1@2 ~@2 a1@2 e1 ~ e1 ~ a1 ~ e1 ~",
  Z: "b1 ~ b1@2 ~@2 b1 ~ b1@2 a1 ~ e1@2 f1 ~", AA: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  AB: "f#1 ~ f#1 ~ f#1 ~ f#2 ~ e2 ~ b1@2 c2 ~ c#2@2", AC: "f#1 ~ f#1@2 c#1 ~ f#1@3 ~ f#1 ~ f#1 ~ e1@2",
  AD: "a1 ~ a1@2 e1@2 a1@3 ~ a1@2 e1 ~ a1@2", AE: "b1 ~ b1 ~ b1@2 f#1 ~ b1 ~ a1 ~ e1 ~ f1@2",
  AF: "f#1 ~ f#1@2 c#1 ~ f#1@3 ~ f#1@2 c#1 ~ e1 ~", AG: "f#1 ~ f#1@2 c#1 ~ f#1@3 ~ f#1 ~ f#1@2 e1@2",
  AH: "b1 ~ b1 ~ b1 ~ f#1 ~ b1 ~ a1 ~ e1 ~ f1@2", AI: "f#1 ~ f#1 ~ c#1@2 f#1@3 ~ f#1 ~ f#1@2 c#1 ~",
  AJ: "f#1 ~ f#1@2 c#1@2 f#1@3 ~ f#1 ~ f#1@2 e1@2", AK: "a1 ~ a1@2 e1@2 a1@3 ~ a1@2 e1@2 a1@2",
  AL: "b1 ~ b1 ~ f#1 ~ b1@3 ~ a1 ~ e1 ~ f1 ~", AM: "f#1@2 f#1 ~ c#1@2 f#1@3 ~ f#1@2 c#1@2 e1 ~",
  AN: "f#1 ~ f#1 ~ c#1@2 f#1@3 ~ f#1 ~ f#1@2 e1@2", AO: "a1@2 a1@2 e1@2 a1@3 ~ a1@2 e1 ~ a1 ~",
  AP: "b1 ~ b1 ~ f#1@2 b1@3 ~ a1@2 e1@2 f1@2", AQ: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ e1@2",
  AR: "f#1@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 c#1 ~ e1@2", AS: "f#1@2 f#1@2 ~@2 f#1@2 ~@2 f#1 ~ c#1 ~ e1@2",
  AT: "f#1@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 c#1@2 e1 ~", AU: "f#1 ~ f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 e1 ~",
  AV: "f#1 ~ f#1@2 ~@2 f#1@2 ~@2 f#1 ~ c#1@2 e1@2", AW: "a1 ~ a1@2 ~@2 a1 ~ e1 ~ e1@2 a1 ~ e1 ~",
  AX: "a1 ~ a1@2 ~@2 a1 ~ e1 ~ e1@2 a1@2 e1 ~", AY: "a1 ~ a1@2 ~@2 a1 ~ e1 ~ e1 ~ a1@2 e1 ~",
})).s("gm_electric_bass_finger").gain(0.55)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_3 = note(`<
  A@8 B C@3 D@4 E F G F G H ~@4 B C@3 D@4 E F G F G H ~@4 I J K I@2 J K I@2 J K I@2 J K L D@12 E F G F G H ~@4 E F G F G
  H ~@2
>`.pickRestart({
  A: "[[f#2,c#3,f#3,a#3,c#4,f#4]@12 ~@2 [a2,e3,a3,c#4,e4,a4]@14 ~@2 [b2,f#3,b3,d#4,f#4,b4]@14 ~@2 [f#2,c#3,f#3,a#3,c#4,f#4]@15 ~ [f#2,c#3,f#3]@15 ~ [a2,e3,a3,c#4,e4,a4]@15 ~ [b2,f#3,b3,d#4,f#4,b4]@14 ~@2 [f#2,c#3,f#3,a#3,c#4,f#4]@17 ~, ~@62 [a#3,c#4,f#4]@13 ~@53]/8", // F# A B F# F#5 A B F#
  B: "~@7 [g#3,b3,e4]", C: "[a#3,c#4,f#4] ~@6 [g#3,b3,e4]", D: "[a#3,c#4,f#4]@3 ~@11 [g#3,b3,e4]@2",
  E: "~@7 [d4,f4,a#4]", F: "[d#4,f#4,b4] ~@6 [c4,d#4,g#4]", G: "[c#4,e4,a4] ~@6 [d4,f4,a#4]", H: "[d#4,f#4,b4]@3 ~@13",
  I: "~@4 [a#3,c#4,f#4]@3 [a#3,c#4] [a#3,c#4,f#4] ~@7", J: "~@4 [c#4,e4,a4]@3 [c#4,e4] [c#4,e4,a4]@2 ~@6",
  K: "~@4 [d#4,f#4,b4]@3 [d#4,f#4] [d#4,f#4,b4] ~@7", // B D#m B
  L: "~@4 [a#3,c#4,f#4]@3 [a#3,c#4] [a#3,c#4,f#4] ~@5 [g#3,b3,e4]@2", // F# A#m F# E
})).s("gm_electric_guitar_jazz").gain(0.24).pan(0.2)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@16 A B A B C@5 ~ D E D E D E D E A B A B C@5 ~ F G ~ H@2 I ~ J K@3 L K M ~@2 N O N O ~@8 A B A B C@5 ~ A B A B P@3 ~
>`.pickRestart({
  A: "~@4 [c#5,e5,a5]@2 [c#5,e5] ~ [c#5,e5,a5]@3 ~@5, ~@3 a5 ~@4", // A C#m A
  B: "[f#5,a5] ~ [d#5,f#5,a5] ~ [d#5,f#5,a5] ~ [d#5,f#5,a5]!2 ~ [d#5,f#5,a5] [d#5,f#5,a5]@3 ~@3, d#5 ~@7", // F#m D#dim
  C: "[~@4 f#4@4 a4@2 b4@3 ~ c#5@5 ~ b4@2 a4 ~ b4@2 a4@2 f#4 ~@3 [a#4,c#5]@32 ~@16, ~@6 f#4@7 ~@3]/5", // A#m
  D: "~@2 [c#5,f#5] [a#4,c#5,f#5]!2 ~@3, ~@4 a#4 ~@11", // F#5 F#
  E: "~@4 [a#4,c#5] ~ [a#4,c#5,f#5]!2 ~ [a#4,c#5,f#5] [a#4,c#5,f#5]@2 ~@4, ~@2 f#5 ~@5", // A#m F#
  F: "~@3 [a#4,c#5,f#5]@2 [c#5,f#5] ~@2, ~@10 a#4 ~@5", G: "~@3 [c#5,e5,a5]@2 [c#5,e5,a5] ~@2",
  H: "~@6 [c#5,f#5,a#5]@4 [c#5,f#5,a#5] ~@5", I: "~@6 [c#5,e5,a5]@4 [c#5,e5,a5] ~@5",
  J: "~@6 [a#4,c#5,f#5]@4 [a#4,c#5,f#5] ~@5", K: "~@3 f#5@3 d#5@2", L: "~@3 [c#5,f#5,a#5]@3 [b4,d#5,g#5] [a#4,c#5,f#5]",
  M: "~@6 f#5@6 d#5@3 ~", N: "~@2 [c#5,f#5] [c#5,f#5,a#5]!2 ~@3, ~@4 a#5 ~@11",
  O: "~@4 [c#5,a#5] ~ [c#5,f#5,a#5]!2 ~ [c#5,f#5,a#5] [c#5,f#5,a#5]@2 ~@4, ~@2 f#5 ~@5", // F#
  P: "[~@4 f#4@4 a4@2 b4@3 ~ c#5@5 ~ b4@2 a4 ~ b4@2 a4@2 f#4 ~ f#4@15 ~@3]/3",
})).s("gm_drawbar_organ").gain(0.22).pan(0.3)

// drums · kick
const kick = s("bd").struct("<[x!2]!88 ~@2>").gain(0.44)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!88 ~@2>").gain(0.44)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  A@7 B A@14 ~ A ~ C A@11 C A B ~ A@2 D A@3 E A@7 C A@2 ~ A@16 E A@9 E A@2 ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x", C: "~ x ~ x ~ x ~ x", D: "~ x ~@3 x ~ x", E: "~@3 x ~ x ~ x",
})).gain(0.44)

// drums · crash
const crash = s("cr").struct("<~@16 x ~@17 x ~@47 x ~@7>").gain(0.49)

// drums · tambourine
const tambourine = s("tb").struct("<[x ~ x ~ x ~ x!2]!88 ~@2>").gain(0.33)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<[~ x ~ x ~ x ~@2]!88 ~@2>").gain(0.11)

// drums · cowbell
const cowbell = s("cb").struct("<[x!4]!88 ~@2>").gain(0.55)

stack(
  electric_guitar_jazz, electric_guitar_jazz_2, bass, electric_guitar_jazz_3, drawbar_organ, kick, snare, hihat,
  open_hat, crash, tambourine, tambourine_soft, cowbell
)