Strudelify

Within You Without You

The Beatles

KeyC majorTempo132 bpm
0:00/0:00
// Within You Without You — The Beatles
// 132 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 150 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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 · sitar
const sitar = note(`<
  ~@6 A B@2 ~@62 C D ~@2 E@2 ~@2 F G H I J K@2 L M ~@2 N@2 ~@2 O P Q R J S@2 T U V W X Y Z@2 ~@41
>`.pickRestart({
  A: "~@11 a#3!2 c4!2 e4", B: "[e4 f4!2 g4!2 ~ a#4!2 c5!2 e5!2 f5!2 g5@12 ~@6]/2", C: "~@7 e4", D: "f4 g4@2 a#4 ~@4",
  E: "[~@5 e5@2 a#4@2 g4 ~@6]/2", F: "~@3 e4 f4 g4@2 e4", G: "~@5 e4 f4 g4", H: "a4 g4 ~@5 a4",
  I: "a#4!2 c5@2 g4 a#4 c5@2", J: "d#5 f5 d#5 f5@2 f5!2 d#5", K: "[g4 a#4 c5 d#5 c5 f4 g4 a#4@4 f5 d#5 c5 a#4 g4]/2",
  L: "f4 e4@4 ~@2 f5", M: "d#5 c5 a#4 g4 ~@4", N: "[~@5 c5 a#4 d#5@2 d#5 ~@6]/2", O: "~@3 e4 f4 g4 a#4 e4",
  P: "~@5 e4 f4 a4", Q: "g4 f4 e4@2 ~@3 c5", R: "a#4 c5@2 c5 g4 a#4 c5@2",
  S: "[g4 a#4 c5 d#5 c5 f4 g4 a#4@3 ~ f5 d#5 c5 a#4 g4]/2", T: "f4 e4 e4@2 e4@2 ~ e4", U: "e4 e4@2 ~@5",
  V: "~@8 g3!2 a#3!2 c4!2 e4!2", W: "f4!2 g4!2 a#4!2 c5!2 [g3,e5]!2 [a#3,f5]!2 [c4,g5]!2 e4!2",
  X: "f4!2 g4!2 [a#4,c5]!2 c5!2 ~@8", Y: "~ c5 a#4@2 a#4@2 c5@6 e4@2 f4@2", Z: "[g4 a#4 c5@5 c5@5 ~@4]/2",
})).s("gm_sitar").gain(0.48)

// other · violin
const violin = note(`<
  A@3 B C D E@6 F G@2 H I J F G@2 H I J F K L M N O P Q@8 R@8 S T U@2 V@3 W X@2 Y Z AA AB@3 AC AD AE AF AG@3 AH@2 AI AJ
  AK AL AM AN AO AP AQ AR AS AT AU AV AW AI AJ AK AL AX AY AO AP AZ AR BA AT BB@2 BC BD BE@3 ~@4 BF BG@2 BH@4 BG@2 BH@4
  BI@2 BJ@2 BK@2 BL@3 BM@3 BN Y Z AA AB@3 AC AD AE AF BO@4
>`.pickRestart({
  A: "[~@6 c4@17 e4@2 f4@2 g4@2 a#4@2 c5@6 a#4@2 c5@6 ~ a#4@2]/3", B: "c5@3 a#4@5", C: "~ g4@2 a#4@2 g4@2 f4@6 ~ e4@2",
  D: "f4@6 e4@2 f4 e4 f4@4 e4@2", E: "[~ c4@2 c4@93]/6", F: "e4 f4 g4@2", G: "[a#4@5 a#4 a4@2]/2", H: "e4 g4",
  I: "d4 g4", J: "f4 e4", K: "e4", L: "e4 f4 a4 g4", M: "a4", N: "e4 f4 g4 a#4", O: "c5@2 c5 g4", P: "c5 a#4 g4 f4",
  Q: "[~ e4 f4@3 e4 f4@6 g4@2 e4@8 e4@4 e4@2 f4@2 g4@4 a#4@10 a#4@2 a4@4 e4@4 g4@4 d4@4 g4@2]/8",
  R: "[~ f4@2 e4@2 e4 f4 g4@2 a#4@5 a#4 a4@2 e4@2 g4@2 d4@2 g4@2 f4@2 e4@2 e4 f4 g4]/8", S: "~ e4 f4 g4",
  T: "a#4 e4 f4 g4", U: "[a#4 c5@4 g4 a#4 c5]/2", V: "[d#5@2 f5@3 d#5 f5@3 d#5 f5@8 f5 d#5 c5 a#4@2 g4]/3",
  W: "a#4@2 g4 a#4@2 g4 f4@2", X: "[f4@3 f4@2 f4 a4 a#4]/2", Y: "a4 c5 a4 a#4", Z: "a4 f4 a4 g4", AA: "e4 g4 f4 d4",
  AB: "[g4 f4 e4@8 f4 a4]/3", AC: "a#4 a4 c5 a4", AD: "a#4 a4 f4 a4", AE: "g4 e4 a#4 a4", AF: "f4 a4 g4 e4",
  AG: "[g4@2 f4@2 e4@2 d4@8 c4@5 c4@5]/3", AH: "[c4@10 e4 f4 g4 a#4 ~@2]/2", AI: "~@4 a4 a#4 a4@2",
  AJ: "e4 g4 a4 g4@2 d4 g4 a4", AK: "g4@2 f4!2 g4 f4@2 e4", AL: "e4 f4 g4 a#4 ~@4", AM: "~@2 a4 a#4 a4@2 e4 g4",
  AN: "a4 g4@2 d4 g4 a4 g4@2", AO: "f4!2 g4 f4@2 e4!2 f4", AP: "g4@2 e4 ~@5", AQ: "e4 f4 a4@3 ~@3",
  AR: "~@2 e4 f4 g4@2 a#4 c5", AS: "a#4!2 c5@2 g4 a#4 c5@2", AT: "d#5 f5 d#5 f5@2 f5!2 d#5",
  AU: "g4 a#4 c5 d#5 c5 f4 g4 a#4", AV: "a#4 g4 f4 f5 d#5 c5 a#4 g4", AW: "f4 e4!2 f4 g4 a#4 ~@2",
  AX: "~@2 g4 a#4 a4@2 e4 g4", AY: "a4 g4@2 e4 g4 a4 g4@2", AZ: "e4 f4 g4@2 e4 ~@3", BA: "a#4 c5@2 c5 g4 a#4 c5@2",
  BB: "[g4 a#4 c5 d#5 c5 f4 g4 a#4@2 g4 f4 f5 d#5 c5 a#4 g4]/2", BC: "f4 e4!2 f4 e4@2 c4 e4",
  BD: "f4 e4@2 c4 e4 f4 e4@2", BE: "[c4@6 a#3 a#3@5 c4@28 ~@8]/3", BF: "~@3 e4", BG: "[f4 g4@2 a#4@5]/2",
  BH: "[a#4 a4@2 e4@2 g4@2 d4@2 g4@2 f4@2 e4@2 e4]/4", BI: "[f4 g4@2 e4@2 e4@2 e4]/2", BJ: "[f4 a4 g4 a4@4 e4]/2",
  BK: "[f4 a4 a#4 c5@4 [g4,f5]]/2", BL: "[[a#4,f5]@2 [c5,d#5]@2 c5 a#4 c5@3 a#4 c5@3 a#4 c5@8 f5 d#5]/3",
  BM: "[c5@2 a#4@4 g4@2 a#4@4 g4@2 a#4@4 ~ e4 f4@16 f5@2 d#5@2 c5@2 a#4@2 g4@2 f4@2, ~@9 g4 ~@14]/3",
  BN: "d#4 f4 f4@2 a4@2 a#4@2", BO: "[g4@4 f4@4 e4@4 d4@12 c4 a#3@3 a#3@8 c4@16 ~@12]/4",
})).s("gm_violin").gain(0.4)

// other · tremolo strings · "strings"
const tremolo_strings = note(`<
  ~@33 A B C@4 D@2 C@4 E@2 F@2 G H@4 I@2 J@6 K@5 L@2 ~@9 M N O P Q R N S T U V W X Y Z AA AB AC AD AE AF AG@2 AH ~@3 AI
  AJ@2 ~@3 AK@5 AL@6 AM@2 AN@2 AO@2 AP AQ@3 AR@3 J@6 K@5 L@2 ~@2
>`.pickRestart({
  A: "c4 a#3 g3 f3", B: "e3@2 ~@4 [c3,c4] [d3,d4]", C: "[[e3,e4] [f3,f4] [g3,g4]@28 [a3,a4]@2]/4",
  D: "[[g3,g4]@2 [f3,f4]@2 [g3,g4]@2 [c3,e4]@8 [c3,c4] [d3,d4]]/2", E: "[[g3,g4] [f3,f4] [g3,g4] [c3,e4]@4 ~]/2",
  F: "[~ [c3,e4] [d3,f4] [g3,g4]@2 [c3,e4] [d3,f4] [g3,g4]]/2", G: "[a#3,a#4] [c3,e4] [d3,f4] [g3,g4]",
  H: "[[a#3,a#4]@2 [c4,c5]@24 f4 d#4 c4 a#3@2 g3]/4", I: "[a#3@2 g3 a#3@3 f3@8 ~@2]/2",
  J: "[~@19 c6 a#5 g5 [c3,a#5] [c3,g5], ~ c3@21 ~@2]/6", // C7 C5
  K: "[[c3,f5] [c3,e5] [c3,f5]@11 e5 a#5 a5 f5 a5 g5 [c3,e5], ~@14 c3@3 c3@2 ~]/5", // F5 C F5 C
  L: "[[c3,g5] [c3,f5] [c3,e5] [c3,d5]@4 ~]/2", M: "~@6 c6 ~", N: "c6!2 ~ c6 ~ c6!2 ~", O: "c6 ~ c6!2 ~ c6 ~ c6",
  P: "c6 ~ c6 ~ c6!2 ~ c6", Q: "~ c6!2 ~ c6 ~ c6!2", R: "~ c6 ~ c6!2 ~ c6 ~", S: "a#3 g3 f3 f4 d#4 c4 a#3 g3",
  T: "f3 e3 [e3,e4] [f3,f4] [g3,g4] [a#3,a#4] ~@2", U: "~@4 [a3,a4] [a#3,a#4] [a3,a4]@2",
  V: "[e3,e4] [g3,g4] [a3,a4] [g3,g4]@2 [d3,d4] [g3,g4] [a3,a4]", W: "[g3,g4]@2 [f3,f4]!2 [g3,g4] [f3,f4]@2 [e3,e4]",
  X: "[e3,e4] [f3,f4] [g3,g4] [a#3,a#4] ~@4", Y: "~@2 [g3,g4] [a#3,a#4] [a3,a4]@2 [e3,e4] [g3,g4]",
  Z: "[a3,a4] [g3,g4]@2 [e3,e4] [g3,g4] [a3,a4] [g3,g4]@2", AA: "[f3,f4]!2 [g3,g4] [f3,f4]@2 [e3,e4]!2 [f3,f4]",
  AB: "[g3,g4]@2 [e3,e4] ~@5", AC: "[e3,e4] [f3,f4] [g3,g4]@2 [e3,e4] ~@3",
  AD: "~@2 [e3,e4] [f3,f4] [g3,g4]@2 [a#3,a#4] [c4,c5]", AE: "[a#3,a#4] [c4,c5]@2 [c4,c5] [g3,g4] [a#3,a#4] [c4,c5]@2",
  AF: "[d#4,d#5] [f4,f5] [d#4,d#5] [f4,f5]@2 [f4,f5]!2 [d#4,d#5]", // D# F D# F D#
  AG: "[[g3,g4] [a#3,a#4] [c4,c5] [d#4,d#5] [c4,c5] [f3,f4] [g3,g4] [a#3,a#4]@2 [g3,g4] [f3,f4] [f4,f5] [d#4,d#5] [c4,c5] [a#3,a#4] [g3,g4]]/2", // G A# C D# C F G A# …
  AH: "[f3,f4] [e3,e4] ~@6", AI: "~@9 c4 a#3 g3 a#3 g3 f3 e3", AJ: "[c3 e3 f3 e3 c3 a#2 g2 a#2 c3@16 ~@8]/2",
  AK: "[~@2 [c3,c4] [d3,d4] [e3,e4] [f3,f4] [g3,g4]@28 [a3,a4]@2 [g3,g4]@2 [f3,f4]@2]/5", // C D E F G A G F
  AL: "[[g3,g4]@2 [c3,e4]@8 [c3,c4] [d3,d4] [e3,e4] [f3,f4] [g3,g4]@28 [a3,a4]@2 [g3,g4]@2 [f3,f4]@2]/6", // G C D E F G A G …
  AM: "[[g3,g4] [c3,e4]@4 ~@2 [e3,e4]]/2", AN: "[[f3,f4] [g3,g4]@2 [e3,e4]@2 ~@2 [e3,e4]]/2",
  AO: "[[f3,f4]@2 [a3,a4] [g3,g4] [a3,a4]@6 ~@6]/2", AP: "~@3 [g3,g4]",
  AQ: "[[a#3,a#4]@2 [c4,c5]@2 [d#4,d#5]@2 [f4,f5]@3 [d#4,d#5] [f4,f5]@3 [d#4,d#5] [f4,f5]@8 [f4,f5] [d#4,d#5]]/3", // A# C D# F D# F D# F …
  AR: "[[c4,c5] [a#3,a#4]@2 [g3,g4] [a#3,a#4]@2 [g3,g4] [a#3,a#4]@2 [g3,g4] [f3,f4]@8 ~@6]/3", // C A# G A# G A# G F
})).s("gm_tremolo_strings").gain(0.48)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@7 A B C D E F@18 G H I H F J@11 K L K M N M@2 O ~ A P Q@3 G R S F@3 G T ~@39 U V W O X Q@27 G R S F@3 Y Z ~@3
>`.pickRestart({
  A: "~@12 x ~ x!2", B: "x!3 ~ x ~@2 x!3 ~ x!3 ~ x", C: "~ x ~ x ~ x ~ x!2 ~ x ~ x!3 ~",
  D: "x ~ x ~ x ~ x ~ x!3 ~@2 x!3", E: "~ x ~ x ~ x ~ x ~ x!3 ~ x!2 ~", F: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2", G: "x!8",
  H: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", I: "x ~ x ~ x!3 ~ x ~ x!3 ~ x ~", J: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!2",
  K: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3", L: "x ~@3 x ~@3 x ~@3 x ~ x!2", M: "x!4", N: "x!3 ~ x ~ x ~ x ~@3 x ~@3", O: "x",
  P: "x!3 ~ x ~ x!3 ~ x!3 ~ x ~", Q: "x ~ x ~ x ~ x!3 ~ x!3 ~ x ~", R: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~",
  S: "x!3 ~ x ~ x!3 ~ x!3 ~ x!2", T: "x ~ x ~ x ~ x ~ x!3 ~@5", U: "~@7 x", V: "~@3 x ~@4", W: "~@3 x",
  X: "~@4 x ~ x!3 ~ x!3 ~ x ~", Y: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", Z: "x!9 ~@7",
})).gain(0.75)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@11 A B ~@2 B ~@2 B ~@2 B ~@2 B ~@2 B ~@9 C ~@2 C ~@2 C ~@2 C ~ C ~@8 D ~@5 B ~@50 D ~@2 D ~@2 D ~@2 D ~@2 D ~@2 D
  ~@2 D ~@2 D@2 ~@5 B ~@7
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@7 x ~@8", C: "~@11 x ~@4", D: "~@3 x ~@12",
})).gain(0.75)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@8 A B C D E@18 ~@4 F G@11 H F H ~@7 I@4 ~@2 E@4 ~@45 I@28 ~@2 E@4 ~@5
>`.pickRestart({
  A: "~@4 x ~@4 x ~@6", B: "~@5 x ~@4 x ~@5", C: "~@3 x ~ x ~@2", D: "~@7 x ~@3 x ~@4", E: "~@2 x!2", F: "~@3 x",
  G: "x ~@2 x", H: "x", I: "~ x!2 ~",
})).gain(0.92)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@7 A B C D E F@18 G H I F J K@14 L M K L ~@2 A B N@3 M O F@4 G P ~ Q R S T L Q R S T L Q R S T L Q R S T L Q R S T L
  Q R S T L Q R S B ~@8 B N@27 M O F@4 U V ~@3
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x ~@3 x ~@10", D: "~ x ~ x ~@4", E: "~@3 x ~@3 x ~@8", F: "~ x!2 ~", G: "~ x ~ x",
  H: "x ~ x ~ x ~@2 x", I: "~ x ~@2 x ~@3", J: "~@10 x!3 ~@3", K: "~@2 x!2", L: "~ x", M: "x ~ x!2", N: "x!2 ~@2",
  O: "x ~ x ~@2 x ~ x", P: "x!3 ~", Q: "~ x ~@4 x ~", R: "~@3 x ~@4", S: "x ~@4 x ~@2", T: "~@2 x ~@4 x",
  U: "~@4 x ~@8 x ~@2", V: "x ~@4 x ~@2 x ~@7",
})).gain(0.92)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~@7 A B A C D E F@2 E F@2 E F@2 E F@2 E F@2 E F@3 G H I J K@2 L K@2 L K@2 L K@2 L E L M K E M F ~ A N@2 G@2 ~ O P E
  F@3 ~ G Q R S T U Q R S T U Q R S T U Q R S T U Q R S T U Q R S T U Q R S T ~@4 V W X K G@3 N G@2 N G@2 N G@2 N G@2 N
  G@2 N G@2 N G@2 N@2 G@2 ~ O P E F@2 Y K ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@2 x ~@10 x ~@2", C: "~@15 x", D: "~@5 x ~@10", E: "x ~@2 x ~@4", F: "x", G: "~@3 x",
  H: "x ~ x!2 ~@2 x ~", I: "x ~@11 x!3 ~", J: "~@4 x!3 ~@9", K: "~ x ~@2", L: "~@2 x ~@2 x ~@2", M: "x ~@2 x ~@2 x ~",
  N: "~ x ~@4 x ~", O: "~@2 x!2", P: "x!2 ~@6", Q: "x ~@4 x ~@2", R: "x ~ x ~@4 x", S: "~ x!2 ~", T: "~ x ~@2 x ~ x ~",
  U: "~@3 x ~@2 x ~", V: "~ x", W: "x ~ x!2", X: "x ~ x ~ x ~@2 x", Y: "x ~@2 x",
})).gain(0.92)

// drums · ht
const ht = s("ht").struct(`<
  ~@68 A B C D E F B C D E F B C D E F B C D E F B C D E F B C D E F B C D E ~@5 G H I ~@39
>`.pickRestart({
  A: "~@7 x", B: "~@2 x ~ x ~@2 x", C: "~ x ~@2 x ~ x ~", D: "~ x ~ x ~@2 x ~", E: "x ~@2 x ~ x ~@2",
  F: "x ~ x ~@2 x ~ x", G: "~@2 x!2", H: "x ~ x ~ x ~@2 x", I: "~ x ~@2",
})).gain(0.29)

// drums · mt
const mt = s("mt").struct(`<
  ~@68 A B C D E F B C D E F B C D E F B C D E F B C D E F B C D E F B C D E ~@4 G H ~@41
>`.pickRestart({
  A: "~@3 x", B: "x ~@2 x ~ x ~@2", C: "x ~ x ~@2 x ~ x", D: "~@2 x ~ x ~@2 x", E: "~ x ~@2 x ~ x ~",
  F: "~ x ~ x ~@2 x ~", G: "~ x", H: "x",
})).gain(0.29)

stack(sitar, violin, tremolo_strings, bongos, bongos_2, congas, congas_2, congas_3, ht, mt)

More by The Beatles