Strudelify
KeyA majorTempo160 bpm
0:00/0:00
// Wings of Freedom — Original Song: Linked Horizon
// 160 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (3/8 at bar 1, 6/8 at bar 2, 4/4 at bar 11, 6/8 at bar 58, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 6 "Trombone" trombone (copy of ch 3 "Horn in F" french horn)
// note: Transcription provider: pdmx. https://musescore.com/score/2798611; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@10 A B C D E F@2 G H I@2 J K L M N O P@2 Q R S T@2 U V W X Q S T@2 U V W X Q Y Z S@2 AA AB A B C D AC AD AE AF AG@2
  AH@2 AI AJ AK
>`.pickRestart({
  A: "a4", B: "c5", C: "c5@3 e5", D: "f5 g5", E: "a5!2 ~ a5", F: "~ a5 ~ a5", G: "a#5 g#5", H: "a5 ~@3", I: "c#4/2",
  J: "b3@3 a3", K: "g3@5 a3@2 b3", L: "f#3 c#4", M: "f#4 c#5", N: "e5", O: "b4 g#5",
  P: "f#5 g5 f#5 g5 f#5 g5 f#5 g5 f#5 g5 f#5 g5 f#5 g5 f#5 g5", Q: "g#5!3 a5 ~ f#5 ~ g#5", R: "~ d#5@2 d#5 e5@2 f#5@2",
  S: "c#5 d5 c#5 d5 c#5 d5 c#5 d5 c#5 d5 c#5 d5 c#5 d5 c#5 d5", T: "[g#5@2 f#5 e5@3 d5 c#5@3 ~ a5@2 c#6@2 a5]/2",
  U: "b5@2 a5 g#5@3 ~@2", V: "e5@3 a5@3 c#6 a5", W: "b5@2 a5 g#5@3 f#5@2", X: "f#5 e5@7", Y: "d5@3 f#5@3 a5@2",
  Z: "g#5 ~@3", AA: "a4@3 c#5", AB: "d5 e5", AC: "e5 g5", AD: "c5@7 d5 ~ e5@4 ~@3", AE: "~ f5@4 e5@4 d5@4 c5@3",
  AF: "~ c5@5 ~ b4 a4 b4@4 ~ g4 c5", AG: "[d5 ~ e5@4 e5@4 g5@4 g5@4 c5@7 d5 e5@4 ~@2]/2",
  AH: "[~@2 f5@4 ~ e5@4 d5@4 c5@4 e5@2 e5@2 e5@2 f5@2 ~@2 d5@2 ~]/2", AI: "~ e5@2 ~@2 b4@4 ~ b4@2 c5@4",
  AJ: "d5@2 e5!3 f5 ~ d5", AK: "~ e5@3 ~@4",
})).s("gm_clarinet").gain(0.47).pan(0.4)

// other · french horn · "Horn in F"
const french_horn = note(`<
  A@3 B C D@3 B C E F G H E F G H I ~ J K L M N O P Q@2 R S T U@2 V W X Y R T U@2 V W X Y R T Z AA@2 F AB E F G H AC AD
  AE AF AG@2 AH@2 AI AJ AK
>`.pickRestart({
  A: "[~@15 g3@2 ~ d4@2 e4@10 g4@5 g4@5 c4@8, ~@17 c4@2 ~@29]/3", B: "d4@2 e4@5 ~@5 f4@4", C: "~ e4@5 d4@5 c4@5",
  D: "[c4@7 ~ b3 a3 b3@5 g3@2 ~ d4@2 e4@5 e4@5 g4@5 g4@5 c4@8, ~@17 c4@2 ~@29]/3", E: "e4", F: "a4", G: "c5",
  H: "c5 b4", I: "a4 ~@3", J: "c#4@3 f#4@3 c#4@2", K: "e4@3 d4 b3@3 a3", L: "b3@5 c#4@2 d4",
  M: "c#4@2 f#3@2 ~ c#4@2 d4", N: "c#4@2 f#3 e4@3 d4@2", O: "e4@3 b3", P: "e4 g#4", Q: "c#4/2",
  R: "c#4!3 d4 ~ b3 ~ c#4", S: "~ g#3@2 g#3 a3@2 b3@2", T: "c#4@3 f#4@3 a4@2",
  U: "[g#4@2 f#4 e4@3 d4 c#4@3 ~ c#4@2 d4@2 c#4]/2", V: "c#4@3 b3 b3@2 ~@2", W: "c#4@3 f#4@2 a4@2 a4",
  X: "b4@2 a4 g#4@2 f#4!2 e4", Y: "f#4 e4@5 b3@2", Z: "g#4@2 ~ a4@2 g#4 f#4 g#4", AA: "[g#4 f#4@3]/2", AB: "a4 g#4",
  AC: "e4 g4", AD: "c4@7 d4 ~ e4@4 ~@3", AE: "~ f4@4 e4@4 d4@4 c4@3", AF: "~ c4@5 ~ b3 a3 b3@4 ~ g3 c4",
  AG: "[d4 ~ e4@4 e4@4 g4@4 g4@4 c4@7 d4 e4@4 ~@2]/2",
  AH: "[~@2 f4@4 ~ e4@4 d4@4 c4@4 a3@2 a3@2 a3@2 a#3@2 ~@2 g3@2 ~]/2", AI: "~ a3@2 ~@2 e3@4 ~ e3@2 f3@4",
  AJ: "g3@2 a3!3 a#3 ~ g3", AK: "~ a3@3 ~@4",
})).s("gm_french_horn").gain(0.72).pan(0.8)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@10 A B C D ~ E F G H I ~@9 J K L M@2 N O P Q R L M@2 N O P Q R L S T@2 A U A B C D V W X Y Z@4 AA AB AC
>`.pickRestart({
  A: "a3", B: "a4", C: "c4", D: "c5 b4", E: "~@14 e5!2", F: "e5@14 e5!2", G: "c5@6 c5!2 b4@4 b4@4", H: "a4 ~@3",
  I: "c#4", J: "c#5!3 d5 ~ b4 ~ c#5", K: "~ g#4@2 g#4 a4@2 b4@2", L: "c#4@3 f#4@3 a4@2",
  M: "[g#4@2 f#4 e4@3 d4 c#4@3 ~ c#4@2 d4@2 c#4]/2", N: "c#4@3 b3 b3@2 ~@2", O: "c#4@3 f#4@2 a4@2 a4",
  P: "b4@2 a4 g#4@2 f#4!2 e4", Q: "f#4 e4@5 b3@2", R: "c#4!3 d4 ~ b3 ~ c#4", S: "g#4@2 ~ a4@2 g#4 f#4 g#4",
  T: "[g#4 f#4@3]/2", U: "a4 g#4", V: "c4 b3", W: "a3@8 ~ g3@7", X: "~ f3@4 g3@4 a3@4 f#3@3", Y: "~ g3@8 b3@7",
  Z: "[~@2 c4@4 c4@4 b3@4 b3@4 a#3@4 a#3@4 g#3@4 g#3@4 f3@4 ~ a3@4 g3@4 g3@4 a4@2 a4@2 a4@2 a#4@2 ~@2 g4@2 ~]/4",
  AA: "~ a4@2 ~@2 e4@4 ~ e4@2 f4@4", AB: "g4@2 a4!3 a#4 ~ g4", AC: "~ a4@3 ~@4",
})).s("gm_trumpet").gain(0.64).pan(0.3)

// bass · tuba
const bass = note(`<
  ~ A@4 B@4 C D@2 E F D@2 E G E H@2 I J H@2 I K L M L M H N O P H N O L H N O P H N O L Q R S@2 T U D@2 E F V W X Y Z@4
  AA AB AC
>`.pickRestart({
  A: "[~@2 c3@5 b2@5 a2@5 g2@5 f2@5 f#2@5]/4", B: "[g2@5 g2@5 c3@5 b2@5 a#2@5 g#2@5 f2@2]/4", C: "~ a2@5 g2@5 b2@5",
  D: "a2/2", E: "a2", F: "f2 g2", G: "a#2 g#2", H: "f#2!8", I: "g2!8", J: "g2!6 a2 b2", K: "g2!4 c#3@2 b2@2",
  L: "c#3!3 d3 ~ b2 ~ c#3", M: "~ g#2 ~ g#2 a2@2 b2@2", N: "d2!8", O: "a1!8", P: "e2!8", Q: "d2@3 d2@3 d2@2",
  R: "e2 ~@3", S: "f#2/2", T: "f#2", U: "d2 e2", V: "c3 b2", W: "a2@8 ~ g2@7", X: "~ f2@8 f#2@7", Y: "~ g2@8 g2@7",
  Z: "[~@2 c3@8 b2@8 a#2@8 g#2@8 f2@4 ~ a2@4 g2@4 g2@4 a2@2 a2@2 a2@2 a#2@2 ~@2 g2@2 ~]/4",
  AA: "~ a2@2 ~@2 e2@2 ~@3 e2@2 f2@4", AB: "g2@2 a2!3 a#2 ~ g2", AC: "~ a2@3 ~@4",
})).s("gm_tuba").gain(0.45)

stack(clarinet, french_horn, trumpet, bass)