Strudelify
Double Shot (Of My Baby's Love) cover art

1966

Double Shot (Of My Baby's Love)

Swingin' Medallions

KeyA♭ majorTempo127 bpm
0:00/0:00
// Double Shot (Of My Baby's Love) — Swingin' Medallions
// 127 bpm, 4/4, key Ab major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/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 · drawbar organ · "Organ Fill"
const drawbar_organ = note("<~ A B A B A B A C ~@24 A B A B A B A C ~@24 A B A B A B D E D E D F@3>".pickRestart({
  A: "ab4 a4 c5 ab4 a4 c5 ab4 a4", B: "[a4,d5]!2 ~ [a4,d5]@5", C: "~ [g4,c5]!7", D: "bb4 c5", E: "f4",
  F: "[f4@4 f4@2 f4@39 ~@3]/3",
})).s("gm_drawbar_organ").gain(0.52)

// bass · slap bass 2 · "Bass"
const bass = note(`<
  ~ A B A B A B A C D E F G D E F G D E F G D E H I A B A B A B H I A B A B A B A C D E F G D E F G D E F G D E H I A B
  A B A B H I A B A B A B H A H A H J@3
>`.pickRestart({
  A: "f2 ~@2 c2@3 f2 c2", B: "d2 ~@2 a1@3 d2 a1", C: "~ c3 c2!6", D: "f2@2 f1@4 f2@2 ~@2 f1 e1 f1 g1 a1 bb1",
  E: "d2 a1@2 d2@2 a1 f1 a1", F: "bb1 bb2 ~ f2@2 a2 bb1 b1", G: "c2@2 c3@4 c2@3 ~ c3@2 a2@2 g2@2",
  H: "bb1 bb2 ~ f2 c2 c3@2 c2", I: "f2 f1@2 f2 c2 c3@2 c2", J: "[f2@4 f2@2 f2@39 ~@3]/3",
})).s("gm_slap_bass_2").gain(0.6)

// chords · rock organ · "Organ (Left)"
const rock_organ = note(`<
  ~ A B A B A B A C D E F G D E H G D E F G D E I J A B A B A B I J A B A B A B A C D E F G D E K G D E F G D E I J A B
  A B A B I J A B A B A B I A I A I L@3
>`.pickRestart({
  A: "~@6 f4 a4, [f3,a3,c4]", B: "[d3,a3,d4,f4]", C: "~ [e3,c4,e4] [e3,g3,c4] [g3,c4] [e3,g3,c4] [g3,c4,e4]!2 [g3,c4]",
  D: "~@6 a4 f4, [a3,c4], f4@7 ~", E: "[a3,d4,f4]", F: "bb3@6 ~ f3, d4, f3@7 ~, ~@3 bb3",
  G: "g3@6 ~ e3, c4, e3@7 ~, ~@3 g3", H: "f3@7 f3, [bb3,d4,bb4]", I: "[f3,bb3,d4] [e3,g3,c4]",
  J: "[a3,c4,f4] [e3,g3,c4]", K: "f3@7 f3, [d4,bb4], bb3 ~@7", L: "[[f3,a3,c4]@4 [f3,a3,c4]@2 [f3,a3,c4]@39 ~@3]/3",
})).s("gm_rock_organ").gain(0.28).pan(0.3)

// chords · rock organ · "Organ (Right)"
const rock_organ_2 = note(`<
  ~ A B A B A B A C D E F G D E H G D E F G D E I J A B A B A B I J A B A B A B A C D E F G D E K G D E F G D E I J A B
  A B A B I J A B A B A B I A I A I L ~@2
>`.pickRestart({
  A: "~@6 f5 a5, [f4,a4,c5]", B: "[d4,a4,d5,f5]", C: "~ [e4,c5,e5] [e4,g4,c5] [g4,c5] [e4,g4,c5] [g4,c5,e5]!2 [g4,c5]",
  D: "~@6 a5 f5, [a4,c5], f5@7 ~", E: "[a4,d5,f5]", F: "bb4@6 ~ f4, d5, f4@7 ~, ~@3 bb4",
  G: "g4@6 ~ e4, c5, e4@7 ~, ~@3 g4", H: "f4@7 f4, [bb4,d5,bb5]", I: "[f4,bb4,d5] [e4,g4,c5]",
  J: "[a4,c5,f5] [e4,g4,c5]", K: "f4@7 f4, [d5,bb5], bb4 ~@7", L: "[f4,a4,c5]@4 [f4,a4,c5]@2 [f4,a4,c5] ~@9",
})).s("gm_rock_organ").gain(0.28).pan(0.7)

// chords · acoustic guitar steel · "Guitar (Right)"
const acoustic_guitar_steel = note(`<
  ~ A B C B C B C D C E F G C E F G C E F G C E H I A B C B C B H I A B C B C B C D C E F G C E F G C E F G C E H I A B
  C B C B H I A B C B C B H J H J H K@3
>`.pickRestart({
  A: "[f4,a4,c5]@3 [f4,a4,c5]!2 [f4,a4,c5]@2 ~", B: "[d4,f4,a4]@2 ~ [d4,f4,a4]@4 ~",
  C: "[f4,a4,c5]@2 ~ [f4,a4,c5]!2 [f4,a4,c5]@2 ~", D: "~ [c4,e4,g4]!7", E: "[d4,f4,a4] ~@2 [d4,f4,a4]@4 ~",
  F: "[bb3,d4,f4]@2 ~ [bb3,d4,f4]!2 [bb3,d4,f4]@3", G: "[c4,e4,g4] ~@2 [c4,e4,g4]@4 ~", H: "[bb3,d4,f4] [c4,e4,g4]",
  I: "[f3,a3,c4] [c4,e4,g4]", J: "[f3,a3,c4]!2", K: "[[f3,a3,c4]@4 [f3,a3,c4]@2 [f3,a3,c4]@39 ~@3]/3",
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.8)

// chords · acoustic guitar steel · "Guitar (Left)"
const acoustic_guitar_steel_2 = note(`<
  ~ A B C B C B C D C E F G C E F G C E F G C E H I A B C B C B H I A B C B C B C D C E F G C E F G C E F G C E H I A B
  C B C B H I A B C B C B H J H J H K@3
>`.pickRestart({
  A: "[f3,a3,c4]@3 [f3,a3,c4]!2 [f3,a3,c4]@2 ~", B: "[d3,f3,a3]@2 ~ [d3,f3,a3]@4 ~",
  C: "[f3,a3,c4]@2 ~ [f3,a3,c4]!2 [f3,a3,c4]@2 ~", D: "~ [c3,e3,g3]!7", E: "[d3,f3,a3] ~@2 [d3,f3,a3]@4 ~",
  F: "[bb2,d3,f3]@2 ~ [bb2,d3,f3]!2 [bb2,d3,f3]@3", G: "[c3,e3,g3] ~@2 [c3,e3,g3]@4 ~", H: "[bb2,d3,f3] [c3,e3,g3]",
  I: "[f2,a2,c3] [c3,e3,g3]", J: "[f2,a2,c3]!2", K: "[[f2,a2,c3]@4 [f2,a2,c3]@2 [f2,a2,c3]@39 ~@3]/3",
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.2)

// other · melodic tom · "Percussion"
const melodic_tom = note("<[~@8 f6 c6 f5 d5 a4 f4 c4 a3] ~@77 [~@5 f6 c6 f5 d5 a4 f4 c4 a3 ~@3]>")
  .s("gm_melodic_tom").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 B@2 C A D E F G F H F H A I F G F H F G J@2 A@2 B@2 C A J@2 A@2 B@2 C A D E F G F H F H A I F G F H F G J@2 A@2
  B@2 C A J@2 A@2 B@2 C A J C J C J K ~ L
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~ x ~@2", C: "x ~@3 x!2 ~ x", D: "x ~@2 x!2 ~@3", E: "~ x!7", F: "x ~@3 x ~@2 x",
  G: "x ~@2 x ~ x ~ x", H: "x!2 ~@2 x ~@2 x", I: "x!2 ~ x ~ x ~ x", J: "x ~@3 x!2 ~@2", K: "x", L: "~@13 x ~@2",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~ A@7 B A@31 B A@35 C ~ D>".pickRestart({
  A: "~ x ~ x", B: "~ x!7", C: "~ x ~@2", D: "~@13 x ~@2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@7 B C D E D E D E F C D E D C D G@2 ~@15 B C D E D E D E F C D E D C D G@2 ~@22
>`.pickRestart({
  A: "x!4", B: "~ x!7", C: "x!8", D: "~ x!3", E: "x!2 ~ x!3 ~ x", F: "x!7 ~", G: "x!2 ~ x ~@2 x ~",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A B A B A B ~@2 A B A ~ A C@2 ~@17 A B A B A B ~@2 A B A ~ A C@2 ~@22
>`.pickRestart({
  A: "x!2 ~ x ~ x ~ x", B: "~ x ~ x", C: "~@2 x ~ x!2 ~ x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@76 [~@3 x ~@4] ~@2>").gain(0.3)

// drums · ride
const ride = s("rd").struct("<~ [x!8]!7 ~@17 [x!8]!15 ~@17 [x!8]!19 [x!4 ~@4] ~@2>").gain(0.3)

stack(
  drawbar_organ, bass, rock_organ, rock_organ_2, acoustic_guitar_steel, acoustic_guitar_steel_2, melodic_tom, kick,
  snare, hihat, open_hat, crash, ride
)