Strudelify
KeyE♭ majorTempo144 bpm
0:00/0:00
// You of the Dark Arrangement — Hiroki Morishita Takeru Kanazaki Yasuhisa Baba Rei Kondoh Masato Kouda
// 144 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Piccolo" named as a pipe, played on piccolo (its contrabass patch is not one); ch 2 "Flute" named as a pipe, played on flute (its acoustic bass patch is not one); ch 4 "Xylophone" named as a mallet, played on xylophone (its timpani patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/4581306; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(144/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 · piccolo
const piccolo = note(`<
  A B@4 C D E F G H C I C J C I K L M@2 N O P Q R S T@2 U V R@2 W X U@2 B@4 C D E F G H C I C J C I K L M@2 N O P Q R S
  T@2 U V R@2 W X U@2
>`.pickRestart({
  A: "~@8 db3@3 bb2@3 a2@2", B: "c2@2 ~ c2@2 ~@3", C: "ab1 bb1", D: "~@14 g6 f6, f1",
  E: "[c2,g6]@4 ~@2 f6 g6 ab6@4 ~@2 g6 f6, ~@3 c2@2 ~@3", F: "[c2,g6]@4 ~@2 d6 eb6 f6@2 ~ eb6@2 ~ d6@2, ~@3 c2@2 ~@3",
  G: "~ eb6@2 c6@2 ~ g6@2 f6@2 ~ eb6@2 ~ d6@2, ab1 bb1", H: "c2, c6@11 ~@5", I: "c2@3 c2@5", J: "f1@3 f1@5", K: "eb1",
  L: "f1", M: "g1/2", N: "f1 ~@2 f1!2 ~ f1 ~@2 f1!2 ~ f1@2 f1@2", O: "bb1 ~@2 bb1!2 ~ b1 ~@2 b1!2 ~ b1@2 b1@2",
  P: "c2 ~@2 c2!2 ~ c2 ~@2 c2!2 ~ c2@2 c2@2", Q: "bb1 ~@2 bb1!2 ~ bb1 ~@2 bb1!2 ~ bb1@2 bb1@2",
  R: "ab1 ~@2 ab1!2 ~ ab1 ~@2 ab1!2 ~ ab1@2 ab1@2", S: "db2 ~@2 db2!2 ~ db2 ~@2 db2!2 ~ db2@2 db2@2",
  T: "gb1 ~@2 gb1!2 ~ gb1 ~@2 gb1!2 ~ gb1@2 gb1@2", U: "g1 ~@2 g1!2 ~ g1 ~@2 g1!2 ~ g1@2 g1@2",
  V: "c2 ~@2 c2!2 ~ bb1 ~@2 bb1!2 ~ bb1@2 bb1@2", W: "a1 ~@2 a1!2 ~ a1 ~@2 a1!2 ~ a1@2 a1@2",
  X: "d2 ~@2 d2!2 ~ c2 ~@2 c2!2 ~ c2@2 c2@2",
})).s("gm_piccolo").gain(0.3)

// other · tremolo strings · "Bagpipe"
const tremolo_strings = note(`<
  ~@6 A B C D E F G H I F J K ~@11 L M N G O P Q@2 ~@5 A B C D E F G H I F J K ~@11 L M N G O P Q@2
>`.pickRestart({
  A: "~@14 eb5 d5", B: "eb5@4 ~@2 d5 eb5 f5@4 ~@2 eb5 d5", C: "eb5@4 ~@2 b4 c5 d5@2 ~ c5@2 ~ b4@2",
  D: "~ c5@2 ab4@2 ~ eb5@2 d5@2 ~ ab4@2 ~ b4@2", E: "c5@11 ~@5", F: "eb5@4 ~@2 eb5 c5 d5@2 ~ g4@2 ~ bb4@2",
  G: "c5@3 d5", H: "eb5@4 ~@2 eb5 c5 d5@2 ~ g4@2 ~ f5@2", I: "d5@3 ~", J: "c5 g4 bb4 c5", K: "d5 ~@3",
  L: "db5 d5 db5@3 bb4 g4@8 ~@2", M: "~ g4 ab4 bb4", N: "c5@6 bb4 f5 c5@3 bb4@3 f5@2", O: "eb5@6 c5 b4 a4@4 ~@4",
  P: "~ a4 bb4 c5", Q: "d5/2",
})).s("gm_tremolo_strings").gain(0.3)

// chords · xylophone
const xylophone = note(`<
  A B C D E F G B@2 H C I J I K I L M N O@2 ~@16 B C D E F G B@2 H C I J I K I L M N O@2 ~@16
>`.pickRestart({
  A: "g2@3 g2!2 ~@11", B: "c3@2 ~ c3 ~@4", C: "c3@4 ~@2 c3@2 ~@6 g5 f5",
  D: "[c3,g5]@4 ~@2 f5 g5 ab5@4 ~@2 g5 f5, ~@3 c3 ~@4", E: "[c3,g5]@4 ~@2 d5 eb5 f5@2 ~ eb5@2 ~ d5@2, ~@3 c3 ~@4",
  F: "~ eb5@2 c5@2 ~ [ab2,g5]@2 f5@2 ~ eb5@2 ~ d5@2, ab2 ~@3", G: "c3@2 ~ c3 ~@4, c5@11 ~@5", H: "ab2@2 ~ ab2 ~@4",
  I: "g5@4 ~@2 d5 eb5 f5@2 ~ eb5@2 ~ d5@2, ab2 bb2", J: "c3@3 c3@5", K: "f2@3 f2@5",
  L: "eb5 ~ eb5 g5, c3@3 c3@5, ~ c5 ~@2", M: "eb2@3 eb2@2 ~@3, bb5 ~@3", N: "f2@3 f2@2 ~@3", O: "g2@3 g2@2 ~@3",
})).s("gm_xylophone").gain(0.3)

// other · string ensemble 1 · "Violins"
const string_ensemble_1 = note(`<
  A B@2 ~@8 C D C E C D F G H I J@4 K@8 L@4 B@2 ~@8 C D C E C D F G H I J@4 K@8 L@4
>`.pickRestart({
  A: "~@4 f5 g5 ab5 bb5 g6 d6 g5 f6 c6 g5 d6 a5", B: "c5/2", C: "ab4 bb4", D: "[c5,eb5]@3 [c5,eb5]@5", E: "c5@3 c5@5",
  F: "~ [g5,bb5]@2 ~", G: "~ [f5,a5]@2 ~", H: "d6", I: "d6@3 bb5@3 f6@2", J: "c5 ~@2 g5 ~@2 f5 ~@2 eb5 ~@2 d5 ~ eb5 ~",
  K: "eb5 ~@2 bb5 ~@2 ab5 ~@2 gb5 ~@2 f5 ~ gb5 ~", L: "g5 ~@2 c6 ~@2 b5 ~@2 a5 ~@2 g5 ~ a5 ~",
})).s("gm_string_ensemble_1").gain(0.3)

// chords · string ensemble 1 · "Violas"
const string_ensemble_1_2 = note(`<
  A B@2 C D E F C D E F G H G I G H B@4 ~@16 B@2 C D E F C D E F G H G I G H B@4 ~@16
>`.pickRestart({
  A: "g4!3 ~ g4@2 ~@10", B: "[d4,g4] ~@2 [d4,g4]!2 ~ [d4,g4] ~@2 [d4,g4]!2 ~ [d4,g4]@2 [d4,g4]@2",
  C: "[d4,g4] ~@2 [d4,g4]!2 ~ [d4,ab4] ~@2 [d4,ab4]!2 ~ [d4,ab4]@2 [d4,ab4]@2", // G5 Ddim
  D: "[d4,bb4] ~@2 [d4,bb4]!2 ~ [d4,ab4] ~@2 [d4,ab4]!2 ~ [d4,ab4]@2 [d4,ab4]@2", // Gm Ddim
  E: "[d4,ab4] ~@2 [d4,ab4]!2 ~ [d4,bb4] ~@2 [d4,bb4]!2 ~ [d4,bb4]@2 [d4,bb4]@2", // Ddim Gm
  F: "[c4,f4] ~@2 [c4,f4]!2 ~ [c4,f4] ~@2 [c4,f4]!2 ~ [c4,f4]@2 [c4,f4]@2", G: "ab4@2 f4 bb4", H: "g4", I: "c5",
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_3 = note("<A ~@10 B C B C B C D E F G ~@26 B C B C B C D E F G ~@16>".pickRestart({
  A: "g3!2 ~@2", B: "ab3 bb3", C: "c4@3 c4@5", D: "~ c3 eb3 g3", E: "bb3 c3 eb3 bb3", F: "g3", G: "c4 b3",
})).s("gm_string_ensemble_1").gain(0.3)

// other · french horn · "Horn in F"
const french_horn = note("<~@21 A B@2 C D E@2 F G H@2 I J K L M ~@20 A B@2 C D E@2 F G H@2 I J K L M>".pickRestart({
  A: "~ ab3 bb3 c4", B: "[eb4 d4@2 ~]/2", C: "bb3", D: "~ ab3 b3 eb4", E: "[gb4@2 f4@5 ~]/2", F: "db4",
  G: "~ g3 ab3 bb3", H: "[db4 c4@2 ~]/2", I: "ab3 bb3", J: "~ bb3 c4 eb4", K: "g4!2", L: "g4@3 ~", M: "g4",
})).s("gm_french_horn").gain(0.3)

// other · tuba · "Euphonium"
const tuba = note(`<
  ~@17 A B C D E D F C G H F I J K L ~ M N C@2 ~@16 A B C D E D F C G H F I J K L ~ M N C@2
>`.pickRestart({
  A: "~ c3 eb3 g3", B: "bb3 c3 eb3 bb3", C: "g3", D: "c4 b3", E: "f3@2 g3 ab3", F: "bb3@3 ~", G: "~ eb3 gb3 bb3",
  H: "db4 b3", I: "bb3", J: "~ g3@3", K: "~ ab3", L: "ab3", M: "~ bb3@2 ~", N: "gb3",
})).s("gm_tuba").gain(0.3)

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

// drums · crash
const crash = s("cr").struct(`<
  A B ~ B ~ C D B ~ C D C D C D C D B@3 ~ B ~ B D B ~ B D B ~ B D B ~ B D B ~ B ~ C D B ~ C D C D C D C D B@3 ~ B ~ B D
  B ~ B D B ~ B D B ~ B D
>`.pickRestart({
  A: "x ~@7 x ~@2 x ~@4", B: "x", C: "x!2", D: "x ~@2 x ~@4",
})).gain(0.3)

stack(
  piccolo, tremolo_strings, xylophone, string_ensemble_1, string_ensemble_1_2, string_ensemble_1_3, french_horn, tuba,
  snare, crash
)