Strudelify
Carry That Weight cover art

Abbey Road

Carry That Weight

The Beatles

KeyC majorTempo100 bpm
0:00/0:00
// Carry That Weight — The Beatles
// 100 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 70 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · synth brass 1
const synth_brass_1 = note("<~@9 A B C D ~@10 E ~@8 A B C D ~@10 E ~@23>".pickRestart({
  A: "~ [g4,c5,e5]!5 [g4,c5,e5]@2", B: "[g4,c5,e5]@3 [f4,c5,d5]@5", C: "~ [f4,b4,d5]!5 [f4,b4,d5]@2",
  D: "f5@2 e5 c5@2 [g4,c5]@3, [f4,b4]@3 e4@5", E: "[d5,g5]@2 ~@3 [e5,g5]!2 [d5,g5]",
})).s("gm_synth_brass_1").gain(0.39).pan(0.3)

// other · synth brass 2
const synth_brass_2 = note("<~@10 A B C ~@20 A B C ~@34>".pickRestart({
  A: "d3@3 d3@2 e3 f3@2", B: "g3", C: "f3@3 e3@5",
})).s("gm_synth_brass_2").gain(0.45).pan(0.7)

// other · overdriven guitar · "Overdriven Gtr"
const overdriven_guitar = note("<~@13 A B C ~@20 A B C ~@27 D E D F>".pickRestart({
  A: "a3@4 c4@2 a3@2 d#4 d4 c4 a3 c4@2 d4 c4", B: "e4@2 a4 e4@2 d4 c4 d4, d4 ~@5 d4 ~@9", C: "c4@6 a3 g3 a3@8",
  D: "~@2 g3 ~@4 g3, c3@3 b2@5, ~ e3@3 d3@2 b3@2, ~@5 g3@2 ~", E: "~@3 c#4@5, a2, ~ e3@2 ~@5, ~ a3@3",
  F: "~@3 c#4 ~@4, a2 ~, ~ e3@2 ~@5, ~ a3 ~@2",
})).s("gm_overdriven_guitar").gain(0.64).pan(0.8)

// chords · piano · "Piano 2"
const piano = note(`<
  ~ A B@2 C A B@2 D E F G H I J K L M N O P Q R S A B@2 C A B@2 D E F G H I J K L M N O P Q R S A B@2 C A B@2 C A B@2 C
  A B@2 C A B@2 T U T V
>`.pickRestart({
  A: "[c2,c3,c4,e4,g4] [c2,c3,g3] [c2,c3,c4,e4,g4] [c2,c3,g3] [c2,c3,c4,e4,g4] [c2,c3,g3] [c2,c3,c4,e4,g4] [c2,c3,g3]", // C C5 C C5 C C5 C C5
  B: "[g1,g2,b3,d4,g4] [g1,g2,g3] [g1,g2,b3,d4,g4] [g1,g2,g3] [g1,g2,b3,d4,g4] [g1,g2,g3] [g1,g2,b3,d4,g4] [g1,g2,g3]", // G
  C: "[c2,c3,c4,e4,g4]@2 [c2,c3,g3]@2 [c2,c3,c4,e4,g4]@2 [c2,c3,g3]@2 [c2,c3,c4,e4,g4]!6 [c2,c3,c4,e4,g4]@2", // C C5 C C5 C
  D: "[c2,c3,c4,e4,g4] [c2,c3,g3] [c2,c3,c4,e4,g4] [c2,c3,g3] [c4,e4,g4] g3 [c4,e4,g4] g3, ~@2 [b1,b2]!2", // C C5 C C5 C B
  E: "[a1,a2,c3,a3,e4,g4]", F: "[d2,c3,d3,a3,e4,g4]@3 [d2,a2,d3,c4,f4]@5", G: "[g1,g2,f3,g3,b3,d4]",
  H: "[c2,c3,g3,b3,c4,e4]@3 [c2,c3,g3,b3,c4,e4]@5", // Cmaj7
  I: "[f1,f2]!2 [f1,f2,a3,e4,f4,c5] ~ [f1,f2] [f1,f2,a3,e4,f4,c5]!3, [a3,e4,f4,c5]@2 ~ [f1,f2] ~@4, ~@7 [a3,e4,f4,c5]@3 ~@6", // F Fmaj7 F Fmaj7 F Fmaj7
  J: "~ b1 [b1,a3,b3,d4,f4] ~ [e1,e2] [e1,e2,g3,b3,d4] ~ [e1,e2], b1 ~@2 [e1,e2] ~@2 [e1,e2] ~, ~ [a3,b3,d4,f4]@3 ~@3 [g3,b3,d4]@3 ~@3 [g3,b3,d4]@3", // Bm7b5 E Em7 E Bm7b5 G
  K: "[a3,c4,e4] ~@4 [a3,c4,e4]!3, [a1,a2]!4, ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~@3", // Am A Am
  L: "~ [g3,a3,c4,e4]!5 [g3,a3,c4,e4]@2, [g1,g2]", M: "[d2,d3,g3,c4,e4]@3 [d2,d3,f3,a3,c4]@5",
  N: "~ [f3,g3,b3,d4]!5 [f3,g3,b3,d4]@2, [g1,g2]", // G7 G
  O: "[f5,f6]@2 [e5,e6] [c5,c6]@2 [g4,g5]@3, [c2,e2,g2]@3 [c2,e2,g2]@5", // F E C G C
  P: "~@2 [f1,f2]@2 [f1,f2,c4,e4,f4,a4]@2 ~@2 [f1,f2]@2 [f1,f2]@2 ~ [c4,e4,f4,a4] [f1,f2,c4,e4,f4,a4]@2, [f1,f2] ~@2 [f1,f2] ~@2 [f1,f2] ~, ~ [c4,e4,f4,a4]@3 ~@3 [c4,e4,f4,a4]@6 ~@3", // F Fmaj7 F Fmaj7 F Fmaj7
  Q: "b1!3 [e1,e2] [e1,e2,b4] ~@2 [e1,e2], ~ [a3,b3,d4,f4]@3 ~ [e1,e2]!2 ~, ~@11 b5@5, ~@13 [g3,d4,e4]@3", // E E5 E Bm7b5 E Em7
  R: "[a2,a3,c4,e4] a2 [a2,a3,c4,e4] a2 [a2,a3,c4,e4] ~@2 [a1,a2], a1@2 a1@2 a1@3 ~, ~@5 a2@2 ~, ~@3 [a3,c4,e4]", // Am A Am
  S: "[g1,g2]@2 [g1,g2,e3,g3,c4]@2 ~ [g1,g2,e3,g3,c4]!2 [g1,g2,d3,g3,b3]", // G C G
  T: "[g3,c4,e4]!3 [g3,b3,d4]!5, [c2,c3]@3 [b1,b2]@3 [b1,b2]@2", // C G C B
  U: "[e3,a3,c#4] [e3,a3,c#4]@2 [a1,a2,a3,a4]@5, [a1,a2]@3 ~@5", // A
  V: "[e3,a3,c#4]!3 [a1,a2,e3,a3,c#4] ~@4, [a1,a2]@3 ~@5", // A
})).s("gm_piano").gain(0.58).pan(0.3)

// bass · electric bass finger · "Fingered E Bass"
const bass = note(`<
  ~ A B@2 C A B@2 D E F G H I J K L M N O P J Q R A B@2 C A B@2 D E F G H I J K L M N O P J Q R A B@2 C A B@2 C A B@2 C
  A B@2 C A B@2 S T S U
>`.pickRestart({
  A: "c3 ~ c2@2 d2 e2 g2 ~ c3 ~ c2@2 d2 e2 g2 ~", B: "g2 ~ g1@2 a1 b1 d2 ~ g2 ~ g1@2 a1 b1 d2 ~",
  C: "c2 ~ c2@2 d2 e2 g2 ~ c2 ~ c2@2 d2 e2 g2 ~", D: "c2!2 b1!2", E: "a2, g2 ~@15", F: "a2@3 d2@2 e2 f2 f#2, g2 ~@15",
  G: "g2, f#2 ~@15", H: "c2@4 d2 ~ e2@4 g2@2 g2 a2 c3@2, ~@6 d2 ~@9", I: "f2@3 f2", J: "b1 c2 d2 d#2 e2 f#2 g2 g#2",
  K: "a2@3 a1 a1@4", L: "a2", M: "a2@6 d2@4 d2@2 d2 f2 a2@2, g2 ~@15", N: "g2", O: "c2@4 d2@2 e2@4 g2@2 g2 a2 c3@2",
  P: "f2!2", Q: "a2@3 a1@5", R: "~@4 g2@4 ~@2 g2!3 f2 f2@2", S: "c2@3 b1@3 b1@2", T: "a1@3 a1 a2@2 a2@2",
  U: "a2@3 a2 ~@4",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · string ensemble 1 · "Strings 1"
const string_ensemble_1 = note(`<
  ~ A B@2 A@2 B@2 C D E F G H I J@2 K F G H I J L A B@2 A@2 B@2 C D E F G H I J@2 K F G H I J L A B@2 A@2 B@2 A@2 B@2
  A@2 B@2 A@2 B@2 M N M O
>`.pickRestart({
  A: "[c4,e4,g4]", B: "[b3,d4,g4]/2", C: "[c4,e4,g4]!2 [b3,e4,g4]!2", D: "[a3,e4,g4]", E: "[a3,d4,g4]@3 [a3,d4,f4]@5",
  F: "[g3,b3,d4]", G: "[g3,b3,f4]@3 [g3,c4,e4]@5", H: "[a3,c4,f4]", I: "[b3,d4,f4]@3 [g#3,b3,e4]@5", J: "[a3,c4,e4]",
  K: "[a3,c4,e4]@3 [a3,c4,d4]@5", L: "[b3,d4]@2 ~@3 [c4,e4]!2 [b3,d4]", M: "[c4,e4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2",
  N: "[a3,c#4,a4]@3 [a3,c#4,a4]@5", O: "[a3,c#4,a4]@3 [a3,c#4,a4] ~@4",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 B C D@3 A E F E F A@2 G E H I H A J G K A@2 B C A@2 B A E F E F A@2 G E H I H A J G K A@2 B C A@2 B C A@2 B C
  A@2 B C D@3 L F@3
>`.pickRestart({
  A: "x!2", B: "x ~@3 x!2 ~ x", C: "x ~ x!2", D: "x!2 ~ x!3 ~ x", E: "x", F: "x ~@2 x ~@4", G: "x ~@2 x!2 ~@3",
  H: "x ~@2 x ~ x!2 ~", I: "x ~@4 x!2 ~", J: "x ~@2 x!3 ~ x", K: "~ x", L: "x ~@2 x ~@2 x ~",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A B A@3 B ~@4 A@3 ~@4 A@3 ~ A B A B A B A B ~@4 A@3 ~@4 A@3 ~ A B A B A B A B A B A B A B A B A@4 C A B
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@3 x!3 ~@3 x ~",
})).gain(0.54)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@2 A ~@5 B ~ C A D ~@4 E F G ~@3 H ~ A ~@3 A ~ B ~ C A D ~@4 E F G ~@3 H ~ A ~@3 A ~@3 A ~@3 A ~@6 F ~@2
>`.pickRestart({
  A: "~@10 x!5 ~", B: "~@13 x!2 ~", C: "~@12 x!3 ~", D: "~@10 x ~ x!3 ~", E: "~@14 x!2", F: "~@13 x ~@2",
  G: "~@10 x ~ x!2 ~@2", H: "~@8 x ~@2 x!4 ~",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A C A D@2 E ~@4 A D@2 ~@4 A D@2 ~ A B A C A B A E ~@4 A D@2 ~@4 A D@2 ~ A B A C A B A C A B A C A B A C A D@3 F
  G F
>`.pickRestart({
  A: "~ x!7", B: "x!3 ~@5", C: "x!4 ~@4", D: "x!8", E: "x!2 ~@6", F: "~ x!2 ~@5", G: "~ x!2 ~@2 x!3",
})).gain(0.54)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~ B ~ C ~@3 D ~ E ~@6 F G H ~@3 I ~ B ~ C ~ B ~ D ~ E ~@6 F G H ~@3 I ~ B ~ C ~ B ~ C ~ B ~ C ~ B ~ C ~@4 J ~@2
>`.pickRestart({
  A: "~@8 x ~@3 x!3 ~", B: "~ x", C: "~@8 x!8", D: "~@8 x!2 ~ x ~@4", E: "~@5 x ~@2", F: "~@5 x!2 ~",
  G: "~@10 x ~ x!3 ~", H: "~@7 x", I: "~@4 x!2 ~@2", J: "~@3 x",
})).gain(0.54)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~@5 B ~@16 A ~@3 A ~ B ~@16 A ~@3 A ~@3 A ~@3 A ~@9>".pickRestart({
  A: "~@3 x ~@4", B: "~@2 x!2 ~@4",
})).gain(0.6)

// drums · high tom
const high_tom = s("ht").struct("<[~@9 x ~ x ~@2 x ~] ~@69>").gain(0.54)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ A ~ A ~@3 A B A B A ~@2 A B A B A ~@3 A ~ A ~ A ~ A ~ A B A B A ~@2 A B A B A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~@3 B C B
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@4", C: "x ~@2 x!2 ~@3",
})).gain(0.54)

stack(
  synth_brass_1, synth_brass_2, overdriven_guitar, piano, bass, string_ensemble_1, kick, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash
)

More by The Beatles