Strudelify
Word of Mouth cover art

Word of Mouth

Word of Mouth

Mike + The Mechanics

KeyC majorTempo105 bpm
0:00/0:00
// Word of Mouth — Mike + The Mechanics
// 105 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · acoustic bass · "Seq Bass"
const bass = note(`<
  [c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~]!90
  ~@8
  [c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~]!6
  [c2@3 ~ c2@3 ~ c2 ~ c2@2 c2@2 c2@2]
  [c2 ~@7]
  ~
  [c2@3 ~ c2@3 ~ c2 ~ c2 c2@3 c2@2]
  [c2 ~@7]
>`).s("gm_acoustic_bass").gain(0.4).pan(0.3)

// chords · lead 2 sawtooth · "Saw Wave"
const lead_2_sawtooth = note(`<
  ~ A B C D E B F@2 G B C D E B F@2 G B C D E B F@2 H B C D E B F@2 I J K L M L K N O B C D E B F@2 I J K L M L K N O B
  C D E B F@2 I B C D E B F@2 I J K L M L K N O B C D E B F@2 I ~@7 A B C D E B P@2 Q ~ R Q
>`.pickRestart({
  A: "~@10 [g4,c5,e5]@3 [f4,b4,d5]@3", B: "[e4,g4,c5]@4 [e4,g4,c5]@6 [f4,a4,d5]@3 [g4,c5,e5]@3",
  C: "[g4,c5,e5]@4 [g4,c5,e5]@6 [g4,c5,e5]@3 [g4,b4,d5]@3", // C G
  D: "[f4,a4,c5]@4 [f4,a4,c5]@6 [f4,a4]@3 [e4,g4]@3, ~@5 c4@3", E: "[c4,f4,a4]@10 [f4,a4,c5]@3 [d4,g4,b4]@3",
  F: "[[g4,c5,e5]@4 [g4,c5,e5]@6 [g4,c5,e5]@3 [f#4,c5,e5]@3 [f#4,a4,e5]@4 [f#3,f#4,a4,d5]@6 d5@3 c5@3, ~@13 f#3@7 ~@6 [f3,a4]@6, ~@8 c5@5 ~@3]/2", // C F#m7b5 F#m7 D F
  G: "[e4,g4,c5]@10 [e4,g4,c5]@3 [d4,g4,b4]@3", H: "[e4,g4,c5]@10 [g4,c5,e5]@3 [f4,b4,d5]@3",
  I: "[e4,g4,c5]@10 [f4,a4,c5]@3 [d4,g4,b4]@3", J: "[c4,f4,a4]@4 [c4,a4]@6 [c4,a4]@3 [c4,g4]@3, ~ f4@3",
  K: "[d4,g4,b4]@4 [d4,g4,b4]@6 [f4,a4,c5]@3 [d4,g4,b4]@3", L: "[c4,f4,a4]@4 [c4,f4,a4]@6 a4@3 g4@3, ~@5 [c4,f4]@3",
  M: "[d4,g4,b4]@10 [f4,a4,c5]@3 [d4,g4,b4]@3", N: "[a4,c5,f5] [b4,d5,g5]",
  O: "[c5,e5,g5]@10 [g4,c5,e5]@3 [f4,b4,d5]@3", // C Bdim
  P: "[[g4,c5,e5]@4 [g4,c5,e5]@6 [g4,c5,e5]@3 [f#4,c5,e5]@3 [f#4,a4,e5]@4 [f#3,f#4,a4,d5]@4 ~@2 [f3,f4,a4,d5]@2 [f3,f4,a4,d5]@2 [c3,e4,g4,c5]@2, ~@13 f#3@7 ~@12, ~@2 c5 ~]/2", // C F#m7b5 F#m7 D Dm C
  Q: "[c3,e4,g4,c5] ~@7", // C
  R: "[f#3,f#4,a4,e5]@4 [f#3,f#4,a4,d5]@4 ~@2 [f3,f4,a4,d5] [f3,f4,a4,d5]@3 [c3,e4,g4,c5]@2, c5 ~", // F#m7 D Dm C
})).s("gm_lead_2_sawtooth").gain(0.35)

// chords · distortion guitar · "Dist. Git (High"
const distortion_guitar = note(`<
  ~ A B C D E F G H I ~@15 A B C D E F G H I ~@7 A B C D E F G H I ~@7 J B C D K F G H L B C D K F G H I ~@7 J B C D K F
  G H L ~@7 J B C D K F G M N ~ O N
>`.pickRestart({
  A: "~@10 [g3,c4,e4] [g3,c4,e4]@2 [g3,b3,d4]@3", B: "[e3,g3,c4]@4 [e3,g3,c4]@6 [f3,a3,d4]@3 [g3,c4,e4]@3",
  C: "[g3,c4,e4]@4 [g3,c4,e4]@6 [c4,e4]@3 [b3,d4]@3, ~@5 g3@3", // C Bm
  D: "[f3,a3,c4]@4 [f3,a3,c4]@6 [c3,f3,a3]@3 [c3,e3,g3]@3", E: "[c3,f3]@10 [g3,c4,e4] [g3,c4,e4]@2 [g3,b3,d4]@3",
  F: "[e3,g3,c4]@4 [e3,g3,c4]@6 d4@3 e4@3, ~@5 [f3,a3]@3", G: "[g3,b3,e4]@4 [g3,b3,e4]@6 [g3,b3,e4]@3 [f#3,c4,e4]@3",
  H: "[c4,e4]@4 [a3,d4]@6 d4@3 c4@3, f#3@5 [f3,a3]@3", I: "[e3,g3,c4]@5 ~@3",
  J: "~@10 [g3,c4,e4] [g3,c4,e4]@2 [f3,b3,d4]@3", K: "[c3,f3]@10 [g3,c4,e4] [g3,c4,e4]@2 [f3,b3,d4]@3",
  L: "[e3,g3,c4]@10 [g3,c4,e4] [g3,c4,e4]@2 [f3,b3,d4]@3", M: "[c4,e4]@2 [a3,d4]@2 ~ [f3,a3,d4]!2 [e3,g3,c4], f#3 ~",
  N: "[e3,g3,c4] ~@7", O: "[c4,e4]@4 [a3,d4]@4 ~@2 [f3,a3,d4] [f3,a3,d4]@3 [e3,g3,c4]@2, f#3 ~",
})).s("gm_distortion_guitar").gain(0.25)

// chords · distortion guitar · "Dist. Git (Low)"
const distortion_guitar_2 = note(`<
  ~ A B C D E B F G H ~@15 A B C D E B F G H ~@7 A B C D E B F G H ~@7 A B C D E B F G I B C D E B F G H ~@7 A B C D E B
  F G I ~@7 A B C D E B F J K ~ L K
>`.pickRestart({
  A: "~@10 [c3,g3]@3 [c3,g3]@3", B: "[c3,g3]@4 [c3,g3]@6 a3@3 g3@3, ~@5 c3@3",
  C: "[c3,g3]@4 [c3,g3]@6 [c3,g3]@3 [c3,g3]@3", D: "[c3,a3]@4 [c3,a3]@6 a3@3 g3@3, ~@5 c3@3",
  E: "[c3,f3]@10 [c3,g3]@3 [c3,g3]@3", F: "[c3,g3]@4 [c3,g3]@6 g3@3 f#3@3, ~@5 c3@3",
  G: "[c3,f#3]@4 [c3,f#3]@6 [c3,f3]@3 [c3,f3]@3", H: "[c3,g3]@5 ~@3", I: "[c3,g3]@10 [c3,g3]@3 [c3,g3]@3",
  J: "[c3,f#3]@2 [c3,f#3]@2 ~ f3!2 c3", K: "[c3,g3] ~@7", L: "[c3,f#3]@4 [c3,f#3]@4 ~@2 f3 f3@3 c3@2",
})).s("gm_distortion_guitar").gain(0.25)

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

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

// drums · clap
const clap = s("cp").struct("<[x!4]!105 x ~ [x ~@3 x ~@3 x ~ x!2 ~@2 x ~] x>").gain(0.72)

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

// drums · low tom
const low_tom = s("lt").struct("<~@106 [~@5 x ~@2] ~@2>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@106 [~@3 x!2 ~ x!2 ~@2 x ~@5] ~@2>").gain(0.64)

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

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

stack(
  bass, lead_2_sawtooth, distortion_guitar, distortion_guitar_2, kick, snare, clap, hihat, low_tom, mid_tom, open_hat,
  crash
)

More by Mike + The Mechanics