Strudelify

Run Away

Real McCoy

KeyC majorTempo126 bpm
0:00/0:00
// Run Away — Real McCoy
// 126 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 2 fretless bass (copy of ch 1 synth bass 1)
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/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 · synth bass 1
const bass = note(`<
  ~@17 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D ~@4 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C E F
>`.pickRestart({
  A: "a2@3 a2 a2@2 a2@2 ~@2 a2@2 ~@2 a2@2", B: "f2@3 f2 f2@2 f2@2 ~@2 f2@2 ~@2 f2!2",
  C: "c3@3 c3 c3@2 c3@2 ~@2 c3@2 ~@2 c3@2", D: "g2@3 g2 g2@2 g2@2 ~@2 g2@2 ~@2 g2@2",
  E: "g2@3 g2 g2@2 g2@2 ~@2 g2@2 ~@2 g2 ~", F: "a2@3 a2 a2@2 a2@2 ~@8",
})).s("gm_synth_bass_1").gain(0.45)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~ A@3 B@2 C D@2 A@3 B@2 C E@2 A@3 B@2 C D@2 ~@8 F G H I F G H J A@3 B@2 C D@2 ~@16 F G H I F G H J A@3 B@2 C D@2 ~@16
  F G H I F G H J A@3 B@2 K D@2 ~@8 F G H I F G H L M
>`.pickRestart({
  A: "[g4@3 e4 f4@2 g4 g4@6 e4 f4 g4@3 f4 e4@2 d4 c4 e4]/3", B: "[d4@10 e4@2 f4@2 g4@12 c5@3 a4@3]/2",
  C: "g4@5 e4 f4 g4", D: "[g4@6 a4 g4@9]/2", E: "[g4@12 a4@2 g4@17 ~]/2", F: "a3 c4 d4 c4 d4 c4 d4 c4",
  G: "d4 c4 d4 c4 d4 c4 d4 c4", H: "d4 e4 d4 e4 d4 c4 d4 e4", I: "d4 e4 d4 b3 g3 a3 g3 e3",
  J: "d4 e4 d4 b3 g3 a3 e4 f4", K: "g4@10 e4@2 f4@2 g4 ~", L: "d4 e4 d4 b3 g3 a3 e3 g3", M: "a3@2 ~ a3 a3@2 a3@2 ~@8",
})).s("gm_lead_2_sawtooth").gain(0.4)

// other · tubular bells
const tubular_bells = note(`<
  ~@49 A B C D A B C D ~@24 A B C D A B C D ~@24 A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "a4", B: "f4", C: "c5", D: "g4",
})).s("gm_tubular_bells").gain(0.5)

// chords · music box
const music_box = note("<~@89 A@6 B@4 ~@31>".pickRestart({
  A: "[~@9 a4 ~@13 d5@2 ~@16 a4 ~@2 e5@4, a4@2 a4@3 a4@4 ~ a4@6 a4@2 a4@3 a4@11 a4@2 a4@3 a4@4 ~ a4@6, ~ c5@6 c5@10 c5@16 c5@6 c5@9, ~@3 e5@9 e5@7 e5@8 e5@8 e5@9 ~@4, ~@25 d5@3 d5@16 ~@4]/6",
  B: "[~@7 d5@2 ~@3 d5@16 ~@4, a4@2 a4@3 a4@16 ~@11, ~ c5@16 ~@15, ~@3 e5@8 e5@16 ~@5, ~@9 d5@3 ~@20]/4",
})).s("gm_music_box").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@49 A B C D A B C D ~@24 A B C D A B C D ~@24 A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "[a3,c4,e4]", B: "[a3,c4,f4]", C: "[g3,c4,e4]", D: "[g3,b3,d4]",
})).s("gm_string_ensemble_1").gain(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@17 A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@15 B A@7 B A@7 B A@7 B C
>`.pickRestart({
  A: "c2 ~@3 [e1,c2,d2] ~@3 c2 ~@3 [e1,c2,d2] ~@3", B: "c2 ~@3 [e1,c2,d2] ~@3 c2 ~@3 [e1,c2,d2] ~ e2!2",
  C: "c2 ~@2 c2!2 ~ c2 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@17 [x!4]!112 [x ~@2 x!2 ~ x ~@9]>").gain(0.64)

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

// drums · hihat
const hihat = s("hh").struct("<[x!4]!129 [x ~@2 x ~@2 x ~@9]>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@9 [~ x ~ x ~ x ~ x]!120 [~ x ~@2]>").gain(0.56)

stack(
  bass, lead_2_sawtooth, tubular_bells, music_box, string_ensemble_1, acoustic_guitar_steel, kick, snare, hihat,
  open_hat
)

More by Real McCoy