Strudelify
Over My Shoulder cover art

Out Of The Blue

Over My Shoulder

Mike + The Mechanics

KeyE♭ majorTempo93 bpm
0:00/0:00
// Over My Shoulder — Mike + The Mechanics
// 93.1 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 25.
// note: The whole transcription plays 26 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(93.1/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, A@4 for four bars: edit a riff to change every repeat.

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@22 A B A B A B C D E ~@8 A B A B A B C D E ~@8 A B A B A B C F@2 ~@19
>`.pickRestart({
  A: "ab3@7 ~@9", B: "ab3@4 ab3 ab3@3 ~@8", C: "bb3@4 bb3 bb3@2 bb3 ~ bb3@2 bb3 bb3@4",
  D: "b3@4 b3 b3@2 b3 ~ b3@2 b3 b3@3 ~", E: "~@3 [b3,eb4,gb4] ~@12",
  F: "[b3@4 b3 b3@2 b3 ~ b3@2 b3 b3@3 ab3@4 [db4,gb4]@4 [ab3,ab4]@4 ~@5]/2", // Gb5 Ab
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(0.8)

// bass · electric bass finger
const bass = note(`<
  ~@6 A B C D E F G H A B C D E F G H I J I J I K L M N A B C D E F G H I J I J I K L M N A B C D E F G H I J I J I K O
  P@3 A B C D E F G H A B C D E F G H A B
>`.pickRestart({
  A: "f1@7 ~ f1@2 f1@5 ab1", B: "bb1@4 eb1 eb1@2 eb1", C: "f1@6 ~ f1!2 ~ f1@4 ab1@2", D: "bb1@8 eb2 ~ eb2@3 c2 bb1@2",
  E: "f1@6 ~ f1!2 ~ f1@2 eb2 c2 bb1 ~", F: "bb1@3 ~ bb2@3 ~ eb2 ~ eb2@3 ~ f1 ~", G: "f1@6 ~ f1!2 ~ f1@4 g1 ab1",
  H: "bb1@3 ~ bb2@3 ~ eb2 ~ eb2@3 c2 bb1 ~", I: "db2@7 c2@9", J: "bb1@7 ab1@5 ~ ab1 bb1 c2", K: "bb1@7 ab1@9",
  L: "bb1@3 bb2@4 bb1@2 ~ bb1@6", M: "b1@6 ~ b1@8 ~", N: "b1@5 ~@3", O: "bb1@3 ~@4 bb1@2 ~ bb1@6, ~@3 bb2@13",
  P: "[b1@3 ~@4 b1@8 db2@4 eb2@4 f2@4 gb2@4 ab2@16 ~, ~ b2@4 ~@11]/3",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@2 A B A C A B A B A B A B A B A B A B A B D E D E D E F G H A B A B A B A B D E D E D E F G H A B A B A B A B D E D
  E D E F I@3 A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 [eb3,ab3]!3 [eb3,ab3]@2 [eb3,ab3] ~ [eb3,ab3]@2 [eb3,ab3] [eb3,ab3]@2 [eb3,ab3]@2, f2", // Ab5
  B: "[bb2,d3,f3]@4 [bb2,d3,f3] [bb2,d3,f3]@2 [bb2,eb3,g3] ~ [bb2,eb3,g3]@2 [bb2,eb3,g3] [bb2,eb3,g3]@3 ~", // Bb Eb
  C: "[bb2,d3,f3]@4 [bb2,d3,f3] [bb2,d3,f3]@2 [bb2,eb3,g3] ~@8", // Bb Eb
  D: "[f3,db4]@4 [f3,db4] [f3,db4]@2 [ab3,eb4] ~ [ab3,eb4]@2 [ab3,eb4] [ab3,eb4]@4", // Db Ab5
  E: "[gb3,db4]@4 [gb3,db4] [gb3,db4]@2 [ab3,eb4]@2 [ab3,eb4]@2 [ab3,eb4] [ab3,eb4]@3 ~", // Gb5 Ab5
  F: "[f3,db4]@4 [f3,db4] [f3,db4]@2 [f3,db4] ~ [f3,db4]@2 [f3,db4] [f3,db4]@4", // Db
  G: "[gb3,eb4]@4 [gb3,eb4] [gb3,eb4]@2 [gb3,eb4] ~ [gb3,eb4]@2 [gb3,eb4] [gb3,eb4]@3 ~", H: "~@4 [gb3,b3,eb4]!5 ~@7",
  I: "[[gb3,eb4]@4 [gb3,eb4] [gb3,eb4]@2 [gb3,eb4] ~ [gb3,eb4]@2 [gb3,eb4] [gb3,eb4]@3 [db3,db4,f4]@3 ~ [eb3,ab3,eb4]@4 [f3,db4,f4]@4 [gb3,db4,ab4]@4 [ab3,db4,gb4,ab4]@15 ~@2]/3", // Ebm Db Ab5 Db Gbsus2 Dbsus4
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.2)

// chords · percussive organ
const percussive_organ = note(`<
  ~@6 A B A B A B A B A B A B A B A B C D C D C D E F G A B A B A B A B C D C D C D E F G A B A B A B A B C D C D C D E
  H@3 A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@4 [ab4,c5,eb5]@3 [ab4,c5,eb5] ~@4 [ab4,c5] ~@3, ~@6 eb5 ~", B: "~@4 [bb4,d5,f5]@3 ~@5 [bb4,eb5,g5]@2 ~@2",
  C: "[f4,db5] [ab4,eb5]", D: "[gb4,db5] [ab4,eb5]", E: "[bb4,db5,f5]", F: "[b4,eb5,gb5]",
  G: "~@6 [e4,f4,g4,a4,b4] [c5,d5,e5,f5,g5] [a5,b5,c6,d6,eb6] ~@7, [eb5,gb5,b5]@4 gb5 ~@3", // Em C Adim B
  H: "[[b4,eb5,gb5]@14 ~ [f4,db5,f5]@3 ~ [gb4,db5,gb5]@4 [ab4,db5,ab5]@3 ~ [ab4,db5,ab5]@4 [db5,gb5,db6]@15 ~@2]/3", // B Db Gb5 Db5 Gb5
})).s("gm_percussive_organ").gain(0.38).pan(0.3)

// chords · pad new age
const pad_new_age = note("<~@22 A B A B A B ~@11 A B A B A B ~@11 A B A B A B ~@22>".pickRestart({
  A: "~ db5 ab4 eb5 db5 ab4 ~ db5 ~@2 db5 ~ eb5 db5 ~ eb5, f4@8 ab4@3 ab4@3 ab4@2, eb5@2 ~@4 eb5@2 ~ eb5@2 ~@5",
  B: "db5 ab4 eb5 db5 ~ eb5 db5 ab4 eb5 db5 ~@2 db5 ~ eb5 db5, gb4@8 ~@3 eb5@2 ~@3, ~@4 ab4@2 ~@2 ab4@2 ab4@3 ab4@3",
})).s("gm_pad_new_age").gain(0.27).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@2 A B A C A B A B A B A B A B A B A B A B D E D E D E F G H A B A B A B A B D E D E D E F G H A B A B A B A B D E D
  E D E F I@2 J A B A B A B A B A B K L K L K L K L
>`.pickRestart({
  A: "~@4 [f3,ab3,eb4]@2 ~ [f3,ab3,eb4] ~ [f3,ab3,eb4] ~@2 [f3,ab3,eb4]@2 ~@2, f2", // Fm7
  B: "[bb3,d4,f4]@3 ~ [bb3,d4,f4]@2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] [bb3,eb4,g4]@2 ~@2, bb2@7 ~ bb2@2 ~@2 bb2@4", // Bb Eb
  C: "[bb3,d4,f4]@3 ~ [bb3,d4,f4]@2 ~ [bb2,bb3,eb4,g4] ~@8, bb2@3 ~@5", D: "[f3,ab3,db4]@6 ~ [ab3,c4,eb4]@8 ~",
  E: "[ab3,bb3,db4]@6 ~ [ab3,c4,eb4]@9", F: "[bb3,db4,f4]@11 ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~",
  G: "[b3,eb4,gb4]@11 ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~", H: "~@3 [b3,eb4,gb4]!3 ~@2 [b3,eb4,gb4] ~@7",
  I: "[[b3,eb4,gb4]@11 ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] f3@3 gb3@4 ~ ab3@3 ab3@5 ~]/2", J: "ab3@3 ~",
  K: "~@4 [f3,ab3,eb4]@3 [f3,ab3,eb4] ~ [f3,ab3,eb4]@3 [f3,ab3,eb4]@4, f2", // Fm7
  L: "[bb3,d4,f4]@4 [bb3,d4,f4]@3 [bb3,eb4,g4] ~ [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb2,bb3,eb4,g4]@3 ~, bb2@2 bb2 ~", // Bb Eb
})).s("gm_electric_guitar_clean").gain(0.34).pan(0.8)

// other · whistle
const whistle = note("<~@47 A@2 B C D E F G H ~@28>".pickRestart({
  A: "[~@12 c6 ~ c6 eb6@3 ~@14]/2", B: "d6@3 c6@3 bb5 g5@2 f5 eb5@2 ~@4", C: "~@4 c6@2 c6 ~ eb6@5 ~ eb6 ~",
  D: "d6@4 c6 ~ bb5 g5@2 f5 g5@3 ~@3", E: "~@4 eb6 f6 g6 g6@5 ~@4", F: "d6@3 c6@2 ~ bb5 g5 ~ f5 eb5@3 ~@3",
  G: "g6@2 f6 ~ g6 f6 ~ g6 ~ g6@3 eb6@4", H: "~@2 bb5 ~ c6 eb6 ~ eb6@5 ~@4",
})).s("gm_whistle").gain(0.59).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<[x!4] ~@83>").gain(0.27)

// drums · clap
const clap = s("cp").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~ A B ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A C ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A
  ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~@3 A
>`.pickRestart({
  A: "~@14 x!2", B: "~@3 x", C: "~@12 x!2 ~@2",
})).gain(0.54)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@65 [~@15 x] ~@18>").gain(0.54)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 A ~@7 A ~@8 B ~@7 A ~@8 C ~@7 A ~@9 A ~@7 A ~@7 A ~@2>".pickRestart({
  A: "~@13 x!2 ~", B: "~@5 x!2 ~@9", C: "~@3 x ~@2 x!2 ~@8",
})).gain(0.54)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~@5 A ~ A ~ A ~@3 A ~ A ~ A ~@2 A@8 B ~ A ~ A ~ A ~@2 A@8 ~@2 A ~ A ~ A ~@2 A@8 ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@3
  A
>`.pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~ [~@11 x ~@4] ~@45 x ~@36>").gain(0.54)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A@3 ~@3 A ~@3 A ~@3 A ~ A ~@2 A ~@3 A ~@3 A ~@3 A ~ A B C A@2 ~@3 A ~@3 A ~@3
  A ~@3 A ~
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~@3 x ~@3 x ~@3 x ~@3 x",
})).gain(0.54)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A@2 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@2 A B A B A B A B A B A B A B A B@2 A B A B A B A B A B A
  B A B A B@2 A@2 B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", B: "x!8",
})).gain(0.54)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~ A@2 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@2 A B A B A B A B A B A B A B A B@2 A B A B A B A B A B A
  B A B A B@2 A@2 B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
})).gain(0.32)

stack(
  acoustic_guitar_steel, bass, acoustic_guitar_nylon, percussive_organ, pad_new_age, electric_guitar_clean, whistle,
  kick, rim, clap, snare, hihat, low_tom, mid_tom, open_hat, high_tom, crash, tambourine, tambourine_soft
)

More by Mike + The Mechanics