Strudelify
You Might Think cover art

1984 · Heartbeat City

You Might Think

The Cars

KeyD majorTempo138 bpm
0:00/0:00
// You Might Think — The Cars
// 138 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "DISTORTION" piano (copy of ch 3 "OVERDRIVE" piano)
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): OVERDRIVE, DISTORTION.
setcpm(138/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 · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@67 A ~@3 B C D ~ E ~@29>".pickRestart({
  A: "~@9 [a4,e5] ~@6", B: "~@7 [b4,f#5]", C: "b4@4 f#5@6 e5@3 ~@3, f#5 ~ b4@2 ~@4", D: "[g4,d5] ~@3",
  E: "a4@3 a4@5, d5@3 ~@3 d5@6 ~@4",
})).s("gm_overdriven_guitar").gain(0.4).pan(1)

// other · string ensemble 1 · "OVERDRIVE"
const string_ensemble_1 = note("<~@26 A ~@20 B ~@43 C ~@5 D ~@7>".pickRestart({
  A: "~@2 b3@2 b3 a3!2 g3", B: "~@3 b4@2 a4@2 g4", C: "~@3 b4@2 a4!2 g4", D: "~@2 f#5 d5 e5 c#5@2 d5",
})).s("gm_string_ensemble_1").gain(0.4).pan(1)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C A@2 B C D E F A@2 B C A@2 B C A G B G B A B C D A B C A E A B C A@2 B C A G B G B A B C D A B C ~@14 A B C A@2 B
  C D E A@3 B C A ~@25
>`.pickRestart({
  A: "d2!8", B: "g2!8", C: "a2!8", D: "b2!8", E: "g2!4 a2!4", F: "f#3 e3 d3 b2 a2 f#2 e2 d2", G: "b2!4 a2!4",
})).s("gm_electric_bass_finger").gain(0.32).pan(0.6)

// bass · electric bass pick · "FINGERDBAS"
const bass_2 = note("<~@80 A B C A D B D B A B C E A B C A F E F G@2 ~@4>".pickRestart({
  A: "d2!8", B: "g2!8", C: "a2!8", D: "b2!4 a2!4", E: "b2!8", F: "g2!4 a2!4", G: "d2/2",
})).s("gm_electric_bass_pick").gain(0.37).pan(0.6)

// chords · piano · "OVERDRIVE"
const piano = note(`<
  ~@11 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J ~@2 A@2 B@2 C@2 D@2 K L M N G@2 H@2 I@2 J ~@54
>`.pickRestart({
  A: "[[a3,f#4] [a3,f#4]@2 [a3,f#4] [a3,e4] [a3,e4]@2 e4@2 [g3,d4]@6 d4]/2", // D A5 G5
  B: "[[a3,e4] [a3,e4]@2 [a3,e4]!2 [a3,d4]@2 [a3,d4]@9]/2", C: "[[a3,f#4]!3 [a3,f#4]@2 [a3,d4]@2 b3@2 [g3,d4]@6 d4]/2",
  D: "[[a3,e4] [a3,e4]@2 [a3,e4]@2 [a3,d4]@2 [a3,d4]@7 f#4 e4]/2", E: "[[f#3,d4]@4 [f#3,c#4] a3!2 b3@2 ~@5 f#4 e4]/2",
  F: "[[f#3,d4]@2 [f#3,d4]@2 [e3,c#4] a3@2 b3@2 ~@7]/2", // D C#m
  G: "[[a3,f#4] [a3,f#4]@2 [a3,f#4]@2 [a3,e4]@2 e4@2 d4 [g3,b3]@5 a3]/2", // D A5 G
  H: "[[a3,f#4] [a3,f#4]@2 [a3,f#4]@2 [a3,d4]@2 [f#3,b3]@9]/2", // D D5 B5
  I: "[[a3,f#4] [a3,f#4]@2 [a3,f#4]@2 [a3,e4]@2 e4@2 [g3,d4,f#4]@6 ~]/2", // D A5 Gmaj7
  J: "[a3,e4] [a3,e4]@2 [a3,f#4]!2 [a3,d4]@2 [a3,d4]", K: "[f#3,d4]@4 [f#3,c#4] a3!2 b3", L: "b3 ~@5 f#4 e4",
  M: "[f#3,d4]@2 [f#3,d4]@2 [e3,c#4] a3@2 b3", N: "b3 ~@7",
})).s("gm_piano").gain(0.2)

// chords · piano · "OVERDRIVE" · D5 A5 D5 G5 Em G5 A5 F#m …
const piano_2 = note(`<
  [~ [d3,a3]!3 [e3,a3] [d3,a3] ~@2]
  [~ [d3,g3]!3 [e3,g3] [d3,g3] ~@2]
  [~ [e3,a3]!3 [f#3,a3] [e3,a3] ~@2]
  [~ [d3,a3]!3 [e3,a3] [d3,a3] [c#3,a3] [d3,a3]]
  ~@101
>`).s("gm_piano").gain(0.46)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note(`<
  ~@4 A B C D ~@2 E ~@19 A F ~@29 G ~ H I A B C A@2 B C D ~@3 J K L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T U F V W@3 ~@4
>`.pickRestart({
  A: "~ [d3,a3]!3 [e3,a3] [d3,a3] ~@2", B: "~ [d3,g3]!3 [e3,g3] [d3,g3] ~@2", C: "~ [e3,a3]!3 [f#3,a3] [e3,a3] ~@2",
  D: "~ [d3,a3]!3 [e3,a3] [d3,a3] [c#3,a3] [d3,a3]", E: "~@3 [a2,d3]@5",
  F: "~ [d3,g3]!3 [e3,a3] [d3,a3] [c#3,a3] [d3,a3]", G: "[d3,g3,b3,d4] ~@7", H: "[e3,a3,c#4,e4] ~@7", I: "[a3,a4]",
  J: "[a3,f#4] [a3,f#4]@2 [a3,f#4] [a3,e4] [a3,e4]@2 e4", K: "e4 [g3,d4]@6 d4",
  L: "[[a3,e4] [a3,e4]@2 [a3,e4]!2 [a3,d4]@2 [a3,d4]@9]/2", M: "[[a3,f#4]!3 [a3,f#4]@2 [a3,d4]@2 b3@2 [g3,d4]@6 d4]/2",
  N: "[[a3,e4] [a3,e4]@2 [a3,e4]@2 [a3,d4]@2 [a3,d4]@7 f#4 e4]/2", O: "[[f#3,d4]@4 [f#3,c#4] a3!2 b3@2 ~@5 f#4 e4]/2",
  P: "[[f#3,d4]@2 [f#3,d4]@2 [e3,c#4] a3@2 b3@2 d3@7]/2", // D C#m
  Q: "[[a3,f#4] [a3,f#4]@2 [a3,f#4]@2 [a3,e4]@2 e4@2 d4 [g3,b3]@5 a3]/2", // D A5 G
  R: "[[a3,f#4] [a3,f#4]@2 [a3,f#4]@2 [a3,d4]@2 [f#3,b3]@9]/2", // D D5 B5
  S: "[[a3,f#4] [a3,f#4]@2 [a3,f#4]@2 [a3,e4]@2 e4@2 [g3,d4,f#4]@6 ~]/2", // D A5 Gmaj7
  T: "[a3,e4] [a3,e4]@2 [a3,f#4]!2 [a3,d4]@2 [a3,d4]", U: "[a2,d3] [d3,a3]!3 [e3,a3] [d3,a3] [c#3,a3] [d3,a3]",
  V: "~ [d3,f#3,b3]!3 [e3,f#3,b3] [d3,f#3,b3] [c#3,f#3,b3] [b2,f#3,b3]", // Bm Esus2 Bm F#sus4 B5
  W: "[~ [d3,g3]!3 [e3,a3] [d3,a3] [c#3,a3] [d3,a3]@17]/3", // G5 A5 D5 F#m D5
})).s("gm_overdriven_guitar").gain(0.46)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~@8 A@2 B ~@62 C ~@31>".pickRestart({
  A: "[~ [d3,g3]!3 [e3,a3] [d3,a3] [c#3,a3] [d3,a3]@9]/2", B: "[a2,d3] ~@7",
  C: "~ [d3,g3]!3 [e3,a3] [d3,a3] [c#3,a3] [d3,a3]", // G5 A5 D5 F#m D5
})).s("gm_overdriven_guitar").gain(0.18)

// other · distortion guitar · "OVERDRIVE" · D5 D
const distortion_guitar = note(`<
  ~@74
  [[d4,a4]@4 f#4@2 e4@2 d4@2 ~ f#3 e3@2 d3@2, ~@5 b3 ~@2]
  [f#3 a3 b3 [d4,f#4]@5]
  ~@29
>`).s("gm_distortion_guitar").gain(0.4)

// bass · synth bass 1 · "SYN BASS 1"
const bass_3 = note("<A B C D E F G H ~@57 E F G E@2 F G H ~ I ~@30>".pickRestart({
  A: "~ [d2,d3,a3]!3 [e2,e3,a3] [d2,d3,a3] ~@2", B: "~ [d2,d3,g3]!3 [e2,e3,g3] [d2,d3,g3] ~@2",
  C: "~ [e2,e3,a3]!3 [f#2,f#3,a3] [e2,e3,a3] ~@2", D: "~ [d2,d3,a3]!3 [e2,e3,a3] [d2,d3,a3] [c#2,c#3,a3] [d2,d3,a3]",
  E: "~ [d2,a2]!3 [e2,a2] [d2,a2] ~@2", F: "~ [d2,g2]!3 [e2,g2] [d2,g2] ~@2", G: "~ [e2,a2]!3 [f#2,a2] [e2,a2] ~@2",
  H: "~ [d2,a2]!3 [e2,a2] [d2,a2] [c#2,a2] [d2,a2]", I: "[d3,a3] ~@3",
})).s("gm_synth_bass_1").gain(0.46)

// bass · synth bass 1 · "SYN BASS 1" · soft notes
const bass_soft = note("<~@8 A@2 B ~@62 C D E ~@29>".pickRestart({
  A: "[~ [d2,g2]!3 [e2,a2] [d2,a2] [c#2,a2] [d2,a2]@9]/2", B: "[a1,d2] ~@2 [a1,d2]@5",
  C: "~ [d2,g2]!3 [e2,a2] [d2,a2] [c#2,a2] [d2,a2]", D: "~@4 f#3@2 e3@2 d3@2 ~ f#2 e2@2 d2@2, ~@5 b2 ~@2",
  E: "f#2 a2 b2 [d3,f#3]@5", // D
})).s("gm_synth_bass_1").gain(0.18)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note("<~@7 A ~ B ~@54 C ~@7 A ~ D E ~@29>".pickRestart({
  A: "~ f#3!6 [b2,f#3]", B: "a3, d3 ~@7", C: "e4", D: "[d3,a3]", E: "[a2,d3] ~@2 [a2,d3]@5",
})).s("gm_distortion_guitar").gain(0.46).pan(0.1)

// other · blown bottle · "SQUAREWAVE"
const blown_bottle = note("<~@52 A B C@2 D E F@2 ~@45>".pickRestart({
  A: "~@5 d5!2 a4", B: "b4 ~@3", C: "[~@2 d5 c#5@3 a4 d4@3 ~@6]/2", D: "~ d5 e5 c#5", E: "d5 ~@3",
  F: "[~@2 b4 a4@3 e4 f#4@3 ~@6]/2",
})).s("gm_blown_bottle").gain(0.37)

// other · melodic tom · "SQUAREWAVE"
const melodic_tom = note("<~@61 [~ f#4 f#4@2 f#4!4] [~@2 f#4!4 f#4@2] [~@3 f#4!3 ~@2] [f#4!2 ~@6] ~@40>")
  .s("gm_melodic_tom").gain(0.59)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@20 A@8 B@8 ~@5 A@8 B@8 ~@28 A@8 B@8 ~@4>".pickRestart({
  A: "[~ d3 e3 f#3 e3 d3 c#3 b2@10 d3 e3 f#3 e3 d3 c#3 b2@10 d3 e3 f#3 e3 d3 c#3 b2@10 b2 d3 e3 f#3 e3 d3 b2@9]/8",
  B: "[~ d3 e3 f#3 e3 d3 c#3 b2@57]/8",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.1)

// other · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@51 A@2 B C B C B C B C D ~ E F ~@40>".pickRestart({
  A: "d3/2", B: "b3", C: "g3 a3", D: "[g3,d4,g4,b4] ~@7", E: "[a3,e4,a4,c#5] ~@7", F: "~ b2 c3 c#3",
})).s("gm_pad_sweep").gain(0.54).pan(0.9)

// drums · kick
const kick = s("bd").struct("<[x!8]!61 ~@4 [x!8]!25 [x ~@2 x!2 ~@3]!9 x ~@5>").gain(0.37)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!61 ~@4 [~ x ~ x]!11 [x!2 ~ x] [~ x ~ x]!22 x ~@5>").gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!61 ~@4 [x!8]!34 x ~@5>").gain(0.37)

// drums · open hat
const open_hat = s("oh").struct("<~@76 x ~@22 x ~@5>").gain(0.46)

// drums · crash
const crash = s("cr").struct("<~@8 A@2 B ~@62 A@2 B A ~@22 A ~@5>".pickRestart({
  A: "x", B: "x ~ x!2 ~@4",
})).gain(0.46)

// drums · ride
const ride = s("rd").struct("<~@8 A ~@64 A ~@2 A ~@22 A ~@5>".pickRestart({
  A: "x",
})).gain(0.46)

// drums · shaker
const shaker = s("sh").struct("<[x!8]!61 ~@4 [x!8]!25 ~@15>").gain(0.46)

stack(
  overdriven_guitar, string_ensemble_1, bass, bass_2, piano, piano_2, overdriven_guitar_2, overdriven_guitar_soft,
  distortion_guitar, bass_3, bass_soft, distortion_guitar_2, blown_bottle, melodic_tom, electric_guitar_clean,
  pad_sweep, kick, snare, hihat, open_hat, crash, ride, shaker
)

More by The Cars