Strudelify

Master Kohga Top Banana of the Yiga Clan Hyrule Warriors : Age of Calamity

Masaya Kuzume - Nintendo

KeyG majorTempo59 bpm
0:00/0:00
// Master Kohga Top Banana of the Yiga Clan Hyrule Warriors : Age of Calamity — Masaya Kuzume - Nintendo
// 59 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/4789785; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 15 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(59/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · "Piano, Grand Piano"
const piano = note("<~@2 A B ~@3 C D ~@3 E F ~>".pickRestart({
  A: "~@10 c6 ~ [c5,a#5] ~ [c5,a#5] ~", B: "c6@3 ~@3 [c5,a#5]@3 ~@3 a#5@8 ~@28", C: "~@13 c6 ~ [c5,a#5]",
  D: "~@3 [c5,a#5]@3 ~@3 c6@3 ~@3 [c5,a#5]@3 ~@3 a#5@8 ~@19", // C7
  E: "~@27 [f#5,d6,f#6]@2 ~ [f#5,d6,f#6]@2 ~ [e5,c6,e6]@2 [f#5,d6,f#6]@5 ~@8", // D C D
  F: "~@8 e1@2 ~ f#1@2 g1@2 ~ e1@2 ~ f#1@5 ~@24",
})).s("gm_piano").gain(0.35)

// chords · piano · "Piano, Grand Piano" · soft notes
const piano_soft = note("<~@2 A B ~@3 C D ~@3 E ~@2>".pickRestart({
  A: "~@10 c5 ~@5", B: "c5@3 ~@9 c5@8 ~@28", C: "~@13 c5 ~@2", D: "~@9 c5@3 ~@9 c5@8 ~@19", E: "~@25 [e5,c6,e6]@2 ~@21",
})).s("gm_piano").gain(0.2)

// bass · oboe · "Heckelfoni, Oboe"
const bass = note(`<
  [a1 ~@7]!2
  [a1 ~ c2 ~@13]
  ~@2
  [~@3 a1@2 ~@11]!2
  [~@3 a1 ~ c2 ~ c3@2 ~@7]
  ~@5
  [~@8 e2@3 f#2@2 g2@3 e2@3 f#2@5 ~@24]
  ~
>`).s("gm_electric_bass_finger").gain(0.45)

// chords · french horn · "F-torvi, French Horn"
const french_horn = note("<~@5 A@3 ~@2 B@3 ~@2>".pickRestart({
  A: "[~@7 f#3@27 f3@3 e3@3 ~@8]/3", B: "[~@35 [d#3,c4]@3 ~@3 [c4,d#4]@12 [a#3,c#4]@3 ~@3 [a#3,c#4]@62 ~@23]/3",
})).s("gm_french_horn").gain(0.45)

// chords · string ensemble 1 · "Alttoviulut, Strings"
const string_ensemble_1 = note("<A@3 ~@2 B@3 ~@7>".pickRestart({
  A: "[~ [g3,c4]@9 ~@2]/3", B: "[~@7 [f#3,c4]@36 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.2)

// drums · snare
const snare = s("sd").struct("<[~@41 x!2 ~@5] [~@12 x!3 ~] ~@4 [~@2 x!2 ~@41 x ~@2] [x!2 ~@14] ~@7>").gain(0.25)

// drums · china
const china = s("cr").struct("<~@2 [~ x ~@2] ~@4 [~@7 x ~@8] ~@7>").gain(0.5)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  [x!4]!2
  [x!2 ~@2]
  ~@2
  [~@3 x ~@3 x ~@3 x ~@3 x]!2
  [~@3 x ~@3 x ~@8]
  ~@5
  [~@29 x ~@18]
  ~
>`).gain(0.4)

// drums · bongos
const bongos = s("bongo:4").struct("<~@4 [~@17 x ~@6] ~@4 [~@11 x] ~@5>").gain(1.3)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@14 [~ x ~@2]>").gain(1.3)

// drums · congas
const congas = s("conga:18").struct("<~@10 [~@47 x] [~@11 x ~@11 x ~@11 x ~@11 x] [~@11 x ~@36] ~@2>").gain(0.95)

// drums · congas
const congas_2 = s("conga:33").struct("<~@14 [~@17 x ~@30]>").gain(0.95)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@4
  [~@4 x ~@3 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@4 x ~@13]
  ~@4
  [~@13 x ~@3 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@5 x ~@3]
  ~@5
>`).gain(1.46)

// drums · claves · soft notes
const claves_soft = s("clave:2").struct("<~@3 [~@9 x ~@2 x ~ x ~] x ~@3 [~@12 x ~@2 x] [~@3 x ~@4 x ~@39] ~@5>")
  .gain(0.73)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct(`<
  ~@4
  [~@4 x ~@3 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x!2 ~@14]
  ~@4
  [~@13 x ~@3 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x!2 ~@5]
  ~@5
>`).gain(0.43)

// drums · woodblocks · soft notes
const woodblocks_soft = s("woodblock:4").struct("<~@3 [~@9 x ~@2 x ~ x ~] x ~@3 [~@12 x ~@2 x] [~@3 x ~@4 x ~@39] ~@5>")
  .gain(0.22)

// drums · rim
const rim = s("rim").struct(`<
  ~@4
  [~@4 x ~@3 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x!2 ~@13]
  ~@4
  [~@13 x ~@3 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@3]
  ~@5
>`).gain(0.3)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@3 [~@28 x ~@8 x ~@5 x ~@4] x ~@3 [~@12 x ~@2 x] [~@4 x ~@4 x ~@38] ~@5>")
  .gain(0.15)

stack(
  piano, piano_soft, bass, french_horn, string_ensemble_1, snare, china, ride_bell, bongos, bongos_2, congas, congas_2,
  claves, claves_soft, woodblocks, woodblocks_soft, rim, rim_soft
)