Strudelify

KiãåKiLL

Hiroyuki Sawano

KeyG majorTempo140 bpm
0:00/0:00
// KiãåKiLL — Hiroyuki Sawano
// 140 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Horn in F" named as a brass, played on brass section (its string ensemble 1 patch is not one); ch 2 "Horn in F" named as a brass, played on brass section (its pizzicato strings patch is not one); ch 3 "B♭ Trumpet" named as a brass, played on trumpet (its tremolo strings patch is not one); ch 5 "B♭ Trumpet" named as a brass, played on trumpet (its pizzicato strings patch is not one); ch 7 "Trombone" named as a brass, played on trombone (its string ensemble 1 patch is not one); ch 8 "Trombone" named as a brass, played on trombone (its overdriven guitar patch is not one); ch 9 "Bass Trombone" named as a bass, played on electric bass finger (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/3254706; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 159 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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 · brass section · "Horn in F"
const brass_section = note(`<
  A@8 B@17 C D C E F D G H@4 I J K@2 H@2 ~@9 L M N@2 O P Q R S T S U V W X Y ~@4 Z AA Z@2 ~@16 B@17 C D C E F D G H@4 I
  J K@2 H@2 ~@9 L M AB@2 O P Q R S T AC AD AE AF AG AH ~@4 Z AA Z@2 ~
>`.pickRestart({
  A: "a3 c4 b3 a3!2 b3!2 a3!2 c4 b3 a3", B: "a3@3 a3!3 f3@3 f3!3", C: "a3@3 a3!3 f3@3 f3!3, g4 f#4",
  D: "a3@3 a3!3 f3@3 f3!3, d#4 e4", E: "a3@3 a3!3 f3@3 f3!3, f4 b3", F: "a3@3 a3!3 f3@3 f3!3, ~ f4",
  G: "a3@3 a3!3 f3@3 f3!3, a#4 a4", H: "[d#5 e5@3]/2", I: "d#5 e5", J: "g5 f#5", K: "[f5@3 b4]/2",
  L: "a4@3 a4!3 e4@3 e4 ~ e4, a3@6 ~@4 e4 ~, ~@7 g4", M: "a4@3 a4!3 [e4,f4]@3 e4!3, f#4 ~",
  N: "[c5@3 c5!3 a4@3 a4!3 c5@3 c5!3 [e4,g4]@3 g4!3, a4 e4@2 ~]/2", O: "a4@3 a4!3 e4@3 e4 ~ e4, c5@6 a4@4 e4 ~, ~@7 b4",
  P: "a4@3 a4!3 e4@3 e4 ~ e4, c5@6 a4@4 e4 ~, ~@7 a#4", Q: "g4@3 g4!3 e4@3 e4!3, b4 f5", R: "c5@3 c5!3 a4@3 a4!3, e5",
  S: "c5@3 c5!3 a4@3 a4!3, g#4", T: "c5@3 c5!3 a4@3 a4!3, a4 ~", U: "c5@3 c5!3 b4@3 b4!3, a#4!2",
  V: "c5@3 c5!3 a4@3 a4!3, ~ g#4", W: "a4@3 a4!3 e4@3 e4!3, b4 ~", X: "a4@3 a4!3 e4@3 e4!3, g4",
  Y: "a4@3 a4!3 e4@3 e4!3, b4", Z: "g4 f#4", AA: "f4 e4",
  AB: "[c5@3 c5!3 a4@3 a4!3 c5@3 c5!3 [g4,a4]@3 g4!3, a4@2 e4@4 ~ b4]/2", AC: "g#4", AD: "c5 b4", AE: "c5 g#4",
  AF: "b4 e4", AG: "g4", AH: "b4",
})).s("gm_brass_section").gain(0.15)

// other · brass section · "Horn in F"
const brass_section_2 = note(`<
  ~@25 A B A C D B E ~@19 F@2 G@2 H I H J F I K L ~@8 A E A@2 ~@33 A B A C D B E ~@19 H@2 M@2 N O N P K I K Q ~@8 A E
  A@2 ~
>`.pickRestart({
  A: "g4 f#4", B: "d#4 e4", C: "f4 b3", D: "a3 f4", E: "f4 e4", F: "e4", G: "d4", H: "a3", I: "a4", J: "c5 a4",
  K: "g#4", L: "a#4 a4", M: "g3", N: "e3", O: "d3", P: "c4", Q: "c5 g#4",
})).s("gm_brass_section").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@16 A B A B A B A C D@2 E F G H D@2 I@2 D@2 E J K@2 D@2 ~@9 L M N@2 O P Q R S T U@2 ~@3 V ~@4 W X Y Z ~@24 AA AB AA
  AB AA AB AA AC D@2 E F G H D@2 I@2 D@2 E J K@2 D@2 ~@9 L M N@2 O P Q R S T U@2 ~@3 V ~@4 W X Y Z ~
>`.pickRestart({
  A: "e3@3 e3!3 e3@3 g3!3", B: "g3@3 f#3!3 f3@3 e3!3", C: "g3@3 f#3!3 f3@3 b3@3", D: "[d#5 e5@3]/2", E: "d#5 e5",
  F: "b4 g5", G: "f#5", H: "d#5 b4", I: "[d#4 e4@3]/2", J: "g5 f#5", K: "[f5@3 b4]/2", L: "a4@4 e5@3 g5",
  M: "f#5@2 f5 e5", N: "[a5@2 e5@4 a5 b5]/2", O: "c6@4 a5@3 b5", P: "c6@4 a5@3 a#5", Q: "b5 f5", R: "e5",
  S: "a4@4 e5@3 a5", T: "g5@4 f#5@3 e5", U: "[b5 a5@3]/2", V: "g5", W: "g#5!2", X: "g#5 a5", Y: "f5!2", Z: "e5!2",
  AA: "e4@3 e4!3 e4@3 g4!3", AB: "g4@3 f#4!3 f4@3 e4!3", AC: "g4@3 f#4!3 f4@3 b4@3",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  ~@16 A B A B A B A B C@2 D E F G C@2 H@2 C@2 D I J@2 C@2 ~@9 K@2 L@2 K@2 M N@4 O N K@3 ~@32 P Q P Q P Q P Q P Q P Q P
  Q P Q H@2 C@2 D I J@2 C@2 ~@9 R@2 S T R@2 U S@3 ~@15
>`.pickRestart({
  A: "e3@3 e3!3 e3@3 g3!3", B: "g3@3 f#3!3 f3@3 e3!3", C: "[d#5 e5@3]/2", D: "d#5 e5", E: "b4 g5", F: "f#5",
  G: "d#5 b4", H: "[d#4 e4@3]/2", I: "g5 f#5", J: "[f5@3 b4]/2", K: "a3@3 a3!3 e3@3 e3!3", L: "c4@3 c4!3 g3@3 g3!3",
  M: "g3@3 g3!3 e3@3 e3!3", N: "c4@3 c4!3 a3@3 a3!3", O: "c4@3 c4!3 b3@3 b3!3", P: "e4@3 e4!3 e4@3 g4!3",
  Q: "g4@3 f#4!3 f4@3 e4!3", R: "a4@3 a4!3 e4@3 e4!3", S: "c5@3 c5!3 a4@3 a4!3", T: "c5@3 c5!3 g4@3 g4!3",
  U: "g4@3 g4!3 e4@3 e4!3",
})).s("gm_trumpet").gain(0.4)

// other · trombone
const trombone = note(`<
  ~@4 A B A B A B A B A B A B C D C D C D C D C D C D C D C D ~@10 E@2 F@2 G H I J ~ K@2 L@2 M N O P@4 Q R S@2 K T U T U
  V W V@2 ~@8 X Y X Y X Y X Y A B A B A B A B Z AA Z AA AB AC AD T AD AE AD T AD AE AD T ~@10 E@2 F@2 G H I J ~ AF@2 AG
  AH AI AJ AK AL AD@4 AM AN@2 AD T U T U V W V@2 ~
>`.pickRestart({
  A: "a1 ~ a1 ~", B: "a1@6 f1@3 c2!3", C: "[a1,e3]@3 e3!3 [a1,e3]@3 g3!3", D: "g3@3 f#3!3 [f1,f3]@3 [c2,e3]!3, a1 ~",
  E: "[f#2 f2 c2@4 d2@2]/2", F: "[e2@3 a1]/2", G: "e1", H: "f1", I: "f#1", J: "a1", K: "a3@3 a3!3 e3@3 e3!3, a1",
  L: "c4@3 c4!3 g3@3 g3!3, g1", M: "a3@3 a3!3 e3@3 e3!3, e1", N: "a3@3 a3!3 e3@3 e3!3, d1",
  O: "g3@3 g3!3 e3@3 e3!3, e1", P: "c4@3 c4!3 a3@3 a3!3, a1", Q: "c4@3 c4!3 b3@3 b3!3, a1",
  R: "c4@3 c4!3 a3@3 a3!3, c2", S: "a3@3 a3!3 e3@3 e3!3, d2", T: "a2!2", U: "a2 f2 e2 d2", V: "g4 f#4", W: "f4 e4",
  X: "a2!3 a2@3 a2!3 a2@3", Y: "a2!4 e2!2 f2!2 e2 c2!3", Z: "[a1,e4]@3 e4!3 [a1,e4]@3 g4!3",
  AA: "g4@3 f#4!3 [f1,f4]@3 [c2,e4]!3, a1 ~", AB: "a1 ~ a1 ~, a2", AC: "a1@6 f1@3 c2!3, ~ a2", AD: "a2", AE: "~ a2",
  AF: "a4@3 a4!3 e4@3 e4!3, a2", AG: "c5@3 c5!3 a4@3 a4!3, g2", AH: "c5@3 c5!3 g4@3 g4!3, g2",
  AI: "a4@3 a4!3 e4@3 e4!3, e2", AJ: "a4@3 a4!3 e4@3 e4!3, d2", AK: "g4@3 g4!3 e4@3 e4!3, e2",
  AL: "c5@3 c5!3 a4@3 a4!3, a2", AM: "c3", AN: "d3",
})).s("gm_trombone").gain(0.64)

// other · trombone
const trombone_2 = note(`<
  ~@20 A B A C A B A D A B A D ~@19 E@2 F@2 G H I J ~@3 K ~@4 L M L M L M L M ~@28 I N I O I N I P I N I P ~@19 Q@2 F@2
  I H I J ~@8 L M L M L M L M ~
>`.pickRestart({
  A: "[e2,a2]", B: "~ [e2,a2]", C: "[e2,a2] [d#2,a2]", D: "[e2,a2]!2", E: "c3", F: "d3", G: "g2", H: "d2", I: "e2",
  J: "c4", K: "a#3!2", L: "a2!2", M: "a2 f2 e2 d2", N: "~ e2", O: "e2 d#2", P: "e2!2", Q: "a2",
})).s("gm_trombone").gain(0.4)

// bass · electric bass finger · "Bass Trombone"
const bass = note("<~@20 A B A C A B A D A B A D ~@19 E@2 F@2 A G A E@5 H I@2 E ~@92>".pickRestart({
  A: "e2", B: "~ e2", C: "e2 d#2", D: "e2!2", E: "a2", F: "g2", G: "d2", H: "c3", I: "d3",
})).s("gm_electric_bass_finger").gain(0.3)

// other · string ensemble 1 · "Violin"
const string_ensemble_1 = note(`<
  ~@8 A@24 B@4 C D E@2 B@2 ~@9 F G H@2 I J K L ~@32 A@24 B@4 C D E@2 B@2 ~@9 M G N@2 O P Q R ~@17
>`.pickRestart({
  A: "c4@3 c4!3 a3@3 a3!3", B: "[d#5 e5@3]/2", C: "d#5 e5", D: "g5 f#5", E: "[f5@3 b4]/2", F: "e4@4 e5@3 g5",
  G: "f#5@2 f5 e5", H: "[a5@2 e5@4 e4 g4]/2", I: "c5@4 a4@3 b4", J: "c5@4 a4@3 a#4", K: "b4 f4", L: "e5",
  M: "a4@4 e5@3 g5", N: "[a5@2 e5@4 a5 b5]/2", O: "c6@4 a5@3 b5", P: "c6@4 a5@3 a#5", Q: "b5 f6", R: "e6",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violoncello"
const string_ensemble_1_2 = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@10 C@2 D@2 E F G H ~ I@2 J K I@2 L J@4 M J I@3 A B A
  B A N A N ~@16 A B A B A B A B A B A B A B A B A B A B A B A B ~@10 C@2 D@2 E F G H ~ I@2 J K I@2 L J ~@8 A B A B A N
  A N ~
>`.pickRestart({
  A: "a2!3 a2@3 a2!3 a2@3", B: "a2!4 e2!2 f2!2 e2 c2!3", C: "[a3 g#3 e3@4 g3@2]/2", D: "[f#3@3 b2]/2", E: "e3", F: "f3",
  G: "a#3 c3", H: "a#2 a2", I: "a2@3 a2!3 e2@3 e2!3", J: "c3@3 c3!3 a2@3 a2!3", K: "c3@3 c3!3 g2@3 g2!3",
  L: "g2@3 g2!3 e2@3 e2!3", M: "c3@3 c3!3 b2@3 b2!3", N: "a2!4 e2!2 d2!2 e2 c2!3",
})).s("gm_string_ensemble_1").gain(0.53)

// drums · kick
const kick = s("bd").struct(`<
  ~@24 A B A C A B A C A B A C A B A C ~@11 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C ~@76
>`.pickRestart({
  A: "x", B: "~ x", C: "~ x ~ x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B A C A D A E A B A C A D A E A B A C A D A E A B A C A D A E A B A C A D A E A E ~ A B A C A D A E A B A C A D
  A E A B A C A D A E A B A C A D A E ~@76
>`.pickRestart({
  A: "x ~ x!5 ~ x!2 ~ x", B: "x ~@3 x ~ x ~@3 x!3 ~@3 x ~ x ~ x ~ x ~", C: "x!7 ~@5 x ~@5 x ~ x ~ x ~",
  D: "x ~@3 x ~ x!7 ~@3 x ~ x ~ x ~ x ~", E: "x!7 ~@5 x ~@3 x ~ x ~ x ~ x ~",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A B A C A D A E ~@151>".pickRestart({
  A: "x ~ x!5 ~ x!2 ~ x", B: "x ~@3 x ~ x ~@3 x!3 ~@3 x ~ x ~ x ~ x ~", C: "x!7 ~@5 x ~@5 x ~ x ~ x ~",
  D: "x ~@3 x ~ x!7 ~@3 x ~ x ~ x ~ x ~", E: "x!7 ~@5 x ~@3 x ~ x ~ x ~ x ~",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<~@63 x ~@95>").gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@51 A ~@19 A ~@3 A ~@58 B@6 ~@19>".pickRestart({
  A: "x", B: "x!3 ~",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@51 A ~@7 A ~@3 A ~@3 A ~@7 A ~@58 A ~@7 A ~@3 A ~@3 A ~@7 A>".pickRestart({
  A: "x",
})).gain(0.64)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct(`<
  ~@26 A ~@7 A ~@18 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@77
>`.pickRestart({
  A: "~ x",
})).gain(4.08)

// drums · whistle
const whistle = s("ballwhistle:1").struct(`<
  ~@24 A ~ A ~@5 A ~ A ~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@77
>`.pickRestart({
  A: "~ x ~@2",
})).gain(0.83)

// drums · guiro
const guiro = s("guiro:4").struct("<~@24 A ~@7 A ~@18 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@79>".pickRestart({
  A: "~ x",
})).gain(13.52)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@51 A ~@7 A ~@7 A ~@3 A ~ A ~ A ~@83>".pickRestart({
  A: "x",
})).gain(0.93)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct("<~@59 x ~@7 x ~@91>").gain(0.93)

stack(
  brass_section, brass_section_2, trumpet, trumpet_2, trombone, trombone_2, bass, string_ensemble_1,
  string_ensemble_1_2, kick, snare, snare_soft, hihat, ride, crash, agogo_bells, whistle, guiro, woodblocks,
  woodblocks_2
)