Strudelify

Remembrance

TheNightreader

KeyD majorTempo120 bpm
0:00/0:00
// Remembrance — TheNightreader
// 120 bpm, 4/4, key D 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/1530326; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 57 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.

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P Q N R S T U V W X Y Z AA T U V W AB AC AD AE AF AG AH AI AJ AK AL AM AJ AK AL AM AJ AK
  AL AM AN AO AP AQ AR
>`.pickRestart({
  A: "~ f#3, d2, ~ f#2@7, ~ a2@3, ~@3 d3@5", B: "~ d3, b1, ~ d2@7, ~ f#2@3, ~@3 b2@5",
  C: "~ b2, g1, ~ b1@7, ~ d2@3, ~@3 g2@5", D: "~@3 a2 ~@3 c#4, a1@2 ~ a3, ~ c#2@3 ~ e3@3, ~ e2 c#3@2",
  E: "~@2 d4!2, [d2,d5] f#3, ~ f#2@7, ~ a2@3, ~@2 d4 d3@5", F: "~@2 b3!2, [b1,b4] d3, ~ d2@7, ~ f#2@3, ~@2 b3 b2@5",
  G: "~@2 g3!2, [g1,g4] b2, ~ b1@7, ~ d2@3, ~@2 g3 g2@5", // G
  H: "~@3 a2 ~@3 c#4, [a1,a4]@4 ~ e3@3, ~ c#2@3 c#5@2 [a3,c#5]@2, ~ [e2,c#5] c#3@2", // A C#m
  I: "~@7 c#4, d2@4 f#3 e4 d4@2, d4@3 d3@5, ~ f#2@7, ~ a2@3", J: "~@7 c#4, b1@4 d3 e4 d4@2, d4@3 b2@5, ~ d2@7, ~ f#2@3",
  K: "~@5 d4 ~ e4, g1@2 b2 d4, d4@3 g2@5, ~ b1@7, ~ d2@3",
  L: "~@3 a2 ~@3 c#4, [a1,f#4]@2 ~ a3, ~ c#2@3 ~ e3@3, ~ e2 [c#3,e4]@2", // D C#m
  M: "~ d4 ~@4 g4@2, d2 [f#3,a4], f#4@3 [d3,f#4]@5, ~ f#2@7, ~ [a2,d4]@3", // F#m D D5
  N: "~ e4 ~@4 c#4@2, b1 [d3,d4], f#4@3 [b2,f#4]@5, ~ d2@7, ~ [f#2,e4]@3", // D B5 F#7
  O: "~ a3 ~ g3 g3@2 g3@2, [g1,b3] b2, ~ b1@7, ~ [d2,a3]@3, ~@3 g2@5", // G D5
  P: "a3 ~@2 [a2,a3] a3!2 c#4 [c#4,e4], a1 ~, ~ c#2@3 ~@2 a3@2, ~ a3@2 ~ c#3@4, ~@2 [e2,b3]@2 ~ e3@3", // A C#m E5
  Q: "~@3 b4, d2 [f#3,a4], d4 [a2,d4]@3, ~ f#2@7, ~ e4@2 [d3,e4]@5", // F#m D5 Dsus2
  R: "~ d4!2 ~@2 d4!3, [g1,b3]@3 d4 [b2,f#4]@4, ~ b1@7, ~ d2@3, ~@3 g2@5", // G B5
  S: "~ e4 ~ [a2,f#4] ~@3 c#4, a1 ~, f#4@3 ~@2 e3@3, ~ c#2@3 ~@2 a3@2, ~ [e2,e4] [c#3,e4]@2", // D E C#m
  T: "[d3,a3]@2 [d3,a3]@2 ~ d4 f#4 a4, d4@2 [d3,a3]!2", // D5
  U: "[b2,f#3,f#4]@2 [b2,f#3,e4]@2 f#4 e4 [b2,f#3,d4]@2, ~@2 [b2,f#3] ~", V: "[g2,d3,b3] [g2,d3,g3] [g2,d3]!2, ~ g3",
  W: "[a2,e3,a3]!2 [a2,e3,c#4]!2", X: "f#4 d4!2 f#4 [d3,a3,a4]@2 [d3,a3,g4]@2, [d3,a3]!2 ~@2",
  Y: "f#4 e4!2 f#4 [b2,f#3,d4]@2 [b2,f#3,d4]@2, [b2,f#3]!2 ~@2", // Bm B5
  Z: "b3 a3!2 g3 [g2,d3,g3]@2 [g2,d3,g3]@2, [g2,d3]!2 ~@2", AA: "a3!2 b3 a3!3 c#4 e4, [a2,e3]!4",
  AB: "~@2 [d4,a4]!2, d2 f#3, [d4,a4] a2@3, ~ f#2@7, ~@2 [d4,a4] d3@5", // D5
  AC: "~@2 [b3,f#4]!2, b1 d3, [b3,f#4] f#2@3, ~ d2@7, ~@2 [b3,f#4] b2@5", // B5
  AD: "~@2 [g3,d4]!2, g1 b2, [g3,d4] d2@3, ~ b1@7, ~@2 [g3,d4] g2@5", // G5
  AE: "~@3 a2 ~@3 c#4, a1@4 ~ e3@3, [a3,e4] [e2,a3,e4] c#3@2, ~ c#2@3 [a3,e4]@2 [a3,e4]@2", // A5
  AF: "~@7 a5, d2@4 f#3 d5 f#5@2, d5@3 d3@5, ~ f#2@7, ~ a2@3",
  AG: "~@3 d5, b1@4 [d3,f#5] e5@3, f#5@2 e5 b2@5, ~ d2@7, ~ f#2@3", // D
  AH: "~ [b2,g4], [g1,b4], ~ b1@7, ~ d2@3, ~@2 g4 g2@5", // Em G
  AI: "~@3 a2 ~@3 c#4, a1@4 ~ e3@3, a4 [e2,a4] c#3@2, ~ c#2@3 c#5@2 [a3,c#5]@2", // A5 A
  AJ: "~@5 f#4!2 [f#4,a5], d2@4 f#3 d5 f#5@2, [f#4,d5]@3 d3@5, ~ f#2@7, ~ a2@3", // F#m D
  AK: "~@3 [d4,d5], b1@4 [d3,f#4,f#5] [e4,e5]@3, [f#4,f#5]@2 [e4,e5] b2@5, ~ d2@7, ~ f#2@3", // D E F# E
  AL: "~ [b2,g3,g4], [g1,d4,b4], ~ b1@7, ~ d2@3, ~@2 [g3,g4] g2@5", // Em G
  AM: "~@3 a2 ~@3 c#4, a1@4 ~ e3@3, [c#4,a4] [e2,c#4,a4] [c#3,e4]@2, ~ c#2@3 c#5@2 [a3,g4,c#5]@2", // F#m A C#m A7
  AN: "[f#4,d5]@9 ~ [f#4,d5]@2 [f#4,f#5]@2 [f#4,a5]@2, [d2,a2,d3]@15 ~", // D F# F#m D5
  AO: "[f#4,f#5]@2 [e4,e5]@2 [f#4,f#5] [e4,e5] [d4,d5]@2, [b1,f#2,b2]@15 ~", // F# E F# E D B5
  AP: "[d4,b4] [g3,g4] [g3,g4]@2, [g1,d2,g2]@15 ~", AQ: "[c#4,a4]!2 [e4,c#5] [g4,c#5], [a1,c#2,a2]@15 ~",
  AR: "~ [a2,d3,d5]@15, [f#2,f#4]", // D5 F#
})).s("gm_piano").gain(0.3)

stack(piano)

More by TheNightreader