Strudelify

Eternal Transient Reign

ZUN

KeyA majorTempo158 bpm
0:00/0:00
// Eternal Transient Reign — ZUN
// 158 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/396551; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 256 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(158/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 · piano
const piano = note(`<
  A@2 B C D E F G A@2 B C D E H I J K J K J K J K J K L K J K J M N@2 O P Q R S T N@2 O P Q R U V W X Y Z AA@2 ~ AB W X
  Y AC AD@2 ~ AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS@2 AT AU@3 ~@3 AV AW AX@2 AY AZ@3 ~ BA BB@2 BC BD BE BF BG BH
  BB@2 BC BD BE BF BI BJ BK@2 BL BM BN BO BG BP BK@2 BL BM BN BO BI BJ A@2 B C D E F G A@2 B C D E H I J K J K J K J K J
  K L K J K J M N@2 O P Q R S T N@2 O P Q R U V W X Y Z AA@2 ~ AB W X Y AC AD@2 ~ AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS@2 AT AU@3 ~@3 AV AW AX@2 AY AZ@3 ~ BA BB@2 BC BD BE BF BG BH BB@2 BC BD BE BF BI BJ BK@2 BL BM BN BO BG BP BK@2
  BL BM BN BO BI BQ
>`.pickRestart({
  A: "d4 g4 a4@2", B: "d4@4 g4@4 a4@3 c#5 d5@4", C: "a4 d5 a4 d5 a4@8 g4@2 a4@2", D: "d4@4 g4@4 a4@3 b4 c5@4",
  E: "c#5@4 d5@3 d#5 e5@6 d5 e5", F: "f5@4 e5@2 d5@2 c5 g#4 a4@2 g4@4", G: "g#4 f4 e4 d4 a4@4",
  H: "f5@4 e5@2 d5@2 c5@3 g4@3 d5@2", I: "e5 f5", J: "~ g4 a4 c5 e5@4, d4", K: "~ g4 a4 c5 d5@4, d4",
  L: "~ g4 a4 c5 ~@2 d6@2, d4, ~ e5", M: "~ g4 a4 c5 d5@2 a4 c5, d4", N: "[d4,d5] [g4,g5] [a4,a5]@2",
  O: "[d4,d5]@4 [g4,g5]@4 [a4,a5]@3 c#5 [d5,d6]@4", P: "[a4,a5] [d5,d6] [a4,a5] [d5,d6] [a4,a5]@8 [g4,g5]@2 [a4,a5]@2",
  Q: "[d4,d5]@4 [g4,g5]@4 [a4,a5]@3 b4 [c5,c6]@4", R: "[c#5,c#6]@4 [d5,d6]@3 d#5 [e5,e6]@6 [d5,d6] [e5,e6]",
  S: "[f5,f6]@4 [e5,e6]@2 [d5,d6]@2 c5 g#4 [a4,a5]@2 [g4,g5]@4, ~@4 c6 ~@3", // F E D A G
  T: "[g#4,g#5]@2 [f4,f5]@2 [e4,e5]@2 [d4,d5]@2 a5@6 f#5 [e5,f5], ~ a4", // G# F E D Fmaj7
  U: "[f5,f6]@4 [e5,e6]@2 [d5,d6]@2 [c5,c6]@3 [g4,g5]@3 [d5,d6]@2", V: "[e5,e6]@8 [f5,f6]@7 [c5,c#5]",
  W: "[d5,d6]@3 [c#5,c#6]", X: "[d5,d6]@3 [e5,e6]", Y: "[d5,d6] [c#5,c#6]", Z: "[b4,b5]@3 [a4,a5]@3 [e4,e5]@2",
  AA: "[f#4,f#5]/2", AB: "~@6 [b4,b5] [c#5,c#6]", AC: "[b4,b5]@3 [a4,e5,a5,e6]@3 [e4,c#5,c#6]@2",
  AD: "[f#4,b4,d5,f#5,d6]/2", AE: "~@6 f#5 a5", AF: "b5 a5 f#5 b5 a5 f#5 d6 c#6", AG: "b5@3 a5@3 e5@2",
  AH: "b5 a5 e5 b5 a5 e5 [d6,f#6] [c#6,e6]", AI: "[b5,d6]@3 [a5,c#6]@3 [b5,d6]@2",
  AJ: "[b5,d6] [a5,c#6] [f#5,b5] [b5,d6] [a5,c#6] [e5,b5] d6 c#6", AK: "b5@3 [a5,c#6]@3 [e5,e6]@2",
  AL: "[d6,f#6] [b5,d6] [f#5,b5] [c#6,e6] [a5,c#6] [e5,a5] [f#5,f#6] [a5,e6]", AM: "[b5,d6]@3 [a5,c#6]@5",
  AN: "b5 a5 f#5 b5 a5 f#5 d6 c#6, d5", AO: "b5@3 a5@3 e5@2, e5@3 ~", AP: "b5 a5 e5 b5 a5 e5 [d6,f#6] [c#6,e6], c#5",
  AQ: "[b5,d6]@3 [a5,c#6]@3 [b5,d6]@2, f#5", AR: "[b5,d6] [a5,c#6] [f#5,b5] [b5,d6] [a5,c#6] [e5,b5] d6 c#6, d5",
  AS: "[b5@3 [a5,c#6]@3 e6@2 [d6,f#6] [b5,d6] [f#5,b5] [c#6,e6] [a5,c#6] a5 [f#5,d6] [a5,c#6], e5@6 e5@7 e5@3]/2", // A D Bm B5 C#m A D A
  AT: "b5@3 [a5,c#6]@5, [d5,f#5]", AU: "[f5,a5,d6]/3", AV: "a#4@6 a#3 ~", AW: "g#4 f4 e4 d4 [c#4,a4]@4",
  AX: "d5 g5 a5@2", AY: "d5@4 g5@4 a5@3 c#6 d6@4", AZ: "[a5 d6 a5 d6 a5@44]/3",
  BA: "~@2 f5@2 ~ f5 a5 f5!2 a5 d6 a5 d6 f6 a5 f5, ~ f4@3", BB: "[d#4,d#5] [g#4,g#5] [a#4,a#5]@2",
  BC: "[d#4,d#5]@4 [g#4,g#5]@4 [a#4,a#5]@3 d5 [d#5,d#6]@4", // D# G# A# D#
  BD: "[a#4,a#5] [d#5,d#6] [a#4,a#5] [d#5,d#6] [a#4,a#5]@8 [g#4,g#5]@2 [a#4,a#5]@2", // A# D# A# D# A# G# A#
  BE: "[d#4,d#5]@4 [g#4,g#5]@4 [a#4,a#5]@3 c5 [c#5,c#6]@4", BF: "[d5,d6]@4 [d#5,d#6]@3 e5 [f5,f6]@6 [d#5,d#6] [f5,f6]",
  BG: "[f#5,f#6]@4 [f5,f6]@2 [d#5,d#6]@2 c#5 a4 [a#4,a#5]@2 [g#4,g#5]@4, ~@4 c#6 ~@3", // F# F D# A# G#
  BH: "[a4,a5]@2 [f#4,f#5]@2 [f4,f5]@2 [d#4,d#5]@2 a#5@6 g5 [f5,f#5], ~ a#4", // A F# F D# F#maj7
  BI: "[f#5,f#6]@4 [f5,f6]@2 [d#5,d#6]@2 [c#5,c#6]@3 [g#4,g#5]@3 [d#5,d#6]@2", BJ: "[f5,f6] [f#5,f#6]",
  BK: "[[d#4,d#5,f#5] [g#4,g#5,c#6] [a#4,a#5]@2 [d#4,d#5,f#5] [g#4,g#5,c#6] [a#4,a#5,d#6]@2, ~@2 d#6@3 ~@3]/2", // D#m C#5 A# D#m C#5 D#5
  BL: "[d#4,d#5,f#5]@4 [g#4,g#5,c#6]@4 [a#4,a#5,d#6]@3 [d5,f6] [d#5,d#6,f#6]@4", // D#m C#5 D#5 Dm D#m
  BM: "[a#4,a#5,f#6] [d#5,d#6,g#6] [a#4,a#5,f#6] [d#5,d#6,g#6] [a#4,a#5,f#6]@8 [g#4,g#5,f6]@2 [a#4,a#5,f#6]@2", // D#m G#5 D#m G#5 D#m C# D#m
  BN: "[d#4,d#5,f#5]@4 [g#4,g#5,c#6]@4 [a#4,a#5,d#6]@3 c5 [c#5,c#6,f6]@4", // D#m C#5 D#5 C#
  BO: "[d5,d6]@4 [d#5,d#6]@3 e5 [f5,f6]@6 [d#5,d#6] [f5,f6], f#6 a#6", // D D# F D# F
  BP: "[a4,a5,f#6]@2 [f#4,f#5,d#6]@2 [f4,f5,d6]@2 [d#4,d#5,c6]@2 a#5@6 g5 [f5,f#5], ~ a#4", BQ: "[f5,f6]@2 [f#5,f#6] ~",
})).s("gm_piano").gain(0.45)

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

// chords · piano
const piano_3 = note(`<
  A B C D A E F G H I J K H L M N A@4 O@3 P Q@4 P@2 R S H I J K H T M U H I J K H T M N C@4 V@3 W X@4 V@3 W Y Z AA AB Y
  Z AA AB AC Z AD AE AC Z AD AF AG B C D A AH F AI AJ AK AL AM AJ AN AO AP AQ AR AS AT AU M AV AW AU AR AS AT AU M AV AX
  AQ AR AS AT AU M AV AW AU AR AS AT AU M AY AZ A B C D A E F G H I J K H L M N A@4 O@3 P Q@4 P@2 R S H I J K H T M U H
  I J K H T M N C@4 V@3 W X@4 V@3 W Y Z AA AB Y Z AA AB AC Z AD AE AC Z AD AF AG B C D A AH F AI AJ AK AL AM AJ AN AO AP
  AQ AR AS AT AU M AV AW AU AR AS AT AU M AV AX AQ AR AS AT AU M AV AW AU AR AS AT AU M AY BA
>`.pickRestart({
  A: "d2!4", B: "c2!4", C: "b1!4", D: "a#1!2 c2!2", E: "c#2!4", F: "a#1!4", G: "g#1 [g#1,g#2] a1!2",
  H: "d2@2 [d2,a2] d2!3 [d2,a2]@2", I: "c2@2 [c2,a2] c2!3 [c2,a2]@2", J: "b1@2 [b1,g2] b1!3 [b1,g2]@2",
  K: "a#1@2 a#1@2 [a#1,f2]@2 ~ f2 ~@2 g2@2 g2@2 g2@2, ~@3 a#1 c2@2 c2@2", L: "c#2@2 [c#2,a2] c#2!3 [c#2,a2]@2",
  M: "a#1@2 [a#1,f2] a#1!3 [a#1,f2]@2", N: "c2@8 d2!4 [d2,a2]@2 [d2,a2]@2, ~@4 a2 ~@3",
  O: "~ d3 ~ d3 ~ d3 d2 ~, d2!3 ~", P: "~ d3 ~ d3 ~ d3 ~ d3, d2!4", Q: "~ a#2 ~ a#2 ~ a#2 ~ a#2, a#1!4",
  R: "d2!4 ~@2 d3@2 d2!4 ~@2 d3@2, ~ d3 d2@2 ~ d3 d2@2", S: "d2@2 [d2,d3]@2 ~@2 d3@2 f2!2 d3 f2 ~@2 d3@2, ~ d2 ~ e2",
  T: "a1@2 [a1,e2] a1!3 [a1,e2]@2", U: "g#1 [g#1,g#2] [a1,a2] a1", V: "~ b2 ~ b2 ~ b2 b1 ~, b1!3 ~",
  W: "~ b2 ~ b2 ~ b2 ~ b2, b1!4", X: "~ g2 ~ g2 ~ g2 ~ g2, g1!4", Y: "[g1,g2,d3]@6 [g1,g2,d3]@6 g2!2 g2@2, ~@3 [g1,d3]",
  Z: "[a1,a2,e3] [a1,a2]!2 [a1,a2,e3]", AA: "[f#1,f#2,c#3]@6 [f#1,f#2,c#3]@6 f#2!2 f#2@2, ~@3 [f#1,c#3]",
  AB: "[b1,b2,f#3] [b1,b2] [a1,a2] [a1,a2,e3]", AC: "g2!4 g2@2 g2!4 g2@2 g2!2 g2@2, [g1,d3]@3 [g1,d3]@3 [g1,d3]@2",
  AD: "f#2!4 f#2@2 f#2!4 f#2@2 f#2!2 f#2@2, [f#1,c#3]@3 [f#1,c#3]@3 [f#1,c#3]@2", // F#5
  AE: "[b1,b2,f#3]@4 ~@2 [b2,f#3]@2 ~ a2 e3@2 [a1,a2,e3]@4, ~ b1 a1 ~", AF: "b2!8 [b1,b2]@4 [b1,b2]@4, [b1,f#3] b1 ~@2",
  AG: "d2!4, [d3,a3]", AH: "a1!4", AI: "b1 [b1,a#2] [c#2,a2] a1", AJ: "d2!4, [d3,f3,a3]", AK: "c2!4, [c3,e3,a3]",
  AL: "b1!4, [b2,d3,g3]", AM: "a#1!2 c2!2, [a#2,d3,f3] [e3,g3]", AN: "a1!4, [c#3,e3,a3]", AO: "a#1!4, [d3,f3,a#3]",
  AP: "c2!2 d2!2, [e3,g3,c4] d1", AQ: "d#2@2 [d#2,a#2] d#2!3 [d#2,a#2]@2, d#1", AR: "c#2@2 [c#2,a#2] c#2!3 [c#2,a#2]@2",
  AS: "c2@2 [c2,g#2] c2!3 [c2,g#2]@2", AT: "b1@2 b1@2 [b1,f#2]@2 ~ f#2 ~@2 g#2@2 g#2@2 g#2@2, ~@3 b1 c#2@2 c#2@2",
  AU: "d#2@2 [d#2,a#2] d#2!3 [d#2,a#2]@2", AV: "b1@2 [b1,f#2] b1!3 [b1,f#2]@2", AW: "a1 [a1,a2] [a#1,a#2] a#1",
  AX: "c#2@8 d#2!4 [d#2,a#2]@2 [d#2,a#2]@2, ~@4 a#2 ~@3", AY: "b1!4 [b1,f#2]@2 b1@2 b1!4 [b1,f#2]@4",
  AZ: "[c#2,g#2] [d#1,d#2,a#2]", BA: "[c#2,g#2]@4 [d#2,a#2]@2 d#1 ~",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2, piano_3)

More by ZUN