Strudelify
work song cover art

Hozier

work song

Hozier

KeyB♭ majorTempo118 bpm
0:00/0:00
// work song — Hozier
// 118 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4852601; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 104 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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.

// other · violin
const violin = note(`<
  ~@32 A@2 B@2 C@2 D E A@2 B@2 F@2 G@2 H I J@2 H K L@2 M N O P Q R S@2 T@4 U@2 V W X Y Z@2 AA@2 AB AC AD AE AF AG AH AI
  AJ@2 AK AL@3 AM AN@3 T@4 AO@2 ~@2
>`.pickRestart({
  A: "[d4@33 eb4 f4 ~ g4@9 f4 g4 ~]/2", B: "[d4@9 d4 c4 ~ bb3@24 g3@9 bb3 c4 ~]/2",
  C: "[bb3@9 bb3 g3 ~ d4@21 f4 g4 ~ bb4@4 f4@4 d4@4]/2",
  D: "f4@4 eb4@4 d4@4 d4 [d4,eb4] eb4 d4 [d4,eb4] eb4 d4 [d4,eb4] eb4 d4 [d4,eb4] eb4", // Ebmaj7
  E: "d4 [d4,eb4] eb4 d4 [d4,eb4] eb4 ~@6 bb3@9 a3 bb3 ~", F: "[bb3@9 bb3 g3 ~ d4@24 c4@12]/2", G: "[~ d4@4 ~@3]/2",
  H: "[d4,bb4]", I: "[d4,bb4] [eb4,a4]", J: "[[d4,bb4]@15 f4 g4 bb4 bb4@3 g4@2 f4]/2", K: "[d4,a4] [f4,c5]",
  L: "[g4@2 bb4 d5@3 d5@2 c5 bb4@2 bb4@7 ~@6]/2", M: "~ f5 ~ f5", N: "~@3 f5@3 d5@2 eb5 eb5@3",
  O: "~@3 f5@2 eb5 f5@2 eb5 d5@2 d5", P: "f5@3 eb5@2 d5 d5@3 ~@3", Q: "~@3 f5@3 f5@3 ~@2 d5",
  R: "f5@2 eb5 d5@3 d5@2 eb5 d5@3", S: "[~@2 d5 f5@3 f5@2 eb5 d5@2 d5@4 ~@9]/2", T: "[d4@3 eb4]/2",
  U: "[d4@18 ~@5 f4]/2", V: "f4@3 bb4@2 g4 bb4@2 bb4 g4@2 f4", W: "bb4@2 g4 bb4@2 g4 ~@6", X: "~@3 g4@6 g4@2 f4",
  Y: "g4 a4", Z: "[bb4@15 bb4 c5 d5 d5@3 c5@2 bb4]/2",
  AA: "[~@3 d4 eb4 f4 f4@3 g4@2 f4@4 g4@2 f4 g4@2 f4 eb4 d4 eb4]/2", AB: "f4", AC: "f6 c6 ~@2", AD: "g5", AE: "g5 a5",
  AF: "bb5", AG: "~@3 f5 g5 bb5 bb5@3 g5@2 f5", AH: "g5!2", AI: "f5",
  AJ: "[~@4 bb4@2 d5@6 d5@4 c5@2 bb4@4 bb4@5 c5 bb4 ~ c5@2 d5@2 c5@2 f5@2 g5@2 f5@2 a5@2 bb5@2 a5@2]/2",
  AK: "~ [d5,f5] [d5,bb5]@2", // Dm Gm
  AL: "[~@3 [d5,f5]@3 [d5,bb5]@3 [eb5,a5]@2 eb5@16 f4 g4 bb4 d6@2 c6@2 bb5@2, ~@11 bb5@13 ~@12]/3", // Dm Gm Ebdim
  AM: "g4 [d5,f5] d5@2", AN: "[f4@3 [d5,f5]@3 d5@3 c5@2 ~ bb4@18 ~@6, ~@11 eb5@19 ~@6]/3", AO: "[d4@3 ~]/2",
})).s("gm_violin").gain(0.3)

// other · violin · soft notes
const violin_soft = note("<~@8 A@6 B@2 C@2 D@2 E@2 B@2 ~@80>".pickRestart({
  A: "[bb3@3 c4]/2", B: "[bb3@5 ~@3]/2", C: "[bb4@3 c5]/2", D: "[bb4@3 bb4]/2", E: "[f4@3 c4]/2",
})).s("gm_violin").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note("<[bb3 ~@3] [~@2 c4 ~] [bb3 ~@3] [~@2 c4 ~] [bb3 ~@3] [~@2 c4 ~] [bb3 ~@3] ~@97>")
  .s("gm_pizzicato_strings").gain(0.42)

// other · violin
const violin_2 = note(`<
  ~@40 A@6 ~@2 B C D E F G H@2 I J K L M N O@2 P@6 ~@2 Q R S@2 T@2 U V U W U X Y Z AA AB AC AD AE AF@2 AG@3 P@4 ~@4
>`.pickRestart({
  A: "[g4@3 a4]/2", B: "~ bb4 ~ bb4", C: "~@3 bb4@3 f4@2 g4 g4@3", D: "~@3 bb4@2 g4 bb4@2 g4 f4@2 f4",
  E: "bb4@3 g4@2 f4 f4@3 ~@3", F: "~@3 bb4@3 bb4@3 ~@2 f4", G: "bb4@2 g4 f4@3 f4@2 g4 f4@3",
  H: "[~@2 f4 bb4@3 bb4@2 g4 f4@2 f4@7 ~@6]/2", I: "~ d5 ~ d5", J: "~@3 d5@3 bb4@2 c5 c5@3",
  K: "~@3 d5@2 c5 d5@2 c5 bb4@2 bb4", L: "d5@3 c5@2 bb4 bb4@3 ~@3", M: "~@3 d5@3 d5@3 ~@2 bb4",
  N: "d5@2 c5 bb4@3 bb4@2 c5 bb4@3", O: "[~@2 bb4 d5@3 d5@2 c5 bb4@2 bb4@4 ~@9]/2", P: "[bb3@3 c4]/2",
  Q: "~@3 d4@6 d4@2 c4", R: "d4 f4", S: "[g4@15 f4 g4 bb4 bb4@3 g4@2 f4]/2",
  T: "[~@3 f4 g4 bb4 bb4@3 c5@2 bb4@4 c5@2 bb4 c5@2 bb4 g4 f4 g4]/2", U: "bb4", V: "~@6 bb5@2 f5 ~@3", W: "bb4 a4",
  X: "~@3 f4 g4 bb4 bb4@3 g4@2 f4", Y: "c4!2", Z: "d4", AA: "~@2 f4 bb4@3 bb4@2 g4 f4@2 f4",
  AB: "f4@3 eb4 d4 ~ f4@2 g4@2 f4@2 d5@2 c5@2 bb4@2 c5@2 bb4@2 c5@2", AC: "bb5 d6 ~ d6", AD: "~@3 d6@3 bb5@2 c6 c6@3",
  AE: "~@3 d6@2 c6 d6@2 c6 bb5@2 bb5", AF: "[d6@3 c6@2 bb5 bb5@8 ~ d6@3 d6@3 ~@2 bb5]/2",
  AG: "[d6@3 c6@3 bb5@2 c6 bb5@5 bb5 d6@3 d6@2 c6 bb5@2 bb5@7 ~@6]/3",
})).s("gm_violin").gain(0.4)

// other · violin · soft notes
const violin_soft_2 = note("<~@8 A@6 B@2 A@6 B@2 ~@22 C@2 ~@22 D@2 ~@32>".pickRestart({
  A: "[d4@3 eb4]/2", B: "[d4@5 ~@3]/2", C: "[~ c4@4 ~@3]/2", D: "[bb3@3 ~]/2",
})).s("gm_violin").gain(0.2)

// other · pizzicato strings
const pizzicato_strings_2 = note("<[d4 ~@3] [~@2 eb4 ~] [d4 ~@3] [~@2 eb4 ~] [d4 ~@3] [~@2 eb4 ~] [d4 ~@3] ~@97>")
  .s("gm_pizzicato_strings").gain(0.48)

// other · cello · "Violoncello"
const cello = note(`<
  ~@8 A@6 B@2 A@6 B@2 C D E@2 C D F@2 ~@8 G@2 H@2 I@2 J@2 C K L M N O P@2 Q R S T U V W@2 A@6 ~ X Y@2 Z@2 AA@2 AB AC AD
  AE A@2 AD AE AF@2 AG AH AI@2 AJ AK AL@2 A@6 B@2
>`.pickRestart({
  A: "[bb2@3 c3]/2", B: "[bb2@5 ~@3]/2", C: "g3", D: "f3", E: "[bb3@3 c4]/2", F: "[bb3@5 ~@3]/2", G: "[g3@3 a3]/2",
  H: "[bb3@3 f3]/2", I: "[g3@3 a2]/2", J: "[~ g2@4 ~@3]/2", K: "bb3 a3", L: "bb3", M: "~@3 f3 g3 bb3 bb3@3 g3@2 f3",
  N: "[d3,g3]!2", O: "a3", P: "[~@2 bb3 d4@3 d4@2 c4 bb3@2 bb3@7 ~@6]/2", Q: "[d3,g3]", R: "[d3,g3] c3", S: "[d3,d4]",
  T: "[d3,d4] eb3", U: "bb2", V: "a2 f2", W: "[eb2@5 ~@3]/2", X: "~@10 bb2 a2", Y: "[[g2,d3]@7 [f2,c3]]/2",
  Z: "[eb3@7 d3]/2", AA: "[g2@3 f2]/2", AB: "eb2", AC: "~@10 a2 g2", AD: "g2", AE: "f2",
  AF: "[~@4 d3@2 f3@6 f3@4 eb3@2 d3@4 d3@5 eb3 d3 ~ d3@6 d3@4 c3@4 bb2@4]/2", AG: "[g2,d3]", AH: "[f2,d3]",
  AI: "[eb2@15 bb3 c4 d4 d4@2 c4@2 bb3@2, bb2 ~]/2", AJ: "d4", AK: "c4",
  AL: "[bb3@2 bb3 f4@3 f4@2 eb4 d4@2 d4@7 ~@6]/2",
})).s("gm_cello").gain(0.37)

// other · cello · "Violoncello" · soft notes
const cello_soft = note("<A@6 B@2 ~@62 C@2 ~@32>".pickRestart({
  A: "[bb2@3 c3]/2", B: "[bb2@9 ~@7]/2", C: "[bb2@3 ~]/2",
})).s("gm_cello").gain(0.24)

// other · cello
const cello_2 = note(`<
  ~@32 A@6 B@2 C@2 D@2 E@2 ~@2 F G H I F G J@2 K L H G M N O@2 P@6 ~@2 Q R S T U@2 V W X Y X T Y X Z@2 AA AB AC AD F AE
  AF@2 P@2 ~@6
>`.pickRestart({
  A: "[bb2@3 c3]/2", B: "[bb2@5 ~@3]/2", C: "[g2@3 f2]/2", D: "[eb2@3 f2]/2", E: "[[eb2,g2]@3 a2]/2", F: "g2",
  G: "f2!2", H: "[bb2,d3]", I: "bb2 c3", J: "[[bb2,d3]@6 [bb2,d3]@2 [bb2,d3] [bb2,d3]@2 [bb2,d3]@7 bb2@3 a2@3]/2",
  K: "[g2,bb2]", L: "[g2,bb2] a2", M: "[g2,d3]", N: "[f2,d3] f2", O: "[[g2,bb2]@5 ~@3]/2", P: "[f2@3 g2]/2",
  Q: "~ d4 ~ d4", R: "~ d4 a3 c4", S: "~ bb3 ~ bb3", T: "~@3 bb3 c4 d4 d4@3 c4@2 bb3",
  U: "[~@3 bb3 c4 d4 d4@3 eb4@2 d4@4 eb4@2 d4 eb4@2 d4 g3 f3 g3]/2", V: "bb3", W: "~@9 eb4 d4@2", X: "d4", Y: "d4 c4",
  Z: "[~@4 bb3@2 d4@6 d4@4 c4@2 bb3@4 bb3@5 c4 bb3 ~ d4@4 f4@6 eb4@6 d4@2]/2", AA: "g3 d4 g3 d4",
  AB: "f3@3 d4@3 bb3@2 c4 c4@3", AC: "~@3 f3@2 eb3 f3@2 eb3 d3@2 d3", AD: "f3@3 eb3@2 d3 d3@3 c3@3", AE: "f2",
  AF: "[eb2@5 ~@3]/2",
})).s("gm_cello").gain(0.48)

// other · cello · soft notes
const cello_soft_2 = note("<~@8 A@6 B@2 A@6 B@2 ~@22 C@2 ~@22 D@2 ~@32>".pickRestart({
  A: "[f2@3 g2]/2", B: "[f2@5 ~@3]/2", C: "[eb2@5 ~@3]/2", D: "[f2@3 ~]/2",
})).s("gm_cello").gain(0.24)

// bass · pizzicato strings
const bass = note("<[f2 ~@3] [~@2 g2 ~] [f2 ~@3] [~@2 g2 ~] [f2 ~@3] [~@2 g2 ~] [f2 ~@3] ~@97>")
  .s("gm_pizzicato_strings").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  ~@24 A B A B A B A B ~@16 A B A B A B A B A B A B A B A B ~@16 A B A B A B ~@2 A B C D A B C D ~@8
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~@9 x!3", D: "x!2 ~@2",
})).gain(0.3)

// drums · clap
const clap = s("cp").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@9 ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A@17 ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A@6 B
  C A D A E A D A E ~@8
>`.pickRestart({
  A: "~ x", B: "~@2 x!2", C: "~@6 x!6", D: "~@6 x!4 ~ x", E: "~@3 x!3",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B C ~ A ~ A ~ A ~ A D A ~ A ~ A ~ A ~@9
>`.pickRestart({
  A: "x ~@4 x ~@6", B: "~@11 x", C: "x", D: "~ x ~@2",
})).gain(0.3)

// drums · china
const china = s("cr").struct("<~@96 x ~@7>").gain(0.3)

stack(
  violin, violin_soft, pizzicato_strings, violin_2, violin_soft_2, pizzicato_strings_2, cello, cello_soft, cello_2,
  cello_soft_2, bass, kick, clap, low_tom, china
)

More by Hozier