Strudelify

Yoshi Mountain

Yoko Shimomura Original

KeyD♭ majorTempo216 bpm
0:00/0:00
// Yoshi Mountain — Yoko Shimomura Original
// 216 bpm, 2/2, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4751746; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(216/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.

// chords · xylophone
const xylophone = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D E F G H I J I K A B C D A B C D A B C D A B C D A L A L A L M N A L A
  L A L M N O P Q R A B C D A B C D A B C D A B C D A B C D A B C D E F G H I J I K A L A L A L M N A L A L A L M N O P
  Q R
>`.pickRestart({
  A: "db5@2 [f5,ab5] [ab5,db6] ~ db5 [f5,ab5] [eb5,gb5]", B: "~ [gb5,bb5] ~ [bb5,db6] eb5@2 [eb5,gb5] [gb5,bb5]",
  C: "db5@2 [f5,ab5] [ab5,db6] ~ db5 [f5,ab5] [c5,eb5]", D: "~ [eb5,gb5] ~ [gb5,bb5] [eb5,ab5]@2 [c5,eb5]@2",
  E: "db6@2 db6@2 db6 eb6 f6 gb6", F: "~ gb6 ~ f6 eb6@2 db6@2", G: "eb6@2 eb6@2 eb6 db6 c6 db6",
  H: "~ c6 ~ bb5 c6@2 ab5@2", I: "db6@2 db6@2 db6 eb6 f6 eb6", J: "~ eb6 ~ eb6 gb6 f6 eb6 f6",
  K: "~ eb6 ~ eb6 gb6@2 c6@2", L: "~ [gb5,bb5] ~ [bb5,eb6] eb5@2 [eb5,gb5] [gb5,bb5]",
  M: "c5@2 [eb5,ab5] [ab5,c6] ~ c5 [eb5,ab5] [c5,eb5]", N: "~ [eb5,ab5] ~ [ab5,c6] [eb5,ab5]@2 [c5,eb5]@2",
  O: "db5@2 [gb5,a5] [a5,db6] ~ db5 [gb5,a5] [eb5,gb5]", P: "~ [gb5,b5] ~ [b5,eb6] eb5@2 [eb5,gb5] [f5,ab5]",
  Q: "[ab5,db6] ~ [f5,ab5] db5 ~@4", R: "db6 ~ db6 ~ db6!2 ~@2",
})).s("gm_xylophone").gain(0.25)

// chords · marimba · "Marimba (Grand Staff)"
const marimba = note(`<
  A B C D E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 G@2 H@2 I@2 J@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 K@2 L@2 M@2 N@2 K@2
  L@2 M@2 N@2 O@2 P Q A B C D E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 K@2 L@2 M@2 N@2
  O@2 P Q
>`.pickRestart({
  A: "[f4,ab4]@2 [f4,ab4]@2 [f4,ab4]!2 ~ [gb4,bb4]", B: "~ [gb4,bb4] ~ [gb4,bb4] [eb4,gb4]@2 [eb4,gb4]@2",
  C: "[db4,f4]@2 [db4,f4]@2 [db4,f4]!2 ~ [eb4,gb4]", D: "~ [eb4,gb4] ~ [eb4,gb4] [c4,eb4]@2 [c4,eb4]@2",
  E: "[[f4,ab4]@2 ~ ab3 [f4,ab4]!2 ~ [gb4,bb4] ~ [gb4,bb4] ~ [ab3,gb4,bb4] [ab3,eb4,gb4]@2 [db3,eb4,gb4]@2, db3@3 ~ ab3@3 db3@2 db3@2 ~@5, ~ [f4,ab4] ~@6]/2", // Fm Gb Ebm Ab7 Ebm7 Fm
  F: "[[db4,f4]@2 ~ ab3 [db4,f4]!2 ~ [eb4,gb4] ~ [eb4,gb4] ~ [ab3,eb4,gb4] [ab3,c4,eb4]@2 [db3,c4,eb4]@2, db3@3 ~@4 db3@2 db3@2 ~@5, ~@2 [db4,f4]@2 ab3@3 ~@9]/2", // Db Ebm Ab7 Ab Cm Db
  G: "[[gb4,bb4]@2 ~ db4 gb4 bb4 c5 [db5,eb5] ~ [db5,eb5] ~ [db4,ab4,db5] [db4,ab4,c5]@2 [f3,f4,ab4]@2, gb3@3 ~@4 f3@2 f3@2 ~@5, ~@2 [gb4,bb4]@2 db4@3 ~@9]/2", // Gb Dbsus2 Db5 Dbmaj7 Fm Gb
  H: "[[bb4,db5]@2 ~ db4 bb4 ab4 gb4 [f4,ab4] ~ [eb4,ab4] ~ [c4,eb4,ab4] [c4,f4,ab4]@2 [ab3,c4,f4]@2, g3@3 ~ db4@3 ab3@2 ab3@2 ~@5, ~ [bb4,db5] ~@6]/2", // Bbm Fm Ab5 Ab Fm Bbm
  I: "[[f4,ab4]@2 ~ db4 f4 gb4 ab4 [gb4,bb4] ~ [gb4,bb4] ~ [db4,gb4,bb4] bb4 ab4 gb4 [ab4,c5], f3@3 ~@4 gb3@2 gb3@2 ~@3 gb3@2, ~@2 [f4,ab4]@2 db4@3 ~@5 db4@2 ~@2]/2", // Fm Gb Ab Fm
  J: "[[f4,ab4]@2 ~ db4 f4 gb4 ab4 [gb4,bb4] ~ [gb4,bb4] ~ [db4,gb4,bb4] [db4,bb4,db5]@2 [gb3,eb4,gb4]@2, f3@3 ~@4 gb3@2 gb3@2 ~@5, ~@2 [f4,ab4]@2 db4@3 ~@9]/2", // Fm Gb Ebm Fm
  K: "[[f4,ab4]@2 ~ ab3 [f4,ab4]!2 ~ [gb4,bb4] ~ [gb4,bb4] ~ [bb3,gb4,bb4] [bb3,gb4,bb4]@2 [eb3,gb4,bb4]@2, db3@3 ~ ab3@3 eb3@2 eb3@2 ~@5, ~ [f4,ab4] ~@6]/2", // Fm Gb Ebm Fm
  L: "[[f4,ab4]@2 ~ db4 [f4,ab4]!2 ~ [gb4,bb4] ~ [gb4,bb4] ~ [db4,gb4,bb4] [db4,gb4,bb4]@2 [gb3,gb4,bb4]@2, f3@3 ~@4 gb3@2 gb3@2 ~@5, ~@2 [f4,ab4]@2 db4@3 ~@9]/2", // Fm Gb Fm
  M: "[[f4,ab4]@2 ~ db4 [f4,ab4]!2 ~ [gb4,bb4] ~ [gb4,bb4] ~ [bb3,gb4,bb4] [bb3,gb4,bb4]@2 [eb3,gb4,bb4]@2, f3@3 ~@4 eb3@2 eb3@2 ~@5, ~@2 [f4,ab4]@2 db4@3 ~@9]/2", // Fm Gb Ebm Fm
  N: "[[eb4,ab4]@2 ~ ab3 [eb4,ab4]!2 ~ [eb4,ab4] ~ [eb4,ab4] ~ [ab3,eb4,ab4] [ab3,eb4,ab4]@2 [ab3,eb4,ab4]@2, ab3@3 ~ ab3@3 ab3@2 ab3@2 ~@5, ~ [eb4,ab4] ~@6]/2", // Ab5
  O: "[[gb4,a4]@2 ~ db3 [gb4,a4]!2 ~ [eb4,gb4] ~ [eb4,gb4] ~ [eb3,eb4,gb4] [eb3,eb4,gb4]@2 [b2,eb4,gb4]@2, a2@3 ~ db3@3 b2@2 b2@2 ~@5, ~ [gb4,a4] ~@6]/2", // Gbm Ebm B Gbm
  P: "db3@3 ab3 [f4,ab4]!2 ~@2, [f4,ab4] ab3", Q: "[db3,db4,f4,ab4] ~ [db3,db4,f4,ab4] ~ [db3,db4,f4,ab4]!2 ~@2",
})).s("gm_marimba").gain(0.3)

stack(xylophone, marimba)