Strudelify

I'm Looking Through You

The Beatles

KeyA♭ majorTempo150 bpm
0:00/0:00
// I'm Looking Through You — The Beatles
// 150 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: track names are the Roland MT-32 patch names at their program numbers ("Bass #1" on 64, "Guitar" on 62), so with no bank select the whole file is read through the MT-32 patch table: ch 2 "El Piano" Elec Piano 1 -> epiano1; ch 2 "El Piano" Syn Brass 1 -> synth brass 1; ch 2 "El Piano" Square Wave -> lead 1 square; ch 2 "El Piano" Harpsi 1 -> harpsichord; ch 3 "Bass #1" Acou Bass 1 -> acoustic bass; ch 4 "Guitar" Elec Gtr 2 -> overdriven guitar
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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.

// chords · piano · "El Piano"
const piano = note("<~@53 A B C D@2 B E@3 F G H I@2 J ~@32>".pickRestart({
  A: "ab3 c4 db4 f4", B: "~ db4 ~ db4, ab4 f4", C: "~@2 ab4 f4@3 ~ eb4, ~ c4 ~ c4",
  D: "[eb4 ~@3 g3@4 f3@2 g3@4 ab3@6 c4@4 db4@4 f4@4]/2",
  E: "[~@4 [c4,ab4]@4 f4@4 c4@2 ~@6 g3@4 f3@2 g3@4 f3@6 [f4,ab4]@2 [f4,ab4] ~@5 [f4,ab4] ~@3, ~@7 eb4@5 ~@12]/3", // Fm
  F: "[eb4,g4]@4 [db4,f4]@3 [c4,eb4]", G: "[c4,eb4] ~@7 [ab3,db4]@8", H: "[g3,bb3]@5 ~@3",
  I: "[~@2 c4@2 db4 f4@2 ~@3 db4@2 ~@2 db4@2, ~@7 ab4@5 f4@4]/2",
  J: "~@4 b4@2 b4 ~@3 bb4@2 [db4,f4,ab4]@2 ab4 ~, ~ f4 ~@2", // Db
})).s("gm_piano").gain(0.4)

// chords · epiano1 · "El Piano"
const epiano1 = note("<A B C D E F G@2 H@2 I@2 J@2 K L M N O P Q@2 R@4 S@4 T@6 U@4 ~@60>".pickRestart({
  A: "[eb4,c5]@4 [eb4,c5] ~@11", B: "[eb4,c5]@4 [eb4,c5] ~@3 [eb4,c5] ~ c5 ~ eb4@2 bb4@2, ~@12 c5 ~@3",
  C: "bb4 ~ bb4 ~ [eb4,bb4] ~@3 [eb4,bb4] ~@7, eb4 ~@3", D: "[eb4,c5]@4 [eb4,c5] ~@3 [eb4,c5] ~ c5 ~ [eb4,c5] ~ bb4@2",
  E: "[eb4,bb4] ~ bb4 ~ [eb4,bb4] ~@3 [eb4,bb4] ~@3 f4@2 ab4@2, ~@3 db4", // Eb5
  F: "c4@4 eb4@4 f4@2 f4 ~ f4 ~ eb4@2, ab4 ~@7 [db4,ab4]@8", // Db5
  G: "[eb4,ab4] ~@3 eb4 ~@3 f4@2 f4 ~ f4 ~ eb4@2, c4 db4, ~@8 ab4 ~@7", // Ab5
  H: "[[eb4,ab4] ~@3 c4 ~@3 db4@2 f4@4 ~@6 db4@4 ~@4 db4@4, c4@2 ~@5 ab4@5 f4@4]/2", // Ab5
  I: "[~@4 [c4,ab4]@4 f4@4 c4@2 ~@6 [g3,bb3]@4 [g3,bb3,eb4] ~ eb4 ~ [g3,bb3]@2 eb4 ~, ~@14 eb4@10 ~@4 eb4 ~@3]/2", // Fm Gm Eb Gm
  J: "[[ab3,c4]@4 c4 ~@3 db4@2 f4@4 ~@6 db4@4 ~@4 db4@4, eb4 ~@13 ab4@10 f4@8]/2", K: "~@2 [c4,ab4]@2 f4@2 c4 eb4",
  L: "eb4 ~@3 [g3,bb3]@4 [g3,bb3,eb4] ~ eb4 ~ [g3,bb3]@2 eb4 ~, ~@12 eb4 ~@3", // Gm Eb Gm
  M: "~@4 [c4,f4,ab4]@2 [c4,f4,ab4] ~@5 [c4,f4,ab4] ~@3", N: "[bb3,eb4,g4]@4 [db4,f4]@3 [c4,eb4], ~@8 bb3 ~@7",
  O: "[c4,eb4] ~@7 [ab3,db4]@8", P: "[g3,bb3]@5 ~@3", Q: "[~@2 c4@2 db4 f4@2 ~@3 db4@2 ~@2 db4@2, ~@7 ab4@5 f4@4]/2",
  R: "[~@4 b4@2 b4 ~@3 bb4@2 [db4,f4,ab4]@2 [c4,eb4]@50, ~@4 f4@4 ~@6 ab4 ~@49]/4", // Db Cm
  S: "[[c4,ab4]@4 ~@4 db4@2 f4@4 ~@6 db4@4 ~@4 db4@4 ~@4 ab4@4 f4@4 ~@8 [g3,bb3]@4 [g3,bb3] ~ eb4@2 [g3,bb3,eb4]@2 eb4@2, eb4@23 eb4@5 eb4 ~@3, ~ c4@8 c4@2 c4@5, ~@7 ab4@5 f4@4 ~@16]/4", // Fm Gm Eb
  T: "[[ab3,c4]@4 ~@4 db4@2 f4@4 ~@6 db4@4 ~@4 db4@4 ~@4 ab4@4 f4@4 ~@2 eb4@2 ~@4 [g3,bb3]@4 [g3,bb3] ~ eb4@2 [g3,bb3,eb4]@2 ~@6 [c4,f4,ab4]@2 [f4,ab4] ~@5 [f4,ab4] ~@3 [bb3,g4]@8 [db4,f4]@6 [c4,eb4]@2, eb4@23 ~ eb4@4 eb4 ~@2 eb4@9 eb4@7 ~, ~@2 c4@16 c4@4 c4@12 ~ c4@3 c4@9 ~, ~@14 ab4@10 f4@8 ~@56 bb3 ~@7]/6", // Ab Gm Eb Fm Eb Db Cm
  U: "[~@4 [ab3,db4]@4 [g3,bb3]@5 ~@7 db4 f4@2 ~@3 db4@2 ~@2 db4@2, c4@20 ~@3 ab4@5 f4@4]/4", // Db5 Gm
})).s("gm_epiano1").gain(0.4)

// other · synth brass 1 · "El Piano" · Ab5
const synth_brass_1 = note(`<
  ~@23
  [~@4 eb4 ~@3 gb4 f4 ~ eb4 b3@2 c4@2]
  [[eb4,ab4]@4 [eb4,ab4] ~@3 gb4 f4 ~ eb4 b3@2 c4@2]!2
  ~@42
  [~@4 eb4 ~@3 gb4 f4 ~ eb4 b3@2 c4@2]
  [[eb4,ab4]@4 [eb4,ab4] ~@3 gb4 f4 ~ eb4 b3@2 c4@2]!3
  ~@28
>`).s("gm_synth_brass_1").gain(0.4)

// other · lead 1 square · "El Piano"
const lead_1_square = note("<~@40 A@2 B@2 C ~@55>".pickRestart({
  A: "[~@4 b4@2 b4 ~@3 bb4@2 [db4,f4,ab4]@2 [c4,eb4]@6 eb4 ~@3 gb4 f4 ~ eb4 b3@2 c4@2, ~@4 f4@4 ~@6 ab4 ~@17]/2", // Db Cm
  B: "[eb4,ab4]@4 [eb4,ab4] ~@3 gb4 f4 ~ eb4 b3@2 c4@2", C: "[eb4,ab4]@4 eb4 ~ eb4 ~ gb4 f4 ~ eb4 b3@2 c4@2",
})).s("gm_lead_1_square").gain(0.4)

// other · synth strings 1 · "El Piano"
const synth_strings_1 = note("<~@45 A@3 B C@2 D E ~@47>".pickRestart({
  A: "[~@4 f3@4 eb4@4 db4@2 c4@6 bb3@2 ab3@6 f3@2 eb3@6 ab3@2 ab3 ~@3 c4@2 ~@4, f4@2 ~ f3 ~ f3 ~@6]/3",
  B: "ab3@4 ab3 ~@3 f3@2 eb3@6", C: "[~@4 f3@4 eb4@4 db4@2 c4@6 [f3,bb3]@4 ab3@2 ab3 ~ f3@4, f4@2 ~ f3 ~@4]/2",
  D: "eb3@2 ab3@4 ab3 ~@5 c4@4, ~@12 ab3 ~@3", E: "c4 ~ eb4@2 eb4 ~ g3 ~@5 g3 ~@3, g3@3 ~@5",
})).s("gm_synth_strings_1").gain(0.4)

// chords · harpsichord · "El Piano"
const harpsichord = note("<~@72 A@3 B C@2 D E F G H I@2 G J@3 K L M N@2 O@3 P Q R>".pickRestart({
  A: "[~@4 f3@4 eb4@4 db4@2 c4@6 bb3@2 ab3@6 f3@2 eb3@6 ab3@2 ab3 ~@3 c4@2 ~@4, f4@2 ~ f3 ~ f3 ~@6]/3",
  B: "ab3@4 ab3 ~@3 f3@2 eb3@6", C: "[~@4 f3@4 eb4@4 db4@2 c4@6 [f3,bb3]@4 ab3@2 ab3 ~ f3@4, f4@2 ~ f3 ~@4]/2",
  D: "eb3@2 ab3@4 ab3 ~@5 c4@4, ~@12 ab3 ~@3", E: "c4 ~ eb4@2 eb4 ~ g3 ~@5 g3 ~@3, g3@3 ~@5", F: "ab3 c4 db4 f4",
  G: "~ db4 ~ db4, ab4 f4", H: "~@2 ab4 f4@3 ~ eb4, ~ c4 ~ c4", I: "[eb4 ~@3 g3@4 f3@2 g3@4 ab3@6 c4@4 db4@4 f4@4]/2",
  J: "[~@4 [c4,ab4]@4 f4@4 c4@2 ~@6 g3@4 f3@2 g3@4 f3@6 [f4,ab4]@2 [f4,ab4] ~@5 [f4,ab4] ~@3, ~@7 eb4@5 ~@12]/3", // Fm
  K: "[eb4,g4]@4 [db4,f4]@3 [c4,eb4]", L: "[c4,eb4] ~@7 [ab3,db4]@8", M: "[g3,bb3]@5 ~@3",
  N: "[~@2 c4@2 db4 f4@2 ~@3 db4@2 ~@2 db4@2, ~@7 ab4@5 f4@4]/2",
  O: "[~@4 b4@2 b4 ~@3 bb4@2 [db4,f4,ab4]@2 [c4,eb4]@6 eb4 ~@3 gb4 f4 ~ eb4 b3@2 c4@2 eb4@4 [eb4,ab4] ~@3 [gb4,ab4] f4 ab4 eb4 b3@2 c4@2, ~@4 f4@4 ~@6 ab4 ~@15 ab4@6 ~@8 ab4 ~ ab4 ~]/3", // Db Cm Ab5 Gbsus2
  P: "eb4@4 [eb4,ab4] ~@3 gb4 f4 ~ eb4 b3@2 c4@2", // Ab5
  Q: "[eb4,ab4]@4 [eb4,ab4] ~@3 gb4 f4 ~ eb4 [b3,ab4]@2 [c4,gb4]@2, ~@5 gb4 ~@2", R: "[eb4,ab4]@4 [eb4,ab4] ~@11",
})).s("gm_harpsichord").gain(0.4)

// bass · acoustic bass · "Bass #1"
const bass = note(`<
  A B C B D E F@2 G H I J K L M N O L P Q K L R S@3 G H I J K L M N O L P Q K L R S@4 T@2 U V W T N X K L Y N K L Y N O
  L Z AA K L AB S@4 T@2 U V W T N X K L Y N K L Y N O L Z AA K L AB S@4 AC
>`.pickRestart({
  A: "[eb3,ab3]@4 [eb3,ab3] ~@11", B: "[eb3,ab3]@4 [eb3,ab3] ~@3 [eb3,ab3] ~@3 [eb3,ab3] ~@3",
  C: "[eb3,ab3] ~@3 g3@4 [eb3,g3] ~@7, ~@4 eb3 ~@11", D: "[eb3,ab3] ~@3 g3@4 [eb3,g3] ~@3 [db3,ab3]@4, ~@4 eb3 ~@11",
  E: "[c3,eb3] ab2 [db3,ab3]@2, ab3 ~@15", F: "ab2 [db3,ab3]", G: "ab2 ab3 db3 c3", H: "~@4 f3@4 bb2 ~@3 f3@4, bb2 ~",
  I: "~@4 f3@4 f2 ~@3 f3@4, f2 ~", J: "~@4 eb3@4 eb2 ~@3 eb3@4, eb2 ~", K: "~ ab2 db2 [c2,ab2], ab1 ~",
  L: "~@4 f2@4 bb1 ~@3 f2@4, bb1 ~", M: "~@4 ab2@4 f1 ~@3 ab2@4, f1 ~", N: "~@4 eb2@4 eb1 ~@3 eb2@4, eb1 ~",
  O: "~@4 c2@4 f1 ~@3 c2@4, f1 ~", P: "~ eb2 ~ eb2, ab1 db2", Q: "eb2 ~@3 eb2 ~@3 eb2 ~ eb2 ~ eb2 ~@3",
  R: "~@4 ab2@4 db2 ~@3 ab2@4, db2 ~", S: "~ eb2 ~ db2, ab1 db1", T: "db1 ~@3 db2@4 db1 ~@3 db2@4",
  U: "~@4 [c2,eb2]@4 ab1 ~@3 [c2,eb2]@4, ab1 ~", V: "ab1 ~@3 [c2,eb2]@4 ab1 ~@3 [c2,eb2]@4",
  W: "~@4 db2@4 db1 ~@3 db2@4, db1 ~", X: "eb1 ~@3 eb2@4 eb1 ~@3 eb2@4", Y: "~@4 f2@4 f1 ~@3 f2@4, f1 ~",
  Z: "~ eb2 ~ f2, ab1 db2", AA: "eb2@4 eb2 ~@3 eb1@4 eb2@4", AB: "bb1 ~@3 f2@4 bb1 ~@3 f2@4", AC: "ab1 eb2 ~@2",
})).s("gm_acoustic_bass").gain(0.34)

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

// drums · snare
const snare = s("sd").struct("<~@2 [~ x ~ x]!98>").gain(0.46)

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

// drums · hihat
const hihat = s("hh").struct("<~@2 [~ x ~ x]!98>").gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<~@2 [~ x ~@3 x ~@2]!98>").gain(0.46)

// drums · crash
const crash = s("cr").struct("<~@23 A B ~@3 C ~@3 C ~ C ~@2 C ~@62>".pickRestart({
  A: "~ x!2 ~ x ~ x ~", B: "x!2 ~@2", C: "x",
})).gain(0.46)

stack(
  piano, epiano1, synth_brass_1, lead_1_square, synth_strings_1, harpsichord, bass, kick, snare, clap, hihat, open_hat,
  crash
)

More by The Beatles