Strudelify
Tomorrow Never Knows cover art

Revolver

Tomorrow Never Knows

The Beatles

KeyD majorTempo100 bpm
0:00/0:00
// Tomorrow Never Knows — The Beatles
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · piano · "art1"
const piano = note(`<
  A@2 B C D E F G A@2 B C D E F G A H I J K L I J K L M N@3 A B C D E F G A H I J K L I J K L M N@3 A B C D E F G A O G
  P@2 Q R Q R Q R Q S@3
>`.pickRestart({
  A: "a4!8", B: "b4@3 a#4@5", C: "b4!8", D: "g4@3 b4@3 g4@2", E: "f#4!8", F: "c#5!8", G: "d5@3 c#5@5", H: "a#4 ~@3",
  I: "f#4 b4", J: "d5 g#4", K: "f#4", L: "g#4", M: "c5 c5@5 d5 e5", N: "[d5@2 d5 d5@2 d5@2 c#5@2 e5@15]/3", O: "c#5",
  P: "a4@3 a4", Q: "d5 g4!2 b4", R: "a4 a4@2 d5@2 ~ a4@2", S: "a4!2",
})).s("gm_piano").gain(0.36)

// other · piano · "art2"
const piano_2 = note(`<
  A@2 B A C D E F A@2 B A C D E F A G H I J@2 H I J@2 K L@3 A B A C D E F A G H I J@2 H I J@2 K L@3 A B A C D E F A M F
  N@2 O P O P O P O Q@3
>`.pickRestart({
  A: "f#4!8", B: "e4@5 ~ e4@10", C: "~@3 g4@3 ~@2", D: "d4!8", E: "a4!8", F: "g4@3 g4@5", G: "f4", H: "d4 f#4",
  I: "g#4 ~", J: "d4", K: "g4 g4@5 g4 ~", L: "[g4@2 g4 f#4@2 g4@2 a4@2 a4@15]/3", M: "a4", N: "f#4@3 f#4",
  O: "g4 d4!2 g4", P: "f#4 f#4@2 a4@2 ~ f#4@2", Q: "f#4!2",
})).s("gm_piano").gain(0.36)

// other · brass section · "brass01"
const brass_section = note(`<
  ~ A B C D E F G C A B C D E F G C H A I A I A I A I J K@2 L M B N O P F G C H A I A I A I A I Q R S T M U@2 D V F G C
  W X C Y Z AA Z AA Z AA Z C AB@2
>`.pickRestart({
  A: "f#5", B: "f#5!7 e5", C: "e5 d5@7", D: "b4!2 d5!2 g5!2 b4!2", E: "b4 a4@7", F: "f#5@14 f#5!2",
  G: "f#5 e5!3 e5@3 f#5", H: "f#5 e5 c#5 a#4 f#4 g#4 a#4 c#5", I: "e5@3 d5@5", J: "g4 c5 g5 g5@2 g5 g5@2",
  K: "[d5!3 d5@2 d5@2 c#5@2 e5 a5 a5@2 a5 a5@2]/2", L: "e5@2 a5 a5@2 a5 a5@2", M: "f#5@2 g5 a5@2 g5 f#5@2",
  N: "e5 d5 e5 f#5@2 e5 d5@2", O: "d5@3 d5 g5!2 b4!2", P: "b4 a4 b4 c5@2 b4 f#5@2", Q: "g4 c5 c6 c6@2 c6 c6@2",
  R: "d5!2 d6 d6@2 d6 d6@2", S: "c#5 e5 e6 e6@2 e6 e6@2", T: "e5@2 e6 e6@2 e6 e6@2",
  U: "[b5@4 a#5@3 e5@2 d5 e5 f#5@2 e5 d5@2]/2", V: "b4 a5 b5 c#6@2 b5 a5@2", W: "f#5@12 f#5@2 f#5!2",
  X: "f#5@2 e5@3 e5 e5@8 f#5@2", Y: "~@3 f#5@2 e5 d5@2", Z: "g5 b4 a#4 f5", AA: "e5 d5@2 f#5@2 e5 d5@2", AB: "d5",
})).s("gm_brass_section").gain(0.36)

// bass · piano · "piano1"
const bass = note(`<
  ~ A B C D A E F G A B C D A E F H I J K J K J K L M N O P Q A B C D A E R H I J K J K J K L M N O P Q A B C D A E F H
  S R T U V W V W V W V X@3
>`.pickRestart({
  A: "d2@3 d2@5", B: "c#2@3 f#2@5", C: "b1@3 b1@2 c#2 d2@2", D: "e2@3 e2@5", E: "f#2@3 f#2@4 f2",
  F: "e2@3 a1@2 b1 c2@2", G: "d2@3 d2@3 a2@2", H: "d2@3 d2@3 d2@2", I: "f#2!8", J: "b1@3 b1@4 b1", K: "e2@3 e2@4 e2",
  L: "b1@3 b1@3 b1@2", M: "e2@3 e2@2 e2 d2 b1", N: "c2@3 c2@3 c3@2", O: "b2@3 b2@3 b2@2", P: "a2@3 a2@3 a2@2",
  Q: "a2@3 g2@2 f#2 e2@2", R: "e2@3 a1@2 b1 c#2@2", S: "f#2@3 f#2@3 f#2@2", T: "d2@3 d2@3 d3 c#3", U: "c3@3 c3@3 c3@2",
  V: "b2@6 a#2@2 a2@2 g2@4 f2 e2", W: "d2@2 d2@2 e2 f#2 g2 a2", X: "[d3@2 d3 c3 d3 d3@2 d3@3 d3 c3 d3 d3@2 d3@9]/3",
})).s("gm_piano").gain(0.36)

// other · piano · "piano1"
const piano_3 = note(`<
  ~@18 A B A B ~@2 A C D ~ E F G H I J K L M ~@2 A B A B A B A B N O P Q R S T U V ~@9 W ~ W ~ W X@3
>`.pickRestart({
  A: "b5", B: "g#5@3 e5@5", C: "a5@3 e5@5", D: "~@2 c6 c6@2 c6 c6@2", E: "a4 c#5 c#6 c#6@2 c#6 c#6@2",
  F: "~@2 c#6 c#6@2 c#6 c#6@2", G: "~ a5 b5 d6@2 b5 a5@2", H: "c#6@3 ~@5", I: "~ b5 c#6 d6@2 c#6 b5@2", J: "b5@3 ~@5",
  K: "~ d5 e5 f#5@2 e5 a5@2", L: "a5!2", M: "g5@4 a5@2 b5 c#6", N: "~@2 e6 e6@2 e6 e6@2", O: "~@2 g6 g6@2 g6 g6@2",
  P: "a4 c#5 a6 a6@2 a6 a6@2", Q: "c#5@2 a6 a6@2 a6 a6@2", R: "~ c#6 d6 e6@2 d6 c#6@2", S: "c#6!2",
  T: "b5@2 c6 d6@2 c6 b5@2", U: "e6", V: "d6@2 e6 f#6@2 e6 d6@2", W: "~@3 d5", X: "d2!2",
})).s("gm_piano").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~ A@8 B@8 C B@45 D E D E D E D E D E>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~ x ~@2", C: "x ~@5 x!3 ~ x ~@5", D: "x ~@5 x!3 ~@5 x!2", E: "x ~@2 x ~ x ~ x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@9 [~@3 x]!8 [~@4 x ~@7 x!3 ~] [~ x ~ x]!12 [~@3 x]!7 [~ x ~ x]!35 ~>").gain(0.5)

// drums · clap
const clap = s("cp").struct("<~ [~ x ~@2]!17 x [~ x ~ x]!53 [~ x ~@2]>").gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!8 [x!8]!9 [~@2 x!6] [x!8]!43 [x!4] [x!8]!10>").gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@17 [~@4 x ~ x!3 ~@5 x!2] ~@55>").gain(0.5)

stack(piano, piano_2, brass_section, bass, piano_3, kick, snare, clap, hihat, high_tom)

More by The Beatles