Strudelify
I Can't Go For That (No Can Do) cover art

1991 · Looking Back

I Can't Go For That (No Can Do)

Hall & Oates

KeyC minorTempo109 bpm
0:00/0:00
// I Can't Go For That (No Can Do) — Hall & Oates
// 109 bpm, 4/4, key C minor. 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 152 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// chords · electric guitar jazz · "Oates"
const electric_guitar_jazz = note(`<
  ~@34 A@2 B@2 C@2 D E ~@16 A@2 B@2 C@2 D E ~@16 A@2 B@2 C@2 D E ~@4 F G F ~@12 H I J F K I L F K I M F K I N F K I J F
  K I J F K I O F K I J F K P J F ~@7
>`.pickRestart({
  A: "[[c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~@6 bb3@9 ~@9]/2", // Cm
  B: "[[c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~@6 bb3@8 ~@10]/2", // Cm
  C: "[[c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~@6 bb3@11 ~@7]/2", // Cm
  D: "[c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~@2 eb4 ~ f4 ~ c4!2", E: "~@10 eb4 ~ f4 ~ c4!2",
  F: "[c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~@8", G: "~@7 g3 bb3 ~ eb4 ~ [c4,gb4]@2 [bb3,d4,f4]@2",
  H: "~@7 [bb3,d4,f4]", I: "[c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~@2 bb3@2 ~@2 bb3@2",
  J: "c4 ~ bb3@2 c4 ~ bb3@2 c4 ~ bb3@2 c4 ~@3", K: "~@6 bb3 ~ eb4 ~ c4 ~@3 [bb3,d4,f4]@2",
  L: "c4 ~ bb3@2 ~@2 bb3@2 c4 ~ bb3@2 c4 ~@3", M: "~@2 bb3@2 c4 ~ bb3@2 c4 ~ bb3@2 c4 ~@3",
  N: "~@2 bb3@2 c4 ~ bb3@2 ~@2 bb3@2 c4 ~@3", O: "c4 ~ bb3@2 c4 ~ bb3@2 [b3,c4] ~ bb3@2 c4 ~@3",
  P: "[c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4]!2 ~@2 bb3@2 c4 ~ bb3@2", // Cm
})).s("gm_electric_guitar_jazz").gain(0.29)

// chords · rock organ · "Organ"
const rock_organ = note(`<
  ~@10 A B C D A B C D E F E G E H E I J K L M J K L M A B C D A B C D E F E G E H E I J K L M J K L M A B C D A B C D E
  F E G E H E I J K L M J K L M A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D
  A B C D A B C D A B C D A B C D A B C D A N ~@4
>`.pickRestart({
  A: "[ab4,c5,eb5,g5]@2 ~ [ab4,c5,eb5,g5] ~@12", // Abmaj7
  B: "[ab4,c5,eb5]@2 ~ [ab4,c5,eb5,g5] ~@4 [d5,f5]@2 ~@2 [g4,bb4,d5,f5]@2 ~@2, ~@8 [g4,bb4] ~@7", // Ab Abmaj7 Dm Gm7 Gm
  C: "[ab4,c5,eb5]@2 ~ [ab4,c5,eb5] ~@12", // Ab
  D: "[ab4,c5,eb5,g5]@2 ~ [ab4,c5,eb5,g5] ~@4 [g4,bb4,d5,f5] ~@3 [g4,bb4,d5,f5] ~@3", // Abmaj7 Gm7
  E: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@12", F: "[bb4,eb5]@2 ~ [bb4,eb5] ~@4 [f5,a5]@2 ~@2 [c5,f5,a5]@2 ~@2, ~@8 c5 ~@7",
  G: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@4 [ab4,c5] ~@3 [bb4,d5,f5] ~@3, ~@4 eb5 ~@3", // Eb Ab Bb
  H: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@4 [c5,f5,a5] ~@3 [c5,f5,a5] ~@3", // Eb F
  I: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@4 [c5,eb5]@2 ~@2 [bb4,d5,f5]@2 ~@2, ~@8 ab4 ~@7", J: "[c5,e5,g5]",
  K: "[b4,e5,g5]", L: "[bb4,e5,g5]", M: "[a4,c5,e5] [a4,c5,d5,f5]",
  N: "[ab4,c5,eb5]@2 ~ [ab4,c5,eb5,g5] ~@4 [d5,f5]@2 ~@6, ~@8 [g4,bb4] ~@7", // Ab Abmaj7 Dm Gm
})).s("gm_rock_organ").gain(0.35)

// chords · rock organ · "Organ" · soft notes
const rock_organ_soft = note(`<
  ~@11 A B ~@2 A B ~@2 B ~@9 C ~@3 C ~ A B ~@2 A B ~@2 B ~@9 C ~@3 C ~ A B ~@2 A B ~@2 B ~@9 C ~@3 C ~ A B ~@2 A B ~@2 A
  B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A ~@4
>`.pickRestart({
  A: "g5@2 ~@8 bb4 ~@5", B: "g5@2 ~ g5 ~@12", C: "g5 ~",
})).s("gm_rock_organ").gain(0.25)

// other · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note("<~@9 A@8 B@3 ~@13 C@8 B@3 ~@13 C@8 B@3 ~@13 C@8 A@56 ~@7>".pickRestart({
  A: "[~@6 eb3 ~ f3 ~ eb3 ~ f3 ~ bb3@6 ~@2 eb3 ~ eb3 ~ eb3 ~ eb3 ~ f3@6 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~ g3@7 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ f3@6 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~ bb3@7 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ f3@6 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~ g3@7 ~ eb3 ~ eb3 ~@3 eb3 ~ f3@2]/8",
  B: "[~@6 eb3 ~ f3 ~ eb3 ~ f3 ~ bb3@34]/3",
  C: "[~@14 bb3@6 ~@2 eb3 ~ eb3 ~ eb3 ~ eb3 ~ f3@6 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~ g3@7 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ f3@6 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~ bb3@7 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ f3@6 ~@2 eb3 ~ f3 ~ eb3 ~ f3 ~ g3@7 ~ eb3 ~ eb3 ~@3 eb3 ~ f3@2]/8",
})).s("gm_acoustic_guitar_steel").gain(0.29)

// chords · string ensemble 1 · "Stringz"
const string_ensemble_1 = note(`<
  ~@11 A B@2 C@2 B@2 D@2 ~@15 A B@2 C@2 B@2 D@2 ~@15 A B@2 C@2 B@2 D@2 ~@14 E@8 F@4 G@8 H ~@16 I J@4 C@2 K@2 L@2 K@2 C@2
  K@2 M@2 K@2 N@2 ~@10
>`.pickRestart({
  A: "~ [bb3,d4,f4]", B: "[[ab3,c4,eb4,g4]@3 [bb3,d4,f4]]/2", C: "[[ab3,c4,eb4,g4]@3 [g3,bb3,d4,f4]]/2",
  D: "[[bb3,eb4,g4]@27 ~@5]/2", // Eb
  E: "[[ab3,c4,eb4,g4]@24 [bb3,d4,f4]@7 ~ [ab3,c4,eb4,g4]@22 ~@2 [g3,bb3,d4,f4]@8 [ab3,c4,eb4,g4]@24 [bb3,d4,f4]@7 ~ [ab3,c4,eb4,g4]@23 ~ [g3,bb3,d4,f4]@8, g6@127 ~, ~@120 ab3 ~@7]/8", // Abmaj7 Bb Abmaj7 Gm7 Abmaj7 Bb Abmaj7 Gm7
  F: "[[ab3,c4,eb4,g4]@23 ~ [bb3,d4,f4]@8 [ab3,c4,eb4,g4]@23 ~ [g3,bb3,d4,f4]@7 ~, g6@63 ~]/4", // Abmaj7 Bb Abmaj7 Gm7
  G: "[[ab3,c4,eb4,g4]@23 ~ [g3,bb3,d4,f4]@7 ~ [ab3,c4,eb4,g4]@23 ~ [g3,bb3,d4,f4]@7 ~ [ab3,c4,eb4,g4]@23 ~ [g3,bb3,d4,f4]@8 [ab3,c4,eb4,g4]@24 [g3,bb3,d4,f4]@8, g6, ~@88 a3 ~@39]/8", // Abmaj7 Gm7 Abmaj7 Gm7 Abmaj7 Gm7 Abmaj7 Gm7
  H: "[ab3,c4,eb4,g4]", I: "~ [g3,bb3,d4,f4], ~@8 ab3 ~@7", J: "[[ab3,c4,eb4,g4]@23 ~ [g3,bb3,d4,f4]@8, db4 ~@31]/2",
  K: "[[ab3,c4,eb4,g4]@23 ~ [g3,bb3,d4,f4]@8]/2", L: "[[ab3,c4,eb4,g4]@3 [g3,bb3,d4,f4], ~@24 [ab3,e4] ~@7]/2",
  M: "[[ab3,c4,eb4,g4]@3 [g3,bb3,d4,f4], ~@24 ab3 ~@7]/2", N: "[[ab3,c4,eb4,g4]@3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.08)

// chords · epiano1 · "E Piano"
const epiano1 = note(`<
  ~@6 A@3 ~ B C D E F G H@4 ~@5 I@3 J@4 K@2 B C D E F G H@4 ~@5 L@2 M@2 N O@3 P B C D E F G H@4 ~@5 L@2 M@2 N Q@3 P ~@10
  R@2 ~@2 R@2 ~@26 S@3 ~ T U ~@22
>`.pickRestart({
  A: "[~ c6@16 ~@7, g6@2 ~, ~ eb6@32 ~@15]/3", B: "g6 ~ c6@14", C: "~@3 ab5@12 ~, g6, ~ eb6@14 ~, ~@2 c6@13 ~",
  D: "~@3 ab5@12 ~, g6@15 ~, ~ eb6@14 ~, ~@2 c6@13 ~", E: "~@2 c6 ab5@13, g6@3 ~@13, ~ eb6@2 ~@13",
  F: "~@3 ab5@12 ~, g6@15 ~, ~ eb6@14 ~, ~ c6@7", G: "~ c6@6 ~, g6@7 ~, ~ eb6@13 ~@2",
  H: "[g5 ~ g5 ~@25 c5@32 ~@4, ~ bb5@2 eb5@6 eb5@6 eb5@4 eb5@4 eb5@4 eb5@32 ~@5, ~@2 c5@3 c5@3 c5@2 c5@2 c5@2 ~@18, ~@3 g5 g5@2 g5 g5@2 g5@2 g5@2 g5@16 ~@3, ~@7 bb5@6 bb5@32 ~@19]/4",
  I: "[~@16 g5@12 ~@2 e6 ~ g5@14 e6 c6, ~@7 e6@7 ~@10, ~@15 c6@13 ~@3 [b5,c6]@15 ~@2]/3", // Cmaj7
  J: "[[g5,bb5]@13 ~ e6 ~ f5@12 ~@2 e6 ~ g5@12 ~@2 e6 ~ g5@14 e6 [bb5,c6], ~@15 [a5,c6]@13 ~@3 c6@13 ~@3 [b5,c6]@16 ~]/4", // Gm Bbsus2 Am Cmaj7
  K: "[g5@14 e6 c6 f5@13 ~@3, ~@15 a5@14 ~@3]/2", L: "[~@16 g5@14 [c6,e6] b5, ~@7 e6@8 ~, ~@15 c6@15 ~@2]/2",
  M: "[g5@14 e6 c6 ~@14 e6 [a5,c6], ~@15 bb5@16 ~, ~ g5]/2", N: "f5@14 e6 c6",
  O: "[g5@14 e6 c6 g5@14 e6 c6 ~@14 e6 [a5,c6], ~@15 b5@16 bb5@16 ~, ~@2 g5]/3", P: "f5 ~@15",
  Q: "[g5@14 e6 c6 g5@14 e6 c6 ~@14 [c6,e6] a5, ~@15 b5@16 bb5@16 ~, ~@2 g5]/3", // C
  R: "[~@5 c5@3, ~@5 g5 g5@2 g5 g5@7, ~@11 bb5@6 bb5@15, ~@13 eb5@6 eb5@13, ~@7 c5@3 ~@6]/2",
  S: "[~@10 g5 bb5 g5 eb5 ~@6 c5@15 ~@13, ~@14 c5@5 eb5@16 ~@13, ~@16 g5@2 g5@17 ~@13, ~@17 bb5@18 ~@13]/3",
  T: "~@10 g5 ~@3 c5 ~, ~@11 bb5@4 ~, ~@13 eb5@2 ~", U: "g5 ~@3 c5@12, ~ bb5@15, ~ g5@7, ~@3 eb5@13",
})).s("gm_epiano1").gain(0.17)

// chords · epiano1 · "E Piano" · soft notes
const epiano1_soft = note("<~@6 A@3 ~ B ~ C D ~ E ~@18 B ~ C D ~ E ~@18 B ~ C D ~ E ~@64 F ~@23>".pickRestart({
  A: "[~ g5@8 ~@3, ~@3 ab5@32 ~@13]/3", B: "~@5 g5@11, ~ eb6@14 ~, ~@3 ab5@13", C: "~@4 g5@11 ~", D: "~ g5@3",
  E: "~@3 ab5@11 ~@2", F: "~@12 g5@3 ~",
})).s("gm_epiano1").gain(0.08)

// other · tenor sax · "Sax L"
const tenor_sax = note("<~@66 A B@2 C D E F G H@2 ~@14 I J K L M@2 ~@56>".pickRestart({
  A: "~@4 bb4@2 bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~",
  B: "[bb4@2 a4@2 g4 ~ a4@3 ~ [a4,bb4] a4 g4@6 ~@2 f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~]/2", // Bbmaj7
  C: "f4@2 eb4 ~ c4@2 bb3 ~ eb4@2 c4@5 ~", D: "f4 g4 bb4 ~ bb4@2 c5 ~ eb5@2 c5 ~ c5@3 ~",
  E: "f5@3 ~ f5@2 eb5 c5 f5@2 c5 ~ c5@3 ~, ~@8 e5 ~@7", F: "bb4@2 c5 ~ f4 g4 bb4 ~@2 eb4@2 ~ c4@2 f4@2, ~@4 f4 ~@3",
  G: "eb4@2 c4 ~ c4 eb4 [e4,f4] ~ f4 g4 bb4 ~ c5 ~ c5 ~", H: "[[bb4,b4,c5] ~ [bb4,b4] ~@29, ~@2 c5@19 ~@11]/2",
  I: "~@4 g4@3 ~ g4@3 ~ g4@3 f4, ~@4 f4 ~@3 f4 ~@3 f4 ~@3", J: "g4@3 f4 g4@3 ~ [f4,g4] f4 eb4 ~ f4@2 eb4@2",
  K: "g4@3 ~ g4@3 ~ g4@3 ~ bb4@4, f4 ~@3 f4 ~@3 f4 ~@7",
  L: "g4@3 ~ g4@3 ~ [f4,g4] f4 eb4 ~ f4 g4 bb4@2, f4 ~@3 f4 ~@11", M: "[c5 c5@10 ~@5, b4 ~ bb4 ~@29]/2",
})).s("gm_tenor_sax").gain(0.19)

// other · woodblock · "Woody"
const woodblock = note(`<
  ~@5 A ~@3 A ~@5 A ~ B ~@21 A ~ B ~@21 A ~ B ~@21 A ~ B ~@5 A ~ B ~@5 A ~ B ~@5 A ~ B ~@5 A ~ B ~@5 A ~ B ~@5 A ~ B ~@5
  A ~ B ~@6
>`.pickRestart({
  A: "~@10 g4 ~ g4 ~@3", B: "~@2 g4 ~ g4 ~@11",
})).s("gm_woodblock").gain(0.36)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@2 A B A C A B A C A B A C A B A C D E D F D G D H I@2 J K L I M N A B A C A B A C D E D F D G D H I@2 J K L I M N A
  B A C A B A C D E D F D G D H I@2 J K L I M N A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C
  A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B O ~@3
>`.pickRestart({
  A: "f2@2 ~ f2 ~@2 c2 ~ eb2 ~ c2 ~ eb2 ~ e2 ~", B: "f2@2 ~ f2 ~@2 c2 ~ eb2 ~ c2 ~ eb2 ~ c2 ~",
  C: "f2@2 ~ f2 ~@2 c2 ~ eb2 ~ c2 ~ eb2 ~@3", D: "c3@2 ~ c3 ~@2 g2 ~ bb2 ~ g2 ~ bb2 ~ b2 ~",
  E: "c3@2 ~ c3 ~@2 g2 ~ f2@2 ~@2 f2@2 bb2 ~", F: "c3@2 ~ c3 ~@2 g2 ~ ab2@2 ~@2 bb2 ~@3",
  G: "c3@2 ~ c3 ~@2 g2 ~ f2@2 ~ f2!2 ~ bb2 ~", H: "c3@2 ~ c3 ~@2 g2 ~ ab2 ~@3 bb2@2 ~@2",
  I: "c3@5 ~ a2@2 ~@2 g2@3 ~ g2 a2", J: "c3@5 ~ a2 ~@3 g2@3 ~ a2 ~", K: "f2@3 ~ f3 ~ d3@2 ~@2 c3 ~ g2 a2 c3 ~",
  L: "c3@4 ~@2 a2 ~@3 g2@3 ~ g2 a2", M: "c3@4 ~@2 a2 ~@3 g2@3 ~ a2 ~", N: "f2@3 ~ f3 ~ d3@2 ~@2 c3 ~ a2 ~ g2 ~",
  O: "f2@2 ~ f2 ~@2 c2 ~@9",
})).s("gm_acoustic_bass").gain(0.38)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@4
>`.pickRestart({
  A: "x ~@3 x ~@2 x", B: "x!2",
})).gain(0.4)

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

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@5 A ~ A ~ B ~@3 A ~ A ~ C ~@19 A ~ A ~ C ~@19 A ~ A ~ C ~@19 A ~ A ~ C ~@3 A ~ A ~ C ~@3 A ~ A ~ C ~@3 A ~ A ~ C ~@3
  A ~ A ~ C ~@3 A ~ A ~ C ~@3 A ~ A ~ C ~@3 A ~ A ~ C ~@6
>`.pickRestart({
  A: "~@5 x!2 ~", B: "~@2 x ~ x ~@5 x!3 ~@3", C: "~ x!2 ~@2 x!2 ~",
})).gain(1.76)

// drums · guiro
const guiro = s("guiro:4").struct("<[~@2 x!2 ~@2 x ~]!147 [~@2 x!2 ~@4] ~@4>").gain(8.38)

stack(
  electric_guitar_jazz, rock_organ, rock_organ_soft, acoustic_guitar_steel, string_ensemble_1, epiano1, epiano1_soft,
  tenor_sax, woodblock, bass, kick, snare, cabasa, guiro
)

More by Hall & Oates