Strudelify

Across the Universe

The Beatles

KeyD majorTempo80 bpm
0:00/0:00
// Across the Universe — The Beatles
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 7, 4/4 at bar 8, 2/4 at bar 11, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 54 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~@10 A B C D E F G H I J K L M N O P Q R S T U V W@3 X Y W@2 Z AA U AB AC AD AE AF AG AH@5 AI
>`.pickRestart({
  A: "~@6 f#2 a3", B: "d4 f#4 a4 d5 f#5 a5 d4 a4", C: "d5 f#5 a5 d6 f#6 a5 a3 e4",
  D: "a4@2 c#5@2 e5@2 c#5@2 e5@2 c#5@2 a3 [b3,c#4] [e4,a4] [b4,c#5]", // Bsus2 A5 Bsus2
  E: "[a4,e5] [b4,c#5] [e5,a5] [b5,c#6] e6@8 a4@2 c#5@2", F: "e5 c#5 a4 c#5 e5 c#5 g5 g4", G: "b4 d5 g5 g4 b4 d5 d4 a4",
  H: "d5 f#5 a5 d6 f#6@2 a4 c#5", I: "g4 a4 c#5 e5 a5 c#6 a4 c#5", J: "a4 c#5 e5 a5 c#6@2 g3 d4",
  K: "g4 b4 d5 g5 b5@2 d4 f#4", L: "d4 f#4 a4 d5 f#5@2 d4 a4", M: "d5 f#5 f#4 b4 d5 f#5 f#4 a4",
  N: "c#5 f#5 f#4 a4 c#5 f#5 e4 b4", O: "d5 e5 g5 b5 d5 e5 a5 e5", P: "e5 c#5 e5 a5 c#5 e5 d4 a4",
  Q: "d5 f#5 a5 a4 d5 f#5 a4 c#5", R: "f#5 a5 f#5 a4 c#5 f#5 g4 b4", S: "e5 g5!2 b4 e5 b5 a3 e4",
  T: "a4 c#5 e5 a5 c#5 e5 a5 c#6", U: "d3 a3 d4 f#4 a4 d5 f#5 d5", V: "d4 f#4 a4 d5 f#5 a5 d5 f#5",
  W: "a3 e4 a4 c#5 e5 a4 c#5 e4", X: "g3 d4 g4 b4 d5 g5 b5@2", Y: "d4 a4 d5 f#5 a5 f#5 d5 a4",
  Z: "g3 d4 g4 b4 d5 g5 b5 g5", AA: "f#5 a5 d5 f#5 a4 d5 f#4 a4", AB: "f#3 c#4 f#4 a4 c#5 f#5 a5 f#5",
  AC: "e4 b4 e5 g5 a#3 d4 g4 a#4", AD: "d5 g5 a#4 d5 d4 a4 d5 f#5", AE: "f#4 b4 d5 f#5 f#4 c#5 f#5 a5",
  AF: "c#5 f#5 a4 c#5 g4 b4 e5 g5", AG: "b4 e5 g4 b4 d4 a4 d5 f#5", AH: "a5 d5 f#5 a5 d4 a4 d5 f#5",
  AI: "a5 d5 f#5 a5 ~@4",
})).s("gm_orchestral_harp").gain(0.3)

// chords · acoustic guitar nylon · "Accu Guita"
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE@2 AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV@5 AW
>`.pickRestart({
  A: "[a3,d4] d3 [f#4,d5] d3 [e4,c#5] [d4,b4] [c#4,a4] f#4", // D5 D C#m G F#m
  B: "[c#3,f#3,a3,c#4] [c#3,f#3,b3,c#4] [c#3,f#3,a3,c#4] [c#3,f#3,b3,c#4] [c#3,f#3,a3,c#4] [c#3,f#3,b3,c#4] [c#3,f#3,a3,c#4] [c#3,f#3,b3,c#4]", // F#m F#sus4 F#m F#sus4 F#m F#sus4 F#m F#sus4
  C: "[a2,e3,a3,c#4] [a2,e3,b3,c#4] [a2,e3,a3,c#4] [a2,e3,b3,c#4] [a2,e3,a3,c#4] [a2,e3,b3,c#4] [a2,e3,a3,c#4] [a2,e3,b3,c#4]", // A
  D: "[d3,f#3] [a3,d4,f#4] [f#3,a3] [d3,a3,d4,f#4] [b2,f#3] [b3,d4,f#4] [f#3,b3,d4] [b2,b3,d4,f#4]", // D F#m D B5 Bm
  E: "[c#3,f#3] [a3,c#4] [f#3,a3] [c#3,a3,c#4] [c#3,f#3] [a3,c#4] [f#3,a3] [a3,c#4]", // F#5 A F#m F#5 A F#m A
  F: "[e3,b3] [e4,g4,a4] e3 [b3,e4,g4,a4] [g3,b3] [e4,g4] [e3,b3] [e4,g4,a4]", // E5 A7 Em G Em E5 A7
  G: "[a2,e3] [a3,c#4,e4] [a2,e3] [a3,c#4,e4,f#4] [a2,e3,a3,c#4] [a2,e3,b3,c#4] [a2,e3,a3,c#4] [a2,e3,b3,c#4]", // A5 A A5 F#m7 A
  H: "[a2,e3,a3,c#4] [a2,e3,b3,c#4] d3 [a3,d4,f#4] [d3,a3] [d4,f#4] b2 [b3,d4]", // A D D5 D Bm
  I: "[f#3,b3] [b2,b3,d4] [a2,f#3] [a3,c#4] f#3 [c#3,f#3,a3,c#4] [e3,g3] [b3,e4]", // B5 Bm D A F#m Em E5
  J: "[e3,b3] [b3,c#4] g2 [g3,b3] d3 [g3,b3] [g2,d3] [g3,a#3]", // E5 Bsus2 G G5 Gm
  K: "[g3,a#3,d4]!4 [g2,a#2]@2 [d3,g3]@2 [a#2,g3]@2 [d3,g3,a#3]@2 d3@2 [f#3,a3,d4]@2", // Gm G5 D# Gm D
  L: "[f#3,a3] [d3,f#3,a3,d4] [d3,a3] [f#3,a3,d4] d3 [f#3,a3,d4] [d3,f#3] [a3,d4]", // F#m D D5 D D5
  M: "[f#3,a3] [d3,a3,d4] d3 [a3,d4] [f#3,a3] [d3,a3,d4] [a2,c#3] [a3,e4,f#4]", // F#m D5 F#m D5 A F#m7
  N: "[c#3,a3,c#4] [a2,a3,e4,f#4] [a2,e3] [a3,c#4] [a2,e3] [a3,e4,f#4] a2 [a3,c#4,e4]", // F#m F#m7 A5 A A5 F#m7 A
  O: "[a2,e3] [a3,e4,f#4] [c#3,g3,a3] [e4,f#4] [a2,e3] [c#4,f#4] a2 [a3,c#4]", // A5 F#m7 A7 Esus2 A5 F#5 A
  P: "f#3 [a3,e4,f#4] a2 [e3,a3,c#4] e3 [a3,c#4,f#4] g2 [b3,d4]", // F#m7 A F#m Bm
  Q: "[g2,d3] [g3,b3] d3 [g3,b3] [g2,d3] [b3,d4,g4] d3 [a3,d4]", // G5 G G5 G D5
  R: "[d3,f#3] [a3,d4,f#4] d3 [a3,c#4] d3 [a3,d4,f#4] a2 [a3,c#4,e4]", // D A D A
  S: "e3 [a3,c#4,e4] [a2,e3] [a3,c#4] a2 [a3,c#4,e4] [e3,a3,c#4] [c#3,a3,e4]", // A A5 A
  T: "a2 [a3,c#4,e4] [a2,e3] [a3,c#4] a2 [e3,a3,c#4,e4] g2 [g3,b3,d4]", // A A5 A G
  U: "d3 [g3,b3,d4] g2 [g3,b3,d4] d3 [f#3,a3,d4] d3 [a3,d4]", // G D D5
  V: "[d3,f#3] [a3,d4,f#4] d3 [f#3,a3,d4] d3 [a3,d4,f#4] a2 [f#3,a3]", // D F#m
  W: "d3 [f#3,a3,d4] b2 [f#3,b3,d4] d3 [f#3,b3,d4] f#2 [f#3,a3,c#4]", // D Bm F#m
  X: "c#3 [f#3,a3,c#4] f#2 [f#3,a3] [f#2,c#3] [f#3,a3,c#4] [e3,b3] [g3,b3,e4]", // F#m F#5 F#m E5 Em
  Y: "e2 [e3,g3,b3] g2 [e3,b3,e4] e2 [e3,g3,b3,e4] a2 [a3,c#4,f#4]", // Em E5 Em F#m
  Z: "[e3,a3,c#4] [a3,e4,f#4] a2 [e3,a3,c#4] a3 [a2,c#4,e4,f#4] d3 [a3,d4]", // A F#m7 A F#m7 D5
  AA: "[f#3,a3] [d3,a3,d4,f#4] b2 [f#3,b3] d3 [b2,b3,d4] f#2 [a3,c#4]", // F#m D B5 Bm A
  AB: "c#3 [f#3,a3,f#4] f#2 [a3,c#4] f#3 [f#2,a3,c#4,f#4] [e2,b2] [g3,b3,e4]", // F#m A F#m E5 Em
  AC: "b2 [b3,e4,f#4] [e2,e3] [b3,f#4] b2 [g3,b3,e4] a2 [a3,c#4]", // Bsus4 E B5 Em A
  AD: "e3 [c#4,e4,f#4] [a2,e3] [a3,c#4] e3 [a3,c#4,e4,f#4] a3 [c#4,f#4]", // F#7 A5 A F#m7 F#5
  AE: "[d3,a3] [d4,f#4,a4] [d3,f#3] [d4,a4] [d3,a3] [d4,f#4,a4] [d3,a3] [d4,a4]", // D5 D D5 D D5
  AF: "a2 [a3,c#4,e4] [a2,e3] [c#4,e4,f#4] [a2,e3] [a3,c#4] [a2,e3] [c#4,e4,f#4]", // A A5 F#7 A5 A A5 F#7
  AG: "[a2,e3] [a3,c#4,e4] [a2,e3] [c#4,e4,f#4] [a2,e3] [a3,c#4,e4] [a2,e3] [c#4,e4,f#4]", // A5 A A5 F#7 A5 A A5 F#7
  AH: "[e3,a3] [c#4,e4] [e3,a3] [a3,c#4,e4,f#4] [a2,e3] [a3,c#4] [a2,e3] [a3,f#4]", // A5 C#m A5 F#m7 A5 A A5 D
  AI: "[g2,d3] [b3,d4] [g2,b2] [g3,b3,d4] [g2,d3] [g3,b3,d4] g2 [g3,b3,d4,g4]", // G5 Bm G G5 G
  AJ: "d3 [a3,d4,f#4] d3 [a3,d4,f#4] d3 [a3,d4,f#4,a4] d3 [a3,d4,f#4,a4]", // D
  AK: "a2 [a3,c#4,e4] a2 [a3,e4,f#4] a2 [a3,c#4,e4] a2 [c#4,e4,f#4]", // A F#m7 A F#7
  AL: "e3 [a3,c#4,e4] a2 [a3,e4,f#4] e3 [a3,e4,f#4] a2 [a3,e4,f#4]", // A F#m7
  AM: "g2 [b3,d4,g4] d3 [b3,d4,g4] g2 [b3,d4,g4] d3 [b3,d4,g4]", // G
  AN: "d3 [a3,d4,f#4] a2 [a3,d4,f#4] d3 [a3,d4,f#4] a2 [a3,d4,f#4]", // D
  AO: "[d3,f#3] [a3,d4] [d3,f#3] [d4,f#4,a4] [d3,f#3] [a3,d4] [d3,f#3] [a3,d4,a4]", // D D5 D D5 D D5
  AP: "f#2 [f#3,a3,c#4] c#3 [f#3,a3,c#4] f#2 [f#3,a3,c#4] e3 [g3,b3,e4]", // F#m Em
  AQ: "b3 [g3,e4] e3 [g3,b3,e4] g2 [a#3,d4] d3 [g3,a#3,d4]", // C Em A# Gm
  AR: "g2 [g3,a#3,d4] d3 [g3,a#3,d4] d3 [f#3,a3,d4] a2 [f#3,a3,d4]", // Gm D
  AS: "b2 [b3,d4,f#4] d3 [b3,d4,f#4] f#2 [a3,c#4] c#3 [f#3,a3,c#4]", // Bm A F#m
  AT: "f#2 [f#3,a3,c#4] c#3 [f#3,a3,c#4] e2 [g3,b3,e4] b2 [g3,e4,f#4]", // F#m Em C
  AU: "e2 [b3,e4,f#4] b2 [b3,f#4] d3 [d4,f#4] a3 [d4,f#4]", AV: "d3 [d4,f#4] a3 [d4,f#4] d3 [d4,f#4] a3 [d4,f#4]",
  AW: "d3 [d4,f#4] a3 [d4,f#4] ~@4", // D
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// chords · synth strings 1 · "Syn String"
const synth_strings_1 = note("<~@10 A@5 B@8 C@5 D E F@2 G H@2 I J H@2 I J K L M@4 N@7>".pickRestart({
  A: "[~@12 [a3,d4,f#4]@29 ~@3 [a3,c#4,e4]@15 ~ [a3,c#4,e4]@20]/5", // D A
  B: "[~@12 [b3,d4,g4]@13 ~@3 [a3,d4,f#4]@13 ~@3 [a3,c#4,e4]@29 ~@3 [b3,d4,g4]@13 ~@3 [a3,f#4]@16 d4@12 ~@4 c#4@4, ~@92 d4@15 ~@21]/8", // G D A G D
  C: "[~@3 c#4 f#4 c#4 b3@4 g3 b3 e4 b3 ~@4 a4 b4 c#5 e5 f#5@3 d5@3 f#5 d5 c#5@4 a4 c#5 f#5 c#5 g4 b4, ~@7 a3@4 ~@9]/5",
  D: "e5 g5!2 b4 e5 b5 a3 e4", E: "a4 c#5 e5 a5 c#5 e5 a5 c#6", F: "[a3,d4,f#4]/2", G: "[a3,c#4,e4]",
  H: "[a3,c#4,e4]/2", I: "[b3,d4,g4]", J: "[a3,d4,f#4]", K: "[d2,d3]", L: "[c#2,c#3]",
  M: "[[e2,b2,g3,b3,e4] [g2,d3,a#3,d4,g4]@2 d4@2 c#4@2 b3]/4", N: "[~ [a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,d4,f#4]@4 ~]/7",
})).s("gm_synth_strings_1").gain(0.3)

// other · pad poly · "Polysynth"
const pad_poly = note(`<
  ~@3 A B C@2 D E F G H@3 I J K@2 I L M N@2 O P Q R S T U V@2 W X@2 Y ~ Z@2 AA@2 AB AC AD AE AF AG AH@7
>`.pickRestart({
  A: "d4!4 c#4 b3 a3 b3", B: "a3@2 b3@2 a3@2 b3@2 a3 b3@2 a3 ~@2 b3@2",
  C: "[g3 a3@2 g3@3 a3@2 g3@2 a3@2 g3 a3@2 a3@3 b3@2 a3@2 b3@2 a3 b3@2 c#4@5]/2", D: "~@2 d4!4 c#4 b3",
  E: "a3 b3 a3 b3 a3 b3 a3 b3", F: "a3@3 b3 g3@2 a3@2 g3@2 a3@2 g3@2 f#3@2", G: "e3 d3 ~@4 a3 f#3",
  H: "[a3@2 d4@4 c#4@4 e4@2 d4@6 d4@10 a3@8 ~@8 e4 ~ e4 ~]/3", I: "e4 ~ e4 ~ d4@4 e4@2 g3@6", J: "~@12 d4 ~ d4 ~",
  K: "[d4 ~ d4 ~ c#4@4 d4@2 f#3@8 ~@10 e4@2 e4 ~]/2", L: "~@12 d4@2 d4 ~", M: "d4 ~ d4@2 c#4@4 d4@2 f#3@6",
  N: "[~@12 d4 d4@2 d4@2 d4@3 c#4@2 b3@2 a3@2 b3@2 a3@2 b3@2]/2", O: "a3 b3 a3 b3 a3 b3 g3 a3",
  P: "g3@2 a3@2 g3 a3 ~ g3 ~@2 a3@2 a3@2 b3@2", Q: "a3 b3@2 b3 c#4@4 ~@4 d4@2 d4@2",
  R: "d4@2 d4@2 c#4@2 b3 a3@2 b3@2 a3@3 b3@2", S: "a3@2 b3@2 a3 b3@2 a3 ~@2 b3@2 g3@2 a3@2",
  T: "g3 a3 g3 a3 g3 a3!2 b3", U: "a3@2 b3@2 a3 b3@2 b3 c#4@4 ~@4",
  V: "[a3@2 f#3@2 a3@2 d4@4 ~ e4@4 d4@8 ~ d4@8, ~@5 c#4 ~@10]/2", W: "a3 ~", X: "[e4!4 d4@2 e4 g3@4 ~@5]/2",
  Y: "d4!4 c#4@2 d4 g3", Z: "[e4@2 e4@2 e4@2 e4@2 d4@4 e4@2 g3@9 ~@9]/2",
  AA: "[d4@2 d4@2 d4@2 d4@2 c#4@4 d4@2 f#3@9 ~@9]/2", AB: "d4@2 d4@2 d4@2 d4@2 c#4@2 b3 a3@3 b3@2",
  AC: "a3@2 b3@2 a3@2 b3@2 a3 b3@2 a3@4 b3", AD: "g3 a3 g3 a3 g3 f#3 e3 d3", AE: "~@4 d4!4",
  AF: "c#4 b3 a3 b3 a3 b3 a3 b3", AG: "a3 b3 a3 b3 g3 a3 g3 a3",
  AH: "[g3 a3 ~ g3 ~@2 a3@2 a3@2 f#3@2 a3@2 d4@4 c#4@4 e4@2 d4@6 d4@10 a3@2 f#3@2 a3@2 d4@4 c#4@4 ~ d4@7 ~ d4@7 ~@2 a3@2 f#3@2 a3@2 d4@4 c#4@4 e4@2 d4@5 ~ d4@7 ~@11, ~@27 e4 ~@28]/7",
})).s("gm_pad_poly").gain(0.31)

// bass · electric bass pick · "Pic Bass"
const bass = note("<~@21 A B C D E B C D F G@2 F@3 H G F@2 H G@2 I J K L M N G O P ~@3>".pickRestart({
  A: "~@12 d2 ~ d2 ~", B: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ f#2 ~ f#2 ~",
  C: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ e2 ~ e2 ~", D: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ a1 ~ a1 ~",
  E: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ d2 ~ d2 ~", F: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  G: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", H: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  I: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~", J: "e2 ~ e2 ~ e2 ~ e2 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  K: "g1 ~ g1 ~ g1 ~ g1 ~ d2 ~ d2 ~ d2 ~ d2 ~", L: "d2 ~ d2 ~ d2 ~ d2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~",
  M: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ e2 ~ e2 ~ e2 ~ e2 ~", N: "e2 ~ e2 ~ e2 ~ e2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  O: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ f#2 ~ g2 ~", P: "a2 ~ b2 ~ c#3 ~ d3 ~ d2 ~@7",
})).s("gm_electric_bass_pick").gain(0.17)

// bass · electric bass pick · "Pic Bass" · soft notes
const bass_soft = note(`<
  ~@50
  [~@10 d2 ~ f#2 ~ g2 ~]
  [a2 ~ b2 ~ c#3 ~ d3 ~ d2 ~ d2 ~ f#2 ~ g2 ~]!2
  [a2 ~ b2 ~ c#3 ~ d3 ~@9]
>`).s("gm_electric_bass_pick").gain(0.06)

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

// drums · ride
const ride = s("rd").struct("<~@14 A B C D E D B F ~@11 G B H I@2 E@2 J ~@13>".pickRestart({
  A: "~@4 x ~ x ~ x ~ x!3 ~ x ~", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", C: "x ~ x ~ x ~ x!3 ~ x!3 ~ x!2",
  D: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", E: "x!8", F: "x ~ x!3 ~ x ~ x ~ x ~@5", G: "~@8 x ~ x ~ x ~ x!2",
  H: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x!2", I: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", J: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~",
})).gain(0.2)

stack(orchestral_harp, acoustic_guitar_nylon, synth_strings_1, pad_poly, bass, bass_soft, kick, ride)

More by The Beatles