Strudelify

linked horizon - guren no yumiya

Misc Cartoons

KeyF majorTempo180 bpm
0:00/0:00
// linked horizon - guren no yumiya — Misc Cartoons
// 180 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/1752191; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@21 A@2 B@2 C D E F G@2 H ~@8 I J K J K J K L M N O P@2 Q@2 R S@2 T U S@2 V W S@2 X@2 Y@2 Z AA AB C D AC AD AE AF AE
  F AE AG AH AI AJ@2
>`.pickRestart({
  A: "[eb4!2 g4 f4@2 d4!2 eb4@2 eb4 g4 f4 ~ d4@3]/2", B: "[c4@6 c4 bb3]/2", C: "ab4", D: "ab3@2 ab4 bb4",
  E: "bb4@2 gb4 ab4 ~ f4@2 gb4", F: "~ eb4 ~ f4 ~ db4@3", G: "[bb4@2 gb4 ab4 ~ f4 ~ gb4@2 f4@2 eb4@2 d4@3]/2",
  H: "g3 c4 f4 bb4 a4 gb4 d4 a3", I: "bb4@2 bb3 c4 ~ a3@2 bb3", J: "~ g3 ~ a3 ~ f3@3", K: "bb4@2 bb3 c4 ~ a3 ~ bb3",
  L: "~ a3 ~ g3 ~ a3@3", M: "g4@4 g4@2 a4 bb4", N: "a4@2 g4@2 gb4@8 d4@3 gb4", O: "g4@4 d4@3 g4 a4@4 d4@3 a4",
  P: "[bb4@4 d4@3 bb4 b4@6 c5@4 c5@2 c5@2 c5@2 g4@2 ~@2 c5@2 ~@2]/2",
  Q: "[bb4@2 bb4@2 bb4@2 f4@2 ~@2 bb4@2 ~@2 c5@4 c5@2 c5@2 c5@2 ab4@2 ab4@2 ~@2 c5 d5]/2", R: "eb5@3 d5@4 ~",
  S: "[c4!2 eb4 d4 ~ bb3 ~ c4@2 c4 eb4 d4 ~ bb3@3]/2", T: "c4!2 eb4 d4 ~ c4 ~ c4", U: "~ c4 ~ g3 ~ bb3@3",
  V: "c4!2 eb4 d4 ~ eb4 f4 bb3", W: "~@2 f4 g4@5 f4@4 bb4@2 ~@2", X: "[c4!2 eb4 d4 ~ c4 ~ c4@3 bb3 g3 ~ bb3@3]/2",
  Y: "[c4!2 eb4 d4 ~ bb3 ~ c4@2 c4 eb4 d4 ~ bb3@2 bb3]/2", Z: "c4@2 eb4 d4@2 c4 bb3 c4", AA: "c4", AB: "c4@2 c4 bb3",
  AC: "eb4", AD: "gb4 eb4@2 f4 ~ db4@3", AE: "bb4@2 gb4 ab4 ~ f4 ~ gb4", AF: "~ f4@2 eb4@2 d4@3",
  AG: "~ f4 ~ eb4 ~ d4@3", AH: "db5@2 a4 b4 ~ ab4 ~ a4", AI: "~ gb4 ~ ab4 ~ e4@3",
  AJ: "[db5@2 a4 b4@2 ab4@2 a4@2 ~@3 db4@4]/2",
})).s("gm_alto_sax").gain(0.18).pan(0.4)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note("<~@32 A B A B A B A B ~@47>".pickRestart({
  A: "bb4@2 bb3 c4 ~ a3 ~ bb3", B: "~ g3 ~ a3 ~ f3@3",
})).s("gm_alto_sax").gain(0.08).pan(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@21 A B C@2 D@2 E@2 F G ~@17 H I J K@2 L@2 M N@2 O P N@2 Q R S@2 T@2 U@2 V W X Y Z AA AB F AC E@2 AD@2 AE@2 AF@2
>`.pickRestart({
  A: "g3!2 ~@6", B: "ab3@2 ~ bb3 ~ bb3@3", C: "[c4@3 bb3]/2", D: "[ab3@6 ab3 bb3]/2", E: "[eb3@6 eb3 db3]/2", F: "gb3",
  G: "bb3", H: "g3@4 g3@2 a3 bb3", I: "a3@2 g3@2 gb3@8 d3@3 gb3", J: "g3 ~ a3 ~",
  K: "[bb3@2 ~@2 b3@3 c3@2 c3!3 g3 ~ c3 ~]/2", L: "[f3!3 d3 ~ f3 ~ ab3@2 ab3!3 eb3!2 ab3!2]/2", M: "ab3@3 g3@4 ~",
  N: "[g3@2 c4@4 bb3 ab3@9]/2", O: "bb3@4 bb3 c4 d4 eb4", P: "~ eb4 ~ d4 ~ d4@3", Q: "bb3@4 bb2 c3 d3 eb3",
  R: "~@2 ab3 bb3@5 bb3@8", S: "[c4!2 eb4 d4 ~ bb3 ~ c4@2 c4 eb4 d4 ~ bb3@3]/2",
  T: "[c4!2 eb4 d4 ~ c4 ~ c4@3 bb3 g3 ~ bb3@3]/2", U: "[c4!2 eb4 d4 ~ bb3 ~ c4@2 c4 eb4 d4 ~ bb3@2 bb3]/2",
  V: "bb3 ~@4 bb3 c4 d4", W: "c4", X: "c4 bb3", Y: "ab3", Z: "ab3@2 ab3 bb3", AA: "eb3", AB: "eb3@2 eb3 db3",
  AC: "b2@2 bb2!2", AD: "[eb3@6 bb2!2]/2", AE: "[gb3@6 gb3 e3]/2", AF: "[d3@2 ~ d3@2 ~ d3@3 ~@3 gb3@4]/2",
})).s("gm_tenor_sax").gain(0.43)

// other · tenor sax · "Tenor Saxophone" · soft notes
const tenor_sax_soft = note("<~@31 A B C B C B C B C D E D C D C D F ~@39>".pickRestart({
  A: "g3 c4 f4 bb4 a4 gb4 d4 a3", B: "g4@2 bb3 c4 ~ a3 ~ bb3", C: "~ g3 ~ a3 ~ f3@3", D: "~@2 bb3 c4 ~ a3 ~ bb3",
  E: "~ g3@2 a3@2 f3@3", F: "~ a3 ~ g3 ~ gb3@3",
})).s("gm_tenor_sax").gain(0.21)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@19 A@2 B C D@2 E@2 F@2 G@2 ~@16 H I J K L@2 M N O P Q R S P Q T ~ P Q R U V@2 ~ W X N Y I Z M AA F@2 AB@2 AC@2 AD@2
>`.pickRestart({
  A: "[~@2 f2@3 ~@3]/2", B: "g2!2 ~@6", C: "ab2@2 ~ bb2 ~ bb2@3", D: "[c3@3 bb2]/2", E: "[ab2@6 ab2 bb2]/2",
  F: "[eb2@6 eb2 db2]/2", G: "[bb2@6 bb2!2]/2", H: "~@5 a2@3", I: "eb2", J: "d2", K: "g2 a2", L: "[bb2@4 b2@3 c3@9]/2",
  M: "bb2", N: "ab2", O: "g2", P: "c3 ~ c3@4 c3@4 c3@4 c3@2", Q: "ab2 ab2@2 ab2@2 ab2@2 ab2",
  R: "bb2 ~ bb2@4 bb2@4 bb2@4 bb2@2", S: "~ eb3 ~ eb3 ~ d3@3", T: "bb2 bb2@2 bb2@2 bb2@2 ~",
  U: "eb3 eb3@2 eb3 d3 d3@2 d3", V: "[c3@7 ab2@4 bb2@2 ~@3]/2", W: "c3", X: "c3 bb2", Y: "ab2@2 ab2 bb2",
  Z: "eb2@2 eb2 db2", AA: "b2@2 bb2!2", AB: "[eb2@6 bb2!2]/2", AC: "[gb2@6 gb2 e2]/2",
  AD: "[d3@2 ~ d3@2 ~ d3@3 ~@3 gb2@4]/2",
})).s("gm_baritone_sax").gain(0.53)

// other · trombone
const trombone = note(`<
  ~@6 A@3 B@2 C D@3 E@3 F@3 G@2 H I J@2 K@2 L@2 ~@9 M N M N ~@3 O P Q R S ~ T U ~ V@2 W X V@2 Y Z AA@2 AB AC AD@2 ~ H I
  H AE AF AG AH AI K@2 AJ@2 AK@2 AL@2
>`.pickRestart({
  A: "[g3@2 f3 eb3 d3@2 c3 d3]/3", B: "[eb3@3 f3@3 g3@6 f3@3 ~]/2", C: "~ d3@3", D: "[g3@2 a3 bb3 c4@2 bb3 a3]/3",
  E: "[g3@2 a3 a3 f3@2 bb3@2]/3", F: "[ab3@2 bb2 c3 bb2@2 ~@2]/3", G: "[c4!2 eb4 d4@2 bb3!2 c4@2 c4 eb4 d4 ~ bb3@3]/2",
  H: "g3@2 eb3 f3 ~ d3@2 eb3", I: "~ c3 ~ d3 ~ bb2@3", J: "[g3@2 eb3 f3 ~ d3@2 eb3@2 d3@2 c3@2 bb2@3]/2",
  K: "[eb3@6 eb3 db3]/2", L: "[b2@6 bb2 ~]/2", M: "~@2 bb3 c4 ~ a3 ~ bb3", N: "~ g3 ~ a3 ~ f3@3", O: "~@5 gb3@3",
  P: "g3@4 g3@2 a3 bb3", Q: "a3 g3 gb3@4 ~@2", R: "~@4 d3@3 g3 a3@4 d3@3 a3", S: "bb3 ~@3", T: "bb2", U: "ab2",
  V: "[c4!2 eb4 d4 ~ bb3 ~ c4@2 c4 eb4 d4 ~ bb3@3]/2", W: "c4!2 eb4 d4 ~ c4 ~ c4", X: "~ c4 ~ g3 ~ bb3@3",
  Y: "c4!2 eb4 d4 ~ eb4 f4 bb3", Z: "~@2 f3 g3@5 f3@8", AA: "[c3!2 eb3 d3 ~ bb2 ~ c3@2 c3 eb3 d3 ~ bb2@3]/2",
  AB: "c3!2 eb3 d3 ~ c3 ~ c3", AC: "~ c3 ~ g2 ~ bb2@3", AD: "[c3!2 eb3 d3 ~ bb2 ~ c3@2 c3 eb3 d3 ~ bb2@2 bb2]/2",
  AE: "~ d3@2 c3@2 bb2@3", AF: "bb3@2 gb3 ab3 ~ f3@2 gb3", AG: "eb3@2 eb3 db3", AH: "b2", AI: "b2@2 bb2 bb3",
  AJ: "[b2@6 bb2 bb3]/2", AK: "[gb3@6 gb3 e3]/2", AL: "[d3@2 ~ d3@2 ~ d3@3 ~@3 gb3@4]/2",
})).s("gm_trombone").gain(0.53)

// other · trombone · soft notes
const trombone_soft = note("<~@30 A ~ B C B C B C B C ~@47>".pickRestart({
  A: "~@3 bb3", B: "~@2 bb3 c4 ~ a3 ~ bb3", C: "~ g3 ~ a3 ~ f3@3",
})).s("gm_trombone").gain(0.24)

// bass · tuba · "C Tuba"
const bass = note(`<
  ~@12 A ~@4 B C D@2 E F G@2 H@2 I@2 J@2 ~@9 K@2 L@2 M N M O P Q R S@2 T U V W@2 X Y W@2 X Z W@2 X Y AA AB AC AD AE AF
  AG P AH AI AJ AK@2 AL@2 AM@2 AN@2
>`.pickRestart({
  A: "c2@3 ~", B: "~ bb1@3", C: "ab1@3 ~", D: "[~@2 bb1@3 ~@3]/2", E: "c2!2 ~@5 ab2", F: "ab2@2 ~ bb1 ~ bb1@3",
  G: "[c2@6 c2 bb1]/2", H: "[ab2@6 ab2 bb2]/2", I: "[db2@6 eb2 db2]/2", J: "[b1@6 bb1 ~]/2", K: "d2@3 d2@4 d2",
  L: "bb1@3 bb1@4 bb1", M: "g2 ~@7", N: "~@6 f2 ~", O: "~@5 a1@3", P: "eb2", Q: "d2", R: "g1 a1",
  S: "[bb1@4 b1@3 c2@9]/2", T: "bb1", U: "ab1", V: "g2", W: "[c2@2 c2@4 bb1 ab1@9]/2", X: "bb1@4 bb1 c2 d2 eb2",
  Y: "~ eb2 ~ d2 ~ d2@3", Z: "~@2 f2 g2@5 f2@4 d2@4", AA: "c2 c2@2 c2@2 c2@2 c2", AB: "ab1 ab1@2 ab1@2 ab1@2 ab1",
  AC: "bb1 ~@4 bb1 c2 d2", AD: "c2", AE: "c2@2 c2 bb1", AF: "ab2", AG: "ab2@2 ab2 bb2", AH: "eb2@2 eb2 db2", AI: "b1",
  AJ: "b1@2 bb1 bb2", AK: "[eb2@6 eb2 db2]/2", AL: "[b1@6 bb1 bb2]/2", AM: "[gb2@6 gb2 e2]/2",
  AN: "[d2@2 ~ d2@2 ~ d2@3 ~@3 gb2@4]/2",
})).s("gm_tuba").gain(0.53)

// bass · tuba · "C Tuba" · soft notes
const bass_soft = note("<A ~@4 B C ~@4 B ~@18 D ~ E@2 F@2 E@2 F@2 ~@47>".pickRestart({
  A: "c2@3 ~", B: "~ bb1@3", C: "ab1@3 ~", D: "~@3 bb2", E: "d2@3 d2@4 d2", F: "bb1@3 bb1@4 bb1",
})).s("gm_tuba").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  A ~@4 B A ~@4 B A ~@4 B A ~@4 C D C D C D C E ~ F E F E F E F E G E G E G E H E I J K L I@3 ~ C D C D C D C ~ C D C D
  C D C D M N M N M N@2 I@6 O ~
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "x ~@3 x!3 ~", D: "x!2 ~ x ~ x ~@2", E: "x!4", F: "x ~@2 x ~ x ~ x", G: "x!3 ~ x ~ x ~",
  H: "x!3 ~@3 x!2", I: "x!8", J: "x!4 ~@2 x!2", K: "x ~ x!3 ~ x!2", L: "x ~ x!3 ~@3", M: "x ~ x!4 ~ x", N: "x ~ x!5 ~",
  O: "x ~ x!2 ~ x ~ x",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@23 A B A B A B A ~@2 A B A B A B A B C ~ C ~ C ~ D ~ E F ~@2 G@3 ~ A G A G A G B ~ A B A B A B A B H B H B H B H B H
  B H B H I ~
>`.pickRestart({
  A: "~@2 x!6", B: "~@2 x ~ x ~ x!2", C: "x!2 ~@6", D: "x!2 ~@4 x!2", E: "x!4 ~@2 x!2", F: "x!4 ~@4", G: "x!8",
  H: "~@2 x ~ x!2 ~ x", I: "~@2 x!2 ~ x!2 ~",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@55 [x!8 ~@8] ~@7 [~@3 x!9 ~@4] ~@22 [~@3 x!6 ~@7]>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@23 A B A B A B A C ~ A B A B A B A B ~@7 C D E F G ~@4 A ~ A ~ A ~ B ~ A B A B A B A B H B H B H B H B H B H B H A D
>`.pickRestart({
  A: "x", B: "x ~@2 x ~ x ~@2", C: "x!4", D: "~ x", E: "~@4 x ~ x!2", F: "x ~ x!3 ~ x!2", G: "x ~ x!3 ~@3",
  H: "x ~@2 x ~@2 x ~",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@55 [~@8 x!8] ~@7 [x!3 ~@9 x!4] ~@22 [x!3 ~@13]>").gain(0.8)

stack(
  alto_sax, alto_sax_soft, tenor_sax, tenor_sax_soft, baritone_sax, trombone, trombone_soft, bass, bass_soft, kick,
  hihat, mid_tom, open_hat, high_tom
)

More by Misc Cartoons