Strudelify

Doin' It (All for My Baby)

Huey Lewis & The News

KeyC majorTempo91 bpm
0:00/0:00
// Doin' It (All for My Baby) — Huey Lewis & The News
// 91 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 80 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(91/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K H I J L M N O P Q R S T U V W@2 G H I J K H I J L M N O P Q R X T U V Y Z AA AB AC AD AE AF AG
  AH Q R X T AI V AJ@2 R AK R AK R Q R Q R Q R Q R Q R AL
>`.pickRestart({
  A: "~@14 g1 ~ g1 ~ g1 ~ a1@2 b1 ~", B: "c2@3 ~ c2@5 ~ c2@2 a1@3 ~ a1@4 ~@2 a1@2", C: "f1@5 ~ e1@5 ~ d1@5 ~ g1@5 ~",
  D: "c2@7 ~@3 c2 ~ a1@8 ~@2 a1@2", E: "d2@3 ~ e2@3 ~ f2@2 ~@2 g2@12", F: "c2@23 ~", G: "g2",
  H: "c2@8 ~@2 c2 ~ b1@9 ~@3", I: "a1@4 ~ a1 g1@5 ~", J: "f2@8 ~@2 f2 ~ e2@11 ~", K: "d2@2 ~ d2 e2 f2 g2@2 ~ g1 a1 b1",
  L: "d2@4 d2@2 e2@6 f2@6 g2@5 ~", M: "e2@7 ~@3 e2@2 a1@8 ~@2 a1@2", N: "d2@8 ~@2 d2@2 g2@5 ~ g2 ~ f#2 ~ f2 ~",
  O: "e2@4 ~ e2 a1@4 ~ a1", P: "d2@5 ~ d2@2 e2 ~ f2@2 g2@2 d2 ~ g1@4 a1@2 b1@2", Q: "c2@8 ~@2 c2@2 a1@8 ~@2 a1 ~",
  R: "f2@4 ~@2 e2@5 ~ d2@6 g2@3 ~ g1@2", S: "c2@9 ~ c2 ~ a1@8 ~@2 a1 ~",
  T: "d2@3 ~ d2 ~ d2 ~ d2@2 e2@2 f2@2 e2 ~ f2@2 g2 ~ a2 ~ c3@2", U: "c2@9 ~ c2@2 a1@8 ~@2 a1@2",
  V: "a#1@7 ~ c2@2 d2@2 f2@5 ~ f1@5 ~", W: "[d1@5 ~ e1@5 ~ f1@6 g1@4 c2@26]/2", X: "c2@9 ~ c2@2 a1@8 ~@2 a1 ~",
  Y: "d1@5 ~ e1@5 ~ f1@6 g1@4 c2@2", Z: "~@4 f2@2 ~@2 f2@3 ~ f2@2 ~@2 g2@3 ~ g2@3 ~",
  AA: "a2@3 ~ a2@5 ~ a2@2 e2@3 ~ e2@4 ~@2 e2@2", AB: "f2@3 ~ f2@5 ~ f2@2 f1@5 ~ f1 ~ f1@2 g1@2",
  AC: "a1@3 ~ a1@5 ~ a1@2 e2@3 ~ e2@5 ~ e2@2", AD: "f2@3 ~ f2@8 f1@5 ~ f1@2 f1@2 g1 ~",
  AE: "a2@3 ~ a2@5 ~ a2@2 e2@3 ~ e2@5 ~ e2@2", AF: "f2@3 ~ f2@5 ~ f2@2 d2@11 ~", AG: "d1@11 ~ e1@11 ~",
  AH: "f1@11 ~ g1@2 g1@2 g1@2 g1@2 a1@2 b1 ~", AI: "c2@9 ~ c2 ~ a1@8 ~@2 a1@2",
  AJ: "[d1@5 ~ e1@5 ~ f1@6 g1@4 c2@12 c2@2 a1@8 ~@2 a1 ~]/2", AK: "c2@8 ~@2 c2 ~ a1@8 ~@2 a1 ~", AL: "c2@3 c1 ~@8",
})).s("gm_acoustic_bass").gain(0.62)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  ~ A B C D ~@15 E F@2 ~ E G ~@14 H E F@2 ~ E I@2 ~@3 J K L M N H E F@2 ~ O P Q R Q R Q R Q R ~ E ~ E ~ E H E S
>`.pickRestart({
  A: "~@6 [g6,c#7] ~ a6 ~ c7@10 a6 ~ c7@2", B: "~@4 e7@3 ~ d7@2 ~@2 c7@4 ~@2 a6@4 ~@2",
  C: "~@6 g6 ~ a6 ~ c7@9 ~ d7@2 [g6,e7]@2, ~@20 f6 ~@3", D: "[a6,d7]@3 ~ [g6,e7]@3 ~ [e6,f7]@3 ~ [e6,g7]@12",
  E: "~@14 a6 ~ c7@2 d7 ~ c7 ~ a6 ~", F: "[c7@13 ~ c7 ~@6 e7 [d7,f7] [e7,g7], ~@42 c7 ~@5]/2", G: "c7@18 c8@2 ~@2 c8 ~",
  H: "c7 ~@3", I: "[c7@18 c7@4 ~@6 [c6,f6]@2 ~@2 [c6,f6]@3 ~ [c6,f6]@3 ~ [d6,g6]@3 ~ [d6,g6]@3 ~, ~@22 c7@13 ~@13]/2",
  J: "~@14 e6 ~ g6@2 a6@2 g6 ~ e6@2", K: "a6@12 g6@11 ~", L: "c6@7 ~", M: "d7@11 ~ e7@11 ~",
  N: "f7@12 ~@2 g6!2 a6 ~ d7!2 c7 ~ a6 ~", O: "~@14 a5 ~ c6@2 d6 ~ c6 ~ a5 ~", P: "c6@18 c7@2 ~@2 c7 ~",
  Q: "~@6 e6 ~ f6 ~ g6@2 ~@6 c6 ~ d6 ~ e6@2", R: "~@18 g6 ~ a6 ~ c7@2", S: "c6 ~@3",
})).s("gm_brass_section").gain(0.66)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  A B C D E F G H@2 I J H@2 I K L M L N O P O Q O R S@3 H@2 I J H@2 I K L M L N O P O Q O R T U V W X Y Z AA AB AC O P O
  Q O R AD@2 P O P O P O P O P O P O P O P AE
>`.pickRestart({
  A: "~@7 [d5,g5]@4 ~", B: "c6@11 ~ a5@4 g5@6 ~@2, g5 ~@23", C: "[f5,a5]@5 ~ [e5,g5]@5 ~ [d5,f5]@5 ~ [f5,g5]@5 ~",
  D: "c5@23 ~", E: "d5@3 ~ e5@3 ~ f5@3 ~ g5@12",
  F: "~@8 [g5,c6,e6] ~ [a5,d6,f6] ~ [c6,e6,g6]@3 ~ [c6,e6,g6]@3 ~ [a5,d6,f6] ~ [g5,c6]@2, ~@22 [d6,e6] ~", // C Dm C Dm C5 Dsus2
  G: "[f5,a5,c6,d6,e6]@17 ~ [e6,f6,g6] [a5,b5,c6,d6] [d5,e5,f5,g5] [a4,b4,c5] [e4,f4,g4] [c4,d4]", H: "[e5@47 ~]/2",
  I: "f5 e5", J: "d5@11 ~ g5@11 ~", K: "d5@6 e5@6 f5@6 g5@5 ~", L: "[e5,g5]@11 ~ [c5,e5]@11 ~", M: "[d5,f5]@23 ~",
  N: "[d5,f5]@11 ~ [d5,g5]@6 [d5,g5]@6", O: "[c5,e5]@23 ~", P: "[c5,f5]@5 ~ [c5,e5]@6 d5@5 ~ [b4,d5]@5 ~",
  Q: "[c5,f5]@12 g5 ~@5 [d5,g5]@6", R: "[d5,f5]@11 ~ [c5,f5]@11 ~",
  S: "[[a4,d5]@5 ~ [c5,e5]@5 ~ [d5,f5]@6 c5@2 ~@2 c5@49 ~, ~@22 g4@27 ~@23]/3", // D5 C Dm
  T: "[a4,d5]@5 ~ [c5,e5]@5 ~ [d5,f5]@6 c5@2 ~@2 [g4,c5]@2", // D5 C Dm C5
  U: "~@4 [a4,c5]@2 ~@2 [a4,c5]@2 ~@2 [a4,c5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~", // Am Bm
  V: "[e5,a5,c6]@11 ~ [d5,g5,b5]@11 ~, d6 ~@11", W: "[f5,a5]@23 ~, c5@3 ~", X: "[e5,a5,c6]@11 ~ [d5,g5,b5]@11 ~",
  Y: "[c5,f5,a5]@23 ~", Z: "[c5,e5]@11 ~ [b4,d5]@11 ~", AA: "[a4,c5] [a4,d5]", AB: "[a4,d5]@11 ~ [c5,e5]@11 ~",
  AC: "[d5,f5]@6 [g4,b4,d5] [d5,g5]@5", // Dm G G5
  AD: "[[a4,d5]@5 ~ [c5,e5]@5 ~ [d5,f5]@6 c5@2 ~@2 [g4,c5,e5]@14 [a4,c5,e5]@12]/2", AE: "[c5,e5]@3 c4 ~@8",
})).s("gm_rock_organ").gain(0.45)

// chords · piano · "A.PIANO 1"
const piano = note("<A B C D E ~@7 F G ~@12 H I ~@5 F G ~@2 F ~ J ~@3 K ~@15 K ~@20>".pickRestart({
  A: "~@14 g4@3 ~ g4@2 a4@2 c5@2", B: "[g4,c5,e5]@11 ~ [a4,c5,e5]@11 ~",
  C: "[a4,c5,e5]@5 ~ [g4,b4,d5]@5 ~ [f4,a4,c5]@5 ~ [b4,d5,g5]@5 ~", D: "[g3,c4,e4]@11 ~ [a3,c4,e4]@10 ~@2",
  E: "[a3,d4,f4]@3 ~ [b3,e4,g4]@3 ~ [c4,f4,a4]@3 ~ [d4,f4,g4,c5]@12", F: "~@3 [g3,g4] [a3,a4] [c4,c5]",
  G: "[a3,a4]@7 ~@17", // A
  H: "~@8 [g4,c5,e5] ~ [a4,d5,f5] ~ [c5,e5,g5]@3 ~ [c5,e5,g5]@3 ~ [a4,d5,f5] ~ [g4,c5,e5]@2, ~@22 d5 ~", // C Dm C Dm C
  I: "d5 ~@13 g4@6 ~@4, [f4,a4,c5,e5]@23 ~", J: "~@6 [g3,g4]@2 [g4,g5] ~ [c4,c5]@2",
  K: "f4@4 f4@2 [d4,f4] ~ f4@2 g4@2 a4@2 g4@2 a4@2 [e4,g4] ~ f4@2 [g4,c5] ~, d4@2 ~@2 d4 ~@3 d4 ~ e4 ~ f4 ~ e4 ~ f4 ~@3 a4 ~@3", // Dm Em C5
})).s("gm_piano").gain(0.72)

// chords · piano · "A.PIANO 2"
const piano_2 = note(`<
  ~@5 A B C D E F C G E H I J K L M N M O P Q R@2 S C D E T C G E U V W K X M N M Y P Q Z AA AB AC AB AD AE AF AG AH M N
  M Y P Q AI@2 N M N M N M N M N M N M N M N AJ
>`.pickRestart({
  A: "~@8 [g3,c4,e4] ~ [a3,d4,f4] ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [a3,d4,f4] ~ [g3,c4,e4]@2, ~@22 d4 ~", // C Dm C Dm C
  B: "[a3,c4]@8 [a3,c4]@2 a3@2 [g3,d#4] ~@5 d4@2 [a3,c4]@3 ~, f3@23 ~, e4@6 ~ g3@3 ~@2, d4 ~@9 c4@6 e4@8, ~@10 d4 ~ [a3,e4]@4 ~@2 a3 ~@5", // Am Cm Am A5
  C: "[g3,c4,e4]@9 ~ [g3,c4,e4]@2 [g3,e4]@2 ~@10, ~@12 b3@11 ~", // C
  D: "[g3,a3,c4,e4]@11 ~ [g3,c4,e4]@5 ~ [g3,g4]@2 [a3,a4]@2 [g3,g4]@2", // Am7 C G A G
  E: "[f3,c4,f4,a4]@2 [b3,e4]!2, ~@12 [e3,g4]@11 ~", F: "f4@5 f4 [g3,d4,f4,a4]@3 [a3,a4] [g3,g4] [a3,a4], [d3,a3,d4] ~",
  G: "[g3,a3,c4,e4]@11 ~ [g3,c4,e4]@12", H: "d4@2 ~ [g3,b3,e4]@3 [a3,c4,f4]@3 [b3,d4,g4]@3, [f3,a3] ~@3, ~ d4 ~@4",
  I: "e4@8 ~@2 e4@2 [a3,c4]@9 ~ [a3,c4,e4]@2, [b3,g4]@6 e4 ~@5", // Am Em
  J: "d4@10 d4 ~ [g3,a3,c4,e4,g4]@4 [a3,c4,f4,a4]@4 [a3,c4,d4,f4,c5]@4, [a3,f4] ~", // Am7 F Dm7 Dm
  K: "e4@9 ~ e4@2 [c4,e4]@10 a3 ~, [b3,g4]@4 a3@3 ~", // C Em
  L: "[a3,d4,f4]@11 ~ [g3,g4]@4 [g4,g5]@2 c4@2 [c4,c5]@4, ~@12 [c4,d4]@6 [d4,g4]@5 ~", // Dm G C Csus2 G5
  M: "[e4,g4,c5]@11 ~ [e4,a4,c5]@11 ~", N: "[f4,a4,c5]@5 ~ [e4,g4,b4]@5 ~ [d4,f4,a4]@5 ~ [d4,f4,g4]@5 ~",
  O: "f4@4 f4@2 [d4,f4] ~ f4@2 g4@2 a4@2 g4@2 a4@2 [e4,g4] ~ f4@2 [g4,c5] ~, a4@11 ~@7 b4@5 ~, d4@2 ~@2 d4 ~@3 d4 ~ e4 ~ f4 ~ e4 ~ f4 ~@3 a4 ~@3", // Dm Em C5
  P: "[e4,g4,c5]@6 [e4,a4,c5]@5 ~", Q: "[d4,f4,a#4]@11 ~ [f4,a4,c5]@10 ~@2",
  R: "[[d4,f4,a4]@5 ~ [e4,g4,b4]@5 ~ [c4,f4,a4]@5 ~ [d4,f4,g4]@3 ~ [e4,g4,c5]@10 ~@16]/2", // Dm Em F G7 C
  S: "~@8 [a3,c4] ~ [a3,c4,d4] ~ [a3,e4]@3 ~ e4 ~ d4@2 [a3,c4]@3 ~, ~@12 [g3,d#4] ~@5 a3 ~@5", // Am D7 A5 Am Cm
  T: "f4@5 f4 [g3,d4,f4,a4]@3 [a3,a4] [g3,g4] a4, [d3,a3,d4]@12 ~@10 a3 ~", // Dm A G D5
  U: "d4@4 ~@2 [g3,b3,e4]@6 [a3,c4,f4]@6 [b3,d4,g4]@5 ~, [f3,a3] ~@3, ~ d4 ~@4", // Em F G F
  V: "e4@8 ~@2 e4@2 [a3,c4]@9 ~ [a3,c4]@2, [b3,g4]@12 e4@2 ~@8 e4 ~", // Am Em
  W: "d4@10 d4 ~ [a3,c4,e4]@4 [a3,c4,f4]@4 [a3,d4,f4]@4, [a3,f4] ~", X: "[a3,d4,f4]@11 ~ [c4,d4,g4]@6 [c4,d4,g4]@5 ~",
  Y: "[f4,a4]@11 ~ [f4,a4]@5 ~ [g4,b4]@5 ~", // F G
  Z: "[d4,f4,a4]@5 ~ [e4,g4,b4]@5 ~ [c4,f4,a4]@5 ~ [d4,f4,g4]@3 ~ [e4,g4,c5]@2", // Dm Em F G7 C
  AA: "~@4 [c4,f4,a4]@3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4]@2 ~@2 [d4,g4,b4]@3 ~ [d4,g4,b4]@3 ~", // F G
  AB: "[e4,a4,c5]@11 ~ [d4,g4,b4]@10 ~@2", AC: "[c4,f4,a4]@11 ~", AD: "[f4,a4]@21 ~ [f4,a4]@2, c4@11 ~",
  AE: "[e4,a4,c5]@11 ~ [d4,g4,b4]@11 ~", AF: "[c4,f4,a4]@11 ~ [d4,f4,a4]@11 ~", AG: "[d4,f4]@11 ~ [e4,g4]@11 ~",
  AH: "[f4,a4]@12 ~@2 [d4,g4]@3 ~@3 [d4,g4]@2 ~@2", // F G5
  AI: "[[d4,f4,a4]@5 ~ [e4,g4,b4]@5 ~ [c4,f4,a4]@5 ~ [d4,f4,g4]@3 ~ [e4,g4,c5]@14 [e4,a4,c5]@11 ~]/2", // Dm Em F G7 C Am
  AJ: "[e4,g4,c5] ~@3", // C
})).s("gm_piano").gain(0.64)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@14 A B C D ~@17 A B C D ~@41>".pickRestart({
  A: "~@14 e5@2 g5@2 a5@3 ~ e5@2", B: "g5@11 ~ e5@11 ~", C: "f5@14 f5@2 a4@2 c5 ~ d5@2 e5@2", D: "d5@11 ~@13",
})).s("gm_acoustic_guitar_steel").gain(0.55)

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

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

// drums · low tom
const low_tom = s("lt").struct("<[~@11 x] ~@54 [~@8 x!4] ~@24>").gain(0.71)

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

// drums · mid tom
const mid_tom = s("mt").struct("<[~@5 x] ~@79>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@79 [~ x ~@4]>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<[~@3 x] ~@79>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ A B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ C ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ C D A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ C ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "x", B: "x!4 ~@2", C: "x ~@10 x", D: "~ x!5",
})).gain(0.64)

stack(
  bass, brass_section, rock_organ, piano, piano_2, acoustic_guitar_steel, kick, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash
)

More by Huey Lewis & The News