Strudelify
KeyB♭ majorTempo115 bpm
0:00/0:00
// Gaur Plains — ACE+ Yoko Shimomura Manami Kiyota Yasunori Mitsuda
// 115 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1071356; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 225 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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 · violin
const violin = note(`<
  A B C D E F G H I J K L M J N O@2 J K L P Q R ~ S T U V W X@3 S T U V Y Z AA@2 ~@8 J K AB AC J N AD AE J K AF@2 Q R ~
  S T U V W X@3 S T U V Y Z AG@2 AH AI AJ AK AH AL AM AN AH AI AJ AK AH AL AM AO AP AQ AR ~@6 AS AT@4 ~@8 J K L M J N
  O@2 J K L P Q R ~ S T U V W X@3 S T U V Y Z AA@2 ~@8 J K AB AC J N AD AE J K AF@2 Q R ~ S T U V W X@3 S T U V Y Z AG@2
  AH AI AJ AK AH AL AM AN AH AI AJ AK AH AL AM AO AP AQ AR ~@6 AS AT@4 ~@8
>`.pickRestart({
  A: "~@12 d5 [f5,g5] a5 [bb5,c6]", B: "d6@12 d5 [f5,g5] a5 [bb5,c6]", C: "d6@12 f5 [g5,a5] bb5 [c6,d6]",
  D: "c6@8 g5@3 g5!2 ~ a5@2", E: "bb5 ~@2 bb5@2 ~ c6@2 a5@2 ~@2 f5@2 a5 [bb5,c6]", F: "d6@12 d6 eb6 ~ f6",
  G: "d6@12 d6 eb6 ~ g6", H: "f6@8 a5@6 g5 a5", I: "bb5 ~@2 bb5@2 ~ c6 bb5 a5@8", J: "g4@3 a4 ~@2 bb4@10",
  K: "g4@3 a4 ~@2 bb4@4 c5@4 bb4@2", L: "a4 bb4 a4 g4 d4@4 ~@4 [a5,a6] [bb5,bb6] [a5,a6] [g5,g6]", M: "[f5,f6]",
  N: "g4@3 a4 ~@2 bb4@6 c5@2 bb4@2", O: "~@2 bb5@2 ~ bb5 ~@2 a5@8", P: "[f5,f6]@12 ~@2 d5 f5",
  Q: "g5@3 g5 ~@2 g5@2 f5@4 ~@2 d5 f5", R: "g5@3 g5 ~@2 g5@2 a5@4 d5@4", S: "a5@3 g5 a5 bb5 c6 d6", T: "f6@3 eb6 bb5@4",
  U: "eb6@3 d6 a5@4", V: "c6@2 bb5@2 a5 bb5 c6 d6", W: "g6@12 g5 bb5 d6 f6",
  X: "[g6@8 a6@14 g6 a6 bb6@16 gb5@2 g5@2 a5@2 bb5@2]/3", Y: "g6@12 bb5 db6 e6 g6", Z: "g6 a6",
  AA: "[g6@21 f6 eb6 d6 c6@4 ~@4]/2", AB: "a4 bb4 a4 g4 d4@4 ~@2 a5@3 bb5@3", AC: "g5@3 a5@3 f5@10",
  AD: "~@2 bb5@2 ~@2 bb5 ~ a5@3 g5@3 ~@2", AE: "~ bb5 ~ bb5 ~ bb5 ~ bb5",
  AF: "[a4 bb4 a4 g4 ~@2 bb5@4 c6@4 d6@4 f5@4 bb5@4 ~@4 d5 f5]/2", AG: "[g6@21 f6 eb6 d6 c6@4 d6 a5 f5 d5]/2",
  AH: "a4@3 g4 a4@3 g4", AI: "f4@3 eb4 f4@3 bb4", AJ: "a4@3 g4 a4@3 bb4", AK: "c5@3 d5 gb4@3 bb4",
  AL: "f4@3 eb4 f4@3 eb4", AM: "d4 eb4", AN: "c4@4 d4@3 bb4", AO: "f4 g4",
  AP: "[bb4,a5] g5 [d5,g5] f5 [bb4,a5] g5 [d5,g5] f5 [bb4,a5] g5 [d5,g5] f5 [bb4,a5] g5 [d5,g5] f5", // Bbmaj7 G5 Bbmaj7 G5 Bbmaj7 G5 Bbmaj7 G5
  AQ: "[bb4,f5] g5 [d5,bb5] f5 [bb4,f5] g5 [d5,bb5] f5 [bb4,f5] g5 [d5,bb5] f5 [bb4,f5] g5 [d5,bb5] f5", // Bb5 Gm Bb5 Gm Bb5 Gm Bb5 Gm
  AR: "[bb4,f5] g5 [c5,g5] f5 [bb4,f5] g5 [c5,g5] f5 [bb4,f5] g5 [c5,g5] f5 [bb4,f5] g5 [c5,g5] f5", AS: "a5 c6",
  AT: "[g5@3 [f5,g5], d6]/4", // Fsus2
})).s("gm_violin").gain(0.35)

// other · pizzicato strings · F5
const pizzicato_strings = note(`<
  ~@111
  [f6@2 f6 c6@2 c6 f6@2 f6 c6@2 c6 f6@2 [c6,f6]@2]
  [f6@2 f6 c6@2 f6@2 f6@2 f6 c6@2 f6@2 c6@2]
  ~@106
  [f6@2 f6 c6@2 c6 f6@2 f6 c6@2 c6 f6@2 [c6,f6]@2]
  [f6@2 f6 c6@2 f6@2 f6@2 f6 c6@2 f6@2 c6@2]
  ~@4
>`).s("gm_pizzicato_strings").gain(0.35)

// other · violin
const violin_2 = note(`<
  ~ A B C D E F B G H I J K L I M N O@2 P@2 Q R ~ S T U V W X Y Z AA T U AB AC AD AE AF ~@4 AG AH AI AJ H I J K L I M N
  O@2 P@2 Q R ~ AK AL AM AN W AO AP AQ AR AS AT AU AV AW AE AF ~@16 AX@2 AY@2 A B AZ@2 A B BA@4 ~@4 AY@2 BB BC H I J K L
  I M N O@2 P@2 Q R ~ S T U V W X Y Z AA T U AB AC AD AE AF ~@4 AG AH AI AJ H I J K L I M N O@2 P@2 Q R ~ AK AL AM AN W
  AO AP AQ AR AS AT AU AV AW AE AF ~@16 AX@2 AY@2 A B AZ@2 A B BA@4 ~@4 AY@2 BB BC
>`.pickRestart({
  A: "g4", B: "f4", C: "e4", D: "g4 ~@2 g4@5 f4@2 ~@2 f4@2 ~@2", E: "g4@3 d4@3 bb4@10", F: "f4 d4 bb4@6", G: "eb4 d4",
  H: "eb4@6 f4 d4", I: "eb4", J: "d4", K: "f4@3 eb4 d4@4", L: "eb4@6 f4 eb4", M: "d4 c4", N: "d4 f4",
  O: "eb4@5 eb4 f4 d4", P: "d4/2", Q: "eb4@3 eb4 ~@2 eb4@2 f4@4 ~@4", R: "g4@3 g4 ~@2 g4@2 a4@4 ~@4", S: "d4@7 c4",
  T: "c4@3 ab3 eb4@3 c4", U: "gb4@3 d4 a4@3 d4", V: "d4@4 c4@3 bb3", W: "eb4@3 d4@3 c4@2 bb3@3 a3@3 bb3@2",
  X: "c4@3 bb3@3 a3@2 a3@3 g3@3 a3@2", Y: "bb3@4 bb3 c4 d4 eb4", Z: "g4@4 d4 eb4 gb4 g4", AA: "bb3@3 g3 d4@3 c4",
  AB: "bb3@7 bb4", AC: "bb4@3 a4 g4@4", AD: "eb4@3 d4 c4@4", AE: "a4@3 g4 a4@3 g4", AF: "f4@3 eb4 f4@3 eb4",
  AG: "a3!2 bb3!2 d4!2 eb4!2 f4 g4!2 a4!2 bb4!2 c5", AH: "d5!2 eb5 ~ f5 ~ d5 c5 bb4@7 c5",
  AI: "[c5,d5] d5 c4 d4 eb4 f4 eb4 f4 g4 a4 d5 eb5 d5 eb5 f5 g5", AJ: "eb5 ~@2 eb5@2 ~ eb5@2 d5@2 c5@2 bb4@2 a4@2",
  AK: "d4@4 g3@3 d4@9", AL: "eb4@4 ab3@3 eb4@9", AM: "gb4 d4", AN: "g4@2 f4@3 c4@3",
  AO: "d4@3 c4@3 bb3@2 c4@3 a3@3 a3 bb3", AP: "c4@6 bb3 c4 d4@2 c4@2 d4@2 eb4@2", AQ: "g4@4 gb4 d4 gb4 bb4",
  AR: "c5@3 bb4 d5@3 bb4", AS: "c5@3 ab4 eb5@3 c5", AT: "c5@3 a4 gb5 eb5 d5 c5", AU: "c5@2 bb4@2 f5 g5!2 a5",
  AV: "bb5 a5 g5 e5", AW: "f5 eb5 d5 bb4 c5@3 bb4", AX: "[bb3@7 bb3]/2", AY: "c4/2", AZ: "eb4/2",
  BA: "[~@3 [c4,d4], eb4]/4", BB: "c4@6 c4 d4", BC: "eb4 ~@2 eb4@2 ~ eb4@2 d4@2 eb4@2 d4@2 c4@2",
})).s("gm_violin").gain(0.35)

// chords · pizzicato strings
const pizzicato_strings_2 = note("<~@91 A B C D ~@104 A B C D ~@22>".pickRestart({
  A: "~@4 c6 bb5 [eb5,c6] [d5,bb5]", B: "[eb5,c6] [d5,bb5] [eb5,c6] [d5,bb5] ~@4", C: "a5 g5 a5 g5 a5 g5 ~@2",
  D: "g5 c6 g5@2 a5 g5 [f5,a5] [eb5,g5]", // F Eb
})).s("gm_pizzicato_strings").gain(0.3)

// chords · pizzicato strings · soft notes · Cm Gm Cm Gm
const pizzicato_strings_soft = note(`<
  ~@92
  [~@4 [eb5,c6] [d5,bb5] ~@2]
  [~@6 a5 g5]
  ~@106
  [~@4 [eb5,c6] [d5,bb5] ~@2]
  [~@6 a5 g5]
  ~@23
>`).s("gm_pizzicato_strings").gain(0.2)

// other · viola
const viola = note(`<
  A B C D E F G H I J K L@2 M@2 N@2 J K O P Q R ~ S T U V W X@3 S T U V Y Z AA@2 AB AC AD AE AF AG AH AI J K AJ@2 M@2
  N@2 J K O P Q R ~ S T U V W X@3 S T U V Y Z AK@2 AL AM AL@3 AM AL AN AL AM AL AN AL AM AL AO AP@2 AQ@3 AR@2 AS@2 AR@2
  AS@3 ~@3 A AT@2 AU AV J K L@2 M@2 N@2 J K O P Q R ~ S T U V W X@3 S T U V Y Z AA@2 AB AC AD AE AF AG AH AI J K AJ@2
  M@2 N@2 J K O P Q R ~ S T U V W X@3 S T U V Y Z AK@2 AL AM AL@3 AM AL AN AL AM AL AN AL AM AL AO AP@2 AQ@3 AR@2 AS@2
  AR@2 AS@3 ~@3 A AT@2 AU AV
>`.pickRestart({
  A: "~@12 d4 [f4,g4] a4 [bb4,c5]", B: "d5@12 d4 [f4,g4] a4 [bb4,c5]", C: "d5@12 f4 [g4,a4] bb4 [c5,d5]",
  D: "c5@8 g4@3 g4!2 ~ a4@2", E: "bb4 ~@2 bb4@2 ~ c5@2 a4@2 ~@2 f4@2 a4 [bb4,c5]", F: "d5@12 d5 eb5 ~ f5",
  G: "d5@12 d5 eb5 ~ g5", H: "f5@8 a4@6 g4 a4", I: "bb4 ~@2 bb4@2 ~ c5 bb4 d5@2 c5@2 bb4@2 a4@2",
  J: "eb4@3 f4 ~@2 eb4@10", K: "eb4@3 f4 ~@2 eb4@4 a4@4 g4@2", L: "[a4 bb4 a4 g4 d4@28]/2",
  M: "eb4@3 f4 ~@2 eb4@6 f4@2 eb4@2", N: "bb4/2", O: "f4 c5", P: "a4@8 bb4@6 bb4 d5",
  Q: "eb5@3 eb5 ~@2 eb5@2 d5@4 ~@2 a4 d5", R: "e5@3 e5 ~@2 e5@2 gb5@4 a4@4", S: "a4@3 g4 a4 bb4 c5 d5",
  T: "f5@3 eb5 bb4@4", U: "eb5@3 d5 a4@4", V: "c5@2 bb4@2 a4 bb4 c5 d5", W: "g5@12 g4 bb4 d5 f5",
  X: "[g5@8 a5@14 g5 a5 bb5@16 gb4@2 g4@2 a4@2 bb4@2]/3", Y: "g5@12 bb4 db5 e5 g5", Z: "g5 a5",
  AA: "[g5@21 f5 eb5 d5 c5@4 f3 g3 bb3 c4]/2", AB: "d4@3 eb4 f4@3 eb4", AC: "d4@3 c4 f3@3 bb3", AD: "a3@3 bb3 c4@3 a3",
  AE: "a3@6 bb3 a3 g3@4 gb3 g3 a3 bb3", AF: "d4@3 eb4 f4@3 g4", AG: "a4@6 g4 a4 bb4@6 bb4@2",
  AH: "c5@6 bb4@2 a4@4 f4 g4 a4 c5", AI: "bb4 ~@2 c5@2 ~ bb4@2 a4@8", AJ: "[f4 g4 f4 eb4 d4@28]/2",
  AK: "[g5@21 f5 eb5 d5 c5@4 d5 a4 f4 d4]/2", AL: "g3", AM: "bb3", AN: "g3 gb3", AO: "f3",
  AP: "bb3 c4 d4 f4 d4 f4 bb4 f4 bb3 c4 d4 f4 d4 f4 bb4 f4",
  AQ: "bb3 c4 d4 eb4 g4 f4 bb4 g4 bb3 c4 d4 eb4 g4 f4 bb4 g4",
  AR: "bb3 c4 d4 f4 g4 a4 bb4 d5 bb3 c4 d4 f4 g4 a4 bb4 d5",
  AS: "bb3 c4 d4 eb4 g4 a4 bb4 eb5 bb3 c4 d4 eb4 g4 a4 bb4 eb5", AT: "[c5@7 bb4]/2", AU: "d5@3 c5@3 g4 a4",
  AV: "bb4 ~@2 bb4@3 c5@2 d5@2 c5@2 bb4@2 a4@2",
})).s("gm_viola").gain(0.35)

// other · cello · "Violoncello"
const cello = note(`<
  ~ A@2 B C A@2 D E F G H@2 F I J@2 F G H@2 K L ~ B M N O P Q B R B M N O S R B T B A U R V W X Y F G H@2 F I J@2 F G
  H@2 K L ~ B M N O P Q B R B M N O S R B R Z P Z D Z P A N AA AB AA AC AA AB AD D AE@2 AF@2 B U AG@2 B U AH@4 ~@8 F G
  H@2 F I J@2 F G H@2 K L ~ B M N O P Q B R B M N O S R B T B A U R V W X Y F G H@2 F I J@2 F G H@2 K L ~ B M N O P Q B
  R B M N O S R B R Z P Z D Z P A N AA AB AA AC AA AB AD D AE@2 AF@2 B U AG@2 B U AH@4 ~@8
>`.pickRestart({
  A: "bb3", B: "g3", C: "bb3 ~", D: "c4", E: "bb3 f3", F: "eb2 ~@2 eb2@2 ~ bb2@4 eb2@2 ~ bb2@3",
  G: "eb2 ~@2 eb2@2 ~ bb2@4 eb2@2 ~ eb2@3", H: "bb2 ~@2 bb2@2 ~ f3@4 bb2@2 ~ f3@3",
  I: "eb2 ~@2 eb2@2 ~ bb2@4 eb2@2 ~ eb2@2 f2", J: "g2 ~@2 g2@2 ~ d3@4 g2@2 ~ d3@3",
  K: "eb2 ~@2 eb2@2 ~ bb2@2 d3 ~@2 d3@2 ~ a2@2", L: "e3 ~@2 db3@2 ~ g2@2 d2@4 d3@4", M: "ab3", N: "a3", O: "g3 f3",
  P: "eb3", Q: "g3 gb3", R: "eb3 d3", S: "e3", T: "eb3@2 d3 ~", U: "f3", V: "g2 ~@2 g2@2 ~ d3@4 g2!3 g2@3",
  W: "bb2 ~@2 bb2@2 ~ bb2@4 eb2!3 eb2@3", X: "f2 ~@2 f2@2 ~ f2@4 c3 f2!2 c3@2 f2",
  Y: "eb2 ~@2 eb2@2 ~ eb3@2 d3 ~@2 d3@2 ~ bb2 a2", Z: "d3", AA: "d4", AB: "eb4", AC: "c4 d4", AD: "d4 eb4",
  AE: "[bb2@7 bb2]/2", AF: "c3/2", AG: "eb3/2", AH: "eb3/4",
})).s("gm_cello").gain(0.35)

// bass · acoustic bass · "Double Bass"
const bass = note(`<
  ~ A B C D E F G H I J K@2 I L M@2 I J K@2 N O ~ P Q R S T U V W P Q R S X U V W P Y Z AA P AB Z AC I J K@2 I L M@2 I J
  K@2 N O ~ P Q R S T U V W P Q R S X U V W AD AE AF AG AD AH AI AJ AK AL AK AM AK AL AK AN ~@14 AO@7 AP I J K@2 I L M@2
  I J K@2 N O ~ P Q R S T U V W P Q R S X U V W P Y Z AA P AB Z AC I J K@2 I L M@2 I J K@2 N O ~ P Q R S T U V W P Q R S
  X U V W AD AE AF AG AD AH AI AJ AK AL AK AM AK AL AK AN ~@14 AO@7 AP
>`.pickRestart({
  A: "g2@7 a2", B: "bb2@7 bb2", C: "c3@4 c3@2 c3 d3", D: "eb3 ~@2 eb3@3 ~@2 d3@2 ~@2 a2@2 ~@2",
  E: "g2 ~@2 g2@3 d3@2 ~@2 g2!3 d3@3", F: "bb2 ~@2 bb2@3 f3@2 ~@2 bb2!3 bb2@3", G: "f3 ~@2 c3@3 f2@2 ~@2 f2!3 f2@3",
  H: "eb2 ~@2 eb2@3 ~@2 d2@2 ~@2 d2@2 ~@2", I: "eb2 ~@2 eb2@2 ~ bb2@4 eb2@2 ~ bb2@3",
  J: "eb2 ~@2 eb2@2 ~ bb2@4 eb2@2 ~ eb2@3", K: "bb2 ~@2 bb2@2 ~ f3@4 bb2@2 ~ f3@3",
  L: "eb2 ~@2 eb2@2 ~ bb2@4 eb2@2 ~ eb2@2 f2", M: "g2 ~@2 g2@2 ~ d3@4 g2@2 ~ d3@3",
  N: "eb2 ~@2 eb2@2 ~ bb2@2 d3 ~@2 d3@2 ~ a2@2", O: "e3 ~@2 db3@2 ~ g2@2 d2@4 d3@4", P: "g2 ~@2 g2@2 ~ d3@4 g2!3 g2@3",
  Q: "ab2 ~@2 ab2@2 ~ ab2@4 eb3 ab2!2 ab2@3", R: "a2 ~@2 a2@2 ~ a2@4 d3 a2!2 d3@2 a2",
  S: "g2 ~@2 g2 ~@2 g2@2 f2 ~@2 f2 ~@2 f2!2", T: "eb3 ~@2 bb2 ~@2 bb2@4 eb3 bb2!2 bb2@3",
  U: "c3 ~@2 c3!2 ~ g3@2 d3 ~@2 d3!2 ~ a3@2", V: "g3 ~@2 g2!2 ~ g2@4 g2!3 g2@3",
  W: "eb2 ~@2 bb2@2 ~ eb3@2 d3 ~@2 a2@2 ~ bb2 a2", X: "e3 ~@2 bb2 ~@2 bb2@4 e3 bb2!2 bb2@3",
  Y: "bb2 ~@2 bb2@2 ~ bb2@4 f2!3 bb2@3", Z: "f2 ~@2 f2@2 ~ f2@4 c3 f2!2 c3@2 f2",
  AA: "eb2 ~@2 eb2@2 ~ eb2@2 d3 ~@2 d3@2 ~ d3 bb2", AB: "bb2 ~@2 bb2@2 ~ bb2@4 eb2!3 eb2@3",
  AC: "eb2 ~@2 eb2@2 ~ eb3@2 d3 ~@2 d3@2 ~ bb2 a2", AD: "g2 ~@2 g2@2 ~ d3@4 g2 ~ g2@2 d3@2",
  AE: "eb2 ~@2 eb2@2 ~ bb2@4 eb2!2 eb2@2 bb2@2", AF: "g2 ~@2 g2@2 ~ d3@4 g2!2 g2@2 g2@2",
  AG: "d3 ~@2 a2@2 ~ d2!6 a2@2 d3@2", AH: "eb2 ~@2 eb2@2 ~ bb2@4 eb2 ~ eb2@2 bb2@2",
  AI: "g2 ~@2 g2@2 ~ d3@4 g2 ~ g2@2 g2@2", AJ: "d3 ~@2 a2@2 ~ d2!2 d2@2 d2!2 a2@2 d3@2",
  AK: "g2 ~@2 g2@2 ~ d3@2 g2@2 g2!2 ~@2 d3@2", AL: "eb2 ~@2 eb2@2 ~ bb2@2 eb2@2 eb2!2 ~@2 bb2@2",
  AM: "d3 ~@2 d3@2 ~ a2@2 d3 ~@2 d3@2 ~ a2 bb2", AN: "f2 ~@2 f2@2 ~ f2@2 c3@2 f2 c3 ~@2 c3@2",
  AO: "c3 ~@2 c3@2 ~ c3@2 ~@2 c3@2 c3@4", AP: "eb2 ~@2 eb2@2 ~ eb2@2 d2@2 ~@2 bb2@2 ~@2",
})).s("gm_acoustic_bass").gain(0.36)

stack(violin, pizzicato_strings, violin_2, pizzicato_strings_2, pizzicato_strings_soft, viola, cello, bass)