Strudelify

Ferry Across The Mersey

Gerry & The Pacemakers

KeyG majorTempo110 bpm
0:00/0:00
// Ferry Across The Mersey — Gerry & The Pacemakers
// 110 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 60 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · piano
const piano = note("<~ A B@3 C@7 D E F G H C@9 D E F G H E@2 I E I E I F J H C@7 D E F G H C@6 K>".pickRestart({
  A: "e4@3 e4 d4@2 g4@2, [g3,c4] [f3,a#3]", B: "e4@3 e4 d4@2 g4@2, [g3,c4] [g3,a#3]", C: "[g3,c4,e4] [d3,f3,g3,a#3]",
  D: "[g3,c4,e4]@2 [d3,f3,g3,a#3] [d3,f3,g3,b3]", E: "[c4,e4]@7 ~, g3", F: "[e4,g4]@7 ~, b3", G: "[d4,f4]@7 ~, a3",
  H: "[d3,f3], [g3,b3]@7 ~", I: "[a3,d4,f4] [d3,f3,g3,b3]", J: "[a3,c4], [d4,f#4]@7 ~", K: "[c4,e4,g4]",
})).s("gm_piano").gain(0.4)

// bass · electric bass finger · "Bass"
const bass = note("<A B@4 C@8 D E F G C@10 D E F G D@2 H D H D H E F G C@8 D E F G C@6 I>".pickRestart({
  A: "~@3 g3", B: "c3@3 a2 g2@2 g2@2", C: "c2 ~ c2 ~ c2 ~ c2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  D: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", E: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  F: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", G: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  H: "d2 ~ d2 ~ d2 ~ d2 ~ g2 ~ g2 ~ g2 ~ g2 ~", I: "c2",
})).s("gm_electric_bass_finger").gain(0.56)

// other · synth brass 1 · "Brass"
const synth_brass_1 = note(`<
  ~@5 A@2 B ~ A@2 B C D E F G H ~ A@2 B ~ A@2 B C D E F G I ~ J K L M N O P B A@2 B ~ A@2 B C D E F G Q@2 R@2 S@2 ~
>`.pickRestart({
  A: "[g4@18 f4@3 g4@2 ~ a#4@2 g4@3 f4@2 ~]/2", B: "g4", C: "~@3 g4", D: "c5@2 g4@4 c5 d5", E: "b4@2 g4@4 e4 b4",
  F: "a4@5 g4 f4 a4", G: "g4@5 g4 e4 d4", H: "e4", I: "e4@4 d4@2 [d4,e4] ~ c4@8", J: "d4 d4@2 e4 f4@2 g4 f4",
  K: "e4 c4@3", L: "~ d4!2 e4 f4@2 g4@2", M: "e4 ~", N: "~@2 d4@3 e4@2 ~ f4@2 g4@3 a4@3", O: "b4 g4 e4@2",
  P: "a4@2 a4!2 a4@2 g4 a4", Q: "[e4@10 ~ e4 d4@2 a4@2]/2", R: "[g4@6 f4 d4]/2", S: "c4/2",
})).s("gm_synth_brass_1").gain(0.56)

// chords · drawbar organ · "Organ"
const drawbar_organ = note("<~@33 A B A B A B C D ~@19>".pickRestart({
  A: "[a5,f6] [b5,f6]", B: "[g5,e6]", C: "[c6,f#6]", D: "[b5,f6]",
})).s("gm_drawbar_organ").gain(0.32)

// drums · kick
const kick = s("bd").struct("<~@5 [x!2]!54 x>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@5 [~ x ~ x]!54 [~ x ~@2]>").gain(0.48)

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

// drums · open hat
const open_hat = s("oh").struct("<~@14 A@3 ~ A@3 ~ A ~@4 A@2 ~ A@6 ~@2 A@2 ~ A@2 ~@2 A ~ A@3 ~@2 A@7 ~>".pickRestart({
  A: "~@7 x",
})).gain(0.56)

stack(piano, bass, synth_brass_1, drawbar_organ, kick, snare, hihat, open_hat)

More by Gerry & The Pacemakers