Strudelify

Childhood

Michael Jackson

KeyA majorTempo90 bpm
0:00/0:00
// Childhood — Jackson Michael
// 90 bpm, 4/4, key A 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 18, 4/4 at bar 20, 3/4 at bar 22, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 3 "Bass" named as a bass, played on electric bass finger (its synth strings 1 patch is not one)
// note: Full arrangement: all 76 bars on a 24-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@7 B@3 C@2 D@7 E@3 F G@2 H I J K L M N O P Q R S@2 T U V W X@2 Y Z AA AB AC AD AE@5 AF@2 AG@2 AH AI AJ AK AL@2 AM AN
  AO@5 AP AQ AR@2
>`.pickRestart({
  A: "[~@10 [b5,e6]@3 [a5,c#6]@3 [b5,e6]@3 [a5,c#6]@3 [b5,e6]@3 [a5,c#6]@3 [b5,e6]@3 [a5,c#6]@3 [a5,d6]@3 [f#5,b5]@3 [a5,d6]@3 [f#5,b5]@3 [g#5,d6]@3 [f#5,b5]@3 [g#5,d6]@3 [f#5,b5]@3 [b5,e6]@3 [a5,c#6]@3 [b5,e6]@3 [a5,c#6]@3 [b5,e6]@3 [a5,c#6]@3 [b5,e6]@3 [a5,c#6]@3 [a5,d6]@2]/7", // E5 A E5 A E5 A E5 A …
  B: "[~@2 [f#5,b5]@6 [a5,d6]@6 [f#5,b5]@6 ~@9 g#4@3 a4@6 b4@3 a4@3 b4@6 g#4@18 f#5@3 e5, ~@5 [d5,g#5]@6 [b3,c#4,e4]@6 ~]/3", // B5 D5 B5 Ddim C#m7
  C: "[~@2 c#5@3 e4@3 e4@3 a4@3 b4@3 a4@3 [f#4,a4,d5]@9 c#5@3 [f#4,a4,d5]@6 d5@3 f#4 e4@6, ~@21 d4 ~@2]/2", // D
  D: "[~@5 g#4@3 a4@6 b4@6 b4@2 c#5@2 c#5@2 c#5@15 a4 a4@2 [e4,g#4,b4,c#5]@15 d5@3 c#5@3 a4@3 ~@12 [b3,d4]@6 ~@6 [b3,g4,b4]@6 [c#4,g4,c#5]@6 [d4,g4,d5]@6 [e4,e5]@6 a5@3 b5@3 g#5@3 a5@3 f#5@3 ~ g#5@3 [g#4,c#5,e5]@13 d5@3 c#5@3 [d4,f#4,b4]@14, ~@10 [e4,g#4]@12 ~@12 [g4,b4,e5]@12 ~@12 [c#5,f#5]@3 [b4,e5]@3 [a4,d5]@3 ~@17]/7", // C#m7 Bm Em C#dim G5 E C#m Bm …
  E: "[~ a4@3 b4@3 a4@3 [e4,c#5]@3 [f#4,d5]@3 [g#4,c#5,e5]@15 a4@3 a5@3 b5@3 g#5@3 a5@3 ~ f#5@3 g#5@3 [g#4,c#5,e5]@13 [d4,b4]@3 [c#4,a4]@3, ~@34 [c#5,f#5]@6 [b4,e5]@6 ~ [a4,d5]@6 ~@19]/3", // C#m D C#m G F#m F#5 E5 D5
  F: "[f#4,b4,e5]@3 [d4,f#4,b4]@3 b4 e5", // Esus2 Bm
  G: "[[f#4,b4,e5]@6 [d4,f#4,b4]@6 [d4,f#4,b4]@3 b4@3 ~ a4@2 ~@3 [d4,f#4]@6 d4@6 [d4,f#4]@6 [d4,f#4,a4]@6, ~@18 b4@2 ~ b4@27]/2", // Esus2 Bm D
  H: "[d4,g#4]@4 e4 a4 b4 e5", I: "[c#4,e4,g#4,b4] [e4,g#4,c#5]@3", J: "f#5 e5 c#5 e4!2 a4 b4 a4",
  K: "[f#4,a4,d5]@2 d5 [f#4,a4,d5]@3 f#4 e4", L: "[d4,e4]@9 [d4,g#4]@3 [d4,a4]@6 [d4,b4]@3 b4 b4@2",
  M: "b4 c#5!2 c#5@3 b4@3 e5@2 a4, [e4,g#4]", N: "c#5@3 c#5@9 c#5@3 c#5@3 c#5@2 b4@2 a4@2, [e4,g#4,b4]@5 ~@3",
  O: "[g4,b4,d5,e5]", P: "[g4,a4,c#5,e5]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4] a4", Q: "[a3,c#4,e4,g#4]@3 f#4 b3@2 a3!2, ~ e4",
  R: "[a3,c#4,e4,g#4]@9 f#4@3 b3@6 a3@3 a3 a3@2, ~ e4", // Amaj7
  S: "[[a3,c#4,e4,g#4]@9 f#4@3 b3@6 a3@3 c#4 ~@2 [a4,c5]@6 [g4,b4]@6 [e4,a4]@6 [d4,g4]@6, ~ e4 ~@2, ~@11 a3@13]/2", // Amaj7 Am G A5 G5
  T: "[g#3,b3,c#4,e4]@3 g#3 a3 b3 e4@2", U: "e4@4 e4 a4 b4 e5, [f#3,a3]", V: "[e4,g#4,b4] [e4,g#4,c#5]@3",
  W: "e4@2 f#3@2 [a4,f#5] b4 c#5 f#5", X: "[[f#4,a#4,c#5]@6 [f#4,a#4,d#5]@27 f#4@3 b4@4 [a#4,c#5]@4 [g#4,d#5]@4]/2",
  Y: "[g#4,e5]@3 [f#4,d#5] [g#4,e5]@2 [b3,g#4]@2", Z: "[b3,d#4,e4] [a#3,e4,a#4] [b3,e4,b4] [c#4,e4,c#5]",
  AA: "[f#4,a#4,c#5]@3 [f#4,a#4,d#5] [f#4,a#4,d#5]@3 f#4", // F# D#m
  AB: "[f#4,a#4,d#5]@3 [g#4,b4,e5]@3 [f#4,a#4,d#5]@2 [e4,c#5]@2 [d#4,b4]@2", AC: "[a4,c#5,e5,f#5]@2 [c#4,e4,a4,b4] a5",
  AD: "[a4,c#5,e5,g#5]@2 g#4 a4!2 b4 c#5 d#5, ~ c#5 f#5 b5", // Amaj7
  AE: "[b5@3 c#6@3 a#5@3 ~ b5@3 g#5@3 a#5@3 [c#5,f#5]@13 e5@3 d#5@3 [b4,c#5,e5]@6 [a#4,d#5]@6 ~ [g#4,c#5]@3 b4@3 [e4,g#4,c#5]@3 b4@3 ~ [f#4,d#5]@3 [g#4,e5]@3 [a#4,f#5]@6 [a#4,d#5]@4 [b4,f#5]@4 ~ [c#5,b5]@2 b4@2 b4@3 c#5@3 [c#4,f#4,a#4]@5 b4@2 g#4@3 a#4@3 [a#3,d#4,f#4]@12, f#5@6 d#5@6 ~ b4@6 ~@70 [d#4,g#4]@6 ~@7 [b3,e4]@6 ~@12]/5", // F#5 C#m7 D#5 C#5 C#m D#m C#m D#m …
  AF: "[~ [e4,c#5]@3 [d#4,b4]@3 [g#4,c#5,f#5]@9 [e4,g#4,c#5]@15 [g#4,c#5,f#5]@9 [e4,g#4,c#5]@6 c#5@2]/2", // C#m G#m C#sus4 C#m C#sus4 C#m
  AG: "[~ c#5@2 ~@4 [g#3,b3]@24 [f#3,a#3]@12 f#4@3 b4@2, ~@3 b4@2 ~@43, ~@4 c#5@27 ~@17]/2", // G#m F#
  AH: "~ c#5@3 f#5@3 [c#6,f#6]@6 [b5,d#6]@6 [c#6,f#6]@5", AI: "~ [b5,d#6]@6 [c#6,f#6]@6 [b5,d#6]@6 [c#6,f#6]@5",
  AJ: "~ [b5,d#6]@6 [g#5,e6]@6 [f#5,b5]@6 [g#5,e6]@5", // B C#m B5 C#m
  AK: "~ [f#5,b5]@6 [b4,c#5,e5,g#5]@6 [a#3,e4,a#4]@3 a#4@3 [b3,e4,b4]@3 b4@2", // B5 C#m7 A#dim E5
  AL: "[~ [c#4,e4,c#5]@6 c#5@2 d#5@2 d#5@2 d#5@15 f#4@3 d#5@2 d#5@2 e5@2 d#5@3 c#5@8, ~@7 [f#4,a#4]@21 ~@3 [f#4,a#4]@17]/2", // C#m F#
  AM: "~ c#5@3 b4@3 [a4,c#5,e5,f#5]@6 [c#4,e4,a#4]@6 [e4,a#4,c#5]@5", // F#m7 A#dim
  AN: "~ [f#4,a#4,c#5,e5]@6 [c#4,e4,a4]@6 [b3,d#4,f#4]@6 [b3,d#4,g#4]@5", // F#7 A B G#m
  AO: "[~ [b3,d#4,a#4]@3 b4@3 [b3,d#4,f#4,a#4]@9 g#4@3 c#4@6 b3@4 ~ b3 [b3,d#4,f#4,a#4]@9 g#4@3 c#4@6 b3@3 b3 ~@2 [b3,d#4,f#4]@3 g#4@3 f#4@3 g#4@3 c#4@3 d#4@3 d#4@2 ~@4 [f#4,d5]@6 [e4,c#5]@6 [d#4,b4]@6 [c#4,a4]@6 [f#3,a#3,c#4,d#4]@12 g#3@3 a#3@2, ~@19 f#4@12 ~@12 f#4@9 ~@2 a#4@5 ~@8 f#4@12 ~@41, ~@75 b3@29 ~@16]/5", // Bmaj7 B D C#m G#m F#m D#m7
  AP: "~ b3@3 c#4@3 [g#3,b3,c#4]@12 f#4@3 b4@2", AQ: "~ c#5@3 f#5@3 [f#4,a#4,c#5]@6 [f#4,a#4,d#5]@6 b3@3 c#4@2",
  AR: "[~ f#4@3 d#4@3 [b4,c#5,d#5,f#5,b5]@24 ~@17]/2", // B
})).s("gm_piano").gain(0.37)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A@7 B C@8 D@6 E@2 F G H I J K L M N O P Q@2 R S T U V W@2 X Y Z W AA AB AC@7 AD@2 AE@4 AF@3 AG AH@4 AI@5
>`.pickRestart({
  A: "[~@20 a4@3 b4@3 c#5@3 e5@3 c#5@3 e5@6 e5@3 a4@3 b4@3 c#5@3 e5@3 c#5@3 e5@6 e5@3 f#4@3 c#5@3 d5@3 c#5@3 f#4@3 d5@6 d5@3 e4@3 b4@3 d5@3 b4@3 f#4@3 b4@6 d5@3 a4@3 b4@3 c#5@3 e5@3 a4@3 e5@6 c#5@3 a4@3 b4@3 c#5@3 e5@3 a4@3 e5@6 c#5@3 f#4@3 b4]/7",
  B: "~@2 c#5@3 d5@3 f#4@3 d5@9 e4@3 e3",
  C: "[~@23 c#3@3 e3@3 g#3@3 a3@3 b3@3 c#4@6 c#4@6 a3@6 a3@9 a3@3 ~@3 f#3@3 b3@3 c#4@3 d4@12 ~@3 b2@3 a3@3 g#3@3 f#3@6 g#3@6 ~@3 c#3@3 e3@3 g#3@3 a3@3 b3@3 c#4@6 ~@3 e3@3 a3@3 b3@3 c#4@3 b3@3 a3@3 f#3@3 ~@3 e3@3 g3@3 a3@3 g3@3 f#3@3 e3@3 d3@3 a2@3 g3, ~@5 a2@12 b2@6 e2@6 a2@6 a2@6 a2@6 ~]/8",
  D: "[~@2 e3@3 g3@3 ~@3 g3@3 e3@3 g3@3 d2@6 c#3@6 b2@6 ~@4 c#4@3 b3@6 ~ a3@6 ~@3 b2@3 a3@6 a3@6 g#3@6 g#3@3 a3@3 b3@3 g#3@3 f#3@3 e3@3 f#3@3 a3@3 d2@6 c#3@6 ~ b2@6 a2@19, ~@8 a2@12 ~@19 a2@19 e2@24 a2@24 ~@38]/6",
  E: "[~ d3 b3@14, g2]/2", F: "~ b2 a3 b2 ~ b2 a3 b2, e2!2", G: "~ b2 g#3@6, e2", H: "~ e3 c#4@2 a3@2 e3@2, a2",
  I: "~ e3 a3 e3 a3 b3 c#4 e4, a2", J: "~ f#3 d4@3 f#3@3, b2", K: "~ b2 a3 g#3 f#3@2 g#3@2, e2",
  L: "~ c#3 e3 g#3 a3@2 b3@2, a2", M: "~ e3 a3@2 g#3@2 f#3@2, a2", N: "~ e3 g3 a3 b3@2 d4@2, a2", O: "~ g3@7, a2",
  P: "~ a2 f#3@2 ~ e3@3, d2!2", Q: "~ a2 f#3@2 ~ e3@3, d2 c#2", R: "c#2 g#2 e3 g#2 c#2 g#2 e3 g#2", S: "~ e2 c#3@6, a1",
  T: "[e2,d3]", U: "~ e2 c#3 e3 a3 b3 c#4 e3, a1", V: "~ e3@2 e3@5, a2", W: "b1 f#2 d#3 f#2 b1 f#2 d#3 f#2",
  X: "b1 g#2 e3 g#2 b1 g#2 e3 g#2", Y: "f#2@2 f#2 f#3 f#2 f#3 f#2 f#3", Z: "b1 f#2 b2 c#3 d#3 f#3 b3 c#4",
  AA: "~ e3 a3@2 g#3@4, b2", AB: "~@2 e3 f#3 g#3 a3 b3 c#4, c#2",
  AC: "[[e4,g#4]@3 d#4@3 [c#4,f#4]@6 ~ [b3,e4]@6 [a#3,d#4]@19 [b3,f#4]@19 f#2@6 ~@4 c#4@3 d#4@6 a#3@4 g#3@4 ~ f#3@4 e2@6 d#3@6 ~ c#3@6 b2@19 ~@3 e3@3 f#3@6 b3@6 a3@6 g#3@6 a3@6 c#4@3 ~@2, ~@64 b2@13 ~@50 a#2@39 ~@2]/7", // E F#5 E5 D#5 B5
  AD: "[~@7 [f#2,e3]@36 ~@5]/2", // F#7
  AE: "[~@10 f#5@6 d#5@3 ~@3 d#5@6 d#5@3 ~@3 d#5@6 d#5@3 ~@3 d#5@6 d#5@3 ~@3 e5@6 e5@3 ~@3 e5@6 e5@3 f#3@6 f#2@6 g#3@5, ~@7 d#5@9 ~@3 f#4@12 b4@12 f#4@12 g#4@12 g#4@12 ~@17]/4",
  AF: "[~ a#3@6 ~@3 f#3@3 c#4@3 f#3@3 d#4@3 f#3@3 c#4@3 b3@3 ~@3 f#3@3 c#4@3 f#3@3 d#4@3 f#3@3 c#4@3 b3@3 b2@3 a3@3 b2@3 a3@3 b2@3 a3@2, ~@7 b2@24 b2@24 ~@17]/3",
  AG: "~ b2@3 a3@3 b2@3 a3@3 a2@6 g#2@5",
  AH: "[~ f#2@6 ~@3 b2@3 g#3@6 ~@3 f#3@9 ~@3 b2@3 g#3@6 ~@3 f#3@9 ~@3 b2@3 g#3@6 ~@3 f#3@9 d#2@3 a#2@3 f#3@3 a#2@3 d#2@3 a#2@2, ~@7 e2@12 d#2@12 e2@12 d#2@12 e2@12 d#2@12 ~@17]/4",
  AI: "[~ f#3@3 a#2@3 ~@3 f#2@3 d#3@18 [f#2,e3]@24 ~@9 f#3@15 [b1,f#2,d#3,f#3]@24 ~@17, ~@7 b1@24 ~@24 b1@24 ~@41, ~@58 f#2@21 ~@41, ~@61 d#3@18 ~@41]/5", // F#7 B
})).s("gm_electric_bass_finger").gain(0.32)

stack(piano, bass)

More by Michael Jackson