Strudelify

Se La Face Ay Pale - Guillaume Dufay

Guillaume Dufay

KeyC majorTempo170 bpm
0:00/0:00
// Se La Face Ay Pale - Guillaume Dufay — Guillaume Dufay
// 170 bpm, 3/2, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 4 "Piano" named as a piano, played on piano (its acoustic guitar nylon patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/2954711; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/6)

// 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 · pan flute · "Alto"
const pan_flute = note("<A B C D E F G H I F J K L M N O P Q H R S T U V W X Y Z AA@4>".pickRestart({
  A: "c4@2 c4", B: "b3@2 a3", C: "c4 d4 e4@2 f4@2", D: "e4 d4@2", E: "c4@2 g3 a3@2 b3", F: "c4@2 ~", G: "g4@2 g4",
  H: "c4@2 b3", I: "c4 d4 e4 f4 b3@2", J: "a4@2 a4 a4@2 a4", K: "g4@4 ~ c4", L: "d4 e4 f4@2 d4@2", M: "c4 ~ d4",
  N: "c4@2 g3@2 g4!2", O: "g4!2 c4@2 ~ d4", P: "c4 a#3 a3", Q: "g3 ~@2", R: "c4@2 d4", S: "e4 c4 ~",
  T: "g4!2 e4 f4 g4@2", U: "~@2 c4@2 d4 e4", V: "f4 e4 c4 g3 a3 b3", W: "c4 e4@2 c4 g4 e4", X: "c4 ~ g4 e4 g4 e4",
  Y: "d4@2 c4@2 ~ d4", Z: "c4 a3@2 b3 c4 a3", AA: "[g3@2 c4@4 e4@2 d4@5 c4@29 ~@6]/4",
})).s("gm_pan_flute").gain(0.3)

// other · pan flute · "Tenor"
const pan_flute_2 = note("<A B C D E F G H I J K L@2 M N O P Q R S T U V W X Y Z AA AB@4>".pickRestart({
  A: "c3@2 c3", B: "g3@2 c4", C: "~ g4 d4", D: "g4@2 f#4@3 g4", E: "e4 c4 d4@2 c4@2", F: "c3@2 ~", G: "g3",
  H: "~ g4 e4 c4 ~ g3", I: "a3 b3 c4@2 g3@2", J: "c3 ~@2", K: "d4@2 d4", L: "[e4 g4 d4]/2", M: "d#4 c4 b3",
  N: "e4 d4 ~", O: "c4@2 g4 g4@2 f4", P: "e4 d4 c#4", Q: "d4@2 g4", R: "e4 c4 g3", S: "~ g4@2 e4 f4 e4",
  T: "c4@2 g4 e4 c4@2", U: "g3 ~ g3", V: "c4@2 ~ c3 f3 e3", W: "d3 c3 f3", X: "c3@4 ~ g4", Y: "e4 c4 ~ g4 e4@2",
  Z: "f#4@2 ~ g4@2 f4", AA: "e4@2 c4 f4 e4 c4", AB: "[d4@2 e4@2 c4@4 g3@5 c3@29 ~@6]/4",
})).s("gm_pan_flute").gain(0.3)

// chords · piano
const piano = note("<A B C D E F G H I J K L@2 M N O P Q R S T U V W X Y Z AA AB@4>".pickRestart({
  A: "c3@15 ~ c3@8", B: "g3@15 ~ c4@8", C: "~ g4 d4", D: "g4@8 f#4@11 ~ g4@4", E: "e4 c4 d4@2 c4@2",
  F: "~@5 e4@18 ~, c3@2 ~, ~@3 c4@13 ~@8", G: "g3@23 ~", H: "~ g4 e4 c4 ~ g3", I: "a3 b3 c4@2 g3@2", J: "c3 ~@2",
  K: "d4@15 ~ d4@8", L: "[e4@15 ~ g4@15 ~ d4@15 ~]/2", M: "d#4 c4 b3", N: "e4 d4 ~", O: "c4@2 g4 g4@2 f4",
  P: "e4 d4 c#4", Q: "d4@15 ~ g4@8", R: "e4 c4 g3", S: "~ g4@2 e4 f4 e4", T: "c4@2 g4 e4 c4@2", U: "g3 ~ g3",
  V: "c4@2 ~ c3 f3 e3", W: "d3 c3 f3", X: "~ e4@2 [c4,g4] [e4,g4] [c4,e4,g4], c3@5 ~@3, c4 ~@2",
  Y: "[c4,e4] [c4,g4] [e4,g4]!3 [e4,c5]", Z: "b4@4 a4@4 c4@4 ~ c4@3 e4@4 [d4,f4]@4, [d4,f#4]@8 c5@3 ~ g4@8 ~@4",
  AA: "[c4,g4] a4 [c4,e4] [b3,d4,f4] [c4,e4] [a3,c4,f4], e4 ~@2, ~ a3@2 ~@3", // C5 C Bdim C F
  AB: "[[g3,d4,g4]@4 [c4,e4]@4 c5@4 [e4,g4]@4 a4@5 b4@5 [c3,c4,c5]@55 ~@15, ~@8 c4@8 [g3,d4]@9 ~@71]/4", // G5 C Em C G5
})).s("gm_piano").gain(0.3)

stack(pan_flute, pan_flute_2, piano)