Strudelify
Another Cup of Coffee cover art

Out Of The Blue

Another Cup of Coffee

Mike + The Mechanics

KeyB♭ minorTempo132 bpm
0:00/0:00
// Another Cup of Coffee — Mike + The Mechanics
// 132 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 12 "STEEL GTR" acoustic guitar steel (copy of ch 11 "CLEAN GTR" electric guitar clean)
// note: Full arrangement: all 150 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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 · "A.PIANO 3"
const piano = note(`<
  ~ A@2 B@2 A@2 B@2 ~@48 A@2 B@2 ~@48 C@2 B@2 D@2 B@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 ~
>`.pickRestart({
  A: "[[bb3,db4,f4]@20 ~@2 [ab3,db4]@10 ~ [ab3,c4,eb4]@14 ~, ~@21 f4@10 ~@17]/2", // Bbm Db5 Ab
  B: "[~ [c4,eb4]@19 ~ [gb3,c4,eb4]@10 ~@2 [gb3,bb3,db4]@14 ~, ab3@19 ~@29]/2", // Cm Cdim Gb
  C: "[[bb3,db4,f4]@20 ~ [ab3,db4,f4]@10 ~@2 [ab3,c4,eb4]@14 ~]/2", // Bbm Db Ab
  D: "[~@21 [ab3,db4,f4]@10 ~@2 [ab3,c4,eb4]@14 ~, [bb3,db4,f4]@5 ~@7, ~@7 [f6,bb6]@17 ~@24]/2", // Db Ab Bbm Bb5
  E: "[~ [bb3,db4,f4]@19 ~@2 [ab3,db4,f4]@25 ~]/2", // Bbm Db
  F: "[~ [c4,eb4]@19 ~ [gb3,c4,eb4]@11 ~@2 [gb3,bb3,db4]@14, ab3@19 ~@29]/2", // Cm Cdim Gb
})).s("gm_piano").gain(0.44)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@9 A B C D A B C E A B C D F@2 C D A B C D A B C E A B C D F@2 C G H I J K H I J K H I J K H I J K ~@4 A B C D A B C
  E A B C D F@2 C D A B C D A B C E A B C D F@2 C G H I J K H I J K H I J K H I J K ~@8 A B C D A B C E A B C D A B C E
  A B C D A B C E A B C D A B C E ~
>`.pickRestart({
  A: "~ bb1@8 ~ bb1@2 ~ bb1@2 ~ bb1@5 ab1@2 ~", B: "~ ab1@3 ab2@4 ~ gb1@2 ~@2 gb1@3 gb2@4 ~@2 bb1@2",
  C: "~ bb1@9 bb1@2 ~ bb1@2 ~ bb1@4 ~@2 bb1@2", D: "~ bb1@8 ~ gb1@3 ab1@3 bb1@3 ab1@3 gb1@2",
  E: "~ bb1@9 gb1@3 ab1@3 gb1@2 ab1@4 bb1@2", F: "[gb1@8 ~@2 gb1 ~@2 gb1@8 ~ eb1@11 ~ db1@14]/2",
  G: "~ bb1@9 gb1@3 ab1@3 bb2@2 gb1@5 ~", H: "gb1@8 ~ gb1@2 ~ gb1@10 ~@2", I: "f1@8 ~ f1 ~@2 f1@10 ~@2",
  J: "eb1@8 ~ eb1@2 ~ eb1@11 ~", K: "eb1@9 eb1@2 ~ eb1@10 ~@2",
})).s("gm_electric_bass_finger").gain(0.6)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@41 A B C@3 D E@2 F G H@2 I@4 ~@20 J@3 K L@8 M@4 A B N@3 B O P F G Q@2 R@4 S@2 T@2 ~@37
>`.pickRestart({
  A: "ab4", B: "gb4@23 ~", C: "[~@24 c3@8 db3@9 eb3@7 ~ ab3@23, gb4@2 ab4]/3", D: "[gb3,gb4]",
  E: "[eb3@8 c3@3 db3@3 eb3@2, gb4]/2", F: "[gb3,bb4]", G: "[f3,ab4]", H: "[eb3@8 c4@3 db4@3 eb4@2, ab4]/2",
  I: "[~@24 ab4@23 ~ ab4@44 ~@4, gb4@23 f4@25 ~@48, ~ bb4@24 ~@22 eb4@48 ~]/4", J: "f3/3", K: "c4@12 ~ db4@11",
  L: "[~ f3@48 ~@24 eb4@9 db4@8 c4@6 db4@96, ~@49 f4@143]/8", M: "[~ gb4@46 ~ f4@48, ~ db4@95]/4",
  N: "[~@24 c4@8 db4@9 eb4@7 ab4 ab4@23, gb4@49 ~@23]/3", O: "eb4, gb4 ~@23", P: "c3@3 db3@3 eb3@2",
  Q: "[eb3@8 [c4,c5]@3 [db4,db5]@3 [eb4,eb5]@2, ab4]/2", // C Db Eb
  R: "[~@24 ab4@23 ~ c6@24 db6@9 eb6@15, bb5@49 ~@47, gb4@23 f4@25 ab4@44 ~@4, ~ bb4@24 ~@22 eb4@48 ~]/4",
  S: "[ab6@47 ~]/2", T: "ab6/2",
})).s("gm_string_ensemble_1").gain(0.72)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@56 A B@4 ~@47 A ~@4 C@4 ~@33>".pickRestart({
  A: "eb5", B: "ab5/4", C: "ab6/2",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@41 A B C@2 A B C@2 A B C@2 A B C@2 ~@36 A B C@2 A B C@2 A B C@2 A B C@2 ~@41
>`.pickRestart({
  A: "~ db4@11, bb4, ~ gb4@23", B: "~ c4@11, ab4, ~ f4@23", C: "[~ [c4,eb4]@47, ab4]/2",
})).s("gm_distortion_guitar").gain(0.27)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@132 A B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 ~>".pickRestart({
  A: "~@12 e2 [f2,g2] [a2,b2] [c3,d3,e3] [f3,g3,a3] [b3,c4,d4] [e4,f4] [g4,a4,b4] [c5,d5,e5] [f5,g5] [a5,b5] [c6,d6]", // Fsus2 Asus2 C F Bm Fmaj7 G C …
  B: "[~ [bb5,db6,f6]@19 ~@2 [ab5,db6,f6]@25 ~]/2", // Bbm Db
  C: "[~ [c6,eb6]@19 ~ [gb5,c6,eb6]@11 ~@2 [gb5,bb5,db6]@14, ab5@19 ~@29]/2", // Cm Cdim Gb
})).s("gm_rock_organ").gain(0.37)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~ A B C D A B C D ~@48 A B C D ~@48 A B C D A B C D ~@33>".pickRestart({
  A: "~@7 [db4,f4]@2 ~@4 [ab3,db4]@2 ~@3 [db4,f4]@2 ~@4", B: "~@4 [db4,f4] ~@5 [ab3,db4] ~@7 [db4,f4] ~@2 [db4,f4] ~@2",
  C: "~@6 [c4,eb4] ~@5 [ab3,c4] ~@5 [c4,eb4] ~@5", D: "~@3 [bb3,db4] ~@5 [gb3,bb3] ~@8 [bb3,db4] ~@2 [bb3,db4] ~@2",
})).s("gm_electric_guitar_muted").gain(0.37)

// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@24 A@7 B C@4 D@4 ~@36 E@7 B F@4 G@5 ~@24 H@2 I J H@2 I J H@2 I J H@2 I J H@2 K ~@14
>`.pickRestart({
  A: "[~@16 db4@3 eb4@2 f4@5 ~@2 f4@4 ~ f4@5 ~@2 f4@5 ~ eb4@4 ~@2 eb4@5 ~ db4@4 ~@2 db4@3 c4@2 db4@5 ~@2 db4@6 c4@3 bb3@18 ~@9 db4@3 eb4@3 f4@5 ~ f4@4 ~ f4@5 ~@2 f4@4 ~@2 eb4@5 ~ eb4@5 ~ db4@4 ~ db4@3 ~ c4@2 db4@3]/7",
  B: "~ f4@23",
  C: "[~@15 db4@3 eb4@3 f4@5 ~@2 f4@4 ~@8 f4 ~ f4@2 ~@2 eb4@4 ~@2 eb4@4 ~@2 db4@4 ~@2 db4@3 c4@2 db4@5 ~@2 db4@5 c4@3 ~ bb3@11]/4",
  D: "[~@16 eb4@2 f4@3 ~ gb4@5 ~ gb4@6 bb4@6 ab4@6 f4@5 ~ f4@5 ~ eb4@5 db4@7 bb3@19 ~@7]/4",
  E: "[~@16 db4@3 eb4@2 f4@6 ~ f4@5 ~ f4@5 ~ f4@5 ~ eb4@5 ~ eb4@5 ~ db4@5 ~ db4@3 c4@3 db4@5 ~ db4@6 c4@3 bb3@17 ~@10 db4@3 eb4@3 f4@4 ~@2 f4@4 ~@2 f4@5 ~ f4@4 ~@2 eb4@5 ~ eb4@5 ~ db4@4 ~ db4@3 ~@3 db4@3, ~@163 c4@4 ~]/7",
  F: "[~@15 db4@3 eb4@3 f4@5 ~ f4@5 ~ f4@5 ~@2 f4@5 ~ eb4@5 eb4@5 ~@2 db4@4 ~@2 db4@3 c4@2 db4@5 ~ db4@6 c4@4 bb3@11]/4",
  G: "[~@16 eb4@3 f4@2 gb4@5 ~@2 gb4@5 ~ bb4@5 ~ bb4@4 ~@2 ab4@6 f4@6 eb4@6 db4@6 bb3@32 ~@18]/5",
  H: "[~ [db4,f4]@3 ~@3 [db4,f4]@4 ~@2 [db4,f4]@4 ~@2 [db4,f4]@2 ~ [c4,eb4]@4 ~@2 [c4,eb4]@4 ~@2 [c4,eb4]@3 ~@11]/2", // Db Cm
  I: "~ c4@3 ~@3 [c4,eb4]@4 ~@2 [c4,eb4]@8 ~ db4@2, eb4@3 ~@19 f4 ~", // Cm
  J: "[c4,eb4] ~ [bb3,db4]@2 ~ db4@2 ~@5, ~@9 bb3@4 ~@11", K: "~ c4@3 ~@3 [c4,eb4]@4 ~@13, eb4 ~@7",
})).s("gm_lead_2_sawtooth").gain(0.52)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@9 A@32 ~@20 A@32 ~@24 B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D ~
>`.pickRestart({
  A: "~ [f3,bb3,db4,f4]@5 ~ [f3,bb3,db4,f4]@2 ~ [f3,bb3,db4,f4]!2 ~ [f3,bb3,db4,f4]@2 ~ [bb3,db4,f4]@3 ~@3 f4@2, ~@5 f3 ~ [f3,bb3,db4]", // Bbm
  B: "~ [f3,bb3,db4,f4]@5 ~ [f3,bb3,db4,f4]@2 ~ [f3,bb3,db4,f4]!2 ~ [f3,bb3,db4]@2 ~ [db4,f4]@3 ~@2 [f3,bb3,db4,f4]@3, ~@12 f4@2 ~ [f3,bb3]@3 ~@6", // Bbm Db Bbm Bb5
  C: "~ [eb3,ab3,c4,eb4]@5 ~ [eb3,eb4]@2 ~ [eb3,ab3,c4,eb4]!2 ~ [eb3,ab3,c4,eb4]@2 ~ [eb3,ab3,c4,eb4]@4 ~@2 [eb3,c4,eb4]@2, ~@6 [ab3,c4]@3 ~@12 ab3@2 ~", // Ab Eb Ab Cm Ab
  D: "~ [bb3,db4]@5 ~ [db3,gb3,bb3,db4]@2 gb3 [db3,bb3,db4] [db3,gb3,bb3,db4] ~ [db3,gb3,bb3,db4]@2 ~ [bb3,db4]@5 ~ [db3,gb3,bb3,db4]@2, [db3,gb3]@4 ~@11 [db3,gb3]@5 ~@4", // Bbm Gb Bbm Gb Gb5
})).s("gm_electric_guitar_clean").gain(0.32)

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

// drums · clap
const clap = s("cp").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@6 x!2",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B@7 C B@7 C B@7 C B@7 D B@7 C B@7 C ~@3 E B@7 C B@7 F B@7 C B@7 G B@7 C B@7 C ~@7 H B@7 I B@7 J B@7 K B@7 C ~
>`.pickRestart({
  A: "~@10 x!3 ~@2 x ~ x!2 ~@2 x ~ x", B: "~@7 x ~@11 x ~@4", C: "~@6 x ~@12 x ~@4", D: "~@7 x ~@8 x!2 ~ x ~@2 x ~",
  E: "~@15 x!2 ~ x ~@2 x!2 ~", F: "~@6 x ~@9 x!2 ~ x ~@4", G: "~@7 x ~@8 x!2 ~@4 x ~", H: "~@14 x ~ x!3 ~ x ~@3",
  I: "~@7 x ~@2 x!2 ~ x ~@2 x!3 ~@2 x!2 ~", J: "~@18 x ~ x!2 ~@2", K: "~@6 x ~@3 x!3 ~@11",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@132 [~@4 x ~@2 x ~@2 x ~@2 x ~@2 x ~@7] ~@17>").gain(0.72)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@9
  [~@4 x ~ x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~]
  [~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~]
  [~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@10]
  ~@138
>`).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@56 A ~@19 B ~@31 A ~@7 C ~@23 D ~@9>".pickRestart({
  A: "~@13 x ~ x ~@8", B: "~@20 x!2 ~@2", C: "x ~@6 x", D: "~@16 x!3 ~@5",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@15 B ~@15 B ~@3 B ~@3 B ~@3 B ~@2 C ~@4 B ~@15 A ~@15 B ~@3 B ~@3 B ~@3 B ~@2 D ~@4 E ~@3 A ~@3 B ~@3 B ~@3 B
  ~@2 F G ~@3 B ~@2 H I ~@3 B ~@2 J ~
>`.pickRestart({
  A: "x", B: "~ x ~@22", C: "~@19 x ~@4", D: "~@3 x", E: "~ x ~@2", F: "x ~@6 x", G: "x ~@6 x ~@16", H: "~@7 x",
  I: "~@7 x ~@16", J: "~@15 x ~@2 x ~@3 x ~",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ C D A@2 E ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@15 x ~@3 x!2 ~@3", C: "~@15 x ~@2 x ~@2 x!2 ~", D: "x", E: "~@13 x ~ x ~@8",
})).gain(0.56)

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

stack(
  piano, bass, string_ensemble_1, string_ensemble_1_soft, distortion_guitar, rock_organ, electric_guitar_muted,
  lead_2_sawtooth, electric_guitar_clean, kick, clap, snare, low_tom, pedal_hat, mid_tom, crash, high_tom, ride_bell
)

More by Mike + The Mechanics