Strudelify

This Boy

The Beatles

KeyD majorTempo116 bpm
0:00/0:00
// This Boy — The Beatles
// 116 bpm, 12/8, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 52 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/6)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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(`<
  ~ A B C D E F C G H I C D E F C G J K L M N O P Q R S T U V W X G Y Z C AA AB AC C AA AB AC C AA AB AC C AA AB AC ~
>`.pickRestart({
  A: "d2@5 ~ d2@2 a1@2 c#2@2 b1@6 b1@2 f#2@2 f2@2, c#2 ~@5 c#2 ~@17", B: "e2@3 e2 b2 a#2 a2@2 a2 c#3 ~ a2",
  C: "d2@9 ~ c#2@2 b1@9 ~ f#2@2", D: "e2@11 ~ a2@9 ~ c#2@2", E: "d2@9 ~ c#2@2 b1@7 ~ f#2@2 f2@2",
  F: "e2@6 e2@6 a2@9 ~ a2@2", G: "d2 ~@5 a2 ~@5", H: "d2@3 d2 a1 c#2 b1@3 f#2 d2 f2",
  I: "e2@7 ~ b2@2 a#2@2 a2@6 a2@4 c#2@2", J: "d2@3 d2@3 a1@3 c#2@2 a1",
  K: "d2@2 ~@2 d2@2 f#2@2 ~@2 f#2@2 a2@2 ~@2 a2@2 d3 c3 a2@2 g2@2", L: "g2@9 ~ g2@2 d2@9 ~ g2@2",
  M: "f#2@9 ~ f#2@2 c#2@6 f#2@2 c#2@2 c2@2", N: "b1@9 ~ b1@2 f#2@6 f#2@6", O: "d2@3 d2!3 d2@3 d2 e2 f#2",
  P: "g2@9 ~ g2@2 g2@6 g2@2 f#2@4", Q: "e2@9 ~ e2@2 e2@6 e2@6", R: "a2!12", S: "a2@6 a2@11 ~ c#3@4 a2@2",
  T: "d2@9 ~ c#2@2 b1@6 b1@4 f#2@2", U: "e2!2 a2!2", V: "d2@9 ~ c#2@2 b1@9 ~ f2@2", W: "e2@3 e2@3 a2@3 b2 ~ a2",
  X: "d2@9 ~ c#2@2 b1@11 ~", Y: "d2@9 ~ c#2@2 d2@6 b1@2 f#2@2 f2@2", Z: "e2@3 e2 b2 a#2 a2@3 a2@3",
  AA: "e2@3 e2 b2 a#2 a2@3 a2 b2 a2", AB: "d2@9 ~ c#2@2 b1@6 b1@2 f#2@2 f2@2", AC: "e2@3 e2 b2 a#2 a2@3 a1 b1 a1",
})).s("gm_fretless_bass").gain(0.62).pan(0.4)

// other · rock organ · "Harm 1 Organ 3"
const rock_organ = note(`<
  ~@3 A B C D E F G ~ A B C D E F G ~@9 A B C D E F G ~ H ~ H ~ H ~ H ~ H ~ H ~ H ~ H ~@2
>`.pickRestart({
  A: "f#4 a4@5", B: "~@3 g4@2 a4 b4@5 a4", C: "a4", D: "~@3 g4@2 a4 b4@2 a4 ~@2 g4", E: "a4 b4 f#4@7 ~@3",
  F: "g4@2 g4@4 a4@2 g4@2 f#4 g4", G: "g4 f#4", H: "f#4 a4@11",
})).s("gm_rock_organ").gain(0.49).pan(0.3)

// other · rock organ · "Harm 2 Organ 3"
const rock_organ_2 = note(`<
  ~@3 A B C D E F G ~ A B C D E F G ~@9 A B C D H F G ~ I ~ I ~ I ~ I ~ I ~ I ~ I ~ I ~@2
>`.pickRestart({
  A: "~ f#4@5", B: "~@3 e4@2 f#4 g4@5 f#4", C: "f#4", D: "~@3 e4@2 f#4 g4@2 f#4 ~@3", E: "~@3 d5@2 c#5 b4@3 ~@3",
  F: "d4@2 d4@4 f#4@2 e4@2 d4 e4", G: "e4 d4", H: "~@6 c#5@4 d5 c#5 b4@6 ~@6", I: "~ f#4@11",
})).s("gm_rock_organ").gain(0.49).pan(0.8)

// chords · acoustic guitar nylon · "Nylon Gtr Bnk 32"
const acoustic_guitar_nylon = note(`<
  A B C B C B C B D B C B C B C B D E F G H I J G K L M B C B C B D B C B C B C B C B C B C B C B C B C ~
>`.pickRestart({
  A: "~ [a2,f#3,a3,d4,f#4] [a2,e3,a3,d4,f#4] [a2,f#3,a3,d4,f#4]", B: "[a2,d3,a3,d4,f#4]!2 [b2,f#3,b3,d4,f#4]!2",
  C: "[e2,b2,e3,g3,b3,e4]!2 [a2,e3,g3,c#4,e4]!2", D: "[e2,b2,e3,g3,b3,e4] ~@5 [a2,e3,g3,c#4,e4] ~@5",
  E: "[a3,d4,g4]!2 [a2,d3,a3,d4,f#4]!2", F: "[a2,d3,a3,c4,f#4]!4",
  G: "[g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4] [g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4] [g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4] [g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4], [g2,b2,d3]@2 ~ [g2,b2,d3]@2 ~ [g2,b2,d3]@2 ~ [g2,b2,d3]@2 ~", // G5 G G5 G G5 G G5 G
  H: "[a#3,e4,f#4]!2 [f#2,c#3,e3,a#3,e4,f#4] [a#3,e4,f#4]!2 [f#2,c#3,e3,a#3,e4,f#4] [a#3,e4,f#4]!2 [f#2,c#3,e3,a#3,e4,f#4] [a#3,e4,f#4]!2 [f#2,c#3,e3,a#3,e4,f#4], [f#2,c#3,e3]@2 ~ [f#2,c#3,e3]@2 ~ [f#2,c#3,e3]@2 ~ [f#2,c#3,e3]@2 ~", // F#7
  I: "[b3,d4,f#4]!2 [b2,f#3,b3,d4,f#4] [b3,d4,f#4]!2 [b2,f#3,b3,d4,f#4] [b3,d4,f#4]!2 [b2,f#3,b3,d4,f#4] [b3,d4,f#4]!2 [b2,f#3,b3,d4,f#4], [b2,f#3]@2 ~ [b2,f#3]@2 ~ [b2,f#3]@2 ~ [b2,f#3]@2 ~", // Bm B5
  J: "[a3,c4,f#4]!2 [a2,d3,a3,c4,f#4] [a3,c4,f#4]!2 [a2,d3,a3,c4,f#4] [a3,c4,f#4]!2 [a2,d3,a3,c4,f#4] [a3,c4,f#4]!2 [a2,d3,a3,c4,f#4], [a2,d3]@2 ~ [a2,d3]@2 ~ [a2,d3]@2 ~ [a2,d3]@2 ~", // F#dim D7 F#dim D7 F#dim D7 F#dim D7 …
  K: "[g#3,d4,e4]!2 [e2,b2,d3,g#3,d4,e4] [g#3,d4,e4]!2 [e2,b2,d3,g#3,d4,e4] [g#3,d4,e4]!2 [e2,b2,d3,g#3,d4,e4] [g#3,d4,e4]!2 [e2,b2,d3,g#3,d4,e4], [e2,b2,d3]@2 ~ [e2,b2,d3]@2 ~ [e2,b2,d3]@2 ~ [e2,b2,d3]@2 ~", // E7
  L: "[g3,c#4,e4]!2 [a2,e3,g3,c#4,e4] [g3,c#4,e4]!2 [a2,e3,g3,c#4,e4] [g3,c#4,e4]!2 [a2,e3,g3,c#4,e4] [g3,c#4,e4]!2 [a2,e3,g3,c#4,e4], [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~", // C#dim A7 C#dim A7 C#dim A7 C#dim A7 …
  M: "[a2,e3,g3,c#4,e4]", // A7
})).s("gm_acoustic_guitar_nylon").gain(0.3).pan(0.9)

// chords · acoustic guitar nylon · "Nylon Gtr"
const acoustic_guitar_nylon_2 = note(`<
  ~ A B C D C D C E C D C D C D C E F G ~@8 C D C D C E H D C D C D C D C D C D C D C D C D ~
>`.pickRestart({
  A: "[a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 ~@2 [b3,d4,f#4]!4 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@2", // D Bm
  B: "[b3,d4,e4]@2 [b3,d4,e4]!4 [b3,d4,e4]@2 [b3,d4,e4]@2 [b3,d4,e4]@2 ~@2 [a3,c#4,e4]!4 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2", // E7 A
  C: "[a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!4 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@2", // D Bm
  D: "[b3,d4,e4]@2 [b3,d4,e4]!4 [b3,d4,e4]@2 [b3,d4,e4]@2 [b3,d4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]!4 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2", // E7 A
  E: "[b3,d4,e4] ~@5 [a3,c#4,e4] ~@5", // E7 A
  F: "[a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  G: "~ [c4,e4,a4] [d3,f#3,c4,e4,a4] [c4,e4,a4]!2 [d3,f#3,c4,e4,a4] [c4,e4,a4]!2 [d3,f#3,c4,e4,a4] [c4,e4,a4]!2 [d3,f#3,c4,e4,a4], ~@3 [d3,f#3]@2 ~ [d3,f#3]@2 ~ [d3,f#3]@2 ~", // Am D7 Am D7 Am D7 Am D7 …
  H: "[a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [b2,f#3,b3,d4,f#4]@2 [b2,f#3,b3,d4,f#4]!4 [b2,f#3,b3,d4,f#4]@2 [b2,f#3,b3,d4,f#4]@2 [b2,f#3,b3,d4,f#4]@2", // D Bm
})).s("gm_acoustic_guitar_nylon").gain(0.3).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~@25 [x!2] x ~@25>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@19 [~ x ~ x]!7 x ~@25>").gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ A@7 ~ A@7 ~ A@2 ~@8 A@5 ~ A@18 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct("<~ A@7 B C D A@5 B E F G@7 H A@5 B C I A J A J A J A J A J A J A J A J ~>".pickRestart({
  A: "x ~ x!11 ~ x!10", B: "x!2", C: "x ~ x!11 ~ x!5 ~ x!3 ~", D: "x ~ x!3 ~ x!7 ~ x!3 ~ x ~ x!4",
  E: "x!7 ~ x!5 ~ x!5 ~ x!4", F: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~ x!6", G: "x!12", H: "x",
  I: "x ~ x!11 ~ x!3 ~ x ~ x!3 ~", J: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~ x ~ x ~ x ~",
})).gain(0.3)

stack(bass, rock_organ, rock_organ_2, acoustic_guitar_nylon, acoustic_guitar_nylon_2, kick, snare, pedal_hat, ride)

More by The Beatles