Strudelify
Old Brown Shoe cover art

The Beatles 1967 - 1970

Old Brown Shoe

The Beatles

KeyC majorTempo200 bpm
0:00/0:00
// Old Brown Shoe — The Beatles
// 200 bpm, 12/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "bass rag time piano" named as a bass, played on electric bass finger (its tenor sax patch is not one); ch 3 "treble rag time piano" named as a piano, played on piano (its tenor sax patch is not one); ch 5 "guitar" named as a guitar, played on electric guitar clean (its shakuhachi patch is not one)
// note: Full arrangement: all 126 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/6)

// 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 · electric bass finger · "bass rag time piano"
const bass = note(`<
  A B C D E D C D E D C D E F G F H I J K L M N O P D C D E D C D E F G F H I J K L M N O Q R S T U R S T U V@2 W X D C
  D E F G F H I J K L M N Y Z R S T U R S T U V@2 W X D C D E F G F H I J K L M N Y Z D C D C D C D C D C D C D C D C D
  C D C D C D C ~
>`.pickRestart({
  A: "~@9 a1 a#1 b1", B: "c2@2 ~ c2@3 c2@3 c2@3", C: "c2@3 c2@3 c2@3 a1 a#1 b1", D: "c2!4",
  E: "c2@3 c2@2 ~ c2@3 a1 a#1 b1", F: "d2!4", G: "d2@3 d2@3 d2@3 b1 c2 c#2", H: "d2@3 d2@2 ~ d2@3 b1 c2 c#2",
  I: "f1@4 f1@2 f1@3 ~ f1 ~ f1@4 f1 ~ f1@3 ~ f1@2", J: "f1@3 ~ f1@2 f1@3 ~ f1@2 f1@4 f1@2 f1@3 ~ f1@2",
  K: "g#1@3 ~ g#1@2 g#1@3 ~ g#1@2 g#1@3 ~ g#1@2 g#1@3 ~ g#1@2",
  L: "g#1@3 ~ g#1@2 g#1@3 ~ g#1@2 g#1@3 ~ g#1 ~ g#1@2 g1 ~ f#1 ~", M: "f1@3 ~ f1 ~ f1@3 ~ f1@2 f1@3 ~ f1@2 f1@3 ~ f1 ~",
  N: "e1@3 e1@2 ~ e1@3 ~ e1@2 e1@4 e1@2 e1@3 ~ e1@2", O: "a1@3 ~ a1 ~ a1@3 ~ a1@2 a1@3 ~ a1 ~ a1@4 a1 ~",
  P: "g1@4 g1@2 g1@3 ~ g1 ~ g1@3 ~ g1 ~ g1@4 g1 ~", Q: "~@4 a1 ~ a1@3 ~ a1@2 a1@3 ~ a1 ~ a1@4 a1 ~",
  R: "g1@5 g1 b1@2 d2 e2@2 d2", S: "g1@4 ~ g1 b1@2 d2 e2@2 d2", T: "~ g1@8 ~ g1@2 b1@4 d2@2 e2@4 d2@2",
  U: "~ f1@8 ~ f1@2 a1@4 c2@2 d2@4 c2@2", V: "d2@4 ~@2 d2@5 ~ d2@5 ~ d2@4 ~@2", W: "g1@5 ~ g1@5 ~ g1@5 ~ g1@5 ~",
  X: "g1", Y: "a1@3 ~ a1@2 a1@4 a1@2 a1@4 a1@2 a1@4 a1@2", Z: "~ g1@3 a1 ~ a1@3 ~ a1@2 a1@3 ~ a1 ~ a1@4 a1 ~",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · piano · "treble rag time piano"
const piano = note(`<
  ~ A@12 B@4 C@3 D E F G H A@8 B@4 C@3 D E F G I J ~@7 K@2 L M A@4 B@4 C@3 D E F N O ~@8 K@2 L M A@4 B@4 C@3 D E F N O
  A@24 ~
>`.pickRestart({
  A: "[~@2 [g4,c5]@2 ~ [g4,a#4]@3 [g4,a#4]@3 [g4,a#4]@3 [g4,a#4]@3 [g4,a#4]@3 [g4,a#4]@3 [g4,a#4]]/2", // C5 Gm
  B: "[~@2 [a4,d5]@2 ~ [a4,c5]@3 [a4,c5]@3 [a4,c5]@3 [a4,c5]@3 [a4,c5]@3 [a4,c5]@3 [a4,c5]]/2", // D5 Am
  C: "[f2@4 [f3,a3,d#4]@2 f2@3 ~ [f3,a3,d#4]@2 f2@3 [f3,a3,d#4]@2 ~ f2@3 [f3,a3]@2 f2@3 ~ [f3,a3,d#4]@2 f2@4 [f3,d#4]@2 f2@4 [f3,a3,d#4]@2 f2@4 [a3,d#4]@2 g#2@4 [g#3,c4,d#4]@2 g#2@4 [g#3,c4,d#4]@2 ~ g#2@3 c#4 [g#3,c4]@2 g#2@4 [c4,f#4]@2, ~@21 d#4 ~@11 a3 ~@11 f3 ~@18 f#4 ~@5 g#3 ~]/3", // F7 F F7 Adim G# Cdim
  D: "g#2@2 [g#3,c4] g#2@2 [c4,f#4] g#2@2 [g#3,c4,f#4] g#2@2 [g#3,c4,f#4], ~@4 f#4 ~@5 g#3 ~@13", // G# Cdim G#7
  E: "f2@4 [f3,a3,d#4]@2 f2@4 [a3,d#4]@2 f2@4 [f3,d#4] ~ f2@4 [f3,d#4]@2, ~@10 f3 ~@5 a3@2 ~@4 a3 ~", // F7 Adim F7
  F: "e2@3 [g#3,b3] ~ e2@4 [e3,g#3,b3] a3 ~ e2@3 g#3 ~ e2@4 [e3,g#3,b3,d4]@2 ~, ~@3 e3@2 ~@4 d4@2 ~@4 d4@2 ~@7, ~@8 [e3,b3] ~@3", // G#m E E7 E5
  G: "e2@4 [g3,c#4,e4]@2 a2@3 ~ g3@2 a2@4 [g3,c#4,e4]@2 a2@3 ~ [g3,e4]@2, ~@9 [c#4,e4]@2 ~@10 c#4@2 ~", // C#dim C C#m
  H: "g2@3 ~ f4@2 g2@4 ~ g2@5 [g3,b3,d4] ~ g2@4 [g3,b3,d4] ~, ~@3 [g3,d4]@2 ~@5 [g3,b3,d4,f4]@2 ~@12, ~@4 b3 ~@11 f4@2 ~@4 f4@2", // G G5 G7
  I: "g2@4 [g3,c#4,e4]@2 a2@3 ~ g3@2 a2@4 [g3,c#4,e4]@2 a2@3 ~ [g3,e4]@2, ~@9 [c#4,e4]@2 ~@10 c#4@2 ~", J: "g2 ~@5",
  K: "[a3,c4,d#4]@2 f#3 [a3,c4,d#4]@2 f#3 [a3,c4,d#4]@2 f#3 [a3,c4,d#4]@2 f#3", // Adim
  L: "[b3,d4]@2 g3 [b3,d4]@2 g3 [b3,d4]@2 g3 [b3,d4]@2 g3", // Bm
  M: "[d4,f4] ~ [g3,b3,d4,f4] ~ [g3,b3,d4,f4] ~ [g3,b3,d4,f4] ~ [g3,b3,d4,f4] [g3,b3,d4] f4 g3 [b3,d4,f4] [g3,b3,d4,f4] ~ [b3,f4] [g3,d4] ~ [g3,b3,d4,f4] ~ [g3,b3,d4,f4] ~ [g3,b3,d4,f4] ~, b3 ~@11", // Dm G7 G Bdim G7 Bdim G5 G7
  N: "e2@2 [g3,c#4,e4] a2@2 [g3,c#4,e4] a2@2 [g3,c#4,e4] a2@2 [g3,c#4,e4]", // C#dim
  O: "~@4 [g3,c#4,e4]@2 a2@3 ~ g3@2 a2@4 [g3,c#4,e4]@2 a2@3 ~ [g3,e4]@2, ~@9 [c#4,e4]@2 ~@10 c#4@2 ~", // C#dim C C#m
})).s("gm_piano").gain(0.41)

// chords · piano · "treble rag time piano" · soft notes
const piano_soft = note("<~@45 A@3 B C A@2 B ~@20 A@3 B C A@2 B ~@45>".pickRestart({
  A: "[b3,d4,f4]!6", B: "[a3,b3,c4,d4,d#4,f4] [a3,c4,d#4]!5", C: "[a3,b3,c4,d4,d#4,f4] [b3,d4,f4]!5",
})).s("gm_piano").gain(0.2)

// chords · electric guitar clean · "guitar"
const electric_guitar_clean = note(`<
  ~@10 A B@2 ~ C D E ~@7 A F G H I ~ A J K@2 L M N ~@19 A O P Q R S@2 T U V W@2 X Y Z@2 AA AB@2 ~@9 AC@3 AD AE@2 AF AG
  AH AI@2 AJ@2 AK AL AM AN AO AP@2 AQ AR AS@2 AT AU AV AW AX AR AY AZ BA@3 BB AQ AO BC@2 BD ~
>`.pickRestart({
  A: "~@11 d#5", B: "[e5@4 c6@17 d#5@2 e5@4 ~ [e5,c6]@3 ~@3 [d5,a#5]@13 ~]/2", C: "~@11 f5", D: "f#5@3 ~ d6@17 ~ f5@2",
  E: "f#5@4 d6@2 ~@4 [e5,c6]@13 ~", F: "~@4 c6@17 d#5@2 ~, e5@5 ~", G: "~@2 c6 ~@2 [d5,a#5]@6 d#5, e5 ~@3",
  H: "~@4 c6@17 ~ d#5@2, ~ e5@20 ~@3", I: "e5@2 c6 ~@2 [d5,a#5]@6 ~, ~@10 c5@3 ~@11", J: "~@4 c6@17 ~ d#5@2, e5@7 ~",
  K: "[e5@3 ~ [e5,c6]@2 ~@4 [d5,a#5]@11 ~@7 d6@13 ~@4 f5@3, ~@11 f5@9 ~@4, ~@25 f#5@15 ~@8]/2", // C Gm
  L: "f#5@4 [f#5,d6]@3 ~@2 [e5,c6]@12 ~ [e5,f5]@2", M: "~@4 d6@17 ~ f5@2, ~ f#5@20 ~@3",
  N: "f#5@3 ~ [f#5,d6]@2 ~@4 [e5,c6]@14", O: "~@2 c6@9 d#5, e5@11 ~", P: "e5@4 c6 ~@4 d5@10 ~ d5@2 d#5@2, ~@3 a#5@5",
  Q: "~@2 c6@8 d5 d#5, e5@5 ~", R: "e5@3 ~ [e5,c6]@2 ~@4 d5@8 d#5@2 e5@2 ~@2, ~@5 a#5@5 ~@2",
  S: "[~@18 e5@4 ~@2 f#5@3 ~ [f#5,d6] ~@5 [e5,c6]@10 ~@2 f5@2, f#5@3 ~@5, ~@4 d6@23 ~@21]/2", // D C
  T: "~@4 d6@17 ~ f5@2, f#5@11 ~", U: "f#5@3 ~ [f#5,d6] ~@5 c6@13 ~, ~@9 e5@13 ~@2",
  V: "~@3 d#5 f5@2 d#5@4 c5@2 d#5@6 c5@4 d#5 ~",
  W: "[f#5@5 ~ f#5@6 f5@2 d#5@2 ~@2 d#5@11 c5@3 d#5@2 c6@2 f#5@12, f5 ~@5 f5 ~@41]/2",
  X: "g#4@2 c5@2 d#5@2 f#5@2 d#5@2 g#5@2 f#5@2 d#5@2 f#5@2 d#5@2 c5@2 a#4 ~",
  Y: "f4@3 a4@2 ~ c5@3 d5@2 ~ c5@2 d5@2 c5@2 a4@4 f4@2",
  Z: "[~@4 g#4@2 c5@4 d5@2 ~@2 g#4@2 f4 ~@10 a4 ~@8 c5@2 d5@2 ~@2 a4@2 c5@2 d5 ~, e4@6 ~@12 e4@25 ~@5]/2",
  AA: "d#5@5 ~ d#5@5 ~ d#5@2 d5@2 ~@2 d5@2 c5@2 a4@2, d5 ~@5 d5 ~@17", AB: "[g4@7 ~@5]/2",
  AC: "[~@21 d#5@2 ~@4 c6@17 ~ d#5@2 e5@5 c6@2 ~@4 [d5,a#5]@11 ~ d#5@2, ~@23 e5@21 ~@28]/3", // Gm
  AD: "~@4 c6@17 ~ d#5@2, e5@7 ~, ~@4 b5 ~@19",
  AE: "[~@2 c6 ~@2 [d5,a#5]@5 ~@4 d6@9 f5, e5@3 ~@8 f5 ~@12, ~@23 f#5@22 ~@3]/2", // Gm
  AF: "~@4 d6@2 ~@4 e5@11 ~ f5@2, f#5@2 ~ c6@4 ~", AG: "~@4 d6@17 f5@3, f#5@7 ~",
  AH: "~@4 d6 ~@4 [e5,c6]@10 ~@5, f#5 ~@3", // C
  AI: "[~@13 c5@5 ~@3 c5@4 e4@3 ~@12 a4@5 ~@3, ~@4 a4@11 ~@3 a4@5 ~@2 f4@23, ~@9 d#5@22 ~@2 d#5@9 ~@6, ~@29 a4@8 c5@5 ~@6]/2",
  AJ: "[~@12 f#5@8 ~@12 d#5@4 ~@8 c5@3 ~, g#4@22 ~@2 g#4@23 ~, ~@20 d#5@9 ~@7 f#5@7 ~@5, ~@20 d#5@3 ~]/2",
  AK: "~@9 [a4,c5] d#5@2 ~@3 [a4,c5,d#5] ~@5 [a4,c5,d#5] ~@2, f4@23 ~", // Am Adim
  AL: "~@4 e4@3 ~@2 g#4 e4@2 ~@4 [e4,g#4,d5] ~@4 [e4,g#4,d5] ~@2, ~@4 g#4 ~@19", AM: "~@9 a4 ~@6 a4 ~@7",
  AN: "~@4 a4 ~@5 a4 ~@5 a4 ~@5 d#5@2", AO: "~@2 c6@8 ~ d#5, e5@5 ~",
  AP: "[e5@4 c6@2 ~@4 [d5,a#5]@11 ~@7 c6@16 ~ d#5@2 ~, ~@22 d#5@7 ~@19, ~@6 e5@5 ~]/2", // Gm
  AQ: "e5@2 c6 ~@2 [d5,a#5]@5 ~ d#5", AR: "~@4 c6@17 ~ d#5@2, e5@5 ~",
  AS: "[~@4 c6@2 ~@3 [d5,a#5]@11 ~@7 c6@18 ~ d#5@2, ~ e5@5 ~@15 d#5@5 ~@22, ~@8 e5@7 ~]/2", // Gm
  AT: "e5@4 c6@2 ~@3 [d5,a#5]@12 ~ d#5@2", AU: "~@3 c6@17 ~@2 d#5@2, e5@7 ~",
  AV: "e5@4 c6@2 ~@4 d5@9 ~@3 d#5@2, ~@9 a#5@10 ~@5", AW: "~@4 c6@17 d#5@2 ~, e5@7 ~",
  AX: "~@4 c6@3 ~@3 [d5,a#5]@10 ~@2 d#5@2, e5@7 ~@17", AY: "e5@4 c6 ~@5 a#5@11 ~ d#5@2, ~@9 d5@10 ~@5",
  AZ: "~@2 c6@9 d#5, e5@5 ~",
  BA: "[~@4 c6@2 ~@4 a#5@10 ~ d#5@2 ~@4 c6@18 d#5@2 e5@5 c6@2 ~@3 [d5,a#5]@10 ~@3 d#5@2, ~@9 d5@9 ~@5 e5@22 ~@27]/3", // Gm
  BB: "~@3 c6@17 ~@2 d#5@2, e5@5 ~", BC: "[e5@4 c6@2 ~@3 [d5,a#5]@12 d#5@2 ~@5 c6@17 d#5@2 ~, ~@23 e5@22 ~@3]/2",
  BD: "e5@4 c6@2 ~@3 [d5,a#5]@11 ~@4", // Gm
})).s("gm_electric_guitar_clean").gain(0.41)

// chords · electric guitar clean · "guitar" · soft notes
const electric_guitar_clean_2 = note("<~@60 A@2 B ~@3 C ~@3 D E C ~@19 F@2 G H I J K L M ~@15 N ~@9>".pickRestart({
  A: "~@11 f5", B: "~@10 e5 ~", C: "~@8 c5 ~@3", D: "~@6 c5 ~@5", E: "~@5 a4 ~@2 c5 ~@3", F: "[~@23 f4@24 ~]/2",
  G: "~@5 c5", H: "~@4 d#5@2 ~@2 c5@3 ~, ~@2 c5@5 ~@5", I: "~@4 c5@9 ~@11", J: "~@2 a4 ~@9", K: "~@5 d5 ~@6",
  L: "~@3 [g4,a4] ~@18 a4@2", M: "~ g4@3 ~@20", N: "e5@5 ~@19",
})).s("gm_electric_guitar_clean").gain(0.26)

// drums · snare
const snare = s("sd").struct("<~@108 [~ x ~@4] ~@11 [~@7 x] ~@5>").gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@51 B ~@27 B ~@19 C ~@3 D ~@3 B ~@3 E ~@3 F ~@5>".pickRestart({
  A: "~@8 x!2 ~@2", B: "~@10 x!2", C: "~@11 x", D: "~@8 x!4", E: "~@6 x!6", F: "~@13 x ~@3 x ~@6",
})).gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@51 B ~@27 B ~@19 C ~@3 D ~@3 E ~@3 F ~@3 G ~@5>".pickRestart({
  A: "~@10 x!2", B: "~@6 x!4 ~@2", C: "~@5 x!6 ~", D: "~@5 x ~@6", E: "~@6 x!5 ~", F: "x!6 ~@6", G: "~ x!2 ~@3",
})).gain(0.51)

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

// drums · high tom
const high_tom = s("ht").struct("<~@105 [~ x ~@22] ~@20>").gain(0.41)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@45 A@8 B A@2 ~@17 A@8 B A@2 ~@42>".pickRestart({
  A: "x!4", B: "~ x!3",
})).gain(0.51)

// drums · cowbell
const cowbell = s("cb").struct("<~@45 [~@5 x ~@5 x]!11 ~@17 [~@5 x ~@5 x]!11 ~@42>").gain(0.51)

stack(
  bass, piano, piano_soft, electric_guitar_clean, electric_guitar_clean_2, snare, low_tom, mid_tom, crash, high_tom,
  ride, tambourine, cowbell
)

More by The Beatles