Strudelify
If This Is It cover art

Sports

If This Is It

Huey Lewis & The News

KeyG majorTempo102 bpm
0:00/0:00
// If This Is It — Huey Lewis & The News
// 102 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 113 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D A E C D F G H I J K H I L M N M L M N O P B C D Q B C D R S H I F T H I L M N M L M N O P U C V W B C D X Y
  Z AA X Y AB AC A B C AD A B C D AE B C AF A U C V A AG C AF A U AH AI AJ AK C AL W AM C D X Y Z AN X Y AB AO AP ~@7
>`.pickRestart({
  A: "g1@3 ~ g1@2 ~@4 d1@2 g1@3 ~ g1@2 ~@2 a1 ~ a#1@2", B: "b1@3 ~ b1@2 ~@4 f#1@2 b1@3 ~ b1@3 ~@3 b1@2",
  C: "d2@5 ~ d2@6 e2@5 ~ e2@6", D: "a1@5 ~ b1@5 ~ c2@5 ~ d2@5 ~", E: "b1@3 ~ b1@2 ~@4 f#1@2 b1@3 ~ b1@2 ~@4 b1@2",
  F: "g1@7 ~@3 g1@2 e1@6 ~@2 f1 ~ f#1@2", G: "g1@3 ~ g1@2 ~@4 g1@2 e1@5 ~ e1@6", H: "g1@3 ~@2 g1 e1@3 g1@3",
  I: "f2@6 e2@6 d2@5 ~ d2@6", J: "g1@6 ~@4 g1 ~ e1@6 ~@4 e1@2", K: "g1@3 ~@2 g1 e1@3 ~@2 e1",
  L: "a1@3 ~@2 a1 b1@3 ~@2 b1", M: "c2@5 ~ d2@5 ~ e2@6 e2@6", N: "a1@3 ~ a1@2 ~@4 a1@2 b1@3 ~ b1@2 ~@4 b1@2",
  O: "c2@2 ~@4 d2@17 ~", P: "g1@4 g1@2 ~@4 d1 ~ g1@3 ~ g1@2 ~@2 a1 ~ a#1@2",
  Q: "g1@4 g1@2 ~@4 d1@2 g1@3 ~ g1@3 ~ a1 ~ a#1@2", R: "g1@6 ~@4 g1 ~ e1@7 ~ f1 ~ f#1 ~",
  S: "g1@6 ~@4 g1@2 e1@3 ~ e1@3 ~ f1 ~ f#1@2", T: "g1@4 g1@2 ~@4 g1@2 e1@5 ~ e1@2 f1 ~ f#1@2",
  U: "b1@3 ~ b1@2 ~@4 f#1@2 b1@3 ~ b1@3 ~ c2 ~ c#2@2", V: "a1@2 a2@2 a1@2 b1@5 ~ c2@2 c3@2 c2@2 d2@5 ~",
  W: "g1@4 g1@2 ~@4 g1 ~ g1@3 ~ g1@2 ~@2 a1 ~ a#1@2", X: "d#2@5 ~ d#2@5 ~ d#2@5 ~ d#2@2 a#1@2 d#1@2",
  Y: "d#2@2 ~ d#2@2 ~ d#2@2 ~ d#2@2 ~", Z: "d2@5 ~ d2@5 ~ d2@5 ~ d2@2 a1@2 d1@2",
  AA: "d2@5 ~ d2@2 a1@2 d1@2 d2@5 ~ d2@2 d1@2 d2@2", AB: "d2@5 ~ d2@4 d#2@2 e2@5 ~ e2@6",
  AC: "a1@2 ~@2 a1 ~ b1@2 ~@2 b1 ~ c2@2 ~@2 c2 ~ d2@2 d3@2 d2 ~, ~ a2@2 ~ b2@2 ~ c3@2 ~@3",
  AD: "a1@2 ~@2 a1 ~ b1@2 b2@2 b1@2 c2@2 c3@2 c2 ~ d2@2 d3@2 d2 ~, ~ a2@2 ~@9",
  AE: "g1@3 ~ g1@2 ~@4 d1@2 g1@3 ~ g1@3 ~ a1@2 a#1@2",
  AF: "a1@2 a2@2 a1 ~ b1@2 b2@2 b1 ~ c2@2 c3@2 c2 ~ d2@2 d3@2 d2 ~",
  AG: "b1@3 ~ b1@3 ~ a1 ~ a#1@2 b1@3 ~ b1@3 ~ c2@2 c#2@2", AH: "d2@5 ~ d#2@5 ~ e2@6 e2@5 ~",
  AI: "a1@3 ~ a1@2 b1@5 ~ c2@4 c2@2 d2@6", AJ: "g1@7 ~@3 d1@2 g1@3 ~ g1@3 ~ a1 ~ a#1@2",
  AK: "b1@4 b1@2 ~@4 f#1@2 b1@3 ~ b1@3 ~ c2@2 c#2@2", AL: "a1@2 a2@2 a1 ~ b1@4 ~@2 c2@2 c3@2 c2 ~ d2@2 d3@2 d2 ~",
  AM: "b1@3 ~ b1@2 ~@4 b1 ~ b1@3 ~ b1@8", AN: "d2@5 ~ d2@5 ~ d2@2 a1@2 d1@2 d2@2 a1@2 d1@2",
  AO: "a1@5 ~ b1@5 ~ c2@5 ~ d2@2 c2@2 d2@2", AP: "g2 ~@11",
})).s("gm_acoustic_bass").gain(0.43)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~ A B C D A B C D E@3 F G@3 F H I H I H I H J A B C D A B C D G@3 F K@3 L H I H I H I H J A B C D A B C M N O P Q R S
  T U A B C D A B C D A B C D A B C D A B V D A B C D A B C D A B W D X Y Z AA AB AC AD U AE@8
>`.pickRestart({
  A: "[b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~", // G
  B: "[b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~", // Bm
  C: "[a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~", // Dm E
  D: "[a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~", // Am7 G C Am7
  E: "[~@18 [e5,a5,c6]@3 ~ [d5,g5,b5]@17 ~@3 [c5,g5]@2 e5@2 [b4,d5,g5]@24 ~@2, ~@18 g#5 ~@23 d#5 ~@29]/3", // Am G C5 G
  F: "[c5,f5,a5]@5 ~ [c5,e5,g5]@4 ~@2 [a4,c5,e5,g5]@6 [a4,c5,e5,g5]@5 ~", // F C Am7
  G: "[~@9 [e5,c6] a5 [d5,g5,b5]@8 ~@2 [c5,g5] e5 [b4,d5,g5]@10 ~@3, ~@18 g#5 ~@23 d#5 ~@29]/3", // C G C5 G
  H: "[a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~", // Am7 G
  I: "[c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [d5,f#5,a5] ~ [d5,f#5,a5] ~ [d5,f#5,a5] ~ [e5,g#5,b5] ~ [e5,g#5,b5] ~ [e5,g#5,b5] ~", // C D E
  J: "[c5,e5,g5] ~@5 [a4,c5,e5,g5]@15 ~@3", // C Am7
  K: "[~@18 [e5,a5,c6]@2 ~@2 [d5,g5,b5]@15 ~@5 [c5,g5]@2 e5 ~ [b4,d5,g5]@20 ~@6, ~@18 g#5 ~@23 [d#5,f5] ~@29]/3", // Am G C5 G D#sus2
  L: "[c5,f5,a5]@5 ~ [c5,e5,g5]@4 ~@2 [a4,c5,e5,g5]@5 ~ [a4,c5,e5,g5]@4 ~@2", // F C Am7
  M: "[a4,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~ [a4,c5,e5,g5] ~", // A7 Am7 G C Am7
  N: "[f5,a#5,d6]@5 ~ [f5,a#5,d6]@3 ~ [f5,a5,c6]@13 ~", O: "[f5,a#5,d6]@5 ~ [f5,a#5,d6]@3 ~ [f5,a5,c6]@11 ~@3",
  P: "[d5,g5,b5]@4 ~@2 [d5,g5,b5]@3 ~ [d5,f#5,a5]@11 ~@3", Q: "[d5,g5,b5]@4 ~@2 [d5,g5,b5]@2 ~@2 [d5,f#5,a5]@13 ~",
  R: "[f4,a#4,d5,f5,a#5,d6]@5 ~ [f4,a#4,d5,f5,a#5,d6]@4 ~@2 [f4,a4,c5]@4 ~@2 [f4,a4,c5]@5 ~, ~@10 [f5,a5,c6]@13 ~", // A# F
  S: "[f4,a#4,d5,f5,a#5,d6]@5 ~ [f4,a#4,d5,f5]@4 ~@2 [f4,a4,c5]@5 ~ [f4,a4,c5]@3 ~@3, ~@6 [a#5,d6]@3 ~ f5@12 ~@2, ~@5 [a5,c6]@5 ~@2", // A# F A# Am
  T: "[g4,d5,g5,b5]@4 [d5,g5,b5] ~ g4@2 [d5,g5,b5]@3 ~ [d5,g#5,b5]@3 ~ [d5,g#5,b5]@5 ~@3", // G G#dim
  U: "[a4,c5,e5,g5]@5 ~ [b4,d5,g5]@5 ~ [c5,e5,g5]@5 ~ [a4,c5,e5,g5]@5 ~", // Am7 G C Am7
  V: "[a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [b4,e5,f#5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~", // Dm E
  W: "[a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [b4,e5,f5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~", // Dm E
  X: "[a#4,d5,f5,a#5,d6]@5 ~ [a#4,d5,f5,a#5,d6]@3 ~ [f4,a4,c5,f5,a5,c6]@13 ~", // A# F
  Y: "[f4,a#4,d5,f5,a#5,d6]@5 ~ [f4,a#4,d5,f5,a#5,d6]@3 ~ [f4,c5,f5]@12 ~@2, ~@5 [a4,a5,c6]@5 ~@2", // A# F5 Am
  Z: "[g4,d5,g5,b5]@5 ~ [g4,d5,g5,b5]@4 [f#4,d5,f#5,a5]@13 ~", // G D
  AA: "[g4,d5,g5,b5]@5 ~ [g4,d5,g5,b5]@4 [f#4,d5,f#5,a5]@11 ~@3", // G D
  AB: "[f4,a#4,d5,f5,a#5,d6]@5 ~ [f4,a#4,d5,f5,a#5,d6]@3 ~ [f4,a4,c5,f5,a5,c6]@13 ~", // A# F
  AC: "[f4,a#4,d5,f5,a#5,d6]@5 ~ [f4,a#4,d5,f5,a#5,d6]@3 ~ [f4,a4,c5,f5]@13 ~, ~@10 [a5,c6]@9 ~@5", // A# F Am
  AD: "[d5,g5,b5]@4 [d5,g5,b5] ~@3 [d5,g5,b5]@3 ~ [d5,g#5,b5]@4 [d5,g#5,b5]@4 ~@4", AE: "[d5,g5]/8",
})).s("gm_piano").gain(0.32)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D A B C D E@2 A F E@2 A F G H G H G H I J A B C D A B C D E@2 A F E@2 A F G H G H G H I J A B C D A B C D ~@8
  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 ~@16
>`.pickRestart({
  A: "~@6 [d5,g5,b5] ~@11 [d5,g5,b5] ~@5", B: "~@6 [d5,f#5,a5] ~@11 [d5,f#5,a5] ~@5",
  C: "~@6 [d5,f5,a5] ~@11 [e5,g#5,b5] ~@5", D: "~@6 [b4,d5,g5]@2 ~@10 [c5,e5,g5] ~@5",
  E: "~@6 [d5,g5,b5] ~@11 [e5,g5,c6] ~@5", F: "~@6 [c5,e5,g5]@2 ~@10 [c5,e5,g5] ~@5",
  G: "~@6 [c5,e5,g5]@2 ~@10 [b4,d5,g5] ~@5", H: "~@6 [c5,e5,g5] ~@11 [e5,g#5,b5] ~@5",
  I: "~@6 [c5,e5,g5] ~@11 [b4,d5,g5] ~@5", J: "~@3 [c5,e5,g5] ~@8",
})).s("gm_acoustic_guitar_steel").gain(0.41)

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

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@56 A ~@3 A ~@3 A ~@31 A ~@3 A ~@3 A ~@8>".pickRestart({
  A: "~@5 x",
})).gain(0.59)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@56 A ~@3 A ~@3 A ~@31 A ~@3 A ~@3 A ~@8>".pickRestart({
  A: "~@11 x",
})).gain(0.59)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@18 B A ~@7 A ~@7 A ~@6 B A ~@7 A ~@3 A ~@2 C A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@2 C ~@8
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "x!4",
})).gain(0.59)

stack(bass, piano, acoustic_guitar_steel, kick, snare, hihat, low_tom, open_hat, mid_tom, crash)

More by Huey Lewis & The News