Strudelify

Mrs. Robinson

Paul Simon

KeyF♯ minorTempo188 bpm
0:00/0:00
// Mrs. Robinson — Paul Simon
// 188 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 173 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(188/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 · "Bass"
const bass = note(`<
  A@2 B@2 C@2 D@2 A@2 B@2 E F@4 G H I J K L M N O P Q P R S T U V P Q P R S W X Y C@2 D@2 A@2 B@2 E F@4 G H I J K L M N
  O P Q P R S T U V P Q P R S W X Y C@2 D@2 A@2 B@2 E F@4 G H I J K L M N O P Q P R S T U V P Q P R S W X Y C@2 D@2 A@2
  B@2 E F@4 G H I J K L M N O P Q P R S T U V P Q P R S W X Y A@2 B@2 Z@4 AA@2 ~@7
>`.pickRestart({
  A: "[f#2@5 ~@3 f#2@2 e2@2 ~@2 f#2@6 ~@4 c#2@3 ~ d#2@2 ~@2]/2",
  B: "[f#2@5 ~@3 f#2@2 e2@2 ~@2 f#2@7 ~@3 c#2@2 ~@2 d#2@2 ~@2]/2",
  C: "[f#2@6 ~@2 f#2@2 e2@3 ~ f#2@7 ~@3 c#2@2 ~@2 d#2@2 ~@2]/2",
  D: "[f#2@5 ~@3 f#2@2 e2@3 ~ f#2@7 ~@3 c#2@2 ~@2 d#2@2 ~@2]/2", E: "f#2@6 f#2 ~ b1@2 c#2@4 ~@2",
  F: "b1@7 ~ f#1@5 ~ f#1@2", G: "e1@8 f#1@3 ~ g#1@3 ~", H: "a1@7 ~ b1@3 ~ c#2@3 ~", I: "d2@7 ~ c#2 ~ c#2@5 ~",
  J: "b1@4 ~@2 b1 ~ f#1@4 ~@2 f#1 ~", K: "b1@5 ~ b1 ~ b1@2 a1@2 f#1@2 e1@2", L: "f#1@5 ~ f#1@2 c#2@5 ~ c#2 ~",
  M: "f#1@5 ~ f#1 ~ c#2@4 f#1@3 ~", N: "e1@4 ~@2 e1 ~ e1@5 ~ e2@2", O: "e1@4 ~@2 e1@2 f#1@3 ~ g#1@2 ~@2",
  P: "a1@5 ~ a1@2 e1@5 ~ e1@2", Q: "f#1@5 ~ c#1@2 c#2@2 a1@2 b1@3 ~", R: "f#1@5 ~ c#1@2 c#2@2 a1@2 b1@2 c#2@2",
  S: "d2@5 ~ d2@2 c#2@5 ~ c#2@2", T: "b1@4 ~@2 b1@2 a1@2 c#2@2 d2 ~ d#2@2", U: "e2@4 ~@2 e2@2 d2@5 ~ d2@2",
  V: "c#2@4 ~@2 c#2@2 b1@4 ~@2 b1 ~", W: "b1@4 ~@2 b1@2 a1@2 g#1@2 a1 ~ a#1@2", X: "b1@5 ~ b1@2 f#1@5 ~ f#1@2",
  Y: "b1@5 ~ b1 ~ f#1@4 b1@3 ~", Z: "[f#1@14 f#2@7 ~@3 c#2@2 ~@2 d#2@2 ~@2]/2", AA: "f#1/2",
})).s("gm_fretless_bass").gain(0.64)

// chords · acoustic guitar steel · "Folk gt"
const acoustic_guitar_steel = note(`<
  A@12 B C D@3 E F G H@2 I@2 J@2 K L M N O P Q@2 K L M N O R S@2 T@8 U C D@3 E F G H@2 I@2 J@2 K L M N O P Q@2 K L M N O
  R S@2 T@8 U C D@3 E F G H@2 I@2 J@2 K L M N O P Q@2 K L M N O R S@2 T@8 U C D@3 E F G H@2 I@2 J@2 K L M N O P Q@2 K L
  M N O R S@2 A@6 V@2 W@8 ~
>`.pickRestart({
  A: "[[f#3,a#3,c#4]@2 [c#4,f#4] f#4!4 f#4@2 [a#3,c#4,f#4] f#4 ~ a#3@2 [c#4,f#4] f#4, f#2@5 f#2@3, c#3@6 ~@5 f#4@3 ~@2, ~ f#3@2 f#3@2 [f#3,a#3] f#3@2, ~@2 a#3@2 a#3@2 a#3@3 ~ c#4@4 a#3@2]/2", // F# F#5 F# F#5 F#
  B: "[f#3,a#3,c#4]@2 [c#4,f#4] f#4!3 [f#3,a#3,f#4] f#4, f#2@15 ~, c#3@3 ~, ~ f#3@2 ~, ~ a#3!2 ~", // F# F#5 F#
  C: "f#4!4 [b3,d#4,f#4]@2 [d#4,f#4] f#4, b2, [f#3,b3,d#4]!2 f#3@2, ~@3 b3", // B D#m B
  D: "[[f#3,b3,d#4]@4 [d#4,f#4]@2 f#4@2 f#4@2 f#4@2 f#4@2 f#4@4 [a3,d#4,f#4]@2 f#4@2 f#4@2 [a3,d#4,f#4]@4 [d#4,f#4]@2 f#4@4 [a3,d#4,f#4]@2 f#4@2 f#4@2 [a3,d#4,f#4]@4 ~ f#4!2 ~, b2@10 b2@7 b2@7, ~ f#3@2 f#3@2 [f#3,a3,d#4] f#3@3 [f#3,a3,d#4] f#3@2, ~@2 b3@2 b3@2 ~@8 a3@3 ~@5 [a3,d#4]@2]/3", // B D#m D#dim D#m D#dim Adim
  E: "~ e4!3 [g#3,b3,e4]@2 e4!2, b2, [e3,g#3,b3]!2 e3@2, ~@3 [g#3,b3]", // E G#m
  F: "e4!4 [a3,c#4]@2 [c#4,e4]!2, a2, [e3,a3,c#4]!2 e3@2, ~@4 e4 ~ a3@2", // A C#m A
  G: "a4!4 [e3,d4]@2 [e3,a4]!2, d3 [c#3,a3], [f#3,a3,d4]@2 [f#3,a3,d4]@2 a4 ~ d4@2", // E7 A5 F#m D
  H: "[~ f#4!3 [b3,d4,f#4]@2 [d4,f#4] ~@2 f#4!3 [b3,d4,f#4]@2 [d4,f#4] f#4, b2 b2, [f#3,b3,d4]!2 f#3@2 [f#3,b3] [f#3,b3,d4] f#3@2, ~@3 b3 ~@3 b3, ~@7 f#4@2 ~@7]/2", // Bm D Bm D Bm B5 Bm
  I: "[[f#3,a#3,c#4,f#4]@2 [c#4,f#4]!2 f#4!3 [c#4,f#4]@2 [a#3,c#4,f#4] f#4 ~ a#3@2 [c#4,f#4]!2, f#2@5 f#2@3, c#3@4 a#3@2 f#3@4 [f#3,a#3] f#4@3 ~@2, ~ f#3@2 c#3@3 [c#3,f#3]@2, ~@2 a#3@2 c#4@2 a#3@3 ~ c#4@4 a#3@2]/2", // F# F#5 F# F#5 F# F#5
  J: "[[e3,g#3,b3,e4]@2 [b3,e4]!2 e4!3 [b3,e4]@2 [g#3,b3,e4] e4 ~ g#3@2 [b3,e4]!2, e2@5 e2@3, b2@4 g#3@2 e3@4 [e3,g#3] e4@3 ~@2, ~ e3@2 b2@3 [b2,e3]@2, ~@2 g#3@2 b3@2 g#3@3 ~ b3@4 g#3@2]/2", // E E5 E E5 E E5
  K: "[e3,a3,c#4]@2 [c#4,e4] c#4 ~ e4 [c#4,e4]!2, a2, ~ e3@3, ~ a3 [a3,c#4] a3, ~@3 e4@2 ~@3", // A C#m A
  L: "[f#3,a3,c#4]@2 [c#4,f#4]!2 f#4!2 [c#4,f#4]!2, f#2, ~ [f#3,a3]@2 [f#3,a3], ~@2 c#4 ~", // F#m F#5 F#m
  M: "[e3,a3,c#4]@2 [c#4,e4] c#4 ~ e4!2 [c#4,e4], a2, ~ e3@3, ~@2 a3@2 c#4@3 ~, ~@3 e4 a3@2 a3@2", // A C#m
  N: "[f#3,a3,c#4]@2 [c#4,f#4]!2 f#4!3 [c#4,f#4], f#2, ~ [f#3,a3]@2 [f#3,a3], ~@4 c#4@3 ~", // F#m F#5 F#m
  O: "[a3,d4,f#4]@2 f#4!6, d3 c#3, ~ a3@2 [a3,d4], ~ d4!2 ~", // D D5
  P: "[a3,d4,f#4]@2 f#4!2 [d4,f#4]@2 f#4!2, b2, ~ a3@3, ~ d4 ~ d4", // D
  Q: "[[e3,g#3,b3,e4]@2 [b3,e4]!2 e4!3 [b3,e4]@2 [g#3,b3,e4] e4 ~ g#3@2 [b3,e4] ~, b2@3 b2@3 [b2,e3]@2, ~ e3@2 e3@2 [e3,g#3] ~@2, ~@2 g#3@2 b3@3 ~@3 b3@4 g#3@2, ~@4 g#3@2 g#3@3 ~@2 e4@3 ~@2]/2", // E E5 E E5 E
  R: "[a3,d4,f#4]@2 f#4!2 [d4,f#4]@2 f#4!2, d3, ~ a3@3, ~ d4 ~ d4", // D
  S: "[[f#3,b3,d4,f#4]@2 [d4,f#4]!2 f#4!3 [d4,f#4]@2 [b3,d4,f#4] f#4 ~ b3@2 [d4,f#4] ~, b2@3 b2@3 [b2,f#3]@2, ~ f#3@2 f#3@2 [f#3,b3] ~@2, ~@2 b3@2 d4@3 ~@3 d4@4 b3@2, ~@4 b3@2 b3@3 ~@2 f#4@3 ~@2]/2", // Bm D Bm D B5
  T: "[[f#3,a#3,c#4]@2 [c#4,f#4] f#4 ~ f#4!2 f#4@2 [a#3,c#4,f#4] f#4 ~ a#3@2 [c#4,f#4] f#4, f#2@5 f#2@3, ~ f#3@2 f#3@2 [f#3,a#3] f#3@2, ~@2 a#3@2 a#3@2 a#3@3 ~ c#4@4 a#3@2, ~@11 f#4@3 ~@2]/2", // F# F#5 F# F#5 F#
  U: "[f#3,a#3,c#4]@2 [c#4,f#4] f#4 ~ f#4 [f#3,a#3,f#4] f#4, f#2@15 ~, ~ f#3@2 ~, ~ a#3!2 ~", // F# F#5 F#
  V: "[[f#3,a#3,c#4]@2 [c#4,f#4] f#4!4 f#4@2 [a#3,c#4,f#4] f#4 ~ a#3@2 [c#4,f#4] f#4, f#2@10 f#2@5 ~, c#3@6 ~@5 f#4@3 ~@2, ~ f#3@2 f#3@2 [f#3,a#3] f#3@2, ~@2 a#3@2 a#3@2 a#3@3 ~ c#4@4 a#3@2]/2", // F# F#5 F# F#5 F#
  W: "[[f#2,c#3,f#3], [c#4,f#4]@15 ~@49, a#3@7 ~@25]/8", // F#5
})).s("gm_acoustic_guitar_steel").gain(0.14).pan(0)

// chords · acoustic guitar steel · "Folk gt" · soft notes
const acoustic_guitar_steel_2 = note(`<
  A@12 B C D@3 ~@3 E@2 ~@20 F@8 G C D@3 ~@3 E@2 ~@20 F@8 G C D@3 ~@3 E@2 ~@20 F@8 G C D@3 ~@3 E@2 ~@20 A@6 H@2 ~@9
>`.pickRestart({
  A: "[f#4@2 ~ c#4 ~@3 c#4@2 ~@6 c#4, ~@4 c#4@3 ~@9, ~@3 c#3@3 c#3@2]/2",
  B: "f#4@2 ~ c#4 ~@3 c#4, ~@4 c#4@3 ~, ~@3 c#3", C: "~@7 d#4",
  D: "[f#4@2 ~ d#4 ~@3 d#4@2 ~@6 d#4@2 ~@7, ~@4 d#4@3 ~@17, ~@2 a3 ~@5]/3", E: "[f#4 ~@6 d4@3 ~@5 d4]/2",
  F: "[f#4@2 ~ c#4 f#4 ~@2 c#4@2 ~@6 c#4, c#3@3 c#3@3 c#3@2, ~@4 c#4@3 ~@9]/2",
  G: "f#4@2 ~ c#4 f#4 ~@2 c#4, c#3@3 c#3, ~@4 c#4@3 ~",
  H: "[f#4@2 ~ c#4 ~@3 c#4@2 ~@3 c#3@3 c#4, ~@4 c#4@3 ~@9, ~@3 c#3@3 ~@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.08).pan(0)

// drums · tambourine
const tambourine = s("tb").struct("<~@26 A@16 ~@22 A@16 ~@22 A@16 ~@22 A@16 ~@17>".pickRestart({
  A: "~ x ~ x",
})).gain(0.64)

// drums · bongos
const bongos = s("bongo:18").struct(`<
  ~@2 A ~@3 A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2 A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2
  A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2 A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2 A ~@3 A
  ~@10
>`.pickRestart({
  A: "~@3 x ~@4",
})).gain(0.84)

// drums · congas
const congas = s("conga:13").struct(`<
  A B A B A B A B A B A B A@2 B A B A@2 B A B A@2 B A@2 B A B A B A B A B A B A@2 B A@2 B A B A B A B A@2 B A B A@2 B A
  B A@2 B A@2 B A B A B A B A B A B A@2 B A@2 B A B A B A B A@2 B A B A@2 B A B A@2 B A@2 B A B A B A B A B A B A@2 B
  A@2 B A B A B A B A@2 B A B A@2 B A B A@2 B A@2 B A B A B A B A B A B A@2 B A@2 B A B A B A B ~@9
>`.pickRestart({
  A: "~ x ~@2", B: "~ x",
})).gain(1.79)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct(`<
  ~@3 A ~@3 A ~@3 A ~@4 A ~@4 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@4 A ~@4 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@4 A ~@4 A ~@7
  A ~@3 A ~@3 A ~@7 A ~@3 A ~@4 A ~@4 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A B ~@8
>`.pickRestart({
  A: "~@7 x", B: "~ x",
})).gain(0.77)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  A B A C A B A C A B A C A@2 B A C A@2 B A C A@2 B A@2 B A C A B A C A B A C A@2 B A@2 B A C A B A C A@2 B A C A@2 B A
  C A@2 B A@2 B A C A B A C A B A C A@2 B A@2 B A C A B A C A@2 B A C A@2 B A C A@2 B A@2 B A C A B A C A B A C A@2 B
  A@2 B A C A B A C A@2 B A C A@2 B A C A@2 B A@2 B A C A B A C A B A C A@2 B A@2 B A C A B A C D ~@8
>`.pickRestart({
  A: "~@5 x!2 ~", B: "~@2 x!2 ~@2 x!2", C: "~@2 x!2 ~@2 x ~", D: "x",
})).gain(1.79)

// drums · congas · soft notes
const congas_soft_2 = s("conga:18").struct(`<
  ~@3 A ~@3 A ~@3 A ~@4 A ~@4 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@4 A ~@4 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@4 A ~@4 A ~@7
  A ~@3 A ~@3 A ~@7 A ~@3 A ~@4 A ~@4 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A B ~@8
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x!7 ~ x!5 ~@2",
})).gain(0.77)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  A B A B A B A B A B A B A@2 B A B A@2 B A B A@2 B A@2 B A B A B A B A B A B A@2 B A@2 B A B A B A B A@2 B A B A@2 B A
  B A@2 B A@2 B A B A B A B A B A B A@2 B A@2 B A B A B A B A@2 B A B A@2 B A B A@2 B A@2 B A B A B A B A B A B A@2 B
  A@2 B A B A B A B A@2 B A B A@2 B A B A@2 B A@2 B A B A B A B A B A B A@2 B A@2 B A B A B A B ~@9
>`.pickRestart({
  A: "x ~@6 x", B: "~ x ~@6",
})).gain(1.79)

// drums · congas · soft notes
const congas_soft_3 = s("conga:33").struct(`<
  ~@2 A ~@3 A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2 A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2
  A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2 A ~@3 A ~@4 A ~@4 A ~@4 A ~@2 A ~@3 A ~@3 A ~@4 A ~@2 A ~@3 A
  ~@10
>`.pickRestart({
  A: "~ x",
})).gain(0.77)

// drums · shaker
const shaker = s("sh").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 C@17 A B A B A B A B A B A B A B A B A B A B A B C@16 A B A B A B A
  B A B A B A B A B A B A B A B C@16 A B A B A B A B A B A B A B A B A B A B A B C@16 A B A B A B A B D ~@8
>`.pickRestart({
  A: "x ~ x ~ x!4", B: "x!3 ~ x!3 ~", C: "x!8", D: "x",
})).gain(0.32)

// drums · shaker · soft notes
const shaker_soft = s("sh").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 ~@17 A B A B A B A B A B A B A B A B A B A B A B ~@16 A B A B A B A
  B A B A B A B A B A B A B A B ~@16 A B A B A B A B A B A B A B A B A B A B A B ~@16 A B A B A B A B ~@9
>`.pickRestart({
  A: "~ x ~ x ~@4", B: "~@3 x ~@3 x",
})).gain(0.24)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_steel_2, tambourine, bongos, congas, congas_soft, congas_2,
  congas_soft_2, congas_3, congas_soft_3, shaker, shaker_soft
)

More by Paul Simon