Strudelify

Its Only Love

The Beatles

KeyC majorTempo117 bpm
0:00/0:00
// Its Only Love — The Beatles
// 117 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 57 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Rythm Gtr B Muted, Rythm Gtr C Steel Str.
setcpm(117/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 · fretless bass · "Fretless E. Bass"
const bass = note(`<
  ~@2 A B C D E@2 C D E@2 F E G H I J K L I M N O P Q E@2 P Q E@2 R S T L I J K L I M N U V W X Y Z AA Z AA AB@4 ~
>`.pickRestart({
  A: "c2", B: "a1@3 a1", C: "c2@3 c2 b1@3 b1", D: "a#1@3 a#1 f1@2 f1@2", E: "g1@3 g1 d2@2 d2@2", F: "f1@3 f1 c2@2 c2@2",
  G: "c2@3 c2 g1 c2@2 b1", H: "a1@3 a1 e1 a1@2 a1", I: "a#1!4", J: "g1@2 g1@2 g1!2 a1@2", K: "c2@2 c2 g1 c2@2 c2 b1",
  L: "a1!2 e1 a1", M: "g1!4", N: "f1!4", O: "g1@2 g1@2 g1!2 a1 b1", P: "c2@3 c2 b1@2 b1@2", Q: "a#1!2 f1!2",
  R: "f1!2 c2!2", S: "g1@2 g1@2 g1@2 a1 b1", T: "c2@2 c2@2 g1 c2@2 b1", U: "g1@2 g1@2 g1!2 a1 c2",
  V: "f1@3 f1 f1@2 f1@2", W: "g1@3 g1 g1@2 d2@2", X: "c2@3 c2@3 g1@2", Y: "a1@3 a1@3 b1@2", Z: "c2@3 g1 c2@2 b1@2",
  AA: "a1@3 g1 a1@2 a1@2", AB: "c2/4",
})).s("gm_fretless_bass").gain(0.59).pan(0.6)

// chords · electric guitar jazz · "Lead Gtr Jazz"
const electric_guitar_jazz = note("<A@4 ~@2 B ~@11 A@2 ~@6 B C ~@2 D E ~@2 A@2 ~@2 A@2 ~@6 F@6 G@4 ~>".pickRestart({
  A: "[c4@3 b3 a3 g3@2 e3@9]/2", B: "c4@6 b3 c4 b3@8", C: "d#4@3 d4 ~@2 b3 ~", D: "b3@3 c4 ~@3 d#4",
  E: "~ d#4 ~@2 b3@2 d4 ~",
  F: "[[g3,c4]@3 [g3,b3] [a3,c4] [g3,c4]@2 [e3,g3,c4]@4 g3 g3@2 g3@2, ~@11 e3@5, ~@11 c4@3 ~@2]/2", G: "[e3,g3,c4]/4",
})).s("gm_electric_guitar_jazz").gain(0.59).pan(0.3)

// chords · acoustic guitar nylon · "Rythm Gtr A Nylon 2"
const acoustic_guitar_nylon = note(`<
  A B A B C D E F C D E F G E H I J E H I J E G E C D E F C D E F G E H I J E H I J E G E G E H I H I H I K@4 ~
>`.pickRestart({
  A: "[g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2, [c3,e3]!4", // C
  B: "[a3,c4,e4]@2 [a3,c4,e4]!2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]!2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2, [a2,e3]!4", // Am A5
  C: "[g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2, [c3,e3]!2 [e2,b2,e3]!2", // C Em C E5
  D: "[a#3,d4,f4]@2 [a#3,d4,f4]!2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2, [a#2,f3]!2 [f2,c3]!2", // A# F A#5 F5
  E: "[g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2, [g2,b2,d3]!4", // G
  F: "[g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2, [g2,b2,d#3]!4", // G Gaug
  G: "[a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2, [f2,c3,f3]!4", // F F5
  H: "[g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2, [c3,e3]!4", // C
  I: "[a3,c4,e4]@2 [a3,c4,e4]!2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2, [a2,e3]!4", // Am A5
  J: "[a#3,d4,f4]@2 [a#3,d4,f4]!2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2, [a#2,f3]!4", // A# A#5
  K: "[c3,e3,g3,c4,e4]/4", // C
})).s("gm_acoustic_guitar_nylon").gain(0.3).pan(0.1)

// chords · electric guitar muted · "Rythm Gtr B Muted"
const electric_guitar_muted = note("<A@4 ~@2 B C ~@2 B C ~ B ~@4 A@2 ~@6 B C ~@2 B C ~ B ~@4 A@2 ~@17>".pickRestart({
  A: "[~@7 [a2,a3]@9]/2", B: "~@5 d4 ~ d4", C: "~@5 d#4 ~ d#4",
})).s("gm_electric_guitar_muted").gain(0.42).pan(1)

// chords · acoustic guitar steel · "Rythm Gtr C Steel Str"
const acoustic_guitar_steel = note(`<
  ~@6 A B ~@2 A B ~ A ~@3 A ~@3 A ~ A ~@2 A B ~@2 A B ~ A ~@3 A ~@3 A ~ A ~ A ~@11
>`.pickRestart({
  A: "~@2 d4!2 ~@2 d4@2 ~@2 d4@2 ~@2 d4@2", B: "~@2 d#4!2 ~@2 d#4@2 ~@2 d#4@2 ~@2 d#4@2",
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(1)

// drums · kick
const kick = s("bd").struct("<~@4 A B@2 C@2 B@15 A B@2 C@2 B@5 C D B E B@3 C D@4 B@2 D@3 F G ~@4>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x ~@4", C: "x ~@2 x ~@3 x", D: "x ~@2 x!2 ~@3", E: "x ~@2 x ~ x ~ x",
  F: "x ~@2 x!2 ~ x!2", G: "x",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@4 [~ x ~ x]!48 ~@5>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~@4 [~@5 x ~@2]!48 ~@5>").gain(0.5)

// drums · crash
const crash = s("cr").struct("<~@52 x ~@4>").gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 [x!16]!8 x ~@11 [x!16]!12 [x!8 ~@8] ~@8>").gain(0.3)

stack(
  bass, electric_guitar_jazz, acoustic_guitar_nylon, electric_guitar_muted, acoustic_guitar_steel, kick, rim, hihat,
  crash, tambourine
)

More by The Beatles