Strudelify

Hyrule Field (Mallet Ensemble)

Zach Baldwin

KeyE majorTempo148 bpm
0:00/0:00
// Hyrule Field (Mallet Ensemble) — Zach Baldwin
// 148 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/8 at bar 1, 4/4 at bar 1, 12/8 at bar 73, 4/4 at bar 85) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/872616; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(148/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 · marimba
const marimba = note(`<
  A B C D E D C F G H I J K L M N O H I H I P Q R O S T U V W X@2 H Y@4 Z AA AB AC H I@3 J AD@3 AE AF AE AF AG AH AI AF
  AJ AK AJ AK AL G AM AN AO AP AO AQ AR AS AR AT AU AV AW AX@2 AY AZ@3 BA@3 BB AK BB AK BC BD BE BF BG BH BI BJ AF BK BL
  BM BN BO BN BO BP BQ BR BS BT AK BU BV E BW AK BX AK ~
>`.pickRestart({
  A: "~@12 g#3 a3 b3 c#4", B: "d#4@2 ~ g#3 ~ g#3!3", C: "g#3", D: "g#3@2 ~ g#3 ~ g#3!3", E: "b3",
  F: "c#4@2 ~ c#4 ~ c#4!3", G: "e4", H: "d4@2 ~ d4 ~ d4!2 ~", I: "c4@2 ~ c4 ~ c4!2 ~", J: "b3@2 ~ b3 ~ b3!2 ~",
  K: "g5 a5 b5@14", L: "g4 ~ d4@2 g4 ~ g5@2", M: "f5@8 e5@3 d5@2 c5@3", N: "c5 d5 b4@14", O: "a4",
  P: "g4 ~ d4@2 g4 ~ d5@2", Q: "c5@2 ~@2 e5@7 d5@2 c5@3", R: "b4 c5 b4@14", S: "g4@2 ~@2 d4@8 g4 a4 ~ b4",
  T: "c5 ~ e4@6", U: "g4@2 ~@2 d4@8 b4 c5 ~ d5", V: "e5 ~ a4@6", W: "g4@2 ~ g4 ~ g4!2 ~", X: "f4@2 ~ f4 ~ f4!2 ~",
  Y: "~@2 g4 g4@2 g4 ~@2", Z: "~@2 b4 ~ b4 ~ d#5 ~ d#5 ~ f#5 ~ f#5 ~ b5@2", AA: "~ b5 ~ a5 ~ g5 ~ f#5",
  AB: "~@2 a4 ~ a4 ~ c#5 ~ c#5 ~ e5 ~ e5 ~ e5@2", AC: "~ e5 ~ d5 ~ c5 ~ d5", AD: "a3@2 ~ a3 ~ a3!2 ~",
  AE: "g4 ~ e4@2 g4 ~ e5@2", AF: "d5", AG: "d4 ~ a3@2 d4 ~ f#4@2", AH: "d4 ~ b3@2 d4 ~ g4@2", AI: "g4 ~ c4@2 e4 ~ c5@2",
  AJ: "e4@4 c4@8 e4@2 d4 c4", AK: "d4", AL: "f#4@4 d#4@8 f#4@2 e4 d#4", AM: "g4@4 e4@8 g4@2 f#4 e4", AN: "f#4",
  AO: "a3@2 ~@4 a3!3 ~ a3 ~ a3 c4 ~ a3", AP: "g3 b3 ~ g3@13", AQ: "g3 f4 ~ g4@13",
  AR: "f5@2 ~@4 f5!3 ~ f5 ~ f5 e5 ~ c5", AS: "d5 e5 ~ g4@13", AT: "d5 a5 ~ b5@13", AU: "g3 ~ g3!3 a3 g3 ~",
  AV: "g3!3 a3 f3@3 ~", AW: "~ f3@3 ~@3 f3@3 f3@3 ~@3", AX: "[c#3@6 ~@3 c#3@3 ~@3 c#3@3 c#3@3 ~@3 e3@6 ~@2]/2",
  AY: "~ e3@3 ~@3 e3@3 e3@3 ~@3", AZ: "[d4 b3 d4 b4 a4 f4 a4 c5]/3", BA: "[b4@10 a#4 a4 g4@12]/3", BB: "g3 e3 g3 e4",
  BC: "a3!2", BD: "b3 a3", BE: "g3!2", BF: "a3", BG: "g5 d5", BH: "g5 d6", BI: "c6@6 b5 a5", BJ: "g5 d#5",
  BK: "e5@2 f#5 g5", BL: "g5@6 a5 g5", BM: "f#5", BN: "~@2 e4 ~ g4 ~ c5 ~", BO: "d4 ~ f#4 ~ a4 ~ d5 ~",
  BP: "a4 f#4 a4 b4", BQ: "g4@3 b4", BR: "b4 c5 c5@2", BS: "b4 c5 d5@2", BT: "d4@3 d4", BU: "g3 c4", BV: "a3 c4",
  BW: "c4", BX: "d3@3 d4@3 d5@2",
})).s("gm_marimba").gain(0.3)

// other · marimba
const marimba_2 = note(`<
  ~ A@6 B C@2 B D E C B C B C B C B C B C B C B C F G H I J K L K L C@2 B@2 C B M@4 N O M B M B P M@2 B M B M B O C M B
  Q P Q P Q P Q P R@2 S T U V W@3 X@2 Y Z AA Z AA AB AC Z AD AE AF AG@3 AH AG AI AJ AK AJ AK AL AM AC AN AL AN AO AP AQ
  AN AR AI AR ~
>`.pickRestart({
  A: "g#3@2 ~ g#3 ~ g#3!2 ~", B: "a3@2 ~ a3 ~ a3!2 ~", C: "b3@2 ~ b3 ~ b3!2 ~", D: "~ d5", E: "d5",
  F: "c4@2 ~ c4 ~ c4!2 ~", G: "d#4@2 ~ d#4 ~ d#4!2 ~", H: "d4@2 ~ d4 ~ d4!2 ~", I: "c#4@2 ~ c#4 ~ c#4!2 ~", J: "c4",
  K: "~ d4@5 d4 ~", L: "~ e4@5 e4 ~", M: "g3@2 ~ g3 ~ g3!2 ~", N: "e3@2 ~ e3 ~ e3 f3 ~", O: "f#3@2 ~ f#3 ~ f#3!2 ~",
  P: "d3@2 ~ d3 ~ d3!2 ~", Q: "c3@2 ~ c3 ~ c3!2 ~", R: "[g3@6 ~@3 g3@3 ~@3 g3@3 g3@3 ~@3 d4@2 ~@2 d4@2 d4@2]/2",
  S: "d4 e4 d4 ~ d4!3 e4", T: "f4 ~ f4!3 g4 f4 ~", U: "f4!3 g4 g#4 ~ g#4!2", V: "g#4 a#4 g#4 ~ g#4!3 a#4",
  W: "[b4@8 b4@4 ~ g3!2 ~]/3", X: "[g3@6 ~@3 g3@3 ~@3 g3@3 g3@3 ~@3 g3@6 ~@2]/2", Y: "~ g3@3 ~@3 g3@3 g3@3 ~@3",
  Z: "e3!2", AA: "a3!2", AB: "f#3!2", AC: "g3!2", AD: "g3 f#3", AE: "~ b3@3 ~ b3@3", AF: "~ a3@3 ~ a3@3",
  AG: "~ g3@4 g3@3", AH: "~ e3@4 e3@3", AI: "~@2 a3@3 a4@3", AJ: "~@2 c4 ~ e4 ~ g4 ~", AK: "a3 ~ d4 ~ f#4 ~ a4 ~",
  AL: "b3@3 b3", AM: "b3!2", AN: "a3", AO: "e3 g3", AP: "d#3 a3", AQ: "g3", AR: "b3",
})).s("gm_marimba").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@12 A ~@60 B C D B C D ~@6 E@4 F@4 ~@26>".pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "x!2 ~ x", D: "~@2 x!2", E: "x!2", F: "x ~@2 x ~@2 x ~",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!11 [~ x ~@2] [~ x ~ x]!20 ~@16 [~ x ~ x]!24 ~@46>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@12 [~@3 x] ~@106>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@8 B A@2 C B A@11 B A@7 D ~@14 E A@24 F@6 G H I G H J K@2 L@6 K@3 M K@3 M D ~@6 N D ~@9
>`.pickRestart({
  A: "x!4 ~ x!7 ~ x!3", B: "~ x!3 ~ x!7 ~ x!3", C: "x!4 ~ x!7 ~@4", D: "x", E: "~@8 x ~@2 x ~ x ~@2", F: "x!2",
  G: "x ~@2 x ~@2 x ~", H: "~ x ~@2 x ~@2 x", I: "~@2 x!6", J: "~@2 x ~@2 x ~@2", K: "x!8", L: "x!16",
  M: "x ~ x ~ x ~ x ~ x!2 ~ x!3 ~ x", N: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@33 [~ x]!15 ~@71>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@9 x ~@3 x ~@11 x ~@93>").gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@37 x!12 ~@68 x ~>").gain(0.3)

stack(marimba, marimba_2, kick, rim, snare, hihat, open_hat, crash, ride)