Strudelify

A Lover's Concerto

Sandy Linzer and Denny Randell

KeyC majorTempo120 bpm
0:00/0:00
// A Lover's Concerto — Sandy Linzer and Denny Randell
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5392821; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · piano
const piano = note(`<
  A B C D E F G H I J K L M N G O P Q R S T N G U V W K X Y K Z H P J N AA AB K Z AC V AD R AE AF N G AG I W N AE AH
>`.pickRestart({
  A: "c5@4 ~@2 c5 ~ c#5@6 c#5 ~, [c3,c4] [c#3,c#4]", B: "d5@4 ~@2 f5 ~ b4@4 d5@2 b4@2, [d3,a3,d4] [b2,b3]",
  C: "c5@4 ~@2 c5 ~ a4@4 ~@2 c#5 ~, [c3,g3,c4] [a2,g3]", D: "d5@6 d5 ~ g4@4 d5@2 g4@2, d3 g2", E: "c5!4, [c3,c4]@15 ~",
  F: "c5@6 c5 ~ c5@6 c5 ~, c3@15 ~", G: "c3@4 ~@2 c5 ~ g3@4 ~@2 c5 ~, c5@3 ~ c5@3 ~, ~ e3 ~ c3",
  H: "f5@6 f5 ~@7 c5 ~, f2@11 ~ f2@4, ~@4 f5@3 ~", I: "c5@3 c5 c5@3 c5, c3 e3", J: "f4@6 f4 ~ g4@4 ~@2 g4 ~, f2 g2",
  K: "c5@6 c5 ~ c5@2 c5@2 ~@2 g4@2, c3@15 ~", L: "g4@4 ~@2 g4 ~ c5@4 ~@2 c5 ~, g2 c3",
  M: "g5@6 g5 ~ g5@2 g5@2 ~@2 d5@2, f3@2 g3 g2", N: "c5@6 c5 ~ c5@6 g4 ~, c3@15 ~",
  O: "f4@2 ~ c5 f5@2 c5 f4, f2@11 ~ f2@4", P: "c5@3 c5 c5@2 g5 c5, c3 e3", Q: "f4@2 c5 f4 g4@2 d5 g4, f2 g2",
  R: "c5@3 c5 c5@3 c5, c3@15 ~", S: "g4@6 g4 ~ g4@6 g4 ~, g2@15 ~", T: "c5@6 c5 ~ g4@6 g4 ~, c3 g2",
  U: "f4@6 f4 ~@7 f4 ~, f2@11 ~ f2@4, ~@4 f4@3 ~", V: "c5@6 c5 ~ c5@6 c5 ~, c3 e3",
  W: "f4@4 ~@2 f4 ~ g4@4 d5@2 g4@2, f2 g2", X: "g4@6 g4 ~ c5@4 ~@2 c5 ~, g2 c3", Y: "g5@3 d5 g5!2 ~ g5, f3@2 g3 g2",
  Z: "c3@4 ~@2 c5 ~ [g3,c5]@4 g5@2 c5 ~, c5@3 ~@5, ~ e3 ~ c3", AA: "g5@6 g5 ~ g5@2 g5@2 ~@2 d5@2, g2@15 ~",
  AB: "c5@4 ~@2 c5 ~ g4@4 d5@2 g4@2, c3 g2", AC: "f5@3 f5 ~@3 d5, f2@11 ~ f2@4, ~@4 f5@3 ~",
  AD: "f4@4 ~@2 f4 ~ g4@6 g4 ~, f2 g2", AE: "g5@6 g5 ~ g5@2 g5@2 ~@2 d5@2, g2@11 ~ g2@4",
  AF: "c5@3 c5 [e2,c5]@2 g5 c5, c3@2 ~ g2", AG: "f5@3 c5 f5!2 ~ f5, f2@11 ~ f2@4",
  AH: "c5@8 ~ [e5,g5]@7, c3@15 ~, ~ c5", // Em
})).s("gm_piano").gain(0.35)

stack(piano)