Strudelify
KeyA♭ majorTempo180 bpm
0:00/0:00
// Bakudanma — Yorushika (ãããã)
// 180 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5836764; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 160 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/4)

// 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 · "Piano, Grand Piano"
const piano = note(`<
  A@2 B@2 C@2 D E@2 F@2 G@3 H A@2 B@2 I@2 J@2 K L K M N O P@2 Q R S T U R V W@2 R S T U R X Y Z E@2 F@2 G@3 H AA@2 AB AC
  AB AD AE@2 K L K M N O AF AG@2 Q R S T U R V W@2 R S T U R X Y AH AI AJ AK AL AM AJ AN AO AP AQ AR AS AT AU AV AW AX@3
  AY N O P@2 Q AZ@2 BA@2 BB BC BD@2 BE S T U BF@2 R S T U R V BG BH BI BJ BK BL BM BN Y Z E@2 F@2 G@3 H BO@4 BP@3
>`.pickRestart({
  A: "[[ab2,db3,f3]@8 [bb2,eb3,bb3]@6 [ab2,f3,ab3]@9 ~@9]/2", // Db Eb5 Db
  B: "[[ab2,db3,f3]@8 [bb2,eb3,bb3]@6 [ab2,f3,ab3]@8 ab2 bb2 f3@2 f3@2 f3@2 f3@2]/2", // Db Eb5 Db
  C: "[[ab2,db3,f3]@8 [bb2,eb3,bb3]@6 [ab2,f3,ab3]@9 ~@3 c6@6]/2", // Db Eb5 Db
  D: "~@10 [eb5,ab5]@2 [c5,f5] [eb5,ab5] [c5,f5]@2, [ab2,db3] ~, f3@3 [bb2,eb3,bb3]@3 ~@2, ~ eb4 ~@2", // Ab5 F5 Ab5 F5 Db5 Eb5
  E: "[[ab1,db2,bb4,eb5]@2 [c5,f5]@2 [bb4,eb5]@2 [ab1,eb2,ab4,c5]@2 [ab1,eb2]@2 [ab1,eb2]@2 c5@2 ~@2 [eb1,ab1]@2 [c5,f5]@2 ~@2 [eb1,ab1]@2 [eb1,ab1]@2 [eb1,ab1,eb5,ab5]@2 [c5,f5] [eb5,ab5] [c5,f5]@2, ~ [ab1,db2]@2 ~ [c5,eb5]@2 [ab1,eb2,ab4]@2 ~ [eb1,ab1]@2 [ab4,c5]@2 ~ [eb1,ab1]@2, ~@7 [c5,eb5]@2 ~ [bb4,eb5]@2 ~@4]/2", // Absus4 F5 Eb5 Ab Ab5 F5 Ab5 F5 …
  F: "[[ab1,db2,bb4,eb5]@2 [c5,f5]@2 [bb4,eb5]@2 [ab1,eb2,ab4,c5]@2 [ab1,eb2]@2 [ab1,eb2]@2 c5@2 ~@2 [eb1,ab1]@2 [eb5,ab5]@2 c5@2 [eb1,ab1]@2 [eb1,ab1]@2 [eb1,ab1,eb5,ab5]@2 [c5,f5] [eb5,ab5] [c5,f5]@2, ~ [ab1,db2]@2 ~ [c5,eb5]@2 [ab1,eb2,ab4]@2 ~ [eb1,ab1]@2 [ab4,c5]@2 ~ [eb1,ab1]@2, ~@7 [c5,f5]@2 ~ eb5@2 ~@4]/2", // Absus4 F5 Eb5 Ab Ab5 F5 Ab5 F5 …
  G: "[[ab1,db2,bb4,eb5] [c5,f5] [bb4,eb5] [ab1,eb2,ab4,c5] [ab1,eb2]!2 c5 ~ [eb1,ab1] [c5,f5] ~ [eb1,ab1]!2 [eb1,ab1,eb4,ab4] ~@2 [ab1,db2] [eb4,ab4] ~ [ab1,eb2]!2 [ab1,eb2,ab3] c4!2, ~ [ab1,db2]@2 ~ [c5,eb5]@2 [ab1,eb2,ab4]@2 ~ [eb1,ab1]@2 [ab4,c5]@2 ~ [eb1,ab1,f4,bb4]@2 ~ [ab1,db2]@2 [ab4,c5]@2 ~@3, ~@7 [c5,eb5]@2 ~ [bb4,eb5]@2 ~@3 [ab4,c5]@2 ~ [f4,bb4]@2 ~@2 [ab1,eb2]@2]/3", // Absus4 F5 Eb5 Ab Ab5 F5 Ab5 Db5 …
  H: "[f1,bb1,bb3] [f1,bb1,bb3]@2 [eb1,ab1,ab3]!2 [ab1,eb2,ab3] [eb1,ab1] [ab1,eb2], ~@3 ab3", // Bb5 Ab5
  I: "[[ab2,db3,f3]@8 [bb2,eb3,bb3]@6 [ab2,f3,ab3]@9 ~ [ab2,ab3]@2 [eb2,ab4]@6]/2", // Db Eb5 Db Ab Ab5
  J: "[[db2,f4]@3 [eb2,g4]@4 [ab1,ab3]@2 [c2,c4] [eb2,eb4] [ab2,ab4]@3 [c2,c4] [c2,eb4]]/2", // Db Eb Ab C Eb Ab C Cm
  K: "bb1 bb1@2 [bb1,ab3] [bb1,c4] [bb1,eb4] [bb1,bb3] [bb1,ab3], bb3@3 ~@5", // Bb7 Bbsus2 Eb5 Bb Bb7
  L: "c2 ~@2 c2!3 [c2,c4] [c2,eb4], bb3 ab3 c4 ~, ~ c2@2 ~@5", M: "c2 ~ eb4 [c2,ab4] c2!4, bb3 ~ c5 ab4, ~ c2@2 ~@5",
  N: "[ab1,eb4,ab4]@3 [ab1,db5]@2 eb1 g1 ab1, ~@6 ab4@9 ~, ~@5 c5@3", // Ab5 Db5
  O: "eb4@2 ab4 bb1@2 ab1 bb1 c2, ab3 ~, bb1@3 c5 ~@4",
  P: "[[db2,db4] c4 ab3 [db2,db4] [db2,c4] [ab1,ab3] [bb1,ab3] [eb2,bb2]@2 ab3!3 bb3 ab3 c4 ab3, ~ db2@2 ~@13]/2", // Db Dbmaj7 Ab Bb7 Eb5
  Q: "c4 f4 c4 eb4 c4 eb4 c4@2", R: "[db2,ab3]!2 [db2,bb3] [db2,ab3]!3 [db2,c4] [db2,ab3]",
  S: "[eb2,ab3] [ab1,ab3] [eb2,bb3] ab3!2 c4 bb3 ab3, ~@3 ab2@3 bb2@2", // Ab5 Ab Eb5
  T: "[ab1,ab3]!2 [ab1,bb3] [ab1,ab3]!3 [bb1,c4] [c2,ab3]", // Ab Absus2 Ab Bbsus2 Fm
  U: "[c2,ab3] [f1,ab3] [c2,bb3] [eb2,ab3] [ab2,ab3] [eb2,c4] [c2,bb3] [eb2,ab3]", // Fm C7 Ab5 Ab Cm C7 Ab5
  V: "[eb2,ab3] [ab2,ab3] [bb2,bb3] ab3!2 c4 [bb2,bb3] [ab2,ab3], ~@3 eb3@3 ~@2", // Ab5 Ab Bb Ab
  W: "[[ab1,ab3]!2 [ab1,bb3] ab3!2 [eb2,ab3] c4 ab3 ab3 [eb2,ab3,eb4] [bb3,c4] [ab3,bb3] [ab1,ab3] [ab1,c4] [bb1,bb3] [eb2,ab3], ~@3 c2@2 ~ c2@2 ~@8, ~@7 [ab1,f4]@2 ~ ab1@2 ~@4]/2", // Ab Absus2 Ab5 Bbsus2 Absus2 Ab Bb Ab5 …
  X: "[eb2,ab3] [c3,ab3] [bb2,bb3] [ab2,ab3] [eb2,ab3] [c3,c4] [bb2,bb3] [ab2,ab3]", // Ab5 Fm Bb Ab Ab5 C Bb Ab
  Y: "[eb2,ab3]!2 [eb2,bb3] [ab2,ab3] [ab2,c4] ab3 bb3 [eb3,ab3,eb4], ~@5 bb2@2 ~", // Ab5 Eb5 Ab Ab5
  Z: "~@2 [eb3,ab3,eb4]@2 ~@2 [eb3,ab3,eb4]@2 ~@2 [eb5,ab5]@2 [c5,f5] [eb5,ab5] [c5,f5]@2", // Ab5 F5 Ab5 F5
  AA: "[~ eb4 ab4 eb4 ~ eb4 bb4 [eb4,ab4]@2 ab4 db5 [ab4,c5]@2 bb4 f4 ab4]/2", AB: "~ eb4 ab4 eb4 ~ eb4 bb4 eb4",
  AC: "~ eb4 db5 c5@2 db5 eb5@2", AD: "~ eb4 db5 [ab4,c5]@2 bb4 ab4@2",
  AE: "[~ ab5 g5 eb5 c5 bb4 ~@3 eb4 f4 ab4 ~@2 [c2,c4] [c2,eb4], ~@3 bb4 ~@4, ~@7 ab4@4 ~@5]/2", // C Cm
  AF: "[db2,db4] [c2,c4] [ab1,ab3] [db2,db4] [c2,c4] [ab1,ab3] [db2,db4] [c2,c4]", // Db C Ab Db C Ab Db C
  AG: "[[ab1,ab3] [db2,db4] [c2,c4] [ab1,ab3] [db2,db4] [c2,c4] [db2,ab3] [eb2,bb2]@2 ab3!3 bb3 ab3 c4 ab3]/2", // Ab Db C Ab Db C Db5 Eb5
  AH: "~ [eb3,ab3,eb4] ~ [eb3,ab3,eb4] ~ f4 eb4 c4", // Ab5
  AI: "[db2,ab3]@3 [db2,ab3] [eb2,bb3] eb4 c4 [eb2,bb3], ~@5 eb2@2 ~", // Db5 Eb5
  AJ: "[f2,ab3] f2@2 [f2,ab3] f3 ab3 bb3 c4, ~@2 f2 c2", // Fm
  AK: "db2@3 [db2,eb3] [eb2,f3] ab3 bb3 [eb2,ab3], ab3@2 ~@3 eb2@2 ~", // Dbsus2 Ebsus2 Ab5
  AL: "[f2,bb3]@2 ab3@2 bb3@2 c4@2 ~ f2 [f2,f4]@2 eb4@2 c4@2, ~ f2@3 ~@2 f2@2", // Bb5 F
  AM: "db2@3 [db2,bb3] [eb2,c4] eb4 c4 [eb2,bb3], bb3@2 ~@3 eb2@2 ~", // Gb Cm Eb5
  AN: "db2@3 [db2,eb5] [eb2,c5] bb4 eb5 [eb2,c5], ab3@2 ~@3 eb2@2 ~", // Dbsus2 Cm
  AO: "[ab2,eb5] [ab2,c5] [g2,bb4] eb2@2 [c2,eb5] [eb2,g5] [ab2,ab5], ~@3 ab4 ~@4", // Ab5 Ab Gm Cm Eb Ab
  AP: "bb5!3 [db2,ab5] [eb2,ab5] ab5 g5 [eb2,g5], db2@3 ~@2 eb2@2 ~", // Db5 Ab5 Eb
  AQ: "[f2,g5] [f2,eb5]@2 f2 ~ eb5 c5 eb5, ~@3 c5@2 ~@3, ~@2 f2 c2", // Fsus2 F7
  AR: "db2@6 db2@2 c5 eb5 g5 ab5 g5 eb5 c5 eb5, c5@2 ~@2 eb2 eb2@2 eb2",
  AS: "[f2,c5]@2 ab4@2 bb4 ab4 f4 ab4 f4 [f2,eb4] f4 eb4 f4 eb4 f4 eb4, ~ f2@3 ~ f2 f2@2", // F5 F7
  AT: "db2@3 db2 eb2 eb2@2 eb2, f4 ~ g4@2",
  AU: "f2@2 f2@4 db5 c5 [f2,db5]@3 ~@3 g4@2, eb5@6 f2@2 ~@3 ab4@3 ~@2, ~@3 c2", // Db
  AV: "db2@3 db2 [eb2,e4] db4 c4 [eb2,bb3], ab4@4 ~ eb2@2 ~", // Emaj7 Eb5
  AW: "[ab2,ab3]!2 [ab2,bb3]!2 [g2,c4] [eb2,c4] [f2,db4] [eb2,eb4]", // Ab Absus2 C5 Cm Db Eb
  AX: "[bb1@2 eb4@2 bb3@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 c2@2 c2@4 c2@2 c2@2 c2@2 c2@2 c2@2 bb1@2 ~@2 g3 eb3 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2, ~ bb1@2 ab3@14 bb1@2 ~@5]/3",
  AY: "c2 c2@2 c2!3 [c2,f4] [c2,g4]", // F5 C5
  AZ: "[[db3,ab3]!2 bb3 ab3!2 c4@2 [eb3,ab3]@2 [eb3,ab3] [eb3,bb3] ab3 ~ c4 ~ ab3, ~@2 db3@2 db3@3 ~@4 eb3@3 [eb3,bb3,g4]@2, ~@6 [ab3,ab4] ~]/2", // Db5 Ab5 Eb5 Eb Ab
  BA: "[[f3,ab3]!2 bb3 ab3 [f3,ab3] [f3,c4]@2 [c3,ab3]@2 [c3,ab3] [c3,bb3] ab3 ~ c4 ~ ab3, ~@2 f3@2 ~@7 c3@3 [c3,bb3,c4]@2, ~@6 [ab3,eb4] ~]/2", // Fm F5 Fm C7 Ab5
  BB: "[db3,ab3]!2 bb3 ab3!3 c4 ab3, ~@2 db3 ~", BC: "ab3!2 bb3 ab3 ~ c4 bb3 ab3, eb3!2 [eb3,ab3,ab4] g4",
  BD: "[[f3,ab3]!2 bb3 ab3!3 ~ ab3 ab3 [eb2,ab3,eb4] ~ ab3 ab1 [ab1,c4] bb1 [eb2,ab3], ~@2 f3 c4 ~@2 ab3 bb3, ~@7 [ab1,f4]@2 ~ [ab1,bb3,c4]@2 ~@4]/2", // Fm Ab5 Ab Ab5 Db Ab
  BE: "~@2 [db2,bb3] [db2,ab3]!3 [db2,c4] [db2,ab3]", // Gb Db5 Dbmaj7 Db5
  BF: "[ab3!2 [db3,bb3] ab3!2 [f3,ab3] c4 ab3 ab3 [ab3,eb4] ~ ab3 [eb3,ab3]!2 ~ ab3, db3@2 ~ f3@2 ~@2 eb4@2 ~ bb3@2 ~@2 bb3@2]/2", // Gb Fm Ab5
  BG: "[ab3,f4] [ab3,eb4] [bb3,c4] [eb2,ab3,bb3] [ab2,ab3,f4] [eb3,ab3,eb4] c4 [ab3,bb3,f4], ab1@2 ~ ab2", // Db Ab5 Bbsus2 Ebsus4 Db Ab5 Bb7
  BH: "[f2,ab3,f4] [f2,ab3,eb4,f4] [g2,bb3,c4,g4] [g2,ab3,bb3,g4] [ab2,ab3,ab4] [ab2,c4,ab4] [bb2,bb3,bb4] [bb2,ab3,bb4]", // Fm Fm7 C7 Gm Ab Bb Bb7
  BI: "[ab3,db4] ab3 [g3,bb3] [f3,ab3] [db3,ab3]!2 c4 ab3, ~@3 f3", // Db5 Gm Fm Db5
  BJ: "[eb3,ab3] ab3 bb3 ab3!2 [c4,eb4] ~ ab3, ~@3 eb4@2 ~ bb3@2", // Ab5 Cm
  BK: "[f3,ab3] ab3 bb3 ab3!2 [ab2,ab3] c4 ab3, ~ c3@2 f2@2 ~ c3@2", // Fm Ab
  BL: "[c2,ab3] [f1,ab3] [c2,bb3] [eb2,ab3] [ab2,ab3] [eb2,c4] [ab2,bb3] [eb2,ab3]", // Fm C7 Ab5 Ab Cm Absus2 Ab5
  BM: "[db2,ab3] db2 [db2,bb3] [db2,ab3]!3 [db2,c4,g4] [db2,ab3,f4], [c4,f4]@11 ~@5, ~ ab3@2 ~@5", // Db5 Gb Db5 C Db F5
  BN: "[db3,ab3,eb4] [c3,ab3,c4] [bb2,bb3] [ab2,ab3] [db3,ab3] [c3,ab3,c4] [ab3,bb3] ab3, ~@3 ab2", // Dbsus2 Fm Bb Ab Db5 Fm Absus2
  BO: "[[ab2,ab3]@2 [ab2,ab3]@2 ab2@2 ~@2 ab3@2 c4@2 eb4@4 ab3@2 c4@2 eb4@2 ab4@4 [eb4,eb5]@2 c5 eb5 [eb4,c5]@2 [ab3,bb4]@2 [ab3,c5]@2 ~@4 ab3@2 c4@2 ~@4 ab3@2 c4@2 eb4@2 ab4@4 [ab2,eb4]@2 [ab2,c4]@2 [bb2,eb4]@2, ~@2 db4@2 ~@10 c4 ~@3 [db4,bb4]@2 ~@2 eb4@2 ~@8, ~@3 ab2@18 ~@2 ab4@3 ~@6, ~@19 ab4@2 g4@3 ~@8]/4", // Ab Eb Cm Absus2 Ab Ab5 Ab Eb5 …
  BP: "[ab3!2 db4@2 ab3 c4 eb4@2 ab3 c4 eb4 ab5 g5 [eb4,eb5] [c4,c5] [eb4,eb5] ab3!2 ~@2 ab3 [c4,ab4] [eb4,g4] [ab3,ab4], ab2@23 ~, ~@11 ab4@2 ~@3 bb4@2 [db4,ab4]@2 ~@4, ~@19 bb4@2 ~@3]/3", // Eb C Eb Fm Eb Ab Db5
})).s("gm_piano").gain(0.2)

stack(piano)