Strudelify

Hail To The King (WIP)

Tyler Perkins

KeyG♭ majorTempo118 bpm
0:00/0:00
// Hail To The King (WIP) — Tyler Perkins
// 118 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4109376; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trombone · "Tenor Trombone"
const trombone = note("<~@8 A ~ A ~ B ~ B ~ B C B C B C D@2 E@3 F E@3 F G H G I G H G I J K L M N O P Q>".pickRestart({
  A: "eb3 f3 gb3 ~", B: "eb3@2 f3@2 gb3@2 eb3!2", C: "~@2 eb3!2 ~@2 eb3!2",
  D: "[eb3@2 f3@2 gb3@2 db3 db3@5 ab3 gb3 db3@2]/2",
  E: "[eb3@2 eb3@2 eb3 gb3 db3 eb3@3 eb3@2 eb3 gb3 db3 eb3@3 eb3@2 eb3 gb3 gb3@2]/3", F: "db3@4 ab3 gb3 db3@2",
  G: "~@2 gb3!3 eb3!3", H: "db3!2 eb3 eb3@5", I: "db3!2 eb3 f3 eb3 db3@3", J: "~@2 eb3!6", K: "gb3@2 eb3 db3@2 eb3@3",
  L: "~@4 eb3@2 eb3@2 gb3@2 eb3@2 ~ eb3 ~ db3", M: "eb3 ~@7", N: "~@2 f3!6", O: "ab3@2 f3 eb3@2 f3@3", P: "~ ab3!7",
  Q: "~@8 bb3@5 ab3 ~ gb3",
})).s("gm_trombone").gain(0.18)

// other · trombone · "Tenor Trombone"
const trombone_2 = note(`<
  ~@8 A ~ A ~ B ~ B ~ B C B C B C D@2 E@3 F E@3 F G H G F G H G F I J I J K L K M
>`.pickRestart({
  A: "bb2 c3 db3 ~", B: "bb2@2 c3@2 db3@2 bb2!2", C: "~@2 bb2!2 ~@2 bb2!2",
  D: "[bb2@2 c3@2 db3@2 ab2 ab2@5 eb3 db3 ab2@2]/2",
  E: "[bb2@2 bb2@2 bb2 db3 ab2 bb2@3 bb2@2 bb2 db3 ab2 bb2@3 bb2@2 bb2 db3 db3@2]/3", F: "ab2@4 eb3 db3 ab2@2",
  G: "bb2@2 bb2!6", H: "bb2!5 db3 ab2@2", I: "eb3@2 eb3@2 eb3 gb3@3", J: "eb3@2 eb3@2 eb3 gb3 db3@2",
  K: "f3@2 f3@2 f3 ab3@3", L: "f3@2 f3@2 f3 ab3 eb3@2", M: "f3@4 f3@4 gb3@5 f3 ~ eb3",
})).s("gm_trombone").gain(0.13)

// bass · trombone · "Bass Trombone"
const bass = note("<~@8 A ~ A ~ B ~ B ~ B C B C B C D@2 E@3 F E@3 F G H G F G H G F I J I J K L K L>".pickRestart({
  A: "eb2 f2 gb2 ~", B: "eb2@2 f2@2 gb2@2 eb2!2", C: "~@2 eb2!2 ~@2 eb2!2",
  D: "[eb2@2 f2@2 gb2@2 db2 db2@5 ab2 gb2 db2@2]/2",
  E: "[eb2@2 eb2@2 eb2 gb2 db2 eb2@3 eb2@2 eb2 gb2 db2 eb2@3 eb2@2 eb2 gb2 gb2@2]/3", F: "db2@4 ab2 gb2 db2@2",
  G: "eb2@2 eb2!6", H: "eb2!5 gb2 db2@2", I: "ab2@2 ab2@2 ab2 b2@3", J: "ab2@2 ab2@2 ab2 b2 gb2@2",
  K: "bb2@2 bb2@2 bb2 db3@3", L: "bb2@2 bb2@2 bb2 db3 ab2@2",
})).s("gm_trombone").gain(0.13)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@22 [~@3 x] [~ x!5 ~@2] ~@23 [x!6 ~@2]>").gain(0.2)

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

// drums · open hat
const open_hat = s("oh").struct("<~@16 [~ x!7] [x!8]!5 [x!6 ~@2] ~ [x!8]!3 [x!6 ~ x] ~@20>").gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@15 A B ~@5 C D ~@3 D E@3 F E@14 G D>".pickRestart({
  A: "~@5 x!2 ~", B: "x", C: "~@7 x", D: "~@3 x", E: "x!8", F: "x!2 ~ x!3 ~ x", G: "x!3 ~ x ~@2 x",
})).gain(0.2)

// drums · ride bell
const ride_bell = s("rd").struct("<~@4 [~ x ~ x]!11 [~ x ~@2] ~@32>").gain(0.2)

stack(trombone, trombone_2, bass, kick, snare, low_tom, mid_tom, open_hat, crash, ride_bell)