Strudelify

You'll Never Walk Alone

Gerry & The Pacemakers

KeyC majorTempo83 bpm
0:00/0:00
// You'll Never Walk Alone — Gerry & The Pacemakers
// 83 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 50 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/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 · "A.PIANO 1"
const piano = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ Y Z AA AB AC AD AE AF AK AL AM
  AN@2
>`.pickRestart({
  A: "~@2 g4 ~ g4 e4 g4 e4 ~ e4 g4 e4, c3@23 ~, c4@8 ~@8 c4@7 ~, ~ e4@2 c5@2 ~@7",
  B: "~@2 g4 ~ g4 e4 g4 e4 ~@2 g4 e4, c3@23 ~, c4 ~ c4, ~@2 e4@4 c5@4 ~@8 c5@5 ~",
  C: "~@2 d4 ~ d4 b3 d4 b3 ~ b3 d4 b3, g2@23 ~, g3@8 ~@8 g3@7 ~, ~ b3@2 g4@2 ~@7",
  D: "~@2 d4 ~ d4 b3 d4 b3 ~@2 b3 g4, g2@15 ~ g2@8, g3@8 ~@10 g3@5 ~, ~ b3@2 g4@2 ~@7",
  E: "~@2 c4 ~ c4 a3 c4 a3 ~@2 a3 c4, f2@15 ~ f2@7 ~, f3@4 ~@5 f3@2 ~, ~ a3@2 f4@2 ~@7",
  F: "~@2 g4 ~ g4 e4 g4 e4 ~@2 e4 g4, c3@15 ~ c3@8, c4@8 ~@10 c4@5 ~, ~ e4@2 c5@2 ~@7",
  G: "~@4 g3 b3 d4 b3 ~ b3 d4 b3, g2@23 ~, ~ g3@2 d3@2 ~@7, ~@4 b3@5 ~@7 g3@7 ~",
  H: "~@2 a#3 ~ d4 a#3 d4 a#3 ~@2 a#3 g4, g2@15 ~ g2@8, ~@2 g3@4 g4@4 ~@8 g3@5 ~",
  I: "~@2 a4 ~ a4 f4 a4 f4 ~@2 f4 a4, d3@15 ~ d3@7 ~, d4@8 ~@10 d4@5 ~, ~ f4@2 d5@2 ~@7",
  J: "~@2 f4 ~ f4 d4 f4 d4 ~@2 d4 f4, a#2@15 ~ a#2@7 ~, a#3@8 ~@10 a#3@5 ~, ~ d4@2 a#4@2 ~@7",
  K: "~@2 c4 ~ c4 a3 c4 a3 ~ a3 c4 a3, f2@23 ~, f3@8 ~@8 f3@7 ~, ~ a3@2 f4@2 ~@7",
  L: "~@2 f4 ~ f4 d4 f4 d4 ~@2 a4 f4, d3@15 ~ d3@8, a3@8 ~@10 a3@5 ~, ~ d4@2 a4@2 ~@7",
  M: "~@2 d4 ~ d4 a#3 ~@2 a3 ~ a3 f3, a#2 f2, f3@4 ~@3 f3@2 ~@3, ~ a#3@2 f4@2 ~@4 c4@2 ~",
  N: "~@2 a#3 ~ a#3 g3 ~@2 a3 ~ a3 f3, g2 f2, ~ g3@2 d4@2 ~@2 f3@2 c4@2 ~",
  O: "~@2 g#3 ~ g#3 e3 ~ g#4@2 ~@2 b4, e2@11 ~ [e2,g#3,b3,d4,e4]@6 [e2,b3,d4,e4]@6, ~@2 e3@4 b3@5 ~@9 g#4@4", // E7
  P: "c5 ~@2 e4 ~ c4 ~ a#3 ~ g3 ~ e3, c3, ~@2 g4@4 ~@2 g4@5 ~@3 c4@8, ~@4 a#4@6 ~@2 e4@11 ~, ~@5 a#3",
  Q: "~@2 c4 ~ c4 a3 ~ a3 f3 a3 ~ a3, f2@23 ~, f3@3 c4 ~ c4, ~ a3@2 f4@9",
  R: "~@2 b3 ~ d4 b3 d4 b3 g#3 b3 ~ g#3, f2@23 ~, ~@2 g#3@7 ~@11 f3@4, ~@6 f4@5 ~@13",
  S: "~@2 e4 ~ g4 e4 ~@5 g4, c3@7 e4@2 c4@3, ~@2 c4@9 ~ g4@7 ~ e4@4, ~ c5@3, ~@2 c3",
  T: "~@2 g#3 ~ c4 g#3 ~@5 c4, f2@7 g#3@2 f3@3, ~ f3@5 c4@3 ~ g#3@2, ~ f4@3, ~@2 f2",
  U: "~ g4 e4 g4 e4 c4 ~ c4 ~@3 e4, c5@4 ~ c4, c3@7 ~ c3@4, ~@12 e4@5 ~ g3@6",
  V: "~@2 b3 ~ b3 g3 ~@5 b3, e2@7 g3@2 e3@3, e3@11 ~ b3@6 ~@2 g3@4, ~ g3@2 e4@9, ~@2 e2",
  W: "~@2 c4 ~ c4 a3 ~@5 c4, f2@7 a3@2 f3@3, f3@6 c4@3 ~ a3@2, ~ a3@2 f4@9, ~@2 f2",
  X: "~@2 g4 ~ g4 d4 ~@5 g4, g2@7 d4@2 b3@3, ~ d4@2 b4@9, ~@12 g4@7 ~ d4@4, ~@2 g2",
  Y: "~@2 e4 ~ g4 e4 ~ e4 c4 ~@2 g3, c3@23 ~, ~@2 c4@11 ~@7 c4@4, ~@6 c5@5 ~ g4@4 ~@2 e4@6",
  Z: "~@2 e4 ~ g#4 e4 ~@5 g#4, c3, ~@2 c4@12 e4@5 ~ e4@4, ~@3 c5@5 ~ c5@3, ~@3 g#4 c4@2",
  AA: "~@4 c4 a3 ~@2 f3 ~@2 c4, f2@17 ~ f2@6, ~ f3@5 ~ a3@5, ~ a3 ~ c4 ~ f3, ~ f4@3",
  AB: "~@3 f#4 d4 ~@2 a3 ~ d4 ~ d4, d2, ~@2 a3@10 d4@5 ~@3 a3@4, ~ a4@5, ~@10 f#4@5 ~ f#4@8",
  AC: "~@2 g4 ~@2 e4 ~@3 g#4 ~ g#4, [c2,c4] [e2,d4], ~ e4@2 c5@3 ~@2 b4@4, ~@8 g4@4 ~@2 e4@5 ~ e4@4", // C E7
  AD: "a4 a3 [c4,f4] a3 c4 a3 [c#4,f#4] a#3 [c#4,f#4] a#3 ~ a#3, f2@11 ~ f#2@11 ~, ~@2 f4 ~@2 [c#4,f#4]", // F5 F#5
  AE: "[g3,b3,e4]@2 [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,e4]@2 [g3,e4] ~ [g3,e4] ~ [g3,b3]@2 [g3,b3,e4]@2 [g3,e4] ~ [g3,e4]@2 [g3,e4] ~ [g3,b3,e4]@2, e2, ~@6 b3 ~ b3@2 b3@2 e4 ~@3 b3@2 b3 ~ b3@2 ~@2", // Em C G Em C Em
  AF: "[b3,d4,g4]@2 [b3,d4,g4] ~ [d4,g4]@2 [b3,g4] ~ [d4,g4]@2 [d4,g4]@2 [d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4]@2 [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4]@2, g2, ~@4 b3 ~ d4@2 b3 ~ b3 ~ b3@2 ~@10", // G G5 Em G5 G
  AG: "~@3 g3 ~ g3 ~@2 g#3 b3 ~ b3, c2@3 ~@2 g#3, ~ e3@2 ~ e3@2 b2@6, ~@4 c4@9 ~ e3@7 ~@3",
  AH: "~@2 a3 ~@2 f3 g3 [a3,c4,f4] g3 [a3,c4,f4] g3 [a3,c4,f4], f2@11 ~ g2@11 ~, ~ f3@3 a3@2 ~@6, ~ c4 ~@2", // F
  AI: "~@4 g3@2 ~@2 g3@2 e3@2 ~@2 e3@2 c3@2 e3@2 ~@2 e3 ~, c2, ~ e3@3 ~@2 g3@2 ~@2 c3@2, ~ c4@3",
  AJ: "[d4,g4] [b3,d4,g4]!2 [b3,d4]!2 [b3,d4,g4]!2 [b3,d4] [b3,d4,g4]!4, g2, b3 ~@5 g4 ~ g4 ~@5 g4 ~@9", // G5 G Bm G Bm G
  AK: "[c2,c3,g3,c4,e4] ~@7", AL: "[f2,a3,c4,f4]@11 ~@2 f4@11, ~ [g2,a3,b3,c4]",
  AM: "[a3,c4,f4]@5 ~ [a3,c4,f4]@4 [a3,f4] ~ [c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2, ~@5 c4 a3 ~@5", // F Dm F5 F
  AN: "[[c3,c4]@2 c3 ~ c3 ~@3 g4@2 [e4,g4,c5,e5]@2 [c2,e4,g4,c5,e5]@23 ~@13, e4@2 c4@3 ~@19, g3 ~ g3@8 ~@38, ~@6 [c3,e4]@4 c3@25 ~@13]/2", // C
})).s("gm_piano").gain(0.4)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A@2 B@2 C A B D E F C G H I J K C L A M A N O P A Q O R S T U V W X Y Z A Q O R S T AA AB AC AD AE AF ~
>`.pickRestart({
  A: "c2@9 ~ e2@2 g2@5 ~ e2@4 g2@2", B: "g1@9 ~ b1@2 d2@5 ~ b1@4 d2@2", C: "f1@9 ~ a1@2 c2@5 ~ a1@4 c2@2",
  D: "g1@9 ~ a#1@2 d2@5 ~ a#1@4 d2@2", E: "d2@9 ~ f2@2 a2@5 ~ f2@4 a2@2", F: "a#1@9 ~ d2@2 f2@5 ~ d2@4 f2@2",
  G: "d2@9 ~ f2@2 a2@5 ~ f2@2 a2@2 d2@2", H: "a#1@9 ~ a#1@2 f1@9 ~ f1@2", I: "g1@5 ~ g1@3 ~ g1@2 f1@5 ~ f1@3 ~ f1@2",
  J: "e1@2 e1@2 e1@2 e1@2 e1@2 e1 ~ e1@2 e1@2 e1@2 e1@2 e1@2 e1@2", K: "c2@6 c2 ~ c2 ~ c2@2 c2@6 c2 ~ c2@2 c2@2",
  L: "f1@9 ~ g#1@2 b1@5 ~ g#1@4 b1@2", M: "f2@9 ~ g#2@2 c3@5 ~ g#2@2 c3 ~ g#2@2", N: "e2@9 ~ g2@2 b2@5 ~ g2@4 b2@2",
  O: "f2@9 ~ a2@2 c3@5 ~ a2@4 c3@2", P: "g2@5 ~ g2@2 g2 ~ g2@2 g2@4 g2@2 g2@2 g2@2 g2@2",
  Q: "c2@9 ~ e2@2 g#2@5 ~ c2 ~ e2@2 g#2@2", R: "d2@9 ~ f#2@2 a2@5 ~ f#2@2 a2@2 f#2@2",
  S: "c2@5 ~ c2@3 ~ c2@2 e2@5 ~ e2@2 e2@2 e2@2", T: "f2@6 f2@2 e2 ~ f2@2 f#2@5 ~ f#2@3 ~ f#2@2",
  U: "e2@2 e2@2 e2@2 e2@2 e2@2 e2 ~ e2@2 e2@2 e2@2 e2@2 e2@2 e2@2",
  V: "g1@2 g1@2 g1@2 g1@2 g1 ~ g1@2 g1@4 g1@2 g1@2 g1@2 g1@2", W: "c2@9 ~ c2@2 e2@9 ~ e2@2",
  X: "f2@9 ~ f2@2 g2@5 ~ g1@3 ~ g1@2", Y: "c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 c2@2",
  Z: "g2 ~ g2@2 g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2",
  AA: "e2@5 ~ e2@2 e2@2 e2 ~ e2@2 e2@2 e2@2 e2@2 e2@2 e2@2",
  AB: "g2@2 g2@2 g2@2 g2@2 g2 ~ g2@2 g2@2 g2@2 g2@2 g2@4 g2@2", AC: "c2 ~@7", AD: "f2@11 ~ g2@11 ~",
  AE: "f2@5 ~ f2@2 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2 f2@2", AF: "c2@2 e2@2 g2@2 c3@2 c3 ~ c3 ~ c2@11 ~",
})).s("gm_acoustic_bass").gain(0.3)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@15 A B C D E F G H I J K L M N O P Q@2 R S T U@4 V O P W@2 ~ X@3 ~>".pickRestart({
  A: "~@2 [g#3,b3] [b3,d4]", B: "[c4,e4]", C: "~@6 [f3,a3,c4]@6 ~ a3@11, ~ [c4,f4,a4]",
  D: "~@6 [g#3,b3,d4]@6 [g#3,d4,f4,b4]@11 ~", E: "~ [g3,c4,e4] [c4,g4]@2, ~@6 [c3,c5]@5 ~",
  F: "~ [f3,g#3,d4,f4] [f3,d4,g#4,c5]@2", G: "[g4,c5,e5]@3 [e4,g4,c5], c3", H: "[e3,b3,e4,g4]", I: "[f3,a3,c4,f4,a4]",
  J: "[g3,b3,d4,g4,b4]", K: "~@6 c4@4 [d4,e4] [f4,g4] [a4,b4] c5@11",
  L: "~@6 c4@3 d4 e4 [f4,g4,a4] c5@10 ~@2, ~@12 b4 ~@11", M: "c4@6 c4@4 [d4,e4] [f4,g4] [a4,b4] c5@11",
  N: "~@6 d4@3 e4 f#4 [g4,a4,b4] d5@10 ~@2, ~@12 c5 ~@11", O: "c5 b4, e4", P: "[f4,c5] [f#4,c#5]", Q: "[e4 d4, b4]/2",
  R: "[c4,g4] [b3,b4], e4", S: "[a3,c4,f4] [g3,c4,f4,a4], c5@5 ~@7", T: "[c4,e4,g4]@23 g3",
  U: "[g#3 a3 a#3 b3 c4 d4 [d#4,e4] f4 f#4 g4 g#4 a4 [a#4,b4] c5 [c#5,d5] d#5 e5 f5 f#5 [g5,g#5] a5 a#5 b5 ~ g4@24 g#4@24 [c4,a4]@24, ~@23 c6@2 ~@71, ~ c5@3, ~ e4@2 ~]/4", // Emaj7 Bmaj7 Dmaj7 G#maj7 F
  V: "[d3,d4]", W: "[[e4,e5] [d4,b5], b4]/2", X: "[~@24 a3@23 ~ e4@24, ~@23 c4@49, ~@23 [f2,f4]@24 c3@24 ~]/3",
})).s("gm_string_ensemble_2").gain(0.48)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@35 A ~@3 B@2 ~@4 C@2 ~ D ~>".pickRestart({
  A: "c3", B: "[~@23 d5@24 ~]/2", C: "[~@24 c4@11 ~ g2@12, ~@23 [f3,a3]@25, ~@23 f4@23 ~@2, ~@23 f2@12 b3@4 ~@9]/2",
  D: "g3",
})).s("gm_string_ensemble_2").gain(0.32)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@25 A B C D E F G H I J ~ K L M N O P Q R H ~@5>".pickRestart({
  A: "~@6 c4@3 d4 [e4,f4] [g4,a4] c5@11 ~, ~@12 b4 ~@11", B: "~@6 c4@3 d4 [e4,f4] g4 [a4,b4] c5@10 ~",
  C: "~@6 c4@3 d4 [e4,f4] [g4,a4] b4 c5@10 ~", D: "~@6 d4@4 [e4,f#4] [g4,a4] [b4,c5] d5@10 ~",
  E: "g5@11 ~ g#5@12, f#5 ~@11 g5 ~@11", F: "a5@11 g#5 a#5@10 ~ a#5, ~@12 a5 ~@11", G: "b5 g5 b5 d6", H: "g6@23 ~",
  I: "g5 g#5", J: "a5@5 ~@7",
  K: "~@2 a#3 b3 c4 [c#4,d4] d#4 e4 f4 f#4 g4 g#4 a4 [a#4,b4] c5 c#5 d5 d#5 [e5,f5] f#5 g5 [g#5,a5] a#5 b5", L: "c6",
  M: "~@6 c5@3 d5 [e5,f5] g5 [a5,b5] c6@10 ~", N: "~@6 c5@3 d5 [e5,f5] [g5,a5] b5 c6@10 ~",
  O: "~@6 d5@4 [e5,f#5] [g5,a5] [b5,c6] d6@10 ~", P: "g6@11 ~ g#6@12, f#6 ~@11 g6 ~@11",
  Q: "a6@11 g#6 a#6@10 ~ a#6, ~@12 a6 ~@11", R: "b6@2 ~ g5@3 b5@3 d6@3",
})).s("gm_string_ensemble_1").gain(0.48).pan(0.4)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@29 A B ~@5 C ~@4 D E ~@7>".pickRestart({
  A: "f5 ~@10 f#5 ~@11 g5", B: "~@23 a5", C: "[g3,g#3] a3 ~@22", D: "f6 ~@10 f#6 ~@11 g6", E: "~@23 a6",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A@2 B@2 C A B D E F C E G H I J C K J L J M C B J N C O P Q M B P C J B J N C O P Q M B ~@2 C ~@2
>`.pickRestart({
  A: "~@6 [e3,g3,c4] ~@11 [e3,g3,c4] ~@5", B: "~@6 [b3,d4,g4] ~@11 [b3,d4,g4] ~@5",
  C: "~@6 [a3,c4,f4] ~@11 [a3,c4,f4] ~@5", D: "~@6 [a#3,d4,g4] ~@11 [a#3,d4,g4] ~@5",
  E: "~@6 [a3,d4,f4] ~@11 [a3,d4,f4] ~@5", F: "~@6 [a#3,d4,f4] ~@11 [a#3,d4,f4] ~@5",
  G: "~@6 [a#3,d4,f4] ~@11 [a3,c4,f4] ~@5", H: "~@6 [a#3,d4,g4] ~@11 [a3,c4,f4] ~@5",
  I: "~@6 [g#3,b3,e4] ~@11 [g#3,b3,d4] ~@5", J: "~@6 [g3,c4,e4] ~@11 [g3,c4,e4] ~@5",
  K: "~@6 [b3,d4,f4] ~@11 [b3,d4,f4] ~@5", L: "~@6 [g#3,c4,f4] ~@11 [g#3,c4,f4] ~@5",
  M: "~@6 [g3,b3,e4] ~@11 [g3,b3,e4] ~@5", N: "~@6 [g#3,c4,e4] ~@11 [g#3,c4,e4] ~@5",
  O: "~@6 [a3,d4,f#4] ~@11 [a3,d4,f#4] ~@5", P: "~@6 [g3,c4,e4] ~@11 [g#3,b3,e4] ~@5",
  Q: "~@6 [a3,c4,f4] ~@11 [a#3,c#4,f#4] ~@5", // F F#
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~ A@15 B A@7 C A@20 B ~ A D ~>".pickRestart({
  A: "x!2", B: "x", C: "x ~ x!2", D: "x!7 ~@5",
})).gain(0.56)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ A@15 ~ A@7 ~ A B A B A@9 B A B A@4 ~@2 A ~@2>".pickRestart({
  A: "~@5 x ~@5 x", B: "~@5 x ~@6",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!15 ~@34>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@16 A B@3 C B@3 D B E B F B G H I B@2 J K B@2 G L B@3 M ~@2 B N ~>".pickRestart({
  A: "~@6 x ~ x ~ x ~ x ~@5 x ~@3 x!2", B: "~ x ~ x", C: "~@6 x ~@11 x ~ x!4", D: "~@6 x ~@4 x ~@2 x!3 ~ x ~@2 x!3",
  E: "~@6 x ~@11 x ~@2 x!2 ~", F: "~@6 x ~@8 x!2 ~ x ~@2 x!3", G: "~@6 x ~@11 x ~ x!2 ~ x", H: "x!2 ~ x",
  I: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!6 ~ x!2 ~", J: "~@3 x ~@3 x!5", K: "~@2 x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x!3 ~@4",
  L: "x ~@2 x ~@5 x ~ x", M: "~@6 x ~ x!2 ~@3 x!7 ~@4", N: "~ x!6 ~@5",
})).gain(0.4)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@36 [~@2 x ~ x ~ x ~ x ~ x ~@9 x!4] ~@7 [~@21 x!3] ~@5>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@16 A ~@6 B C ~@8 B@2 D E ~@13>".pickRestart({
  A: "~@3 x!4 ~@2 x!2 ~", B: "~ x", C: "x!2", D: "x ~@9 x!2", E: "x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@37 x ~@7 x ~ x [x!3 ~] ~>").gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@17 A@3 B C ~@3 D E A F G H A I ~@4 J G B A@4 K ~@2 J L ~>".pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!3 ~ x ~@5", C: "x ~ x!3 ~@19",
  D: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", E: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@5",
  F: "x ~ x!3 ~ x ~ x ~ x ~ x ~@11", G: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
  H: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~@5", I: "x!7 ~@5", J: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~",
  K: "x!4 ~ x ~@6", L: "~ x!2 ~ x!2 ~@6",
})).gain(0.48)

stack(
  piano, bass, string_ensemble_2, string_ensemble_2_soft, string_ensemble_1, string_ensemble_1_soft,
  electric_guitar_clean, kick, kick_soft, rim, snare, snare_soft, hihat, mid_tom, open_hat, crash, ride
)

More by Gerry & The Pacemakers