Strudelify

Honey Don't

The Beatles

KeyE majorTempo180 bpm
0:00/0:00
// Honey Don't — The Beatles
// 180 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: Full arrangement: all 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/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 · acoustic guitar nylon · "Rythm Gtr Nylon Bk32"
const acoustic_guitar_nylon = note(`<
  ~@3 A@2 B@2 C@2 B@2 C@2 D@2 E@4 F A G@2 A@2 D@2 A@2 B@2 C@2 B@2 C@2 D@2 E@4 F A G@2 A@2 D@2 A@4 H@2 A@2 H I J@3 K L@2
  J@2 I M J@2 B@2 C@2 B@2 C@2 D@2 E@4 F A G@2 A@2 D@2 A@2 J@2 N@2 J@2 N I J@3 K O@2 P K Q@2 A R@7
>`.pickRestart({
  A: "[e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@4", // E
  B: "[[b2,e3,g#3,b3,e4]@27 [b2,e3,g#3,b3,e4] [b2,e3,g#3,b3,e4]@4]/2", // E
  C: "[[c3,e3,g3,c4,e4]@27 [c3,e3,g3,c4,e4] [c3,e3,g3,c4,e4]@4]/2", // C
  D: "[b2,d#3,a3,c#4,f#4]@4 [b2,d#3,a3,c#4,f#4]@4 [b2,d#3,a3,c#4,f#4]@3 [b2,d#3,a3,c#4,f#4] [b2,d#3,a3,c#4,f#4]@4", // B7
  E: "[[e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]]/4", // E
  F: "[e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4]", // E
  G: "[a2,e3,a3,c#4,g4]@4 [a2,e3,a3,c#4,g4]@4 [a2,e3,a3,c#4,g4]@3 [a2,e3,a3,c#4,g4] [a2,e3,a3,c#4,g4]@4", // A7
  H: "[c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@3 [c3,e3,g3,c4,e4] [c3,e3,g3,c4,e4]@4", // C
  I: "[b2,d#3,a3,c#4,f#4]@3 [b2,d#3,a3,c#4,f#4] [b2,d#3,a3,c#4,f#4]@3 [b2,d#3,a3,c#4,f#4] [b2,d#3,a3,c#4,f#4]@3 [b2,d#3,a3,c#4,f#4] [b2,d#3,a3,c#4,f#4]@3 [b2,d#3,a3,c#4,f#4]", // B7
  J: "[e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@4", // E
  K: "[e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4]", // E
  L: "[a2,e3,a3,c#4,g4]@3 [a2,e3,a3,c#4,g4] [a2,e3,a3,c#4,g4]@4 [a2,e3,a3,c#4,g4]@3 [a2,e3,a3,c#4,g4] [a2,e3,a3,c#4,g4]@4", // A7
  M: "[a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4] [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4] [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4] [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]", // A
  N: "[c3,e3,g3,c4,e4]@3 [c3,e3,g3,c4,e4] [c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@3 [c3,e3,g3,c4,e4] [c3,e3,g3,c4,e4]@4", // C
  O: "[a2,e3,a3,c#4,g4]@3 [a2,e3,a3,c#4,g4] [a2,e3,a3,c#4,g4]@4 [a2,e3,a3,c#4,g4]@3 [a2,e3,a3,c#4,g4] [a2,e3,a3,c#4,g4]@3 [a2,e3,a3,c#4,g4]", // A7
  P: "[e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4] [e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4]", // E
  Q: "[b2,d#3,a3,c#4,f#4]@3 [b2,d#3,a3,c#4,f#4] [b2,d#3,a3,c#4,f#4]@4 [b2,d#3,a3,c#4,f#4]@3 [b2,d#3,a3,c#4,f#4] [b2,d#3,a3,c#4,f#4]@4", // B7
  R: "[[e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@3 [e2,b2,e3,g#3,b3,e4]@5 [e2,b2,e3,g#3,b3,e4]@93 ~@7]/7", // E
})).s("gm_acoustic_guitar_nylon").gain(0.39).pan(0.3)

// bass · fretless bass · "Fretless E. Bass"
const bass = note(`<
  ~@3 A B C@2 D@2 C@2 E@2 F G A B A B H I J K A B L G H G C@2 D@2 C@2 E@2 F G A B A B H I J K A B L G H G M N O P M N P
  G A B A B Q R A B L G S G C@2 D@2 C@2 E@2 F G A B A B H I J K A B L G H G T@2 U@2 T@2 U G A B A B V W A X F G S Y@7
>`.pickRestart({
  A: "e2 g#2 b2 c#3", B: "e3 c#3 b2 g#2", C: "[e2@26 ~ e2 e2@4]/2", D: "[c3@26 ~ c3 c3@4]/2", E: "c3/2",
  F: "b2 a2 f#2 a2", G: "b2 a2 g#2 f#2", H: "e2 g#2 b2!2", I: "e2 d2 c#2 b1", J: "a1 c#2 e2 f#2", K: "a2 f#2 e2 c#2",
  L: "b2!2 f#2!2", M: "e2!2 b2!2", N: "e2!2 b2 e2", O: "c3!2 g2!2", P: "c3!2 g2 c3", Q: "a2!2 e2 f#2",
  R: "a2 f#2 e2 f#2", S: "e2 g#2 a2 a#2", T: "e2!4", U: "c3!4", V: "a2!2 e2!2", W: "g2!2 e2 c#2", X: "d3 c#3 b2 g#2",
  Y: "[b2@4 b2@2 ~ e2@5 e3@93 ~@7]/7",
})).s("gm_fretless_bass").gain(0.54)

// chords · electric guitar muted · "Lead Gtr Muted"
const electric_guitar_muted = note(`<
  A B C D E F@2 G@2 F@2 G@2 H I J K L M L M N O P Q R S T U F@2 G@2 F@2 G@2 H I J K L M L M N O P Q R S T U V W X Y Z W
  AA AB AC@8 AD AE AF@2 F@2 G@2 F@2 G@2 H I J K L M L M N O P Q R S T U V AG AH AI V AJ AK@2 AL@4 AM AN AO AP AQ AR AS
  AT@7
>`.pickRestart({
  A: "b3@4 b3@3 b3@4 b3 b3@4, ~@4 e4@7 e4@5", B: "a#3@4 b3@3 a#3@4 b3 a#3@4, ~@4 e4@7 e4@5",
  C: "a3@4 b3@3 a3@4 b3 g3@4, ~@4 e4@7 e4@5, ~@12 a3 ~@3", D: "~ [b3,e4]@3", E: "[b3,e4]",
  F: "[[b2,e3,g#3,b3,e4]@27 [b2,e3,g#3,b3,e4] [b2,e3,g#3,b3,e4]@4]/2", // E
  G: "[[c3,e3,g3,c4,e4]@27 [c3,e3,g3,c4,e4] [c3,e3,g3,c4,e4]@4]/2", // C
  H: "~@4 [b2,d#3,a3,c#4,f#4]@3 ~@4 [b2,d#3,a3,c#4,f#4] ~@4", I: "[b2,d#3,a3,c#4,f#4]@3 ~@4 [b2,d#3,a3,c#4,f#4]@5 ~@4",
  J: "e2@3 ~@5 b2@3 b2 c#3@3 c#3, ~@3 b2@5 ~@8, ~ g#2@2 ~",
  K: "e3@3 ~@5 b2@3 ~ g#2@3 e3, ~@3 e3@5 ~@3 e3@4 ~, ~@4 c#3@7 ~@5",
  L: "e2@3 ~ g#2@4 b2@3 ~ c#3@4, ~@3 b2@4 ~@4 d#3@4 ~", M: "d3@3 ~ c#3@3 ~ b2@3 ~ g#2@3 e3, ~@3 e3@4 e3@4 e3@4 ~",
  N: "a2@3 ~ c#3@4 [e3,a3]@3 [e3,a3] f#3@3 f#3, ~@3 [e3,a3]@4 ~@9", O: "g3@3 g3 f#3@4 [e3,a3]@3 [e3,a3] c#3@3 [e3,a3]",
  P: "e2@3 ~ g#2@4 b2@3 ~ c#3@3 e3, ~@3 b2@4 ~@4 e3@4 ~", Q: "d3@3 d3 c#3@4 [b2,e3]@3 [b2,e3] g#2@4",
  R: "b2@4 b2@3 ~ f#2@4 f#2@4, ~@7 b2@5 ~@4", S: "b2@4 a2@4 g#2@3 g#2 f#2@4",
  T: "e2@3 ~ g#2@4 [b2,e3]@3 ~ c#3@3 b2, ~@3 b2@4 ~@9", U: "e3@3 b2 c#3@3 e3 ~@4 g#2@3 e3, ~@11 e3@4 ~",
  V: "~@3 [g#4,b4,e5] ~@4 [g#4,b4,e5]@3 ~@4 [g#4,b4,e5]", // E
  W: "~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5]@4 [g#4,b4,e5] ~@3 [g#4,b4,e5]", // E
  X: "[g4,c5]@3 ~ [g4,c5]@3 ~ [g4,c5]@3 ~@4 [c5,e5]", Y: "~@3 [c5,e5] ~@3 [c5,e5]@4 [c5,e5] ~@4",
  Z: "~@3 [g#4,b4] ~@4 [g#4,b4]@3 ~@4 [g#4,b4,e5]", AA: "[e4,g4,c5]@3 ~ [e4,g4,c5]@8 ~@3 a#2",
  AB: "b2@3 b2 a2@4 g#2@3 g#2 f#2@4",
  AC: "[e2@3 b2 g#2@4 g#2@3 b2 ~@3 e2@4 b2 g#2@3 ~ g#2@3 b2 ~@3 e2@4 b2 g#2@3 ~ g#2@3 b2 ~@3 e2@4 b2 g#2@3 ~ g#2@3 b2 ~@3 a2@4 e3 c#3@3 ~ c#3@3 e3 ~@3 a2@4 e3 c#3@3 ~ c#3@3 e3 ~@3 e2@4 b2 g#2@3 ~ g#2@3 b2 ~@3 e2@4 b2 g#2@3 ~ g#2@3 b2 ~@3 b2]/8",
  AD: "~@4 b2@4 f#2@3 f#3 b2@3 ~", AE: "b2@4 b2@3 b2 c#3@3 e3 c#3@3 b2",
  AF: "[e2@3 b2 g#2@4 b2@3 ~@5 e3@3 b2 ~@3 e3 ~@3 e3 e3@3 e3, ~@15 b2@4 ~@13]/2",
  AG: "~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5]@4 [g#4,b4,e5] [g#4,b4,e5]@3 ~", // E
  AH: "~@3 [e4,g4,c5] ~@4 [e4,g4,c5]@3 ~@4 [e4,g4,c5]", // C
  AI: "~@3 [e4,g4,c5] ~@3 [e4,g4,c5]@4 [e4,g4,c5] [e4,g4,c5]@3 [e4,g4,c5]", // C
  AJ: "~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5]@4 [g#4,b4,e5] [g#4,b4,e5]@3 [g#4,b4,e5]", // E
  AK: "[[g4,c5,e5]@3 ~ [g4,c5,e5]@8 ~@3 b2@4 b2 a2@4 g#2@4 f#2@4]/2", AL: "e2@3 b2 g#2@4 b2@4 g#2@3 b2",
  AM: "a2@3 ~ c#3@4 e3@3 e3 e3@3 e3, ~@3 e3@4 ~@9", AN: "g3@4 f#3@4 e3@3 e3 c#3@4",
  AO: "e2@3 b2 g#2@4 b2@3 b2 c#3@3 c#3", AP: "e3@3 e3 c#3@3 c#3 b2@3 b2 g#2@4", AQ: "b2 a2 f#2 a2", AR: "b2 a2 g#2 f#2",
  AS: "~@3 b3@4 [b3,e4] [a#3,b3,e4]@4 [a3,b3,e4]@4, e2 ~", AT: "[[g#3,b3]@3 ~ b2@3 e3 ~@4 e3@93 ~@7, ~@3 e3@4 ~@105]/7",
})).s("gm_electric_guitar_muted").gain(0.64).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@3 [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!113 [x ~@3 x ~@2 x ~@4 x ~@3] ~@6>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B C B@9 C B@25 C B@13 C B C B C B C B C B@5 C B@11 C B C B C B@7 C B@23 D ~@6
>`.pickRestart({
  A: "~@11 x!2 ~@3", B: "~ x ~ x", C: "~@4 x ~@4 x ~ x!3 ~ x", D: "x ~@2 x ~@12",
})).gain(0.49)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@12 A ~@3 A ~@11 A ~@7 A ~ A ~@11 A ~ A ~@6 A ~@9 A ~@2 A ~@15 A ~@5 A ~ A ~ A ~ A ~ A@3 ~@3 A ~@3 A ~@10
>`.pickRestart({
  A: "~@13 x ~ x",
})).gain(0.33)

// drums · clap
const clap = s("cp").struct(`<
  ~@4 A ~@7 A ~ A ~ A ~@11 A ~@7 A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A@3 ~ A ~@5 A@2 ~@2 A ~@7 A ~ A ~ A ~@3 A ~@3 A ~ A ~ A ~
  A ~ A ~ A@3 ~@3 A ~@3 A ~@2 A B ~@6
>`.pickRestart({
  A: "~ x ~ x", B: "x",
})).gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@116 [~@7 x ~@8] ~@6>").gain(0.49)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B A@7 B A B A B A@11 B A@7 B A B A B A@9 B A B A B A B A B@3 A B A@5 B@2 A@2 B A@7 B A B A B A@3 B A@3 B A B A B
  A B A B A B@3 A@3 B A@3 B A@2 B ~@7
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", B: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x",
})).gain(0.38)

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

// drums · high tom
const high_tom = s("ht").struct("<~@116 [~ x ~ x ~@12] ~@6>").gain(0.44)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~ A ~@7 A ~ A ~ A ~@11 A ~@7 A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@3 A ~ A ~@6 A ~@2 A ~@7 A ~ A ~ A ~@3 A ~@3 A ~ A ~ A
  ~ A ~ A ~@3 A ~@3 A ~@3 A ~@2 B ~@6
>`.pickRestart({
  A: "x", B: "x ~@6 x ~@4 x ~@3",
})).gain(0.38)

stack(
  acoustic_guitar_nylon, bass, electric_guitar_muted, kick, snare, snare_soft, clap, low_tom, hihat, mid_tom, high_tom,
  crash
)

More by The Beatles