Strudelify

Dido and Aeneas Z.626

Henry Purcell

KeyB♭ majorTempo80 bpm
0:00/0:00
// Dido and Aeneas Z.626 — Henry Purcell
// 80 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (1/4 at bar 1, 4/4 at bar 1, 3/4 at bar 10, 1/8 at bar 16, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 11 "Cello, Basso" cello (copy of ch 15 "Cembalo," harpsichord)
// note: Transcription provider: pdmx. https://musescore.com/score/4320591; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 37 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// other · string ensemble 1 · "Fioliner, Violin II"
const string_ensemble_1 = note("<~ A@7 B C D E F D E F G H I J K L ~ M N O P Q K R@2 S T U V W M>".pickRestart({
  A: "[~@3 f4@4 bb4@4 d5@2 eb5 ~ c5@4 ~@2 e4@2 f4@4 f4 bb4 ~@2 a4@3 ~@5 f4@4 bb4@4 d5@2 eb5 ~ c5@4 ~]/7",
  B: "~ e4@2 f4@4 f4", C: "bb4 ~@2 a4@4 ~", D: "~@5 c5 f4!2", E: "bb4 d4!2 d5 bb4 d5 bb4 f4", F: "bb4 g4@3 f4@3 ~",
  G: "d5", H: "d5@4 g5@4 g5@4 gb5 gb5@3, ~@13 g5 ~@2", I: "g5", J: "d5 a4", K: "bb4", L: "bb4 ~", M: "bb4@3 ~",
  N: "gb4@6 bb4 a4", O: "bb4 d5 ~@2", P: "f4 a4 ~@2", Q: "d5@4 bb4@4 bb4@4 a4 a4@3, ~@13 bb4 ~@2", R: "d5/2",
  S: "d5@2 bb4@2 c5 bb4 a4 g4", T: "gb4@3 d4", U: "d4 eb5 a4 d5", V: "g4 c5 bb4!2", W: "bb4@2 bb4 a4",
})).s("gm_string_ensemble_1").gain(0.31)

// other · string ensemble 1 · "Fioliner, Violin II" · soft notes
const string_ensemble_1_soft = note("<A@2 B C D E ~ F@2 G ~@12 H I ~@13>".pickRestart({
  A: "[~@7 f4@4 ~@5]/2", B: "~@6 g4 ~", C: "~@3 eb4@2 ~@3", D: "~@5 g4@2 ~", E: "~@3 f4@4 ~",
  F: "[~@2 g4 ~@4 eb4@2 ~@7]/2", G: "~ g4@2 ~@5", H: "a4 ~", I: "~@3 g4",
})).s("gm_string_ensemble_1").gain(0.18)

// other · viola
const viola = note("<~ A@2 B@3 C@2 D E F G H F G H I J@4 K ~ L M N O P J Q R S T U V W X>".pickRestart({
  A: "[~@7 f4@4 bb4@4 bb4]/2", B: "[~ g4@2 ~@4 c4@3 f4 ~ d4 ~@2 c4@3 ~@6]/3", C: "[~@3 f4@4 bb4@4 bb4 ~ g4@2 ~]/2",
  D: "~@3 c4@3 f4 ~", E: "d4 ~@7", F: "~@2 eb4 bb3!2 c4 a3!2", G: "bb3 bb3@2 bb4 f4 bb4 f4 d4", H: "f4 eb4@3 c4@3 ~",
  I: "a4@3 d4", J: "d4", K: "d4 ~", L: "~@3 c4", M: "d4@3 d4", N: "f4 bb4 ~@2", O: "c4 d4", P: "bb4 f4 c4@2",
  Q: "bb4 g4 bb4 g4", R: "c4 a3", S: "bb3 g3 g3@2", T: "d4@3 a3", U: "bb3 bb4 f4 a4", V: "d4 f4!2 eb4", W: "f4@3 f4",
  X: "d4@3 ~",
})).s("gm_viola").gain(0.35)

// other · viola · soft notes
const viola_soft = note("<A@2 ~ B C D@2 E@2 F ~@12 G H ~@13>".pickRestart({
  A: "[~@7 d4@4 bb3@4 ~]/2", B: "g4 ~@2 c4@4 ~", C: "~@3 f4 ~ c4!2 ~", D: "[~@3 d4@4 bb3@4 ~@5]/2",
  E: "[~@4 g4 ~@2 c4@4 ~@4 f4]/2", F: "~ c4!2 c4@4 ~", G: "d4 ~", H: "d4@2 bb3 ~",
})).s("gm_viola").gain(0.2)

// chords · harpsichord · "Cembalo, Harpsichord"
const harpsichord = note("<A@6 B@4 ~ C D ~ C D E F G H I J K L M N O P Q R S T U V W X Y>".pickRestart({
  A: "[~@15 bb4@7 ~@9 bb4@7 [f4,bb4,d5]@4 [g4,bb4]@3 f4 [eb4,c5]@8 ~ g4@3 [e4,g4,c5]@4 ~ a4@7 [d4,f4,bb4]@4 ~@5 a4@5 ~@3 bb4@7 ~@2, ~@7 [bb3,f4]@4 ~@4 [bb3,f4]@4 ~@8 [c4,eb4]@2 ~@2 [c4,f4]@4 ~@4 [c4,f4]@3 ~ [bb3,f4]@4 ~]/6", // Bb Gm Cm C Bb Bb5 Cm F5 …
  B: "[~@7 bb4@7 [f4,bb4,d5]@4 [g4,bb4]@3 f4 [eb4,c5]@8 ~ g4@3 [e4,g4,c5]@4 ~ a4@7 [d4,f4,bb4]@4 ~@14, ~@3 [bb3,f4]@4 ~@8 [c4,eb4]@2 ~@2 [c4,f4]@4 ~@9]/4", // Bb Gm Cm C Bb Bb5 Cm F5
  C: "~@6 d4 eb4 f4@2 d4@2 [d4,f4,bb4]@4", D: "[d4,f4] [eb4,g4]@2 [eb4,c5] [c4,f4,a4]@3 ~",
  E: "[d4,gb4] d4 e4 gb4 g4 gb4 g4 a4", F: "bb4 a4 bb4 c5 d5 d4 gb4@2", G: "g4 a4 bb4 c5 d5 c5 bb4 c5",
  H: "[d4,a4] [d4,a4,d5]", I: "bb4@3 c5 d5@2 bb4@2, g4", J: "~@3 c5 d5 c5 bb4 c5", K: "a4@3 ~ d5 c5 ~@2",
  L: "g4 gb4 g4 a4 bb4 a4 bb4 c5", M: "d5", N: "~@4 [a4,c5] [bb4,d5] [c5,eb5]@2", O: "~@4 [bb4,d5] [c5,eb5] [d5,f5]@2",
  P: "~ [f4,bb4] bb4 a4, ~ f4", Q: "[d4,bb4]", R: "[d4,g4,bb4]@6 d5 bb4", S: "[d4,a4,c5] [d4,a4,d5]",
  T: "[d4,g4,bb4] [eb4,g4,c5]", U: "[d4,gb4,a4]", V: "~@2 g4!2 a4@2 f4!2", W: "bb4!2 c5!2 d5@2 g4@2",
  X: "g4 d4 ~ a4, bb4@3 ~, ~ c4", Y: "[d4,bb4]@3 ~",
})).s("gm_harpsichord").gain(0.4)

// chords · harpsichord · "Cembalo, Harpsichord" · soft notes
const harpsichord_soft = note("<~ A ~@2 B C@2 ~@2 D ~@11 E F ~@14>".pickRestart({
  A: "~@3 [bb3,f4]@4 ~", B: "~@5 [c4,e4,g4]@2 ~", C: "[~@7 [bb3,f4]@4 ~@5]/2", D: "~ [c4,e4,g4]@2 ~@5", E: "g4@3 ~@5",
  F: "~@3 d4 ~@2 bb4 a4",
})).s("gm_harpsichord").gain(0.23)

// other · harpsichord · "Cembalo,"
const harpsichord_2 = note("<A@7 B@3 ~ C D ~ C D E F G H G I J K L M N O P Q@2 R L S T U V>".pickRestart({
  A: "[~@14 bb2@8 bb2@8 bb2@8 bb2@4 eb3@3 d3 c3@8 c3@8 f3@8 bb2@4 c3@4 f2@6 ~@2 bb2@8 bb2@8 bb2@8 bb2@2]/7",
  B: "[~@2 eb3@3 d3 c3@8 c3@8 f3@8 bb2@4 c3@4 f2@8 ~@2]/3", C: "~@3 bb3 bb2!2 bb3 bb2", D: "bb2 eb3@2 c3 f3@3 ~",
  E: "d3@2 d3 c3 bb2 c3 bb2 a2", F: "g2 d2", G: "g2@2 g2 a2 bb2@2 g2@2", H: "gb2", I: "g3@2 g2 a2 bb2@2 g2@2",
  J: "gb2@4 d3 c3 bb2 a2", K: "g2@3 eb3", L: "d3", M: "bb2 g2!2 g3", N: "a3 f3 bb3 bb2", O: "d3 eb3 f3 f2", P: "bb2",
  Q: "[g2@3 gb2]/2", R: "g2 c3", S: "g3 eb3 f3 d3", T: "g3 a3 bb3 eb3", U: "d3 bb2 f3 f2", V: "bb2@3 ~",
})).s("gm_harpsichord").gain(0.38)

stack(string_ensemble_1, string_ensemble_1_soft, viola, viola_soft, harpsichord, harpsichord_soft, harpsichord_2)

More by Henry Purcell