Strudelify

Hey Baby (They're Playing Our Song)

The Buckinghams

KeyF majorTempo140 bpm
0:00/0:00
// Hey Baby (They're Playing Our Song) — The Buckinghams
// 140 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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.

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C B D E F G H I F G J K L M N O@2 P N Q R S T U V F G H I F G J K L W X Y Z W X Q R S T U AA AB AC AD AE AF AG AH
  K L M N O@2 P N Q R S T U ~ AI AJ AK AJ AL AJ AK AJ AL AJ AK AJ AL AJ AK AJ AL AM
>`.pickRestart({
  A: "~@7 c2", B: "~@2 f3@2 [a3,c4] ~ [f3,bb3,d4]@10, f2",
  C: "~@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@3 ~@5 c2 ~, f2@13 ~@3, ~@5 [f3,bb3,d4]@3", // F Bb
  D: "~@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4] ~@3 [f3,bb3,d4]@6, f2@7 ~", E: "~@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@10, f2@7 ~",
  F: "~@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@10, f2", G: "[a2,e3,g3,c4,e4]", H: "[bb2,f3,bb3,d4] [c3,g3,c4,e4,g4]",
  I: "~@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@10, f2@13 ~@3", J: "[bb2,f3,bb3,d4]@8 [c3,g3,c4,e4]@7 ~", K: "[f3,a3,c4,e4]",
  L: "[c3,f3,bb3,d4]@15 ~", M: "[a2,a3,c4,e4] ~@5 [d3,a3,c4,f4,a4]@7 ~@3",
  N: "[g3,bb3,d4] ~ [a3,c4,e4] ~@3 [bb3,d4,f4] ~@3 [c4,e4,g4]@4 ~@2", O: "[f3 [f3,bb3,d4], [a3,c4,e4]@9 ~@7]/2",
  P: "[a2,a3,c4,e4] ~@5 [d3,a3,c4,f4,a4]@8 ~@2", Q: "[g3,bb3,d4]!4, g2", R: "[a3,c4,e4]!4, a2",
  S: "[bb3,d4,f4]@3 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@4, bb2", // Bb
  T: "[c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@4 [c4,e4,g4]@4, [c3,g3]", // C C5
  U: "[c4,e4,g4]@3 ~ [c4,e4,g4]@4 [c4,e4,g4]@4 [c4,e4,g4]@3 ~, [c3,g3]@15 ~", // C C5
  V: "f3 ~ f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@10, f2@7 ~", W: "[a4,d5,f5] ~@3 [a4,d5,f5] ~@3 [a4,d5,f5] ~@3 [a4,d5,f5] ~@3",
  X: "[bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3", Y: "[f3,a3,c4,e4]@15 ~",
  Z: "[c3,f3,bb3,d4]@7 ~", AA: "~@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@10, f2 ~@3",
  AB: "~@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@9 ~, f2 ~@3", AC: "f2@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@9 ~",
  AD: "f2@2 f3 ~ [f3,a3,c4] c4 [f3,bb3,d4]@9 ~", AE: "f2@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@5 ~ [f3,bb3,d4] ~@3",
  AF: "f2@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@8 ~@2", AG: "f2 ~ f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@5 ~ [f3,bb3] ~@3, ~@6 d4 ~",
  AH: "f2@2 f3 ~ [f3,a3,c4] ~ [f3,bb3,d4]@5 ~ [f3,bb3] ~@3, ~@6 d4 ~", // F Bb Bb5
  AI: "~@8 [f4,ab4,c5,f5] ~ [f4,bb4] ~ [eb4,g4] ab4 f4 ~, ~@5 f5 ~@2", // Fm Bb5 Eb
  AJ: "[f3,a3,c4]@4 ~@2 [f3,bb3,d4]@3 ~ [f3,bb3,d4]@4 c3 ~, f2@7 ~", // F Bb
  AK: "[f3,a3,c4]@4 c3 ~ [f3,bb3,d4]@3 ~ [f3,bb3,d4]@4 c3 ~, f2@7 ~", // F Bb
  AL: "[f3,a3,c4]@4 ~@2 [f3,bb3,d4]@3 ~ [f3,bb3,d4]@4 ~@2, f2 ~@3 f2@10 ~@2", // F Bb
  AM: "[f2,f3,a3,c4]@4 ~@2 [f2,f3,bb3,d4]@2 ~@2 [f2,f3,bb3,d4] ~@5", // F Bb
})).s("gm_epiano2").gain(0.55)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@3 A@2 B C D E C@2 D E F G H I J@2 K L M N O P@2 B C D E C@2 D E F G ~@2 J@2 ~@2 M N O P@2 Q@8 F G H I J@2 K L M N O
  P@2 ~@2 R@8 B C B C B C B C ~
>`.pickRestart({
  A: "[~@14 g5@6 ~@10 e5 [b4,c5,d5]]/2", B: "[e4,f4,g4,a4] ~@5 [f4,bb4,d5]@8 ~@2, c5@5 ~@11",
  C: "[f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~", D: "[a4,c5,e5]@7 ~", E: "[f4,bb4,d5]@7 ~ [g4,c5,e5]@7 ~", F: "[f4,a4,c5]@15 ~",
  G: "[bb4,d5]@7 ~", H: "[a4,c5,e5] ~@5 [d4,f4,a4]@7 ~@3",
  I: "[g3,bb3,d4] ~ [a3,c4,e4] ~@3 [bb3,d4,f4] ~@3 [c4,e4,g4]@4 ~@2", J: "[[a4,c5]@7 ~ [bb4,d5]@7 ~, f4@29 ~@3]/2",
  K: "[a4,c5,e5] ~@5 [d4,f4,a4]@8 ~@2", L: "[g4,bb4,d5] ~ [a4,c5,e5] ~@3 [bb4,d5,f5] ~@3 [c5,e5,g5]@5 ~",
  M: "[g3,bb3,d4]@15 ~", N: "[a3,c4,e4]@15 ~", O: "[bb3,d4,f4]@7 ~", P: "[[c4,e4,g4]@15 ~]/2",
  Q: "[[f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~ [f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~ [f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~ [f4,a4,c5]@5 ~ [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@8 ~@2, c6@63 ~]/8", // F Bb F Bb F Bb F Bb …
  R: "[[e4,f4,g4,a4] ~@5 [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~ [e4,f4,g4,a4] ~@5 [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~ [e4,f4,g4,a4] ~@5 [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~ [e4,f4,g4,a4] ~@5 [f4,bb4,d5]@8 ~@2 [f4,a4,c5]@5 ~ [f4,bb4,d5]@9 ~, f5, c5@5 ~@27 c5@5 ~@27 c5@5 ~@27 c5@5 ~@27]/8", // Fmaj7 Bb F Bb Fmaj7 Bb F Bb …
})).s("gm_rock_organ").gain(0.48)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@2 A B@2 ~@9 C ~@20 C ~@20 C ~@30>".pickRestart({
  A: "~@14 [d4,e4,f4,g4,a4] [b4,c5,d5,e5]", B: "[[f5,g5,a5] ~@9 a5@2 ~@6 f5@11 ~ [f5,g5,a5,b5] ~, ~ c6@29 ~@2]/2",
  C: "f4@7 ~",
})).s("gm_rock_organ").gain(0.24)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@5 A@2 B C A D B C E F G H I J K H L M N O P A@2 B C A D B C E F Q R E F Q S L M N O P A@8 E F G H I J K H L M N O P
  ~@2 T U V W X Y U W T U V W X Y U W Z
>`.pickRestart({
  A: "f2@3 ~ f2@2 bb1@3 ~ bb1@3 ~ bb1@2", B: "a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~", C: "g2@3 ~ g2@3 ~ c2@3 ~ c2@3 ~",
  D: "f2@3 ~ f2@2 bb1@3 ~ bb1@3 ~ bb1 ~", E: "f2@5 ~ f2@7 ~ f2 ~", F: "c2@4 ~@2 c2@9 ~", G: "a2 ~@5 d2@9 ~",
  H: "g1 ~ a1@2 ~@2 bb1@2 ~@2 c2@5 ~", I: "f2@5 ~ f2 ~ f2@5 ~ f2@2", J: "c2@5 ~ c2@9 ~", K: "a2 ~@2 d2@4 ~",
  L: "g2@3 ~ g2@3 ~ g2@2 g1@2 g2@2 g1 ~", M: "a2@3 ~ a2@3 ~ a2@2 a1@2 a2@2 a1@2",
  N: "bb2@3 ~ bb2@3 ~ bb2@2 bb1@2 bb2@2 bb1@2", O: "c3@3 ~ c3@3 ~ c3@2 c2@2 c3@2 c2@2", P: "c3@3 ~ c3@4 c2@3 ~ c2@3 ~",
  Q: "d3@15 ~", R: "g2@15 ~", S: "g2@10 f2 ~ f2 ~ gb2 ~", T: "f2@4 ~@2 bb1@3 ~ bb1@2 c2@2 d2 ~",
  U: "f2@5 ~ bb1@3 ~ bb1@2 c2@2 d2 ~", V: "f2@5 ~ bb1@3 ~ bb1@2 d2@2 e2 ~", W: "f2@5 ~ bb1@2 ~@2 bb1@2 c2 ~ d2 ~",
  X: "f2@5 ~ bb1@2 ~@2 bb1@2 c2@2 d2 ~", Y: "f2@5 ~ bb1@2 ~@2 bb1@2 c2@2 e2 ~", Z: "f2@5 ~ bb1@2 ~@2 bb1@2 ~@4",
})).s("gm_acoustic_bass").gain(0.64)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@15 A B ~@2 A C D E F G@2 ~@2 H I ~@2 H J ~@8 K E L G@2 M@4 N@4 ~@2 A B ~@2 A C D E F G@2 ~@6 O ~@3 P ~@3 P ~@3 Q
>`.pickRestart({
  A: "[a3,c4,e4] ~@5 [a3,d4,f4]@7 ~@3", // Am Dm
  B: "[g3,bb3,d4] ~ [a3,c4] ~@3 [bb3,d4,f4] ~@3 [c4,e4,g4]@5 ~, ~@2 e4@2 ~@6 f4 ~@5", // Gm Am Bb C
  C: "[g3,bb3,d4] ~ [a3,c4] ~@3 [bb3,d4,f4] ~@3 [c4,e4,g4]@5 ~, ~ e4 ~@6", D: "~@2 bb4@5 ~", E: "c5 ~ c5 ~ a4 ~ c5@10",
  F: "~@4 d5@3 ~ c5@3 ~ a4@4", G: "[[c4,e4,g4]@31 ~]/2", H: "[a3,c4,e4]@7 ~",
  I: "[bb3,d4,f4]@7 ~ [g3,c4,e4]@7 ~, ~@8 a3 ~@7", J: "[bb3,d4,f4]@7 ~ [c4,e4,g4]@6 ~@2", K: "~@4 bb4@11 ~",
  L: "~@4 d5@3 ~ c5@3 ~ a4@3 ~",
  M: "[a3@2 ~@2 a3@2 g3 ~ a3 ~ g3 ~ f3 ~ g3@5 ~ g3@2 f3 ~ g3@2 f3 ~ d3 ~ f3@8 f2@22 ~@4]/4",
  N: "[[a3,a4,a5]@2 ~@2 [a4,a5] ~ [g3,g4,g5] ~ [a3,a4,a5] ~ [g3,g4,g5] ~ [f3,f4,f5] ~ [g3,g4,g5]@5 ~ [g4,g5]@2 [f3,f4,f5] ~ [g4,g5] ~ [f3,f4,f5] ~ [d3,d4,d5] ~ [f3,f4,f5]@31 ~@3, ~@4 a3@2 ~@14 g3 ~@3 g3@2 ~@38]/4", // A G A G F G F G …
  O: "~@4 [f4,a4,c5] ~ [f4,bb4,d5]@6 ~@4", P: "~@4 [f4,a4,c5] ~ [f4,bb4,d5]@8 ~@2",
  Q: "[f4,a4,c5]@2 ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~@2", // F Bb
})).s("gm_brass_section").gain(0.72)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@34 A B ~@2 A B ~@15 A C ~@2 A B ~@26>".pickRestart({
  A: "a4", B: "bb4@15 ~", C: "bb4@7 ~",
})).s("gm_string_ensemble_2").gain(0.52)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@3 C B@3 C D@2 E F D@2 E F G@4 H B@3 C B@3 C D@2 I J D@2 I J G@4 K D@10 E F D@2 E F G@5 L M D@9 N D@6 O
>`.pickRestart({
  A: "x!4", B: "x!2 ~ x ~ x ~ x", C: "x ~@2 x ~ x ~ x", D: "x!2 ~ x!3 ~ x", E: "x ~@2 x ~@4", F: "x!2 ~ x ~ x ~@2",
  G: "x!8", H: "x ~@2 x!2 ~ x ~", I: "x ~ x ~@2 x!2 ~", J: "x!2", K: "x!6 ~ x", L: "~@4 x ~@2 x", M: "~@2 x ~@4 x",
  N: "x ~@2 x!3 ~ x", O: "x ~@2 x ~ x ~@2",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@2 C D B@2 C D B@2 E F B@2 E F G@3 H I B@2 C D B@2 C D B@2 ~ J B@2 ~ J G@3 H K B@7 L B@2 E F B@2 E F G@4 M N O
  B@3 P B@2 Q R B@3 S B@3 T U
>`.pickRestart({
  A: "x ~@3 x ~ x ~@7 x!2", B: "~ x ~ x", C: "~@4 x ~@3 x ~@4 x!2 ~", D: "~@3 x!2 ~@7 x!2 ~@2", E: "x ~ x!2 ~@2 x ~",
  F: "x!2 ~ x ~@4", G: "x!4", H: "x ~@3 x ~@3 x ~ x ~@2 x!2 ~", I: "~@3 x!2 ~@4 x ~@2 x!4", J: "~@12 x!4",
  K: "x ~@3 x ~@7 x!4", L: "~@4 x ~@7 x!4", M: "x!8", N: "x!5 ~@6 x!2 ~@3", O: "~ x!2 ~@5 x ~@3 x ~@3",
  P: "~@4 x ~@3 x ~@3 x!4", Q: "~@4 x ~@2 x ~@4 x ~@3", R: "x!2 ~@2 x!3 ~ x!3 ~ x!4", S: "~@8 x ~ x ~ x ~ x!2",
  T: "~@8 x!8", U: "x ~@2 x ~ x ~@2",
})).gain(0.57)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A ~@2 B C ~@2 B C ~@2 D ~@3 D ~@5 C ~@2 B C ~@2 B C ~@3 C ~@3 C ~@4 E ~@7 E ~@2 D ~@3 D ~@7 F ~@3 G ~@7 H ~@3 I ~
>`.pickRestart({
  A: "~ x ~ x ~@8 x!2 ~@2", B: "~@7 x ~@8", C: "~@10 x!2 ~@4", D: "~@2 x!2 ~@12", E: "~@8 x!4 ~@4", F: "~@11 x ~@4",
  G: "~@6 x!2 ~@2 x ~@5", H: "~ x!3 ~@4", I: "~@4 x!4 ~@8",
})).gain(0.17)

// drums · clap
const clap = s("cp").struct(`<
  ~@5 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@7 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@7 A@10 ~@2 A@2 ~@9 A@16 ~
>`.pickRestart({
  A: "~ x ~ x",
})).gain(0.57)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~@3 B ~@3 B ~@2 C B ~@2 C B ~@8 B ~@3 B ~@3 D ~@3 D ~@15 C B ~@2 C B ~@5 E ~@4 B ~@7 F ~@3 B G
>`.pickRestart({
  A: "~@4 x ~@2 x", B: "~@12 x!4", C: "~ x ~@2", D: "x!2", E: "~@5 x!3 ~@8", F: "~@6 x!2", G: "x ~@2 x ~ x ~@2",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@6 B C A@2 B C A@2 D E A@2 D E A@3 F C A@2 B C A@2 B C A@11 F A@11 D E A@2 D E A@5 ~@2 A@9 G A@6 H
>`.pickRestart({
  A: "x!4", B: "x!2 ~ x", C: "~ x!3", D: "x!2 ~@2", E: "x!2 ~ x ~ x!2 ~", F: "x!3 ~", G: "x ~ x!2", H: "x",
})).gain(0.57)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A@2 B ~ A@2 B ~ A@2 C D A@2 C D A@3 E ~ A@2 B ~ A@2 B ~ A@2 ~@2 A@2 ~@2 A@3 E A@11 C D A@2 C D A@5 ~@2 A F A F A F
  A F A F A F A F A F ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~ x ~@6", D: "~@7 x", E: "~ x ~ x ~@3 x", F: "~@3 x ~ x ~ x",
})).gain(0.17)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A ~@3 B ~@3 B ~@2 C D ~@2 C D ~@8 B ~@3 B ~@2 E ~@3 E ~@16 C D ~@2 C D ~@5 F ~@4 D ~@7 G ~@3 H ~
>`.pickRestart({
  A: "~@6 x!2 ~@4 x!2 ~@2", B: "~@8 x!2 ~@6", C: "~@2 x!2 ~@12", D: "~@10 x!2 ~@4", E: "~@2 x ~@2 x!2 ~",
  F: "~@3 x!2 ~@11", G: "~@5 x ~@2", H: "~@8 x!4 ~@4",
})).gain(0.57)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A B ~@2 A B ~@2 C ~@3 C ~@4 A D ~@2 A B ~@2 A B ~@11 A ~@11 C ~@3 C ~@6 A C ~ E ~ E ~ E ~ E ~ E ~ E ~ E ~ E ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "x ~@2 x ~@4", C: "~@3 x ~@4", D: "x", E: "~ x ~@6",
})).gain(0.57)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A ~@31 B ~@3 B ~@40 C ~@5>".pickRestart({
  A: "~@10 x!2 ~@4", B: "x", C: "~ x",
})).gain(0.57)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@13 A B C ~ A B C ~@14 A B ~@2 A B ~@7 A B@3 A B@3 A B C ~ A B C ~@8 B@9 D B@6 ~
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "x ~ x!2",
})).gain(0.57)

// drums · tambourine
const tambourine = s("tb").struct("<~@68 [x!8]!13 [x!6 ~ x] [x!8]!4 ~>").gain(0.17)

// drums · shaker
const shaker = s("sh").struct("<~@68 [x!16]!11 [x ~ x!14] [x!16] [x!8 ~ x!7] [x!16]!4 ~>").gain(0.17)

stack(
  epiano2, rock_organ, rock_organ_soft, bass, brass_section, string_ensemble_2, kick, snare, snare_soft, clap, low_tom,
  hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, ride, tambourine, shaker
)

More by The Buckinghams