Strudelify

What Child is This

Sally DeFord

KeyG majorTempo120 bpm
0:00/0:00
// What Child is This — Sally DeFord
// 120 bpm, 7/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (8/8 at bar 1, 10/8 at bar 3, 17/16 at bar 5, 6/8 at bar 6, ...) are rendered on a constant 7/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5849757; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3.5)

// 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 · "Part_3"
const piano = note(`<
  A@3 B C@5 D E F G H I J@3 K@5 L@2 M@3 N O P@4 Q R@4 S T U V W X Y Z@2 AA@2 AB@2 AC@2 AD AE@2 AF AG
>`.pickRestart({
  A: "[~@19 [d5,a5]@3 [a4,f#5]@3 ~@8 [d5,g5]@3 [b4,e5]@3 ~@7 [d5,a5]@3 ~ [a4,f#5]@3 e3@3 ~ [b3,d5,g5]@2 ~ g4@7 e3@3 [b3,d5,a5]@2, ~@12 e3@7 f#4@7 ~@3 b3@7 ~@3 e3@7 f#4@7 ~@6 [b4,e5]@2 ~@11, ~@15 b3@7 ~@4 e3@7 g4@7 ~@3 b3@7 ~@22]/3", // D5 D G5 E5 D5 D G Bm7 …
  B: "[a4,f#5]@2 ~ [b3,d5,g5]@2 [b4,e5]@2 [f#4,e5,a5]@2 ~ [a3,d5,f#5]@2 [d3,e5,a5]@2 [a3,d5,f#5]@2 ~@8, ~@2 [e3,g4]@3 g4@7 ~@12, ~@9 d3@2 ~@13, ~@10 f#4@7 ~@7", // D G E5 F#m7 D Dsus2 D Em
  C: "[~@5 c3@2 g3@2 [d5,g5]@3 ~@3 [a2,c5,e5]@2 e3@2 ~@3 [d5,g5]@3 ~ [c5,e5]@3 ~@5 b2@2 f#3@2 [d#5,a5]@2 ~ b2@2 [f#3,b4,f#5]@2 [a4,d#5]@2 ~@8 e3@2 ~ [d5,a5]@3 ~ [a4,f#5]@3 e3@2 b3@2 [d5,g5]@3 [b4,e5]@3 ~@4 d3@2 ~ [e5,a5]@2 a3@2 ~ d3@2 a3@2 [e5,a5]@2 ~ [d5,f#5]@3 ~@2 c3@2 g3@2 [d5,g5]@3 [c5,e5]@3 ~@2 f#3@2 [b4,f#5]@3 ~ [a4,d#5]@3, ~@9 e4@6 ~@4 c4@7 ~@12 d#4@7 d#4@7 ~@5 b3@2 ~@27 [d5,f#5]@3 ~@24 d#4@7, ~@40 [b4,f#5]@2 ~@16 g4@7 ~@4 g4@7 ~@10 f#4@7 f#4@7 ~@3 e4@7 b2@2 ~@8]/5", // G5 Am G5 C D#dim B5 Adim D5 …
  D: "~@3 e3@3 ~ b3@2 [d5,a5]@3 [a4,f#5]@3 ~ [b3,e5]@8, ~@3 f#4@2 [e3,g4]@3", // D5 D E5 Em
  E: "~@3 d3@2 [g4,d5]@3 ~ [d4,b4]@3 e2@2 ~ [g4,d5]@3 ~ [d4,b4]@3 f#2@2, ~@2 g2@2 ~ b3@7 ~@2 b2@2 ~@8, ~@15 g3@7 ~@2", // G5 G G5 G
  F: "c#3@2 [e4,a4]@3 [c#4,f#4]@3 ~@2 f#2@2 [d4,a4]@3 [b3,f#4]@3 ~@4 c2@2, ~@2 a3@7 b1@2 ~ d3@7 ~@5", // A5 F#5 D5 B5
  G: "g2@2 [d4,g4]@3 [c4,e4]@3 ~@2 e3@2 [c4,g4]@3 [a3,e4]@3 ~@6, ~@2 e3@7 a2@2 ~ g3@7 ~@5", // G5 C C5 A5
  H: "~@3 b1@2 f#2@2 [c4,a4]@3 [a3,f#4]@3 ~@2 f#2@2 [b3,f#4]@3 ~ [a3,d#4]@3, ~@7 d#3@7 b1@2 ~ d#3@7", // F D B5 Adim
  I: "~@3 g2@2 d3@2 [g4,d5]@3 [d4,b4]@3 ~@2 b2@2 [g4,d5]@3 ~ [d4,b4]@3, ~@7 b3@7 e2@2 ~ g3@7", // G5 G G5 G
  J: "[~@2 f#2 [e4,a4]@3 ~ [b1,c#4,f#4]@2 ~ [d4,a4]@3 ~ [b3,f#4]@3 ~@12 [d4,g4]@3 ~ [c4,e4]@3 b1@2 ~ [d#4,a4]@3 ~ [b3,f#4]@3 ~@7 [d#4,a4]@3 ~ [a3,f#4]@3 [e2,b2]@12, ~@3 a3@7 d3@7 ~@9 g2@7 ~@5 f#2@2 ~@6 e2@7 f#3@7 [g3,e4]@10 ~@2, ~@3 c3 ~@5 f#2@2 ~@11 c2@7 e3@7 ~@3 d#3@7 ~@4 b2@7 ~@15]/3", // A5 Bsus2 D5 B5 G5 C D#dim B5 …
  K: "[~@7 [d5,a5]@3 [a4,f#5]@3 ~@8 [d5,g5]@3 [b4,e5]@3 ~@7 [d5,a5]@3 ~ [a4,f#5]@3 e3@3 ~ [b3,d5,g5]@2 ~ g4@7 e3@3 [b3,d5,a5]@2 [a4,f#5]@2 ~ [b3,d5,g5]@2 [b4,e5]@2 [f#4,e5,a5]@2 ~ [a3,d5,f#5]@2 [d3,e5,a5]@2 [a3,d5,f#5]@2 ~@13 c3@2 g3@2 [d5,g5]@3 ~@3 [a2,c5,e5]@2 e3@2 ~@3 [d5,g5]@3 ~ [c5,e5]@3 ~@5 b2@2, e3@7 f#4@7 ~@3 b3@7 ~@3 e3@7 f#4@7 ~@6 [b4,e5]@2 ~@16 g4@7 ~@48, ~@3 b3@7 ~@4 e3@7 g4@7 ~@3 b3@7 ~@24 [e3,g4]@3 ~@4 d3@2 ~@49, ~@70 f#4@7 ~@16 e4@6 ~@4 c4@7 ~@10]/5", // D5 D G5 E5 D5 D G Bm7 …
  L: "[f#3@2 [d#5,a5]@2 ~ b2@2 [f#3,b4,f#5]@2 [a4,d#5]@2 ~@8 e3@2 ~ [d5,a5]@3 ~ [a4,f#5]@3 e3@2 b3@2 [d5,g5]@3 [b4,e5]@3 ~@4 d3@2 ~ [e5,a5]@2, ~@2 d#4@7 d#4@7 ~@5 b3@2 ~@25, ~@4 [b4,f#5]@2 ~@16 g4@7 ~@4 g4@7 ~@8]/2", // D#dim B5 Adim D5 D G5 E5 A5 …
  M: "[a3@2 ~ d3@2 a3@2 [e5,a5]@2 ~ [d5,f#5]@3 ~@2 c3@2 g3@2 [d5,g5]@3 [c5,e5]@3 ~@2 f#3@2 [b4,f#5]@3 ~ [a4,d#5]@3 ~@3 e3@3 ~ b3@2 [d5,a5]@3 [a4,f#5]@3 ~ [b3,e5]@9 ~@2 d3@2 [g4,d5]@3 ~ [d4,b4]@3, ~@2 f#4@7 f#4@7 ~@3 e4@7 b2@2 ~@23 [e3,g4]@10 ~ g2@2 ~@8, ~@2 [d5,f#5]@3 ~@24 d#4@7 ~@9 f#4@7 ~@13 b3@7]/3", // A5 D G5 C B5 Adim D5 D …
  N: "e2@2 ~ [g4,d5]@3 ~ [d4,b4]@3 f#2@2 c#3@2 [e4,a4]@3 [c#4,f#4]@3 ~@2 f#2@2, ~@2 b2@2 ~@17 b1@2 ~, ~@3 g3@7 ~@4 a3@7 ~@3", // G5 G A5 F#5
  O: "[d4,a4]@3 [b3,f#4]@3 ~@4 c2@2 g2@2 [d4,g4]@3 [c4,e4]@3 ~@2 e3@2, d3@7 ~@7 e3@7 a2@2 ~", // D5 B5 G5 C
  P: "[[c4,g4]@3 [a3,e4]@3 ~@9 b1@2 f#2@2 [c4,a4]@3 [a3,f#4]@3 ~@2 f#2@2 [b3,f#4]@3 ~ [a3,d#4]@3 ~@3 g2@2 d3@2 [g4,d5]@3 [d4,b4]@3 ~@2 b2@2 [g4,d5]@3 ~ [d4,b4]@3 ~@2 f#2 [e4,a4]@3 ~ [b1,c#4,f#4]@2 ~ [d4,a4]@3 ~ [b3,f#4]@3 ~@12 [d4,g4]@3 ~ [c4,e4]@3, g3@7 ~@12 d#3@7 b1@2 ~ d#3@7 ~@7 b3@7 e2@2 ~ g3@7 ~@3 a3@7 d3@7 ~@9 g2@7 ~@3, ~@63 c3 ~@5 f#2@2 ~@11 c2@7 e3@7]/4", // C5 A5 F D B5 Adim G5 G …
  Q: "b1@2 ~ [d#4,a4]@3 ~ [b3,f#4]@3 ~@7 [d#4,a4]@3 ~ [a3,f#4]@3, ~@2 f#2@2 ~@6 e2@7 f#3@7, ~@3 d#3@7 ~@4 b2@7 ~@3", // D#dim B5 D#dim D
  R: "[[e2,b2]@12 ~@7 [d4,a4]@3 [a3,f#4]@3 ~ [g3,e4]@7 e5@3 e3@2 ~ a4@3 ~ [f#4,a5]@3 e3@2 b3@2 ~ c6@2 b5@7 d3@2 ~ [e4,a4]@3 ~ [d4,f#5]@3 b2@2 f#3@2 ~ e5@2 [c4,a4,f#5]@3 ~@2 g3@2 [d4,g4]@2 ~ [c4,e4,e5]@3 ~ b2@2 ~ [d#4,a4]@2, [g3,e4]@10 ~@2 e2@7 f#3@7 ~@10 g5@7 ~@3 b5@5 ~@9 a5@7 ~@3 d5@5 ~@6 g5@5 f#5@2 ~@3 d#5@5, ~@15 b2@7 ~@4 [e2,b2]@10 ~@2 b3@2 ~@10 e4@3 c4@3 ~@6 a3@2 ~@10 [f#4,c5]@3 ~@4 c3@2 ~@10 f#3@2 ~]/4", // E5 D5 D C F#m A5 D F#dim …
  S: "c#5@2 [b3,f#4,d#5]@3 e3@2 b3@2 a4@3 f#4@3 ~@2 e4@7, ~@5 e5@10 [e3,g4]@9, ~@2 [b3,e5]", // B Em E5
  T: "~@3 e2@2 ~ [d5,a5]@2 [a4,f#5]@2 ~@3 [d5,g5]@2 [b4,e5]@2 ~@7, ~@5 b2@2 ~ e2@7 ~@9, ~@6 g3@7 [b2,g3]@7 ~@4", // D5 D G5 E5 Em
  U: "~@3 d2@2 a2@2 [e5,a5]@3 [d5,f#5]@3 ~@2 a2@2 [e5,a5]@3 ~ [d5,f#5]@3, ~@7 f#3@7 d2@2 ~ f#3@7", // A5 D A5 D
  V: "c2@2 ~ [d5,g5]@3 ~ [c5,e5]@3 ~@7 [d5,g5]@3 ~ [c5,e5]@3, ~@2 g2@2 ~@6 a2@7 c4@7, ~@3 e3@7 ~@4 e3@7 ~@3", // G5 C G5 C
  W: "b2@2 ~ [d#5,a5]@3 ~ [b4,f#5]@3 b2@2 f#3@2 [b4,f#5]@3 [a4,d#5]@3 ~@4, ~ f#3 ~@10, ~@3 d#4@7 ~@4 d#4@7 ~@3", // D#dim B5 Adim
  X: "e2@2 ~ [d5,a5]@3 ~ [a4,f#5]@3 e2@2 b2@2 [d5,g5]@3 [b4,e5]@3 ~@4, ~ b2 ~@10, ~@3 g3@7 ~@4 g3@7 ~@3", // D5 D G5 E5
  Y: "d2@2 ~ [e5,a5]@3 ~ [d5,f#5]@3 d2@2 a2@2 [e5,a5]@3 [d5,f#5]@3 ~@4, ~ a2 ~@10, ~@3 f#3@7 ~@4 f#3@7 ~@3", // A5 D A5 D
  Z: "[~@5 c2@2 g2@2 [d5,g5]@3 [c5,e5]@3 ~@7 [b4,f#5]@3 ~ [a4,d#5]@3 ~@12 [d5,a5]@3 ~ [a4,f#5]@3, ~@9 e3@6 b1@7 d#3@7 ~@9 b2@7 ~@3, ~@19 f#2@7 ~@8 e2@7 f#3@7]/2", // G5 C B5 Adim D5 D
  AA: "[[e3,b3,g4,e5]@10 g2@2 d3@2 [g4,d5]@3 [d4,b4]@3 ~@7 [g4,d5]@3 ~ [d4,b4]@3 f#2@2 d3@2 [e4,a4]@3 [d4,f#4]@3 ~@2 f#3@2, ~@14 b3@7 e2@6 g3@7 ~@4 a3@7 ~@3, ~@24 b2@7 ~@14 b2@2 ~]/2", // Em G5 G G5 G A5 D
  AB: "[[d4,a4]@3 f#4@3 ~ c2@2 ~ [d4,g4]@3 ~ [c4,e4]@3 ~@7 [c4,g4]@3 [a3,e4]@3 ~@4 b1@2 f#2@2 [c4,a4]@3 [a3,f#4]@3 ~@2 f#2@2, b3@7 ~@2 g2@2 ~@6 a2@7 g3@7 ~@17, ~@10 e3@7 ~@4 e3@7 ~@10 d#3@7 b1@2 ~]/2", // D5 G5 C C5 A5 F D
  AC: "[[b3,f#4]@3 [a3,d#4]@3 ~ g2@2 ~ [g4,d5]@3 ~ [d4,b4]@3 e2@2 b2@2 [g4,d5]@3 [d4,b4]@3 ~@3 d3@2 [e4,a4]@3 ~ [d4,f#4]@3 b2@2 ~ [d4,a4]@3 ~ f#4@2, d#3@7 ~@2 d3@2 ~@18 f#2@2 ~@11 b3@6, ~@10 b3@7 ~@4 g3@7 ~@4 a3@7 ~@2 f#3@2 ~@5]/2", // B5 Adim G5 G G5 G A5 D …
  AD: "~ c2@2 g2@2 [d4,g4]@3 [c4,e4]@3 ~@2 f#2@2 [d#4,a4]@3 [b3,f#4]@3 ~ e2@2, ~@5 e3@7 b1@2 ~ d#3@7 ~@2", // G5 C D#dim B5
  AE: "[~ [d4,a4]@3 ~ [a3,f#4]@3 [e2,b2,g3,e4]@10 ~@7 [d5,a5]@3 ~ [a4,f#5]@3 ~@7 [d5,g5]@3 [b4,e5]@3 ~@3, b2@2 ~@20 b3@7 ~@3 e3@7 g4@7 ~@2, ~ f#3@7 ~@10 e3@7 f#4@7 ~@4 b3@7 ~@5]/2", // D5 D Em D5 D G5 E5
  AF: "~@7 g5@8 ~@2 [a4,f#5]@7, ~@5 [c4,b4]@10 [b3,b4]@9, ~@6 [g4,e5]@9 ~ [f#4,d#5]@8", // D Cmaj7 B C D#m
  AG: "~ [e3,g4,b4]@2 b3@2 [e4,a4,c5]@3 [a3,e4,f#4,a4,c5]@3 ~@3 e5@8 ~@2, ~ e5@10 ~ [e3,b3,e4,g#4]@10 ~@2, ~@13 b4@8 ~@3", // Em Am F#m7b5 E
})).s("gm_piano").gain(0.29)

stack(piano)