Strudelify
Radar Love cover art

1989 · The Continuing Story Of Radar Love

Radar Love

Golden Earring

KeyC minorTempo200 bpm
0:00/0:00
// Radar Love — Golden Earring
// 200 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 329 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@5 B@3 C@7 D@8 ~@6 E F E G E F E G E F E G E F E G E F E G E F E G E F E G E F E H I@2 J K I@2 J@2 L@2 M@2 N@2 M@2 I
  O H F E G E F E G E F E G E F E G E F E G E F E G E F E G E F E H I@2 J K I@2 J@2 L@2 M@2 N@2 M@2 I O P Q P Q P R P Q
  P Q P Q P Q P Q P Q P S P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q P Q T
  U ~@8 V W X Y V W X Y V W X Y V W X Y V Z AA AB V Z AC AD@8 ~ AE H F E G E F E G E F E G E F E G E F E G E F E G E F E
  G E F E G E F E G E F E G E F E G E F E G AF I J K I@2 J@2 L@2 M@2 N@2 M@2 I AG M@2 N@2 M@2 I AH P Q P Q P Q P Q P Q P
  Q P Q P Q AI
>`.pickRestart({
  A: "[~@18 g1@13 bb1@15 c2@61 g1@13]/5", B: "[~ bb1@14 f1@57]/3",
  C: "[~@4 g1@14 bb1@14 c2@13 eb2@15 bb1@50 eb1@28 f1@30]/7", D: "[~ bb0@95]/8", E: "bb0@3 c1@2 ~ c1@2 ~ c1@2 ~",
  F: "c1@4 ~@2 c1@4 ~@2 c1@3 ~ eb1@8", G: "c1@4 ~@2 c1@4 ~@2 c1@3 ~ bb0@8", H: "c1@2 ~ c1@2 ~ c1@2 ~ c1@2 ~",
  I: "bb0!4", J: "f1!4", K: "c1!4", L: "g1!4", M: "[ab1@2 ab1@2 ab1@2 ab1 eb1@3 eb1@2 eb1@2 eb1@2]/2",
  N: "[bb0@2 bb0@2 bb0@2 bb0 c1@3 c1@2 c1@2 c1@2]/2", O: "bb0 ~@23", P: "c1 eb1 c1 eb1", Q: "c1@2 c1 eb1@2 c1@4 bb0@3",
  R: "c1@4 c1@2 eb1@4 ~ c1@7 bb0@6", S: "c1@4 ~ c1 eb1@4 c1@8 bb0@6", T: "~ g1@3 ~ g1@3 g1@4 g1@4 ~ g1@3 g1@3 ~",
  U: "g1 ~@5", V: "c1@3 eb1@3 gb1@2", W: "f1", X: "c1@3 eb1@3 f1@2", Y: "c1 ~@7", Z: "f1@3 gb1@3 g1@2",
  AA: "bb1@3 b1@3 c2@2", AB: "f1 ~@7", AC: "eb1@3 f1@3 g1@2", AD: "bb0/8", AE: "~@11 bb0",
  AF: "bb0@6 bb0@6 bb0@5 ~ bb0@6", AG: "c1!6", AH: "bb0 ~@5", AI: "c1 ~@3",
})).s("gm_electric_bass_finger").gain(0.72)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@137 A@2 B@2 C D E F G ~@183>".pickRestart({
  A: "eb5 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5",
  B: "d5 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5",
  C: "[f4,d5] ~ [f4,d5]!2 ~ [f4,d5]!2 ~ [f4,d5]!2 ~ [f4,d5] d5 ~ f4 d5 ~ f4 d5 ~ f4 d5 ~ f4", // Dm
  D: "d5 ~ f4 d5 ~ f4 d5 ~ f4 d5 ~ f4 d5 ~ f4 d5 ~ f4 d5 ~ f4 d5 ~ f4",
  E: "c5 ~ g4 c5 ~ g4 c5 ~ g4 c5 ~ g4 c5 ~ g4 c5 ~ g4 c5 ~ g4 c5 ~ g4",
  F: "c5 ~ g4 c5 ~ g4 c5 ~ g4 c5 ~ g4!2 ~ bb4 g4 ~ bb4 g4 ~ bb4 g4 ~ bb4", G: "c5 ~ g4 c5 ~@20",
})).s("gm_string_ensemble_1").gain(0.52).pan(0.6)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@71 A@2 B@2 A@2 C ~@43 A@2 B@2 A@2 C ~@9 D@2 E@4 F@2 G ~@31 H@4 I@4 ~@28 J K L M N O P Q R S T U V W X Y@8 ~@60 A@2
  B@2 A@2 C Z A@2 B@2 A@2 AA ~@7 AB@8 AC@3
>`.pickRestart({
  A: "[eb5@22 ~ [g4,bb4,eb5]@25]/2", B: "[[d5,f5]@22 ~ [c5,e5,g5]@25, bb4 ~@47]/2", C: "[d5,f5], bb4 ~@23", D: "eb5/2",
  E: "[~ d5, eb5]/4", F: "[c5@3 bb4, f4]/2", G: "c5 ~@5",
  H: "[~@40 db3 ~@23 d3 ~@23 eb3 ~@3 eb5@4, c3@7 ~ c3@8 c3@8 db3@7 ~ db3@8 ~@8 d3@7 ~ d3@8 ~@8 eb3@7 ~ eb3@8 ~@8, ~@4 c5@8 c5@7 ~ c5@8 db5@7 ~ db5@8 db5@8 d5@8 d5@7 ~ d5@8 eb5@8 eb5@8 ~@4]/4",
  I: "[c3,c5]/4", J: "eb3@9 g3@9 ~ bb3@5", K: "a3", L: "eb3@3 g3@3 a3@2", M: "eb3 ~@7", N: "eb5@3 g5@3 bb5@2", O: "a5",
  P: "eb5@3 g5@3 a5@2", Q: "eb5 ~@7", R: "c4@3 eb4@3 gb4@2", S: "f4@3 gb4@3 g4@2", T: "bb4@3 b4@3 c5@2", U: "f4 ~@7",
  V: "c5@3 eb5@3 gb5@2", W: "f5@3 gb5@3 g5@2", X: "eb5@3 f5@3 g5@2", Y: "[f2,bb2]/8", Z: "[c5,e5,g5]",
  AA: "[bb4,d5,f5]", AB: "[~ c4, c2]/8", AC: "[c6@17 ~@7]/3",
})).s("gm_synth_brass_1").gain(0.44).pan(0.4)

// chords · synth brass 1 · "SYNBRASS 1" · soft notes
const synth_brass_1_soft = note("<~@71 A ~@3 B ~@45 A ~@3 A ~@15 C@2 D@3 ~@150 A ~@3 B ~@3 A ~@3 B ~@20>".pickRestart({
  A: "[ab4,c5]@11 ~", B: "ab4@11 ~, c5 ~@23", C: "f4/2", D: "[g4@13 ~@5]/3",
})).s("gm_synth_brass_1").gain(0.27).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B ~@2 C D ~@2 E F G ~ H A ~ I ~@8 J ~ K ~ L M ~ M ~ M N M N O P O P O P O Q O P O Q O P O Q O P O Q O P O M Q@3 O
  Q@3 R O S Q T Q U Q T M@2 O P O P O P O Q O P O Q O P O Q O P O Q O P O Q O P O Q O P O M Q@3 O Q@3 R O S Q T Q U Q T
  M V O W O W O W X Y Q Y Q Y Z Y Z Y Z Y Z Y Q Y Z Y Q Y Z Y Q Y Z Y Q Y Z Y Z Y Z Y Q Y Z Y M@2 Q AA M AA M X Q AB AC
  X O AD O AD O AD O AD O AD AE M O@31 M ~ AF L AF L AF L AF L M L M L M L M L M L M L M L M L M L M L M L M L M L M AG
  M L M L M L M L M L M L M L M L M L M ~ Q@3 O Q@2 O M O AH Q T P G Q T M AI Q T P G Q G ~ M O AD X AJ X AK AH@10 M
>`.pickRestart({
  A: "~@3 x", B: "~@7 x ~@14 x ~", C: "~@11 x ~@12", D: "~ x ~@13 x ~@8", E: "~@2 x ~@6 x ~@2", F: "~@8 x ~@12 x ~@2",
  G: "~ x", H: "~@7 x ~@4", I: "~ x ~@10", J: "~@11 x ~@2 x ~@9", K: "~@21 x ~ x", L: "~@11 x", M: "x",
  N: "~@8 x ~@2 x", O: "x!2", P: "x ~@5 x ~@4 x", Q: "x ~@5 x ~ x ~@2 x", R: "x ~ x ~@2 x!2 ~ x ~@2 x", S: "x!3 ~",
  T: "~@3 x!2 ~", U: "~@6 x ~ x ~@2 x", V: "x ~@10 x", W: "x ~@4 x ~@5 x", X: "x ~@2 x!2 ~",
  Y: "x ~ x ~@2 x ~@2 x ~@2 x", Z: "x ~@4 x!2 ~ x ~@2 x", AA: "x ~ x", AB: "x ~ x ~@2 x ~@6", AC: "x ~@4 x!2 ~ x ~@3",
  AD: "x ~@4 x ~@6", AE: "x ~@4 x ~@2 x ~@3 x ~@4 x ~@2 x ~@3", AF: "x ~@4 x ~@2 x ~@3", AG: "~@3 x ~@7 x", AH: "x!4",
  AI: "x!6", AJ: "x ~ x ~@2 x ~@5 x", AK: "x ~ x ~@2 x ~@2 x ~@3",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@18 A B C D E A F B G H I@31 J K I@3 L I@4 M N I@6 O P I@30 J Q I@3 L I@4 M N I@6 R S I@44 T U I T@2 U V@2 I J V@11 I
  W S X Y I Y I Y I Y I J I J I J I V I J I Z I J I S I J I V I J AA ~@2 T I T V T I T V I@19 AB I AB I AB I@3 AC I AB
  I@3 AB AD ~ I AB I@3 AB I@3 AB AE AF I@3 AG I@2 V AH AI AJ I@2 AB M I@2 AK AL I@2 AB AM I AB AN ~ I@5 AO AP AQ AP AQ
  AP AQ AP AQ AP AQ S
>`.pickRestart({
  A: "~@7 x ~@4", B: "~@13 x ~@10", C: "~@11 x ~@12", D: "~ x ~", E: "~ x ~@5 x", F: "~@7 x ~@14 x ~",
  G: "~@3 x ~@12 x ~@7", H: "~@5 x ~@12 x ~@5", I: "~ x ~ x", J: "~@3 x ~@5 x ~ x", K: "~ x!9 ~ x", L: "~@3 x ~@4 x!4",
  M: "~@3 x ~@4 x ~@3", N: "~@6 x!3 ~@3", O: "x ~ x!2 ~ x ~@2 x ~@2 x", P: "x ~@2 x", Q: "~ x!9 ~@2",
  R: "x!6 ~ x!2 ~ x!2", S: "x", T: "~@3 x", U: "~@9 x!3", V: "~ x ~@2", W: "x ~@4 x ~@2 x ~@3 x ~@4 x ~@2 x ~@3",
  X: "x!2 ~ x", Y: "~@3 x ~ x ~@3 x ~ x", Z: "~@6 x ~@10 x!2 ~@3 x ~", AA: "~@6 x ~@11 x!2 ~@4",
  AB: "~@3 x ~@4 x!2 ~@2", AC: "~@2 x ~@5 x!2 ~@2", AD: "~@3 x ~@7 x", AE: "~@3 x ~@4 x ~@2 x", AF: "~@2 x ~@3 x!6",
  AG: "~@2 x ~@5 x!4", AH: "x!3 ~ x ~@7", AI: "~ x ~ x!2 ~@2 x ~ x!2 ~", AJ: "x ~ x!2 ~ x ~@6", AK: "x ~ x!10",
  AL: "x!6", AM: "~@3 x ~@3 x!2 ~@3", AN: "~ x ~ x!2 ~@7", AO: "~@3 x ~@5 x!3", AP: "x!2 ~ x ~@6 x!2",
  AQ: "x ~@2 x!2 ~@4 x ~@2",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@18 A B C D E F G H I J K@31 L M ~@9 N ~@5 O P ~@5 K@26 L M ~@9 N ~@5 O ~@69 Q ~@11 R ~@11 S ~@63 T U ~@9 V ~@6 W
  ~@26
>`.pickRestart({
  A: "~ x ~@7 x ~@11 x ~@2", B: "~@2 x ~@6 x ~@10 x ~@3", C: "x ~@6 x ~@10 x ~@3 x ~", D: "~@4 x ~@9 x ~@2 x ~@5 x",
  E: "~@3 x!2 ~ x ~", F: "~@3 x ~@2 x ~@4 x ~@7 x ~@2 x ~", G: "~@4 x ~@6 x ~@2 x ~@4 x ~@4",
  H: "~@3 x ~@2 x ~@3 x ~@6 x ~@2 x ~@3", I: "x ~@6 x ~@2 x ~@3 x ~@6 x ~ x", J: "~@3 x ~@5 x ~@2 x ~@3 x ~@5 x ~",
  K: "x ~ x ~@2 x!2 ~ x ~@2 x", L: "x ~ x ~@2 x!2 ~ x ~@3", M: "x", N: "~@5 x ~@6", O: "~@11 x",
  P: "~ x ~@2 x ~@2 x ~@2 x ~", Q: "~@22 x!2", R: "~@17 x ~@6", S: "~@2 x!2 ~ x!2 ~ x ~@2 x!2 ~ x!2 ~ x ~@2 x!2 ~ x",
  T: "~@9 x!2 ~", U: "x!2 ~ x!3 ~@6", V: "~ x ~@2 x ~@7", W: "~ x ~@10",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@70 A ~@6 B ~@32 C ~@9 A ~@6 B ~@45 D@2 ~ D@3 E@2 ~@2 F@2 E@9 ~@3 G H G H G I G I G@7 J G@3 K G@3 B G@3 J G@3 ~@61 L
  ~@3 F M F ~@3 C ~@7 C ~ C F ~@7 N O N O N O N O N O P
>`.pickRestart({
  A: "~@10 x!2", B: "~@3 x", C: "~@11 x", D: "~@3 x ~ x ~@6", E: "~@9 x ~ x", F: "~@9 x!3", G: "~@5 x ~@2 x ~@3",
  H: "~@12 x ~@3 x!2 ~@6", I: "~@3 x!2 ~", J: "x ~@5 x ~@2 x ~ x", K: "x ~@4 x ~@2 x ~@3", L: "~ x!2 ~",
  M: "~@6 x ~ x ~@2 x", N: "~@4 x!3 ~@5", O: "~@2 x ~@2 x ~@2 x ~@2 x", P: "x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@78 [~ x ~@2] ~@49 [~ x ~ x] ~@67 [~ x ~ x]!31 [~ x ~@2] ~@101>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@69 A B ~@6 C ~@32 D ~@8 A B ~@6 C ~@69 E F G F G F G F G H G H G H G I G H G J G H G K G H G I G H@2 ~@25 L ~@18 C M
  ~@18 N O P Q ~@3 D ~@7 D ~ D Q ~@7 R S R S R S R S R S ~
>`.pickRestart({
  A: "~@3 x", B: "x ~@2 x", C: "~ x", D: "~@5 x", E: "x ~@10 x", F: "~ x ~@4", G: "x ~ x ~@8 x", H: "x!2 ~@4",
  I: "~@2 x ~@2 x ~@6", J: "~ x ~ x ~@2", K: "~@3 x ~@4", L: "~@2 x", M: "~@3 x ~@4 x ~@3", N: "~@6 x ~@4 x",
  O: "~@3 x ~ x!4 ~@3", P: "x ~ x ~@2 x ~@6", Q: "~@6 x!3 ~@3", R: "~@3 x ~@3 x!2 ~@3", S: "~ x ~@4 x ~@3 x ~",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@209 A ~ A B ~@4 A ~ A ~ A ~ A B A ~ A ~@71 C ~@7 C ~@2 D ~@7 E F E F E F E F E F ~
>`.pickRestart({
  A: "~ x", B: "~@2 x", C: "~@3 x", D: "x ~ x ~@2 x ~@6", E: "~@2 x ~@6 x ~@2", F: "~@7 x ~@4",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  A B ~@2 C D ~@2 E F G ~ H A ~ I ~@27 J ~@27 K ~ L ~ K ~@17 J ~@27 K ~ L ~ K ~@53 M ~@37 J ~@3 J ~@3 J ~@2 J ~@23 J
  ~@33 J ~@9 K ~ K ~ K ~ J ~ K ~ K ~ K ~@2 J ~@6 N@10 J
>`.pickRestart({
  A: "~@3 x", B: "~@7 x ~@14 x ~", C: "~@11 x ~@12", D: "~ x ~@13 x ~@8", E: "~@2 x ~@6 x ~@2", F: "~@8 x ~@12 x ~@2",
  G: "~ x", H: "~@7 x ~@4", I: "~ x ~@10", J: "x", K: "x ~@10 x", L: "~@11 x", M: "~ x ~@2", N: "x!2",
})).gain(0.56)

// drums · ride bell
const ride_bell = s("rd").struct("<~@185 [x!4]!10 ~@134>").gain(0.4)

stack(
  bass, string_ensemble_1, synth_brass_1, synth_brass_1_soft, kick, snare, snare_soft, low_tom, hihat, mid_tom,
  high_tom, crash, ride_bell
)

More by Golden Earring