Strudelify

Spotlight

myee89

KeyE♭ majorTempo136 bpm
0:00/0:00
// Spotlight — myee89
// 136 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5840927; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/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 B@2 C@2 D@2 E F G H I J K L M ~ N@2 O@2 P@2 Q R B@2 S@2 B@2 S@2 B@2 S@2 B@2 T U V W@2 X V W@2 Y Z AA I J AB AC M R
  B@2 S@2 B@2 S@2 B@2 S@2 B@2 T U B@2 AD@2 AE@2 AF AG ~ B@2 S@2 B@2 T U B@2 S@2 B@2 T U B@2 S@2 B@2 T AH
>`.pickRestart({
  A: "~ c4 d4 eb4",
  B: "[~@15 gb5, c3@4 b2@3 [g3,d4,d5], g5@6 [g3,eb4]@2 ~@2 [g3,d4] f5@5, c5@4 ab5@4 ~ d5@4 b4@3, ~@2 [g3,eb4]@2 c5@3 [c5,g5]@9]/2", // G5 Cm G5 Cm C5
  C: "[b4@2 b4@2 ~@7 c5@3 [g3,eb4,c5,g5]@2, b2@7 g5@4 ab5@5, g5@6 [g3,d4] c5@2 c5 [g3,eb4]@4 ~@2, ~@2 d5@6 ~ eb5@7, ~ [g3,d4] [b4,f5]@2 c3@4]/2", // Cm G5 Cm G5 Bdim
  D: "[c3 ~ [g3,eb4] ~@3 [g3,eb4] ~ b2 ~ [g3,d4] f5@2 b4 [g3,d4,d5] gb5, g5@4 ab5@3 g5@2 d5@2 ~@5]/2", // Cm G5
  E: "g5@2 [g3,d4] ~ f5@2 [g3,d4] g5, b2 ~ d5@2 ~@4", F: "~ c5!2 b4 g4 ~@3",
  G: "~@3 [c3,d5], c3@5 c5@3, c5@3 c5 d5@2 ~@2, ~ eb5@3, ~ [g3,eb4]", // Csus2 Cm
  H: "~@4 d4 ~ b2@2, b2@3 ~, g3!2, ~@3 b3@5, ~@5 d4@3", I: "~@5 c5 [b2,c5]@2, g4, b2@3 ~, ~ d5 [g3,d4,d5]@2, ~@3 b4@5",
  J: "~@3 [c3,g4], c4, c3@3 ~, ~ eb4@3 [g3,eb4]@4, ~@3 ab4@5", // C5 Cm
  K: "c3 ~@2 eb4 ~@2 c3@2, c4, ~ c3@5 ~@2, ~ [g3,eb4], ~@5 g4@3", // Cm
  L: "b2 ~@3 d4 ~ b2@2, g3!2, ~ b2@5 ~@2, ~@3 b3@5, ~@5 d4@3", M: "b2!2 ~@2 [g3,d4] ~ [c3,c4]!2, g3@3 b3@3 ~@2",
  N: "[g5!2 ~@13 eb5, c3@6 [g3,eb4,g5] f5@9, ~@2 [g3,eb4,g5]@3 eb5@3 ~@5 eb5@2 ~, ~@3 g4@5 b2@8, ~@2 c5@2 ~ [g3,d4]@2 [g3,d4,d5]]/2", // Cm G5
  O: "[g3@2 ~@3 d4 ~@3 eb4 ~@4 [g3,eb4,g4]@2, b2 c3, ~ g3@2 [g3,d4] ~ [g3,eb4]@2 ~, ~@2 d4@3 ~@2 c4@9, ~@3 b3@5 ~@3 ab4@5]/2", // Cm G5 Cm
  P: "[g5!3 g4 c5 eb5 g5 ~ [b2,b3]@2 [b2,b3]@2 ~ eb5 [b2,b3,d5]@2, [c3,c4]!4 ~@2 [b2,b3] ~, ~@14 f5@9 ~@9]/2", // B Bm C B
  Q: "b2!3 [b2,b3]!4 [b2,b3,c4], g3@3 ~@2 d4@2 ~", R: "c5 eb5 g5 ~ ab5 g5 f5 ~",
  S: "[b4@2 b4@2 ~@7 c5@2 ~@2 ab5, b2@7 g5@9, g5@6 [g3,d4] c5@2 c5 [g3,eb4] ab5@3 [g3,eb4,eb5]@2, ~@2 d5@6 ~ eb5@4 c5@3, ~ [g3,d4] [b4,f5]@2 c3@4]/2", // G5 Cm G5 Bdim
  T: "b4@2 b4@2 ~@3 [c5,g5], b2, g5@3 [g3,d4], ~ d5@3, ~ [g3,d4] [b4,f5]@2", // C5 G5 Bdim
  U: "[c3,c4] eb4 [c3,g4] ~ [c3,ab4] g4 eb5 ~", V: "~@7 c5, [c3,eb5]!2, ~ [g3,eb4,d5]@2 [g3,eb4,d5], ~@3 c5@4 ~",
  W: "~@7 c5, [b2,eb5]!2, ~ [g3,d4,d5]@2 [g3,d4,d5], ~@3 c5@4 ~", // B G5
  X: "~@3 [g3,eb4], eb5, c3@3 c5@5, ~ d5@3, ~ [g3,eb4] c3@2", Y: "c4 eb4@2 ab4@3 g4@2",
  Z: "[c3,c5] ~ eb5 c5 [g3,eb4,d5] c5 [c3,d5] ~", AA: "g3@3 ~ [g3,d4] ~ b2 ~, b2 ~@2 b3@2 d4@3",
  AB: "c3!2 ~ eb4 [g3,eb4] ~ c3 ~, c4@3 ~@2 g4@3", AC: "b2!2 ~@2 [g3,d4] ~ b2 ~, g3@3 b3@2 d4@3",
  AD: "[b4@4 b4@4 ~@16 c3@2 c3!2 c3@2 c3@2, b2@7 g5@9, g5@6 [g3,d4] c5@2 c5 [g3,eb4]@6, ~@2 d5@6 ~ eb5@7, ~@2 [g3,d4]@2 [b4,f5]@4 c3@3 [c5,ab5]@5]/2", // G5 Cm G5 Bdim Fm
  AE: "[c2@3 c2 c5@3 ~@4 b1 ~@3 gb5, g5@7 [c5,g5]@7 d5@2, c5@4 [c2,ab5]@4 b1@3 f5@5, ~@9 d5@4 b4@3, ~@3 b1]/2", // C5 Fm
  AF: "b4@2 ~ b1 ~@3 [c5,g5], g5@7 ~, b1@3 ~ [b1,b4,f5]@4, ~ d5@3, ~ b4 ~@2", AG: "~@3 c4 ~@4",
  AH: "c4 eb4 g4 ~ ab4 g4 ~@2",
})).s("gm_piano").gain(0.3)

stack(piano)