Strudelify
Lay Lady Lay cover art

1969 · Nashville Skyline

Lay Lady Lay

Bob Dylan

KeyA majorTempo86 bpm
0:00/0:00
// Lay Lady Lay — Bob Dylan
// 86 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · acoustic bass · "Acou Bass"
const bass = note(`<
  ~@2 A B A C A B A B D E D F A B A G A G A G A B A G D H D E A G A G I J K L I J M N A B A B A C A G D H D O A G A C P
  Q R S
>`.pickRestart({
  A: "a1 ~ c#2 ~", B: "g2@2 ~@2 b1@2 ~ b1", C: "g2@2 ~ g2 b1@2 ~@2", D: "e2@3 e2 f#2@3 f#2", E: "a1@3 a1 e2@3 a1",
  F: "a1@3 a1 e2@3 g#1", G: "g2 ~ b1 ~", H: "a1@3 a1 e2@3 e2", I: "c#2@3 c#2 g#2@3 g#2", J: "e2 f#2@2 a1@4 a1",
  K: "c#2@3 c#2 c#2@2 b1@2", L: "a1@3 a1 e2@3 d2", M: "c#2@3 c#2 g#1@3 g#1", N: "b1@3 b1 f#1@3 f#1",
  O: "a1@3 a1 e2@2 b1@2", P: "a1 ~ b1 ~", Q: "c#2 ~ d2 ~", R: "a1@2 ~ a1 e2@2 a1@2", S: "a1",
})).s("gm_acoustic_bass").gain(0.45)

// chords · acoustic guitar steel · "SteelStrGuitar (fingers)"
const acoustic_guitar_steel = note(`<
  ~@2 A B C D E F G D H I J I K B L M G B N F O P Q R S I J T U V Q W X Y Z T AA AB X AC AD B K M AE F AF F AG I AH I AE
  F AF B AI AJ AK AL
>`.pickRestart({
  A: "~@7 e3 ~@7 g#4, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#4@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2",
  B: "[b2,d4]@2 ~@5 d4 [d3,f#3]@2 ~@5 f#3, g4@5 g4@3 b4@5 b4@3, ~ b2@2 b2 ~ d3@2 d3, ~@3 d4@4 ~@4 f#3@4 ~", // Bm D
  C: "e4@2 ~@5 e4 ~@7 g#4, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#4@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2",
  D: "[b2,d3]@2 ~@5 d3 [d3,f#4]@2 ~@5 f#4, g4@5 g4@3 b4@5 b4@3, ~@2 b2@4 b2@2 ~@3 f#3@4 ~, ~@3 d3@4 ~@3 d3@4 d3@2", // Bm D
  E: "e4@2 ~@5 e4 ~@7 g#3, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#3@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2",
  F: "[b2,d3]@2 ~@5 d3 [d3,f#3]@2 ~@5 f#3, g4@5 g4@3 b4@5 b4@3, ~@2 b2@4 b2@2 ~@3 f#3@4 ~, ~@3 d3@4 ~@3 d3@4 d3@2", // Bm D
  G: "~@7 e4 [e3,g#3]@2 ~@5 g#3, a4@5 a4@3 c#5@5 c#5@3, ~ c#3@2 c#3 ~ e3@2 e3, ~@3 e4@4 ~@4 g#3@4 ~", // E
  H: "b4@2 ~@5 b4 ~@7 c#3, e5@5 e5@3 ~@3 c#3@4 ~, ~ g#3@2 g#3 ~ a2@2 a2, ~@3 b3@4 ~ f#4@5 f#4@3",
  I: "[c#3,e3]@2 ~@13 e3, a4@5 a4@3 a4@5 a4@3, ~ c#3@2 c#3@2 c#3@2 c#3, ~@3 e3@4 e3@4 e3@4 ~", // C#m
  J: "~@7 b3 ~@7 c#3, e5@5 e5@3 ~@3 c#3@4 ~, ~ g#3@2 g#3 ~ a2@2 a2, ~@3 b3@4 ~ f#4@5 f#4@3",
  K: "~@7 e4 ~@7 g#4, a4@5 a4@3 c#5@5 c#5@3, ~ c#3@2 c#3 ~ e3@2 e3, ~@3 e4@4 ~@4 g#4@4 ~",
  L: "~@7 e3 g#4@2 ~@5 g#4, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#3@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2",
  M: "[b2,d4]@2 ~@5 d4 [d3,f#3]@2 ~@5 f#3, g4@5 g4@3 b4@5 b4@3, ~@2 b2@4 b2@2 ~@3 f#3@4 ~, ~@3 d3@4 ~@3 d3@4 d3@2", // Bm D
  N: "[c#3,e3]@2 ~@5 e3 ~@7 g#3, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#3@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2", // C#m
  O: "~@7 e3 [e3,g#3]@2 ~@5 g#3, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#3@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2", // E
  P: "[b2,d4]@2 ~@5 d4 [d3,f#4]@2 ~@5 f#4, g4@5 g4@3 b4@5 b4@3, ~ b2@2 b2 ~ d3@2 d3, ~@3 d4@4 ~@4 f#4@4 ~", // Bm D
  Q: "[c#3,e3]@2 ~@5 e3 [e3,g#3]@2 ~@5 g#3, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#3@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2", // C#m E
  R: "[b2,d4]@2 ~@5 d4 [d3,f#4]@2 ~@5 f#4, g4@5 g4@3 b4@5 b4@3, ~@2 b2@4 b2@2 ~@3 f#3@4 ~, ~@3 d3@4 ~@3 d3@4 d3@2", // Bm D
  S: "~@7 b4 ~@7 c#3, e5@5 e5@3 ~@3 c#3@4 ~, ~ g#3@2 g#3 ~ a2@2 a2, ~@3 b4@4 ~ f#4@5 f#4@3",
  T: "[c#3,e4]@2 ~@13 e4, a4@5 a4@3 a4@5 a4@3, ~ c#3@2 c#3@2 c#3@2 c#3, ~@3 e4@4 e4@4 e4@4 ~", // C#m
  U: "~@7 e4 ~@7 g#3, a4@5 a4@3 c#5@5 c#5@3, ~ c#3@2 c#3 ~ e3@2 e3, ~@3 e4@4 ~@4 g#3@4 ~",
  V: "[b2,d3]@2 ~@5 d3 [d3,f#4]@2 ~@5 f#4, g4@5 g4@3 b4@5 b4@3, ~@2 b2@4 b2@2 ~@3 f#4@4 ~, ~@3 d3@4 ~@3 d3@4 d3@2", // Bm D
  W: "[b2,d4]@2 ~@5 d4 [d3,f#4]@2 ~@5 f#4, g4@5 g4@3 b4@5 b4@3, ~@2 b2@4 b2@2 ~@3 f#4@4 ~, ~@3 d3@4 ~@3 d3@4 d3@2", // Bm D
  X: "~@15 g#3, c#5@5 c#5@3 c#5@5 c#5@3, ~ e3@2 e3@2 e3@2 e3, ~@3 g#3@4 g#3@4 g#3@4 ~",
  Y: "[g#3,b4,e5] ~ [a2,c#3,f#4]@3 ~ [c#3,e3]@4 ~@5 e3, ~@6 a4@7 a4@3, ~@5 c#3@2 c#3, ~@11 e3@4 ~", // E F#m C#m
  Z: "~@7 g#4 ~@3 g#3 d3@2 ~ f#3, c#5@5 c#5@3 ~@8, ~ e3@2 e3 ~ e3 [f#3,b4]@2, ~@3 g#4@4 ~ [g#4,c#5]@4 ~@2 d3@2", // B5 C#5
  AA: "[e3,g#3]@2 ~@13 g#3, c#5@5 c#5@3 c#5@5 c#5@3, ~ e3@2 e3@2 e3@2 e3, ~@3 g#3@4 g#3@4 g#3@4 ~", // E
  AB: "[g#3,b3,e5] ~ [a2,c#3,f#4]@3 ~ [c#3,e3]@4 ~@5 e3, ~@6 a4@7 a4@3, ~@5 c#3@2 c#3, ~@11 e3@4 ~", // E F#m C#m
  AC: "[d3,f#4]@2 ~@13 f#4, b4@5 b4@3 b4@4 b3@4, ~@2 d3@4 d3@4 d3@3 b4@3, ~@3 f#3@4 f#4@4 f#3@5, ~@7 d3", // D
  AD: "~@7 e3 ~@7 g#3, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#3@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2",
  AE: "e4@2 ~@5 e4 [e3,g#3]@2 ~@5 g#3, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#3@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2", // E
  AF: "[c#3,e3]@2 ~@5 e3 ~@7 g#4, a4@5 a4@3 c#5@5 c#5@3, ~@2 c#3@4 c#3@2 ~@3 g#4@4 ~, ~@3 e3@4 ~@3 e3@4 e3@2", // C#m
  AG: "b4@2 ~@5 b4 [a2,c#3]@2 ~@5 c#3, e5@5 e5@3 ~@3 c#3@4 ~, ~ g#3@2 g#3 ~ a2@2 a2, ~@3 b3@4 ~ f#4@5 f#4@3", // A
  AH: "[g#3,b3]@2 ~@5 b3 ~@7 c#4, e5@5 e5@3 ~@3 c#4@4 ~, ~ g#3@2 g#3 ~ a2@2 a2, ~@3 b3@4 ~ f#4@5 f#4@3", // G#m
  AI: "e4@2 ~@5 e4 ~@7 f#3, a4@5 a4@3 b4@5 b4@3, ~ c#3@2 c#3 ~ d3@2 d3, ~@3 e3@4 ~@4 f#3@4 ~",
  AJ: "[e3,g#3]@2 ~@5 g#3 [f#3,a4]@2 ~@5 a4, c#5@5 c#5@3 d5@5 d5@3, ~ e3@2 e3 ~ f#3@2 f#3, ~@3 g#3@4 ~@4 a4@4 ~", // E F#m
  AK: "~@15 e3, a4@5 a4@3 a4@5 a4@3, ~ c#3@2 c#3@2 c#3@2 c#3, ~@3 e3@4 e3@4 e3@4 ~", AL: "[c#3,e3,a4]",
})).s("gm_acoustic_guitar_steel").gain(0.32)

// chords · acoustic guitar nylon · "Nylon Guitar"
const acoustic_guitar_nylon = note("<~@10 A B C B ~@12 A D A B ~@4 E F G H I J I K ~@8 L B M D ~@6 H N>".pickRestart({
  A: "~ [g#3,e4,b4] ~ [f#3,a3,c#4,f#4]", B: "~@4 [a3,c#4,e4,a4]@8 [a3,c#4,e4,a4] ~@3",
  C: "~ [g#3,b3,e4] ~ [f#3,a3,c#4,f#4]", D: "~@4 [a3,c#4,e4]@8 [a3,c#4,e4] ~@3",
  E: "~@4 [c#4,e4,g#4]@8 [c#4,e4,g#4] ~@3", F: "~ [f#3,a3,c#4]@2 ~@3 [a3,c#4,e4,a4]@2",
  G: "~ [c#4,e4,g#4] ~ [b3,d4,f#4,b4]", H: "~@4 [c#4,a4,e5]@8 [c#4,a4,e5] ~@3",
  I: "~@4 [c#4,e4,g#4,c#5]@8 [c#4,e4,g#4,c#5] ~@3", J: "~ [a3,c#4,f#4]@2 ~@3 [c#4,a4,e5]@2",
  K: "~@4 [b3,d4,f#4,b4]@8 [b3,d4,f#4,b4] ~@3", L: "~ [g#3,e4,b4] ~ [a3,f#4,c#5]", M: "~ [g#3,b3,e4] ~ [f#3,a3,c#4]",
  N: "[c#4,a4,e5]", // A
})).s("gm_acoustic_guitar_nylon").gain(0.24)

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

// drums · rim
const rim = s("rim").struct("<A B C@7 D ~@4 C@3 E C@7 E ~@4 C@3 F ~@8 C@7 D ~@4 C@5 D G H>".pickRestart({
  A: "x!2", B: "x!4", C: "~ x ~ x", D: "~@2 x!3 ~@5 x!3 ~@3", E: "~@4 x ~@5 x!3 ~ x ~", F: "~@4 x ~@3 x ~@3 x ~ x!2",
  G: "~@4 x ~@5 x!3 ~@3", H: "x",
})).gain(0.54)

// drums · snare
const snare = s("sd").struct("<~@10 A@3 B ~@12 A C A D ~@4 A C A C A@3 B ~@8 A C A E ~@6 C F>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!3 ~ x!3 ~ x!3 ~ x ~", C: "~@2 x ~@3 x!2", D: "~@4 x ~@3 x ~@3 x ~ x!2",
  E: "~@4 x ~@5 x!3 ~ x ~", F: "x",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@53 [~ x ~@2] ~@8>").gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A@3 B C B D E D E A@2 F B A@2 G A@3 C A@3 D A@2 C H E B I B C A B J@2 K A L M B I A@3 N C A@2 C L A C A D B@2 ~
>`.pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x ~", C: "x ~ x!3 ~ x ~ x ~ x!3 ~ x!2",
  D: "x ~ x ~ x ~ x!3 ~ x!3 ~ x!2", E: "x ~ x!3 ~ x!3 ~ x ~ x ~ x!2", F: "~@2 x!3 ~ x ~ x ~ x ~ x ~ x!2",
  G: "~@2 x ~ x ~ x!3 ~ x ~ x ~ x!2", H: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", I: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
  J: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x!2", K: "x ~ x ~ x ~ x!3 ~ x!3 ~ x ~", L: "~@2 x!3 ~ x!3 ~ x!3 ~ x ~",
  M: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~", N: "x ~ x!3 ~ x!3 ~ x ~ x ~ x ~",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@7 x] ~@39 [~@7 x] ~@9 [~@7 x] ~@2>").gain(0.42)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A B A C D C D ~@2 E A ~@2 F ~@3 B ~@3 C ~@2 B ~ D A G A B ~ A F@2 H ~ A I A G ~@3 J B ~@2 B A ~ B ~ C A@2 K
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~@3 x ~@12", D: "~@11 x ~@4", E: "~@7 x ~@3 x ~@4", F: "~@3 x ~@7 x ~@4",
  G: "~@3 x ~@3 x ~@8", H: "~@3 x ~@11 x", I: "~@7 x ~@7 x", J: "~@11 x ~@3 x", K: "x",
})).gain(0.42)

// drums · crash
const crash = s("cr").struct("<~@10 x ~@15 x ~@23 x ~@10 x>").gain(0.42)

// drums · ride
const ride = s("rd").struct("<~@10 A B@3 C ~@3 C ~@7 A B@3 C ~@2 C B@8 C ~@7 A B@3 C ~@5 D ~>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "x!2",
})).gain(0.54)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_nylon, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, crash, ride
)

More by Bob Dylan