Strudelify
Living Years cover art

Out Of The Blue

Living Years

Mike + The Mechanics

KeyF majorTempo103 bpm
0:00/0:00
// Living Years — Mike + The Mechanics
// 103 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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(`<
  ~@60 A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 B@2 H I J@2 K@2 B@2 H L M@2 ~@16 G@2 B@2 H I J@2 K@2 B@2 H L M@2 G@2 B@2 H I
  J@2 K@2 B@2 H L M@2 ~@2
>`.pickRestart({
  A: "[f1@13 ~ f1@2]/2", B: "[bb1@26 ~@2 bb1@3 ~]/2", C: "[c2@27 ~ c2@3 ~]/2", D: "[g1@26 ~@2 g1@3 ~]/2",
  E: "[c2@26 ~@2 c2@3 ~]/2", F: "[f1@31 ~]/2", G: "[f1@27 ~ f1@4]/2", H: "g1@15 ~", I: "c2@7 ~", J: "[f1@15 ~]/2",
  K: "[f1@27 ~ f1@3 ~]/2", L: "c2@15 ~", M: "f1/2",
})).s("gm_fretless_bass").gain(0.46)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@8 A@6 B@2 A@2 B@2 C@2 D@2 E@2 F G A@2 B@2 A@2 B@2 C@2 D@2 E@2 F G A@2 B@2 D E F G A@2 B@2 D E F G A@2 B@2 A@2 B@2
  C@2 D@2 E@2 F G A@2 B@2 D E F G A@2 B@2 D E F G A@2 B@2 A@2 B@2 C@2 D@2 E@2 F G A@2 B@2 D E F G A@2 B@2 D E F G A@2
  B@2 D E F G A@2 B@2 D E F G ~@2
>`.pickRestart({
  A: "f2 [c3,f3,a3] f2 [c3,f3,a3] f2 [c3,f3,bb3] f2 [c3,f3,bb3] f2 [c3,f3,a3] f2 [c3,f3,bb3] f2 [c3,f3,a3] f2 [c3,f3,a3]", // F Fsus4 F Fsus4 F
  B: "f2 [d3,f3,a3] f2 [d3,f3,a3] f2 [d3,f3,bb3] f2 [d3,f3,bb3] f2 [d3,f3,a3] f2 [d3,f3,bb3] f2 [d3,f3,a3] f2 [d3,f3,a3]", // Dm Bb Dm Bb Dm
  C: "g2 [eb3,g3,a3] g2 [eb3,g3,a3] g2 [eb3,g3,bb3] g2 [eb3,g3,bb3] g2 [eb3,g3,a3] g2 [eb3,g3,bb3] g2 [eb3,g3,a3] g2 [eb3,g3,a3]", // Am7b5 Eb Am7b5 Eb Am7b5
  D: "g2 [d3,g3,a3] g2 [d3,g3,a3] g2 [d3,g3,bb3] g2 [d3,g3,bb3] g2 [d3,g3,a3] g2 [d3,g3,bb3] g2 [d3,g3,a3] g2 [d3,g3,a3]", // Dsus4 Gm Dsus4 Gm Dsus4
  E: "g2 [e3,g3,a3] g2 [e3,g3,a3] g2 [e3,g3,bb3] g2 [e3,g3,bb3] g2 [e3,g3,a3] g2 [e3,g3,bb3] g2 [e3,g3,a3] g2 [e3,g3,a3]", // A7 Edim A7 Edim A7
  F: "f2 [c3,f3,a3] f2 [c3,f3,a3] f2 [c3,f3,bb3] f2 [c3,f3,bb3] f2 [c3,f3,a3] f2 [c3,f3,bb3] f2 [c3,f3,a3] f2 [f3,a3,d4]", // F Fsus4 F Fsus4 F Dm
  G: "f2 [f3,a3,d4] f2 [f3,c4] f2 [f3,c4] f2 [f3,bb3] f2 [f3,bb3] f2 [f3,a3] f2 [f3,a3] f2 [f3,a3]", // Dm F5 Bb5 F
})).s("gm_electric_guitar_muted").gain(0.23).pan(0.3)

// other · pad new age · "FANTASIA"
const pad_new_age = note(`<
  A@2 B@2 ~@2 C@2 ~@38 D E ~@6 D E ~@22 D E ~@6 D E ~@22 D E ~@6 D E ~@6 D E ~@6 D E ~@4 F@2
>`.pickRestart({
  A: "[f3@31 ~]/2", B: "[e3@31 ~]/2", C: "[e6@15 ~]/2", D: "bb6 ~@7 a6 ~@7", E: "g6 ~@7 f6 ~@7", F: "[[f1,f2]@5 ~@3]/2",
})).s("gm_pad_new_age").gain(0.36)

// other · pad new age · "FANTASIA" · soft notes
const pad_new_age_soft = note("<A@2 B@2 C@2 D@2 E@4 ~@130>".pickRestart({
  A: "[[c5,f5,a5]@15 ~]/2", B: "[[e5,g5,b5]@31 ~]/2", C: "[[d5,bb5,d6]@15 ~, [g3,g5]]/2",
  D: "[[c3,c4,e5,g5,c6]@31 ~]/2", E: "[[f5,a5,c6]@3 ~, f3@15 ~]/4",
})).s("gm_pad_new_age").gain(0.2)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@60 A@2 B@2 A@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J K L@2 M@2 B@2 J K N@2 ~@16 H@2 B@2 J K O@2 A@2 I@2 J K G@2 A@2 B@2 J K
  G@2 A@2 B@2 J K O@2 P@2
>`.pickRestart({
  A: "[[f2,c3]@27 ~ [f2,c3]@4]/2", B: "[[bb2,f3]@27 ~ [bb2,f3]@4]/2", C: "[[bb2,f3]@31 ~]/2",
  D: "[[c3,g3]@25 ~ [c3,g3]@6]/2", E: "[[g2,d3]@13 [g2,d3]@3]/2", F: "[[c3,g3]@13 [c3,g3]@3]/2", G: "[[f2,c3]@31 ~]/2",
  H: "[f2,c3]/2", I: "[bb2,f3]/2", J: "[g2,d3]", K: "[c3,g3]", L: "[f2@31 ~]/2", M: "[[f2,c3]@25 ~ [f2,c3]@6]/2",
  N: "f2/2", O: "[f2@31 ~, c3 ~@31]/2", P: "[[f1,c2]@5 ~@3]/2",
})).s("gm_distortion_guitar").gain(0.13)

// drums · kick
const kick = s("bd").struct("<~@8 A@52 B@15 C B@15 A D@15 C B@15 C B@16 C ~>".pickRestart({
  A: "~@7 x ~@7 x", B: "x ~@9 x!2 ~@4", C: "x", D: "x ~@14 x",
})).gain(0.45)

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

// drums · low tom
const low_tom = s("lt").struct("<~@8 A@51 B ~@15 C ~@15 D ~@15 C ~@15 C ~@18>".pickRestart({
  A: "x!2", B: "x ~@7 x ~@6 x", C: "~@14 x!2", D: "~@15 x",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!9 ~ x!3 ~ x ~]!132 ~@2>").gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@8 [~@9 x ~@3 x ~ x]!132 ~@2>").gain(0.15)

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

// drums · high tom
const high_tom = s("ht").struct("<~@59 A ~@15 B ~@15 A ~@15 B ~@15 B ~@18>".pickRestart({
  A: "~@9 x!2 ~@5", B: "~@5 x ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@60 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~
>`.pickRestart({
  A: "x",
})).gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 [~ x ~ x]!132 ~@2>").gain(0.45)

stack(
  bass, electric_guitar_muted, pad_new_age, pad_new_age_soft, distortion_guitar, kick, snare, low_tom, hihat,
  hihat_soft, mid_tom, high_tom, crash, tambourine
)

More by Mike + The Mechanics