Strudelify

Being for the Benefit of Mr. Kite! (takes 1 and 2)

The Beatles

KeyD minorTempo110 bpm
0:00/0:00
// Being for the Benefit of Mr. Kite! (takes 1 and 2) — The Beatles
// 110 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 7 "Bass 2 & Bells" named as a bass, played on electric bass finger (its church organ patch is not one)
// note: Full arrangement: all 60 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 guitar"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q D E F G H I J K L M N R S T U V W X Y Z AA AB AC AD AE AF F AG AE AF AH AI AJ AK AL
  AM AL AN AL AN AL AO@2
>`.pickRestart({
  A: "bb2@5 ~ bb2@2 ~@2 bb2 ~ bb2@5 ~ bb2@2 ~@2 bb2 ~", B: "a2@5 ~ a2@2 ~@2 a2 ~ a2@4 ~@2 a2 ~@3 a2 ~",
  C: "d2@8 ~@4 g2@11 ~", D: "c3@5 ~ c3@3 ~ c3@2 b2@4 ~@2 b2@2 ~@2 b2@2",
  E: "bb2@5 ~ bb2@2 ~@2 bb2@2 a2@4 ~@2 a2@2 ~@2 a2@2", F: "g2@2 ~ g2 ~ g2 g1@2 d2 g2@3",
  G: "g1@4 d2@2 g2@4 d2@2 g1@5 ~ g1@2 ~@2 g1 ~", H: "c3@4 ~@2 c3@3 ~ c3@2 b2@5 ~ b2@3 ~ b2 ~",
  I: "bb2@5 ~ bb2@2 ~@2 bb2@2 a2@4 ~@2 a2@2 ~@2 a2 ~", J: "a2@4 ~@2 a2@2 ~@2 a2 ~ a2@4 e2@2 a2@4 e2@2",
  K: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@3 ~ d2@2", L: "bb1@4 ~@2 bb1@2 ~@2 bb1@2 a1@5 ~ a1@2 ~@2 a1 ~",
  M: "d2@6 c2@6 bb1@5 ~ a1@6", N: "g1@4 ~@2 g1@2 ~@2 g1@2 a1@4 ~@2 a1@3 ~ a1@2", O: "d2@6 c2@6 bb1@6 a1@5 ~",
  P: "g1@5 ~ g1@2 ~@2 g1@2 a1@3 ~@3 a1@2 ~@2 a1 ~", Q: "d2@7 ~@5 g1@9 ~@3", R: "d2@2 e2 f2@2 a2", S: "c2@2 d2 e2@2 g2",
  T: "a1@7 ~ e2@4 ~ a1@7 e2@4", U: "a1@6 ~ a1 e2@2 a1 ~ e2@4 a1@4 e2@4", V: "d2@8 e2@3 ~ f2@8 a2@4",
  W: "c2@8 d2@3 ~ e2@8 g2@4", X: "b1@7 ~ b1@2 ~ b1@7 ~@2 b1@3 ~", Y: "e2@6 ~@2 e2@4 d2@6 ~@2 d2@3 ~",
  Z: "c2@6 ~@2 c2@4 b1@6 ~@2 b1@3 ~", AA: "e2@7 ~@2 e2@3 d2@6 ~@2 d2@4", AB: "c2@6 ~@2 c2@4 b1@5 ~@3 b1@3 ~",
  AC: "e2@3 ~ e2 ~ e2@6", AD: "g2 ~ g2 ~ g2 ~ g2@3 ~ g2 ~@6 gb2 ~@6, ~@13 g2@8 ~@3",
  AE: "c3@2 ~ c3 ~ c3 b2@2 ~ b2 ~ b2", AF: "bb2@2 ~ bb2 ~ bb2 a2@2 ~ a2 ~ a2", AG: "g1@2 d2 g2@2 d2 g1@2 ~ g1 ~ g1",
  AH: "a2@2 ~ a2 ~ a2 a2@2 e2 a2@2 e2", AI: "d2@2 ~ d2@2 ~ d2@2 ~ d2 ~ d2", AJ: "bb1@2 ~ bb1 ~ bb1 a1@2 ~ a1 ~ a1",
  AK: "d2 c2 bb1 a1", AL: "g1@2 ~ g1 ~ g1 a1@2 ~ a1 ~ a1", AM: "d2@3 c2@3 bb1@3 a1@2 ~",
  AN: "d2@3 ~@3 bb1 ~@2 a1@2 ~, ~@3 c2@4 ~@5", AO: "[d2@29 ~@19]/2",
})).s("gm_fretless_bass").gain(0.8).pan(0.4)

// chords · percussive organ · "Electric Organ"
const percussive_organ = note(`<
  ~@3 A B C@2 A B D E F G F H I J A B C@2 A B D E F G F ~@13 A B C@2 A B D E F G F H I K I K I K ~
>`.pickRestart({
  A: "c4 [c4,eb4,g4] ~ [g4,b4,d5], ~ b3", B: "bb3 [bb3,d4,f4] ~ [d4,f4,a4], ~ a3",
  C: "[~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5], g3]/2", D: "~ [a4,db5,e5] ~ [a4,db5,e5], e3",
  E: "~ [d4,f4,a4] ~ [d4,f4,a4], d3", F: "~ [bb3,d4,f4] ~ [a3,db4,e4], bb2 a2",
  G: "~@3 [d4,f4,a4]@4 ~@2 [d4,f4,a4]@3, d3", H: "~@3 [d4,f4,a4]@4 ~@2 [d4,f4,a4]@2 ~, d3",
  I: "[d4,f4]@4 bb2@2 [bb3,d4,f4]@4 ~ a3 [db4,e4]@4 a2@2 [db4,e4]@4 a2@2, bb3 ~ a3!2, bb2 ~@4 bb2 a2 ~@2 a2 ~@2", // Dm Bb Dbm
  J: "[d3,f4,a4]@3 ~@3 [g3,g4,b4,d5]@5 ~, d4 ~@2", K: "[d3,d4,f4,a4]@3 ~",
})).s("gm_percussive_organ").gain(0.47).pan(0.7)

// chords · church organ · "Electric Organ"
const church_organ = note("<~@28 A B C@2 D E F G H I J K ~@20>".pickRestart({
  A: "[d5,e5] c5 [a4,b4] g4 [d4,a4] e4 d4 c4 a3 g3 f3 e3 ~@4 [d4,f4,a4] ~@3 [d4,f4,a4]@4, d3!2, ~@4 f4@2 ~ b3@2 ~@15, ~@8 [d4,f4,a4]@5 ~@11", // Dsus2 Asus2 D5 Dm
  B: "~ b4 a4 [f4,g4] [c4,e4,g4] d4 c4 a3 ~@2 e3@2 d3 ~@3 [c4,e4,g4] ~@3 [c4,e4,g4]@4, c3@13 c3@11, c5@2 ~@4 b3@2 [c4,e4,g4]@5 ~@11, ~@4 g3 ~@7, ~@9 f3@2 ~@13", // Fsus2 C
  C: "[a2 ~@3 [a3,db4,e4] ~@3 [a3,db4,e4]@5 ~@3 [a3,db4,e4] ~@3 [a3,db4,e4]@5 ~@3 [a3,db4,e4] ~@3 [a3,db4,e4]@5 ~@3 [a3,db4,e4] ~@3 [a3,db4,e4]@4, ~ a2@47]/2", // A
  D: "~ d5 [b4,c5] [g4,a4] [d4,f4,a4] e4 d4 [b3,c4] a3 g3 f3 e3 ~@4 [d4,f4,a4] ~@3 [d4,f4,a4]@4, d3!2, ~@8 [d4,f4,a4]@5 ~@11", // Cmaj7 Gsus2 Dm Cmaj7 Dm
  E: "c5@2 b4 [g4,a4] [c4,e4,f4,g4] e4 [c4,d4] b3 a3 [f3,g3] ~ d3@2 ~@3 [c4,e4,g4] ~@3 [c4,e4,g4]@3 ~, c3@13 c3@11, ~@8 [c4,e4,g4]@5 ~@11, ~@5 e3 ~@6", // Gsus2 C Csus2 Fsus2 C
  F: "~@4 [eb4,gb4]@2 ~@2 [b3,eb4,gb4]@5 ~@3 [b3,eb4,gb4] ~@3 [b3,eb4,gb4]@4, b2, ~@4 b3 ~@19", // Ebm B
  G: "~@4 [g4,b4]@2 ~@2 [e4,g4,b4]@5 ~@3 [e4,g4,b4]@2 ~@2 [e4,g4,b4]@4, e3, ~@4 e4 ~@19", // G Em
  H: "~@4 [c4,e4,g4] ~@3 [c4,e4,g4]@4 ~@4 [b3,eb4,gb4]@2 ~@2 [b3,eb4,gb4]@4, c3 b2", // C B
  I: "~@2 [e4,g4,b4] ~ [e4,g4,b4]@3 ~ [e4,g4,b4] ~ [e4,g4,b4]@2, e3", // Em
  J: "~@4 [c4,e4,g4] ~@3 [c4,e4,g4]@4 ~@4 [eb4,gb4]@2 ~@2 [b3,eb4,gb4]@4, c3 b2, ~@16 [b3,f4] ~@7", // C Ebm B Bdim
  K: "~@4 [e4,g4,b4] ~@3 [e4,g4,b4]@5 ~@3 [e4,g4,b4] ~@3 [e4,g4,b4]@4, e3@23 ~", // Em
})).s("gm_church_organ").gain(0.47).pan(0.7)

// other · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  ~@35
  [e4@3 ~ e4@3 ~ gb4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~]
  [c5@3 ~ d5@3 ~ e5@3 ~ eb5@2 ~@2 e5@2 ~@2 gb5@2 ~@2]
  [g5@3 ~ e5@3 ~ d6@3 ~ b5@3 ~ g5@3 ~ g5@3 ~]
  [e5@3 ~ c5@3 ~ g5@3 ~ gb5@3 ~ g5@3 ~ a5@3 ~]
  [g5@3 ~ e5@3 ~ d6@3 ~ b5@3 ~ g5@3 ~ g5@4]
  ~@20
>`).s("gm_distortion_guitar").gain(0.8).pan(0.9)

// chords · electric bass finger · "Bass 2 & Bells" · Bb A Dm G
const electric_bass_finger = note(`<
  [[bb3,d4,f4]@11 ~, bb2]
  [[a3,db4,e4]@11 ~, a2]
  [[d3,d4,f4,a4] ~ [g3,b3,d4]@2, ~@6 g2@5 ~]
  ~@57
>`).s("gm_electric_bass_finger").gain(0.8).pan(0.7)

// chords · epiano2 · "Piano" · G
const epiano2 = note(`<
  ~@40
  [[g3,g4,b4,d5] ~ [g3,g4,b4,d5] ~ [g3,g4,b4,d5] ~ [g3,g4,b4,d5]@3 ~ [g3,g4,b4,d5] ~ [g3,g4,b4,d5]@12]
  ~@19
>`).s("gm_epiano2").gain(0.7)

// bass · tuba · "Harmonica"
const bass_2 = note("<[bb2@11 ~] a2 [d3@7 ~@6 g2@9 ~@2] ~@12 [bb2@11 ~ a2@11 ~] [d3 ~ g2@2] ~@43>")
  .s("gm_tuba").gain(0.8)

// chords · pad new age · "Harmonica"
const pad_new_age = note("<~@58 A@2>".pickRestart({
  A: "[~@4 f3@2 ~@6 a4@3 d5@14 ~@19, ~@2 d3@4 a3@2 ~ f4@6 ~@33, ~@7 d4@8 ~@33]/2",
})).s("gm_pad_new_age").gain(0.8)

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

// drums · rim
const rim = s("rim").struct("<~@10 A@6 B ~@7 A@4 ~@20 A@6 B A B A C ~>".pickRestart({
  A: "x!4", B: "x!2", C: "x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@2 [~@12 x!9 ~@3] ~@13 [~@12 x!9 ~@3] ~@43>").gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<A@2 B ~@3 B ~@3 C@5 A D ~@7 C@4 ~@12 E ~@7 C@5 ~@7>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~ x!2 ~ x", B: "x", C: "x!4", D: "x!2", E: "x!4 ~ x!2 ~@5",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@3 A@7 ~@7 A@7 ~@4 A@11 B ~@2 A@6 ~@12>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<A@2 ~@8 A B A B A C D ~@7 A B A B ~@12 E ~@7 A B A B A ~@7>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@5 x ~ x", C: "x!2 ~ x", D: "~ x", E: "x!4 ~ x!2 ~@5",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<A@2 B C@7 A@6 B C@7 A@4 D@12 E C@7 A@10 F ~>".pickRestart({
  A: "x!4", B: "x!2", C: "~ x ~ x", D: "~ x!2 ~ x!2", E: "~@3 x", F: "x",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct("<x ~ [~@13 x ~@10] ~@37 [~@2 x] ~@19>").gain(0.8)

stack(
  bass, percussive_organ, church_organ, distortion_guitar, electric_bass_finger, epiano2, bass_2, pad_new_age, kick,
  rim, snare, low_tom, hihat, mid_tom, open_hat, crash
)

More by The Beatles