Strudelify
What I Like About You cover art

1986 · The Romantics

What I Like About You

Romantics

KeyE majorTempo160 bpm
0:00/0:00
// What I Like About You — Romantics
// 160 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · bassoon · "Oboe"
const bassoon = note("<~@60 A@2 B C A@2 B C D C D C D C D C ~@40>".pickRestart({
  A: "d5!12 c#5@4, ~@12 d5 ~@3", B: "d5!4 [c#5,d5] c#5!3 [b4,c#5] b4!3 c#5@2 d5@2, ~@12 b4 ~@3",
  C: "~ d5 ~ d5 d5@2 c#5@2", D: "b4@2 b4 d5 c#5@2 a4 d5",
})).s("gm_bassoon").gain(0.72)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  A B C B C B C D E F E F E F E F E F E F E F E F E F G F E F E F E F E F E F E F E F G F E F E F E F E H I J K L M N O
  P E F E F E F E F E F E F E F E F E F E F E F E F E F G F E F E F E F E F E F E F E F E F A B C B A B C B A B C Q
>`.pickRestart({
  A: "[e3,b3,e4,a4] ~@3 [e3,b3,e4,g#4] ~@3 [a2,e3,a3,c#4,e4,a4]@4 [a2,e3,a3,c#4,e4,a4]@2 [a2,e3,a3,c#4,e4,a4]@2", // Esus4 E A
  B: "[d3,a3,d4,f#4]@2 [d3,a3,d4,g4] [d3,a3,d4,f#4]@2 [a2,e3,a3,c#4,e4]!3", // D Dsus4 D A
  C: "[e3,b3,e4,a4]!2 [e3,b3,e4,g#4]!2 [a2,e3,a3,c#4,e4,a4]@2 [a2,e3,a3,c#4,e4,a4]!2", // Esus4 E A
  D: "[d3,a3,d4,f#4]@2 [d3,a3,d4,g4] [d3,a3,d4,f#4]@3 [a2,e3,a3,c#4,e4]@2", // D Dsus4 D A
  E: "[e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]!2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4]!2", // E A
  F: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4]@2", // D A
  G: "[e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]!2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4] [d3,a3,d4,f#4]", // E A D
  H: "[d3,a3,d4,f#4]!8", I: "[g2,d3,g3,b3,d4,g4]@6 a#3@4 a3@2 g3@2 ~ [d3,a3,d4,f#4]",
  J: "[d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!3", // D
  K: "[g2,d3,g3,b3,d4,g4]@6 a#3@4 a3@2 g3@2 ~ [a2,e3,a3,c#4,e4]", L: "[a2,e3,a3,c#4,e4]@7 [a2,e3,a3,c#4,e4]",
  M: "[a2,e3,a3,c#4] [a2,e3,a3,d4]@2 [a2,e3,a3,d4]!2 [a2,e3,a3,c#4] [a2,e3,a3,c#4]@2", // A Asus4 A
  N: "[b2,f#3,b3,d#4]@2 [e2,b2,e3,g#3,b3,e4]@4 [b2,f#3,b3,d#4]@9 [b2,f#3,b3,d#4]", // B E B
  O: "[b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4]!6", P: "[b2,f#3,b3,d#4]!6 ~@2",
  Q: "[d3,a3,d4,f#4]@2 [d3,a3,d4,g4] [d3,a3,d4,f#4]@2 [a2,e3,a3,c#4,e4] [a2,e3,a3,c#4,e4]@2", // D Dsus4 D A
})).s("gm_electric_guitar_clean").gain(0.59)

// bass · electric bass pick · "electric bass"
const bass = note(`<
  A B A B A B A B C D A E C D A E A F A G A F A H I J K L A F A E A F A G A F A H I J K L A F A F A F A M N O N P Q R S
  T A F A F A F A F A F A F A F A F A F A G A F A H I J K L A F A E A F A F A F A F A F A F A B A B A B A B A B A B
>`.pickRestart({
  A: "e1@2 g#1 b1 a1@2 a1@2", B: "d2@2 d2 d2@2 a1 a1@2", C: "e1@2 g#1 b1 a1@2 a1 d2", D: "d2@2 d2 d2@2 c#2 c#2@2",
  E: "d2!2 a1!2", F: "d2!2 c#2!2", G: "d2@2 d2 a1@3 c#2@2", H: "d2@2 d2 a1@2 a1 a1@2", I: "e1@3 e1 a1@3 a1",
  J: "d2@3 d2 c#2@2 c#2@2", K: "e1@3 e1 a1@2 a1 d2", L: "d2@2 d2 a1@3 a1@2", M: "d2!8", N: "g1@3 g1 g1@2 g1@2",
  O: "d1@3 d1 d1@2 d1@2", P: "a1", Q: "a1 a1@2 a1@2 a1@2 a1", R: "b1@2 e2@4 b1@8 b1!2", S: "b1@2 b1!6", T: "b1!6 ~@2",
})).s("gm_electric_bass_pick").gain(0.61)

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

// drums · snare
const snare = s("sd").struct("<~@7 [~@3 x] [~ x ~ x]!43 [x!16] [~ x ~ x]!7 [~ x ~@2] [~ x ~ x]!56>").gain(0.66)

// drums · clap
const clap = s("cp").struct("<~@3 [~@5 x!3] ~@112>").gain(0.59)

// drums · hihat
const hihat = s("hh").struct("<~@16 A@7 B ~@8 A@7 B ~@36 A@7 B ~@10 A@10 ~@12>".pickRestart({
  A: "x!4", B: "x ~ x ~ x!4",
})).gain(0.52)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@8 ~@8 A@8 ~@8 A@11 ~@33 A@10 ~@10 A@12>".pickRestart({
  A: "x!4",
})).gain(0.59)

// drums · crash
const crash = s("cr").struct("<~@52 [x!4]!7 [x!3 ~] [x!4]!16 ~@40>").gain(0.59)

stack(bassoon, electric_guitar_clean, bass, kick, snare, clap, hihat, open_hat, crash)

More by Romantics