Strudelify

One More Light Piano Tenor

Blake Morris

KeyA♭ majorTempo85 bpm
0:00/0:00
// One More Light Piano Tenor — Blake Morris
// 85 bpm, 4/4, key Ab 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/5947843; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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 C D A B C D A B C D A B C D A B C D A B C D E F G H E F G H E F G I A B C D A B C D A B C D A B C D E F G H E F G
  H E F G J K L M N K O P Q E F G H E F G H E F G H G R@3
>`.pickRestart({
  A: "~@7 [ab3,c4], f2, f3!4, ~ [ab3,c4]@2 [ab3,c4]@2 [ab3,c4]@2 ~", // Ab
  B: "~@7 [ab3,db4], db2, f3!4, ~ [ab3,db4]@2 [ab3,db4]@2 [ab3,db4]@2 ~", // Db5
  C: "~@7 [ab3,eb4], ab2, eb3!4, ~ [ab3,eb4]@2 [ab3,eb4]@2 [ab3,eb4]@2 ~", // Ab5
  D: "~@3 [ab3,eb4] ~@3 [g3,eb4], ab2 g2, eb3!4, ~ [ab3,eb4]@2 ~@2 [g3,eb4]@2 ~", // Ab5 Cm Ab5 Cm
  E: "~@7 [ab3,c5], f2, f4@3 [ab3,c5] [c4,f4]@4, ~ c3@7, ~ c5 [f3,f5]@3 [ab3,c5] [f3,f5]@2", // Ab F5 F Ab F
  F: "~@7 [f3,ab4], db2, db4@3 [f3,ab4] [ab3,db4]@4, ~ ab2@7, ~ ab4 [db3,db5]@3 [f3,ab4] [db3,db5]@2", // Fm Db5 Db Fm Db
  G: "~@7 [c4,eb5], ab2, ab4@3 [c4,eb5] [eb4,ab4]@4, ~ eb3@7, ~ eb5 [ab3,ab5]@3 [c4,eb5] [ab3,ab5]@2", // Cm Ab5 Ab Cm Ab
  H: "~@7 [bb3,eb5], g2, g4@3 [bb3,eb5] [eb4,g4]@4, ~ eb3@7, ~ eb5 [g3,g5]@3 [bb3,eb5] [g3,g5]@2", // Eb5 Eb G Eb5 G
  I: "~@7 [eb3,eb5], g2, g4@3 [bb3,eb5] [eb4,g4]@4, ~ eb3@4 eb5 [g3,g5]@2, ~ eb5 [g3,g5]@3 bb3@3", // Eb Eb5 Eb G
  J: "~@5 [bb5,bb6] ~ [eb3,ab5,ab6], g2, ~ eb3@5 [g3,bb5,bb6]@2, ~@2 g3@3 bb3@3, ~@3 bb3 [eb4,c6,c7]@4", // Bb Ab5 Gm Cm
  K: "[ab5,ab6]!2 ~ [eb6,eb7]!2 ~ [bb5,bb6] [f3,bb5,bb6], f2, ~ f3@2 f3@2 [eb6,eb7]@3, ~ [ab5,ab6]@3, ~@2 c3@2 c3 f3 c3@2", // Ab Eb Bb Bb5 Eb Ab
  L: "~@2 [bb5,bb6]!2 ~ [c6,c7] ~ [f3,bb5,bb6], db2, [bb5,bb6] db3 [bb5,bb6] [db3,c6,c7], ~ [ab5,ab6]@7, ~ f3@2 f3 db3 f3@2 ~", // Bb C Bb5 Bb Dbmaj7 Ab
  M: "[ab5,ab6]!2 ~ [eb6,eb7]!2 ~ [bb5,bb6] [ab3,bb5,bb6], ab2, ~ ab3@2 ab3@2 [eb6,eb7]@3, ~ [ab5,ab6]@3, ~@2 eb3@2 eb3 ab3 eb3@2", // Ab Eb Bb Absus2 Eb Ab
  N: "~@2 [bb5,bb6] [ab3,bb5,bb6] ~ [c6,c7] ~ [g3,bb5,bb6], ab2 g2, [bb5,bb6] eb3 ~ [eb3,c6,c7], ~ [ab5,ab6]@3 [bb5,bb6]@3 ~, ~ ab3@2 ~@2 g3@2 ~", // Bb Absus2 C Gm Bb Cm Ab Bb
  O: "~@2 [bb5,bb6]!2 ~ [c6,c7] ~ [f3,ab5,ab6], db2, [bb5,bb6] db3 [bb5,bb6]@2, ~ [ab5,ab6]@5 [db3,c6,c7]@2, ~ f3@2 f3 db3 f3@2 ~", // Bb C Fm Bb Ab Dbmaj7
  P: "[bb5,bb6]!2 ~@5 [ab3,c6,c7], ab2, ~ ab3@2 [ab3,c6,c7]@2 [ab3,c6,c7]@2 ~, ~ [eb3,bb5,bb6]!3", // Bb Ab Eb5
  Q: "~@3 ab3 ~@3 g3, [ab2,ab5,ab6] g2, ~ ab3@2 ~@2 g3@2 ~, ~ eb3 ~ eb3", // Ab
  R: "[~ [ab5,eb6,ab6], ab3!4 [ab1,ab3]@8, ~ c4@2 c4@2 c4@2 c4@16 ~]/3", // Ab5 Ab
})).s("gm_piano").gain(0.3)

stack(piano)