Strudelify
Love Will Keep Us Alive cover art

Hell Freezes Over

Love Will Keep Us Alive

Eagles

KeyA majorTempo99 bpm
0:00/0:00
// Love Will Keep Us Alive — Eagles
// 99 bpm, 4/4, key A major. 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 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/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.

// other · acoustic guitar steel · "Guitar 1 - Melody"
const acoustic_guitar_steel = note("<A@40 B@8 A@16 B@8 A@21 ~ A@2 C@3>".pickRestart({
  A: "a3 b3 e4 b3@2 a3 b3 e4",
  B: "[a3 d4 f#4 d4@2 a3 d4 f#4@2 a3 f#4 d4@2 a3 d4 f#4@2 a3 f#4 c#4@2 a3 c#4 f#4@2 a3 f#4 c#4@2 a3 c#4 f#4@2 a3 f#4 d4@2 a3 d4 f#4@2 a3 f#4 d4@2 a3 d4 f#4@2 g#3 b3 e4@2 g#3 b3 e4@2 g#3 b3 e4@5]/8",
  C: "[a3@2 b3@2 e4@2 b3@4 a3@2 b3@2 ~ e4@2 ~ [c#4,e4]@19 ~@11, ~@17 [a3,b3]@19 ~@12]/3", // C#m Asus2
})).s("gm_acoustic_guitar_steel").gain(0.36)

// bass · fretless bass · "Guitar 2 - Bass"
const bass = note(`<
  A B C D E@2 F@2 A B C D E@2 F@2 A B C G H F A@2 I B C D H E J K I B C G H F I L H M C D N O P Q I B C G H F I R S T C
  G H E S U H M C D N O P Q A B C G H E F@2 I B C G H F B G H F B G H F I A@2 V@2
>`.pickRestart({
  A: "a2", B: "a2@6 c#2 e2", C: "f#2@7 f#2", D: "f#2", E: "d2", F: "e2", G: "f#2@3 f#2", H: "d2@7 d2", I: "a2@7 a2",
  J: "e2@7 e1", K: "e1", L: "~@2 b1 c#2, a2@3 ~", M: "d2@6 e2 f2", N: "b1@7 b1", O: "b1@5 a1 c#2 d2", P: "e2 d2",
  Q: "c#2 b1", R: "a2@6 f#2 e2", S: "a1@7 a1", T: "a1@6 c#2 e2", U: "a1@2 c#2 e2", V: "[~ [a1,a2]@19 ~@12]/2",
})).s("gm_fretless_bass").gain(0.25)

// other · acoustic guitar nylon · "Guitar 3 - Backup"
const acoustic_guitar_nylon = note("<~@3 A B@2 C D ~@47 E F G H E I@2 J K ~@22 L M ~@2 N M ~@3 O P@3>".pickRestart({
  A: "~@8 a4@3 [g4,g#4] [f4,f#4] e4@3", B: "[f#4@24 f#4@3 [e4,f4] [d4,d#4] c#4@3]/2", C: "e4@6 f#4 e4", D: "c#4",
  E: "~@2 c#4 e4", F: "f#4@3 e4@3 ~@2", G: "~@3 f#4@3 e4@2", H: "c#4@3 ~",
  I: "[[a3,d4,f#4]@10 ~ a4 ~ a4 d5@2, ~@6 d5 ~]/2", J: "[a4,b4,c#5]", K: "d5@2 c#5@2 ~ e4@2 ~, ~@2 a4 ~", L: "e4 a4",
  M: "f#4", N: "a4 e4", O: "~@8 c#4@6 b3 a3", P: "[a3@12 a3@2 ~ c#4@2 e4@19 ~@12]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// other · acoustic guitar nylon · "Guitar 3 - Backup" · soft notes
const acoustic_guitar_nylon_2 = note("<~@14 A B ~@14 A B ~@46 A B ~@19>".pickRestart({
  A: "~@5 a3@3", B: "g#3@8 g#3 a3 g#3 g#3@5",
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D ~
>`.pickRestart({
  A: "x ~@6 x", B: "x", C: "x ~@14 x", D: "~ x ~@14",
})).gain(0.28)

// drums · open hat
const open_hat = s("oh").struct("<~@23 A B ~@12 A B ~@8 C ~@23 C ~@21 B ~@5>".pickRestart({
  A: "~@7 x", B: "x", C: "~ x",
})).gain(0.24)

// drums · splash
const splash = s("cr").struct("<~@64 x ~@34>").gain(0.24)

// drums · shaker
const shaker = s("sh").struct("<A@47 B A@23 B A@21 C A@2 D E ~>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "x", D: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x", E: "~ x ~@14",
})).gain(0.32)

// drums · claves
const claves = s("clave:2").struct("<[~@5 x ~@2]!47 ~ [~@5 x ~@2]!23 ~ [~@5 x ~@2]!21 ~ [~@5 x ~@2]!3 ~@2>").gain(1.57)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<[~ x ~@2]!93 ~ [~ x ~@2]!3 ~@2>").gain(0.47)

stack(
  acoustic_guitar_steel, bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, kick, open_hat, splash, shaker, claves,
  woodblocks
)

More by Eagles