Strudelify

pavane pour une infante defunte pavane for a dead princess

Maurice Ravel

KeyG majorTempo55 bpm
0:00/0:00
// pavane pour une infante defunte pavane for a dead princess — Maurice Ravel
// 55 bpm, 4/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, 2/4 at bar 12, 4/4 at bar 13, 2/4 at bar 19, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5913000; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 71 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(55/4)

// 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 · violin
const violin = note(`<
  A@2 B C D E F G H I J K L ~@12 M@2 A N O P Q R S T U V W X Y ~ Z@8 AA@8 AB AC AD AE AF AG AH AI AJ@2 AK AL@3
>`.pickRestart({
  A: "b3 d4 b3 d4 b3 e4 b3 e4", B: "e4 g4 e4 g4 e4 g4 e4 g4", C: "d4 f#4 d4 f#4 d4 f#4 d4 f#4",
  D: "c4 e4 c4 e4 c4 e4 c4 e4", E: "b3 d4 b3 d4 c4 e4 d4 c4", F: "b3 ~", G: "e4 g4 e4 g4 e4 c4 e4 c4",
  H: "b3 c4 a3 c4 g3 c4 a3 c4", I: "b3 b3@2 b3@2 c4@3", J: "b3!2 d4@2", K: "c4@3 c4 b3 a3 b3@6", L: "b3 ~ d4 f#4 ~@4",
  M: "[~@4 d4@2 c4@3 a#3 c4 d4 b3@2 c4@2]/2", N: "b3 d4 b3 d4 b3 d4 b3 d4", O: "b3 e4 b3 e4 c4 e4 c4 e4",
  P: "a3 d4 a3 d4 b3 d4 b3 d4", Q: "g3 c4 g3 c4 a3 c4 a3 c4", R: "b3 d4 b3 d4 c4 a4 f#4 e4", S: "f#4 ~@3",
  T: "c4 c4@2 c4@2 c4 e4@2", U: "c4 c4@2 c4@2 c4@2 c4", V: "b3 b3@2 b3@2 c4@2 c4", W: "e4 b3 d4 e4 f#4@4", X: "e4 f#4",
  Y: "e4 d4 ~@2",
  Z: "[~@14 c4@5 f4@5 ~ c4@5 a3@5 c4@4 f4@3 a4@4 a4@11 ~@5 c4@5 f4@5 a4@5 ~ a4@16 a4@5 g4@16 ~@5 g4@5 ~ d5@5 c5@5 a#4@5 ~ g4@5 a#4@5 a4@5 ~ g4@5 f4@3 c4@4 f4@4 g3@10 f4@5 ~ a4@5 f4@5 d4@5 f4@4 a4@4 d5@3 d5@11 ~@5 f4@5 a4@5 ~ d5@5 d5@16 c5@5 a#4@5 ~ a4@5 g#4@5 g4@5 ~ f4@5 e4@5 d#4@5 ~ d4@5 c4@32 a#3@11 ~@29]/8",
  AA: "[~@34 c4@5 ~ f4@5 c4@5 a3@5 ~ c4@3 f4@4 a4@3 a4@16 c4@5 ~ f4@5 a4@5 a4@16 a4@5 ~ g4@16 ~@5 g4@5 d5@5 c5@5 ~ a#4@5 g4@5 a#4@5 ~ a4@5 g4@5 f4@4 c4@4 f4@3 g3@11 f4@5 a4@5 f4@5 ~ d4@5 f4@4 a4@3 d5@4 d5@16 f4@5 a4@5 d5@5 ~ d5@16 c5@5 a#4@5 a4@5 ~ g#4@5 g4@5 f4@5 e4@5 ~ d#4@5 d4@5 c4@32 ~@20]/8",
  AB: "~@13 g4@30 a4@5", AC: "~ f#4@6 e4@6 d4@12 e4@6 f#4@12 e4@5", AD: "~ e4@12 b4@30 c5@5",
  AE: "~ a4@6 g4@6 f#4@12 g4@6 a4@12 b4@5", AF: "~ g4@6 f#4@6 e4@12 f#4@6 g4@12 a4@5", AG: "~ f#4@6 e4@6 f#4@35",
  AH: "~ d4@6 c4@6 d4@24 ~@11", AI: "~@13 c4@6 c4@12 c4@12 c4@5",
  AJ: "[~ g4@12 c4@6 c4@12 c4@12 c4@12 c4@6 e4@6 e4@12 e4@12 ~@5]/2", AK: "~ d4@12 b3@12 b4@12 d5@11",
  AL: "[~ c5@4 b4@4 a4@4 b4@96 ~@35]/3",
})).s("gm_violin").gain(0.25)

// other · violin · soft notes
const violin_soft = note("<~@12 A@4 B@2 C D E@2 F@2 G H ~@30 I ~@14>".pickRestart({
  A: "[~@4 d5 d5@2 d5@2 d5@2 d5 b4 b4@2 b4@2 b4@2 b4@2 b4@2 b4@2 b4@2 b4 g4 g4@2 g4]/4",
  B: "[f#4 f#4@2 f#4!2 f#4@2 f#4@2 f#4@2 f#4 f#4@2 e4@2]/2", C: "~ a3 e4 a3 b3@2 a3@2", D: "b4 b4@2 b4@2 b4@2 b4",
  E: "[g4 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4]/2", F: "[e4 e4@2 e4 d4 d4@2 d4@2 d4@2 d4@2 d4@2 d4]/2",
  G: "c#4@2 ~@3 a3 b3 c#4", H: "b3 a3 ~@2", I: "~@28 a#3@11 ~@9",
})).s("gm_violin").gain(0.15)

// other · viola
const viola = note(`<
  A B C@2 D E F G H I J K L ~@6 M N O P Q R S@2 T U V W X Y Z AA AB AC AD AE@2 AF AG@3 AH@8 ~ AI@4 AJ AK AL AM AN AO AP
  AQ AR AS AT AU@3
>`.pickRestart({
  A: "d3 e3", B: "b3 d3", C: "[c4@3 f#3]/2", D: "b3 c4", E: "d4@4 c4!2 b3 f#3", F: "f#3 ~", G: "e3", H: "f#3",
  I: "e3@4 e3 d3 g3 f#3", J: "e3 ~ g#3@2", K: "f#3 d3", L: "d3 ~@7", M: "f#4@2 g4@3 f#4 g4 a4", N: "d4 c#4@3",
  O: "d4@2 e4@3 d4 e4 f#4", P: "b3 a3 f#3@2", Q: "a3@2 b3@3 a3 b3 c#4", R: "f#3@2 e3@2 ~ d3 e3 f#3",
  S: "[e3@2 f#3@2 g#3@2 f#3@3 e3 f#3 g#3 f3 f#3 f#3@2]/2", T: "g3 b3 g3 b3 g3 b3 g3 b3", U: "f#3 b3 f#3 b3 g3 b3 g3 b3",
  V: "g3 b3 g3 b3 g3 c4 g3 c4", W: "f#3 a3 f#3 a3 f#3 b3 f#3 b3", X: "e3 g3 e3 g3 e3 a3 e3 a3",
  Y: "f#3 b3 f#3 b3 a3 e4 d4 c4", Z: "d4@6 b4@12 a3 b3 c4 e4 f#4 g4", AA: "b4@5 a4 d5 b4", AB: "b4 a4 g4 a4",
  AC: "e4@5 d4 g4 f#4", AD: "b3!2 g#3@2", AE: "[c4 b3@2 ~]/2", AF: "~@19 d4@21 ~ c4@3 g3@4",
  AG: "[c4@3 d3@5 ~@6 a3@5 c4@5 ~ a3@5 f3@5 a3@4 c4@3 f4@4 f4@11 ~@5 a3@5 d4@5 f4@5 ~ f4@16 f4@5 f4@16 e4@5 d#4@5 ~@19]/3",
  AH: "[~@40 d4@5 ~ d4@5 d4@5 g3@5 d4@4 f4@4 a4@3 a#4@11 ~@5 d4@5 f4@5 ~ a4@5 e4@16 e4@5 c4@16 g3@5 ~ f3@5 e3@5 d#3@5 ~ d3@5 g3@11 e3@10 f#3@11 g3@11 ~@21 d4@21 c4@4 g3@3 c4@4 d3@5 ~@5 a3@5 ~ c4@5 a3@5 f3@5 ~ a3@3 c4@4 f4@3 f4@16 a3@5 ~ d4@5 f4@5 f4@16 f4@5 ~ f4@16 e4@5 d#4@3]/8",
  AI: "[~@13 d4@5 d4@5 d4@5 ~ g3@5 d4@4 f4@3 a4@4 a#4@16 d4@5 f4@5 a4@5 ~ e4@16 e4@5 c4@16 g3@5 f3@5 e3@5 ~ d#3@5 d3@5 g3@11 e3@11 ~@30]/4",
  AJ: "~@13 b3@24 e3@11", AK: "~ b3@12 f#3@12 b3@12 g3@11", AL: "~ b3@12 e3@12 g3@12 c3@11",
  AM: "~ c4@12 d3@12 d4@12 b3@11", AN: "~ b3@12 c3@12 c4@12 e3@11", AO: "~ a3@12 b3@24 c4@11",
  AP: "~ b3@6 a3@6 b3@24 ~@11", AQ: "~@13 b3@30 a3@5", AR: "~ d4@6 b3@6 b3@12 a3@12 g3@11",
  AS: "~ a3@12 b3@6 b3@12 b3@12 ~@5", AT: "~ c4@12 e3@12 d4@6 e4@6 g#4@11", AU: "[~ f#4@12 f#4@96 ~@35]/3",
})).s("gm_viola").gain(0.25)

// other · viola · soft notes
const viola_soft = note("<~@12 A@4 B@2 C ~@37 D ~@14>".pickRestart({
  A: "[~@4 b4 b4@2 b4@2 b4@2 b4 g4 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4 e4 e4@2 e4]/4",
  B: "[d4 d4@2 d4!2 d4@2 d4@2 d4@2 d4 g3@4]/2", C: "~ f#3 g3@2 e3@2 f#3@2", D: "~@18 f#3@10 g3@11 ~@9",
})).s("gm_viola").gain(0.15)

// other · cello · "Violoncello"
const cello = note(`<
  A B C D E F G C H I J K L@6 M N O P Q R S T@2 U V W X Y Z AA C AB AC AD AE@2 ~ AF@3 AG@5 AH@3 ~ AI@4 AJ@6 AK AL@3 AM
  AN@3
>`.pickRestart({
  A: "g2 c2", B: "d2 e2", C: "a2", D: "d3 g2", E: "c3 f#2", F: "b2@4 f#2!2 g2 a2", G: "d3 ~", H: "d2 a2",
  I: "e2@4 e2 d2 g2 f#2", J: "e2 ~ b2@2", K: "a2 f#2",
  L: "[f#2 ~@3 a3@2 g3@3 a3 g3 f#3 e3@5 e3 b2 e3 f#3@2 e3@3 f#3 e3 d3 c#3@8 c#3@2 b2@3 c#3 b2 a2 e2@2 a2@2]/6",
  M: "~ d3 a2 d2 a2@2 d3@2", N: "a3@2 g3@3 a3 g3 f#3", O: "e3@5 e3 b2 e3", P: "f#3@2 e3@3 f#3 e3 d3", Q: "c#3@2 d3 c#3",
  R: "c#3@2 b2@3 c#3 b2 a2", S: "g#2@2 g2@2 ~ f#2 g2 g#2", T: "[a2@2 d3@2 e2@2 d2@3 c2 d2 e2 [g2,d3]@2 [d2,a2]@2]/2",
  U: "g2!2 c2!2", V: "d2!2 e2!2", W: "c3!2 a2!2", X: "b2!2 g2!2", Y: "a2!2 f#2!2", Z: "b2@2 b2@2 f#2@2 b2 d3",
  AA: "b2 ~@3", AB: "d2", AC: "e2@5 d2 g2 f#2", AD: "e2 ~ e2@2", AE: "[d2 g2@2 ~]/2",
  AF: "[~@3 d3@32 d3@5 c3@5 ~ b2@11 ~@5 a2@5 d3@5 c3@5 ~ b2@5 g2@11 g3@5 c3@21 ~@24]/3",
  AG: "[~@40 g2@21 g2@4 a#2@4 d3@3 c2@11 ~@5 g2@5 a#2@5 ~ d3@5 c3@5 c2@11 c3@5 a#2@5 ~ a2@5 g#2@5 g2@11 ~@16 d2@21 d2@11 g2@11 ~@29]/5",
  AH: "[~@24 d3@37 c3@5 b2@16 a2@5 ~ d3@5 c3@5 b2@5 ~ g2@10 g2@5 ~ c2@21 ~@3]/3",
  AI: "[~@13 g2@21 g2@4 a#2@3 d3@4 c2@16 g2@5 a#2@5 d3@5 ~ c3@5 c2@11 c3@5 a#2@5 a2@5 ~ g#2@5 g2@11 ~@15 d2@32 g2@11 ~@9]/4",
  AJ: "[~@13 g2@24 c2@24 d2@24 e2@24 c3@24 a2@24 b2@24 g2@24 a2@24 f#2@24 b2@24 f#2@11]/6",
  AK: "~ g2@6 b2@6 b2@24 ~@11", AL: "[~@13 a2@48 d2@48 e2@6 b2@12 b2@12 ~@5]/3", AM: "~ c3@12 b2@12 ~@12 e2@11",
  AN: "[~ d2@12 g2@96 ~@35]/3",
})).s("gm_cello").gain(0.25)

stack(violin, violin_soft, viola, viola_soft, cello)

More by Maurice Ravel