Strudelify
KeyA majorTempo90 bpm
0:00/0:00
// dancing queen — Natarsha Mann Tiffany Lam Mikayla Elliott
// 90 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5150407; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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
const piano = note(`<
  A B C D E F G H I@2 J@2 K L M N O@2 P@2 K Q M R S T U V U W U V X Y Z B C AA E F G ~ O@2 P@2 K Q M R S T U V U W U V X
  Y Z B C AA E F G
>`.pickRestart({
  A: "[e3,c#5]@2 b4 ~ e3@2 e3@2, ~ e3 ~@2, ~@3 b4@3 ~@2", // C#m
  B: "[c#3,c#5]@2 b4 ~ c#3@2 [c#3,c#5]@2, ~ c#3 ~@2, ~@3 b4@3 ~@2", // C#
  C: "[f#3,a4]@3 ~@3 g#4@2 [f#3,a4]@3 ~@3 g#4@2, ~@3 b4@3 ~@5 b4@3 ~@2, ~ f#3 ~ f#3", // F#m
  D: "~@2 f#4@2 b2@4 [b2,c#5]@3 ~ b2@4, [b2,a4]@4 ~@7 b4@3 ~@2", // Bsus2 B7
  E: "[d3,g#4]@3 ~@5 d3@4 d3@4, ~@3 a4@3 a4@9 ~, ~ d3 ~@2", // Ddim
  F: "[b2,g#4]@3 ~@5 e3@4 b4 a4 g#4@2, ~@3 a4@3 a4@6 ~@4, ~ b2 ~ e3", // E
  G: "[a2,g#4]@3 ~@5 a2@4 a2@4, ~@3 a4@3 a4@9 ~, ~ a2 ~@2", H: "d3!2 d3@2",
  I: "[c#5@2 e5 ~@3 e5@2 e5@2 a5@2 a2@4 d3@4 d3@4 c#3@4 b2@4, a2@3 e5@3 ~@6 f#5@11 ~@9, ~ a2!2 ~@5]/2",
  J: "[c#5@2 e5 ~@3 e5@2 e5@2 e5@2 a2@4 f#2@4 f#2@4 f#2@4 c#5@2 b4@2, a2@3 e5@3 ~@6 c#5@11 ~@9, ~ a2!2 ~@4 f#2]/2",
  K: "b4@2 b4 ~@3 b4@2 c#5@2 c#5@2 a2@4, e2@3 b4@3 ~@10, ~ e2 a2 ~",
  L: "b4@2 b4 ~@3 b4@2 [a2,c#5]@4 b4 a4 g#4@2, e2@3 b4@3 ~@10, ~ e2 ~ e2", // A
  M: "[e2,e4]@3 ~@5 f#2@4 f#2@4, ~@3 f#4@3 f#4@9 ~, ~ f#2 ~@2", N: "e2 f#2!3",
  O: "[c#5@2 e5 ~@3 e5@2 e5@2 a5@2 a2@4 f#2@4 f#2@4 f#2@4 f#2@4, a2@3 e5@3 ~@6 f#5@11 ~@9, ~ a2!2 ~@5]/2",
  P: "[c#5@2 e5 ~@3 e5@2 e5@2 e5@2 a2@4 f#2@4 f#2@4 f#2@4 f#2@4, a2@3 e5@3 ~@6 c#5@11 ~@9, ~ a2!2 ~@5]/2",
  Q: "b4@2 b4 ~@5 f#2@4 b4 a4 g#4@2, e2@3 b4@3 c#5@6 ~@4, ~ e2 ~ f#2",
  R: "e2@4 f#2@4 [f#2,a4]@3 ~@3 c#5@2, ~@11 b4@3 ~@2, ~@3 f#2", // F#m
  S: "[b2,c#5]@3 ~@5 b2@4 b2@4, ~@3 d5@3 d5@9 ~, ~ b2 ~@2", T: "e2@4 e2@4 [e2,e5]@3 ~@3 g#5@2, ~@11 f#5@3 ~@2, ~@3 e2",
  U: "[a2,g#5]@3 ~@5 a2@4 a2@4, ~@3 a5@3 a5@9 ~, ~ a2 ~@2", V: "[d3,g#5]@3 ~@11 a5@2, ~@3 a5@3 a5@4 b5@4 ~@2, ~ d3!3",
  W: "d3!4", X: "[a2,b5]@3 ~@5 a2@4 [e3,b5]@4, ~@3 c#6@3 c#6@6 ~@4, ~ a2 ~@2", Y: "d3!2 a2!2, a5@15 ~",
  Z: "[e2,c#5]@2 b4 ~ e2@2 e2@2, ~ e2 ~@2, ~@3 b4@3 ~@2", // C#m
  AA: "a4 g#4 ~@2 b2@4 [b2,c#5]@3 ~@3 a4@2, b2 ~@2 b2, ~@2 f#4@6 ~@3 b4@3 ~@2", // Bsus2
})).s("gm_piano").gain(0.3)

stack(piano)