Strudelify

Landslide

Stevie Nicks

KeyE♭ majorTempo79 bpm
0:00/0:00
// Landslide — Stevie Nicks
// 79 bpm, 2/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 131 bars on a 16-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 2.
setcpm(79/2)

// 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 · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note(`<
  A B C D E F G@2 A B H@2 E F I@2 J K L M N O P Q@2 B C D E R G@2 A B H@2 E R S@2 J K L M N O P T@7 U@2 V W@3 X@3 Y@6
  Z@8 AA@7 AB@5 AC@3 X@3 AD@7 AE@7 B C D E F G@2 A B AF@2 ~ A B C D E R AG@3 ~
>`.pickRestart({
  A: "g4@2 ~ bb3@2 ~ g3@2, eb3@9 ~ eb3@5 ~, ~ g3 ~@2, ~@3 g4@5", B: "~@3 bb3@2 ~ f3@2, [d3,f4]@3 f4@5, ~@2 f3@2 ~ d3@3",
  C: "eb4@2 ~ g3@2 ~ eb3@2, c3@9 ~ c3@6, ~@4 eb3@7 ~@5, ~@3 eb4@5", D: "~@3 f4 ~@2 f3@2, d3@6 bb3@4 d3@5 ~, ~ f3 f4@2",
  E: "~@3 bb3@2 ~ g3@2, [eb3,g4]@3 g4@5, ~@4 g3@5 ~ eb3@5 ~", // Eb
  F: "~@6 bb3@4 ~@2 f3@3 ~, [d3,f4]@3 f4@5, ~@2 f3@2 ~ d3@3", // Dm
  G: "[eb4@2 ~ g3@2 ~ eb3@2 ~@3 f4 ~@2 f3@2, c3@9 ~ c3@6 ~@4 f3@6 d3@6, ~@4 eb3@7 ~@5 d3@8 f4@8, ~@3 eb4@8 bb3@5]/2",
  H: "[eb4@2 ~ g3@2 ~ eb3@2 ~@3 f4 ~@2 f3@2, c3@9 ~ c3@6 ~@4 f3@6 d3@5 ~, ~@4 eb3@7 ~@5 d3@8 f4@8, ~@6 eb4@13 ~@3 bb3@5 ~@5]/2",
  I: "[eb4@2 ~ g3@2 ~ eb3@2 ~@3 f4 ~@2 f3@2, c3@9 ~ c3@6 ~@4 f3@6 d3@6, ~@4 eb3@7 ~@5 d3@8 f4@7 ~, ~@3 eb4@7 ~ bb3@5]/2",
  J: "~@3 bb3@2 ~ g3@2, eb3@9 ~ eb3@5 ~, ~ g3 ~@2, ~@3 g4@5", K: "~@3 bb3@2 ~ f3@2, d3@3 f4@5, ~@2 f3@2 ~ d3@3",
  L: "~@3 g3@2 ~ eb3@2, c3@9 ~ c3@6, ~@4 eb3@7 ~@5, ~@3 eb4@5", M: "~@3 bb3@2 ~ f3@2, d3@3 f4@5, ~@4 f3@6 d3@5 ~",
  N: "~@3 bb3@2 ~ g3@2, eb3@3 g4@5, ~@4 g3@5 ~ eb3@5 ~", O: "~@6 bb3@4 ~@2 f3@3 ~, d3@3 f4@5, ~@4 f3@4 ~@2 d3@5 ~",
  P: "~@3 g3@2 ~ eb3@2, c3@9 ~ c3@6, ~@4 eb3@7 ~@5, ~@6 eb4@9 ~",
  Q: "[~@3 g3 ~@7 bb3@2 ~ g3@2, bb4@7 a3@2 ~ g3@2 ~@4, c3@8 [d3,f4]@8 eb3@9 ~ eb3@5 ~, ~@4 eb3@5 ~@3 f3@5 ~@5 g4@10]/2", // Dm
  R: "~@6 bb3@4 ~@2 f3@3 ~, [d3,f4]@3 f4@5, ~@4 f3@4 ~@2 d3@5 ~", // Dm
  S: "[eb4@2 ~ g3@2 ~ eb3@2 ~@3 f4 ~@2 f3@2, c3@9 ~ c3@6 ~@4 f3@6 d3@6, ~@4 eb3@7 ~@5 d3@8 f4@8, ~@3 eb4@7 ~ bb3@5]/2",
  T: "[~@3 g3 ~@51 d4, bb4@14 c4@4 ~@4 d4@6 d4@5 ~@5 a3@6 a3@7 ~ g3@10 g3@5 ~ g3@10 g3@4 ~@14 d3@8 d3@8, c3@8 a2@10 ~@8 f4@5 ~ a2@8 a2@10 ~@8 d4@4 ~@12 d4@4 ~@6 eb4@6 [eb4,bb4]@4 eb4@4 ~@2 d4@6 [d4,bb4]@4 ~@2, ~@4 eb3@5 ~ f3@6 bb2@8 bb2@10 ~@14 g2@8 g2@8 g2@8 g2@4 ~@4 eb3@8 eb3@10 ~@14, ~@12 a3@5 ~@3 bb3@10 bb3@4 ~@2 f3@6 [f3,c4]@4 f3@4 ~@4 bb3@6 bb3@4 ~@6 bb3@6 bb3@5 ~@5 g4@6 g4@5 ~@5 f4@5 ~ f4@4]/7", // Eb5 Gm F5
  U: "[~@2 c4 ~@7 f3 ~@4 f3, c3@3 c4@3 eb4@2 a2@4 a2@2 ~@2, ~@3 eb4@2 g4@2 c4@2 ~@4 c4@2 ~, ~@8 c3@9 ~@5 [f3,a3]@6 a3@4]/2", // F
  V: "~@7 bb3, bb2@6 d4@4 f4@5 ~, ~ bb3@2 d4, ~ bb2",
  W: "[~@23 g3, a2@6 a3@4 [f3,c4]@4 f3@4 ~@2 g3@6 [g3,d4]@4 g3@5 ~ g3@6 [g3,d4]@4 ~@2, ~ f3 a2@2 g2@2 g2@2 g2@2 g2@2, ~@12 a3@6 ~@4 bb3@5 ~ bb3@4 ~@6 bb3@5 ~ bb3@4]/3", // F5 G5
  X: "[~@23 c4, eb3@3 g4@2 [eb4,bb4]@2 eb4@2 ~ d4@3 [d4,bb4]@2 d4@2 ~ c4@3 g4@2 ~, ~@4 eb4@4 eb3@10 ~@4 f4@5 ~ f4@4 c3@8 c3@8, ~@12 g4@4 d3@8 d3@9 ~@5 eb4@5 ~ eb4@4]/3", // Eb5 Gm
  Y: "[~@47 eb4, c3@4 d3@4 eb3@4 eb3@4 d3@4 d3@4 c3@4 c3@4 d3@4 d3@5 ~@2 g4@2 bb4@2 ~, ~@4 c4@6 ~@4 f4@4 ~@4 g4@5 ~ g4@5 ~@5 f4@5 ~ f4@5 ~@5 eb4@4 g4@4 c4@4 ~@4 f4@4 bb4@4 d4@4 ~@2 eb4@7 ~ g4@4, ~@6 eb4@4 ~@2 d4@6 ~@2 eb4@6 [eb4,bb4]@4 eb4@4 ~@2 d4@6 [d4,bb4]@4 d4@4 ~@2 c4@8 eb4@6 ~@2 d4@7 ~ f4@4 eb3@8 eb3@8]/6", // Eb5 Gm
  Z: "[~@42 c4 ~@20 eb4, d3@6 f4@4 [d4,bb4]@4 d4@4 ~@2 c4@6 g4@4 c4@4 ~@2 d4@6 [d4,bb4]@4 d4@4 ~@2 eb4@6 bb4@4 eb4@4 ~@2 d4@6 [d4,bb4]@4 d4@4 ~@4 [c4,eb4]@5 ~ eb4@4 d3@8 d3@11 ~@3 g4@4 bb4@4 ~@2, ~@4 d4@4 d3@10 ~@4 eb4@5 ~ eb4@4 d3@8 d3@8 eb3@8 eb3@10 ~@4 f4@5 ~ f4@4 c3@8 c3@9 ~@5 f4@4 bb4@4 d4@4 ~@2 eb4@7 ~ g4@4, ~@12 f4@4 c3@8 c3@10 ~@4 f4@5 ~ f4@5 ~@5 g4@5 ~ g4@4 d3@8 d3@10 ~@8 g4@4 c4@4 ~@2 d4@7 ~ f4@4 eb3@8 eb3@8]/8", // Gm Cm
  AA: "[~@19 g3 ~@35 g3, d3@3 f4@2 [d4,bb4]@2 d4@2 ~ c4@5 c4@2 ~ eb3@2 ~ f3@2 c4@2 ~ bb3@4 d4@2 a2@4 a2@4 g2@4 g2@4 g2@4 g2@2 bb3@2, ~@4 d4@4 d3@8 c3@8 c3@4 eb4@5 ~@11 a3@4 bb2@8 bb2@10 ~@4 a3@6 a3@7 ~ g3@8 bb3@4 ~@6 bb3@4 d4@4 ~@2, ~@12 f4@5 ~@5 eb4@4 g4@4 ~@2 c3@8 a2@10 ~@4 d4@4 f4@4 bb3@4 ~@2 f3@6 [f3,c4]@4 f3@4 ~@4 bb3@4 d4@4 g3@5 ~ g3@10 ~@2]/7", // Gm F5
  AB: "[~@18 c4 ~@7 f3 ~@12 bb3, eb3@3 g4@2 [eb4,bb4]@2 eb4@2 ~ d4@3 [d4,bb4]@2 d4@2 ~@2 c4@3 eb4@2 a2@4 a2@2 ~@2 bb2@4 bb2@4, ~@4 eb4@4 eb3@10 ~@4 f4@5 ~ f4@4 c3@8 c3@9 ~@5 [f3,a3]@6 a3@5 ~@3 bb3@8 d4@4, ~@12 g4@4 d3@8 d3@9 ~@5 eb4@4 g4@4 c4@4 ~@8 c4@4 f3@4 ~@4 d4@4 f4@5 ~]/5", // Eb5 Gm F
  AC: "[~@23 g3, a2@6 a3@4 [f3,c4]@4 f3@4 ~@2 g3@6 [g3,d4]@4 g3@5 ~ g3@6 [g3,d4]@4 ~@2, ~ f3 a2@2 g2@2 g2@2 g2@2 g2@2, ~@12 a3@5 ~@5 bb3@5 ~ bb3@4 ~@6 bb3@5 ~ bb3@4]/3", // F5 G5
  AD: "[~@55 d4, c3@4 d3@4 eb3@4 eb3@4 d3@4 d3@4 c3@4 c3@4 d3@4 d3@5 ~@2 g4@2 bb4@2 eb4@2 ~ d4@3 [d4,bb4]@2 ~, ~@4 c4@6 ~@4 f4@4 ~@4 g4@5 ~ g4@5 ~@5 f4@5 ~ f4@5 ~@5 eb4@4 g4@4 c4@4 ~@4 f4@4 bb4@4 d4@4 ~@2 eb4@7 ~ g4@4 d3@8 d3@8, ~@6 eb4@4 ~@2 d4@6 ~@2 eb4@6 [eb4,bb4]@4 eb4@4 ~@2 d4@6 [d4,bb4]@4 d4@4 ~@2 c4@8 eb4@6 ~@2 d4@7 ~ f4@4 eb3@8 eb3@9 ~@5 f4@5 ~ f4@4]/7", // Gm Eb5 Gm
  AE: "[~@34 c4 ~@13 g4@2 ~ bb3@2 ~ g3@2, c3@6 eb4@4 g4@4 c4@4 ~@2 d4@6 [d4,bb4]@4 d4@4 ~@2 eb4@6 bb4@4 eb4@4 ~@2 d4@6 [d4,bb4]@4 d4@4 ~@4 [c4,eb4]@5 ~ eb4@4 d3@8 d3@11 ~ g3@4 ~@8, ~@4 c4@7 ~ eb4@4 d3@8 d3@8 eb3@8 eb3@10 ~@4 f4@5 ~ f4@4 c3@8 c3@9 ~@5 f4@4 bb4@4 d4@4 ~@4 g4@10, ~@8 c3@10 ~@4 f4@5 ~ f4@5 ~@5 g4@5 ~ g4@4 d3@8 d3@10 ~@8 g4@4 c4@4 ~@2 d4@7 ~ f4@4 eb3@9 ~ eb3@5 ~]/7", // Gm Cm
  AF: "[eb4@2 ~ g3@2 ~ eb3@2 d3@4 ~@4, c3@9 ~ c3@6 ~@16, ~@4 eb3@7 ~@21, ~@6 eb4@13 ~@13]/2",
  AG: "[eb4@4 ~@8 eb3@29 ~@7, c3@10 c3@31 ~@7, ~ eb3@2 ~@9, ~@3 [g3,eb4]@16 ~@5]/3", // Cm
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.4)

// chords · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel_2 = note("<~@108 A@4 ~@6 B@3 ~@6 C@4>".pickRestart({
  A: "[~@5 bb5@2 eb5@2 ~ d5@2 ~ bb5@2 d5@2 ~@4 g5@2 c5@2 ~@7, ~@4 eb5@7 ~@25 c5@10 ~@18, ~@4 eb4@5 ~@3 d4@5 ~@3 c4@2 ~@10]/4",
  B: "[~@17 bb4@25 ~@6, ~@15 d4@25 ~@8, ~@16 f4@25 ~@7]/3",
  C: "[~@8 [c3,g3]@17 ~@7, ~@14 [c4,eb4]@37 ~@13, ~@15 bb3@35 ~@14]/4", // C5 Cm
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(1)

// chords · acoustic guitar steel · "Guitar 3"
const acoustic_guitar_steel_3 = note(`<
  A B C@3 D E@2 A B C@3 D E@2 A B C@3 D F@2 G B C@3 D E@2 A B C@3 D E@2 A B C@3 D H@2 I J K L M N O ~ N P Q ~ R N O ~@16
  S N P Q ~ T I O ~ U V Q ~ W N X@2 ~@12 A B C@3 D E@2 A B Y@3 A B C@3 Z@4 ~
>`.pickRestart({
  A: "~@3 eb4, eb3@5 g4@3, eb4 eb4@2 ~, ~ bb3@5 ~@2, ~@6 g4@2 bb4@5 ~@3",
  B: "~@3 d4, d3@5 f4@3, d4 d4@2 ~, ~@2 bb3@9 ~@5, ~@3 f4 bb4@4",
  C: "[~@7 d4 ~@3 eb4, c3@8 bb4@8 d3@8 bb4@11 ~@3 g4@4 g4@6, c4 c4@3 d4 d4@2 ~ eb4 eb4@2 ~, ~@2 g3@8 g4@8 bb3@9 ~@5 eb3@8 bb4@8, ~@6 eb4@5 ~ eb4@7 ~@3 f4@4 f4@8 bb3@8 ~@6]/3",
  D: "~@3 d4, d3 bb4, d4 d4@2 ~, ~@2 bb3@7 ~@7, ~@3 f4@2 f4@3",
  E: "[~@3 eb4 ~@3 d4, c3@8 bb4@11 ~@3 f4@4 f4@6, c4 c4@3 d4 d4@2 ~, ~@2 g3@8 g4@8 bb3@5 ~ bb4@8, ~@6 eb4@5 ~@5 d3@7 ~@9]/2",
  F: "[~@6 eb4@3 ~@7, c3@8 bb4@11 ~@13, c4@2 c4@7 ~@7, ~ g3@4 g4@4 ~@7, ~@6 eb4@5 ~@21]/2",
  G: "~@3 eb4, ~ bb3@5 ~@2, ~ eb4@2 ~, ~@3 g4@2 g4@3, ~@8 bb4@5 ~@3",
  H: "[~@12 eb4@4 d4@2 eb4@9 ~@5, c3@8 bb4@11 ~@13, c4@2 c4@7 ~@7, ~ g3@4 g4@4 ~@7, ~@6 eb4@5 ~@21]/2", I: "d4@13 ~@3",
  J: "c4@13 ~@3", K: "bb3@13 ~@3", L: "bb3 ~", M: "eb4@3 ~", N: "d4@7 ~", O: "d4 eb4@7", P: "c4@7 ~", Q: "bb3",
  R: "eb4@11 ~@5", S: "~@4 d4 eb4@3", T: "eb4@13 ~@3", U: "d4", V: "c4", W: "eb4@7 ~", X: "[d4@2 eb4@19 ~@11]/2",
  Y: "[~@15 d4 ~ bb4@25 ~@6, c3@8 bb4@8 [d4,f4]@25 ~@7, c4@2 c4@6 d3@5 ~@11, ~@2 g3@8 g4@9 ~@29, ~@6 eb4@5 ~ eb4@7 ~@29]/3", // Dm
  Z: "[~@28 eb4@29 ~@7, d3@4 bb4@4 c4 g3@16 ~@7, d4@2 d4@4 d4@5 eb4 bb4@16 ~@4, ~@2 bb3@7 ~@7 c3@10 g4@31 ~@7, ~@3 f4@2 f4@5 c4@16 ~@6]/4",
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.9)

// other · electric guitar jazz · "Guitar 4"
const electric_guitar_jazz = note("<~@64 A@2 B C@2 D@2 ~ E@2 F G@2 H I J@2 ~@50>".pickRestart({
  A: "[~@8 bb4@2 c5 ~ d5@2 f5@12 ~@6]/2", B: "~@10 g5@5 ~", C: "[f5@8 d5@2 c5@2 bb4 ~ bb4@11 ~ c5@5 ~]/2",
  D: "[bb4@7 ~ g4@4 f4 ~ f4@15 ~@3]/2", E: "[~@8 bb4@2 c5@2 d5 ~ f5@14 ~@4]/2", F: "~ g5@6 ~ f5@7 ~",
  G: "[d5@3 ~@5 c5@4 bb4@2 g4@8 ~@2 bb4@3 ~ eb5@2 ~@2]/2", H: "d5@2 bb4 ~ d4@8 ~@2 bb4@2",
  I: "f4 bb4 a4 bb4 c5 bb4 a4 bb4", J: "[a4@2 g4@2 a4@2 g4@2 f4@2 g4@2 f4@15 ~@5]/2",
})).s("gm_electric_guitar_jazz").gain(0.55).pan(0.6)

stack(acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_steel_3, electric_guitar_jazz)

More by Stevie Nicks