Strudelify

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: 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 N O@2 P Q R S T@2 U V W X@2 Y Z AA AB AC AD AE@2 AF AG AH AI@2 AJ AK@2 AL AM@2 AN AO
  AP AQ AR@3 AS@3 AT AU AV@2 AW AX AY@3 AZ BA BB BC@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", N: "[g3,b3,d4,g4,b4]@3 ~@7 [g3,b3,d4,g4,b4]@8 ~@6",
  O: "[[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
  P: "[g3,b3,d4,g4,b4]@2 ~@3 [g3,b3,d4,g4,b4]@5 ~@2", // G
  Q: "~ b3@5 ~@4 [g3,b3,g4,b4]@9 ~@5, [g3,d4,g4,b4]@5 ~@5 d4@11 ~@3", // G
  R: "[d4,f4,a4]@5 ~ d4 ~@3 [a3,f4,a4]@9 ~@5, [d3,a3]@6 ~@4 [d3,d4]@11 ~@3", // Dm D5 D
  S: "[g3,b3,b4]@6 d4 ~@3 [g3,b3,d4,g4]@8 ~@6, [d4,g4]@5 ~@4 b4@10 ~@5", // G G5
  T: "[[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
  U: "[d3,a3,f4,a4]@6 d4 ~@3 [a3,f4,a4]@10 ~@4, d4@2 ~@3 [d3,d4]@6 ~", // Dm D
  V: "[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
  W: "[a2,e3,c4,e4]@6 ~@4 [a2,e3,a3]@7 a3 ~@6, a3@4 ~@5 [c4,e4]@8 ~@7", // Am A5 C
  X: "[[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
  Y: "[g3,b3,g4,b4]@6 ~@4 [g3,b3,d4,g4,b4]@9 ~@5, d4 ~@5", Z: "[c3,g3,e4,g4]@3 ~@2 [c3,g3,c4,e4,g4]@4 ~@3, c4 ~@5",
  AA: "[g3,b3,d4,g4,b4]@5 ~@5 [g3,b3,d4,g4,b4]@9 ~@5", AB: "[c3,g3,c4,e4,g4]@6 ~@4 [c4,g4]@9 ~@5, ~@3 [c3,g3,e4]@3 ~@2",
  AC: "[d3,a3,d4,f4,a4]@6 ~@4 [d3,a3,d4,f4,a4]@9 ~@5", AD: "[g3,b3,d4,g4,b4]@4 ~@5 [g3,b3,d4,g4,b4]@10 ~@5",
  AE: "[[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
  AF: "[g3,b3,d4,g4,b4]@6 ~@4 [b3,d4,g4,b4]@9 ~@5, ~@3 g3@3 ~@2", // G
  AG: "[c3,g3,c4,e4,g4]@4 ~@5 [c3,c4,g4] [c3,g3,c4,g4]@10 ~@4, ~@9 e4@10 ~@5", // C C5
  AH: "[c3,g3,c4,e4,g4]@2 ~@3 [c3,g3,c4,e4,g4]@5 ~@2", // C
  AI: "[[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
  AJ: "[d3,d4,f4,a4]@5 ~@4 [d3,d4,f4,a4]@10 ~@5", // Dm
  AK: "[[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
  AL: "[g3,d4,g4,b4]@3 ~@2 g3@4 ~@3, ~@9 [d4,g4,b4]@8 ~@7", // G
  AM: "[[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
  AN: "[c3,c4,e4,g4]@3 ~@2 [c3,c4,e4,g4]@5 ~@2", AO: "[d3,d4,f4,a4]@3 ~@2 [f4,a4]@4 ~@3, ~@9 d3@10 ~@5, ~@5 d4@6 ~",
  AP: "[g3,d4,g4,b4]@5 ~@4 [g3,d4,g4,b4]@9 ~@6", AQ: "[g3,d4,g4,b4]@5 ~@5 [g3,d4]@11 ~@3, ~@3 g4@3 ~@2, ~@10 b4@9 ~@5",
  AR: "[[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
  AS: "[[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
  AT: "[a2,a3,c4,e4]@3 ~@2 a3@3 ~@4, ~@9 [a2,e4]@8 ~@7, ~@3 c4@2 ~@3", // Am A5
  AU: "[d3,d4,f#4,a4]@3 ~@2 [d3,f#4,a4]@4 ~@3, ~@5 d4@5 ~@2", // D
  AV: "[[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
  AW: "[c3,c4,e4,g4]@7 ~@3 [c3,e4,g4]@10 ~@4, ~@5 c4@4 ~@3", // C
  AX: "[g3,d4,g4,b4]@7 ~@3 [g3,d4]@11 ~@3, ~@10 [g4,b4]@9 ~@5", // G G5 G
  AY: "[[d3,d4,f4,a4]@6 ~@3 [d3,f4,a4]@10 ~@4 [g3,d4,g4,b4]@7 ~@3 [g3,d4,g4,b4]@9 ~@6 c3@7 ~@2 [c3,c4,e4,g4]@9 ~@6, ~@9 d4@12 ~@26 [c4,e4,g4]@7 ~@18]/3", // Dm G C
  AZ: "[g3,d4,g4,b4]@6 ~@4 [g3,d4]@11 ~@3, ~@10 [g4,b4]@9 ~@5", // G G5 G
  BA: "[d3,d4,f4,a4]@6 ~@3 [d3,d4]@11 ~@4, ~@3 [f4,a4]@3 ~@2", BB: "[g3,d4,g4,b4]@7 ~@2 [g3,d4,g4,b4]@9 ~@6",
  BC: "[[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 R S@3 T@3 U V W X Y Z AA AB D AC AD AE AF AG AH AI AJ AK AL AM@2 AN AO
  AP AQ AR AS AT AU AV AW AX@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 ~ e2@6 f2@6 g2@4 ~@2 g2@6 a2@6 b2@5 c3@5 ~@2 c2@5 ~ 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@5 ~@4 g2@11 ~@3 c2@6 ~ d2@5 e2@6 f2@6 ~]/2",
  R: "d2@5 e2@6 f2@6 g2@5 ~@2", S: "[g2@5 a2@6 b2@5 c3@6 ~ g2@6 ~@4 g2@11 ~@3 d2@5 ~ e2@6 f2@6 g2@4 ~@3]/3",
  T: "[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", U: "~ c2@6 d2@5 e2@6 ~ f2@5",
  V: "~ a1@5 b1@6 c2@6 d2@4 ~@2", W: "d2@5 ~ e2@6 f2@6 g2@3 ~@3", X: "g2@3 ~@2 g2@5 ~@2", Y: "d2@5 e2@6 f2@6 g2@3 ~@4",
  Z: "g2@5 ~ a2@6 b2@5 c3@4 ~@3", AA: "c2@5 ~ d2@6 e2@6 f2@4 ~@2", AB: "g2@2 ~ g2@3 ~@2", AC: "d2@6 e2@6 f2@5 g2@4 ~@3",
  AD: "g2@5 ~ a2@6 b2@6 c3@4 ~@2", AE: "g2@5 ~@5 g2@10 ~@4", AF: "d2@2 e2@2 f2@2 g2 ~",
  AG: "~ e2@4 ~ f#2@4 ~@2 g#2@4 ~@2 a2@4 ~@2", AH: "a2@3 ~@3 b2@5 ~ c3@4 ~@2 d3@3 ~@3", AI: "a2@2 ~ a2@3 ~@2",
  AJ: "d2@5 ~ e2@5 f2@6 ~ g2@5 ~", AK: "e2@5 ~ f#2@4 ~@2 g#2@5 ~ a2@2 ~@4", AL: "a2@4 ~@2 b2@4 ~ c3@6 d3@4 ~@3",
  AM: "[a2@6 ~@4 a2@10 ~@3 d2@5 ~@2 e2@6 f2@5 g2@3 ~@4]/2", AN: "g2@5 ~ a2@5 ~ b2@6 c3@3 ~@3",
  AO: "c2@5 ~ d2@5 ~ e2@6 f2@3 ~@3", AP: "~ g2@5 ~@4 g2@11 ~@3", AQ: "d2@5 ~@2 e2@5 f2@6 g2@3 ~@3",
  AR: "g2@5 ~ a2@6 b2@6 c3@5 ~", AS: "~ c2@6 d2@5 e2@6 f2@5 ~", AT: "~@2 g2@5 ~@4 g2@12 ~",
  AU: "~ d2@5 ~ e2@5 f2@6 g2@3 ~@3", AV: "g2@5 ~ a2@5 b2@6 c3@3 ~@4", AW: "c2@2 d2@2 e2@2 f2 ~",
  AX: "[~ 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 F G H I J K L M J N D C F C O P J N H Q E J H Q C R O C@2 S T Q G C U V N W O C@3 D K X C D C P N O
  Y C N D C@3 O Y C@2 O Z C N O ~
>`.pickRestart({
  A: "~ x", B: "~ x ~@4 x ~@11 x ~@5", C: "x!4", D: "x ~@2 x ~@4", E: "x ~@5 x ~@6 x ~@5 x ~@4",
  F: "~ x ~@4 x ~@5 x ~@5 x ~@5", G: "x ~@6 x ~@4 x ~@5 x ~@5", H: "x ~@9 x ~@12 x", I: "~@6 x ~@5 x ~@6 x ~@4",
  J: "~ x ~@5 x ~@5 x ~@5 x ~@4", K: "x ~@6 x ~@5 x ~@5 x ~@4", L: "x ~@8 x ~@12 x ~", M: "~@5 x ~@6 x ~@5 x ~@5",
  N: "~ x ~@5 x ~@4 x ~@5 x ~@5", O: "x ~@4 x ~@6", P: "x ~@5 x ~@5 x ~@6 x ~@4", Q: "~ x!3",
  R: "~ x ~@5 x ~@4 x ~@6 x ~@4", S: "x ~@5 x ~@5 x ~@5 x ~@4 x", T: "~@9 x ~@13 x", U: "x ~@8 x ~@13 x",
  V: "~@6 x ~@6 x ~@5 x ~@4", W: "~ x ~@5 x ~@5 x ~@4 x ~@5", X: "~ x ~@4 x ~@5 x ~@6 x ~@4", Y: "x!2 ~ x",
  Z: "x ~@6 x ~@5 x ~@4 x ~@5",
})).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