Strudelify

Phoenix Song

Harry and the Potters

KeyA♭ majorTempo150 bpm
0:00/0:00
// Phoenix Song — Harry and the Potters
// 150 bpm, 3/4, key Ab 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 (4/4 at bar 1, 3/4 at bar 26) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1127086; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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.

// chords · piano
const piano = note(`<
  A@6 B@6 C@5 D@8 E F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L M N@2
  O@2 P@2
>`.pickRestart({
  A: "[~@2 ab3@3 c4@3 ~@4 bb4@7 eb5@3 eb5@7 g3@3 c4@3 ~@4 bb4@6 eb5@3 ~ eb5@6 f3@3 ~ ab3@3 ~@3 ab4@10 bb4@3 ~ ab4@3 db3@3 f3@3 ~ ab3@3 db4@3 [eb3,c5], ~@2 [ab4,c5]@10 ~@17 [ab4,c5]@10 ~@16 c5@10 ~@17 f5@7 eb5@7, ~@9 eb4@20 ~@6 eb4@20 ~@7 c4@20 ~@14]/6", // Cm Ab
  B: "[~@3 g3@3 bb3@3 eb4@3 ~ ab3@3 c4@3 ~@4 bb4@6 eb5@3 ~ eb5@6 g3@3 ~ c4@3 ~@3 bb4@7 eb5@3 eb5@7 f3@3 ab3@3 ~@4 ab4@10 bb4@3 ab4@3 ~ [db3,f5]@3, ~@3 bb4@10 [ab4,c5]@10 ~@16 [ab4,c5]@7 ~@20 c5@10 ~@20, ~@19 eb4@20 ~@7 eb4@20 ~@7 c4@20 ~@3]/6", // Db Ab
  C: "[f3@3 ab3@3 ~ db4@3 [eb3,c5]@3 g3@4 bb3@3 eb4@4 db3@4 f3@3 ab3@4 db4@3 db3@4 f3@3 ab3@4 db4@4 eb3@3 g3@4 bb3@3 eb4@4 eb3@3 g3@4 bb3@4 eb4@2, ~@3 eb5@7 ~@3 bb4@11 [ab4,c5]@21 c5@7 ~ [g4,bb4]@21 [g4,bb4]@6]/5", // Cm Ab Gm
  D: "[~ f3@4 ab3@3 c4@4 ab3@3 f3@4 ab3@4 c4@3 ab3@4 f3@3 ab3@4 c4@3 ab3@4 f3@4 ab3@3 c4@4 ab3@3 [db3,ab3]@11 [db2,db3]@4 ~@3 c5@4 bb4@3 ab4@4 [bb2,f3]@11 [bb1,bb2]@3 ~@4 c5@3 bb4@4 ab4@3 db5@4 c5@4 bb4@3 ab4@2, ~ [f4,c5]@21 ~ [f4,ab4]@7 [f4,c5]@14 [f4,ab4]@14 [ab4,db5]@18 ~@11 [g4,bb4]@18 ~@23, ~@73 [db2,db3]@14 ~@14 [bb1,bb2]@14 [db2,db3]@13]/8", // Db5 Db Bb5 Bb F5 Fm F5 Fm …
  E: "~@2 db5@3 c5@4 bb4@3 eb5@4, ~ [eb2,eb3]@7", F: "g5@3 ab5@2 g5@3 eb5@3 [ab3,c5]@5, ab2@5 c3@5 ~@6",
  G: "g5@3 ab5@2 g5@3 eb5@3 c5@2 eb5@3, ab2@5 c3@5 ~ ab3@5", H: "g5@3 ab5@2 g5@3 eb5@3 [f3,c5]@5, f2@5 ab2@5 ~@6",
  I: "g5@3 ab5@2 g5@3 eb5@3 c5@2 eb5@3, f2@5 ab2@5 ~ f3@5", J: "g5@3 ab5@2 g5@3 eb5@3 [g3,c5]@5, g2@5 eb3@5 ~@6",
  K: "g5@3 ab5@2 g5@3 eb5@3 [g3,c6]@5, g2@5 eb3@5 ~@6", L: "db6@3 f5@2 ab5@3 f5@3 [db3,eb6]@5, f2@5 ab2@5 ~@6",
  M: "db6@3 f5@2 ab5@3 f5@3 [db3,c6]@5, f2@5 ab2@5 ~@6", N: "[[f2,c3,ab4,c5] [f2,c3,ab4,c5], [f3,f5]]/2",
  O: "[[db3,f3,f4,ab4] [db3,f3,f4,ab4], [ab3,db5]]/2", P: "[[ab2,c3,c5,eb5] [ab2,c3,c5,eb5], [eb3,ab5]]/2",
})).s("gm_piano").gain(0.3)

stack(piano)