Strudelify
Sgt. Pepper Inner Groove cover art

1980 · Rarities

Sgt. Pepper Inner Groove

The Beatles

KeyG majorTempo95 bpm
0:00/0:00
// Sgt. Pepper Inner Groove — The Beatles
// 95 bpm, 4/4, key G major. Source: 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 47 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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.

// bass · electric bass finger · "Bass guitar"
const bass = note(`<
  A@2 B C D E F E G H I J K L K M N O P Q R S T U V W@2 X Y K L K M N D E F E G H I J Z@2 AA AB@2
>`.pickRestart({
  A: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", B: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2!2 ~ c2!2 ~", C: "g1@13 ~ g1 ~",
  D: "g1 ~ g1@6 a1 ~ a1@6", E: "c2 ~ c2@6 g1 ~ g1@5 ~", F: "g1@2 g1@6 a1 ~ a1@6", G: "a1 ~ a1@5 ~ a1 ~ a1@5 ~",
  H: "c2 ~ c2@5 ~ c2 ~ c2@6", I: "g1 ~ g1@4 a#1@2 c2@4 c#2@2 d2@2", J: "g1 g1@2 a#1 c2@2 c#2 d2",
  K: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", L: "f2 ~ f2 ~ e2 ~ e2 ~ d2 ~ d2 ~ c2 ~ c2 ~",
  M: "d2 ~ d2 ~ a1 ~ a1 ~ d2 ~ d2 ~ a1 ~ a1 ~", N: "d2 ~ d2 ~ a1 ~ a1 ~ d2@6 ~@2", O: "g1@2 g1@2 ~@4 a#1 ~ a#1@2 ~@4",
  P: "c2@2 c2@2 ~@4 g1 ~ g1@2 ~@4", Q: "c2 ~ c2@2 ~@4 c2 ~ c2@2 ~@4", R: "g1 ~ g1 ~ g1@2 ~ g1!2 ~ g1@2 ~ g1!2 ~",
  S: "g1 ~ g1@2 ~@4 a#1 ~ a#1@2 ~@4", T: "c2@2 c2@2 ~@4 g1 ~ g1@3 ~@3", U: "a1 ~ a1@3 ~@3 a1@2 ~@2 a1 ~ a1 ~",
  V: "d2@7 ~", W: "[c2 ~ c2@2 ~@2 c2 ~ c2@3 ~ c2@2 g1@6 ~@2 g1 ~ g1@2 ~@2 g1@2 ~@2]/2",
  X: "a1 ~ a1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ c2@2", Y: "~@2 a1@2 ~@2 g1@2 ~@2 g1 ~ g1 ~@3",
  Z: "c2 ~ c2 ~ a#1 ~ a#1 ~ a1 ~ a1 ~ g1 ~ g1 ~", AA: "c2@2 ~ c2@2 ~@2 c2@2 ~ c2@2 ~ d2@2 ~",
  AB: "[~ d2@2 ~ d2@2 ~ d2@2 ~ e2@17 ~@5]/2",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · electric guitar clean · "Brass 1"
const electric_guitar_clean = note(`<
  A B C D E F@2 G@2 H I J K ~@4 L M N O L M P@2 Q R S T K ~@4 E F@2 G@2 H I J U@2 V@3
>`.pickRestart({
  A: "[a3,c#4,e4] a2 [a3,c#4,e4] a2 [a3,c#4,e4] a2 [a3,c#4,e4] a2, a2 ~@15", // A
  B: "[a3,c#4,e4] a2 [a3,c#4,e4] a2 [a3,c#4,e4] a2 [a3,c#4,e4] a2", // A
  C: "[a3,c#4,e4] ~ [c4,e4,g4] ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@2 ~ [c4,e4,g4]@2 ~ [c4,e4,g4] ~, ~@2 c3@4 ~ c3@2 ~ c3@2 ~ c3@3", // A C
  D: "[g2,g3,b3,d4]@13 [g2,g3,b3,d4] ~@2, g#2 ~@15", E: "g2 ~@3 [b2,d3]@4 a2@2 ~@2 [c#3,e3]@4, ~@2 g2@5 ~@3 a2@4 ~@2",
  F: "[c3@2 c3@2 ~@4 g2 ~@7 g2 ~@3 [b2,d3]@4 a2 ~@3 [c#3,e3]@4, ~@2 [e3,g3]@3 g2@2 ~@2 g2@2 ~@2 a2@2 ~, ~@12 [b2,d3]@7 ~@13]/2", // Bm C#m Em Bm
  G: "[c3@2 ~@6 g2 ~@7 a2 ~@3 [c#3,e3]@3 ~ [c#3,e3]@3 ~ [c#3,e3]@2 a2@2, ~@2 c3@4 ~@4 g2@4 ~@4 a2@8 ~ a2@2 ~@3, ~@2 [e3,g3]@3 ~ [b2,d3]@3 ~@7]/2", // C#m Em Bm
  H: "~@2 [e3,g3]@2 ~ [e3,g3]@2 ~ [e3,g3]@2 ~ [e3,a3]@2 c3 [e3,g3]@2, c3@6 ~ c3@2 ~ c3@2 ~@4", // Em A5 Em
  I: "g2 ~ g2@2 [b2,d3]@2 [f#2,g2] ~ c3@2 [e3,g3]@2 c3 [e3,g3]@3", // Bm Gmaj7 Em
  J: "g2@4 [b2,d3]@3 ~@2 b2@2 ~@3 d3@2, ~@8 d3@5 b2@3, ~@11 g2@5", K: "[c4,e4,g4]@13 ~@3",
  L: "[g2,b2,d3] ~ [g2,b2,d3]@2 ~@4 [a#2,d3,f3] ~ [a#2,d3,f3]@2 ~@4", // G A#
  M: "[c3,e3,g3] ~ [c3,e3,g3]@2 ~@4 [g2,b2,d3] ~ [g2,b2,d3]@2 ~@4", // C G
  N: "[c3,e3,g3] ~ [c3,e3,g3] ~ [c3,e3,g3]@3 ~ [e3,g3]@4 c3 ~ [g2,b2,d3]@2, ~@4 c3 ~@3", // C Em G
  O: "~@2 [g2,b2,d3] ~ [g2,b2,d3]@3 g2 [b2,d3]@2 g2 [b2,d3]@2 ~ [b2,d3]@2, ~@13 g2@3", // G Bm
  P: "[[a2,c#3,e3]@3 ~ [c#3,e3]@3 ~ [c#3,e3]@4 a2 ~ [d3,f#3,a3]@14 ~@4, ~@4 a2 ~@3 a2 ~@23]/2", // A C#m D
  Q: "[c3,e3,g3]@3 ~ [c3,e3,g3]@3 ~ [e3,g3]@4 c3 ~ [g2,b2,d3]@2, ~@8 c3 ~@7", // C Em G
  R: "~@2 [g2,b2,d3] ~ [b2,d3]@3 ~ [b2,d3]@4 g2 ~@3, ~@4 g2 ~@3 g2 ~@7", // G Bm
  S: "[a2,c#3,e3]@3 ~ [a2,c#3,e3]@3 ~ [c#3,e3]@4 a2 ~ [c3,e3,g3]@2, ~@8 a2 ~@7", // A C#m C
  T: "~@2 [a2,c#3,e3]@3 ~ [g2,b2,d3]@7 ~@3", U: "[[c4,e4,g4]@15 ~]/2",
  V: "[g3 e3 c3 g3 e3 ~ c3 g3 e3 c3 g3 e3 c3 a3 f#3 d3 ~ a3 f#3 d3 a3 f#3 d3 ~ f#3 d3 [e4,g#4,b4]@18 ~@4, [c4,e4,g4]@12 ~ [d4,f#4,a4]@12 ~@23, ~@23 a3@2 ~ [e3,g#3,b3]@13 ~@9]/3", // E C D E
})).s("gm_electric_guitar_clean").gain(0.54).pan(0.4)

// chords · clarinet · "Lead Line"
const clarinet = note(`<
  ~@3 A B@3 C D E F@2 ~@4 G H@2 I@2 J@2 K@2 L M N O P Q R S T U V U W D X Y@2 ~@2 Z@3
>`.pickRestart({
  A: "~@14 g4 f4", B: "g4!5 ~ f4 g4 ~@6 g4!2", C: "g4!5 ~ f4 g4 ~@7 g4", D: "a4!3 ~ a4 ~ g4 a4 ~@7 a4",
  E: "a#4!6 ~ a#4@2 ~@7", F: "[a#4 ~ a#4 ~ a#4!2 ~@2 a#4 ~ a#4!2 ~ a#4 ~ a#4@7 f4@3 ~ g4@5 ~]/2", G: "~@14 b3 ~",
  H: "[[d4,g4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5] ~ [g4,c5,g5]@3 ~ [g4,c5,g5]@2 [f4,a#4,f5]@4 [e4,a4,e5]@4 [d4,g4,d5]@6 ~@2 [d4,g4,d5] ~]/2", // G5 C5 A#5 A5 G5
  I: "[[e4,g4,e5] ~ [e4,g4,e5] ~ [e4,g4,e5] ~ [e4,g4,e5] ~ [e4,g4,e5]@3 ~ [e4,g4,e5] ~ [d4,g4,d5]@8 ~@10]/2", // Em G5
  J: "[[d4,g4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5] ~ [g4,c5,g5]@3 ~ [g4,c5,g5] ~ [f4,a#4,f5]@4 [e4,a4,e5]@3 ~ [d4,g4,d5]@7 ~ [d4,g4,d5] ~]/2", // G5 C5 A#5 A5 G5
  K: "[[e4,a4,e5] ~ [e4,a4,e5] ~ [e4,a4,e5] ~ [e4,a4,e5] ~ [e4,a4,e5]@3 ~ [e4,a4,e5] ~ [f#4,a4,f#5]@6 ~@12]/2", // A5 F#m
  L: "[e4,g4] ~ [e4,g4,e5] ~ [e4,g4,e5] ~ [e4,g4,e5] ~ [e4,g4,e5]@3 ~ [e4,g4,e5] ~ [d4,g4,d5]@2, e5 ~@7", // Em G5
  M: "~@2 [d4,g4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5]@3 ~ [d4,g4,d5] ~ [e4,g4,e5]@2", // G5 Em
  N: "~@2 [e4,g4,e5] ~ [e4,g4,e5] ~ [e4,g4,e5] ~ [e4,g4,e5]@3 ~ [e4,g4,e5] ~ [f4,g4,f5]@2", // Em Fsus2
  O: "~@2 [e4,g4,e5]@3 ~ [d4,g4,d5]@6 ~@2 d4@2", P: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4@3 ~ e4 ~",
  Q: "d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4@5 ~ d#4 ~", R: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~",
  S: "f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~", T: "f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4@4 ~ g4!2 ~",
  U: "g4!5 ~ f4 g4@2 ~@5 g4!2", V: "g4!3 ~ g4 ~ f4 g4 ~@6 g4!2", W: "g4!5 ~ f4 g4@2 ~@6 g4",
  X: "a#4!3 ~ a#4!2 ~ a#4@2 a4 g4 ~@3 a4 ~",
  Y: "[a#4 ~ a#4 ~ a#4!2 ~@2 a#4 ~ a#4!2 ~ a#4 ~ a#4@6 ~ f4 ~ g4 a4 g4@5 ~]/2", Z: "[g4@12 ~ a4@12 ~ b4@21 ~]/3",
})).s("gm_clarinet").gain(0.72)

// chords · clarinet · "Lead Line" · soft notes
const clarinet_soft = note(`<
  ~@29
  [c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4@4 c4 ~]
  [a3 ~ a3 ~ a3 ~ a3 ~ a3@4 ~@2 a3 ~]
  [c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~]
  [c4 ~ a3 ~ f#3 ~ a3 ~ c4 ~ d3 ~ f#3 ~ a3 ~]
  [c4 ~ d3 ~ f#3 ~ a3 ~ c4@4 ~@4]
  ~@13
>`).s("gm_clarinet").gain(0.48)

// other · distortion guitar · "Guitar" · Gsus2
const distortion_guitar = note("<[~@8 e4 g4 a4 a4@5]!2 [~@4 e4 g4 a4 c5@3 d5@2 c5 [g4,a4] a4@2] [d4@9 ~@7] ~@43>")
  .s("gm_distortion_guitar").gain(0.56)

// chords · trombone · "Trombones"
const trombone = note("<~@12 A B C D E ~@7 F ~@4 G H I J K ~@13>".pickRestart({
  A: "~@4 a#4 ~ a4 ~ g4 ~ e4@2 c4 ~ [a#3,e4] ~, c4@3 ~, e4@5 ~@3", // A#dim
  B: "[a3,f4] ~ c4 ~ f4@2 a#3 ~ c4 ~ a3 ~ f3 ~ a3 ~, ~@4 a3 ~@3 f4@6 ~@2", // Dm
  C: "~@4 c5 ~ a#4 ~ a4 ~ g4 ~ f4 ~ e4 ~, [g3,c4]@7 ~ c4@7 ~", D: "d4 c#4 [d4,e4] e4 f#4 e4 [f#4,a4] a4 c5@4 ~@4",
  E: "d4 c#4 d4 e4 f#4 e4 f#4 a4 d5@4 ~@4", F: "~@2 c4 ~ a3 ~ f#3 ~ d3@7 ~", G: "[g3,c4,e4]@7 ~",
  H: "[f3,a3,c4,d#4]@15 ~, c#4 ~@15", I: "[g3,c4,e4]@15 ~",
  J: "[d4,f#4] ~ [a3,d4] ~ [d4,f#4] ~ [a3,d4] ~ [d4,f#4] ~ [a3,d4] ~ [d4,f#4] ~ [a3,d4] ~", // D D5 D D5 D D5 D D5
  K: "[d4,f#4] ~ [d3,d4] ~ [f#3,f#4] ~ [a3,d4] ~ [d4,f#4]@4 ~@4", // D F# D5 D
})).s("gm_trombone").gain(0.78).pan(0.6)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A@3 B ~@3 C ~ D A E ~@25 C ~ D A E ~@5>".pickRestart({
  A: "x!8", B: "x ~@12 x!2 ~", C: "~@14 x!2", D: "~@7 x", E: "x ~ x ~ x ~ x ~ x ~@5 x!2",
})).gain(0.8)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@3 B ~ C ~ B ~@25 B ~ C ~ B ~@5>".pickRestart({
  A: "~@7 x!2 ~ x!2 ~@4", B: "~@10 x!2 ~ x ~@2", C: "~@11 x!3 ~@2",
})).gain(0.8)

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

// drums · high tom
const high_tom = s("ht").struct("<~@7 A ~ A ~@27 A ~ A ~@7>".pickRestart({
  A: "~ x",
})).gain(0.8)

stack(
  bass, electric_guitar_clean, clarinet, clarinet_soft, distortion_guitar, trombone, kick, snare, low_tom, hihat,
  mid_tom, open_hat, high_tom
)

More by The Beatles