Strudelify

It Won't Be Long

The Beatles

KeyE majorTempo143 bpm
0:00/0:00
// It Won't Be Long — The Beatles
// 143 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 2 "Lead Organ 3" named as an organ, played on drawbar organ (its oboe patch is not one)
// note: duplicate parts dropped: ch 8 "Gtr" electric guitar jazz (copy of ch 6 "Rythm Gtr Nylon" electric guitar clean)
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(143/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"
const bass = note(`<
  ~ A@2 B C A D E F G H E I H E J A@2 B K A D E L M N O A P Q R S T H E U H V W A@2 B K A D E L X Y O A P Z R S T H E U
  H V W A@2 B K A AA@3 AB@4
>`.pickRestart({
  A: "c#2@3 c#2 c#2@3 c#2", B: "e2@3 e2 e2@3 e2", C: "e2@3 e2 e2@2 e2@2", D: "a1@3 a1 a1@3 b1", E: "e2@3 e2 b1@4",
  F: "e2@3 e2 b1@2 g1 g#1", G: "e1 b1", H: "c2@3 c2 c2@3 c2", I: "e2@3 e2 b1@2 e2@2", J: "e2!5 b2 g#1 b1",
  K: "e2@6 e2@2 e2@3 ~ e2@4, ~@8 d#2 ~@7", L: "e2@2 e2 d#2 c#2 b1 g1 g#1", M: "e1@3 e1 b1@2 e2@2", N: "d#2@3 d#2 d#2@4",
  O: "d2@3 d2 d2@3 d2", P: "a1@3 a1 a1@4", Q: "b1@3 b1 b1@4", R: "f#2!8", S: "b1!4 b1@4", T: "e2@3 e2 b1@3 b1",
  U: "e2@3 e2 b1@3 e2", V: "e2@3 e2 b1 e2!3", W: "e2!5 b1 g#1 b1", X: "e1@3 e1 b1@3 e2", Y: "d#2@3 d#2 d#2@3 d#2",
  Z: "b1@3 b1 b1@2 b1@2", AA: "[a1@25 ~@6 g2@5 ~ f#2@5 f2@5 ~]/3", AB: "[e2@51 ~@13]/4",
})).s("gm_electric_bass_finger").gain(0.45)

// other · electric guitar clean · "Lead Gtr Muted"
const electric_guitar_clean = note(`<
  ~@7 A B C D B C D B E F ~@5 A B C ~@6 G C D B C D B H F ~@5 A B C ~@6 G C D B C D B H F ~@11
>`.pickRestart({
  A: "~@2 e3 d#3 [b2,c#3] b2 g2 g#2", B: "e2@2 e3 d#3 [b2,c#3] b2 g2 g#2", C: "e2", D: "[c3,g3]",
  E: "e2@2 e3 d#3 [b2,c#3] b2 g#2 b2", F: "c#3", G: "~@4 [b2,f#3,b3]!4", H: "e2!2 e3 d#3 [b2,c#3] b2 g#2 b2",
})).s("gm_electric_guitar_clean").gain(0.48)

// chords · electric guitar clean · "Rythm Gtr Nylon"
const electric_guitar_clean_2 = note(`<
  ~ A B C@2 B D E@3 F E@2 F E G B@2 C@2 B D E@2 H I J K L M N O E F E@2 F E G B@2 C@2 B D E@2 H I J K L M N O E F E@2 F
  E G B@2 C@2 B P@3 Q@4
>`.pickRestart({
  A: "[c#3,g#3,c#4,e4,g#4]@2 [c#3,g#3,c#4,e4,g#4]!2 ~@2 [c#3,g#3,c#4,e4,g#4]!2", // C#m
  B: "~@2 [c#3,g#3,c#4,e4,g#4]!2 ~@2 [c#3,g#3,c#4,e4,g#4]!2", C: "~@2 [e3,b3,e4,g#4,b4]!2 ~@2 [e3,b3,e4,g#4,b4]!2",
  D: "[a2,e3,a3,c#4,e4] [a2,e3,a#3,c#4,e4]", E: "~@2 [e3,g#3,b3,e4]!2 ~@2 [e3,g#3,b3,e4]!2",
  F: "~@2 [c3,e3,g3,c4,e4]!2 ~@2 [c3,e3,g3,c4,e4]!2", // C
  G: "~@5 [b3,e4] ~ [b3,e4] [e3,g#3,b3,e4]@2 ~@6, ~@2 [e3,g#3,b3,e4]!2 ~@4", H: "[e2,b2,e3,g#3,b3,e4]",
  I: "[b3,d#4,g4]", J: "[d3,b3,d4,f#4]@10 [d3,b3,d4] ~ [b3,d4]@2 [b3,d4]@2", K: "[c#3,f3,b3,c#4]",
  L: "~@2 [a2,e3,a3,c#4,e4]!2 ~@2 [a2,e3,a3,c#4,e4]@2", M: "~@2 [b2,f#3,b3,d#4,f#4]!2 ~@2 [b2,f#3,b3,d#4,f#4]@2",
  N: "~@2 [a3,c#4,f#4]!6, ~ [f#2,c#3,e3]!3", O: "[a3,d#4,f#4]!8, [b2,f#3]!4",
  P: "[[a2,e3,a3,c#4,e4]@25 ~@6 [g3,b3,e4,g4]@6 [f#3,a#3,e4,f#4]@5 ~ [c4,e4]@5, ~@7 [f3,a3]]/3", // A Em F#7 C F
  Q: "[~ g#4@51 ~@12, [e3,b3,d#4]@51 ~@13]/4", // Emaj7
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.1)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A@5 B A@2 B A@3 B A B A@6 B A@6 B A@2 B A@3 B A B A@6 B A@6 B A@2 B A@3 B A B A@2 ~@6
>`.pickRestart({
  A: "x", B: "x ~@6 x",
})).gain(0.45)

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

// drums · hihat
const hihat = s("hh").struct("<~@24 A B C D E F G H ~@15 A B C D E F G H ~@19>".pickRestart({
  A: "~@2 x!6", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!2", C: "x ~ x ~ x ~@2 x!2 ~ x ~ x ~ x!2", D: "x!8",
  E: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", F: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x", G: "x ~ x ~ x ~ x!3 ~ x ~ x ~@3", H: "x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@15 [~@3 x] ~@22 [~@3 x] ~@22 [~@3 x] ~@12>").gain(0.45)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@7 B C A@5 D A@7 D E ~ F G ~ H@2 ~ C A@5 D A@7 D E ~ F G ~ H@2 ~ C A@5 D A@5 I ~@6
>`.pickRestart({
  A: "x!8", B: "x!2 ~@6", C: "~@2 x!6", D: "x!6 ~@2", E: "x ~@14 x", F: "~@3 x ~@4", G: "~@15 x", H: "~@7 x", I: "x",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@54 [~@8 x!4 ~@4] ~@19>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@22 A ~@22 A ~@12 B ~@5>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@68 [~@13 x!3] ~@5>").gain(0.35)

stack(bass, electric_guitar_clean, electric_guitar_clean_2, kick, snare, hihat, low_tom, open_hat, mid_tom, crash, ride)

More by The Beatles