Strudelify
Born To Be Alive cover art

1979 · Born to Be Alive (The Original)

Born To Be Alive

Patrick Hernandez

KeyD majorTempo130 bpm
0:00/0:00
// Born To Be Alive — Patrick Hernandez
// 130 bpm, 4/4, key D major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 11 "TENOR SAX" tenor sax (copy of ch 5 "BRASS 1" brass section)
// note: Full arrangement: all 183 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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 · piano · "A.PIANO 2"
const piano = note("<~@25 A B ~@28 A B ~@48 A B ~@28 A B ~@46>".pickRestart({
  A: "[c2,e4,g4,c5] [g1,d4,b4], ~@4 g4@3 ~", B: "[d2,d4,f#4,a4], b4 ~@15",
})).s("gm_piano").gain(0.6)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@8 B C B C D E B@2 D A F@2 B@3 F B C B F B@2 D E B@2 D A F@2 D@2 F@2 D@2 F G H@2 B@5 F B C B F B@2 D E B@2 D A F@2 D
  E B@2 D A F@2 D E B@2 D A F@2 D@2 F@2 D@2 F G H@2 B@9 F B C B F B@2 D E B@2 D A F@2 D@2 F@2 D@2 F G H@2 B@5 F B C B F
  B@2 D E B@2 D A F@2 D E B@2 D A F@2 D E B@2 D A F@2 D@2 F@2 D@2 F G H@2 B@8 I
>`.pickRestart({
  A: "a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~", B: "d2@2 d3 ~ d2@2 d3 ~ d2@2 d3 ~ d2@2 d3 ~",
  C: "c2@2 c3 ~ c2@2 c3 ~ g1@2 g2 ~ g1@2 g2 ~", D: "b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~",
  E: "c2@2 c3 ~ c2@2 c3 ~ b1@2 b2 ~ b1@2 b2 ~", F: "g1@2 g2 ~ g1@2 g2 ~ g1@2 g2 ~ g1@2 g2 ~",
  G: "g1@2 g2 ~ g1@2 g2 ~ g1@2 g2 ~ g1@2 g2 ~, a1 ~@15", H: "f#1@2 f#2 ~ f#1@2 f#2 ~ f#1@2 f#2 ~ f#1@2 f#2 ~",
  I: "d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.42)

// other · electric guitar muted · "+FUNK GTR"
const electric_guitar_muted = note(`<
  A B A B A B A B ~@12 C D ~@26 C D C D ~@42 C D C D C D C D ~@26 C D C D ~@42 C D C D C D C D ~
>`.pickRestart({
  A: "g3 a3!4 ~ a3 g3 a3 g3 a3 ~ c4@2 a3 ~", B: "g3 a3!2 g3 a3 ~ a3 g3 e3 d3 c3 ~ c4@2 a3 ~",
  C: "c4 d4!4 ~ d4 c4 d4 c4 d4 ~ f4@2 d4 ~", D: "c4 d4!2 c4 d4 ~ d4 c4 a3 g3 f3 ~ f4@2 d4 ~",
})).s("gm_electric_guitar_muted").gain(0.42)

// other · lead 8 bass lead · "BASS&LEAD"
const lead_8_bass_lead = note(`<
  ~@12 A@2 B C D E F ~@3 G H I ~ G H I J K L B C B M N O P Q R O P@2 S T U@2 ~@4 G H I ~ G H I J K L B C B M N J K L B C
  B M N J K L B C B M N O P Q R O P@2 S T U@2 ~@8 G H I ~ G H I J K L B C B M N O P Q R O P@2 S T U@2 ~@4 G H I ~ G H I
  J K L B C B M N J K L B C B M N J K L B C B M N O P Q R O P@2 S T U@2 ~@9
>`.pickRestart({
  A: "[d4@19 ~@5 d4 ~ d4 ~ d4 ~ d4 ~]/2", B: "d4 ~@7", C: "~@10 d4 ~ d4 ~ d4 ~", D: "d4@7 ~", E: "c#4@3 ~", F: "b3",
  G: "f#4 ~ f#4!2 ~ f#4 ~ g4@3 f#4 ~ e4 ~ d4 ~", H: "b3@2 d4!2 ~ d4 ~ e4@3 d4 ~ e4 ~ d4 ~",
  I: "f#4@2 ~ d4 ~@2 a3@5 ~@5", J: "~@10 d4@2 d4 ~ d4 ~", K: "d4@3 ~@13", L: "d4@2 ~@6 d4 ~ d4 ~ d4 ~ d4 ~",
  M: "c#4@3 ~@13", N: "b3@5 ~@3", O: "~@14 d4 ~", P: "f#4@4 d4@2 b3 ~@7 d4 ~", Q: "f#4@3 ~ d4@2 b3 ~@7 d4 ~",
  R: "f#4@3 ~ d4@2 b3 ~@9", S: "f#4@4 d4@2 b3 ~@9", T: "~@10 f#4 ~ f#4 ~ f#4 ~", U: "[f#4@4 e4@2 f#4@25 ~]/2",
})).s("gm_lead_8_bass_lead").gain(0.36)

// chords · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note(`<
  ~@22 A@3 B@6 C@4 D E@2 F G H ~ I J K ~ L@2 ~@4 M@3 B@6 N@5 O@3 C@4 D O@3 C@4 D E@2 G P H ~ P@2 H ~ Q@2 ~@8 A@3 B@6 C@4
  D E@2 F G H ~ I J K ~ L@2 ~@4 M@3 B@6 N@5 O@3 C@4 D O@3 C@4 D E@2 G P H ~ P@2 H ~ Q@2 ~@9
>`.pickRestart({
  A: "[[a4,f#5]@15 ~ [g4,b4]@16 [a4,f#5]@16, d5]/3", // D G D
  B: "[[c5,e5] b4 [a4,f#5]@2 [g4,b4]@2 a4@4 b4@2, g4 ~@2 f#5@3, ~ d5@11]/6", // C D G
  C: "[[c5,e5] b4 a4@4 b4@2, g4 f#5@3, ~ d5@7]/4", D: "[a4,c#5,e5]", E: "[g4,b4,d5]/2", F: "[d4,f#4]@5 ~@3, b4 ~@15",
  G: "[d4,f#4,b4]@9 ~@7", H: "[b3,d4,g4]@5 ~@3", I: "[d4,f#4,b4]@5 ~@3", J: "[d4,f#4,b4]@10 ~@4 d#4 ~",
  K: "[b3,d4,g4]@9 ~@7", L: "[b4 a#4, [f#4,c#5]@31 ~]/2", M: "[[a4,f#5] [g4,b4] [a4,f#5], d5]/3",
  N: "[[c5,e5] b4 a4@4 b4@2 [a4,c#5,e5]@2, g4 f#5@3 ~, ~@8 d5@57 ~@15]/5", O: "[g4@2 f#5, [b4,d5]]/3",
  P: "[d4,f#4,b4]@11 ~@5", Q: "[b4@16 a#4@15 ~, [f#4,c#5]@31 ~]/2",
})).s("gm_tremolo_strings").gain(0.24)

// bass · synth bass 1 · "+SYN BASS3"
const bass_2 = note(`<
  A@8 B C B C D E B@2 D A F@2 B@3 F B C B F B@2 D E B@2 D A F@2 D@2 F@2 D@2 F@2 G@2 B@5 F B C B F B@2 D E B@2 D A F@2 D
  E B@2 D A F@2 D E B@2 D A F ~ H D F@2 D@2 F@2 G@2 B@9 F B C B F B@2 D E B@2 D A F@2 D@2 F@2 D@2 F@2 G@2 B@5 F B C B F
  B@2 D E B@2 D A F@2 D E B@2 D A F@2 D E B@2 D A F ~ H D F@2 D@2 F@2 G@2 B@8 I
>`.pickRestart({
  A: "a2!16", B: "d3!16", C: "c3!8 g2!8", D: "b2!16", E: "c3!8 b2!8", F: "g2!16", G: "f#2!16", H: "d3 b2!15",
  I: "d3 ~@15",
})).s("gm_synth_bass_1").gain(0.19).pan(0.8)

// chords · brass section · "+BRASS 2"
const brass_section = note(`<
  ~@3 A B ~@2 C D ~@9 E F ~ G H ~@5 I J ~@6 K L M N O P M N O P ~ Q ~@3 G H ~@2 R L ~ I J ~@6 K L ~@2 I J ~@2 K L ~@2 I
  J ~@2 K L M N O P M N O P ~ Q ~@3 S T ~@2 G H ~@5 I J ~@6 K L M N O P M N O P ~ Q ~@3 G H ~@2 R L ~ I J ~@6 K L ~@2 I
  J ~@2 K L ~@2 I J ~@2 K L M N O P M N O P ~ Q ~@3 S T ~@2 G H
>`.pickRestart({
  A: "~@8 c5!2 a4 g4 e4!2 d4 c4", B: "a4!2 g4 a4 ~@12", C: "~@8 a4!2 g4 a4 c5 d5 e5 g5", D: "a5 ~@15",
  E: "~@8 g4!2 ~ g4 a4 b4 ~ d5", F: "g5 f#5 g5 ~@13", G: "~@8 d5!2 c5 d5 f5 g5 a5 c6", H: "d6 ~@15",
  I: "~@10 [d5,f#5] ~@5", J: "[d5,f#5] [c#5,f5] [d5,f#5] [c#5,f5] [d5,f#5] ~@11", K: "~@8 g4 ~ c5 c#5 d5 a4 a#4 b4",
  L: "g4 ~@15", M: "~@10 [f#4,b4,d5] ~@5", N: "~@10 [d4,f#4,b4] ~@5", O: "~@10 d5 e5 g5 a5 g5 ~",
  P: "~@4 a#5 a5 g5 e5 g5 a5 g5 ~@5", Q: "[a#4,c#5,f#5]!13 ~@3", R: "g4 ~ c5 c#5 d5 a4 a#4 b4 g4 ~@2 e4 a#4 a4 g4 e4",
  S: "~@8 f5!2 d5 c5 a4!2 g4 f4", T: "d5!2 c5 d5 ~@12",
})).s("gm_brass_section").gain(0.34).pan(0.3)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@8 A B C D@2 ~@11 E ~@3 E ~@25 E ~@3 E ~@45 E ~@3 E ~@25 E ~@3 E ~@44>".pickRestart({
  A: "f4@2 e4 ~ d4 ~ b3 d4@4 ~@5", B: "~@6 d4 ~ f4@2 ~ f4 ~@4", C: "f4@2 e4 ~ d4@2 b3 d4@4 ~@5",
  D: "[~@6 d4 ~ f4@2 ~ f4@20 ~]/2", E: "[d5,f#5]@2 ~ [a4,d5]@2 ~ [f#4,a4]@6 ~@4",
})).s("gm_overdriven_guitar").gain(0.42)

// bass · synth bass 1 · "+SYN BASS3"
const bass_3 = note(`<
  ~@14 A B ~@3 A C ~@11 D E ~@3 D F ~@23 A G ~@3 D H ~ A G ~@3 D H ~ D B ~@3 D B ~@27 D E ~@3 D F ~@23 A G ~@3 D H ~ A G
  ~@3 D H ~ D B ~@3 D B ~@18
>`.pickRestart({
  A: "~@8 a2 ~ a2 ~ b2 ~ a2 ~", B: "d2 ~", C: "d2@9 ~@7", D: "~@8 a2 ~ a2 ~ b2 ~ a2@2", E: "d2@5 ~@3", F: "d2@3 ~@5",
  G: "d2@3 ~", H: "d2@5 ~@11",
})).s("gm_synth_bass_1").gain(0.36)

// drums · kick
const kick = s("bd").struct("<[x!4]!182 x>").gain(0.48)

// drums · clap
const clap = s("cp").struct(`<
  ~@8 A@13 B A@15 B A@13 B A@15 B A@7 B A@7 B A@10 ~@8 A@15 B A@13 B A@15 B A@7 B A@7 B A@10 ~@9
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.54)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@21 A ~@15 A ~@13 A ~@15 A ~@7 A ~@7 A ~@33 A ~@13 A ~@15 A ~@7 A ~@7 A ~@19
>`.pickRestart({
  A: "~@12 x!4",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@7 A B@11 A C A B@7 A B@6 C A B@9 A B@2 C A B@7 A B@6 C A B@6 C A B@6 C A B@9 A B@7 A B@7 A B@6 C A B@9 A B@2 C A
  B@7 A B@6 C A B@6 C A B@6 C A B@9 A B@7 ~
>`.pickRestart({
  A: "~ x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", C: "x!2 ~@2 x!2 ~@10",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@21 A ~@15 A ~@13 A ~@15 A ~@7 A ~@7 A ~@33 A ~@13 A ~@15 A ~@7 A ~@7 A ~@19
>`.pickRestart({
  A: "~@8 x!4 ~@4",
})).gain(0.42)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@7 B A@11 B A C A@7 B A@7 C A@9 B A@3 C A@7 B A@7 C A@7 C A@7 C A@9 B A@7 B A@7 B A@7 C A@9 B A@3 C A@7 B A@7 C A@7 C
  A@7 C A@9 B A@7 B ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~ x ~ x ~@4",
})).gain(0.42)

// drums · crash
const crash = s("cr").struct(`<
  A ~@7 A ~@11 A ~ A ~@7 A ~@7 A ~@9 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@9 A ~@7 A ~@7 A ~@7 A ~@9 A ~@3 A ~@7 A ~@7 A ~@7
  A ~@7 A ~@9 A ~@7 A
>`.pickRestart({
  A: "x",
})).gain(0.54)

stack(
  piano, bass, electric_guitar_muted, lead_8_bass_lead, tremolo_strings, bass_2, brass_section, overdriven_guitar,
  bass_3, kick, clap, snare, low_tom, hihat, mid_tom, open_hat, crash
)