Strudelify
Michelle cover art

Rubber Soul

Michelle

The Beatles

KeyF majorTempo120 bpm
0:00/0:00
// Michelle — The Beatles
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 93 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Jazz E. Gtr.
setcpm(120/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 · "Fretless E. Bass"
const bass = note(`<
  A B C D E F G H I J K L G H I J M@2 N O P Q A B C D K L G H I J M@2 N O P Q A B C D E F G H I J M@2 N O P Q A B C R E
  S G T U V W X@4 Y@18 Z@6
>`.pickRestart({
  A: "c3@3 e3", B: "f3@3 c3", C: "f2", D: "c3@3 ~", E: "f2@6 c3@5 a2", F: "bb2 f2", G: "eb2 bb2", H: "d2 b1",
  I: "c2 b1", J: "c2@2 d2 e2", K: "f2@6 c2@5 a1", L: "bb1 f2", M: "f2@3 c2 eb2@2", N: "ab2 gb2 f2 eb2",
  O: "db2 eb2 f2 db2", P: "c2 d2 e2 c2", Q: "f2 g2 ab2 bb2", R: "c3!2", S: "bb2@6 f2@5 d2", T: "d2@6 b1@2 b1 ~@3",
  U: "c2@6 b1@2 b1 ~@3", V: "c2@6 c2@2 c2 ~@3", W: "c3@18 ~ e3@5", X: "[~ f3@19 c3@6 ~ f2@25 c3@12 c3@12 f2@12 c2@8]/4",
  Y: "[~ a2 bb2@6 f2@6 eb2@6 bb2@6 d2@6 b1@6 c2@6 b1@6 c2@6 d2@3 e2@3 f2@6 c2@4]/6",
  Z: "[~ a2 bb2@6 f2@6 eb2@6 bb2@6 d2@6 b1@6 c2@6 b1@6 c2@6 d2@3 e2@3 ~@10]/6",
})).s("gm_fretless_bass").gain(0.54)

// chords · acoustic guitar nylon · "Nylon Gtr 1 Bank 32"
const acoustic_guitar_nylon = note(`<
  A@3 B ~@18 A@3 C ~@12 A@3 C D E F G H I J ~@5 A@3 K ~@6 L@5 M@5 N@18 O
>`.pickRestart({
  A: "[~@9 [f4,c5] bb4 ab4, f4 e4 eb4 d4 db4 [db4,f4], ~ [ab4,c5]@2 [ab4,c5]@2 [ab4,c5]@2 [ab4,c5]@2 ~@3]/3", // F5 Db Ab
  B: "[b3,gb4,b4] ~@17 c4@6, c4@2 c4 ~, [g4,c5]@3 [g4,c5]@5 [g4,c5]@4", // B5 C5
  C: "[g4,c5]@3 ~@3 [g4,c5]@3 [c4,g4,c5]@2 ~, c4@5 c4@4 ~@3, ~ [g4,c5] ~@2", D: "f3@3 ~@2 g3 a3@3 ~ bb3 c4, ~ f3@2",
  E: "~ ab3, db4", F: "g3@3 ~ g3 ~ bb3@3 eb3@3, ~@5 ab3@7", G: "f3@3 ~@2 g3 ~@3 d3@3, ~@4 f3@5 ~@3, ~ ab3",
  H: "e3@3 ~@2 f3, ~@3 d3@2 ~, ~@2 ab3", I: "e3@6 ~ c3 d3 e3 f3 g3", J: "ab3", K: "[c4,g4,c5]!4",
  L: "[~@57 [f4,c5]@6 ~ bb4@6 ab4@6 [b3,gb4,b4] ~@17 c4@6 f3@6 ~@4 g3@2 a3@6 ~@2, f4@12 e4@13 eb4@13 d4@13 db4@13 [db4,f4]@12 c4@12 c4@6 ~@14 f3@12, ~@6 [ab4,c5]@13 [ab4,c5]@12 [ab4,c5]@13 [ab4,c5]@13 ~@19 [g4,c5]@6 [g4,c5]@10 [g4,c5]@8 ~@20]/5", // F5 B5 Db Ab C5
  M: "[bb3 c4 ~@6 ab3@6 g3@3 ~ g3 ~ bb3@3 eb3@3 f3@3 ~@2 g3 ~@3 d3@3 e3@6 ~@4 f3@2 e3@6 ~ c3 d3 e3, ~@2 db4@12 ~@5 ab3@7 ~@4 f3@5 ~@9 d3@4 ~@12, ~@16 ab3@3 ~@4 ab3@2 ~@5]/5",
  N: "[f3 g3 f3@3 ~@2 g3 a3@3 ~ bb3 c4 ~@6 ab3@6 g3@3 ~ g3 ~ bb3@3 eb3@3 f3@3 ~@2 g3 ~@3 d3@3 e3@6 ~@4 f3@2 e3@6 ~ c3 d3 e3, ~@6 f3@8 db4@12 ~@5 ab3@7 ~@4 f3@5 ~@9 d3@4 ~@12, ~@22 ab3@3 ~@4 ab3@2 ~@5]/6",
  O: "f3 g3 ~@10",
})).s("gm_acoustic_guitar_nylon").gain(0.48).pan(0.3)

// chords · acoustic guitar nylon · "Nylon Gtr 2 Bank 32"
const acoustic_guitar_nylon_2 = note(`<
  ~@4 A B C D E F A G C H I J K@2 L M J K ~@4 A G C H I J K@2 L M J K ~@4 A G N O P J K@2 L M J K ~@4 Q R S T U V ~@4
  W@5 X@12 Y@8
>`.pickRestart({
  A: "[a3,c4,f4,c5]@3 [a3,c4,f4,c5]@2 [a3,c4,f4,c5] [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@2 ~", // F
  B: "[bb3,db4,f4,db5]@3 [bb3,db4,f4,db5]@2 [bb3,db4,f4,db5] [bb3,db4,ab4,bb4]@3 [bb3,db4,ab4,bb4]@2 ~", // Bbm Bbm7
  C: "[bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@2 [bb3,eb4,g4,c5] [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@2 ~", // Cm7
  D: "[ab3,d4,f4] [b3,f4,ab4] [d4,ab4,b4] [b3,f4,ab4]", // Ddim Fdim Abdim Fdim
  E: "[c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5] [b3,f4,ab4]@3 [b3,f4,ab4]@2 [b3,f4,ab4]", // C Fdim
  F: "[c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5]@7", // C
  G: "[ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@2 [ab3,db4,f4,db5] [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@2 ~", // Db
  H: "[ab3,d4,f4]@3 [ab3,d4,f4]@2 [ab3,d4,f4] [b3,f4,ab4]@3 [b3,f4,ab4]@2 ~", // Ddim Fdim
  I: "[c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5] [b3,f4,ab4]@3 [b3,f4,ab4]@2 ~", // C Fdim
  J: "[c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5]@4 [c3,g3,c4,e4,g4,c5]@2 ~", // C
  K: "[f3,c4,f4,ab4,c5]@3 [f3,c4,f4,ab4,c5]@2 [f3,c4,f4,ab4,c5]@4 [f3,c4,f4,ab4,c5]@2 ~", // Fm
  L: "[ab2,eb3,gb3,c4,gb4,ab4]@3 [ab2,eb3,gb3,c4,gb4,ab4]@2 [ab2,eb3,gb3,c4,gb4,ab4]@4 [ab2,eb3,gb3,c4,gb4,ab4]@2 ~", // Ab7
  M: "[db3,ab3,db4,f4,ab4,db5]@3 [db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]@4 [db3,ab3,db4,f4,ab4,db5]@2 ~", // Db
  N: "[eb3,bb3,eb4,g4,bb4]@3 [eb3,bb3,eb4,g4,bb4]@2 [eb3,bb3,eb4,g4,bb4] [eb3,bb3,eb4,g4,bb4]@3 [eb3,bb3,eb4,g4,bb4]@2 ~", // Eb
  O: "[ab3,d4,f4]@3 [ab3,d4,f4]@2 [ab3,d4,f4] [ab3,d4,f4]@3 [ab3,d4,f4]@2 ~", // Ddim
  P: "[c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5] [ab3,d4,f4,b4]@3 [ab3,d4,f4,b4]@2 ~", // C Abdim
  Q: "[a3,c4,f4,c5]!4", R: "[ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@2 [ab3,db4,f4,db5]@4 [ab3,db4,f4,db5]@2 ~",
  S: "[bb3,eb4,g4,c5]!4", T: "[ab3,d4,f4]!4", U: "[c3,g3,c4,e4,g4,c5]!2 [ab3,d4,f4,b4]!2",
  V: "[c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5] [c3,g3,c4,e4,g4,c5]@3", // C
  W: "[~@2 [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [ab3,d4,f4]@3 [b3,f4,ab4]@3 [d4,ab4,b4]@3 [b3,f4,ab4]@3 [c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5] [ab3,d4,f4,b4]@3 [ab3,d4,f4,b4]]/5", // F Db Cm7 Ddim Fdim Abdim Fdim C …
  X: "[~ [ab3,d4,f4,b4] [c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5]@4 [c3,g3,c4,e4,g4,c5]@2 ~ [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [ab3,d4,f4]@3 [b3,f4,ab4]@3 [d4,ab4,b4]@3 [b3,f4,ab4]@3 [c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5] [ab3,d4,f4,b4]@3 [ab3,d4,f4,b4]]/6", // Abdim C F Db Cm7 Ddim Fdim Abdim …
  Y: "[~ [ab3,d4,f4,b4] [c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5]@4 [c3,g3,c4,e4,g4,c5]@2 ~ [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [a3,c4,f4,c5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [ab3,db4,f4,db5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [bb3,eb4,g4,c5]@3 [ab3,d4,f4]@3 [b3,f4,ab4]@3 [d4,ab4,b4]@3 [b3,f4,ab4]@3 [c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5] [ab3,d4,f4,b4]@3 [ab3,d4,f4,b4]@2 [ab3,d4,f4,b4] [c3,g3,c4,e4,g4,c5]@3 [c3,g3,c4,e4,g4,c5]@2 [c3,g3,c4,e4,g4,c5]@4 [c3,g3,c4,e4,g4,c5]@2 ~@11]/8", // Abdim C F Db Cm7 Ddim Fdim Abdim …
})).s("gm_acoustic_guitar_nylon").gain(0.27).pan(0.4)

// other · flute · "Flute Lead"
const flute = note(`<
  ~@4 A B C D E@2 A B C D F G H I J K L@2 M@2 N O A B C D F G H P J K L@2 M@2 N O Q@2 R ~@2 S H P J K L@2 M@2 N O A B C
  D F T U@2 V@3 ~@24
>`.pickRestart({
  A: "c5!2", B: "~ db5 ab4@2", C: "g4 c5 g4!2", D: "f4 ab4 b4 ab4", E: "[g4@6 f4@3 ab4@2 g4@10 ~@3]/2",
  F: "g4@3 f4 g4 ab4", G: "g4@6 ~ c5", H: "f5 eb5 c5 f5 eb5 c5", I: "g5 f5@2 ~", J: "~@2 c5 db5@2 c5@3 db5@2 ab4@2",
  K: "ab4@3 ~", L: "[~@2 c5 c5@2 c5 f5@3 c5@2 bb4@3 ab4@4 ~@2 ab4 bb4@3]/2", M: "c5!4", N: "c5@2 bb4 ab4", O: "g4@3 ~",
  P: "g5@9 ab5 ~ g5 f5@6 ~@6", Q: "[~@2 bb4@3 eb5@3 f5@16]/2", R: "eb5@3 ~", S: "~@7 c5", T: "g4@6 ~@3 f4@2 g4",
  U: "[ab4@6 f4@6 bb4@6 ~ g4@4 ab4@8 g4@6 ~ f4@6 ~@4]/2", V: "[~ g4@2 ab4@13 g4@6 f4@6 e4@12 f4@6 g4@6 f4@18 ~@2]/3",
})).s("gm_flute").gain(0.44).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B C D E F G F G F G F G F G F G F G F G F G F G F G F G F H
>`.pickRestart({
  A: "x ~@2 x!2 ~", B: "x ~@5 x ~ x ~@2 x", C: "x ~@11 x ~@4 x ~@6", D: "~ x ~@12 x ~@3 x ~@5",
  E: "~ x ~ x ~@12 x ~@3 x ~@3", F: "~ x ~@2 x!2", G: "~ x!2 ~@5 x ~ x ~", H: "~ x ~@10",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct(`<
  ~@4
  [~ x ~ x]!60
  [~@6 x ~@12 x ~@4]
  [~@7 x ~@12 x ~@3]
  [~@9 x ~@12 x ~]
  [~@5 x ~@5 x]!25
  ~
>`).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@21 A ~@5 A ~@5 A ~@2 A@2 ~@7 A ~ A ~@5 A ~@9 B ~@11 B ~@12>".pickRestart({
  A: "x", B: "~ x ~@4",
})).gain(0.35)

// drums · ride
const ride = s("rd").struct(`<
  ~@4 A B@21 A B@5 A B@5 A B@2 A C B@7 A B A B@5 A B@5 D E F G H G@11 H G@11 ~
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~@3 x ~ x!2 ~@2 x ~@2", D: "x ~@5 x ~@5 x ~@6 x ~@4", E: "~ x ~@5 x ~@6 x ~@5 x ~@3",
  F: "~@3 x ~@5 x ~@6 x ~@5 x ~", G: "~@2 x ~@2 x ~@2 x ~@2 x", H: "~@5 x ~@2 x ~@2 x",
})).gain(0.35)

stack(bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, flute, kick, rim, crash, ride)

More by The Beatles