Strudelify

miss movin on

Fifth Harmony

KeyF majorTempo72 bpm
0:00/0:00
// miss movin on — Fifth Harmony
// 72 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5861589; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/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 de cola"
const piano = note(`<
  A B C@2 D E F G D H@2 I@2 J K L M H@2 I@2 J K L M N@2 O@2 P@2 Q D R S T U V W X Y Z AA AB AC AD@2 AE AF AG AH AI AJ AK
  AL AM@2 AK AN AK AO@2
>`.pickRestart({
  A: "c4@15 ~", B: "~ c4!3 [f2,c4]@2 c4!3 a3 f2@2 f2@2 f2@2, f2!2 ~ f2!2 a3@2 ~",
  C: "[c3@2 c4!2 [c3,c4]@2 c4!2 d4 a3 [c3,a3]@2 c3@2 ~@3 g4 ~ a4 g4 f4 [d3,d4]@2 [d3,g4]@2 d3@2 d3@2 d3@2, ~ c3 ~ c3!2 ~@2 c3 d3!3 ~@5, ~@15 c4@2 ~@9 f4@4 c4 ~]/2", // C F D G5
  D: "[bb2,g4]@2 ~ a4 g4 f4 [bb2,d4]@2 [bb2,g4]@2 bb2@2 bb2@2 bb2@2, ~ bb2!2 ~@2 f4@2 ~", // Eb Bb Eb
  E: "~ c4!3 [f2,c4]@2 c4!3 a3 [f2,a3]@2 f2@2 f2@2, f2!2 ~ f2!2 ~@3", // F5 F
  F: "c3@2 c4!2 [c3,c4]@2 c4!2 d4 a3 c3@2 c3@2 ~ g3, ~ c3 ~ c3!2 a3@2 c3", // C
  G: "[d3,g4]@2 ~ a4 g4 f4 [d3,d4]@2 [d3,g4]@2 d3@2 d3@2 d3@2, ~@2 d3@2 d3@2 ~@4 f4@4 c4 ~", // G5 D G5
  H: "[[f2,a4]@4 f3 f2@3 a4 g4 a4 g4 a4@2 g4 ~ d3@2 ~ d3 d4@2 f4 c5 [bb2,a4]@2 [bb2,g4]@2 bb2 ~ bb3@2, ~@4 c4@2 ~@2 c3@2 c3@2 c3@3 f4@3 d4@2 d3@4 ~@4 bb3@2 ~@2, ~@29 bb2@3]/2", // F Bbmaj7 Eb
  I: "[[f2,a4]@4 f3 f2@3 a4 g4 a4 g4 a4@2 g4 ~ d3@2 ~ d3 d4@2 f4 c5 [bb2,a4]@2 bb2@2 bb2!4, ~@4 c4@2 ~@2 c3@2 c3@2 c3@3 f4@3 d4@2 d3@4 ~@2 g4@4 f4@2]/2", // F Bbmaj7
  J: "[f2,a4]@2 a4 f2 ~ c5 f4@2 f4 ~ c3@2 d4@2 c4@2, ~@3 c5@2 ~@4 a4@3 ~@4, ~@2 f3@2 c3 ~ c3@2", // F
  K: "[d3,a4]@2 a4 d3 ~ f4 ~@2 bb2@2 bb2@2 bb2 f4 c5 a4, ~@3 c5@2 ~ g4@4 ~@6, ~@4 d3@4 ~@5 bb2@3", // D5
  L: "[f2,a4]@2 ~ f2 [c4,f4]@2 c5 a4 [c3,a4]@2 [c3,c4,e4]@2 [c4,e4] c5@2 d5, ~ [c4,f4] f3@2 ~@2 c3@2", // F F5 F C F5
  M: "a4 g4@2 d3 [d4,f4]@2 [d4,f4]@2 bb4@2 ~@2 bb4@2 a4!2, d3@3 ~ d3@4 ~@8", // Dm
  N: "[[f2,a4]@4 [c4,f4]@2 g4!2 [c3,g4]@2 a4 g4 g4@2 f4 ~ d3@2 ~ d3 [d4,f4]@2 [d4,f4]@2 bb2@4 bb2 ~ a4 bb4, ~@4 f3@4 ~@2 c3@2 c3@3 d4@3 [d4,f4]@2 d3@4 bb4@2 ~@2 bb4@2 ~@2, ~@29 bb2@3]/2", // F F5 C5 Dm
  O: "[a4@2 [c4,f4]@2 [c4,f4]@2 a4 ~ c3@2 a4 ~@3 f4 ~ d3@2 ~ d3 [d4,f4]@2 ~@2 bb2@2 [bb2,bb3,d4]@2 [bb2,bb3,d4]@2 [bb2,bb3,d4]@2, f2@4 f3@3 g4@3 c3@2 c3@4 ~@4 d3@4 ~@8, ~@11 g4@3 ~ d4@3 [d4,f4]@2 ~@2 f4@4 ~@6]/2", // F5 Dm Bb Dm
  P: "[~ a3 c4!2 [f2,c4]@2 ~ c4!2 a3 ~ c4 d4 a3 f2@2 ~ c4!3 [c3,c4]@2 c4!2 d4 a3!3 ~ c4 [c3,c4]@2, f2!2 ~ f2!2 [f2,a3] f2 a3@2 ~@7, ~@8 c3!2 ~ c3!3 [c3,a3] ~]/2", // F5 C F
  Q: "d3@2 ~ a4 g4 f4 [d3,d4]@2 [d3,g4]@2 d3@2 d3@2 d3@2, [d4,g4]@4 ~@6 f4@4 c4 ~, ~ d3!2 ~@5", // D G5
  R: "~ f4!3 [f2,f4]@2 f4!3 c4 ~ [bb3,e4] [a3,f4] g3 [a3,c4] [g3,a3], f2!2 ~ f2!2 [f2,c4] f2!2", // F Bbdim Dm Am Gsus2 F5
  S: "~ d4!2 e4 [c3,e4]@2 e4 d4 e4 f4!2 g4 [e4,f4] c4!2 [c4,e4], c3!2 ~ c3!5, ~@13 g4@2 ~", // C Fmaj7 C
  T: "d3@2 ~ a4 g4 f4 [d3,d4]@2 [d3,g4]@2 [d3,f4]@2 ~ d4 ~ d4, [a3,g4] ~@3, ~ d3!2 ~@3 d3!2", // D G5 Dm A7
  U: "f4 ~@2 a4 bb4 a4 g4 f4 [bb2,g4]@2 [bb2,a4]@2 [bb2,bb3]@2 bb3!2, bb2!4 ~@3 bb2, ~ g4@2 ~@13", // Eb Bbmaj7 Bb
  V: "g4@3 a4 g4 f4 d4@2 g4@2 f4@4 c3@2, bb2@13 ~@3",
  W: "[d3,f4]@2 ~ d3 [d4,f4]@2 [d4,f4]@2 a4 g4 a4 g4 a4 g4 a4 g4, a4 ~, ~ [d4,f4] d3@2 c3!2 c3@2", // Dm
  X: "f4 [d4,f4]!2 [d3,d4,f4] [a4,c5] [g4,bb4] [a4,c5] [g4,bb4] [a4,c5] [g4,bb4] [a4,c5] [g4,bb4] c3@4, d3@3 ~ d3@4 c3@2 c3@2 ~@4", // Dm Am Gm Am Gm Am Gm Am …
  Y: "[a4,c5] [g4,bb4] [a4,c5] [f2,g4,bb4] [a4,c5] [g4,bb4] [f4,c5] [e4,bb4] [e4,a4] [f4,bb4] bb2@2 bb2 ~ f4 e4, f2@3 ~ f2@4 bb2@2 [d4,f4]@3 bb2@3", // Am Gm Am Gm7 Am Gm F5 Edim …
  Z: "e4 f4 ~ d3 d3@4 [d4,a4,c5] [g4,bb4] [a4,c5] [g4,bb4] [a4,c5] [g4,bb4] [a4,c5] [g4,bb4], d3 c4@2 ~ c3!2 c3@2", // D7 Gm Am Gm Am Gm Am Gm
  AA: "[a4,c5] [g4,bb4] [a4,c5] [f2,g4,bb4] [a4,c5] [g4,bb4] [f4,a4] [e4,a4]!2 [f4,bb4] [bb2,d4]@2 a3@2 f4 e4, f2@3 ~ f2@4 bb2@2 ~@2 bb2@4, ~@7 g3", // Am Gm Am Gm7 Am Gm F A5 …
  AB: "e4 f4 ~ d3 c3@2 g4 a4 g4 a4 g4 bb4 c5@2 [a4,bb4] ~, d3 d4@2 ~@5", AC: "a4@8 g4@5 ~@3",
  AD: "[f2@2 f2@2 f2@2 f2@2 a4 g4 a4 g4 [c3,a4]@2 g4 ~ d3@2 d3@2 d3@2 f4 c5 [bb2,a4]@2 bb2@2 bb2@2 bb2@2, a4@4 ~@4 e4@7 f4@5 ~@2 d3@2 ~@2 g4@4 ~@2, ~@4 c3!2 ~ c3 d4@4 d4@4]/2", // F Bbmaj7
  AE: "g4 ~ f2@2 ~ g4 f2@2 a4 g4 a4 g4 [c3,a4]@2 g4 f4, c4 e4, f2 ~ f2 ~ c3!2 ~ c3, ~ a4@4 ~@11", // F
  AF: "d3@2 d3@2 d3@2 d3@2 a4 g4 a4 g4 bb2!2 [bb2,f4]@2, e4@2 ~@4 f4 ~", // Bb5
  AG: "[f2,a4]@2 a4 c5!3 f4@2 f4 ~ c3@2 c5@2 d5@2, ~ f2 f3@2 c3 ~ c3@2, ~@9 a4@3 ~@4", // F
  AH: "[d3,a4]@2 a4 ~@2 f4 ~@2 bb2@2 bb2@2 ~ f4 [a4,c5] a4, ~ d3 d3@2 ~@2 bb2@2, ~@3 c5@2 ~ g4@4 ~@4 f4@2", // D5 Am
  AI: "[a4,c5]@4 ~@2 c5 a4 [a4,c5]@4 ~ c5 [a4,c5,d5]@2", AJ: "[g4,a4] g4@3 ~@4 bb4@2 ~@2 bb4@2 a4 bb4, d5 ~@3",
  AK: "a4@2 [c4,f4]@2 [c4,f4]@2 a4 ~ c3@2 a4 ~@3 f4 d4, f2@4 f3@3 g4@3 c3@2 c3@4, ~@11 g4@3 ~@2", // F5
  AL: "[d3,d4]@2 ~ d3 [d4,f4]@2 [d4,f4]@2 bb2@4 bb2 ~ a4 bb4, ~ [d4,f4] d3@2 bb4 ~ bb4 ~, ~@13 bb2@3", // D Dm
  AM: "[a4@2 [c4,f4]@2 [c4,f4]@2 a4 ~ c3@2 a4 ~@3 f4 ~ d3@2 ~ d3 [d4,f4]@2 [d4,f4]@2 [d3,bb4]@2 [d3,d4]@2 bb2 d3 a4 bb4, f2@4 f3@3 g4@3 c3@2 c3@4 ~@4 d3@4 ~@6 bb2@2, ~@11 g4@3 ~ d4@3 [d4,f4]@2 ~@8 bb4@2 ~@2]/2", // F5 Dm Gm D Dm
  AN: "[d3,d4]@2 ~ d3 [d4,f4]@2 [d4,f4]@2 bb2@4 d3 ~ a4!2, ~ [d4,f4] d3@2 bb4 ~ bb4 ~, ~@13 d3@3", // D Dm
  AO: "[[d3,d4]@2 ~ d3 [d4,f4]@2 ~@2 bb2@2 [bb2,f4]@2 bb2!2 f4 f4@5 ~@12, ~ [d4,f4] d3@2 ~@3 bb2 ~@8, ~@3 f4@2 ~ a4 ~@9]/2", // D Dm Bb5 Dm
})).s("gm_piano").gain(0.48)

stack(piano)