Strudelify
Radar Love cover art

1973 · Moontan

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, A@4 for four bars: 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 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 P Q P Q P Q P Q P Q P Q P Q P Q R
  S ~@8 T U V W T U V W T U V W T U V W T X Y Z T X AA AB@8 ~ AC 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 I@2 J K I@2 J@2 L@2 M@2 N@2 M@2 I AD M@2 N@2 M@2 I AE P Q P Q P Q P Q P Q P Q
  P Q P Q AF
>`.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: "~ g1@3 ~ g1@3 g1@4 g1@4 ~ g1@3 g1@3 ~", S: "g1 ~@5", T: "c1@3 eb1@3 gb1@2", U: "f1", V: "c1@3 eb1@3 f1@2",
  W: "c1 ~@7", X: "f1@3 gb1@3 g1@2", Y: "bb1@3 b1@3 c2@2", Z: "f1 ~@7", AA: "eb1@3 f1@3 g1@2", AB: "bb0/8",
  AC: "~@11 bb0", AD: "c1!6", AE: "bb0 ~@5", AF: "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@32 I J H@3 K H@4 L M H@6 N O H@30 I P H@3 K H@4 L M H@6 Q R H@44 S T H S@2 T U@2 H I U@11 H V
  R W X H X H X H X H I H I H I H U H I H Y H I H R H I H U H I Z ~@2 S H S U S H S U H@19 AA H AA H AA H@3 AB H AA H@3
  AA AC ~ H AA H@3 AA H@3 AA AD AE H@3 AF H@2 U AG AH AI H@2 AA L H@2 AJ AK H@2 AA AL H AA AM ~ H@5 AN AO AP AO AP AO AP
  AO AP AO AP R
>`.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: "~ x ~ x", I: "~@3 x ~@5 x ~ x", J: "~ x!9 ~ x", K: "~@3 x ~@4 x!4", L: "~@3 x ~@4 x ~@3",
  M: "~@6 x!3 ~@3", N: "x ~ x!2 ~ x ~@2 x ~@2 x", O: "x ~@2 x", P: "~ x!9 ~@2", Q: "x!6 ~ x!2 ~ x!2", R: "x",
  S: "~@3 x", T: "~@9 x!3", U: "~ x ~@2", V: "x ~@4 x ~@2 x ~@3 x ~@4 x ~@2 x ~@3", W: "x!2 ~ x",
  X: "~@3 x ~ x ~@3 x ~ x", Y: "~@6 x ~@10 x!2 ~@3 x ~", Z: "~@6 x ~@11 x!2 ~@4", AA: "~@3 x ~@4 x!2 ~@2",
  AB: "~@2 x ~@5 x!2 ~@2", AC: "~@3 x ~@7 x", AD: "~@3 x ~@4 x ~@2 x", AE: "~@2 x ~@3 x!6", AF: "~@2 x ~@5 x!4",
  AG: "x!3 ~ x ~@7", AH: "~ x ~ x!2 ~@2 x ~ x!2 ~", AI: "x ~ x!2 ~ x ~@6", AJ: "x ~ x!10", AK: "x!6",
  AL: "~@3 x ~@3 x!2 ~@3", AM: "~ x ~ x!2 ~@7", AN: "~@3 x ~@5 x!3", AO: "x!2 ~ x ~@6 x!2", AP: "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