Strudelify
The Sheik of Araby cover art

The Sheik of Araby

The Beatles

KeyG majorTempo168 bpm
0:00/0:00
// The Sheik of Araby — The Beatles
// 168 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 77 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(168/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, A@4 for four bars: edit a riff to change every repeat.

// other · electric guitar jazz · "GUITAR"
const electric_guitar_jazz = note(`<
  [~@19 c4@2 ~ d4 ~]
  [~ d#4@5 d4@5 ~ c4@4 ~ c4@2 ~ d4@2 ~@2]
  [d#4@2 ~ f4@2 ~ d#4@2 ~ d4@3 c4@4 ~@2 d#4 ~@2 f4 ~@2]
  [g4@2 ~ g4@2 ~ g4 ~@2 g#4@2 ~ g4@2 ~ f4 ~@2 d#4@2 ~ d4@2 ~]
  ~@73
>`).s("gm_electric_guitar_jazz").gain(0.36)

// chords · electric guitar clean · "GUITAR"
const electric_guitar_clean = note(`<
  ~@4 A@2 B C D E F G H I J K L@2 M E N@2 O P Q R S@2 T U V W@2 X Y P Y Z O AA@2 AB AC AD AE@2 AF AG@2 AH AI@2 AJ AF AH
  AK AL@3 AM@3 AN AO AP@2 AJ AQ AR@3 AQ AF AS AT@3
>`.pickRestart({
  A: "[[c3,c4,e4,g4] ~@8 [c3,c4,e4,g4]@8 ~@7 [d4,f4,a4]@2 ~@8 d3@8 ~@6, ~@23 d3@2 ~@8 [d4,f4,a4]@8 ~@7]/2", // C Dm
  B: "[g3,d4,g4,b4]@2 ~@8 b3@9 ~@5, ~@3 [g3,d4,g4,b4]@3 ~@2", C: "[g3,b3,d4,g4,b4] ~@4 [g3,b3,d4,g4,b4]@4 ~@3",
  D: "[d3,a3,d4,f4,a4]@3 ~@7 [d3,a3,d4,f4,a4]@8 ~ d4 ~@4", E: "[g3,b3,d4,g4,b4]@2 ~@3 [g3,b3,d4,g4,b4]@4 ~@3",
  F: "[c3,g3,c4,e4]@4 ~@5 [c3,g3,c4,e4,g4]@8 ~@7, g4 ~@11", // C
  G: "[c3,g3,c4,e4,g4]@2 ~@8 [c3,c4]@9 ~@5, ~@3 [g3,e4,g4]@3 ~@2", // C
  H: "[c4,e4,g4]@3 ~@6 [c3,g3,c4,e4,g4]@8 ~@7, [c3,g3]@5 ~@19", // C C5
  I: "[a2,e3,a3,c4,e4]@4 ~@6 [e3,a3,e4]@7 ~@7, ~@9 [a2,c4]@7 ~@8", J: "[d3,a3,d4,f4,a4]@3 ~@6 [d3,a3,d4,f4,a4]@8 ~@7",
  K: "[d3,a3,d4]@2 ~@3 [d3,a3,d4,f4,a4]@5 ~@2, [f4,a4] ~@11", // D5 Dm F
  L: "[[d3,a3,f4,a4]@5 ~ d4 ~@2 [d3,a3,d4,f4,a4]@7 ~ d4@2 ~@4 [g3,b3,g4,b4]@5 ~@5 [g3,b3,d4,g4,b4]@8 ~@7, d4@3 ~@20 d4@3 ~@22]/2", // Dm G
  M: "[c3,g3,c4,e4,g4]@4 ~@5 [c3,g3,c4,e4,g4]@8 ~@7", // C
  N: "[[c3,g3,c4,e4,g4]@4 ~@6 [c3,g3,c4]@9 ~@4 [d3,a3,a4]@6 ~@5 [d3,a3,d4,f4,a4]@9 ~@5, ~@9 [e4,g4]@9 ~@5 [d4,f4]@4 ~@21]/2", // C C5 D5 Dm Em Dm
  O: "[g3,b3,d4,g4,b4]@2 ~@3 [g3,b3,d4,g4,b4]@5 ~@2", // G
  P: "~ b3@5 ~@4 [g3,b3,g4,b4]@9 ~@5, [g3,d4,g4,b4]@5 ~@5 d4@11 ~@3", // G
  Q: "[d4,f4,a4]@5 ~ d4 ~@3 [a3,f4,a4]@9 ~@5, [d3,a3]@6 ~@4 [d3,d4]@11 ~@3", // Dm D5 D
  R: "[g3,b3,b4]@6 d4 ~@3 [g3,b3,d4,g4]@8 ~@6, [d4,g4]@5 ~@4 b4@10 ~@5", // G G5
  S: "[[e3,g#3,b3,b4]@6 ~ e4 ~@2 [e3,g#3,b3,e4,g#4,b4]@10 ~@4 [e3,g#3,b3,g#4]@5 e4 ~@3 [e3,g#3,b3,g#4,b4]@9 e4@2 ~@4, [e4,g#4]@4 ~@19 b4@6 ~@19, ~@24 e4@4 ~@5 e4@8 ~@7]/2", // E
  T: "[d3,a3,f4,a4]@6 d4 ~@3 [a3,f4,a4]@10 ~@4, d4@2 ~@3 [d3,d4]@6 ~", // Dm D
  U: "[g3,b3,d4,g4]@5 ~ e4@2 ~@2 [e3,g#3,b3,g#4,b4]@8 e4 ~@5, b4@4 ~ e4@3 ~@4", // G E
  V: "[a2,e3,c4,e4]@6 ~@4 [a2,e3,a3]@7 a3 ~@6, a3@4 ~@5 [c4,e4]@8 ~@7", // Am A5 C
  W: "[[d3,a3,f#4,a4]@6 d4 ~@2 [d3,a3,d4,f#4,a4]@9 ~@5 [d3,a3,a4]@6 d4 ~@3 [d3,a3,d4,f4,a4]@9 ~@6, d4@4 ~@19 [d4,f4]@4 ~@21, f#3 ~@47]/2", // D D5 Dm
  X: "[g3,b3,g4,b4]@6 ~@4 [g3,b3,d4,g4,b4]@9 ~@5, d4 ~@5", Y: "[c3,g3,e4,g4]@3 ~@2 [c3,g3,c4,e4,g4]@4 ~@3, c4 ~@5",
  Z: "[d3,a3,d4,f4,a4]@6 ~@4 [d3,a3,d4,f4,a4]@9 ~@5", // Dm
  AA: "[[g3,b3,d4,g4,b4]@5 ~@5 [g3,b3,g4,b4]@9 ~@5 d3@6 ~@3 [d3,a3,d4,f4,a4]@9 ~@6, ~@10 d4@11 ~@2 [a3,d4,f4,a4]@6 ~@19]/2", // G Dm
  AB: "[g3,b3,d4,g4,b4]@6 ~@4 [b3,d4,g4,b4]@9 ~@5, ~@3 g3@3 ~@2", // G
  AC: "[c3,g3,c4,e4,g4]@4 ~@5 [c3,c4,g4] [c3,g3,c4,g4]@10 ~@4, ~@9 e4@10 ~@5", // C C5
  AD: "[c3,g3,c4,e4,g4]@2 ~@3 [c3,g3,c4,e4,g4]@5 ~@2", // C
  AE: "[[c3,c4,e4,g4]@4 ~@5 [c3,c4,e4,g4]@8 ~@6 [a2,a3,c4,e4]@6 ~@4 [a2,a3,c4,e4]@8 ~@7, g3 ~@7]/2", // C Am
  AF: "[d3,d4,f4,a4]@5 ~@4 [d3,d4,f4,a4]@10 ~@5", // Dm
  AG: "[[d3,d4,f4,c5]@4 ~@5 [d3,d4,f4,c5]@9 ~@5 [d3,d4,f4,a4]@6 ~@4 [d3,f4,a4]@9 ~@6, ~@33 d4@11 ~@4]/2", // Dm7 Dm
  AH: "[g3,d4,g4,b4]@3 ~@2 g3@4 ~@3, ~@9 [d4,g4,b4]@8 ~@7", // G
  AI: "[[c3,c4,e4,g4]@6 ~@3 [c3,c4,e4,g4]@8 ~@7 [g3,d4,b4]@6 ~@3 [g3,d4,g4,b4]@8 ~@7, ~@23 g4@5 ~@20]/2", // C G
  AJ: "[c3,c4,e4,g4]@3 ~@2 [c3,c4,e4,g4]@5 ~@2", AK: "[g3,d4,g4,b4]@5 ~@5 [g3,d4]@11 ~@3, ~@3 g4@3 ~@2, ~@10 b4@9 ~@5",
  AL: "[[d3,d4,f4,a4]@6 ~@3 [d3,d4,f4,a4]@8 ~@6 [e3,e4,g#4,b4]@7 ~@3 [e3,e4,g#4,b4]@8 ~@7 [a2,a3,e4]@5 ~@4 [a2,a3,c4,e4]@10 ~@5, ~@47 c4@5 ~@20]/3", // Dm E A5 Am
  AM: "[[a2,a3,c4,e4]@4 ~@5 [a2,a3,c4,e4]@7 ~@7 [d3,d4,f4,a4]@6 ~@4 [d3,d4,f4,a4]@9 ~@5 [d4,e4,a#4]@3 ~@8 [e3,g#4,b4]@7 ~@7, ~@47 d3@5 ~@5 e4@7 ~@8]/3", // Am Dm Em7b5 E
  AN: "[a2,a3,c4,e4]@3 ~@2 a3@3 ~@4, ~@9 [a2,e4]@8 ~@7, ~@3 c4@2 ~@3", // Am A5
  AO: "[d3,d4,f#4,a4]@3 ~@2 [d3,f#4,a4]@4 ~@3, ~@5 d4@5 ~@2", // D
  AP: "[[d3,d4,f4,a4]@6 ~@3 [d3,d4]@10 ~@4 [g3,d4,g4,b4]@7 ~@3 [g3,d4]@9 ~@6, ~@9 [f4,a4]@8 ~@16 [g4,b4]@7 ~@8]/2", // Dm D G G5 F G
  AQ: "[g3,d4,g4,b4]@7 ~@3 [g3,d4]@11 ~@3, ~@10 [g4,b4]@9 ~@5", // G G5 G
  AR: "[[d3,d4,f4,a4]@6 ~@3 [d3,d4]@10 ~@4 [g3,d4,g4,b4]@7 ~@3 [g3,d4,g4,b4]@9 ~@6 c3@7 ~@2 [c3,c4,e4,g4]@9 ~@6, ~@9 [f4,a4]@8 ~@30 [c4,e4,g4]@7 ~@18]/3", // Dm D G C F C
  AS: "[g3,d4,g4,b4]@7 ~@2 [g3,d4,g4,b4]@9 ~@6", // G
  AT: "[[c3,c4,e4,g4]@6 ~@3 [c3,c4,e4,g4]@11 ~@3 [c3,c4,e4,g4]@3 ~@7 [c3,c4,e4,g4]@22 ~@17]/3", // C
})).s("gm_electric_guitar_clean").gain(0.41)

// other · electric guitar clean · "GUITAR"
const electric_guitar_clean_2 = note("<A B@3 ~@73>".pickRestart({
  A: "~@19 c4@3 d4@2",
  B: "[~ d#4@6 d4@6 c4@5 ~ c4@2 d4@2 d#4@3 ~ f#4@3 d#4@2 d4@3 c4@6 ~ d#4@2 f4@2 ~ g4@3 g4@2 ~ g4@2 ~@2 g#4@2 ~ g4@3 f4@2 ~ d#4@3 d4@2 ~]/3",
})).s("gm_electric_guitar_clean").gain(0.46)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~ A B C D E F@5 G@3 H@7 I J@5 K L M N O@3 P Q@2 I R@3 S@3 T U V W X Y Z W D E AA W AB AC AD AE I AF AG AH@2 AI Z AJ AK
  AA Z AL V Y Z AM@2
>`.pickRestart({
  A: "~ c2@12 g1@11", B: "~ c2@11 g1@12", C: "c2@11 ~@2 g1@5 ~@6", D: "c2@5 ~ d2@6 e2@6 f2@6",
  E: "~ d2@5 e2@6 f2@6 g2@4 ~@2",
  F: "[g2@5 ~ a2@5 b2@6 c3@6 g2@6 ~@4 g2@11 ~@3 d2@6 ~ e2@5 f2@6 g2@4 ~@2 g2@6 a2@6 b2@6 c3@4 ~@2 c2@6 ~ d2@5 e2@5 ~ f2@4 ~@3]/5",
  G: "[g2@6 ~@3 g2@12 ~@2 c2@6 d2@6 e2@5 f2@7 a1@6 b1@6 c2@6 d2@4 ~@3]/3",
  H: "[d2@6 e2@5 f2@6 g2@5 ~ g2@7 ~@3 g2@14 d2@5 ~@2 e2@5 f2@6 g2@4 ~@2 g2@6 a2@6 b2@6 c3@4 ~@2 c2@6 d2@6 e2@5 f2@4 ~@3 g2@5 ~@5 g2@9 ~@5 c2@6 d2@6 e2@5 f2@7 ~]/7",
  I: "d2@5 ~ e2@5 f2@6 g2@4 ~@3",
  J: "[g2@5 ~ a2@5 b2@5 c3@5 ~@2 g2@7 ~@3 g2@11 ~@3 d2@6 e2@6 f2@6 g2@6 e2@5 ~ f#2@4 ~@2 g#2@5 ~ a2@4 ~@2 a2@6 b2@6 c3@5 d3@4 ~@4, ~@23 f2 ~@96]/5",
  K: "~ e2@5 ~@4 e2@13 d2", L: "~@5 e2 e2@5 f2 f2@5 g2@6 ~, d2 ~@2", M: "e2@5 ~ f#2@4 ~ g#2@5 ~ a2@4 ~@3",
  N: "a1@6 b1@5 c2@6 d2@4 ~@3", O: "[a1@5 ~@4 d2@11 ~@3 d2@6 e2@5 f2@6 g2@5 ~ g2@6 ~ a2@6 b2@6 c3@5 ~@2]/3",
  P: "c2@6 d2@5 e2@6 f2@4 ~@3, d2 ~@23", Q: "[g2@6 ~@3 g2@12 ~@2 c2@6 ~ d2@5 e2@6 f2@6 ~]/2",
  R: "[g2@5 a2@6 b2@5 c3@6 ~ g2@6 ~@4 g2@11 ~@3 d2@6 e2@6 f2@6 g2@4 ~@3]/3",
  S: "[g2@5 ~ a2@5 b2@6 c3@4 ~@2 c2@6 ~ d2@5 ~ e2@5 f2@4 ~@2 g2@5 ~@5 g2@11 ~@4]/3", T: "~ c2@6 d2@5 e2@6 ~ f2@5",
  U: "~ a1@5 b1@6 c2@6 d2@4 ~@2", V: "d2@5 ~ e2@6 f2@6 g2@3 ~@3", W: "g2@3 ~@2 g2@5 ~@2", X: "d2@5 e2@6 f2@6 g2@3 ~@4",
  Y: "g2@5 ~ a2@6 b2@5 c3@4 ~@3", Z: "c2@5 ~ d2@6 e2@6 f2@4 ~@2", AA: "g2@5 ~ a2@6 b2@6 c3@4 ~@2",
  AB: "d2@2 e2@2 f2@2 g2 ~", AC: "~ e2@4 ~ f#2@4 ~@2 g#2@4 ~@2 a2@4 ~@2", AD: "a2@3 ~@3 b2@5 ~ c3@4 ~@2 d3@3 ~@3",
  AE: "a2@2 ~ a2@3 ~@2", AF: "e2@5 ~ f#2@4 ~@2 g#2@5 ~ a2@2 ~@4", AG: "a2@4 ~@2 b2@4 ~ c3@6 d3@4 ~@3",
  AH: "[a2@6 ~@4 a2@10 ~@3 d2@5 ~@2 e2@6 f2@5 g2@3 ~@4]/2", AI: "g2@5 ~ a2@5 ~ b2@6 c3@3 ~@3",
  AJ: "~ g2@5 ~@4 g2@11 ~@3", AK: "d2@5 ~@2 e2@5 f2@6 g2@3 ~@3", AL: "~@2 g2@5 ~@4 g2@12 ~",
  AM: "[~ c3@5 ~@5 c2@29 ~@8]/2",
})).s("gm_electric_bass_finger").gain(0.41)

// drums · kick
const kick = s("bd").struct("<~@3 [~@3 x] [x ~@4 x ~@3 x ~@2]!71 [x ~@4 x ~@6] ~>").gain(0.47)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@3 [~@9 x ~ x] [x ~@2 x ~ x!2 ~@2 x ~ x]!71 [x ~@2 x ~ x ~@6] ~>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@4 [x ~@4 x ~@6]!72 ~>").gain(0.33)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A ~ B C@2 D E C@2 F G H I J K H I L C@3 D M I C F N E H F N C I D C@2 O P N C@2 F Q I@2 D C@3 D R I C D C@2 I D B
  C@2 D C@3 D B C@2 D C@2 I D ~
>`.pickRestart({
  A: "~ x", B: "x!2 ~ x", C: "x!4", D: "x ~@4 x ~@6", E: "x ~@5 x ~@6 x ~@5 x ~@4", F: "x ~@9 x ~@12 x",
  G: "~@6 x ~@5 x ~@6 x ~@4", H: "~ x ~@5 x ~@5 x ~@5 x ~@4", I: "~ x ~@5 x ~@4 x ~@5 x ~@5", J: "x ~@8 x ~@12 x ~",
  K: "~@5 x ~@6 x ~@5 x ~@5", L: "x ~@2 x ~@4", M: "x ~@5 x ~@5 x ~@6 x ~@4", N: "~ x!3",
  O: "x ~@5 x ~@5 x ~@5 x ~@4 x", P: "~@9 x ~@13 x", Q: "~@6 x ~@6 x ~@5 x ~@4", R: "x ~@6 x ~@5 x ~@5 x ~@4",
})).gain(0.53)

// drums · congas
const congas = s("conga:18").struct(`<
  ~
  [~@6 x ~@3 x ~@8 x ~@2 x ~]
  [~@3 x ~ x ~@3 x ~ x]
  [~@5 x ~@3 x ~@5 x ~@5 x ~@2]
  ~@73
>`).gain(1.5)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  ~
  [~ x ~@2 x ~@2 x ~@6 x ~@5 x ~@3]
  [~ x ~@3 x ~ x ~@5 x ~@2 x ~@2 x ~@4]
  [~ x ~@2 x ~@2 x ~@4 x ~@5 x ~@5]
  ~@73
>`).gain(1.5)

stack(
  electric_guitar_jazz, electric_guitar_clean, electric_guitar_clean_2, bass, kick, snare, snare_soft, hihat, crash,
  tambourine, congas, congas_2
)

More by The Beatles