Strudelify
I Need You cover art

Help!

I Need You

The Beatles

KeyG majorTempo135 bpm
0:00/0:00
// I Need You — The Beatles
// 135 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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 · "Bass"
const bass = note(`<
  ~ A B C D E F G D H I J K L M@2 B C D E F G D H I J K L M@2 C N M O G P Q R S B C D E F G D H I J K L M@2 C N M O G P
  Q R S B C D E F G D H I J K L M@2 T U V W E X@2 ~
>`.pickRestart({
  A: "~@10 d2 ~ d2 ~ d2@2", B: "g2@4 ~@2 g2@2 d3@4 g2@3 ~", C: "c2@4 ~@2 c2@2 g2@4 c2@3 ~",
  D: "g2@2 d2 ~ d2 ~ d2 ~ d2@4 ~@2 d2@2", E: "g2@4 ~@2 g2@2 d2@3 ~ d2@2 ~@2", F: "g2@2 ~ g2 d3@2 g2 ~",
  G: "c2@5 ~ c2@2 g2@4 c2@3 ~", H: "g2@2 ~@2 f#2@3 ~", I: "e2@2 ~ e2 b2@2 e2 ~", J: "b2@5 ~ b2@2 f#2@4 b2@3 ~",
  K: "e2@5 ~ e2@2 b2@4 e2@4", L: "a2@5 ~ a2@2 e2@4 a2@3 ~", M: "g2@5 ~ g2@2 d2@3 ~ d2@3 ~",
  N: "d2@5 ~ d2@2 a2@4 d2@3 ~", O: "g2@5 ~ g2@2 d2@4 g2@2 ~@2", P: "d2@4 ~@2 d2@2 a2@3 ~ d2@2 ~@2",
  Q: "a2@4 ~@2 a2@2 e2@3 ~ e2@3 ~", R: "d2@5 ~ d2 ~ d2@6 ~@2", S: "~@3 d3@3 d3@2 d3@5 ~@3", T: "e2@2 ~ e2 b2 ~ b1 d#2",
  U: "e2@5 ~ b2@2 e3@4 d3@2 ~@2", V: "c3@5 ~ c3@2 g2@3 ~ g2@2 b2@2", W: "~ c3@4 ~ c3@2 g2@3 ~ c3@2 ~@2",
  X: "[~@4 g2 ~@3 g2@23 ~]/2",
})).s("gm_fretless_bass").gain(0.5)

// chords · acoustic guitar steel · "Steel String"
const acoustic_guitar_steel = note(`<
  A B@2 C B@3 D B@2 E F G H B A B C B@3 D B A G F E H B A D I B@2 D J K J@2 B C B A@2 D A@2 E L E H B@2 D J B A C M K
  J@2 B C A B@2 D B@2 E F G H A B E@2 D@2 B N@3
>`.pickRestart({
  A: "[g2,d3,g3] [g2,d3,g3]@3", B: "[g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@3 [g2,d3,g3]@2", C: "[c3,g3,c4] [c3,g3,c4]@3",
  D: "[c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@3 [c3,g3,c4]@2", E: "[e2,b2,e3]@2 [e2,b2,e3] [e2,b2,e3]@3 [e2,b2,e3]@2",
  F: "[b2,f#3,b3]@2 [b2,f#3,b3] [b2,f#3,b3]@3 [b2,f#3,b3]@2", G: "[e2,b2,e3] [e2,b2,e3]@3",
  H: "[a2,e3,a3]@2 [a2,e3,a3] [a2,e3,a3]@3 [a2,e3,a3]@2", I: "[d3,a3,d4] [d3,a3,d4]@3",
  J: "[d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@3 [d3,a3,d4]@2", K: "[a2,e3,a3]@2 [a2,e3,a3]!2 [a2,e3,a3]@2 [a2,e3,a3]@2",
  L: "[b2,f#3,b3] [b2,f#3,b3]@3", M: "[d3,a3,d4]!2 [d3,a3,d4]@2",
  N: "[[g2,d3,g3] [g2,d3,g3]@2 [g2,d3]@15 ~@6, ~@6 g3@35 ~@7]/3", // G5
})).s("gm_acoustic_guitar_steel").gain(0.39).pan(0.1)

// chords · electric guitar jazz · "Steel String"
const electric_guitar_jazz = note(`<
  A B A C A@3 D B E F G F H B@2 A C A@2 B C A I F G F H A@2 C J B@2 C J K J L A C A@3 C B E F M F H A@2 C J N@2 C O K
  J@2 B C A@3 C B E F G F H P B F@2 Q@2 B R@3
>`.pickRestart({
  A: "[d3,g3,b3]@3 [d3,g3,b3]@2 [d3,g3,b3]@2 [d3,g3,b3]", B: "[g3,b3,d4]@3 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]",
  C: "[e3,g3,c4]@3 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]", D: "[e3,g3,c4]@3 [e3,g3,c4]@2 [e3,g3,c4]@3",
  E: "[f3,b3,d4]@3 [f3,b3,d4]@2 [f3,b3,d4]@2 [f3,b3,d4]", F: "[e3,g3,b3]@3 [e3,g3,b3]@2 [e3,g3,b3]@2 [e3,g3,b3]",
  G: "[d3,f#3,b3]@3 [d3,f#3,b3]@2 [d3,f#3,b3]@2 [d3,f#3,b3]", H: "[e3,a3,c4]@3 [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]",
  I: "[d3,f3,b3]@3 [d3,f3,b3]@2 [d3,f3,b3]@2 [d3,f3,b3]", J: "[f#3,a3,c4]@3 [f#3,a3,c4]@2 [f#3,a3,c4]@2 [f#3,a3,c4]",
  K: "[e3,g3,c#4]@3 [e3,g3,c#4] [e3,g3,c4]@3 [e3,g3,c4]", L: "[f#3,a3,c4]@3 [f#3,a3,c4]@2 [f#3,a3,c4]@3",
  M: "[f#3,b3,d4]@3 [f#3,b3,d4]@2 [f#3,b3,d4]@2 [f#3,b3,d4]", N: "[d3,g3,b3]@3 [d3,g3,b3]@2 [d3,g3,b3]@3",
  O: "[f#3,a3,c4]@3 [f#3,a3,c4] [f#3,a3,d4]@3 [f#3,a3,d4]", P: "[g3,b3,d4]@3 [g3,b3,d4]@2 [g3,b3,d4]@3",
  Q: "[e3,g3,b3,c4]@3 [e3,g3,b3,c4]@2 [e3,g3,b3,c4]@2 [e3,g3,b3,c4]", // Cmaj7
  R: "[[g3,b3,d4] [g3,c4,d4]@2 [d3,g3,b3]@2 [d3,g3]@15 ~@4, ~@10 b3@35 ~@3]/3", // G Gsus4 G G5
})).s("gm_electric_guitar_jazz").gain(0.39).pan(0.9)

// chords · drawbar organ · "Lead 5"
const drawbar_organ = note(`<
  A B ~@2 C@2 ~@2 D@2 E F G H I B ~@2 J K ~@2 L@2 M N O@2 J P ~@2 Q ~ R ~ S T ~@3 U@2 ~@2 V W M X Y@2 J W Z AA AB ~ AC ~
  AD AE AF ~@2 AG@2 ~@2 AH@2 M AI M AJ AK P AL AM AN AO AP AQ@2 ~
>`.pickRestart({
  A: "[d4,g4,b4] ~ [d4,g4,a4]@3 ~@3", B: "~@4 [d4,g4,c5]@2 ~@2 [d4,g4,b4]@5 ~@3",
  C: "[[d4,g4,b4]@2 ~@2 [d4,g4,a4]@5 ~@7 g4@2 ~@2 [d4,g4,b4]@6 ~@6, ~@15 [d4,c5]@2 ~@15]/2", // G Dsus4 G D7
  D: "[[d4,g4,b4]@2 ~@2 [d4,g4,b4]@5 ~@7 g4@2 ~@2 [d4,g4,b4]@7 ~@5, ~@15 [d4,c5]@2 ~@15]/2", E: "[e4,g4,b4]@11 ~@5",
  F: "[f#4,b4,d5]@2 ~@2 [f#4,b4,d5]@7 ~@5", G: "[e4,g4,b4]@13 ~@3", H: "~ c5@11 ~@4, [e4,a4]@11 ~@5",
  I: "~@2 [d4,g4,b4] ~ [d4,g4,a4]@2 ~@2", J: "[d4,g4,b4]@2 ~@2 [d4,g4,a4]@5 ~@7", K: "[d4,g4,c5] ~ [d4,g4,b4]@3 ~@3",
  L: "[[d4,g4,b4]@2 ~@2 [f4,b4]@6 ~@5 [d4,g4,c5]@3 ~@2 [d4,g4,b4]@7 ~@5, ~ d4@2 ~@5]/2", M: "[e4,g4,b4]@3 ~",
  N: "[f#4,b4,d5]@3 ~ [f#4,b4,d5]@8 ~@4", O: "[[g4,b4]@7 ~ [a4,c5]@7 ~, e4@15 ~]/2",
  P: "[d4,g4,c5]@2 ~@2 [d4,g4,b4]@7 ~@5", Q: "[g4,b4,d5]@2 ~@2 [g4,b4,d5]@5 ~@7", R: "~ g4@10 ~@5, [c4,e4]@11 ~@5",
  S: "~ [e4,a4]@6 ~@2 [e4,a4,c5]@4 ~@3, c#5@3 ~@5", T: "[d4,f#4,a4,c5]@3 ~",
  U: "[[d4,g4,b4]@2 ~@2 [d4,g4,a4]@5 ~@6 [d4,g4,c5]@3 ~@2 [d4,g4,b4]@7 ~@5]/2", V: "[d4,g4,b4] ~ [d4,f4,b4]@3 ~@3",
  W: "[d4,g4,c5] ~ [d4,g4,b4]@4 ~@2", X: "~ [f#4,b4,d5]@11 ~@4", Y: "[[g4,b4]@12 ~@4 [a4,c5]@11 ~@5, e4@27 ~@5]/2",
  Z: "~@4 [g4,c5,e5]@7 ~@5", AA: "~ [f#4,a4,c5]@2 ~", AB: "~@5 g4@2 ~ [d4,g4,b4]@7 ~, ~@4 [d4,b4]@3 ~@9",
  AC: "[g4,c5,e5]@7 ~@9", AD: "~ [e4,a4,c#5]@6 ~@2 [e4,c5]@5 ~@2, ~@9 a4@7", AE: "~ [d4,f#4,a4,c5]@12 ~@3",
  AF: "~@2 [d4,f#4,a4,c5]@5 ~", AG: "[[d4,g4,b4]@2 ~@2 [d4,g4,a4]@6 ~@5 [d4,g4,c5]@3 ~@2 [d4,g4,b4]@8 ~@4]/2",
  AH: "[[d4,g4,b4]@3 ~ [d4,f4,b4]@7 ~@4 [d4,g4,c5]@3 ~@2 [d4,g4,b4]@8 ~@4]/2", AI: "[f#4,b4,d5]@13 ~@3",
  AJ: "[e4,a4,c5]@11 ~@5", AK: "[d4,g4,b4]@2 ~@3 [d4,g4,a4]@5 ~@6",
  AL: "[e4,g4,b4]@2 ~@2 [e4,g4,b4]@5 ~@3 [e4,g4,b4]@3 ~", AM: "[e4,g4,b4]@2 ~@2 [e4,g4,b4]@7 ~@5",
  AN: "~ [c4,e4,g4]@2 ~ [c4,e4,g4]@7 ~@2 [c4,e4,g4]@2 ~", AO: "~@3 [c4,e4,g4]@3 ~ [c4,e4,g4]@5 ~@4",
  AP: "~@4 [d4,g4,b4]@2 ~@2 [d4,g4,a4]@3 ~ [d4,g4,a4]@2 ~@2", // G Dsus4
  AQ: "[~@4 [d4,g4,c5]@2 ~@2 [d4,g4]@7 ~@17, ~@8 b4@13 ~@11]/2", // Csus2 G5
})).s("gm_drawbar_organ").gain(0.48).pan(0.7)

// other · melodic tom · "High Bong"
const melodic_tom = note("<~@30 A B@2 C B@5 ~@14 D E B@7 ~@22>".pickRestart({
  A: "c4 ~@3 c4 ~@3 c4@2 ~@2 c4 ~@3", B: "c4 ~@3 c4 ~@3 c4 ~@3 c4 ~@3", C: "c4 ~@15",
  D: "c4 ~@3 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2", E: "c4 ~ c4 ~ c4 ~ c4 ~",
})).s("gm_melodic_tom").gain(0.43).pan(1)

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

// drums · congas
const congas = s("conga:18").struct(`<
  ~ A B C D E A F A F A F A G A G A G A F A H I A J A J A J A J A J A@5 G K L M L M L M B G B G H N O A O A O A O A L P
  Q K C R A S A S H A Q C Q B H O T A G U ~@2
>`.pickRestart({
  A: "x!4", B: "~ x!2 ~ x ~ x ~", C: "x ~@2 x", D: "~@2 x!2", E: "~ x!3", F: "x!3 ~@3 x ~", G: "x!2 ~ x", H: "x!3 ~",
  I: "~ x ~@2 x ~ x ~", J: "~ x!2 ~@5", K: "~ x ~ x", L: "x!3 ~ x ~ x ~", M: "x ~ x ~ x!3 ~", N: "~ x!2 ~",
  O: "x ~ x!2", P: "x ~@3 x!3 ~", Q: "x!2 ~@2", R: "x!3 ~ x!2 ~@2", S: "x!2 ~@2 x!3 ~", T: "x!2 ~@2 x ~ x ~",
  U: "x!3 ~ x ~@3",
})).gain(1.6)

// drums · congas
const congas_2 = s("conga:33").struct("<~@2 [~ x ~ x]!79 [~ x ~@2] ~@2>").gain(1.6)

// drums · shaker
const shaker = s("sh").struct(`<
  ~ A B C B@4 D B D B D B D B@6 C B C B E B E B E B E B E B E B@9 C B C B C B C B C B C B@12 C B@7 D B D B@2 F ~@2
>`.pickRestart({
  A: "~@4 x ~ x!2", B: "x!4", C: "x ~ x ~ x ~ x!2", D: "x!3 ~ x ~ x ~", E: "x ~ x ~ x!3 ~", F: "x!3 ~",
})).gain(0.43)

stack(bass, acoustic_guitar_steel, electric_guitar_jazz, drawbar_organ, melodic_tom, kick, congas, congas_2, shaker)

More by The Beatles