Strudelify

Too Late Now

Burton Lane

KeyC majorTempo84 bpm
0:00/0:00
// Too Late Now — Burton Lane
// 84 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D E F G H I J K L E F G H I J M N O P Q R S T U V E F G H I J W X Y Z E F G H I J K L E F G H I J M N O P Q R S
  T U V E F G H I J W X Y AA
>`.pickRestart({
  A: "e5 g5 b5 a5, d5 [c5,g5]", B: "a4 c5 e5 d5, g4 [f4,c5]", C: "d4 f4 f#4 [b4,d5], c4 [c4,d4]",
  D: "[c4,f4,a4]@2 a3 b3, ~ [e4,g4]", E: "e4@4 g4@4 b4@4 a4@3 g4, c4 [c4,e4]",
  F: "[c4,e4]@2 [a3,c4]@2 [a3,c4]@3 [b3,d4], f3!2", G: "e4@4 g4@4 b4@4 c5@3 a4, c4 [c4,e4]",
  H: "g4 d4 [f3,b3,d4]@2, c4 ~", I: "e4@4 g4@4 [c4,e4,a4,c5]@7 [b4,d5], c4 ~",
  J: "[a4,c5,e5]@2 [b4,d5] [a4,c5] [d#4,g#4,b4]@2 [e4,a4]@2, e4 ~", K: "g4@3 [f#4,c5]", L: "c4 b3 [a3,c4] [b3,d4], f4",
  M: "d4 c4 a3 [f4,a4,d5], [e4,g4]@3 ~", N: "[e4,g4,c5]@12 [d4,d5]@3 [d#4,d#5]",
  O: "~ e5@5 [d4,d5]@2 ~ c5@5 [b3,b4]@2, [e4,a4,d5]@3 ~ [c4,d4,g4]@3 ~", P: "[g#3,c4,e4,g#4] [f#3,c4,e4,f#4]@2 [c4,e4]",
  Q: "g#4@4 a4@4 f#4@3 g4 a4@3 b4, [d4,f#4] d4", R: "[c4,e4,a4,c5]@12 [c4,c5]@3 [c#4,c#5]",
  S: "~ d5@5 [c4,c5]@2 ~ a#4@5 [a3,a4]@2, [d4,e4,g4]@3 ~ [a#3,c4,f#4]@3 ~", // C A Em7 Cm7b5
  T: "[a#3,d4,f#4] [a#3,d4]@2 [a#3,d4], ~ e4@3", U: "f#4 g4 [g3,c4,e4] [f#3,c4,d4,f#4], [c4,e4] ~",
  V: "~ [c4,f4] [a3,c4] [b3,d4], g4", W: "[d4,e4] [c4,e4] [b3,e4] [a#3,e4], g4", X: "~ d4 c4 b3, [f4,a4,d5]",
  Y: "c5@4 g5@4 b5@4 a5@3 g5, [c4,e4,g4] [c5,e5]", Z: "e5 c5 [a3,e4] [b3,d4], [e4,a4] g4",
  AA: "e5 c5 [g4,c5,g5] ~, [e4,a4] ~", // C5 A5
})).s("gm_piano").gain(0.2)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  A B C D E F E G H I J K E F E G H I L M N O P Q R S T U E F E G H I V W X Y E F E G H I J K E F E G H I L M N O P Q R
  S T U E F E G H I V W X Z
>`.pickRestart({
  A: "c4 b3 [a3,e4]@2, g4 ~", B: "f3 e3 [d3,a3]@2, c4 ~", C: "a#2 a2 [g#2,f#3]@2, f3 ~", D: "d3 e3 f3@2, g2",
  E: "[c3,g3] [a2,g3]", F: "[d2,a2]@2 g2 g1", G: "[d2,a2,f3]@2 g2 g1", H: "c3 b2 a2 g2, g3!2",
  I: "~ e3 c4@2 ~@2 g1@2, [d2,f#2] [d3,f#3,c4]", J: "d4 c4 b3 [d#3,a3], e3@3 ~", K: "[d2,d3,g3]@2 ~ g1, ~ [f2,f3]",
  L: "g3@2 f3 b3, ~ g2", M: "c4 g3 c4 g1, c3@3 ~, d2 f2", N: "b2 f#3 e3 e2", O: "a2 e2", P: "g#3 f#3 e3 e2, b2 ~",
  Q: "~ e3 g#3 b3 a3@2 ~@2, a2@3 ~", R: "a2 e3 d3 d2", S: "f#3 ~ g2@2, g2 ~, ~ e3@3", T: "f#3 g3 e3 d3, a2 d2",
  U: "~ d3 f3@2, g2", V: "g3 [c#3,g3]", W: "[d3,a3] [g2,f3]", X: "c3 [a3,g4]", Y: "[f#3,c4] [f2,f3]",
  Z: "c4 d4 [c3,g3,e4] [c1,c2], f3 ~", // C
})).s("gm_piano").gain(0.2)

stack(piano, piano_2)