Strudelify

Victim of Love

Eagles

KeyB♭ majorTempo84 bpm
0:00/0:00
// Victim of Love — Eagles
// 84 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: ch 4 "Guitar 2 slide" named as a guitar, played on electric guitar clean (its lead 1 square patch is not one)
// note: duplicate parts dropped: ch 11 "Double Guitar 1" distortion guitar (copy of ch 1 "Guitar 1" distortion guitar); ch 13 "Echo Guitar 3&4" distortion guitar (copy of ch 12 "Echo Guitar 3&4" distortion guitar, 0.333 beats late)
// note: Full arrangement: all 88 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 4.
setcpm(84/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 · distortion guitar · "Guitar 1"
const distortion_guitar = note("<A@2 B@2 C D E@2 ~@80>".pickRestart({
  A: "[d4@3 f4@2 c4 g4 ~ d4 c4@6 bb3@3 c4@5 ~ d4@3 c4@2 ~ bb3@2 ~ g3@6 bb3@2 ~@7, ~@23 bb3@2 ~@7 c4@2 ~@14]/2",
  B: "[d4@3 f4@2 c4 g4 ~ d4 c4@6 bb3@3 c4@2 ~ d4@21 c4@2 bb3 g3@2 ~]/2", C: "d4@3 f4@2 ~ g4 ~ d4 c4@6 bb3@2 ~@7",
  D: "c4@5 ~ c4@3 bb3@6 bb3@9, ~@5 bb3@2 ~@17", E: "[d4@3 f4@2 ~ g4 ~ d4 c4@6 bb3@2 ~ c4@5 ~ g3@24, ~@23 bb3@2 ~@23]/2",
})).s("gm_distortion_guitar").gain(0.4).pan(0)

// other · overdriven guitar · "Guitar 2"
const overdriven_guitar = note(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ B@2 C D E@2 F G@2 ~ H I ~@2 H I ~@2 H I ~@2 H I ~ J@2 K L@3 M N ~@2 O@2 P@2 Q@3 R
  S T U V W X Y Z AA@3 AB AC M AD@8
>`.pickRestart({
  A: "~@2 [g3,c4,e4]!2", B: "[~@2 f4!2 bb4 f4 c5 bb4@2 bb4!2 bb4@2 ~@2 f4]/2", C: "bb4 c5 ~ f5@5, ~ d5@3",
  D: "c5 ab4@2 ~", E: "[[f4,bb4]@6 f4@3 f4@3 bb4@3 f4@3 c5@3 bb4@6 c5@2 ~ bb4@2 ~ c5@2 ~ bb4@2 ~ f5@3 bb5@3 bb5@3]/2",
  F: "c6@6 d6@2 ~ f5@9 ~@6", G: "[d5 f5 eb5 d5 bb4 f4 a4@10]/2", H: "[eb4,ab4] ~ [eb4,ab4] ~",
  I: "[eb4,ab4] ~ [g3,c4,e4]!2", J: "[~@2 f4!2 bb4 f4 c5 ab4@3 ~@2 d5@3 f4, ~@11 [f4,bb4]@4 ~]/2",
  K: "bb4 c5 ~ eb5@5, ~ c5@3", L: "[d5 f5 d5 bb4 d5 f5 d5 bb4@7 ~@2 bb4@4 ~ d5 bb5@2, ~@15 f4@5 ~@4]/3",
  M: "c6@6 d6@2 ~ f5@11 ~@4", N: "d5 f5 d5!2 bb4 f4 a4@2", O: "[eb5@15 c5@3 c5@3 bb4@2 g4@19 f4@6]/2",
  P: "[a4@6 g4@6 a4@6 g4@3 c4 ~ eb4@19 c5@3 g5@3]/2",
  Q: "[g5@6 g5@3 e5 ~ a5@7 f5@3 d5@2 f5@4 g5@2 ~ c5@3 bb4@2 g4@4 g5@2 ~ c5@3 bb4@2 g4@4 g5@2 ~ c5@3 bb4@2 c5@3 ~ c5@3 d5@2 bb4@4, ~@31 bb4 ~@4]/3",
  R: "f4", S: "ab4@2 [d5,f5]@2 f5@3 f4", T: "~@3 f5@5, bb4 bb4@3, ~ d5@2 ~@5", U: "c5 d5 c5@2 [f4,bb4]@2 ~@2",
  V: "[f4,bb4]@9 f4@3 bb4@3 f4@3 db5@2 ~ bb4@3, ~@10 c5 ~", W: "f4 ~@2 bb5", X: "c6@6 d6@2 ~ f5@10 ~@5",
  Y: "d5 f5@2 d5 bb4 c5 bb4 c5", Z: "bb4 eb5 d5 f5 c5 bb4 eb5 d5",
  AA: "[bb4@12 d5@3 f5@3 d5@2 ~ bb4@15 d5@3 f5@3 d5@2 ~ bb4@9 d5@6 [eb4,ab4,c5]@6 ~@6, ~@10 c5 ~@11 c5 ~@13]/3", // Ab
  AB: "[f4,bb4]@6 f4@3 f4@3 bb4@3 f4@3 db5@2 ~ bb4@3, ~@10 c5 ~", AC: "eb4@2 ~@3 bb5 bb5@2",
  AD: "[d5@3 f5@6 d5@3 bb4@3 f4@3 bb4@3 bb4@2 bb4@7 bb5@6 c6@6 d6@3 g5@12 d5@3 f5@6 d5@3 bb4@9 bb5@6 c6@6 d6@3 g5@9 f5@6 c5@6 bb4@58 ~@20]/8",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.2)

// chords · distortion guitar · "Guitar 3"
const distortion_guitar_2 = note(`<
  A B A C A B A ~ D E D F G H@2 I G H G J G H@2 K L M N O L M P Q@2 D E D F G H@2 I G E D J G E@2 R L M S O L T P Q@2 G
  H G J G H@2 K L U S V L T W X L U S V L T P Y P Y P Z@3
>`.pickRestart({
  A: "[g2,d3,g3] ~@11", B: "~@12 [c3,g3,c4]@5 ~ [c3,g3,c4]@5 ~", C: "[bb2,f3,bb3]@5 ~@7 [a2,e3,a3]@5 ~@7",
  D: "[g2,d3,g3] ~@5 [g2,d3,g3] ~@5", E: "[g2,d3,g3]@2 ~@10 [c3,g3,c4]@5 ~ [c3,g3,c4]@5 ~",
  F: "[bb2,f3,bb3]@5 ~ [a2,e3,a3]@5 ~", G: "[g2,d3,g3] ~@3 [g2,d3,g3] ~@3",
  H: "[g2,d3,g3]@3 ~@9 [c3,g3,c4]@5 ~ [c3,g3,c4]@5 ~", I: "[g2,d3,g3]@5 ~", J: "~ f3 bb3 f3 ~ e3 a3 e3, bb2@5 ~ a2@5 ~",
  K: "[g2,d3,g3]@5 ~ [f3,a3]@3 [f3,a3]@3 [g3,bb3]@3 [g3,bb3]@3 c4@2 ~ ab3@2 ~", // G5 F Gm
  L: "~@3 f3@3 bb3@3 f3@3 ~@6 a2@5 ~, bb2@5 ~@3, ~@6 d4@5 ~", M: "~@3 d3@3 g3@3 d3@3 [d4,g4]@10 ~@2, g2@5 ~",
  N: "~@3 g3@3 c4@3 g3@3 [c4,e4]@5 ~ [d3,a3,d4]@5 ~, c3@5 ~@3", // C D5
  O: "[bb2,f3,bb3,d4]@5 ~ [f3,a3,c4]@3 [f3,a3,c4]@3 [g3,bb3]@3 [g3,bb3]@3 c4@3 bb3@3", // Bb F Gm
  P: "[eb3,bb3,eb4,g4]@5 ~ [eb3,bb3,eb4,g4]@5 ~ [f3,c4,f4,a4]@5 ~ [f3,c4,f4,a4]@5 ~", Q: "[[g3,bb3,d4,g4]@41 ~@7]/2",
  R: "[g2,d3,g3]@5 ~ [f3,a3]@3 [f3,a3]@3 [g3,bb3]@3 [g3,bb3]@3 c4@3 bb3@3", // G5 F Gm
  S: "~@3 g3@3 c4@3 g3@3 e4@5 ~ [d3,a3,d4]@5 ~, c3@5 ~@3", // D5
  T: "~@3 d3@3 g3@3 d3@3 ~@6 [d3,g3]@5 ~, g2@7 ~@5, ~@6 [d4,g4]@5 ~", U: "~@3 d3@3 g3@3 d4@3 g4@10 ~@2, g2@5 ~",
  V: "[bb2,f3,bb3,d4]@5 ~ [f3,a3,c4]@3 [f3,a3,c4]@3 [g3,bb3]@3 [g3,bb3]@3 a3@3 f3@3", // Bb F Gm
  W: "[eb3,bb3,eb4,g4]@5 ~ [eb3,bb3,eb4,g4]@3 [eb3,bb3,eb4,g4]@3 [f3,c4,f4,bb4]@3 [f3,c4,f4,a4]@3 [f3,c4,f4,a4]@3 [f3,c4,f4,a4]@3", // Eb Fsus4 F
  X: "[g3,bb3,d4,g4]@5 ~ f2@3 f2@3 g2@3 g2@3 a2@3 a2@3", // Gm
  Y: "[g3,bb3,d4,g4]@5 ~ [g3,bb3,d4,g4]@5 ~ [g3,bb3,d4,g4]@5 ~ [g3,bb3,d4,g4]@5 ~", Z: "[[g3,bb3,d4,g4]@13 ~@5]/3",
})).s("gm_distortion_guitar").gain(0.35).pan(0.8)

// chords · overdriven guitar · "Guitar 4"
const overdriven_guitar_2 = note(`<
  ~@23 A ~@3 B ~@13 C ~@3 C ~@2 B ~@3 B D E ~@10 A ~@3 F ~@3 G ~@3 F ~@5 H@2 ~@3
>`.pickRestart({
  A: "~@18 a3@2 ~ a3@2 ~", B: "~@6 a3!2", C: "~@9 [g3,d4,g4]!2 ~@10 [g3,d4,g4]!2 ~", D: "[g3,d4,g4] ~@3 [g3,g4] ~@3",
  E: "d4@3 ~@9 [c4,c5]@5 ~ [c4,c5]@5 ~", F: "~@7 a2", G: "~@2 [a4,c5]!2 bb4!2 ~ f4",
  H: "[~@23 [eb4,bb4,eb5,g5]@5 ~@20]/2", // Eb
})).s("gm_overdriven_guitar").gain(0.4).pan(0.6)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A B A C A B A ~ D E D F D E@2 G D E D F D E@2 H I J@2 K L M N O@2 D E D F D E@2 G D E D F D E@2 H I P@2 K L Q R S@2 D
  E D F D E@2 H T U@2 V T W X H L Y@2 K Z W AA AB@2 AC AD AE@3
>`.pickRestart({
  A: "g1 ~@7", B: "~@2 c2!2", C: "bb1 ~ a1 ~", D: "g1 ~@3 g1 ~@3", E: "g1 ~@3 c2@2 c2@2", F: "bb1 a1", G: "g1",
  H: "g1@2 f1!2 g1!2 a1!2", I: "bb1@6 ~@3 bb1@2 ~ bb1@6 a1@6",
  J: "[g1@3 ~@8 g1 g1@3 ~@9 c2@6 ~@3 c2@3 c2@6 ~@3 c2@3, ~@23 g1@2 ~@23]/2", K: "bb1@2 f1!2 g1!2 a1!2",
  L: "bb1@2 ~ bb1 bb1@2 a1@2", M: "g1@2 ~@9 g1 g1@3 ~@9", N: "eb2@2 ~ eb2@3 ~ f2", O: "g2/2",
  P: "[g1@3 ~@8 g1 g1@3 ~@9 c2@6 ~@3 c2@3 c2@6 ~@3 a1@3, ~@23 g1@2 ~@23]/2", Q: "g1@2 ~@9 g1 g1@6 ~@6",
  R: "eb2@2 ~ eb2@3 ~ f1", S: "g1/2", T: "bb1@6 ~@3 bb1@3 bb1@2 ~@4 a1@6",
  U: "[g1@3 ~@8 g1 g1@3 ~@9 c2@6 ~@3 c2@3 c2@12, ~@23 bb1@2 ~@23]/2", V: "c2@2 f1!2 g1!2 a1!2",
  W: "g1@3 ~@8 g1 g1@3 ~@9", X: "eb2@3 eb2 f2@3 g2",
  Y: "[g1@3 ~@8 g1 g1@3 ~@9 c2@6 ~@3 c2@3 c2@6 c2@6, ~@23 bb1@2 ~@23]/2", Z: "bb1@2 ~ bb1!2 ~ a1@2",
  AA: "eb2@3 eb2 f2@3 f2", AB: "[g2@12 ~@3 d2@2 ~ f2@3 c2@2 ~ eb2@9 eb2@3 f2@9 f2@3, ~@17 g2@2 ~@4 f2@2 ~@23]/2",
  AC: "g2@3 ~@4 g2", AD: "eb2@2 eb2!2 f2@2 f2@2", AE: "[g1@13 ~@5]/3",
})).s("gm_electric_bass_pick").gain(0.4)

// chords · distortion guitar · "Echo Guitar 3&4"
const distortion_guitar_3 = note(`<
  A B A C A B A ~ D E D F D G@4 H@2 ~ D I@3 ~@6 J@4 E D F D K@4 L M ~ D N@2 ~@10 D H@2 ~ D I@3 ~@22
>`.pickRestart({
  A: "~@2 [g2,d3,g3]@3 ~@19", B: "~@14 [c3,g3,c4]@5 ~ [c3,g3,c4]@4", C: "~@2 [bb2,f3,bb3]@5 ~@7 [a2,e3,a3]@5 ~@5",
  D: "~@2 [g2,d3,g3]@3 ~@9 [g2,d3,g3]@3 ~@7", E: "~@2 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@5 ~ [c3,g3,c4]@4",
  F: "~@2 [bb2,f3,bb3]@11 ~ [a2,e3,a3]@10", // Bb5 A5
  G: "[~@2 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@6 [c3,g3,c4]@6 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@6 [c3,g3,c4]@6 [g2,d3,g3]@24 [g2,d3,g3]@3 ~@9 [g2,d3,g3]@3 ~@7]/4", // G5 C5 G5 C5 G5
  H: "[~@2 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@6 [c3,g3,c4]@6 [g2,d3,g3]@3 ~@9 [g2,d3,g3]@3 ~@7]/2", // G5 C5 G5
  I: "[~@2 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@6 [c3,g3,c4]@6 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@6 [c3,g3,c4]@6 ~@22]/3", // G5 C5 G5 C5
  J: "[~@2 [eb3,bb3,eb4,g4]@6 [eb3,bb3,eb4,g4]@6 [f3,c4,f4,a4]@6 [f3,c4,f4,a4]@6 [g3,bb3,d4,g4]@48 [g2,d3,g3]@3 ~@9 [g2,d3,g3]@3 ~@7]/4", // Eb F Gm G5
  K: "[~@2 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@6 [c3,g3,c4]@6 [g2,d3,g3]@3 ~@9 [c3,g3,c4]@6 [c3,g3,c4]@6 [g2,d3,g3]@24 [g2,d3,g3]@3 ~@6 [g2,d3,g3] ~ [g2,d3,g3] [g2,d3,g3]@3 ~@6 [g2,d3,g3]]/4", // G5 C5 G5 C5 G5
  L: "~ [g2,d3,g3] [g2,d3,g3]@2 ~@10 [c3,g3,c4]@5 ~ [c3,g3,c4]@4", M: "~ [g2,d3,g3] ~@5 [g2,d3,g3] ~@4",
  N: "~@2 [g2,d3,g3]@2 ~@10 [c3,g3,c4]@5 ~ [c3,g3,c4]@4", // G5 C5
})).s("gm_distortion_guitar").gain(0.29).pan(0.3)

// chords · electric guitar clean · "Guitar 2 slide" · G5 F5 Db5 A5
const electric_guitar_clean = note("<~@56 [[d5,g5] [c5,f5]] [[ab4,db5] [e4,a4]] ~@30>")
  .s("gm_electric_guitar_clean").gain(0.18).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
  A B A C A B A ~ C D C E C D C F C D C A C D C ~ G H I A G H I F ~ C D C A C D C F C D C A C D C ~ G H G ~ G H G C@3 D
  C A C D C ~ G H G A G H I A G H G ~ G H G A I J G A ~@2
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "x!2", D: "x ~ x!2", E: "~ x ~@2", F: "x ~@6 x ~@4", G: "x ~@2 x!2 ~@3",
  H: "x ~@8 x ~ x!2 ~@8 x ~@2", I: "x ~@2 x!2 ~@2 x", J: "x!3 ~",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B C B D B C E F B C B G B C B H B E B H B E B I J B C B K B C B L B C B M B C B H B E B N B E@2 ~@2 B C B O B C
  B H B E@2 P B E B P B E B Q B E@2 N R S B ~@3
>`.pickRestart({
  A: "~@11 x!2 ~ x ~@2 x!2 ~ x!2 ~@2", B: "~ x ~ x", C: "~ x ~@2", D: "~@12 x ~@4 x!2 ~ x ~@2 x",
  E: "~@6 x ~@11 x ~@4 x", F: "~@6 x ~@5 x ~@4 x ~@2 x!2 ~@2", G: "~@6 x ~@2 x ~ x!2 ~@4 x!2 ~@5", H: "~@2 x!2 ~@4",
  I: "~@12 x ~@5 x ~@4 x", J: "x", K: "~@6 x ~@4 x!2 ~@4 x!2 ~@5", L: "~@6 x ~@5 x ~@4 x ~@6",
  M: "~@6 x ~@4 x!2 ~ x ~@2 x!2 ~ x!2 ~ x", N: "~@3 x ~ x!2 ~@17", O: "~@6 x ~@4 x!2 ~@11", P: "~@3 x ~ x ~@18",
  Q: "x ~ x!2 ~ x ~@18", R: "~@3 x ~@5 x ~ x", S: "~ x ~@18 x ~@3",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@19 A ~@3 B ~@3 B ~@4 C ~@15 B ~@3 D ~@4 E ~@3 F ~@3 B ~@3 G ~@3 H ~@3 H ~@3 I ~ J ~@4
>`.pickRestart({
  A: "~@14 x ~@5 x!2 ~@2", B: "~@4 x!4", C: "~@12 x ~@4 x!2 ~ x!2 ~ x", D: "~@5 x!3", E: "x!2",
  F: "~@14 x ~@2 x!2 ~ x!2 ~@2", G: "~@18 x ~ x!2 ~@2", H: "~@12 x ~ x!2 ~ x!2 ~ x!2 ~ x", I: "~@18 x ~ x!2 ~ x",
  J: "~@7 x ~ x!2 ~@7 x ~@5",
})).gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@8 A B A C A B A B A B A B A B A D ~ E ~@3 E ~@3 A B A C A B A B A B A C A B A D ~ E ~@3 E ~@3 F B A C F B G D ~ E
  ~@3 E ~@3 H ~@3 E I ~ I ~@5
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "x ~ x!2 ~@4", D: "x!2 ~@6", E: "x ~ x ~ x ~ x!2", F: "~ x!3",
  G: "x ~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~ x", H: "~@2 x ~ x ~ x!2", I: "~@2 x!2 ~@2 x!2",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@23 A ~@3 A ~@4 B ~@3 C ~@11 A ~@3 D ~@3 E F ~@7 A ~@3 G ~@3 H ~@3 H ~@3 I ~ J ~@4
>`.pickRestart({
  A: "~@2 x!4 ~@2", B: "~@3 x ~@4 x ~@15", C: "~@14 x ~@5 x!2 ~@2", D: "~@9 x ~ x!2 ~@11", E: "~ x", F: "x",
  G: "~@6 x ~@2 x ~ x!2 ~ x!2 ~ x ~@6", H: "~@6 x ~ x!2 ~ x ~@12", I: "~@9 x ~ x!2 ~ x!2 ~ x ~@6",
  J: "~@3 x!2 ~@8 x ~ x!2 ~@4 x ~@2",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@15 [~@3 x] ~@24 [~@6 x!2] ~@47>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A B A C A B A ~@2 B ~@3 B ~@3 B ~@3 B ~@2 A ~ A ~ A ~ A ~@3 B ~@3 B ~@3 B ~@3 B ~@2 A ~ D A@2 ~ A ~@2 A B ~@2 A B ~@2
  A ~ A@3 ~ A@3 ~ A ~ A ~ C A C E@2 A ~@2
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "x!2", D: "x ~@2 x", E: "x!3 ~",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct(`<
  ~@24 A ~ A B A ~ A C ~@17 A ~ D ~ A ~ A C ~@9 A ~ A ~ A ~ A ~ A C A ~ A ~@9
>`.pickRestart({
  A: "~ x!7", B: "x!2 ~@6", C: "x", D: "~ x!5 ~ x",
})).gain(0.4)

stack(
  distortion_guitar, overdriven_guitar, distortion_guitar_2, overdriven_guitar_2, bass, distortion_guitar_3,
  electric_guitar_clean, kick, snare, low_tom, pedal_hat, mid_tom, open_hat, crash, ride
)

More by Eagles