Strudelify
Penny Lane cover art

1967 · Strawberry Fields Forever / Penny Lane - Single

Penny Lane

The Beatles

KeyC minorTempo113 bpm
0:00/0:00
// Penny Lane — The Beatles
// 113 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 84 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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, A@4 for four bars: edit a riff to change every repeat.

// other · piccolo · "Flute"
const piccolo = note("<~@4 A@2 ~ B C ~@19 D@2 E ~@41 F@4 G H@3 ~@4>".pickRestart({
  A: "[[c4,eb4]@47 ~]/2", B: "~@19 [bb5,b5] c6 ~ d6 ~", C: "eb6@2 c6@2 d6@13 ~@7",
  D: "[~@4 gb5@3 ~ f5@3 ~ eb5@14 ~@22]/2", E: "~@3 b5@4 ~ d6@4 eb6@11 ~",
  F: "[~@18 e6@2 f6 [f6,gb6] g6@9 ~@3 f6@2 e6@3 ~ f6@2 ~@3 [f6,gb6] g6@10 ~@2 f6@2 e6 ~@3 d6@2 ~@4 c6@20 ~@6]/4", // Gbmaj7
  G: "~@22 e6 [f6,gb6]", H: "[g6@9 ~ f6@2 e6@3 ~ f6@4 ~ [f6,gb6] g6@9 ~@3 f6@2 e6@2 ~@2 g6@2 ~@4 c6@6 ~@20]/3",
})).s("gm_piccolo").gain(0.4).pan(0.4)

// other · trumpet
const trumpet = note(`<
  ~@4 A@3 ~@5 B@3 ~@4 C D@2 ~@9 E F G H I J K L M N ~@2 C D@2 ~@6 O@3 P@2 ~@3 O@3 P@2 ~@2 Q@2 ~@6 R S ~ T@2 U ~@3
>`.pickRestart({
  A: "[c5@17 ~@7]/3", B: "[c5@23 ~]/3", C: "[d4,a4]@9 ~ [eb4,ab4]@2 ~@4 [eb4,g4]@2 ~@4 [bb3,f4]@2",
  D: "[[g3,eb4]@6 ~@4 [d4,g4]@3 ~@3 [eb4,g4]@2 ~@4 bb3@2 ab3@9 ~@15, ~@11 eb4@6 ~@7]/2", // Cm G5 Eb
  E: "~@12 g3 ~ a3 ~ b3@3 ~ b3 ~ c4 ~", F: "d4 ~ b3 ~ c4 ~ d4 ~ e4 ~ f4 ~ g4 ~ d4 e4 f4 ~ g4 ~ a4 ~ b4 ~",
  G: "c5 ~ e4 g4 c5 ~ e5@7 ~ c5 d5 e5 ~ c5 d5 e5 ~ d5 e5",
  H: "f5 ~ d5 e5 f5 ~ d5 ~ e5 ~ f5 ~ g5 ~@2 a5 ~ b5 g5 ~@2 a5 ~ b5", I: "c6 ~@4 c6@7 ~@2 c5 d5 e5 ~ f5 ~ g5 ~ a5 ~",
  J: "bb5@10 ~@4 eb6 ~ bb5 ~ g5 ~ eb5 ~ g5 ~", K: "eb5@3 ~@3 eb6@5 ~@3 eb6!3 ~ eb6 ~ eb6 ~ eb6 ~", L: "eb6@13 ~@11",
  M: "~@2 c6 ~ d6 ~ eb6 ~ c6 ~ d6@12 ~@2", N: "c5 ~ f5 ~ c5 ~ a5 ~ f5 ~ c6 ~ f6@7 ~@5", O: "~@6 c5 ~@11 g4 ~@5",
  P: "[~@6 g5@35 ~@7]/2", Q: "[f5@5 ~ g5@5 ~ a5@5 ~ bb5@5 eb5@6 ~ f5@5 ~ g5@11 ~]/2",
  R: "~@3 a4 ~ c5 f5 g5 ~ a5 bb5 ~ c6 ~@2 c6 ~ b5 ~ c6@5",
  S: "~@3 c6 ~ d6 e6 f6 ~ c6 bb5 ~ a5 ~@2 a5 ~ ab5 a5 ~ ab5 a5 ~@2",
  T: "[~@22 c6@7 ~ d6@5 ~ e6 ~@2 f6 ~@2 c6 ~@2 bb5 ~@2]/2", U: "a5@17 ~@7",
})).s("gm_trumpet").gain(0.4).pan(0.4)

// other · tubular bells · "Tublr Bell" · G
const tubular_bells = note("<~@32 [~@2 [g4,g5] ~ [g4,g5] ~ [g4,g5] ~ [g4,g5] ~ [g4,g5] ~ [g4,g5]@2 ~@10] ~@51>")
  .s("gm_tubular_bells").gain(0.6).pan(0.6)

// chords · brass section · "Brass"
const brass_section = note("<~@19 A B@2 ~@21 A B@2 ~@38>".pickRestart({
  A: "[d4,a4]@9 ~ [eb4,ab4]@2 ~@4 [eb4,g4]@2 ~@4 [bb3,f4]@2", // D5 Ab5 Eb Bb5
  B: "[[g3,eb4]@6 ~@4 [d4,g4]@3 ~@3 [eb4,g4]@2 ~@4 bb3@2 ab3@9 ~@15, ~@11 eb4@6 ~@7]/2", // Cm G5 Eb
})).s("gm_brass_section").gain(0.36).pan(0.9)

// chords · vibraphone · "Vibes"
const vibraphone = note(`<
  ~@16 A@2 B C D E@3 F ~@15 A@2 B C D E@3 F ~@15 A@2 B C D E@3 F G H I J K@3 L ~@3
>`.pickRestart({
  A: "[~ f4, ~@23 [bb3,d4]@17 ~@8]/2", B: "~ bb4@23, [bb3,f4]@3 ~", C: "~ g4@22 ~, [bb3,eb4]@11 ~",
  D: "[bb3,eb4]@17 ~@7, g3", // Eb5
  E: "[[bb3,d4]@17 ~@7 bb4@23 ~ g4@24, f4@23 bb3@18 ~@6 bb3@19 ~@6, ~@12 f4@9 ~@3 eb4@10 ~@2]/3", // Bb
  F: "[b3,d4,g4]@6 [d4,g4] ~@5", G: "~ g4@23, [c4,e4]@17 ~@7", H: "~ c5@23, g4, c4@3 ~", I: "~ a4@22 ~, [c4,f4]@11 ~",
  J: "[c4,f4]@17 ~@7, a3", K: "[[c4,e4]@17 ~@7 c5@23 ~ a4@24, g4@23 c4@18 ~@6 c4@19 ~@6, ~@12 g4@9 ~@3 f4@10 ~@2]/3",
  L: "[f4,a4,c5]", // F
})).s("gm_vibraphone").gain(0.21).pan(0.3)

// chords · piano
const piano = note(`<
  A B C D E@2 F G@2 H C I J@2 F K L M N O@3 N P Q H C I J@2 R S T U C I J@2 F K L V W X@2 V Y P Q H C I Z AA AB AC AD AE
  C I Z AA AB AC L V Y X@2 V AF P Q AG AH AI@2 AG AJ AK AL AM@2 ~
>`.pickRestart({
  A: "~@18 [c4,g4] ~@5", B: "[g3,c4,e4]@6 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,e4] ~@5, ~@9 c4 ~@2",
  C: "[a3,c4,f4]@3 [a3,c4,f4] ~@2 [b3,d4,g4]@3 [b3,d4,g4] ~@2", // F G
  D: "[c4,e4,g4]@6 [c4,e4,g4]@5 ~ [c4,e4,g4]@6 [e4,g4,c5]@3 ~@3", // C
  E: "[eb4,g4,c5]@5 ~ [eb4,g4,c5]@2 ~@4 [eb4,g4,c5]@5 ~ [eb4,g4]@2 ~@4, ~@18 c5 ~@5", // Cm Eb
  F: "[eb4,g4]@2 ~ [eb4,g4]@2 ~ [eb4,g4]@2 ~ [eb4,g4]@2 c4, ~@4 c4@6 c4@5 ~ c4@5 ~@3", // Eb
  G: "[c4,d4,g4] ~@2 [c4,d4,g4] ~@2 [b3,d4,g4] ~@2 [d4,g4] ~@2, ~@18 b3 ~@5", // Csus2 G G5
  H: "[g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [a3,c4,e4]@5 ~ [c4,e4]@2 ~@4, ~@18 a3 ~@5", // C Am C
  I: "[c4,e4,g4]@6 [c4,e4,g4]@5 ~ [c4,e4,g4]@6 [c4,e4,g4]@3 ~@3", // C
  J: "[c4,eb4,g4]@5 ~ [c4,eb4,g4]@2 ~@4 [c4,eb4,g4]@6 [c4,eb4,g4]@2 ~@4", // Cm
  K: "[d4,g4]@2 ~ [d4,g4]@2 ~ [d4,g4]@2 ~ [d4,g4]@2 c4, ~@4 c4@6 c4@5 ~ c4@5 ~@3", // G5
  L: "[f4,a4]@2 ~ [a4,c5]@2 f4 [a4,f5]@2 ~@4, ~@4 c4@5 ~@15", M: "[bb3,d4,f4]@17 ~@7", N: "[bb3,f4,bb4]@3 ~",
  O: "[[bb3,eb4,g4]@2 ~@4 [eb4,g4]@4 bb3@2 [eb4,g4]@4 ~@2 [eb4,g4]@4 ~@2 [eb4,g4]@2 ~@4 [eb4,g4]@4 ~@2 [eb4,g4]@4 ~@8 [d4,f4]@17 ~@7, ~@8 bb3@2 ~ bb3@2 ~@4 bb3@2 ~ bb3@2 ~ bb3@5 ~@8, ~@7 [eb4,g4] ~@4]/3", // Eb Dm Eb
  P: "[bb3,eb4,g4]@3 ~@3 [eb4,g4]@4 ~@2 [eb4,g4]@4 bb3@2 [eb4,g4]@5 ~, ~@5 bb3@2 ~@5", // Eb
  Q: "[b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@5", // G
  R: "[c4,eb4,g4]@4 ~@2 [c4,eb4,g4]@4 ~@2 [c4,eb4,g4]@4 ~@2 [c4,eb4,g4]@5 ~", // Cm
  S: "[g4,c5,d5] ~@5 [g4,c5,d5] ~@5 [g4,b4,d5] ~@5 [b4,d5]@6, ~@18 g4 ~@5", // Gsus4 G Bm
  T: "[c5,d5] ~@5 [g4,c5,d5] ~@5 [g4,b4,d5] ~@5 [g4,b4,d5] ~@5, g4 ~@3", // Csus2 Gsus4 G
  U: "[e4,g4,c5]@5 ~ [e4,g4,c5]@5 ~ [c4,e4,g4]@5 ~ [c4,e4]@2 ~@4, ~@18 g4 ~@5", // C
  V: "[bb3,d4,f4]@5 ~ [bb3,f4]@2 ~@4 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5, ~@6 d4 ~@17", // Bb Bb5 Bb
  W: "[bb3,f4,bb4]@5 ~ [bb3,f4,bb4] ~@5 [bb3,f4]@2 ~@4 [bb3,f4]@2 ~@4, ~@12 bb4 ~@5 bb4 ~@5", // Bb5
  X: "[[bb3,eb4,g4] ~@2 [eb4,g4]@2 bb3 [eb4,g4]@2 ~ [eb4,g4]@2 ~ [eb4,g4] ~@2 [eb4,g4]@2 ~ [eb4,g4]@2 ~@3 bb3, ~@8 bb3@2 ~ bb3@2 ~@4 bb3@2 ~ bb3@2 ~@2, ~@7 [eb4,g4]]/2", // Eb
  Y: "[bb3,f4,bb4]@5 ~ [bb3,f4]@2 ~@4 [bb3,f4]@2 ~@4 [bb3,f4]@2 ~@4, ~@6 bb4 ~@5 bb4 ~@5 bb4 ~@5", // Bb5
  Z: "[c4,eb4,g4]@5 ~ [c5,g5] ~@5 [c5,g5] ~@5 [c5,g5] ~@5, ~@3 eb5 ~@2 eb5 ~@2 eb5 ~@2", // Cm C5
  AA: "[c5,eb5,g5]@5 ~ [c5,eb5,g5]@2 ~@4 [c5,eb5,g5] ~@5 [c5,eb5,g5]@2 ~@4", // Cm
  AB: "[c5,eb5,g5]@2 ~ [eb5,g5]@2 ~ [eb5,g5]@2 ~ [eb5,g5]@2 c5, ~@10 c5@5 ~ c5@5 ~@3", // Cm Eb
  AC: "[c5,d5,g5]@5 ~ [c5,d5,g5]@2 ~@4 [b4,d5,g5]@2 ~@4 [b4,d5,g5]@3 ~@3", // Csus2 G
  AD: "[d5,g5]@2 c5 [d5,g5]@2 c5 [d5,g5]@2 b4 [d5,g5]@2 b4", // G5
  AE: "[e4,g4,c5]@5 ~ [e4,g4,c5]@5 ~ [e4,g4,c5]@5 ~ [c4,e4]@2 ~@4, ~@18 g4 ~@5", // C
  AF: "[bb3,f4,bb4]@5 ~ [bb3,f4,bb4]@2 ~@4 [bb3,f4,bb4] ~@5 [bb3,f4,bb4] ~@5", // Bb5
  AG: "[c4,e4,g4]@5 ~ [c4,g4] ~@5 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5, ~@3 e4 ~@8", // C C5 C
  AH: "[c4,g4,c5]@5 ~ [c4,g4]@2 ~@4 [c4,g4,c5] ~@5 [g4,c5] ~@5, ~@6 c5 ~@11 c4@2 ~@4", // C5
  AI: "[[c4,f4,a4] ~@2 [f4,a4]@2 ~ [f4,a4]@2 ~ [f4,a4]@2 ~ [f4,a4] ~@2 [f4,a4]@2 ~ [f4,a4]@2 ~@3 c4, ~@5 c4@2 ~ c4@2 ~ c4@2 ~@4 c4@2 ~ c4@2 ~@2, ~@7 [f4,a4]]/2", // F
  AJ: "[c4,g4,c5]@5 ~ [c4,g4,c5] ~@5 [c4,c5]@2 ~@4 [c4,c5] ~@5, ~@12 g4 ~@5 g4@2 ~@4", // C5 C
  AK: "[c4,f4,a4]@3 ~@3 [f4,a4]@4 ~@2 [f4,a4]@4 c4@2 [f4,a4]@5 ~, ~@5 c4@2 ~@5", // F
  AL: "[a4,c5]@2 ~ [a4,c5]@2 f4 [a4,c5]@2 f4 [a4,c5]@2 f4, ~ f4 ~@4", AM: "[e4, c5@29 ~@19, g3@9 ~@7]/2",
})).s("gm_piano").gain(0.31).pan(0.6)

// bass · piano · "Piano Bass"
const bass = note(`<
  A B C D@2 E F G H I C D@2 J K L M N O P Q N O P R B C D@2 J K L S B C D@2 J K L T U V W X Y V Z R B C B AA AB K L S B
  C D@2 AC K L T U V W X Y V Z AD AE AF AG AH AI AF AJ AK AL@2 ~
>`.pickRestart({
  A: "~@18 g2 ~@5", B: "c3@5 ~ b2@5 ~ a2@5 ~ g2@5 ~", C: "f2@3 d2@2 ~ g2@3 g2@2 ~",
  D: "[c3@5 ~ b2@5 ~ a2@6 ~@6 c2@20 ~@4, ~@9 g2@13 ~@2]/2", E: "a1@7 ~", F: "ab1@7 ~", G: "g1@5 g1@5 ~@2",
  H: "g1@9 ~ g1@12 ~@2", I: "~@6 b2@5 ~ a2@5 ~ g2@5 ~", J: "a2@7 ~", K: "ab2@7 ~", L: "~@10 g1@7 ~@7, g2@11 ~",
  M: "f2@5 ~ c2@4 ~@2 [f1,f3]@3 ~@9", N: "bb1", O: "d2", P: "eb2", Q: "eb1", R: "g1@5 ~ g1@4 ~@2 g1@2 ~@10",
  S: "g2@5 ~ d2@5 ~ g1@3 ~@3 g1@3 ~@3", T: "f2@5 ~ c2@5 ~ f3@3 ~@9, ~@12 f1 ~@11", U: "bb1@9 ~ bb1@10 ~@2 bb1@2",
  V: "d2@9 ~ d2@10 ~@2 d2@2", W: "eb2@9 ~ eb2@5 g1@2 ~ ab1@3 bb1@2 ~", X: "eb1@6 ~@4 eb2@4 ~@2 g2@2 ab2@3 ~ bb2@2",
  Y: "bb1@9 ~ bb1@11 ~ bb1@2", Z: "eb2@8 ~@2 eb2@2 ~@4 bb2@2 eb3@3 bb2@2 ~", AA: "c2@23 ~", AB: "a1@23 ~",
  AC: "a2@3 ~ a1@4", AD: "[g1,g2]@5 ~ d2@4 ~@2 g1@2 ~@10", AE: "c2@9 ~ c2@10 ~@2 c2@2", AF: "e2@9 ~ e2@10 ~@2 e2@2",
  AG: "f2@9 ~ f2@5 a1@2 ~ bb1@3 c2@2 ~", AH: "f1@6 ~@4 f2@4 ~@2 a2@2 bb2@3 ~ c3@2", AI: "c2@9 ~ c2@11 ~ c2@2",
  AJ: "f2@8 ~@2 f2@2 ~@4 c3@2 f3@3 c3@2 ~", AK: "f1", AL: "c2/2",
})).s("gm_piano").gain(0.32).pan(0.6)

// bass · acoustic bass · "Acous Bass"
const bass_2 = note(`<
  A B C D E F G H I J K D E F G L M N O@2 P Q R S T J K D E F G U V W X D Y Z AA AB AC N O@2 P Q R S T J K D E F G U V W
  X D E AD AE AF AC N O@2 P Q R S T AG AH@2 AI AJ AK AL AM AN@2 ~
>`.pickRestart({
  A: "~@8 g3 ~@3", B: "~@6 b3@5 ~ a3@5 ~ g3@5 ~", C: "~@6 d3@5 ~@7 g3@3 ~@3", D: "c3@6 b2@5 ~ a2@5 ~@7", E: "c2@5 ~",
  F: "a2@7 ~", G: "ab2@19 ~@5", H: "g2 ~@4 g2@4 g2@2 ~", I: "g2 ~@4 g2@3 ~ g2@2 ~", J: "c3@6 b2@5 ~ a2@5 ~ g2@6",
  K: "~@6 d2@5 ~@7 g2@3 ~@3", L: "g3@3 ~@3 g3@5 ~ g3@6 g3@5 ~", M: "f3 ~@2 f3@3 f2@3 ~@3",
  N: "ab1@9 ~ bb1@5 ~ bb1@2 bb1@3 ~ bb1 ~", O: "[db2@10 d2@6 bb1@2 c2@3 ~ eb2@11 ~ eb2@2 ~@3 g1@2 ~ ab1@3 bb1@2 ~]/2",
  P: "eb1@10 e1@4 ~@2 g1@2 ab1@3 ~ a1@2", Q: "bb1@9 ~ b1@3 ~@3 bb1@2 d2@4 bb1@2", R: "d2@9 ~ d2@2 ~@4 eb2@5 ~ d2@2",
  S: "eb2@9 ~ eb2@2 ~@4 a2@2 eb3@3 bb2@2 ~", T: "d2@6 b1@5 ~ g1@3 ~@9", U: "gb3@5 g3@4 g3 ~@2",
  V: "gb3@9 ~ g3@3 ~@6 d3 ~ g2@2 ~, ~@9 g3 ~@2", W: "b2@5 ~ b2@5 ~ a2@5 ~ g2@6", X: "f2@4 ~@2 d2@5 ~ g2@5 ~ g2@3 ~@3",
  Y: "c3@2 ~@4 c3@2 ~@4 c3@5 ~ c3@6", Z: "a2@2 ~@4 a2@2 ~@4 a2@3 ~@3 a2@6", AA: "ab2@2 ~@4 ab2@2 ~@4 ab2@5 ~ ab2@6",
  AB: "g2 ~@2 g2 ~@2 g2 ~@2 g2@3", AC: "e3@3 ~ d3@2 c3@3 ~ a2@2 f2@3 ~@9", AD: "a1@2 ~@4 a1@5 ~ a1@2 ~@4 a1@5 ~",
  AE: "ab1@2 ~@4 ab1@5 ~ ab1@2 ~@4 ab1@5 ~", AF: "g1@3 ~@3 g1@4 ~@2 g1@6 g1@5 ~", AG: "bb1@9 ~ c2@5 ~ c2@2 c2@3 ~ c2 ~",
  AH: "[eb2@10 e2@6 c2@2 d2@3 ~ f2@11 ~ f1@2 ~@3 a1@2 ~ bb1@3 c2@2 ~]/2", AI: "f1@10 gb1@4 ~@2 a1@2 bb1@3 ~ b1@2",
  AJ: "c2@9 ~ db2@3 ~@3 c2@2 e2@3 ~ c2@2", AK: "e2@9 ~ e1@2 ~@4 f2@5 ~ f1@2", AL: "e2@6 f2@5 ~ f2@5 ~ a2@6",
  AM: "c3@6 f2@6 b2 c3@2 c3@2 ~ f2@6", AN: "c2/2",
})).s("gm_acoustic_bass").gain(0.41)

// bass · acoustic bass · "Acous Bass" · soft notes
const bass_soft = note("<A@2 B C ~@3 D E ~ F C ~@8 G ~@5 F C ~@4 H ~ I C ~@14 F C ~@4 H ~ I C ~@24>".pickRestart({
  A: "[~@18 c4@3 c4@7 ~@20]/2", B: "f3@4 ~@8 g3@5 ~@5 b2@2", C: "~@9 g2@2 ~", D: "~@22 d2 ~", E: "~@16 d2 ~@5 d2@2",
  F: "f2@4 ~@8 g2@5 ~@5 b2@2", G: "~@15 bb0 ~@8", H: "~@8 d3 ~@3", I: "~@11 b2",
})).s("gm_acoustic_bass").gain(0.27)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  A B@4 C@2 D@2 B@4 C@2 D ~@8 E B@4 C@2 D ~ B@4 C@2 D ~@9 B@4 C@2 D ~ B@3 C@3 D ~@20
>`.pickRestart({
  A: "x!3 ~", B: "x!4", C: "x ~ x!2", D: "x!2", E: "~ x",
})).gain(0.19)

// drums · low tom
const low_tom = s("lt").struct("<~@80 [~@11 x] ~@3>").gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@23 A ~@23 A ~@23 B ~@3>".pickRestart({
  A: "~@11 x", B: "~@5 x",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A@2 B@2 ~@4 A@2 B ~@13 A@2 B ~@5 A@2 B ~@13 A@2 ~@5 A@3 ~@21>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x",
})).gain(0.25)

// drums · high tom
const high_tom = s("ht").struct("<~@8 A ~@23 B ~@23 B ~@23 A ~@3>".pickRestart({
  A: "~@3 x", B: "~@5 x",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@7 B ~@7 A ~@7 A ~@14 C A ~@6 C A ~@7 A ~@8 D ~@2>".pickRestart({
  A: "x!3 ~", B: "x!2 ~@2", C: "~ x ~ x", D: "x",
})).gain(0.29)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@4 A@3 B A ~@8 C@4 D C E ~@17 C@4 E D F ~@4 A@3 ~@5 A@3 ~@2 C@4 E D F ~ C@4 E D F E ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "x!2 ~ x", C: "x ~@2 x ~@2 x ~@2 x ~ x", D: "x ~@2 x ~@2 x ~ x!2 ~@2", E: "x!4",
  F: "x ~@2 x ~ x!2 ~@2 x ~@2",
})).gain(0.19)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct("<~@4 [x!2]!3 [~ x] [x!2] ~@75>").gain(0.1)

// … 7 more lines

More by The Beatles