Strudelify

The Divine Princess and the Five Champions

Manaka KataokaYasuaki IwataHajime Wakai

KeyF majorTempo73 bpm
0:00/0:00
// The Divine Princess and the Five Champions — Manaka KataokaYasuaki IwataHajime Wakai
// 73 bpm, 3/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: metre changes (1/4 at bar 1, 4/4 at bar 1, 3/4 at bar 29) are rendered on a constant 3/4 grid of one bar per cycle
// note: ch 5 "Piano" named as a piano, played on piano (its pizzicato strings patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5860012; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 58 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/3)

// 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 · flute
const flute = note("<~@22 A@3 B@3 ~@30>".pickRestart({
  A: "[~@8 c6@4 ~@4 eb6@38 ~@2 c6@4 ~@4 eb6@38 ~@2 ab5@15 ~ bb5@15 ~ gb5@8]/3",
  B: "[ab5@4 e5@4 db5@5 ~ gb5@5 ab5@5 a5@4 b5@4 db6@3 eb6@2 ~ e6@2 gb6@30 ~@2 b6@46 ~@26]/3",
})).s("gm_flute").gain(0.4)

// other · flute · soft notes
const flute_soft = note("<~@11 A@6 ~@41>".pickRestart({
  A: "[~@24 g5@30 ~@2 d5@53 ~@3 g5@8 ab5@8 bb5@13 ~ gb5@5 bb5@5 g5@30 ~@2 d6@91 ~@13]/6",
})).s("gm_flute").gain(0.2)

// chords · french horn · "Horn in F"
const french_horn = note("<A@2 B@2 ~@18 C@6 ~@30>".pickRestart({
  A: "[~@41 [d3,g3] ~ [d3,g3] ~@2 [d3,g3]@5 ~@5 [c3,f3]@5 ~@4 [d3,g3]@19 ~ [eb3,ab3]@11]/2", // G5 F5 G5 Ab5
  B: "[~@3 [gb3,b3]@2 ~@3 [d3,g3]@64 ~@24]/2", // B5 G5
  C: "[~@2 [eb4,ab4] ~ [db4,gb4]@10 [eb4,ab4] ~ [db4,gb4]@10 [b3,e4]@4 [db4,gb4]@4 [e4,ab4]@20 [ab4,b4]@12 ~@6]/6", // Ab5 Gb5 Ab5 Gb5 E5 Gb5 E Abm
})).s("gm_french_horn").gain(0.45)

// other · trombone · "B♭ Trumpet"
const trombone = note("<A@4 ~@16 B@8 ~@30>".pickRestart({
  A: "[~@22 g2 ~ g2 ~ g2@58 ~ ab2@19 g2@64 ~@24]/4",
  B: "[d4 ~@2 d4 ~@2 d4 ~ d4@56 ~@8 eb4@16 f4@16 ~@24 [eb4,eb5] ~@2 [eb4,eb5] ~@2 [eb4,eb5] ~ [eb4,eb5]@64 [e4,e5]@16 [gb4,gb5]@16 [gb4,gb5]@80 b4@48 ~@24]/8", // Eb E Gb
})).s("gm_trombone").gain(0.4)

// chords · piano
const piano = note("<~@3 A@3 B@7 C@4 D E@7 ~@3 F@8 G@3 H@6 I J@4 K@2 L M N@4>".pickRestart({
  A: "[~@6 d4@5 ~@3 [c4,eb4]@4, ~@3 g2@8 g2@7, ~@4 d3@7 ~ eb3@6, ~@5 g3@6 ~@2 ab3@5]/3", // Cm
  B: "[~@8 gb4 ~@31 [b3,d4]@32 ~@59 bb4@5 ~@32 [b3,d4]@32 ~@32 eb4@32 gb4 ~@31 [b3,d4]@32 g2@8, ~@8 g2@8 d3@56 g2@32 [eb4,ab4]@8 bb4@14 gb4@11 ~@23 a3@40 ~@16 ab3@48 ~@16 g3@48 ~@8, ~@9 g4@63 ~@24 [c4,g4]@40 ~@16 g3@48 ~@24 c4@40 ~ g4@63 ~@8, ~@3 g3@6 ~ eb3@7 [g2,g4]@8 g2@8 g2 ~@2 a3@5 ~, ~@4 a3@5 ~@2 ab3@6 ~ d3@7 ~ eb3@7 ~ d3@7 ~]/7", // Bm Ab5 C5 G
  C: "[~@16 eb4@8 ~@27 bb4@5 ~@35 d5@29 ~@48 a3@16 a4 [d4,g4,b4]@6 ~, eb3@32 bb4@14 gb4@11 ~@15 g3@16 [b3,g4]@2 b4@31 g4@15 g3@8 bb3@8 [c4,g4] [f4,a4]@7 d3@24 ~@8, ~ ab3@6 g2@8 [g2,gb4]@8 g2, ~@16 g4@40 g4@24 a3@40 ~ eb4@63 ~@8, ~@3 [c4,eb4,ab4]@4 ~ d3@7 ~ eb3@7 ~]/4", // G Em C5 F Gmaj7 Ab
  D: "d3 g3 g2 ~@2 [d4,g4,b4], [c4,f4,a4]@19 ~@5, ~@24 c3@23 ~", // G F
  E: "[c3@8 g2@8 d3@8 g3@15 ~ [eb3,bb3,eb4,g4]@15 ~ [f3,c4,f4,a4]@15 ~ [g2,d4,g4,b4]@8 d3@8 g3@8 g2@8 ~@16 [d4,g4,b4]@8 c3@8 g2@8 d3@8 g3@15 ~ [g3,eb4,g4,bb4]@15 ~ [a3,f4,a4,c5]@15 ~ [ab2,c4,eb4,ab4]@8 eb3@8 ab3@15 ~@17 [c4,eb4,ab4]@8 ~@8 ab2@8 eb3@8 ab3@15 ~ [e3,b3,e4,ab4]@15 ~ [gb3,db4,gb4,bb4]@15 ~@9, [c4,f4,a4]@19 ~@21 [c4,f4,a4]@19 ~@5 [c4,f4,a4]@19 ~@21 [bb3,db4,gb4]@19 ~@5 [bb3,db4,gb4]@19 ~@21, ~@104 c3@23 ~@105 ab2@30 ~@74]/7", // Eb F G Eb F Ab E Gb …
  F: "[~@40 b5@25 ~@25 e4@17 e4@8 ~@46 a4@4 ~@25 eb4@25 ~@13 ab5@4 ~@25 e5@8 ~@25 b5@25 ~@13 db6@4 ~@9 b3@8 ~@8 [c4,gb5,a5]@8 ~@9 e4@8 ab4@2, ~@15 [gb3,a4]@50 [ab3,gb4]@25 [ab4,b4]@25 [a2,b4]@34 e4@17 ~@58 b3@42 ~@8 eb4@42 ~@8 e4@42 ~@18, ~@16 [e4,b4,e5]@49 ~@2 a4@49 ~@8 e3@42 ~@49 [e3,b4]@34 gb5@17 ~@50 e5@25 eb5@25 ~@18, ~@17 ab5@48 ~@3 b4@2 gb5@45 ~@25 b3@13 gb4@4 ab4@8 ~@50 ab4@25 ab4@25 ~@17 gb4@33 ~@17 [a4,db6]@17 [b3,e5,b5]@17 [db4,e5,ab5]@18, ~@69 e5@46 ~@17 a3@33 [b2,a3,gb4,b4]@50 ~@17 [e4,ab5]@33 [ab3,b4,eb5]@50 ~ [a3,db5]@50 ~@18]/8", // Gbdim Gbm Ab7 Abm Asus2 E5 A E5 …
  G: "[~@15 ab5@8 [e5,ab5,e6]@8 ~@42 [db5,a5]@8 ~@26 e5@25 [c4,c5,e5,g5]@12, ~@7 b3@25 [a3,gb5,eb6]@50 [ab3,b4,b5]@50 ~@12, ~@7 [e5,e6]@16 ~@17 gb4@42 ~@8 e4@42 ~@12, ~@48 [b4,e5,db6]@33 ~@17 ab4@33 ~@13, ~@57 [eb5,b5]@25 ~@62]/3", // E Gbm C Ebdim Abm E Dbm7 Abm
  H: "[~@13 a5@12 ~@4 a5@8 ~@17 e5@8 ~@18 b2@8 ~@12 ab4@4 ~@26 e4@8 ~@25 b4@25 ~@12 db5@4 ~@26 [gb4,a4]@8 ~@25 e5@17 [ab4,e5]@8, ~@13 [d4,d5,gb5]@25 b3@25 [b3,e5]@8 gb3@17 [a2,b3]@50 [a2,eb4]@50 [a2,db4]@33 [e4,b4]@17 ab4@25 b2@25, ~@25 g5@13 [gb5,b5]@50 ~@33 gb4@17 ~@50 e4@25 eb4@25 ~@17 ab3@33, ~@38 e5@16 b4@10 eb5@24 ~@17 [a3,ab4]@33 ~@17 b3@33 a3@17 [a3,db5]@33 ~@8 e3@42, ~@23 gb4@21 ~@4 e3@21 ~@4 gb3@21 ~@4 e3@21 [db3,e4]@25]/6", // Gbm Dbm D E5 Asus2 Adim A E5 …
  I: "~@7 [db4,a4], [gb4,eb5], a2@25 [a2,eb4,b4]@23, ~ gb3@5, ~@17 [e4,db5]@31", // Gbm Ebm B7 Dbm
  J: "[~@19 e5@8 ~@17 [db4,a4]@8 ~@23 ab4@2 eb4@17 [a3,eb4]@8 [b3,e4]@8 ~ [e4,ab4]@8 [ab4,b4]@8 [b4,e5]@8 ~ ab5@8 [ab2,ab5,b5,e6]@8 ~@34 gb3@6, ~@2 [ab2,b3,b4]@25 [a2,e4]@25 [b2,b3,ab4]@25 [b2,a4]@25 [e2,ab3]@34 [e3,b4,e5]@16 a5@17 [e5,a5,db6]@23, ~@10 e3@17 db4@17 ~@29 gb4@4 ~@42 e4@33 [a2,eb6]@40, ~@36 e3@17 ~@8 ab3@17 ~@33 [b2,b3]@42 ~@8 gb3@25 ~@6, ~@119 e3@8 ab4@25 gb5@25 [b2,eb5,gb5,b5]@15]/4", // Gbm Adim E5 E Abm E5 E Abm …
  K: "[~@2 [c3,db5,gb5,a5]@8 ~@18 [b2,ab5,b5,e6]@11 ~ [bb2,ab4,db5,e5]@39 ~@17, ~@10 [db3,e5]@29 ~@57, ~@5 [ab5,b5]@9 ~@34, ~@19 ab3@21 ~@56]/2", // Gbm E Bbm7b5 Dbm Abm
  L: "~@11 e4@3 gb4@2", M: "~ b2@3 ~@6 ab3@6, ~ [b3,e4,ab4]@15, ~ b2@3, ~@7 e3@9",
  N: "[gb4@4 ab4@4 ~ [c3,c4,e4,a4]@26 ~ [b2,gb3,a3,eb4]@29 ~@79 [b2,e3,b3,e4,ab4]@47 ~, ~@11 e2@16 ~@5, ~@66 e4@36 a3@89 ~, ~@66 b3@23 e3@26 b3@14 a4@62 ~, ~@66 a3@11 b2@67 ~@48]/4", // Am B7 E
})).s("gm_piano").gain(0.3)

// other · tremolo strings · "Violin"
const tremolo_strings = note("<~@16 A B C@7 D@3 ~@12 E@5 F G H@2 I J@2 ~@6>".pickRestart({
  A: "~ c5@4 b4", B: "a4@5 b4", C: "[a4@5 g4@2 a4@2 b4 a4@5 b4 a4@5 bb4@2 c5@2 c6 eb6@5 c6 eb6@5 b4@2 db5@2 eb5]/7",
  D: "[e5@4 db5@4 a4@5 ~ eb5@5 e5@5 gb5@4 ab5@4 a5@3 b5@3 db6@2 eb6@32 gb6@48 ~@24]/3",
  E: "[~@40 e4@50 eb4@33 ~@17 db4@25 eb4@8 e4@8 ~ gb4@8 ab4@33 a4@8 ~ b4@8]/5", F: "eb5@17 db5@8 b4@17 a4@6",
  G: "~@2 b4@25 e4@17 ~@4", H: "[~@4 e4@25 eb4@25 e4@33 ~ ab4@8]/2", I: "e5@8 eb5@17 db5@8 b4@15",
  J: "[~@2 a4@8 b4@18 e5@6 ~@6 e4@41 ~@15]/2",
})).s("gm_tremolo_strings").gain(0.3)

// other · tremolo strings · "Violin" · soft notes
const tremolo_strings_soft = note("<~@6 A@8 B@3 ~@22 C@2 ~@12 D E@4>".pickRestart({
  A: "[~ d4@8 eb4@8 d4@4 g4@2 d5@2 f5@2 eb5@2 d5@2 c5@2 b4@8 c5@7]/8", B: "[~ b4@8 bb4@4 ~@5]/3",
  C: "[~@19 b4@25 ~@4]/2", D: "~ e4@15", E: "[~@3 e4@9 eb4@10 e4@42]/4",
})).s("gm_tremolo_strings").gain(0.15)

// other · viola
const viola = note("<~@16 A B C@6 D@4 ~@12 E@5 F G H@3 I@2 ~ J K@3 L>".pickRestart({
  A: "~@5 d4", B: "c4@5 d4", C: "[c4@5 bb3@2 c4@2 d4 c4@5 d4 c4@5 bb3@2 c4@2 eb4 db4@5 eb4 db4@4]/6",
  D: "[~ b3@2 db4@2 e4@10 ab4@6 ~@3]/4", E: "[~@40 a3@50 gb3@33 ~@17 e3@25 gb3@8 ab3@8 ~ a3@8 ab3@33 a3@8 ~ b3@8]/5",
  F: "a3@25 b3@23", G: "~@2 ab3@25 a3@17 ~@4", H: "[~@4 ab3@25 a3@25 ab3@33 ~ b3@16 a3@25 b3@8 ~ db4@6]/3",
  I: "[~@2 eb4@8 e4@18 ab4@6 ~@6 db4@41 ~@15]/2", J: "~ ab3@15", K: "[~@3 a3@9 a3@10 a3@26]/3", L: "ab3@47 ~",
})).s("gm_viola").gain(0.25)

// other · viola · soft notes
const viola_soft = note("<~@6 A@8 B@3 ~@41>".pickRestart({
  A: "[~ g3@8 ab3@8 g3@6 b3@2 d4@2 c4@2 bb3@2 c4@2 b3@8 c4@7]/8", B: "[~ b3@4 b3@4 bb3@4 c4@4 ~]/3",
})).s("gm_viola").gain(0.15)

// other · cello · "Violoncello"
const cello = note("<A@7 ~@9 B C D@6 E@3 ~@13 F@5 G H I@3 J@2 ~@6>".pickRestart({
  A: "[~@22 g2 ~ g2 ~ g2@58 ~ ab2@19 g2@192 ~@40]/7", B: "~@5 g2", C: "c3@5 g2",
  D: "[c3@5 eb2@2 f2@2 g2 c3@5 g2 c3@5 g2@2 a2@2 ab2 ab2@5 ab2 ab2@4]/6", E: "[~ ab2@2 bb2@2 a2@10 ~@3]/3",
  F: "[~@40 a2@50 a2@33 ~@17 a2@50 db3@25 b2@25]/5", G: "a2", H: "~@2 ab2@25 a2@17 ~@4",
  I: "[~@4 b2@25 b2@25 e2@50 a2@25 b2@15]/3", J: "[~@2 c3@8 db3@18 b2@6 ~@6 bb2@41 ~@15]/2",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello" · soft notes
const cello_soft = note("<~@6 A@8 B@3 ~@9 C@2 ~@25 D E@3 F>".pickRestart({
  A: "[~ g2@8 g2@8 g2@8 g2@8 g2@8 g2@7]/8", B: "[~ g2@8 g2@8 ~]/3", C: "[~ a2@2 ~]/2", D: "~ b2@15",
  E: "[~@3 c3@9 b2@10 e3@26]/3", F: "b2@47 ~",
})).s("gm_cello").gain(0.15)

stack(
  flute, flute_soft, french_horn, trombone, piano, tremolo_strings, tremolo_strings_soft, viola, viola_soft, cello,
  cello_soft
)