Strudelify

Niel Gow's Lament for the Death of his Second Wife

Niel Gow

KeyD majorTempo85 bpm
0:00/0:00
// Niel Gow's Lament for the Death of his Second Wife — Niel Gow
// 85 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5712567; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/3)

// 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@2 B@2 C@2 D@2 E@2 F@2 G H I G J K L M N O P M Q R S T U V W X Y Z AA AB AC AD AE AA AF AC AA AG AC AH AI AF AJ AK
  AL AM AF AN AD AO AP AQ AR AS AT I@2 G
>`.pickRestart({
  A: "[[d2,d4,f#4]@23 ~]/2", B: "[[c#4,e4]@23 ~ [b3,d4]@23 ~, d2@23 ~]/2", C: "[[a3,d4]@23 ~ [a3,e4]@23 ~, d2@23 ~]/2",
  D: "[[a3,d4]@23 ~ [g3,d4]@23 ~, d2@23 ~]/2", E: "[[d4,f#4]@23 ~ [b3,d4]@23 ~, d2@23 ~]/2",
  F: "[[c#4,e4]@23 ~ [g3,d4]@23 ~, d2@23 ~]/2", G: "[d2,a3,d4]@23 ~", H: "[d2,b3,d4]@23 ~", I: "[d2,g3,d4]@23 ~",
  J: "f#4@15 ~ e4@8, [d3,a3,d4]@23 ~", K: "d4@15 ~ d4@8, [b2,f#3,b3]@23 ~", L: "e4 f#4 a4, [a2,a3,c#4]@23 ~",
  M: "[g2,b3,d4,g4]@23 ~", N: "[d3,a3,d4,f#4]@23 ~", O: "[c#3,a3,c#4,e4]@23 ~", P: "f#4@15 ~ f#4@8, [b2,a3,d4]@23 ~",
  Q: "~ a2 ~@2 e4@2, [d2,a3,d4]@23 ~, f#4@5 ~@3, ~@8 d3@15 ~", // D5
  R: "~ f#2 ~@2 d4@2, [b1,f#3,b3]@23 ~, d4@5 ~@3, ~@8 b2@15 ~", S: "~ a2 f#4@2 a4@2, [e2,a3,c#4]@23 ~, e4@8 d3@15 ~",
  T: "~@4 b2@4 d3@15 ~, [g2,b3,d4,g4]@23 ~", U: "~@4 a2@4 d3@15 ~, [d2,a3,d4,f#4]@23 ~",
  V: "~@4 b2@4 d3@15 ~, [g2,g3,d4]@23 ~", W: "~@4 b2@4 d3@15 ~, [d2,g2,g3,d4]@23 ~",
  X: "~@2 [a3,c#4], [d2,a2]@23 ~, [a3,d4,f#4]@5 ~@3, ~@8 d3@15 ~", Y: "~ b2 d3 b2 d3 b2, [f#2,b3,d4]@23 ~, f#4@5 ~@3",
  Z: "~ a2 c#3 a2 c#3 a2, [e2,a3,c#4]@23 ~, e4@5 ~@3", AA: "~ b2 d3 b2 d3 b2, [g2,g3,b3,d4]@23 ~",
  AB: "~ a2 d3 a2 d3 a2, [f#2,a3,d4,f#4]@23 ~", AC: "~ c#3 e3 c#3 e3 c#3, [a2,a3,c#4,e4]@23 ~",
  AD: "~ d3 f#3 d3 f#3 d3, [b2,b3,d4,f#4]@23 ~", AE: "~ d3 f#3 d3 f#3 d3, [f#2,a3,d4,f#4]@23 ~",
  AF: "~ a2 d3 a2 d3 a2, [d2,a3,d4,f#4]@23 ~", AG: "~ a2 d3 a2 d3 a2, [f#2,f#3,a3,d4]@23 ~",
  AH: "~ d3 f#3 d3 a2 c#3, b2@23 ~, [a3,d4,f#4]@15 ~ [c#4,e4]@8", // D C#m
  AI: "~ a2 d3 a2 b2 g2, d2@23 ~, [a3,d4,f#4]@15 ~ [g3,d4]@8", AJ: "~ a2 d3 a2 d3 a2, [d2,d4,f#4,a4]@23 ~",
  AK: "~ c#3 e3 c#3 e3 c#3, [a2,c#4,e4,a4]@23 ~", AL: "~ b2 d3 b2 d3 b2, [g2,d4,g4,b4]@23 ~",
  AM: "~ a2 d3 a2 d3 a2, [f#2,d4,f#4,a4]@23 ~", AN: "~ b2 d3 b2 d3 b2, [g2,b3,d4,g4]@23 ~",
  AO: "~@4 c#3@4 [e3,c#4]@15 ~, [a2,a3,e4]@23 ~, d4 ~@2", AP: "f#4@15 ~ e4@8, [d2,a3,d4]@23 ~",
  AQ: "d4@15 ~ d4@8, [d2,f#3,b3]@23 ~", AR: "e4 f#4 a4, [d2,a3,c#4]@23 ~", AS: "[d2,b3,d4,g4]@23 ~",
  AT: "[d2,a3,d4,f#4]@23 ~", // D
})).s("gm_piano").gain(0.3)

stack(piano)