Strudelify

Medley: Rip It Up Shake, Rattle and Roll Blue Suede Shoes

The Beatles

KeyE♭ majorTempo210 bpm
0:00/0:00
// Medley: Rip It Up   Shake, Rattle and Roll   Blue Suede Shoes — The Beatles
// 210 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(210/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 · acoustic bass · "Bass"
const bass = note(`<
  ~@4 A@2 B C A D E C D F A@3 G B C A D E C D F H I J K L M N K O P Q R A@4 L S N T U V W@2 X Y@3 Z AA AB AC AD AE AB F
  A@4 L S N T U V W Q H I J K L M N K O P Q R A@4 L S N T U V W@2 AF Y@3 Z AA AB AC AD AE AB F A@4 L S N T U V W Q H I J
  K L M N K O AG AH AI ~
>`.pickRestart({
  A: "eb2@3 ~ g2@3 ~ bb2@3 ~ g2@3 ~", B: "ab1@3 ~ c2@4 eb2@3 ~ c2@4", C: "ab1@3 ~ c2@3 ~ eb2@3 ~ c2@3 ~",
  D: "eb2@3 ~ g2@4 bb2@3 ~ g2@3 ~", E: "bb1@3 ~ d2@4 f2@3 ~ d2@3 ~", F: "eb2@3 ~ g2@3 ~ bb2@3 ~ bb1@4",
  G: "eb2@3 ~ g2@4 bb2@3 ~ g2@2 ~@2", H: "eb2@3 ~ g2@4 bb2@3 ~ c3@3 ~", I: "eb3@3 ~ c3@3 ~ bb2@4 g2@3 ~",
  J: "eb2@3 ~ g2@3 ~ bb2@3 ~ c3@3 ~", K: "eb3@3 ~ c3@3 ~ bb2@3 ~ g2@4", L: "ab1@3 ~ c2@3 ~ eb2@3 ~ f2@3 ~",
  M: "ab2@3 ~ f2@3 ~ eb2@3 ~ c2@3 ~", N: "eb2@4 g2@3 ~ bb2@3 ~ c3@3 ~", O: "bb1@3 ~ d2@3 ~ f2@3 ~ d2@4",
  P: "ab1@3 ~ c2@4 eb2@4 c2@3 ~", Q: "eb2@4 g2@3 ~ bb2@3 ~ g2@3 ~", R: "bb2@3 ~ ab2@3 ~ g2@3 ~ f2@4",
  S: "ab2@3 ~ gb2@4 f2@3 ~ e2@3 ~", T: "eb3@3 ~ c3@3 ~ bb2@3 ~ g2@3 ~", U: "bb1@4 d2@3 ~ f2@3 ~ d2@3 ~",
  V: "ab1@3 ~ c2@4 eb2@3 ~ c2@3 ~", W: "eb2@3 ~ g2@3 ~ bb2@3 ~ g2@4", X: "eb2@3 ~ g2@3 ~ bb2@3 ~ bb2@4",
  Y: "eb2@3 ~ g2@3 ~ bb2@3 ~ bb2@3 ~", Z: "ab1@4 c2@4 eb2@3 ~ eb2@4", AA: "ab1@3 ~ c2@3 ~ eb2@4 c2@3 ~",
  AB: "eb2@4 g2@4 bb2@3 ~ bb2@4", AC: "eb2@3 ~ g2@4 bb2@3 ~ bb2@3 ~", AD: "bb1@3 ~ d2@3 ~ f2@3 ~ f2@4",
  AE: "ab1@4 c2@4 eb2@3 ~ c2@4", AF: "eb2@2 ~@2 g2@3 ~ bb2@3 ~ bb2@4", AG: "ab1 ~@3 c2 ~@3 eb2 ~@3 c2 ~@3",
  AH: "eb1 ~@3 g1 ~@3 ab1 ~@3 a1 ~@3", AI: "bb1 ~@2 c2 d2 ~@2 eb2 ~@4 eb1 ~@3",
})).s("gm_acoustic_bass").gain(0.44)

// chords · electric guitar muted · "Guitar 1"
const electric_guitar_muted = note(`<
  ~@4 A B C D E@6 F G A B C D E@6 F G A B C D E@6 F G A B C D E@6 F G A B C D E@6 F G A B C D H@6 F G A B C D E@6 F G A
  B C D E@6 F G A B C D E@6 F G A B C D H@6 F G A B C D I@6 ~
>`.pickRestart({
  A: "[eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2]@2 ~@2", B: "[eb2,bb2]@3 ~@4 [eb2,bb2]@3 ~ [eb2,bb2] [eb2,bb2]@2 ~@2",
  C: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3]@2 ~@2", D: "[ab2,eb3]@4 ~@2 [ab2,eb3]@3 ~ [ab2,eb3] ~ [ab2,eb3]@3 ~",
  E: "[[eb2,bb2] ~@3 [eb2,bb2] ~@3 [eb2,bb2]@4 ~@4 [eb2,bb2]@4 ~@3 [eb2,bb2]@3 [eb2,bb2] ~ [eb2,bb2]@2 ~@2 [bb2,f3] ~@3 [bb2,f3]@2 ~@2 [bb2,f3]@5 ~@3 [ab2,eb3]@3 ~@3 [ab2,eb3]@3 ~@2 [ab2,eb3] [ab2,eb3]@2 ~@2 [eb2,bb2] ~@3 [eb2,bb2] ~@2 [eb2,bb2]@3 ~@6 [eb2,bb2]@2 ~@5 [bb2,f3]@3 [bb2,f3] ~ [bb2,f3]@2 ~@2, ~@4 b7@43 ~]/6", // Eb5 Bb5 Ab5 Eb5 Bb5
  F: "[eb2,bb2] ~@3 [eb2,bb2] ~@2 [eb2,bb2]@3 ~@6", G: "[eb2,bb2]@2 ~@5 [eb2,bb2]@3 [eb2,bb2] ~ [eb2,bb2]@2 ~@2",
  H: "[[eb2,bb2] ~@3 [eb2,bb2] ~@3 [eb2,bb2]@4 ~@4 [eb2,bb2]@4 ~@3 [eb2,bb2]@3 [eb2,bb2] ~ [eb2,bb2]@2 ~@2 [bb2,f3] ~@3 [bb2,f3]@2 ~@2 [bb2,f3]@5 ~@3 [ab2,eb3]@3 ~@3 [ab2,eb3]@3 ~@2 [ab2,eb3] [ab2,eb3]@2 ~@2 [eb2,bb2] ~@3 [eb2,bb2] ~@2 [eb2,bb2]@3 ~@6 [eb2,bb2]@2 ~@5 [eb2,bb2]@3 [eb2,bb2] ~ [eb2,bb2]@2 ~@2, ~@4 b7@43 ~]/6", // Eb5 Bb5 Ab5 Eb5
  I: "[[eb2,bb2] ~@3 [eb2,bb2] ~@3 [eb2,bb2]@4 ~@4 [eb2,bb2]@4 ~@3 [eb2,bb2]@3 [eb2,bb2] ~ [eb2,bb2]@2 ~@2 [bb2,f3] ~@3 [bb2,f3]@2 ~@2 [bb2,f3]@5 ~@3 [ab2,eb3]@3 ~@3 [ab2,eb3]@3 ~@2 [ab2,eb3] [ab2,eb3]@2 ~@34, ~@4 b7@43 ~]/6", // Eb5 Bb5 Ab5
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.3)

// chords · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel = note(`<
  ~@4 A B C D A B E F G H I J K L C D K L E F G H A B A B C D A B E F G H M N M O P Q R S E F G@2 A B A B C D A B E F G
  H I J K L C D K L E F G H A B A B C D A B E F G H M N M O P Q R S E F G@2 A B A B C D A B E F G H I J K L C D K L E F
  G H A B A B C D A B T F U V W
>`.pickRestart({
  A: "[g3,bb3,eb4]@2 eb3 ~ [ab3,c4,eb4]@2 eb3 ~ [g3,bb3,eb4]@2 eb3 ~ [ab3,c4,eb4]@3 eb3", // Eb Ab Eb Ab
  B: "[g3,bb3,eb4]@2 ~ eb3 [ab3,c4,eb4]@3 eb3 [g3,bb3,eb4]@2 eb3 ~ [ab3,c4,eb4]@2 eb3 ~", // Eb Ab Eb Ab
  C: "[eb3,ab3,c4]@2 eb3 ~ [eb3,ab3,c4]@2 ~ eb3 [eb3,ab3,c4]@3 eb3 [eb3,ab3,c4]@2 ~ eb3", // Ab
  D: "~ c4@2 eb3 [eb3,ab3,c4]@2 ~ eb3 [eb3,ab3,c4]@2 ~ eb3 [eb3,ab3,c4]@2 ~ eb3, [eb3,ab3] ~@7", // Ab Ab5
  E: "[f3,bb3,d4]@2 ~ f3 [f3,bb3,d4]@2 ~ f3 [f3,bb3,d4]@2 ~ f3 [f3,bb3,d4]@2 ~@2", // Bb
  F: "[ab3,c4]@3 eb3 [ab3,c4]@2 ~ eb3 [ab3,c4]@2 ~ eb3 [ab3,c4]@2 ~ eb3, eb3 ~@15", // Ab
  G: "[g3,bb3,eb4]@3 eb3 [ab3,c4,eb4]@3 eb3 [g3,bb3,eb4]@2 ~ eb3 [ab3,c4,eb4]@2 ~ eb3", // Eb Ab Eb Ab
  H: "[g3,bb3,eb4]@2 eb3 ~ eb3 ~@2 [ab3,bb3,d4,f4]@6 ~@3", // Eb Bb7
  I: "[eb3,g3,bb3]@2 ~ eb3 [eb3,ab3,c4]@2 ~ eb3 [eb3,g3,bb3]@2 ~ eb3 [eb3,ab3,c4]@2 ~ eb3", // Eb Ab Eb Ab
  J: "[eb3,g3,bb3]@2 ~ eb3 [eb3,ab3,c4]@2 ~ eb3 [eb3,g3,bb3]@2 ~ eb3 [eb3,ab3,c4]@2 ~@2", // Eb Ab Eb Ab
  K: "~@3 [g3,bb3,eb4] [ab3,c4,eb4]@3 ~ [g3,bb3,eb4]@3 ~ [ab3,c4,eb4]@4", // Eb Ab Eb Ab
  L: "~@3 [g3,bb3] [ab3,c4,eb4]@3 ~ [g3,bb3,eb4]@3 ~ [ab3,c4,eb4]@2 ~@2", // Gm Ab Eb Ab
  M: "[bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [ab3,db4,f4]@2 ~ [bb3,eb4,g4]", // Eb Db Eb
  N: "~@2 [bb3,eb4,g4]@2 ~@2 [bb3,eb4,g4] ~ [ab3,db4,f4]@4 ~@4", // Eb Db
  O: "~@2 [bb3,eb4,g4]@2 ~@2 [bb3,eb4,g4] ~ [bb3,eb4,g4]@5 ~@3", P: "~@4 [ab3,c4,gb4]@6 [ab3,c4,gb4]@4 ~ ab3",
  Q: "[ab3,c4,gb4] ~ [ab3,c4,gb4] ~ ab3 ~@2 [c4,gb4]@2 ~ ab3 ~ [ab3,c4,gb4]@2 ~@2, ~@6 ab3@3 ~@7", // Ab7 Cdim Ab7
  R: "~@4 g4@6 eb4@5 ~, ~@4 bb3@11 ~", S: "[bb3,db4]@3 [bb3,eb4]@4 ~",
  T: "[f3,bb3]@2 ~ f3 [f3,bb3,d4]@2 ~ f3 [f3,bb3,d4]@2 ~ f3 [f3,bb3,d4]@2 ~@2", U: "eb3@3 ~ g3@3 ~ ab3@3 ~ a3@3 ~",
  V: "bb3@2 ~ c4 d4@2 ~ eb4@3 ~@2 eb3@3 ~", W: "~@4 db4@3 ~@9, ~@2 g3@3 ~@11, ~@3 bb3@3 ~@10",
})).s("gm_acoustic_guitar_steel").gain(0.47).pan(0.6)

// chords · electric guitar jazz · "Solo Guitar"
const electric_guitar_jazz = note("<~@38 A B C@2 D@2 E@2 F@2 G H ~@36 A B C@2 D@2 E@2 F@2 G H ~@37>".pickRestart({
  A: "[bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5]@2 ~@2 [bb4,db5,g5]@5 ~ [bb4,eb5,g5]@2", // Eb Gdim Eb
  B: "~@2 [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5] ~ [bb4,db5,g5] ~ [bb4,db5,g5] ~ [bb4,db5,g5]@2 ~@2", // Eb Gdim
  C: "[[bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5]@2 ~@2 [bb4,db5,g5]@5 ~@2 [bb4,eb5,g5]@2 ~ [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5] ~ [bb4,eb5,g5]@2 [bb4,eb5,g5] ~ [bb4,eb5,g5] ~ eb5 [bb4,gb5]]/2", // Eb Gdim Eb Ebm
  D: "[[bb4,c5,eb5,gb5]@2 ~@2 [bb4,c5,eb5,gb5] ~@3 [bb4,c5,eb5,gb5]@5 ~@2 [bb4,c5,eb5,gb5]@2 ~@2 [bb4,c5,eb5,gb5]@2 ~@2 [bb4,c5,eb5,gb5] [c5,gb5] [bb4,eb5] ~ [bb4,c5,eb5,gb5] c5 [bb4,eb5,gb5] ~@2]/2", // Cm7b5 Cdim Eb5 Cm7b5 Ebm
  E: "[[bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~@3 [bb4,eb5,g5]@4 ~@3 [bb4,eb5,g5]@2 ~@2 [bb4,eb5,g5] ~@3 [bb4,eb5,g5]!2 ~@2 [bb4,eb5,g5]!2 ~ [c5,d5,f5,ab5] ~]/2", // Eb Dm7b5
  F: "[[c5,d5,f5,ab5]@2 ~@2 [c5,d5,f5,ab5]@2 ~@2 [c5,d5,f5,ab5]@5 ~@2 [bb4,c5,gb5]@2 ~@2 [bb4,c5,eb5,gb5]@2 ~@2 [bb4,c5,eb5,gb5]!2 ~@2 [bb4,c5,eb5,gb5]!2 ~@3, ~@7 eb5 ~@8]/2", // Dm7b5 Cm7b5
  G: "~@3 [a4,d5,gb5] [bb4,eb5,g5]@2 ~@2 [a4,d5,gb5] ~@2 [bb4,eb5,g5]@2 ~ a4 [d5,gb5]", // D Eb D Eb D
  H: "[bb4,eb5,g5]@2 [bb4,eb5,g5]@2 [a4,d5,gb5] ~ [bb4,eb5,g5]@2 ~@2 [a4,d5,gb5] ~ [bb4,eb5,g5]@2 ~@2", // Eb D Eb D Eb
})).s("gm_electric_guitar_jazz").gain(0.28).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@132 [x ~@2 x] [~@3 x] ~>").gain(0.23)

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

// drums · hihat
const hihat = s("hh").struct("<[x!4] ~@12 [~ x!3] ~@121>").gain(0.62)

// drums · open hat
const open_hat = s("oh").struct("<~@133 [~@3 x] [~ x ~@6]>").gain(0.16)

// drums · crash
const crash = s("cr").struct("<~@31 A ~ A ~@6 B ~@38 A ~ A ~@6 B ~@38 A ~ A ~@2 A ~@2>".pickRestart({
  A: "~ x ~@2", B: "x",
})).gain(0.47)

// drums · ride
const ride = s("rd").struct("<~@3 A@10 B A@17 C A C A@6 D A@38 C A C A@6 D A@38 C E C A F ~@2 G>".pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~ x ~", B: "x", C: "x ~@6 x!2 ~@3 x ~ x ~", D: "~@4 x ~@2 x!2 ~@3 x ~ x ~",
  E: "x ~@3 x ~@2 x!2 ~@5 x ~", F: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", G: "~@9 x!7",
})).gain(0.47)

stack(
  bass, electric_guitar_muted, acoustic_guitar_steel, electric_guitar_jazz, kick, snare, hihat, open_hat, crash, ride
)

More by The Beatles