Strudelify

Old Friends

Simon & Garfunkel

KeyE♭ majorTempo55 bpm
0:00/0:00
// Old Friends — Simon & Garfunkel
// 55 bpm, 6/8, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/4 at bar 1, 6/8 at bar 6, 3/4 at bar 14, 6/8 at bar 15, ...) are rendered on a constant 6/8 grid of one bar per cycle
// note: Full arrangement: all 42 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(55/3)

// 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 · "Guitar1 (12 strings)"
const acoustic_guitar_steel = note("<A B C D@3 E F G H I J K L M N O E P@3 Q R@2 S@2 T@4 U V@5 W@6>".pickRestart({
  A: "~ [eb4,g4]@10 ~ [g3,bb3,d4]@20, [ab3,c4]@11 eb3@21", B: "~ [eb4,g4]@10 ~ [bb3,d4]@20, [ab3,c4]@11 [eb3,g3]@21",
  C: "~@2 g3@9 ~ d3@20, ab2@11 [g2,bb2]@21, ~ [c3,eb3]@11 ~@20", D: "~ [eb3,g3]@10 ~ d3@20, [ab2,c3]@11 [g2,bb2]@21",
  E: "f3@5 g3@5 ~ ab3@5 ab3@5 g3@5 ~ f3@5, [ab2,c3] [bb2,d3]", F: "[eb3,bb3]@5 bb2@11 ~@11 c3@5, ~@5 eb3@21 ~@6, ~ g2",
  G: "[d3,f3]@5 ~ eb3@5 [f3,ab3]@5 [eb3,g3]@5 ~ f3@7 eb3@3, ~@5 g3@5 ~@11 d3@8 ~@3", H: "[bb2,f3]@16 bb2@5 d3@5 ~ f3@5",
  I: "eb3@5 c3@21 ~ c3@2 g3@3, g2",
  J: "~ [d3,f3]@15 ~ d3@10 ~@2 f3@3, [g2,bb2]@16 [g2,bb2]@11 [g2,bb2]@3 ~@2, ~@28 d3@3 ~", // Dm Gm
  K: "[ab2,c3,eb3]@16 ~ c3@15, ~ [g2,bb2]", L: "~ [c3,eb3]@15 ~ [d3,f3]@15, [f2,ab2] [g2,bb2]",
  M: "~ [eb3,g3]@10 ~ [bb2,d3]@20, [ab2,c3]@11 [eb2,g2]@21", // Eb Bb Ab Eb
  N: "f3@5 g3@5 ~ ab3@5 ab3@5 bb3@8 ab3@3, [ab2,c3] [bb2,d3]", // Ab Bb
  O: "~ [eb3,g3]@10 ~ [d3,f3]@19 ~, [ab2,c3]@11 [g2,bb2]@21", // Eb Dm Ab Gm
  P: "[bb3@5 ab3@5 ~ g3@5 f3@5 eb3@5 ~ f3@21 c3@5 ~@6 g3@5 ab3@5 ~@6 f3@5 eb3@3 ~@2 d3@5 ~ f3@5, [c3,eb3]@11 [ab2,c3]@10 g2@32 ab2@16 g2@16 ~@11, ~@21 c3@27 ~@5 f3@5 ~@11 g3@5 ~@22, ~@54 c3@16 [bb2,d3]@15 bb2@11]/3", // Cm Ab Bb
  Q: "d3@5 [c3,eb3]@5 ~ [g2,c3]@10 [eb2,g2]@5 ~ [g2,c3,eb3]@5", // Cm C5 Eb Cm
  R: "[[c3,eb3,g3]@5 bb2@5 ~ bb2@2 c3@3 bb2@3 c3@2 d3@3 c3@3 ~@5 d3@3 eb3@2 [c3,eb3]@5 ~ [ab2,c3]@21, ~@5 [d3,f3]@16 f3@11 ~@32, ~@27 bb2@11 ~@26]/2", // Cm Ab Dm
  S: "[c3@3 d3@2 ~@2 eb3@14 ~ [eb2,g2,bb2]@15 ~ [g2,bb2]@15 eb2@5 ~ g2@5, ab2@5 g2@16 c3@43, ~@6 [bb2,c3]@16 ~@15 eb2@16 ~@11]/2", // Eb Gm Bbsus2
  T: "[c3@5 ~@6 f3@5 f3@5 ~@6 g3@5 ab3@5 ~@6 bb3@8 bb3@2 ~@6 [c3,eb3]@5 [d3,f3]@5 ~ [ab3,c4,eb4]@5 ~ [ab3,c4]@4 ~ [d4,f4]@4 ~@2 eb4@4 ~ f3@8 ~ [eb3,g3]@3 [f3,ab3]@3 [g3,bb3]@21, ~@5 ab2@16 bb2@16 ~ f3@21 ~@10 f3@5 ~@6 [g3,bb3]@5 b3@5 ~@11 bb2@27, ~@5 f3@5 ~@11 f3@5 ~@11 bb3@5 ~@11 bb3@16 ~@6 [eb4,g4]@5 ~@48, ~@6 c3@16 d3@15 d3@21 ~@28 [f3,ab3]@5 [b2,bb3]@11 ~@26]/4", // Cm Dm Ab Dm Eb Fm Gm Eb …
  U: "[eb3,g3]@5 ~@6 g3@5 ab3@5 ~ bb2@10, ~@5 c3@16 [d3,f3]@11, ~@5 f3@5 ~@22, ~@3 ab2@8 ~@5", // Eb Dm
  V: "[eb3@3 d3@2 [c3,eb3]@3 [d3,f3]@3 [eb3,g3]@26 ~@2 bb3@9 ~ [d3,f3]@19 ~@7 g3@5 ab3@5 ~@6 bb3@8 ab3@2 ~@2 g3@9 ~ [d3,f3]@19 ~ f3@5 ~ g3@5 ab3@5 ab3@5 ~ g3@5, ~@5 g2@32 c3@11 [g2,bb2]@21 ab2@16 bb2@16 ab2@11 [g2,bb2]@21 [ab2,c3]@16 [bb2,d3]@11, ~@38 [eb3,g3]@11 ~@20 f3@5 ~@11 ab3@5 ~@70, ~@70 c3@16 d3@16 [c3,eb3]@11 ~@47]/5", // Cm Dm Eb Dm Gm Ab Bb Eb …
  W: "[f3@5 ~@2 bb3@14 ~ [c3,eb3]@47 ~@2 ab3@9 ~ [bb3,d4]@20 ~@2 g3@20 ~ d3@42 ~@26, ~@5 c3@16 g2@48 ~ [c4,eb4]@11 ~@21 [c3,eb3]@21 ~@69, ~@6 [eb3,g3]@16 ~@47 g4@11 [eb3,g3]@21 ab2@21 ~ [g2,bb2]@43 ~@26]/6", // Cm Bb Cm Eb Gm
})).s("gm_acoustic_guitar_steel").gain(0.41)

// chords · acoustic guitar steel · "Guitar2 (12 strings)"
const acoustic_guitar_steel_2 = note("<A@4 B@2 C D E F G H I J K L M C N@5 O@7 P@2 Q@6 R@4>".pickRestart({
  A: "[ab2,eb3]@11 [eb2,eb3]@21", B: "[ab2,eb3]@11 [eb2,eb3]@10 [eb2,bb2]@11",
  C: "[f2,eb3]@16 f3@5 g3@5 ~ ab3@5, ~ bb2", D: "[eb3,g3]@11 [d3,f3]@5 [c3,eb3]@16", E: "bb3",
  F: "d3@5 f3@5 ~ d3@5 bb2@16", G: "c3@5 g2@5 ~ c3@5 eb3@16", H: "bb2@16 eb2@5 bb2@5 ~ eb3@5", I: "ab2 eb2",
  J: "ab2 [eb2,bb2]", K: "[ab1,ab2]@11 [eb2,bb2]@21", L: "[f2,eb3] [bb2,f3]", M: "[ab2,eb3]@11 [g2,d3]@21",
  N: "[g3@5 f3@5 ~ [f2,eb3]@10 [c2,c3]@16 c2@5 ~ g2@5 eb3@5 [f2,eb3]@16 [eb2,bb2]@16 f3@5 ~ d3@5 f3@5 g3@5 ~ eb3@10 c3@16 bb2@16 bb2@5 ~ d3@5, eb2@11 ~@74 g2@16 c3@16 ~@43]/5", // F7 C F7 Eb5
  O: "[f3@5 ab3@11 eb3@5 ab2@16 eb2@16 eb2@16 eb2@3 g2@3 f2@2 eb2@3 d2@3 c2@2 c2@16 [f2,eb3]@16 ab3@5 ~ g3@5 f3@5 [eb3,g3]@32 [ab2,eb3]@32 eb2@5 ~ bb2@5 eb3@5 g3@5 ~ eb3@5, ~@117 bb2@16 ~@91]/7", // F7 Eb Ab5
  P: "[bb2@5 [f2,eb3]@16 [bb2,ab3]@16 c3@16 c2@5 ~ g2@5]/2", // F7 Bb7
  Q: "[c3@5 [ab2,eb3]@11 [eb2,eb3]@21 [f2,eb3]@16 [bb2,f3]@16 [ab2,eb3]@11 [g2,d3]@21 [f2,eb3]@16 f3@5 ~ g3@5 ab3@5 eb3@11 d3@5 c3@16 c2@5 ~ eb2@5 g2@5 c3@5 ~ eb3@5, ~@117 bb2@16 ~@59]/6", // Ab5 Eb F7 Bb5 Ab5 G5 F7
  R: "[g3@5 ab3@11 eb3@53 [eb2,bb2]@32 ~@27]/4", // Eb5
})).s("gm_acoustic_guitar_steel").gain(0.41)

stack(acoustic_guitar_steel, acoustic_guitar_steel_2)

More by Simon & Garfunkel