Strudelify

Over My Schoulder

Mike + The Mechanics

KeyA♭ majorTempo94 bpm
0:00/0:00
// Over My Schoulder — Mike + The Mechanics
// 94 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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"
const bass = note(`<
  ~@5 A B A C D E F G A B A C D E F G H I H J H K L M N A B A C D E F G H I H J H K L M N A B A C D E F G H I H J H K L
  O@3 A B A C D E F G A B A ~@5
>`.pickRestart({
  A: "f1@6 ~ f1!2 ~ f1@3 ~ f1@2", B: "bb1@6 ~ bb1 eb2 ~ eb2@4 c2 eb2", C: "bb1@7 bb1 eb2 ~ eb2@3 ~ c2 bb1",
  D: "f1@6 ~ f1!2 ~ f1@2 f2 eb2 c2@2", E: "bb1@4 bb2@3 bb1 eb2 ~ eb2@4 c2 eb2", F: "f1@6 ~ f1!2 ~ f1@2 f1 c2 f1 a1",
  G: "bb1@7 bb1 eb2 ~ eb2@2 eb2 c2 bb1@2", H: "db2@7 c2@9", I: "bb1@7 ab1@6 ab1 bb1 c2", J: "bb1@7 ab1@6 ab1 bb1 ~",
  K: "bb1@7 ab1@9", L: "bb1@4 bb2@3 bb1@9", M: "b1@7 b1 b1@8", N: "b1@4 b1 ~@3",
  O: "[b1@7 b1 b1@7 db2@4 eb2@4 f2@4 gb2@4 ab2@17]/3",
})).s("gm_fretless_bass").gain(0.33)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note(`<
  ~@76
  [bb1@7 bb1 eb2 ~ eb2@3 ~ c2 bb1]
  [f1@6 ~ f1!2 ~ f1@2 f2 eb2 c2@2]
  [bb1@4 bb2@3 bb1 eb2 ~ eb2@4 c2 eb2]
  [f1@6 ~ f1!2 ~ f1@2 f1 c2 f1 a1]
  [bb1@7 bb1 eb2 ~ eb2@2 eb2 c2 bb1@2]
>`).s("gm_fretless_bass").gain(0.09)

// other · whistle
const whistle = note("<~@46 A@2 B C D E F G H ~@26>".pickRestart({
  A: "[~@12 c7@2 c7 eb7@2 ~@15]/2", B: "d7@2 ~ c7@2 bb6@2 g6@2 f6 eb6@4 ~@2", C: "~@4 c7 ~ c7 eb7@4 ~@3 eb7 ~",
  D: "d7@3 c7@2 bb6@2 g6@2 f6 g6@2 ~@4", E: "~@4 eb7 f7 g7 f7@3 eb7@2 ~@4", F: "d7@2 ~ c7@2 bb6@2 g6@2 f6 eb6@2 ~@4",
  G: "f7@2 ~@2 f7@2 ~ f7 ~ f7@3 eb7@2 ~@2", H: "~@2 bb6 ~ c7 eb7 ~ eb7@4 ~@5",
})).s("gm_whistle").gain(0.23)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@5 A B A B A B A C A B A B A B A C D E F D G D H I@2 A B A B A B A C D E F D G D H I@2 A B A B A B A C D E F D G D H
  J@3 A B A B A B A C A B A ~@5
>`.pickRestart({
  A: "~@4 [f5,ab5,c6,eb6]@2 ~ [f5,ab5,c6,eb6] ~@8", B: "~@4 [bb5,d6,f6]@2 ~ [g5,bb5,eb6] ~@8",
  C: "~@4 [bb5,d6,f6]@2 ~ [g5,bb5,eb6] ~@4 [g5,bb5,eb6]@2 ~@2", D: "[ab4,db5,f5]@7 [c5,eb5,ab5]@9",
  E: "[ab4,db5,f5]@7 ab5@4 g5@3 ab5@2, ~@7 [c5,eb5]@9", F: "[ab4,db5,f5]@7 ab5@4 g5 g5@2 ab5@2, ~@7 [c5,eb5]@9",
  G: "[ab4,db5,f5]@7 ab5@5 g5@2 ab5@2, ~@7 [c5,eb5]@9", H: "[bb4,db5,f5]", I: "[~@16 b5@9 ~@7, [b4,eb5,gb5]@25 ~@7]/2",
  J: "[[b4,eb5,gb5]@15 [ab4,db5,f5]@4 [eb5,gb5]@3 ~ [db5,f5,ab5]@4 [ab4,db5,f5,ab5]@4 [ab4,db5,eb5,gb5,db6]@17, ~@19 ab4@8 ~@21]/3", // B Db Ebm Db Absus4
})).s("gm_percussive_organ").gain(0.12).pan(0.3)

// chords · percussive organ · "ORGAN 2" · soft notes · Bb Eb Fm7 Bb Eb Fm7 Bb Eb
const percussive_organ_soft = note(`<
  ~@76
  [~@4 [bb5,d6,f6]@2 ~ [g5,bb5,eb6] ~@8]
  [~@4 [f5,ab5,c6,eb6]@2 ~ [f5,ab5,c6,eb6] ~@8]
  [~@4 [bb5,d6,f6]@2 ~ [g5,bb5,eb6] ~@8]
  [~@4 [f5,ab5,c6,eb6]@2 ~ [f5,ab5,c6,eb6] ~@8]
  [~@4 [bb5,d6,f6]@2 ~ [g5,bb5,eb6] ~@4 [g5,bb5,eb6]@2 ~@2]
>`).s("gm_percussive_organ").gain(0.03).pan(0.3)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@5 A B@2 C A B@2 C A B@2 C A B@2 C D@8 ~ A B@2 C A B@2 C D@8 ~ A B@2 C A B@2 C E@7 F@3 A B@2 C A B@2 C A B@2 C A B@2
  C
>`.pickRestart({
  A: "[ab4,c5,eb5]", B: "[[f4,d5]@7 g4@9 [ab4,c5]@16, bb4 ~, ~@7 eb5@25]/2", C: "[f4,bb4,d5]@7 [g4,eb5]@9, ~@7 bb4 ~@8",
  D: "[[db4,f4]@7 [c4,eb4]@8 [bb3,db4,f4]@7 [c4,eb4]@9 [db4,f4]@7 [c4,eb4]@9 [bb3,db4,f4]@7 [c4,eb4]@9 ~ f4@6 [c4,eb4]@9 [bb3,db4,f4]@7 [c4,eb4]@9 [bb3,db4,f4]@16 ~ gb4@16, ab4@31 ab4@32 ab4@32 ~@33, ~@63 db4@7 ~@41 [b3,eb4]@17]/8", // Db Cm Bbm Cm Db Cm Bbm Cm …
  E: "[[db4,f4]@7 [c4,eb4]@8 [bb3,db4,f4]@7 [c4,eb4]@9 [db4,f4]@7 [c4,eb4]@9 [bb3,db4,f4]@7 [c4,eb4]@9 ~ f4@6 [c4,eb4]@9 [bb3,db4,f4]@7 [c4,eb4]@9 [bb3,db4,f4]@16 [b3,eb4], ab4@31 ab4@32 ab4@32 ~@17, ~@9 db4 ~@6]/7", // Db Cm Bbm Cm Db Cm Bbm Cm …
  F: "[gb4@15 [db4,f4,ab4]@16 [eb4,ab4,eb5]@17]/3", // Db Ab5
})).s("gm_synth_strings_1").gain(0.07).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D A B C E A B C E A B C E A B C E F G H G F G I J@2 A B C E A B C E F G H G F G I J@2 A B C E A B C E F G H G
  F G I K@3 A B C E A B C E A B C E A B C L
>`.pickRestart({
  A: "~@3 eb4 [c4,eb4] ~@2 [ab3,c4,eb4]@2 eb4!3 ~ eb4 [f2,f3,ab3,c4,eb4] ~, f2@7 ~, f3@2 [f3,ab3] c3@5, ~@2 [ab3,c4,eb4]@2 ~ [c4,eb4]@2 ~@2 [ab3,c4]@3 ~@4, ~@3 f3@3 [f3,ab3,c4,eb4] ~", // Cm Ab Fm7 Fm Ab Cm Ab Fm7
  B: "[f3,bb3,d4,f4]@3 f4 [d4,f4] ~ f3 [bb3,eb4,g4]@2 g4!3 ~ g4 [bb2,eb3,bb3,eb4,g4]@2, bb2@7 ~, ~@4 [f3,bb3]@3 eb3@5 [eb3,bb3,eb4,g4]@2 ~@2, ~@5 [d4,f4]@2 ~@2 [bb3,eb4]@3 ~@4", // Bb Dm Eb Bb5 Eb Dm Eb5
  C: "f3@2 ~ eb4 [c4,eb4] ~@2 [ab3,c4,eb4]@2 eb4!3 ~ eb4 [f2,f3,ab3,c4,eb4] ~, f2@7 ~, c3@5 [c4,eb4]@2 ~@2 [ab3,c4]@3 ~@4, ~ [f3,ab3,c4,eb4] [f3,ab3] c3@5, ~@3 f3@3 [f3,ab3,c4,eb4] ~", // Cm Ab Fm7 Cm Ab Fm7 Fm Fm7
  D: "[f3,bb3,d4,f4]@3 f4 [d4,f4] ~ f3 [eb3,bb3,eb4,g4] ~@8, bb2 ~, ~@4 [f3,bb3]@3 ~@9, ~@5 [d4,f4]@2 ~@9", // Bb Dm Eb Bb5 Dm
  E: "[f3,bb3,d4,f4]@3 f4 [d4,f4] ~ f3 [bb3,eb4,g4]@2 g4!3 ~ g4 [eb3,bb3,eb4,g4]@2, bb2 ~, ~@4 [f3,bb3]@3 eb3@5 [eb3,bb3,eb4,g4]@2 ~@2, ~@5 [d4,f4]@2 ~@2 [bb3,eb4]@3 ~@4", // Bb Dm Eb Bb5 Eb Dm Eb5
  F: "~@3 f4 [db4,f4] ~ [db3,f3] [ab3,c4,eb4]@2 eb4!3 ~ eb4 [eb3,ab3,c4,eb4] ~, db3@6 ~ c3@9, f3@4 [f3,ab3]@3 ~@2 [ab3,c4]@3 [eb3,ab3,c4,eb4]@2 ~@2, ~@2 [ab3,db4,f4]@2 ~ [db4,f4]@2 ~@9", // Db Ab Fm Ab Db
  G: "[f3,bb3,db4,f4]@3 f4 [db4,f4] ~ f3 [c4,eb4,ab4]@2 ab4!3 ~ ab4 [ab2,ab3,c4,eb4,ab4]@2, bb2@7 ab2@7 ~@2, ~@4 [f3,bb3]@3 ab3@5 [ab3,c4,eb4,ab4]@2 ~@2, ~@5 [db4,f4]@2 ~@2 [c4,eb4]@3 ~@4", // Bbm Db Ab Bb5 Ab Db Cm
  H: "[db4,f4]@2 ~ f4 [db4,f4] ~ [db3,f3] [ab3,c4,eb4]@2 eb4!3 ~ eb4 [eb3,ab3,c4,eb4] ~, db3@6 ~ c3@9, f3@4 [f3,ab3]@3 ~@2 [ab3,c4]@3 [eb3,ab3,c4,eb4]@2 ~@2, ab3 ~ [ab3,db4,f4]@2 ~ [db4,f4]@2 ~@9", // Db Ab Fm Ab Db
  I: "~@3 f4 [db4,f4] ~ bb2 [bb3,db4,f4]@2 f4!3 ~ f4 ~ f4, bb2@3 f3@5, f3@4 [f3,bb3]@3 bb2@9, ~@2 [bb3,db4,f4]@2 ~ [db4,f4]@2 ~@2 [bb3,db4]@3 [bb3,db4,f4]@2 [bb3,db4,f4]@2", // Db Bbm Bb5 Bbm Db Bbm
  J: "[~@3 gb4 [eb4,gb4] ~ b2 [b3,eb4,gb4]@2 gb4!3 ~ gb4!2 ~@4 gb4 [eb4,gb4] ~@2 [b2,b3,eb4,gb4] [b2,gb3,b3,eb4,gb4] ~@7, b2@6 gb3@9 gb4@3 ~@3 [eb4,gb4]@2 ~@9, gb3@4 [gb3,b3]@3 b2@9 b2@6 [b2,gb3]@2 ~@8, ~@2 [b3,eb4,gb4]@2 ~ [eb4,gb4]@2 ~@2 [b3,eb4]@3 [b3,eb4,gb4]@2 [b3,eb4]@4 [b3,eb4,gb4]@2 ~@12, ~@16 gb3@4 [gb3,b3]@3 ~@9]/2", // Ebm B Ebm B Ebm B5 B Ebm …
  K: "[~@3 gb4 [eb4,gb4] ~ b2 [b3,eb4,gb4]@2 gb4!3 ~ gb4 [b3,eb4,gb4] [db3,f3,ab3,db4,f4]@4 [db3,f3,ab3,db4,f4]@4 [db3,f3,ab3,db4,f4]@4 [db3,f3,ab3,db4,f4]@4 [ab2,eb3,ab3,db4,ab4]@17, b2@2 gb3@3 ~@11, gb3@4 [gb3,b3]@3 b2@8 ~@33, ~@2 [b3,eb4,gb4]@2 ~ [eb4,gb4]@2 ~@2 [b3,eb4]@3 [b3,eb4,gb4]@2 ~@34]/3", // Ebm B Db Absus4 B5 B Ebm B
  L: "[f3,bb3,d4,f4]@3 f4 [d4,f4] ~ f3 [bb3,eb4,g4]@2 g4!3 [eb3,bb3,eb4,g4]@2 ~@2, bb2 ~, ~@4 [f3,bb3]@3 eb3@5 ~@4, ~@5 [d4,f4]@2 ~@2 [bb3,eb4]@3 ~@4", // Bb Dm Eb Bb5 Dm Eb5
})).s("gm_acoustic_guitar_steel").gain(0.14)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  [~ x ~ x ~@12]!29
  [~ x ~@14]
  [~ x ~ x ~@12]!16
  [~ x ~@14]
  [~ x ~ x ~@12]!16
  [~ x ~@14]
  [~ x ~ x ~@12]!17
>`).gain(0.27)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A B A B A ~@41 C ~@16 C ~@17>".pickRestart({
  A: "~@5 x ~@7 x!3", B: "~@5 x ~@7 x ~@2", C: "~@5 x ~@10",
})).gain(0.2)

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

// drums · low tom
const low_tom = s("lt").struct("<A ~@19 B ~@8 C ~@7 B ~@8 D ~@7 B ~@9 E ~@15 B>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@7 x ~@8", D: "~@4 x ~@2 x ~@8", E: "~@15 x",
})).gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<[~@11 x ~@4] ~@28 [~@3 x ~@4] ~@16 [x ~@2 x ~@2 x ~@9] ~@17 [~@7 x] ~@16>").gain(0.34)

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

stack(
  bass, bass_soft, whistle, percussive_organ, percussive_organ_soft, synth_strings_1, acoustic_guitar_steel, kick,
  kick_soft, snare, snare_soft, hihat, low_tom, open_hat, mid_tom, crash
)

More by Mike + The Mechanics