Strudelify

The Last Rose of Summer Op.173

Thomas Moore

KeyD majorTempo72 bpm
0:00/0:00
// The Last Rose of Summer Op.173 — Thomas Moore
// 72 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/131816; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 33 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/3)

// 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 C G H I J K L M N O E B C D E F C G H I J K L M N O E>".pickRestart({
  A: "~@8 d4@3 e4", B: "f#4@4 [f#4,d5]@3 c#5 [d3,g3,b3,g4,b4]@3 a4, [d3,f#3,a3]@2 ~",
  C: "[f#4,a4]@4 f#4@2 ~@2 d4@3 e4, [d3,f#3,a3]@2 ~", D: "f#4@2 a4@4 f#4@2 [a2,g3,c#4,e4]@3 d4, [a2,a3]@2 ~",
  E: "[d3,f#3]@4 d2@4 d4@3 e4, d4@2 ~", F: "f#4@4 d5@3 c#5 [d3,g3,b3,b4]@3 a4, [d3,f#3,a3]@2 ~",
  G: "[d4,f#4]@4 [d4,a4]@8 [d4,f#4]@4 f#4 [c#4,e4]@5 d4@2, [a2,a3]@2 [a2,g3]", // D D5 D C#m A A7
  H: "[d3,f#3,d4]@4 [d2,d4]@2 ~@2 a4@3 f#4", // D
  I: "d3@3 f#3@2 a3@3 d3@3 ~@2 b3@3 d3@3 f#3@2 ~ a4@2, [f#4,d5]@11 f#3@3 ~@7 a3@3, ~@6 c#5@2 [g4,b4]@3 ~", // D G
  J: "d3@3 f#3@2 a3@3 d3@3 f#3@2 b3@3 d3@3 f#3@2 ~ f#4@2, a4@8 f#4@8 a4@5 a3@3",
  K: "b2@3 d3@2 f#3@3 b2@4 [e3,e4,g4,c#5]@4 [f#3,d4,f#4,b4]@4 [f#2,c#4,f#4,a#4]@4, [f#4,b4,d5] ~", // C#dim Bm F# Bm
  L: "[d4,f#4,b4]@4 [b4,c#5] [a#4,b4] c#5@2 [f#4,b4,d5]@8 d4@6 e4@2, a2 ~@2", // Bm Bsus2 Bmaj7 Bm
  M: "d3@3 f#3@2 a3@3 d3@3 f#3@2 ~ c#5@2 c#5 ~@2 f#3@2 ~ a4@2, [d4,f#4]@8 [f#4,d5]@5 b3@3 d3@3 ~@2 a3@3, ~@17 [g4,b4]@5 ~@2", // D G
  N: "d3@3 f#3@2 a3@3 [d4,f#4]@3 a3@2 f#3@3 d3@3 g3@2 ~ e4@2, [f#4,a4]@8 ~@8 d4@5 a#3@3", // D F#m
  O: "a3@3 f#3@2 d3@3 a2@3 d3@2 ~ f#4@2 [a2,c#3,g3,e4]@6 d4@2, [d4,f#4]@8 [f#4,a4]@5 f#3@3 ~@8", // A7 D F#m
})).s("gm_piano").gain(0.3)

stack(piano)