Strudelify

Pavane Op.50

Foure

KeyG minorTempo120 bpm
0:00/0:00
// Pavane Op.50 — Foure
// 120 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Bb Trumpet" named as a brass, played on trumpet (its piano patch is not one); ch 3 "Bb Trumpet" named as a brass, played on trumpet (its piano patch is not one); ch 5 "Bb Trumpet" named as a brass, played on trumpet (its piano patch is not one); ch 7 "Bb Trumpet" named as a brass, played on trumpet (its piano patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/139164; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · trumpet · "Bb Trumpet"
const trumpet = note("<~ A B C D E F G H A B C D I J K L ~ M N ~@6 O P Q R E F G H ~@4 I J K L>".pickRestart({
  A: "g4@7 a4 bb4@7 c5", B: "bb4@2 a4@2 bb4@2 g4@2 a4@7 bb4", C: "a4@2 g4@2 a4@2 f4@2 g4@7 gb4", D: "d4",
  E: "d5@7 eb5 f5@7 g5", F: "f5@2 eb5@2 f5@2 d5@2 eb5@7 f5", G: "eb5 d5 eb5 c5 d5@3 db5", H: "d5@3 ~",
  I: "bb4@7 c5 d5@7 eb5", J: "d5@2 c5@2 d5@2 bb4@2 c5@7 d5", K: "bb4 a4 bb4 g4 g4@2 gb4@2", L: "g4@3 ~", M: "~ db5",
  N: "d5@3 ~@5", O: "~ g5", P: "c5 f5", Q: "bb4 eb5", R: "gb4",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note("<~@5 A@2 B C ~@4 D@3 E F G H ~@2 I J K L M N O P Q R S T M N O P U V W X>".pickRestart({
  A: "[~ bb4@2 ab4]/2", B: "ab4 g4", C: "gb4@3 ~", D: "[~@2 f5@3 eb5@2 d5@2 db5 c5@2]/3", E: "bb4@3 ~",
  F: "d4@4 d4@3 e4 gb4@4 e4 gb4 ~ g4", G: "a4 g4 bb4 a4 gb4@3 e4", H: "d4 ~@3", I: "d4@4 db4 d4 ~ e4 f4@6 e4@2",
  J: "a4@12 g4 a4 ~ g4", K: "[gb4,g4]!16", L: "gb4", M: "g4@7 a4 bb4@7 c5", N: "bb4@2 a4@2 bb4@2 g4@2 a4@7 bb4",
  O: "a4@2 g4@2 a4@2 f4@2 g4@7 gb4", P: "d4", Q: "bb4@7 c5 d5@7 eb5", R: "d5@2 c5@2 d5@2 bb4@2 c5@7 d5",
  S: "c5 bb4 c5 ab4 bb4@2 a4@2", T: "a4@3 ~", U: "g4@7 ab4 bb4@7 c5", V: "bb4@2 ab4@2 bb4@2 g4@2 ab4@7 bb4",
  W: "g4 gb4 g4 bb4 bb4@2 a4@2", X: "g4@3 ~",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_3 = note("<~@5 A B C D ~@4 E F G H ~@2 I J K L M@2 ~ N O P Q R S T U N O P V A B W X>".pickRestart({
  A: "bb4@7 c5 d5@7 eb5", B: "d5@2 c5@2 d5@2 bb4@2 c5@7 d5", C: "c5 bb4 c5 ab4 bb4@2 a4@2", D: "a4@3 ~",
  E: "g4@7 ab4 bb4@7 c5", F: "bb4 ab4 bb4 g4 ab4@3 bb4", G: "g4 gb4 g4 bb3 bb3@2 a3@2", H: "g3@3 ~",
  I: "d4@7 e4 f4@4 e4 f4 ~ g4", J: "a4 g4 bb4 a4 f4@3 e4", K: "d4@4 db4 d4 ~ e4 f4@6 e4@2", L: "d4 ~ bb4@2",
  M: "[c5@5 ~@3]/2", N: "g4@7 a4 bb4@7 c5", O: "bb4@2 a4@2 bb4@2 g4@2 a4@7 bb4", P: "a4@2 g4@2 a4@2 f4@2 g4@7 gb4",
  Q: "d4", R: "d4@7 eb4 f4@7 g4", S: "f4@2 eb4@2 f4@2 d4@2 eb4@7 f4", T: "eb4 d4 eb4 c4 d4@3 db4", U: "d4@3 ~",
  V: "d4 ~", W: "bb4 a4 bb4 g4 g4@2 gb4@2", X: "g4@3 ~",
})).s("gm_trumpet").gain(0.3)

// other · piano
const piano = note(`<
  A B C D E F G H I J C D K L M N O P Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM
>`.pickRestart({
  A: "~ bb3 d4 bb3 ~ bb3 d4 bb3, g3 ~ g3 ~", B: "~ bb3 d4 bb3 ~ d4 g4 d4, g3 ~ eb3 ~",
  C: "~ c4 f4 c4 ~ c4 f4 c4, f3 ~ d3 ~", D: "~ bb3 eb4 bb3 ~ bb3 eb4 bb3, eb3 ~ c3 ~",
  E: "~ a3 gb4 a3 ~ a3 gb4 a3, d3 ~ c3 ~", F: "~ g4 d4 g4 ~ d4 bb3 d4, bb2 ~ g2 ~",
  G: "~ g4 bb3 g4 ~ c4 ab3 c4, c3 ~ f2 ~", H: "~ f4 ab3 f4 ~ eb4 a3 eb4, bb2 ~ eb3 ~", I: "[d3,gb4,a4,d5]",
  J: "~ bb3 d4 bb3 ~ bb3 d4 bb3, g3 ~ eb3 ~", K: "~ a3 d4 a3 ~ a3 d4 a3, d3 ~ c3 ~",
  L: "~ d4 bb3 d4 ~ f4 bb3 f4, d3 ~ bb2 ~", M: "~ f4 bb3 eb4 ~ eb4 ab3 d4, bb2 ~ a2 ~",
  N: "~ d4 g4 db4 ~ c4 d4 c4, d3 ~ c3 ~", O: "[g2,g3]@3 ~", P: "~ gb3 a3 gb3 ~ a3 d4 a3, d3 ~ c3 ~",
  Q: "~ d4 g3 d4 ~ db4 g3 db4, bb2 ~ a2 ~", R: "d3 ~ a2 ~", S: "bb2 ~ c3 ~", T: "a2 ~ c3 ~", U: "f2 ~ eb2 ~",
  V: "d2 a3", W: "c4 ~", X: "g2 [bb2,bb3] [d3,d4] [bb2,bb3] eb2 [d3,d4] [g3,g4] [d3,d4]",
  Y: "f2 [c3,c4] [f3,f4] [c3,c4] d2 [c3,c4] [f3,f4] [c3,c4]", // C F C F C
  Z: "eb2 [bb2,bb3] [eb3,eb4] [bb2,bb3] c2 [bb2,bb3] [eb3,eb4] [bb2,bb3]", // Bb Eb Bb Eb Bb
  AA: "d2 [a2,a3] [gb3,gb4] [a2,a3] c2 [a2,a3] [gb3,gb4] [a2,a3]", // A Gb A Gb A
  AB: "bb2 [g3,g4] [d3,d4] [g3,g4] g2 [d3,d4] [bb2,bb3] [d3,d4]", // G D G D Bb D
  AC: "c3 [g3,g4] [bb2,bb3] [g3,g4] f2 [c3,c4] [ab2,ab3] [c3,c4]", // G Bb G C Ab C
  AD: "bb2 [f3,f4] [ab2,ab3] [f3,f4] eb2 [g3,g4] [a2,a3] [g3,g4]", AE: "[d3,a4]", AF: "[g3,g4] [eb3,eb4]",
  AG: "[f3,f4] [d3,d4]", AH: "[eb3,eb4] [c3,c4]", AI: "[d3,d4]", AJ: "[g2,g3] [bb2,bb3]", AK: "[bb2,bb3] [ab2,ab3]",
  AL: "[g2,g3]@2 [c3,c4] [gb3,gb4]", AM: "[g3,bb3,d4,g4]",
})).s("gm_piano").gain(0.3)

stack(trumpet, trumpet_2, trumpet_3, piano)