Strudelify
50 Ways to Leave Your Lover cover art

Still Crazy After All These Years

50 Ways to Leave Your Lover

Paul Simon

KeyG majorTempo98 bpm
0:00/0:00
// 50 Ways to Leave Your Lover — Simon Paul
// 98 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A B C D E B F G A B C D H B F G A B I J K L M N F O P Q R S T U V W X Y V W S Z V AA AB A B C D H B F G A B I J K
  L F N F O P Q R S T U V AC X Y V W S Z V AA AB A B C D H B F G
>`.pickRestart({
  A: "g3@8 d3@7 ~", B: "c3 b2", C: "e3@8 d#3@7 ~", D: "g2@8 b2@5 ~ d3 d#3", E: "e3@7 ~ d3@7 ~", F: "e3 a2", G: "e3@7 ~",
  H: "e3@8 d3@7 ~", I: "e3@7 ~ d#3@8", J: "g2@8 b2@6 d3 d#3", K: "e3@7 ~ d3@8", L: "c3@7 ~ b2@8", M: "e3@8 a2@7 ~",
  N: "e3@15 ~", O: "e3@7 ~ e3 ~@7", P: "g2@3 ~ g2@3 ~ g2@3 ~ g2@4", Q: "a#2@3 ~ a#2@3 ~ a#2@3 ~ a#2@4",
  R: "c3@3 ~ c3@3 ~ c3@3 ~ c3@4", S: "g2 d3 g3 d3", T: "g2 d3 g3 g2", U: "a#2 d3 a#3 f3", V: "c3 e3 g3 c3",
  W: "g2 b2 d3 g3", X: "g2 g3 g2 g3", Y: "a#2 f3 a#3 f3", Z: "a#2 d3 a#3 d3", AA: "g2@8 g3@6 d3 g3",
  AB: "g2 ~ g2@3 d3 ~ g2 g3@6 ~@2", AC: "g2@3 ~ b2@4 d3@4 g3@4",
})).s("gm_fretless_bass").gain(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@4 A B C D A E F G A B H D A E F G A I C J K L M N O P Q R S T U V W X Y R Z AA U V W AB@2 A B H D A E F G A I C J K
  L M N O P AC R S AD AE V AF AG Y R Z AH AE V AF AB@2 A B H D A AI ~@2
>`.pickRestart({
  A: "[e3,g3,b3]@7 ~ [d3,f#3,a3,b3]@7 ~", B: "[c3,e3,g3,b3]@7 ~ [d#3,f#3,c4]@4 [d#3,f#3,b3]@3 ~",
  C: "[d3,e3,g3,b3]@7 ~ [d#3,g3,b3]@7 ~", D: "[b2,d#3,a3]@8 [b2,d#3,g3]@7 ~",
  E: "[c3,e3,g3,b3]@7 ~ [d#3,c4]@3 ~ [d#3,b3]@3 ~", F: "[e3,g3,b3]@8 [c3,e3,a3]@7 ~, d3@3 ~@5", G: "[b2,e3,g3]@7 ~",
  H: "[d3,e3,b3]@8 [d#3,g3,b3]@7 ~, g3@3 ~@5", I: "[c3,e3,g3,b3]@6 ~@2 [d#3,f#3,c4]@3 ~ [d#3,f#3,b3]@3 ~",
  J: "[b2,d#3,a3]@7 ~ [b2,d#3,g3]@7 ~", K: "[d3,e3,g3,b3]@7 ~ [d3,f#3,a3,b3]@7 ~",
  L: "[c3,e3,g3,b3]@7 ~ [d#3,f#3,c4]@3 ~ [d#3,f#3,b3]@3 ~", M: "[d3,e3,g3,b3]@7 ~ [c3,e3,a3]@7 ~", N: "[b2,e3,g3]@15 ~",
  O: "[e3,g3,b3]@8 [c3,e3,a3]@7 ~", P: "[b2,e3,g3]@8 [b2,e3,g3] ~@7",
  Q: "[b3,d4] ~ [c4,e4] ~ [b3,d4,f4]@2 ~ [c4,e4]@2 g3 [b3,d4]@2 ~ [c4,e4]@2 ~, g3@2 ~@2 g3 ~ g3@2 ~@8", // Bm C Bdim C Bm C
  R: "~@2 [d4,f4,g4,a#4] ~@2 [d4,f4,g4,a#4] ~ [d4,f4,g4,a#4]@8 ~", // Gm7
  S: "[c4,d#4,e4,g4] ~ [c4,f4,a4] ~ [g4,a#4]@2 c4 [f4,a4]@2 c4 [e4,g4]@2 c4 [f4,a4]@2 c4, ~@4 c4 ~@11", // C F Gm F Em F
  T: "~@2 [g3,b3,d4] ~@2 [g3,c4,e4] ~ [b3,d4,f4]@2 ~ [c4,e4] ~ [g3,b3,d4]@2 [g3,c4,e4] ~, ~@7 [g3,a#3] ~@8", // G C Bdim C G C Gm
  U: "~@2 [g3,b3,d4] ~@2 [g3,c4,e4] ~ [b3,d4,f4]@2 g3 [c4,e4] ~ d4!2 [e4,a4] [b4,c5,d5], ~@7 [g3,a#3] ~@4 [g3,b3]@2 ~@2", // G C Bdim C A5 Bm Gm G
  V: "[d5,f5,g5,a#5] ~ [d5,f5,g5,a#5]@11 e5 [f4,g4,a4,b4,c5] e4", // Gm7 F
  W: "[c4,d#4,e4,g4,g#4] ~ [c4,f4,a4] ~ [g4,a#4]@2 ~ [f4,a4]@2 ~ [d#4,g4] ~ a4 [e4,g4]@2 ~, ~@4 c4 ~@4 c4@2 ~@2 c4 ~@2, ~@5 e4 ~@2", // G#maj7 F Gm F D# Em
  X: "~@2 [g3,b3,d4] ~@2 [g3,c4,e4] ~ [g3,b3,d4,f4] ~@2 [c4,e4] ~ [b3,d4]@2 [g3,c4,e4] ~", // G C G7 C Bm C
  Y: "~@2 [g3,b3,d4] ~@2 [g3,c4,e4] ~ [g3,d4,f4]@3 [c4,d4,e4] ~ [g3,b3,d4]@3 ~, ~@7 g4 ~@8", // G C G7 C G
  Z: "[c4,g4]@2 [f4,a4] ~ [g4,a#4]@2 ~ [f4,a4]@2 ~ [e4,g4] ~ [f4,a4] ~ [c4,e4,g4] ~, [d#4,e4] ~@3 c4 ~ c4@2 ~ c4@2 ~@5", // C5 F Gm F Em F C Emaj7
  AA: "g3 [b3,d4]@2 g3 [c4,e4]@2 ~ [d4,f4] ~ f4 [c4,e4] ~ [b3,d4]@2 [g3,c4,e4] ~, ~@5 g3 ~@2", AB: "[[g3,g4]@31 ~]/2",
  AC: "[b3,d4] ~ [c4,e4] ~ [b3,d4,f4]@2 ~ [c4,e4]@2 g3 [b3,d4]@2 ~ [c4,e4]@2 g3, g3@2 ~@2 g3 ~ g3@2 ~@4 g3@2 ~@2", // Bm C Bdim C Bm C
  AD: "~@2 [g3,b3,d4] ~@2 [g3,c4,e4] ~ [g3,a#3,d4] ~ d4 [c4,e4] ~ [g3,b3,d4]@2 [g3,c4,e4] ~, ~@7 [b3,f4]@2 ~@7", // G C Gm C G C Bdim
  AE: "~@2 [g3,b3,d4] ~@2 [g3,c4,e4] ~ [b3,d4,f4]@2 g3 [c4,e4] ~ d4!2 [e4,g4,a4] [b4,c5,d5], ~@7 [g3,a#3] ~@4 [g3,b3]@2 ~@2", // G C Bdim C A7 Bm Gm G
  AF: "[c4,d#4,e4,g4,g#4] ~ [c4,f4,a4] ~ [g4,a#4]@2 ~ [f4,a4]@2 ~ [d#4,g4] ~ [f4,a4] [e4,g4]@2 ~, ~@4 c4 ~@4 c4@2 ~@2 c4 ~@2, ~@5 e4 ~@2", // G#maj7 F Gm F D# F Em
  AG: "~@2 [g3,b3,d4] ~@2 [g3,c4,e4] ~ [g3,b3,d4,f4] ~ b3 c4@2 [b3,d4]@2 [g3,c4,e4] ~, ~@10 e4 ~ g3 ~@3", // G C G7 Bm C
  AH: "g3 [b3,d4]@2 g3 [c4,e4]@2 ~ [d4,f4] ~ [d4,f4] [c4,e4] ~ [b3,d4]@2 [g3,c4,e4] ~, ~@3 g3 ~ g3 ~@2", // Bm C Dm C Bm C
  AI: "[c3,e3,g3,b3]@7 ~ [d#3,c4]@3 ~@5", // Cmaj7 Cm
})).s("gm_string_ensemble_1").gain(0.22)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@23 A ~@6 B ~@2 C D ~ E F ~@2 G H D ~ E ~@13 A ~@9 I J ~ K L ~@2 G ~ J ~ K ~@7 M N O
>`.pickRestart({
  A: "~@7 g3 ~@8", B: "~@12 g3@2 ~ g3", C: "~@9 [b3,d4,f4] ~@6, ~@9 g3@2 ~@5", D: "~@14 [f4,g4] ~",
  E: "~@6 c4 ~@5 [c4,f4] ~@3", F: "~@9 [b3,d4,f4] ~@2 g3 ~@3, ~@9 g3@2 ~@5", G: "~@12 c4 ~@3", H: "~@6 g3@2 ~ d4 ~@6",
  I: "~@9 [b3,f4] ~@6, ~@9 g3@2 ~@5", J: "~@14 f4 ~", K: "~@6 c4 ~@5 c4 ~@3", L: "~@9 [d4,f4] ~@6, ~@9 g3@2 ~@5",
  M: "~@12 [d#3,b3]@3 ~", N: "[e3,g3,b3]@8 [c3,e3,a3]@7 ~, d3@3 ~@5", O: "[b2,e3,g3]@7 ~",
})).s("gm_string_ensemble_1").gain(0.13)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@4 A B C D A E F G H B C D A I F G A J K D L J F M N O P Q R S T U V W X Q Y Z T U AA AB@2 A B C D A E F G A J K D L
  J F M N O AC Q R S T U V W X Q Y Z T U AA AB@2 A B C D A AD ~@2
>`.pickRestart({
  A: "[e4,g4,b4]@7 ~ [d4,f#4,a4,b4]@7 ~", B: "[c4,e4,g4,b4]@7 ~ [d#4,f#4,c5]@4 [d#4,f#4,b4]@3 ~",
  C: "[d4,e4,b4]@8 [d#4,g4,b4]@7 ~, g4@3 ~@5", D: "[b3,d#4,a4]@8 [b3,d#4,g4]@7 ~",
  E: "[c4,e4,g4,b4]@7 ~ [d#4,c5]@3 ~ [d#4,b4]@3 ~", F: "[d4,e4,g4,b4]@8 [c4,e4,a4]@7 ~", G: "[b3,e4,g4]@7 ~",
  H: "[e4,g4,b4] ~@7 [d4,f#4,a4,b4]@7 ~", I: "[c4,e4,g4,b4]@7 ~ [d#4,c5]@4 [d#4,b4]@3 ~",
  J: "[c4,e4,g4,b4]@7 ~ [d#4,f#4,c5]@3 ~ [d#4,f#4,b4]@3 ~", K: "[d4,e4,g4,b4]@8 [d#4,g4,b4]@7 ~",
  L: "[d4,e4,g4,b4]@7 ~ [d4,f#4,a4,b4]@7 ~", M: "[b3,e4,g4]@15 ~", N: "[e4,g4,b4]@8 [c4,e4,a4]@7 ~",
  O: "[b3,e4,g4]@8 [b3,e4,g4] ~@7", // Em
  P: "[b4,d5] ~ [c5,e5] ~ [b4,d5,f5]@2 ~ [c5,e5]@2 g4 [b4,d5]@2 ~ [c5,e5]@2 ~, g4@2 ~@2 g4 ~ g4@2 ~@4 g4@2 ~@2", // Bm C Bdim C Bm C
  Q: "~@2 [d5,f5,g5,a#5] ~@2 [d5,f5,g5,a#5] ~ [d5,f5,g5,a#5]@8 ~", // Gm7
  R: "[c5,d#5,e5,g5] ~ [c5,f5,a5] ~ [g5,a#5]@2 c5 [f5,a5]@2 c5 [e5,g5]@2 c5 [f5,a5]@2 c5, ~@4 c5 ~@11", // C F Gm F Em F
  S: "~@2 [g4,b4,d5] ~@2 [g4,c5,e5] ~ [b4,d5,f5]@2 d5 c5@2 [g4,b4,d5]@2 [g4,c5,e5] ~, ~@7 [g4,a#4] ~@2 e5 ~@5", // G C Bdim G C Gm
  T: "~@2 [g4,b4,d5] ~@2 [g4,c5,e5] ~ [b4,d5,f5]@2 g4 [c5,e5] ~ d5!2 [e5,g5,a5] [b5,c6,d6], ~@7 [g4,a#4] ~@4 [g4,b4]@2 ~@2", // G C Bdim C A7 Bm Gm G
  U: "[d6,f6,g6,a#6] ~ [d6,f6,g6,a#6]@11 e6 [f5,g5,a5,b5,c6] e5", // Gm7 F
  V: "[d#5,e5,g5,g#5] ~ [c5,f5,a5] ~ [g5,a#5]@2 ~ [f5,a5]@2 ~ [d#5,g5] ~ a5 [e5,g5]@2 ~, c5@2 ~@2 c5 ~@4 c5@2 ~@2 c5 ~@2, ~@5 e5 ~@2", // Emaj7 F Gm F D# Em
  W: "~@2 [g4,b4,d5] ~@2 [g4,c5,e5] ~ [g4,b4,d5,f5] ~ b4 c5@2 [b4,d5]@2 [g4,c5,e5] ~, ~@10 e5 ~@5", // G C G7 Bm C
  X: "~@2 [g4,b4,d5] ~@2 [g4,c5,e5] ~ [g4,d5,f5]@3 [c5,d5,e5] ~ [g4,b4,d5]@3 ~, ~@7 g5 ~@8", // G C G7 C G
  Y: "[c5,g5]@2 [f5,a5] ~ [g5,a#5]@2 c5 [f5,a5]@2 ~ [e5,g5] ~ [f5,a5] ~ [c5,e5,g5] ~, [d#5,e5] ~@3 c5 ~@4 c5@2 ~@5", // C5 F Gm F Em F C Emaj7
  Z: "g4 [b4,d5]@2 g4 [c5,e5]@2 ~ [d5,f5] ~ [d5,f5] [c5,e5] ~ [b4,d5]@2 [g4,c5,e5] ~, ~@5 g4 ~@2", // Bm C Dm C Bm C
  AA: "[c5,d#5,e5,g5,g#5] ~ [c5,f5,a5] ~ [g5,a#5]@2 ~ [f5,a5]@2 ~ [d#5,g5] ~ a5 [e5,g5]@2 ~, ~@4 c5 ~@4 c5@2 ~@2 c5 ~@2, ~@5 e5 ~@2", // G#maj7 F Gm F D# Em
  AB: "[[g4,g5]@31 ~]/2", // G
  AC: "[b4,d5] ~ [c5,e5] ~ [b4,d5,f5]@2 ~ [c5,e5]@2 ~ [b4,d5]@2 ~ [c5,e5]@2 ~, g4@2 ~@2 g4 ~ g4@2 ~ g4@2 ~ g4@2 ~@2", // Bm C Bdim C Bm C
  AD: "c4@7 ~ [d#4,c5]@3 ~ b4@3 ~", // Cm
})).s("gm_piano").gain(0.47)

// chords · piano · "A.PIANO" · soft notes
const piano_soft = note(`<
  ~@23 A ~@6 B ~@2 C D ~ E F ~@2 G H D ~ E ~@13 A ~@6 B ~@2 C D ~ E F ~@2 G H D ~ E ~@7 I J K
>`.pickRestart({
  A: "~@7 g4 ~@8", B: "~@15 g4", C: "~@9 [b4,f5] ~@6, ~@9 g4@2 ~@5", D: "~@14 f5 ~", E: "~@6 c5 ~@5 [c5,f5] ~@3",
  F: "~@9 [d5,f5] ~@2 g4 ~@3, ~@9 g4@2 ~@5", G: "~@12 c5 ~@3", H: "~@3 g4 ~@4", I: "[e4,g4,b4]@7 ~@5 d#4@3 ~",
  J: "[d4,e4,g4,b4]@8 [c4,e4,a4]@7 ~", K: "[b3,e4,g4]@7 ~",
})).s("gm_piano").gain(0.27)

// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note(`<
  ~@4 A B C D A E F G ~@18 H I J K H I L H@2 M J N H I L O ~@20 I J K@2 I L H@2 M J N H I L O ~ A B P D A ~@3
>`.pickRestart({
  A: "[e4,g4]@7 ~ [f#4,a4]@8", B: "[g4,b4]@8 [a4,c5]@7 ~", C: "[g4,b4]@7 ~ [e4,g4,b4]@8", D: "a4@7 ~ g4@4 f#4@4",
  E: "[g4,b4] [a4,c5]", F: "[g4,b4]@8 [e4,g4]@7 ~", G: "e4@9 ~@7", H: "[g2,g3,b3,d4,g4]", I: "[a#1,a#2,f3,a#3,d4,f4]",
  J: "[c2,c3,c4,e4]", K: "[g2,g3,b3,d4,g4]@15 ~", L: "[c2,c3,g3,c4,e4]", M: "[a#1,a#2,f3,a#3,d4]",
  N: "[g1,g2,g3,b3,d4,g4]", O: "[g2,g3,b3,d4,g4]@3 ~@13", P: "[g4,b4]@7 ~ [e4,g4,b4]@7 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.26)

// chords · acoustic guitar nylon · "A.GUITAR" · soft notes · G Am G Em
const acoustic_guitar_nylon_2 = note("<~@87 [[g4,b4] [a4,c5]] [[g4,b4]@8 [e4,g4]@7 ~] [e4@9 ~@7]>")
  .s("gm_acoustic_guitar_nylon").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  A B C@3 B C B C B C B C B C B C B C B C B C B C B C B C@2 D@15 C B C B C B C B C B C B C B C B C B C@2 D@15 C B C B
  C@6
>`.pickRestart({
  A: "~@7 x!2 ~@7", B: "x ~@6 x!2 ~@3 x ~@3", C: "x ~@6 x!2 ~@7", D: "x!4",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  A B A C 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 D E@3 F E@3 G E F E G E@3 A B A B A B A B A B A B A B A B A
  B A D E@3 F E@3 G E F E G E@3 A B A B H I C ~@3
>`.pickRestart({
  A: "~@2 x ~@2 x ~@6 x!4", B: "~@2 x ~@2 x ~@8 x!2", C: "~@2 x ~@2 x ~@10", D: "~@2 x ~@2 x ~@2 x ~@7", E: "~ x ~ x",
  F: "~@4 x ~@4 x ~@2 x ~@3", G: "~ x ~@2 x ~@7 x ~@3", H: "~@2 x ~@2 x ~@6 x!3 ~", I: "~@2 x ~@2 x ~@8 x ~",
})).gain(0.36)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@84
  [~@15 x]!2
  [~@12 x!4]
  [~@2 x ~@2 x ~@8 x!2]
  [~@2 x ~@2 x ~@6 x!4]
  [~@2 x ~@2 x ~@10]
>`).gain(0.07)

// drums · hihat
const hihat = s("hh").struct("<A@30 B@3 C B@3 C B D B C B@3 A@20 B@3 C B@3 C B D B C B@3 A@8 E A>".pickRestart({
  A: "x!2 ~ x!2 ~ x ~@9", B: "x!8", C: "~ x ~ x ~ x ~@2", D: "~ x ~ x ~ x ~ x", E: "x!2 ~ x ~@12",
})).gain(0.29)

// drums · mid tom
const mid_tom = s("mt").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 ~@16 A B A B A B A B A B A B A B A B A B A ~@16 A B A B A B
  A B A B
>`.pickRestart({
  A: "~ x", B: "~@3 x",
})).gain(0.29)

// drums · open hat
const open_hat = s("oh").struct("<~@29 A ~@3 A ~@3 A ~@3 A ~@22 A ~@3 A ~@3 A ~@3 A ~@13>".pickRestart({
  A: "~@7 x",
})).gain(0.29)

// drums · tambourine
const tambourine = s("tb").struct(`<
  [~ x ~ x ~ x ~ x]!3
  [~ x ~ x ~@4]
  [~ x ~ x ~ x ~ x]!26
  [x!4]!15
  [~ x ~ x ~ x ~ x]!20
  [x!4]!15
  [~ x ~ x ~ x ~ x]!9
  [~ x ~ x ~@4]
>`).gain(0.29)

stack(
  bass, string_ensemble_1, string_ensemble_1_soft, piano, piano_soft, acoustic_guitar_nylon, acoustic_guitar_nylon_2,
  kick, snare, snare_soft, hihat, mid_tom, open_hat, tambourine
)

More by Paul Simon