Strudelify

Seishun Oden

Twe'lv

KeyG♭ majorTempo152 bpm
0:00/0:00
// Seishun Oden — Twe'lv
// 152 bpm, 4/4, key Gb 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/6266254; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(152/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 · trombone
const trombone = note(`<
  ~@4 A@2 B@4 C D E@2 F@2 G H I J@2 K@2 L M N@2 L M N@2 O P Q R S P T U V W V ~ X Y Z AA@2 AB AC AD AE AF AG@4 AH AI@2
  AJ AK@2 AL
>`.pickRestart({
  A: "[~@4 db4@9 db4!3]/2", B: "[gb4@3 ~ db4@2 db4@4 d4@4 db4@6 ~@6 db4@2 db4@2 db4@2]/2", C: "b3@2 d4 gb4@2 gb4 e4 d4",
  D: "db4@2 gb4 a4@2 a4 ab4 gb4", E: "[ab4@4 eb4@5 ~ f4@2 f4@2 gb4@2]/2", F: "[ab4@9 ~ f4@2 f4@2 gb4@2]/2", G: "ab4",
  H: "~ a4!4 gb4!2 a4", I: "ab4!2 eb4 ab4", J: "[f4@2 f4@2 eb4 f4@2 gb4@2 ~@7]/2",
  K: "[f4!2 f4@2 eb4 f4@2 gb4@2 ~@5 ab4@2]/2", L: "~@5 db4@3", M: "~@5 gb4@3", N: "[~@6 db4 db4@5 ~@4]/2",
  O: "~@2 a4@3 ~ a4@3 ~ gb4@2 gb4@2 a4@2", P: "ab4@2 eb4 ab4@2 ~@3", Q: "~ f4@2 ab4@2 f4@2 f4", R: "gb4@2 ab4 a4@2 ~@3",
  S: "~@2 a4@2 a4@2 a4@2 a4@2 gb4@2 gb4@3 ~", T: "~ f4!2 gb4 ab4!2 gb4 f4", U: "gb4 ~ gb4 ~ gb3@3 ~@7 a3@2",
  V: "b3@3 ~@13", W: "~@7 a3", X: "~ b3!2 d4 gb4 ~ e4 d4", Y: "db4!2 gb4 db4@4 ~", Z: "~ ab4!4 f4@2 gb4", AA: "ab4/2",
  AB: "a4@2 a4!2 ab4!2 f4!2", AC: "gb4!3 a4 gb4@3 ~", AD: "a4!2 a4@2 ab4!2 f4@2",
  AE: "gb4 ~ gb4 ~ gb4@2 a4@4 gb4@4 ~@2", AF: "~ b3 db4 d4@2 db4!2 d4",
  AG: "[gb4 a4@2 gb4 a4@2 gb4 a4@2 ab4@16 ~ a3@4 ab3@2]/4", AH: "gb3@3 ~ f3@2 ab3@2", AI: "gb3/2", AJ: "gb4",
  AK: "[~@11 ab4@21]/2", AL: "ab4@3 ~@13",
})).s("gm_trombone").gain(0.52)

// other · trombone
const trombone_2 = note(`<
  ~@4 A@2 B@4 C D E@2 F G F G H I@2 J@2 K L M@2 K L N@2 O P Q@2 R P S T U ~ V W X Y Z AA AB AC AD AE AF AG AH@3 AI AJ
  AK@3 AL@2 AM
>`.pickRestart({
  A: "[~@4 ab3@9 ab3!3]/2", B: "[db4@3 ~ ab3@2 ab3@4 a3@4 ab3@4 db4@3 ~ db4@2 db4@3 ~ ab3@2 ab3@2]/2",
  C: "d3@2 gb3 b3@2 b3 a3 gb3", D: "a3@2 db4 e4@2 e4 eb4 db4", E: "[f4@2 ab3@3 ~@3]/2", F: "~ db4 f4 ab4 db5!2 b4 ab4",
  G: "b4 ~@7", H: "eb3 eb4 ab3 eb4", I: "[~@7 db4@2 ~@7]/2", J: "[ab3@4 gb3 ab3@2 a3@2 ~@5 f4@2]/2", K: "~@5 a3@3",
  L: "~@5 d4@3", M: "[~@6 bb3 a3@5 ~@4]/2", N: "[~@12 bb3@2 bb3@4 gb3@2 gb3@3 ~ gb3!5 ~ gb3 ~]/2",
  O: "~@2 e4@3 ~ e4@3 ~ db4@2 db4@2 e4@2", P: "eb4@2 bb3 eb4@2 ~@3", Q: "[~ db4@2 eb4@2 db4@5 eb4 e4@2 ~@3]/2",
  R: "~@2 e4@2 e4@2 e4@2 e4@2 db4@2 db4@3 ~", S: "~ db4!3 eb4!2 db4 c4", T: "db4 ~ db4 ~ db3@3 ~@7 a3@2",
  U: "gb3@3 ~@13", V: "~ b3!2 db4 d4!2 b3@2", W: "gb4@3 db4@3 ~ a3", X: "b3@3 ~@13", Y: "~@7 b3", Z: "db4@3 ~@13",
  AA: "d4 db4@2 gb4 f4@4", AB: "a4 ab4@2 a4 ab4@4", AC: "e4@2 e4!2 eb4!2 db4@2", AD: "db4!3 e4 db4@3 ~",
  AE: "e4!2 e4@2 eb4!2 db4@2", AF: "db4 ~ db4 ~ db4@2 e4@4 db4@4 ~@2", AG: "~ gb3 ab3 a3@2 ab3!2 a3",
  AH: "[db4@17 db4!7]/3", AI: "db4@3 ~ a3@4 a3@4 ab3@4", AJ: "gb3@3 ~ f3@2 ab3@2", AK: "gb3/3", AL: "[~@11 eb4@21]/2",
  AM: "eb4@3 ~@13",
})).s("gm_trombone").gain(0.4)

// other · trombone
const trombone_3 = note(`<
  ~@4 A@2 B@4 C D E@2 F@2 G@2 H I J K L M N O@2 M N P@2 Q R S T U R V W X Y Z AA Z AB AC AD AE AF AG AH AI AJ AK@4 AL
  AM@3 AN@2 AC
>`.pickRestart({
  A: "[~@4 f3@9 db3!3]/2", B: "[gb3@3 ~ db3@2 db3@4 d3@4 db3@4 db3@3 ~ db3@2 db3@2 db3@2 db3@2 db3@2]/2",
  C: "b2@2 d3 gb3@2 gb3 e3 d3", D: "db3@2 gb3 a3@2 a3 ab3 gb3", E: "[ab3@2 eb3@3 f3!2 gb3]/2",
  F: "[ab3@9 ~ f3@2 f3@2 gb3@2]/2", G: "[ab3@9 a3!4 gb3!2 a3]/2", H: "ab3!2 eb3 ab3", I: "f3@4 f3@4 eb3@2 f3@4 gb3 ~",
  J: "~ gb3 f3 d3 db3 b2 f3!2", K: "f3@2 f3@2 f3@4 eb3@2 f3@4 gb3 ~", L: "~@2 db3@2 db3 ~ db3 ~ db3@3 ~ db4@4",
  M: "~@5 gb3@3", N: "~@5 b3@3", O: "[~@6 f3 gb3@5 ~@4]/2", P: "[~@12 f3@2 gb3@4 db3@2 db3@3 ~ db3!5 ~ db3 ~]/2",
  Q: "~@2 a3@3 ~ a3@3 ~ gb3@2 gb3@2 a3@2", R: "ab3@2 eb3 ab3@2 ~@3", S: "~ f3@2 ab3@2 f3@2 f3", T: "gb3@2 ab3 a3@2 ~@3",
  U: "~@2 a3@2 a3@2 a3@2 a3@2 gb3@2 gb3@3 ~", V: "~ f3!2 gb3 ab3!2 gb3 f3", W: "gb3 ~ gb3 ~ gb2@3 ~@9",
  X: "~ b3@2 d4 gb4@2 e4 d4", Y: "db4@2 gb4 db4@4 a3", Z: "gb3@3 ~@13", AA: "~@7 a3", AB: "~@7 b3", AC: "ab3@3 ~@13",
  AD: "d3 db3@2 gb3 f3@4", AE: "a3 ab3@2 d3 db3@4", AF: "a3@2 a3!2 ab3!4", AG: "gb3!3 a3 gb3@3 ~",
  AH: "a3!2 a3@2 ab3!2 ab3@2", AI: "gb3 ~ gb3 ~ gb3@2 a3@4 gb3@4 ~@2", AJ: "~ b2 db3 d3@2 db3!2 d3",
  AK: "[gb3 a3@2 gb3 a3@2 gb3 a3@2 ab3@16 ~ a3@2 a3@2 ab3@2]/4", AL: "gb3@3 ~ f3@2 ab3@2", AM: "gb3/3",
  AN: "[~@3 db3@2 db3@2 ~@4 ab3@21]/2",
})).s("gm_trombone").gain(0.46)

stack(trombone, trombone_2, trombone_3)