Strudelify
Nowhere Man cover art

Rubber Soul

Nowhere Man

The Beatles

KeyE majorTempo122 bpm
0:00/0:00
// Nowhere Man — The Beatles
// 122 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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.

// bass · fretless bass
const bass = note(`<
  ~@4 A@4 B@8 C D C D C E@2 F G@8 B@8 C D C D C E@2 F B@8 C D C D C E@2 F H@6 I J K@2 L M N@2 O P@5 ~
>`.pickRestart({
  A: "[a2!2 g#2!2 f#2 e2 c#2 a2@2 a2 g#2!2 f#2 e2 c#2 e2@2 e2 g#2!2 a2 a#2 b2 e2@2 e2 g#2!2 a2 a#2 b2@2]/4",
  B: "[e2!2 g#2!2 a2 a#2 b2 b1@2 b1 d#2!2 f#2!2 g#2 a2@2 a2 g#2!2 f#2 e2 c#2 e2@2 e2 g#2!2 b2 c#3 b2 a2@2 a2 g#2!2 f#2 e2 c#2 a2@2 a2 g#2!2 f#2 e2 c#2 e2@2 e2 g#2!2 a2 a#2 b2 e2@3 e2@2 e2!2 e2@2]/8",
  C: "g#2!2 d#2!2 g#2 g#2@2 d#2", D: "a2!2 e2!2 a2 a2@2 d#2", E: "a1 c#2 f#2 e2@3 c#2 e2",
  F: "b1 d#2 g#2 f#2@2 b1 b1@2",
  G: "[e2!2 g#2!2 a2 a#2 b2 b1@2 b1 d#2!2 f#2 d#2 g#2 a2@2 a2 g#2!2 f#2 e2 c#2 e2@2 e2 g#2!2 b2 g#2 e2 a2@2 a2 g#2!2 f#2 e2 c#2 a2@2 a2 g#2!2 f#2 e2 c#2 e2@2 e2 g#2!2 b2 g#2 b2 e2@2 e2 e2@2 e2 e2@2 e2]/8",
  H: "[e2!2 g#2!2 a2 a#2 b2 b1@2 b1 d#2!2 f#2!2 g#2 a2@2 a2 g#2!2 f#2 e2 c#2 e2@2 e2 g#2!2 a2 a#2 b2 a2@2 a2 g#2!2 f#2 e2 c#2 a2@2 a2 g#2!2 f#2 e2 c#2 e2]/6",
  I: "e2@2 e2 g#2 b2@2 g#2 b2", J: "e2@2 e2@2 e2 e2@2 e2", K: "a2 ~ g#2@2 f#2 e2 c#2@2", L: "e2 ~ e2@2 e2 e2@3",
  M: "e2!8", N: "a2@2 g#2@2 f#2 e2 c#2@2", O: "e2@2 e2!2 g#2 b2 g#2@2", P: "[e2@15 ~]/5",
})).s("gm_fretless_bass").gain(0.49).pan(0.6)

// other · rock organ · "Organ 3"
const rock_organ = note(`<
  A B C D E F G ~ H B I D J@2 K L@2 M@2 N@2 O P ~@9 Q B I D E R K L@2 M@2 N@2 O P ~ H B I D J@2 K L@2 M@2 N@2 O P ~ A B
  C D E F G ~ E F G ~ E F S ~@6
>`.pickRestart({
  A: "b4!2 e5@2", B: "d#5 c#5@2 b4@3 ~@2", C: "a4 a4@2 c#5@3 c#5@2", D: "b4 a4@2 g#4@3 ~@2", E: "f#4 f#4@2 a4@3 a4@2",
  F: "g#4 f#4@3 e4@3 f#4", G: "f#4@3 e4 e4@2 ~@2", H: "b4 b4@2 e5@3 e5@2", I: "a4!2 c#5!2",
  J: "[f#4 f#4@2 a4@3 a4 g#4@2 f#4@2 e4@3 f#4@2]/2", K: "f#4 e4 ~@2", L: "[~@4 g#4 b4@2 b4@5 ~ c#5@3]/2",
  M: "[e4 f#4 ~@2 g#4 b4@2 b4@4 b4@2 c#5@3]/2", N: "[e4 f#4 ~@2 g#4 b4@2 b4@7 ~ b4]/2", O: "e5@2 d#5 c#5 b4@3 b4",
  P: "c#5 b4@2 g#4 b4@4", Q: "b4 b4@3 e5@2 e5@2", R: "g#4 f#4@2 e4@3 f#4@2", S: "f#4 e4 e4@2 ~@4",
})).s("gm_rock_organ").gain(0.8).pan(0.4)

// chords · electric guitar muted · "Muted Gtr"
const electric_guitar_muted = note(`<
  ~@7 A@3 ~@4 A@3 ~@7 B@2 C@3 D E@4 ~@4 A@3 ~@5 F G H ~@5 A@3 ~@5 F G H ~@6 I@4 J@3 K@6 ~
>`.pickRestart({
  A: "[~ b2@2, b3@2 ~, ~@3 a3@16 ~@5, ~@5 g#3@16 ~@3, ~@7 e3@16 ~]/3",
  B: "[~ e4 ~@4 b3@6 ~@10 f#4@10, [e3,g#3] [f#3,a3], ~ b3@5 ~@6 b3@20, ~@2 e4@14 ~ d#4@15, ~@9 e4@7]/2", // E F#m
  C: "[~ c#4 ~@4 a3@6 ~@21 a3 ~@4 f#3@10, e3 [b2,e3] c#3, a3@3 ~@3 a3@3 a3@7 ~ a3@7, ~ e4@15 ~@6 b3@26, ~@2 c#4@14 ~ g#3@15 f#3@6 ~@10]/3", // E5
  D: "~ a3 ~@4 c3@10, [a2,e3], ~ a3@7", // A5
  E: "[c3@2 b2@10 b2 ~@7 e6@32 ~@12, ~@13 a#2@32 ~@19, ~@7 a2@16 ~@9, ~ e2@2 ~]/4", F: "~@3 b2!5", G: "b2!8", H: "b2",
  I: "[~@3 b3, b3 f#3@2 ~, ~@3 a3@13 a3@16, ~@5 g#3@16 ~@11, ~@7 e3@16 ~@9]/4",
  J: "[~@2 a3, b3 f#3@2, ~@3 a3@13 ~@8, ~@5 g#3@16 ~@3, ~@7 e3@16 ~]/3",
  K: "[~ b2@5, b3 ~@2, ~@3 a3@16 ~@29, ~@5 g#3@16 ~@27, ~@7 e3@16 ~@25]/6",
})).s("gm_electric_guitar_muted").gain(0.7).pan(1)

// other · flute · "Flute 2"
const flute = note(`<
  A B C D E F G ~ H I J D K@2 L ~@17 M I J D E N L ~@9 H I J D K@2 L ~@9 A B C D E F G ~ E F G ~ O P Q ~@6
>`.pickRestart({
  A: "b4!4", B: "b4 f#4@3 f#4@2 ~@2", C: "e4 e4@2 a4@3 a4@2", D: "g#4 f#4@2 e4@3 ~@2", E: "f#4 f#4@2 a4@3 a4@2",
  F: "g#4 f#4@3 e4@3 f#4", G: "f#4@3 e4 e4@2 ~@2", H: "b4 b4@2 b4@3 b4@2", I: "b4 f#4@2 f#4@3 ~@2", J: "e4!2 a4!2",
  K: "[f#4 f#4@2 a4@3 a4 g#4@2 f#4@2 e4@3 f#4@2]/2", L: "f#4 e4 ~@2", M: "b4 b4@3 b4@2 b4@2", N: "g#4 f#4@2 e4@3 f#4@2",
  O: "c#5 c#5@2 c#5@3 c#5@2", P: "c5 c5@2 c5@3 c5@2", Q: "c5 b4 b4@2 ~@4",
})).s("gm_flute").gain(0.4).pan(0.8)

// chords · acoustic guitar nylon · "Rythm Gtr"
const acoustic_guitar_nylon = note(`<
  ~@3 A@2 B C@2 D E F G H I J@2 K L K L K H@2 M D E N G O P Q@2 D E F G H I J@2 K L K L K H@2 R D E F G H I J@2 K L K L
  K H@2 R D E F S@2 B T@2 U V W@2 H I X Y@5 ~
>`.pickRestart({
  A: "[~@7 [f#3,a3,c#4,f#4]@3 [f#3,a3,c#4,f#4]@2 [a3,c#4,f#4]!2 [f#3,a3,c#4,f#4]@2, ~@6 f#3 ~]/2", // F#m
  B: "[a3,c4,e4,a4]@2 [a3,c4,e4,a4]@2 [c4,e4,a4]!2 [a3,c4,e4,a4]@2, ~@2 a3 ~", // Am
  C: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]", // E
  D: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [b3,e4,g#4]!2 [g#3,b3,e4,g#4]@2, ~@2 g#3 ~", // E
  E: "[b3,d#4,f#4]@2 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4] [f#3,b3,d#4,f#4] ~, f#3@3 f#3@3 ~@2", // B
  F: "~ [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2", // A
  G: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]!2 ~", // E
  H: "[f#3,a3,c#4,f#4]!3 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]!3", I: "[a3,c4,e4,a4]!3 [a3,c4,e4,a4]@2 [a3,c4,e4,a4]!3",
  J: "[g#3,b3,e4,g#4]!3 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]!3", // E
  K: "[g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]!2 [g#3,b3,d#4,g#4]@2", // G#m
  L: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]!2 ~", // A
  M: "~ [f#3,a3,d#4,f#4] [f#3,a3,d#4,f#4]@2 [f#3,a3,d#4,f#4]!3 ~", // D#dim
  N: "~ [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]", // A
  O: "~ [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]", // F#m
  P: "~ [a3,c4,e4,a4]@2 [a3,c4,e4,a4]@2 [a3,c4,e4,a4]@2 [a3,c4,e4,a4]", // Am
  Q: "[[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]!3 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]]/2", // E
  R: "~ [f#3,a3,d#4,f#4]@2 [f#3,a3,d#4,f#4]!4 ~", // D#dim
  S: "[[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]!2 [f#3,a3,c#4,f#4]@3 [f#3,a3,c#4,f#4]@2 [a3,c#4,f#4]!2 [f#3,a3,c#4,f#4]@2, ~@6 f#3 ~]/2", // E F#m
  T: "[g#3,b3,e4,g#4]@3 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]!3", // E
  U: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]!3", // F#m
  V: "[a3,c4,e4,a4]@2 [a3,c4,e4,a4] [a3,c4,e4,a4]@2 [a3,c4,e4,a4]!3", // Am
  W: "[[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]!3]/2", // E
  X: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]!2 [g#3,b3,e4,g#4]@2", Y: "[g#3,b3,e4,g#4]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.2)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@4 B A@2 C A@3 ~ B C A@2 C A@2 D B C A C A@3 ~ B C A@5 ~ B C E A C A@2 D B A@2 C A@3 ~ B C A C A@3 D B A@2 C A@3
  ~ B A@3 B A@2 ~@6
>`.pickRestart({
  A: "x!8", B: "~ x!7", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x!4 ~@4", E: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@47 [~@8 x!3 ~ x!3 ~] ~@37>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@2 A ~@5>".pickRestart({
  A: "x",
})).gain(0.4)

stack(bass, rock_organ, electric_guitar_muted, flute, acoustic_guitar_nylon, kick, snare, hihat, mid_tom, crash)

More by The Beatles