Strudelify
She Loves You cover art

1

She Loves You

The Beatles

KeyG majorTempo145 bpm
0:00/0:00
// She Loves You — The Beatles
// 145 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: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 2 "Strings Lead Dbl" string ensemble 1 (copy of ch 1 "Rock Organ Lead" rock organ)
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(145/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 · rock organ · "Rock Organ Lead"
const rock_organ = note(`<
  A B C B C B D E@2 F@2 G H F@2 G I J K L@2 M N@2 O F@2 G H F@2 G I J K L@2 M P@3 B C B Q R S T O F@2 G H F@2 G I J K
  L@2 M P@3 B C B Q U S T V R S T V W X Y Z@3 AA@2 AB AC@3
>`.pickRestart({
  A: "~@7 d5", B: "e5 g5 g5@2", C: "f#5@3 e5@4 d5", D: "f#5 e5", E: "[[d5,e5]@12 ~@3 f4]/2",
  F: "[g4@2 a4@2 b4@2 c5 [b4,d5]@7 [b4,d5] [b4,e5]]/2", G: "[d5,f#5]@2 [b4,d5]@2 [b4,d5]@3 [a4,b4]",
  H: "[b4,d5] [d5,f#5] [b4,d5]@4 ~ g4", I: "[b4,d5] [d5,f#5] [b4,d5]@2 ~ d5!3", J: "e5@2 g5@4 g4 a4", K: "b4!2 a4 g4",
  L: "[[e4,b4]@12 ~@2 [g4,b4]!2]/2", M: "[a4,c5]@2 [a4,c5]@4 [a4,c5]!2",
  N: "[[a4,c5]@4 [a4,c5]@4 [c5,d#5]@4 [d#5,g5]@2 [d5,d#5,f#5,g5] [d5,f#5]@17]/2", O: "~@7 f#4",
  P: "[[a4,c5]@4 [a4,c5]@4 [c5,d#5]@4 [d#5,g5]@2 [d5,d#5,f#5,g5] [d5,f#5]@29 ~@2 d5@2]/3", Q: "f#5@3 e5@2 a4!2 b4",
  R: "[a4,c5]@2 [a4,c5]@2 [a4,c5]@2 ~ [g4,a4]", S: "[a#4,d5]@2 [a#4,d5]@2 [a4,c5]@2 [a4,c5]!2, ~@14 [g4,a#4] ~",
  T: "~ [g4,b4]@7", U: "[a4,c5]@2 a4@2 [a4,c5]@2 ~ [g4,a4]", V: "~@5 a4!2 b4", W: "[a4,c5]@2 [a4,c5]@2 [a4,c5]@3 ~",
  X: "[g4,a4]@3 [a#4,d5]@7 [a#4,d5]@2 ~ [a4,c5] [a#4,d5] [a4,c5]", Y: "[g4,a#4] [a4,c5]@5 ~@10",
  Z: "[[g4,d5] [g4,g5]@4 ~]/3", AA: "[g5@4 f#5@3 e5@5 ~@4]/2", AB: "g5 f#5", AC: "[e5@2 [d5,e5]@9 ~]/3",
})).s("gm_rock_organ").gain(0.72).pan(0.6)

// bass · fretless bass · "Fretless E.Bass"
const bass = note(`<
  ~ A B C D E F G H I J K L M J K L N O P B Q F R S I J K L M J K L N O P B Q F R T A B U V W T X Y I J K L M J K L N O
  P B Q F R T A B U V W T X Z W T X Z AA AB@2 AC AD AE AF AG AH AI@3
>`.pickRestart({
  A: "e2@3 e2 b1@3 d2", B: "e2@3 e2 b1@2 e2 ~", C: "a1@3 a1 e2@3 e2", D: "a1@3 a1 e2@2 a1 ~", E: "c2@3 c2 g2@3 g2",
  F: "c2@3 c2 g2@2 c2 ~", G: "g2@7 ~ d2@6 f2@2", H: "g2@7 ~ d2@2 d2@2 e2@2 f#2@2", I: "g2@3 g2 d2 ~ g2 ~",
  J: "e2@3 e2 e2@2 ~@2", K: "b1@3 b1 b1@2 ~@2", L: "d2@3 d2 d2@2 ~@2", M: "g2@3 g2 g2@2 ~@2", N: "g2@3 b1@3 d2@2",
  O: "g2@3 g2 d2@2 g2 ~", P: "e2@3 e2 b1@3 b1", Q: "c2@3 c2 g2@3 b1", R: "d2@3 f#2 a2@3 c#2", S: "d2@3 d2 a2 d2 e2 f#2",
  T: "d2@3 d2 a2@2 d2 ~", U: "a2@3 a2 e2@3 g2", V: "a2@3 a2 e2@2 a2 ~", W: "c2@2 c2@2 c2 ~@3", X: "g2@3 g2 d2@3 d2",
  Y: "g2@3 g2 d2!2 e2 f#2", Z: "e2@6 e2@2 e2@7 ~", AA: "c2@4 c2@4 c2@3 ~@5", AB: "[~@3 d2@17 ~@12]/2",
  AC: "~@4 g2@3 g2", AD: "d2@2 d2 f#2 g2@3 g2", AE: "d2@2 g2 f#2 e2@3 e2", AF: "b1@3 d2 e2@3 e2",
  AG: "b1@7 ~ c2@6 c2@2", AH: "g2@3 b1 c2@2 c2@2", AI: "[g2@6 c2@2 g2@33 ~@7]/3",
})).s("gm_fretless_bass").gain(0.64).pan(0.6)

// chords · electric guitar muted · "Lead Gtr Muted"
const electric_guitar_muted = note(`<
  ~@7 A@2 ~@8 B ~ C@2 ~@2 A@2 ~@8 B ~ C@2 ~@10 A@2 ~@8 B ~ D@2 ~@20 E@2 F@2 G@4
>`.pickRestart({
  A: "[~@7 f3@2 d3 [f3,a#3] [g3,g#3,c4,c#4] [g3,c4] a#3 d3 f3, ~@7 a#3@3 ~@3 f3@2 ~]/2", B: "~@3 [g3,b3]@5",
  C: "[~@8 b3@7 ~ [b3,f#4]@5 ~ [g3,b3,e4]@10, ~@7 g3@8 [f#3,g3]@6 e3@11, ~@8 g4@13 ~@11]/2", // B5 Em Gmaj7
  D: "[~@8 b3@7 ~ [g3,b3]@5 ~ [g3,b3,e4]@10, ~@7 g3@8 f#3@6 e3@11, ~@8 g4@13 ~@11, ~ f#4]/2", // G Em
  E: "[[g3,b3]@7 ~ [g3,b3]@5 ~ [g3,b3,e4]@10 ~@8, g4@13 ~@19, ~@7 f#3@6 e3@11 ~@8, ~ f#4@2 ~]/2", // G Em
  F: "[[g3,c#4]!2 [g3,c#4,e4] ~, g4@15 ~@17, ~ f#4@2 ~]/2", // Gdim C#dim
  G: "[[g3,c4]@2 [g3,c4]@2 [g3,c4,e4]@2 [g3,b3]@9 ~, g4@15 ~@49, ~@8 f#4@16 c4 ~@39]/4", // C5 C G
})).s("gm_electric_guitar_muted").gain(0.55).pan(1)

// bass · electric bass pick · "Lead Gtr Muted"
const bass_2 = note("<~@71 [~@7 f#2, ~@4 g2@3 ~, ~@11 d3@5] e2 ~@2 [~@7 f#2, ~@4 g2@3 ~, ~@11 d3@5] e2 ~@12>")
  .s("gm_electric_bass_pick").gain(0.62).pan(1)

// chords · acoustic guitar nylon · "Rythm Gtr Nylon"
const acoustic_guitar_nylon = note(`<
  ~ A B C D E@2 F@2 G H I J G H I J K L M@2 N@2 O@2 G H I J G H I J K L M@2 N@2 O@2 A B C D P J G@3 H I J G H I J K L
  M@2 N@2 O@2 A B C D P J G M P J G M Q R@2 S T U V W X Y@3
>`.pickRestart({
  A: "[e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g3,b3,e4]!2", // Em
  B: "[e2,b2,e3,g3,b3,e4]!2 ~ [e2,b2,e3,g3,b3,e4]", // Em
  C: "[a2,e3,g3,c#4,e4]@2 [a2,e3,g3,c#4,e4]@2 [a2,e3,g3,c#4,e4]@2 [a2,e3,g3,c#4,e4]!2", // A7
  D: "[a2,e3,g3,c#4,e4]@4 [a2,e3,g3,c#4,e4]@4 ~@3 [a2,e3,g3,c#4,e4]@2 ~ [c#4,e4]@2, ~@13 [a2,e3,g3]@3", // A7 C#m A7
  E: "[c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]!2", // C
  F: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!4 [g2,b2,d3,g3,d4,g4]@2", // G
  G: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2", // G
  H: "[e2,b2,d3,g3,d4,e4]@2 [e2,b2,d3,g3,d4,e4] [e2,b2,d3,g3,d4,e4]@2 [e2,b2,d3,g3,d4,e4] [e2,b2,d3,g3,d4,e4]@2", // Em7
  I: "[f#2,f#3,b3,d4,f#4]@2 [f#2,f#3,b3,d4,f#4] [f#2,f#3,b3,d4,f#4]@2 [f#2,f#3,b3,d4,f#4] [f#2,f#3,b3,d4,f#4]@2", // Bm
  J: "[d3,a3,c4,f#4]@2 [d3,a3,c4,f#4] [d3,a3,c4,f#4]@2 [d3,a3,c4,f#4] [d3,a3,c4,f#4]@2", // D7
  K: "[g2,b2,d3,g3,d4,g4]@3 [g2,b2,d3,g3,d4,g4]@5", L: "[g2,b2,d3,g3,d4,g4]!2",
  M: "[e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g3,b3,e4] [e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g3,b3,e4] [e2,b2,e3,g3,b3,e4]@2", // Em
  N: "[c3,g3,c4,d#4,g4]@2 [c3,g3,c4,d#4,g4] [c3,g3,c4,d#4,g4]@2 [c3,g3,c4,d#4,g4] [c3,g3,c4,d#4,g4]@2", // Cm
  O: "[d3,f#3,c4,d4]@2 [d3,f#3,c4,d4] [d3,f#3,c4,d4]@2 [d3,f#3,c4,d4] [d3,f#3,c4,d4]@2", // D7
  P: "~@4 [c3,g3,c4,d#4,g4]@4 [c3,g3,c4,d#4,g4]@3 ~@5", Q: "~ [c3,g3,c4,d#4,g4]!2 ~",
  R: "[~@3 [d3,a3,c4,f#4]@19 ~@10]/2", S: "~@2 [g2,b2,d3,g3,d4,g4]!2", T: "[g2,b2,d3,g3,d4,g4]!4",
  U: "[g2,b2,d3,g3,d4,g4]!2 [e2,b2,e3,g3,b3,e4]!2", V: "[e2,b2,e3,g3,b3,e4]!4",
  W: "[e2,b2,e3,g3,b3,e4]!2 [c3,e3,g3,c4,e4]!2", X: "[c3,e3,g3,c4,e4]!4",
  Y: "[[c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@4 ~ g4@36 ~@3, ~@2 [g2,b2,d3,g3,d4]@9 ~]/3", // C G
})).s("gm_acoustic_guitar_nylon").gain(0.34).pan(0.1)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@6 B@10 C B@15 C B@6 D A@4 D B@11 C B@6 D A@4 D B@3 D B@3 D ~@2 E A@6 ~@2
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@4", D: "x", E: "~ x",
})).gain(0.54)

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

// drums · low tom
const low_tom = s("lt").struct("<[~@8 x!2 ~ x!2 ~ x ~] ~@88>").gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@15 A ~@6 B ~@16 A ~@6 B ~@8 B ~@3 B ~@11>".pickRestart({
  A: "x ~@2 x ~@4", B: "x",
})).gain(0.48)

// drums · ride bell
const ride_bell = s("rd").struct("<~@7 A@10 B A@15 B A@6 ~@6 A@11 B A@6 ~@6 A@3 ~ A@3 ~@12>".pickRestart({
  A: "x!8", B: "~@4 x!4",
})).gain(0.42)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A B A B A B ~@34 A B A B C ~@19 A B A B C ~@3 C ~@3 C ~@2 D A E A E A F ~@2
>`.pickRestart({
  A: "x!16", B: "x!10 ~ x ~ x ~@2", C: "x!9 ~@7", D: "~@8 x!8", E: "x!2 ~ x ~ x ~@2 x!8", F: "x!2 ~ x ~ x ~@2 x ~@7",
})).gain(0.36)

stack(
  rock_organ, bass, electric_guitar_muted, bass_2, acoustic_guitar_nylon, kick, snare, low_tom, crash, ride_bell,
  tambourine
)

More by The Beatles