Strudelify

Praeludium and Allegro in the Style of Pugnani

G. Pugnami-Kreisler

KeyG majorTempo144 bpm
0:00/0:00
// Praeludium and Allegro in the Style of Pugnani — G. Pugnami-Kreisler
// 144 bpm, 3/4, key G 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 (4/4 at bar 1, 3/4 at bar 30, 4/4 at bar 54, 1/8 at bar 84, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5978739; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 186 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · cello · "Violoncello"
const cello = note(`<
  A@3 B@4 C@4 D@4 E@2 F@2 G@2 H@2 I@4 J@2 K@2 L@8 M@6 N@5 O@7 P@8 Q@4 R@8 S@7 T U V W X Y Z AA AB AC AD AE T U V W AF AG
  AH AI AJ AK AD AL AM AA@3 AM AA@2 AN AO AP@3 AO AP@3 AQ AR AS AT AU AV AW W T U V W AX AY AZ BA BB BC BD BE BF@19 BG@4
  BH U V BI BJ BK BL BM BN BO BP@2 BQ W BR BS BT@3
>`.pickRestart({
  A: "[~@2 [e2,e3]@7 [e2,e3]@7]/3", B: "[[e2,e3]@21 ~ [e2,e3]@21 [e2,e3]@21]/4", C: "[[e2,e3]@21 ~ [a2,a3]@21 d3@21]/4",
  D: "[[g2,g3]@21 ~ c3@21 [f#2,f#3]@21]/4", E: "[b2@21 ~ b2@10]/2", F: "[a2@11 g#2@21]/2", G: "[a2@11 c3@11 d3@10]/2",
  H: "[f#2@11 g2@11 b2@10]/2", I: "[c3@11 e3@11 f#3@21 b2@11 c3@10]/4", J: "[[f#2,f#3]@21 ~ b2@10]/2",
  K: "[b2@5 ~ b2@5 [e2,b2]@21]/2", L: "[~@4 [e2,b2]@25 [e2,d3]@25 [e2,d3]@25 [a2,f3]@25 [a2,f#3]@24]/8",
  M: "[~ [a2,g3]@25 [a2,g3]@25 d2@25 d2@20]/6", N: "[~@5 c2@25 e2@25 ~ [b2,f#3]@24]/5",
  O: "[~ [b2,f#3]@25 [b2,f#3]@25 [e2,e3]@21 [e2,e3]@21 [e2,e3]@19]/7", // B5 E
  P: "[~@3 [e2,e3]@21 [e2,e3]@21 [e2,e3]@21 ~ [a2,a3]@21 d3@21 [g2,g3]@19]/8", Q: "[~@3 c3@21 [f#2,f#3]@21 b2@19]/4",
  R: "[~@3 b2@10 a2@11 g#2@21 a2@11 c3@11 d3@10 f#2@11 g2@11 b2@10 c3@11 e3@8]/8",
  S: "[~@3 f#3@21 b2@11 c3@10 [f#2,f#3]@21 ~ b2@10 b2@5 ~ b2@5 [e2,b2]@21 ~@3]/7", // F# E5
  T: "e3@4 f#3 g3 ~@2 a3 ~@2 b3 ~ b2 ~@2", U: "e3@11 g2@5", V: "b2@5 d#3@5 ~ e3@5", W: "b2@11 ~@5", X: "[e2,e3]",
  Y: "[a2,e3]", Z: "[d2,d3]", AA: "[g2,d3]", AB: "[c2,c3]", AC: "f#2", AD: "b2@5 b2@5 ~ b2@5", AE: "[b2,f#3]@11 ~@5",
  AF: "[b2,e3]", AG: "a2", AH: "d3@11 f#2@5", AI: "g2", AJ: "c3@11 g2@5", AK: "a2@11 c3@5", AL: "e3@11 e2@3 ~@2",
  AM: "g2@3 ~@2 [g2,d3]@11", AN: "[g2,d3]@8 e3@3 f#3@5", AO: "b2@3 ~@2 [b2,f#3]@11", AP: "[b2,f#3]",
  AQ: "[b2,f#3]@11 b3@5", AR: "b3@11 g#2@5", AS: "a2@11 c4@5", AT: "a3@11 f#2@5", AU: "g2@11 b3@5",
  AV: "c4@11 [e2,e3]@5", AW: "[f#2,f#3]@11 a2@5", AX: "e2 ~@12 e3 ~@2", AY: "a2 ~@12 a2 ~@2", AZ: "d3 ~@12 d3 ~@2",
  BA: "g2 ~@12 g2 ~@2", BB: "c3 ~@12 e3 ~@2", BC: "f#2 ~@12 f#2 ~@2", BD: "b2 ~@12 b2 ~@2", BE: "b2 ~@15", BF: "b2",
  BG: "b2@11 b3@5", BH: "e2@3 f#2@2 g2@3 a2@3 b2@2 b2@3", BI: "b2@11 b2@5", BJ: "e3@11 e3@5", BK: "a2@11 a2@5",
  BL: "d3@11 d3@5", BM: "g2@11 g2@5", BN: "c3@11 c3@5", BO: "f#2@11 f#2@5", BP: "b2@5 e2@5 ~ a2@5",
  BQ: "b2@5 e2@5 ~ a2@2 f#2@3", BR: "g2 a2", BS: "~ b2@8 b2@7", BT: "[~ b2@17 e2@25 ~@5]/3",
})).s("gm_cello").gain(0.09)

stack(cello)