Strudelify

Sexy Sadie

The Beatles

KeyB minorTempo80 bpm
0:00/0:00
// Sexy Sadie — The Beatles
// 80 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Bright Piano (Bass) (P2)" piano (copy of ch 7 "Bass Guitar (P34)" electric bass finger)
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// chords · piano · "Bright Piano (P2)"
const piano = note("<A B C D E F G H I H J E F G H I H J ~@6 K L H I H J ~ K L H I H J ~@13 M ~@6 M ~@4>".pickRestart({
  A: "~@6 e4 d4, ~@3 [g4,a4]", B: "[c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [d4,f#4] [d4,f#4]@2 ~ [e4,g4]@2 [f#4,a4]@2",
  C: "[g4,b4]@2 [d4,g4]@2 [b3,d4]@2 [g3,b3]@2 [f#3,a#3]@2 [f#3,a#3]@3 ~ [f#3,a#3]@2", // G G5 Bm G F#
  D: "[f3,a3]@2 [f3,a3]@3 ~ [f3,a3]@2 ~@2 [f#3,a3]@2 [g3,b3] [a3,c4]@2 ~", E: "[b3,d4]!4 [a#3,c#4]!4",
  F: "~ [d4,f#4] [e4,g4] [f#4,a4] [g4,b4] [d4,g4] [b3,d4] [g3,b3]", G: "[e4,g4]@3 ~@9 [e4,g4]@2 [f#4,a4]@2",
  H: "[g4,b4]@2 [d4,g4]@2 [b3,d4]@2 [g3,b3]@2 [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4]@3 ~", // G G5 Bm G F#
  I: "[e4,g4]@3 ~@4 a4@4 ~ [e4,g4]@2 [f#4,a4]@2, ~@7 d5 ~@8", J: "[a3,c4]!4 [a3,d4,f#4]!2 [d4,f#4]!2",
  K: "~@2 [d4,f#4]@2 [e4,g4]@2 [f#4,a4]@2 [g4,b4]!8", L: "[e4,g4]@3 ~@9 [e4,g4]@2 [f#4,a4]@2, b4 ~@15",
  M: "~ [d4,f#4] [e4,g4] [f#4,a4] [g4,b4]@3 ~", // D Em F#m G
})).s("gm_piano").gain(0.42)

// other · overdriven guitar · "Guitar (P30)"
const overdriven_guitar = note(`<
  ~@5 A ~@6 A ~@5 B C B D E ~ A ~@6 A ~@5 B C B D E ~@2 F G F G H I J F G F G H K J F ~@3
>`.pickRestart({
  A: "~@4 [g4,b4]@3 ~", B: "d4@2 ~ c4 d4 e4@2 ~ e4@2 ~ d4 e4 f#4@2 ~", C: "f#4@2 ~ e4 f#4 g4@2 ~ e4@2 ~ d4 e4 d5@2 ~",
  D: "f#4@2 ~ e4 f#4 g4@2 ~ e4@2 ~ d4 e4 ~@3", E: "f#4@2 ~ e4 f#4 g4@2 ~ e4@2 ~ d4 e4 f#4@2 ~",
  F: "e4@2 f4@2 g4@3 ~ f#4@2 g4@2 a4@3 ~", G: "b4 c5 b4 c5 a#4@3 ~", H: "a4 b4 a4 b4 d4@3 ~", I: "b4 c5 b4 c5 c#5@3 ~",
  J: "g4@2 a4@2 e5@3 ~ e5@3 ~ a4@3 ~", K: "b4 [c5,d5] b4 c5 ~@2 b4!2, ~ d5 c#5@2",
})).s("gm_overdriven_guitar").gain(0.42)

// other · overdriven guitar · "Guitar (P30)" · soft notes
const overdriven_guitar_soft = note(`<
  ~@59
  [b4 c5 b4 c5 a#4@3 ~]
  [e4@2 f4@2 g4@3 ~ f#4@2 g4@2 a4@3 ~]
  [b4 c5 b4 c5 a#4@3 ~]
>`).s("gm_overdriven_guitar").gain(0.14)

// chords · rock organ · "Organ (P19)"
const rock_organ = note("<~@18 A B C B D E ~@5 D E ~@5 D A B C B D E F G H G H I H J I K G H I H J I ~@3>".pickRestart({
  A: "[b4,d5]@3 ~ [c5,e5]@3 ~", B: "[d5,f#5]@3 ~ [c5,e5]@3 ~", C: "[g4,b4]@3 ~ [a4,c5]@3 ~",
  D: "[e5,g5]@3 ~ [d5,f#5]@3 ~", E: "[d4,b4]@3 ~ [c#4,a#4]@3 ~", F: "[f#4,b4,d5]@13 ~@3",
  G: "~@4 [a4,c5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~", H: "[b4,d5]@3 ~ [b4,d5]@3 ~ [a#4,c#5]@3 ~ [a#4,c#5]@3 ~",
  I: "~@4 [a4,c5]@3 ~@5 [b4,d5]@3 ~", J: "[e4,g4]@3 ~ [d4,f#4]@3 ~", K: "~@4 [b4,d5]@3 ~@5 [a#4,c#5]@3 ~",
})).s("gm_rock_organ").gain(0.42)

// chords · rock organ · "Organ (P19)" · soft notes · Bm A#m Am Bm A#m
const rock_organ_soft = note(`<
  ~@59
  [~@4 [b4,d5]@3 ~@5 [a#4,c#5]@3 ~]
  [~@4 [a4,c5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~]
  [[b4,d5]@3 ~ [b4,d5]@3 ~ [a#4,c#5]@3 ~ [a#4,c#5]@3 ~]
>`).s("gm_rock_organ").gain(0.14)

// bass · electric bass finger · "Bass Guitar (P34)"
const bass = note(`<
  ~@4 A B C D E D F A B C D E D F G H G H I A J C A E K L A J C A E K L G H G H I K J C K M K M K N M K M K M K N M ~@3
>`.pickRestart({
  A: "g2@5 ~ g2@2 f#2@5 ~ f#2@2", B: "b2@5 ~ b2@2 b2@3 ~ a2@3 ~", C: "c3@5 ~ c3@2 d3@5 ~ d3@2",
  D: "g2@2 g2@3 ~ g2@2 f#2@2 f#2@3 ~ f#2@2", E: "c3@2 c3@3 ~ c3@2 d3@2 e3@2 f#3@2 d3@2",
  F: "f2@2 f2@3 ~ f2@2 d2@2 d2@3 ~ d2@2", G: "g2@5 ~ g2@2 a2@5 ~ a2@2", H: "b2@5 ~ b2@2 c3@5 ~ c3@2",
  I: "a2@5 ~ a2@2 g#2@5 ~ g#2@2", J: "b2@5 ~ b2@2 b2@5 ~ b2@2", K: "g2!4 f#2!4", L: "f2!4 d2!4", M: "c2!4 d2!4",
  N: "c2@5 ~ c2@2 d2@5 ~ d2@2",
})).s("gm_electric_bass_finger").gain(0.42)

// bass · electric bass finger · "Bass Guitar (P34)" · soft notes
const bass_soft = note("<~@59 [g2!4 f#2!4] [c2!4 d2!4] [g2!4 f#2!4]>").s("gm_electric_bass_finger").gain(0.14)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@59 [x!2] [x ~@7 x ~@4 x ~ x] [x!2]>").gain(0.14)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@2 B A@3 C A@2 B A@3 C A@5 B A@3 B A@4 B A B A C A@5 B D@6 A C A@2 D A C A C A ~@3
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@2 x ~", C: "~ x ~ x ~@4", D: "~@2 x ~@3 x ~@3 x ~@4 x",
})).gain(0.42)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@59 [~ x ~ x ~ x ~ x] [~@2 x ~@3 x ~@3 x ~@4 x] [~ x ~ x ~ x ~ x]>").gain(0.14)

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

// drums · high tom
const high_tom = s("ht").struct("<~@3 [~@3 x] ~@58>").gain(0.42)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A@2 B@2 A B@3 A B@2 A B@3 A B@5 A B@3 A B@4 A B A B A B@5 A C@6 B A B@2 C B A B A B ~@3
>`.pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@2 x ~@3 x!2",
})).gain(0.42)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@59 [~ x ~ x] [~@2 x ~@3 x!2] [~ x ~ x]>").gain(0.14)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A B ~@2 C ~@2 A B ~@2 C ~@5 A ~@3 A ~@4 A B A ~ C ~@5 A B@6 ~ C B ~@2 B C ~ C B ~@3
>`.pickRestart({
  A: "~@3 x ~@4", B: "x", C: "~ x",
})).gain(0.42)

// drums · ride
const ride = s("rd").struct("<~@4 A ~@6 A ~@31 B@6 ~@4 B ~@6 B ~>".pickRestart({
  A: "x", B: "~@13 x ~@2",
})).gain(0.42)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@4 A@2 B A@3 B A@2 B A@3 B A@5 B A@3 B A@4 B A B A B A@5 B A@7 B A@4 B A B A ~@3
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~ x ~@6",
})).gain(1.35)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct("<~@59 [~ x ~@3 x ~@2]!3>").gain(0.67)

stack(
  piano, overdriven_guitar, overdriven_guitar_soft, rock_organ, rock_organ_soft, bass, bass_soft, kick, kick_soft,
  snare, hihat, hihat_soft, mid_tom, high_tom, tambourine, tambourine_soft, crash, ride, congas, congas_soft
)

More by The Beatles