Strudelify
Automatic Lover (Call for Love) cover art

1995 · Another Night

Automatic Lover (Call for Love)

Real McCoy

KeyF minorTempo133 bpm
0:00/0:00
// Automatic Lover (Call for Love) — Real McCoy
// 133 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "Lead 8 (brass + lead)" named as a brass, played on brass section (its lead 8 bass lead patch is not one)
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/4)

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

// other · lead 2 sawtooth · "Lead 2 (sawtooth)"
const lead_2_sawtooth = note(`<
  A B C B A B C B ~@21 A B C B A B C B ~@17 A B C B A B C B A B C B ~@16 A B C B ~@38
>`.pickRestart({
  A: "g3!2 ~@2 g3!2 ~@2 g3!2 ~@2 g3!2 ~@2", B: "f3!2 ~@2 f3!2 ~@2 f3!2 ~@2 f3!2 ~@2",
  C: "eb3!2 ~@2 eb3!2 ~@2 eb3!2 ~@2 eb3!2 ~@2",
})).s("gm_lead_2_sawtooth").gain(0.8)

// chords · piano · "Bright Acoustic Piano"
const piano = note("<~@66 A B C B A B C B ~@50>".pickRestart({
  A: "g2@2 [g2,g4,bb4,d5]@2 [g2,g4,bb4,d5]@2 g2@2 [g2,g4,bb4,d5] [g2,g4,bb4,d5]@2 ~ [g2,g4,bb4,d5]@2 [g2,g4,bb4,d5]@2", // Gm
  B: "f2@2 [f2,f4,a4,c5]@2 [f2,f4,a4,c5]@2 f2@2 [f2,f4,a4,c5] [f2,f4,a4,c5]@2 ~ [f2,f4,a4,c5]@2 [f2,f4,a4,c5]@2", // F
  C: "eb2@2 [eb2,eb4,g4,bb4]@2 [eb2,eb4,g4,bb4]@2 eb2@2 [eb2,eb4,g4,bb4] [eb2,eb4,g4,bb4]@2 ~ [eb2,eb4,g4,bb4]@2 [eb2,eb4,g4,bb4]@2", // Eb
})).s("gm_piano").gain(0.8)

// other · lead 2 sawtooth · "Lead 2 (sawtooth)"
const lead_2_sawtooth_2 = note("<A B C A@2 B C A ~@46 A B C A@2 B C A@2 B C A ~@58>".pickRestart({
  A: "~ f4 g4 f4 ~ f4 g4 f4", B: "~@2 f4@2 g4@2 f4@2 ~@2 f4@2 g4@2 f4 eb4", C: "eb4 f4 g4 f4 ~ f4 g4 f4",
})).s("gm_lead_2_sawtooth").gain(0.8)

// other · synth brass 1 · "Synth Brass1"
const synth_brass_1 = note(`<
  ~@4 A B C B ~ A B C B A B C B A B C B A B C B ~@12 A B C B A B C B ~ A B C B A B C B ~@66 D ~@3
>`.pickRestart({
  A: "g2 g3 g2 g3 g2 g3 g2 g3", B: "f2 f3 f2 f3 f2 f3 f2 f3", C: "eb2 eb3 eb2 eb3 eb2 eb3 eb2 eb3",
  D: "g2 g3 g2 g3 g2 ~@3",
})).s("gm_synth_brass_1").gain(0.8)

// other · synth brass 1 · "Synth Brass1" · soft notes
const synth_brass_1_soft = note(`<
  ~@86 A B C B A B C B ~ A B C B A B C B A B C B A B C B ~ A B C B A B C B D B C B
>`.pickRestart({
  A: "g2 g3 g2 g3 g2 g3 g2 g3", B: "f2 f3 f2 f3 f2 f3 f2 f3", C: "eb2 eb3 eb2 eb3 eb2 eb3 eb2 eb3", D: "~@5 g3 g2 g3",
})).s("gm_synth_brass_1").gain(0.48)

// bass · synth bass 2
const bass = note(`<
  ~@9 A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B ~ A B C B A B C B ~@20 A B C B A B C B A B
  C B ~@34 D ~@3
>`.pickRestart({
  A: "g2!2 ~@2 g2!2 ~@2 g2!2 ~@2 g2!2 ~@2", B: "f2!2 ~@2 f2!2 ~@2 f2!2 ~@2 f2!2 ~@2",
  C: "eb2!2 ~@2 eb2!2 ~@2 eb2!2 ~@2 eb2!2 ~@2", D: "g2!2 ~@14",
})).s("gm_synth_bass_2").gain(0.4)

// bass · synth bass 2 · soft notes
const bass_soft = note(`<
  ~@86 A B C B A B C B ~ A B C B A B C B A B C B A B C B ~ A B C B A B C B D B C B
>`.pickRestart({
  A: "g2!2 ~@2 g2!2 ~@2 g2!2 ~@2 g2!2 ~@2", B: "f2!2 ~@2 f2!2 ~@2 f2!2 ~@2 f2!2 ~@2",
  C: "eb2!2 ~@2 eb2!2 ~@2 eb2!2 ~@2 eb2!2 ~@2", D: "~@4 g2!2 ~@2 g2!2 ~@2 g2!2 ~@2",
})).s("gm_synth_bass_2").gain(0.24)

// bass · synth bass 1
const bass_2 = note(`<
  ~@9 A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B ~ A B C B A B C B ~@4 A B C B A B C B A B
  C B A B C B A B C B A B C B A B C B ~@34 D ~@3
>`.pickRestart({
  A: "g1@2 g2!2 g1@2 g2!2 g1@2 g2!2 g1@2 g2!2", B: "f1@2 f2!2 f1@2 f2!2 f1@2 f2!2 f1@2 f2!2",
  C: "eb1@2 eb2!2 eb1@2 eb2!2 eb1@2 eb2!2 eb1@2 eb2!2", D: "g1@2 g2!2 g1@2 g2!2 g1@2 ~@6",
})).s("gm_synth_bass_1").gain(0.6)

// bass · synth bass 1 · soft notes
const bass_soft_2 = note(`<
  ~@86 A B C B A B C B ~ A B C B A B C B A B C B A B C B ~ A B C B A B C B D B C B
>`.pickRestart({
  A: "g1@2 g2!2 g1@2 g2!2 g1@2 g2!2 g1@2 g2!2", B: "f1@2 f2!2 f1@2 f2!2 f1@2 f2!2 f1@2 f2!2",
  C: "eb1@2 eb2!2 eb1@2 eb2!2 eb1@2 eb2!2 eb1@2 eb2!2", D: "~@10 g2!2 g1@2 g2!2",
})).s("gm_synth_bass_1").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B C B C B C B C B C B C B C B ~ B C B C B C B C B C B C B C B C B C B C A B C B C B C B C ~@4 B C B C B C B ~ B
  C B C B C B C B C B C B C B C B C B C B C B C B C B ~ A B C B C B C B ~ B C B C B C B C A B C B C B C B C B C B C
>`.pickRestart({
  A: "x", B: "x!4", C: "x ~ x ~ x ~ x!2",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A@3 B A@3 C ~@4 A@3 B A@3 B A@3 B A@3 B ~ A@3 B A@3 B ~@11 C A@3 B A@3 B ~@8 A@3 B ~@7 C ~@8 C ~@17 A ~@3
>`.pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@4 x ~ x ~@5 x ~ x!2", C: "x!16",
})).gain(0.5)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@86 A@3 B A@3 ~@2 A@3 B A@3 ~ A@3 B A@3 B ~@10 A@2 B>".pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@4 x ~ x ~@5 x ~ x!2",
})).gain(0.3)

// drums · clap
const clap = s("cp").struct("<~@8 A ~@36 A ~@48 A ~@16 A ~@12>".pickRestart({
  A: "~ x ~@2",
})).gain(0.5)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@9 A@36 ~ A@8 ~@4 A@28 ~@34 B ~@3>".pickRestart({
  A: "x!16", B: "x!13 ~@3",
})).gain(0.5)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@86 [x!16]!8 ~ [x!16]!16 ~ [x!16]!8 [~@13 x!3] [x!16]!3>").gain(0.3)

stack(
  lead_2_sawtooth, piano, lead_2_sawtooth_2, synth_brass_1, synth_brass_1_soft, bass, bass_soft, bass_2, bass_soft_2,
  kick, snare, snare_soft, clap, hihat, tambourine, tambourine_soft
)

More by Real McCoy