Strudelify

Le Festin

Mario Velazquez

KeyE♭ majorTempo130 bpm
0:00/0:00
// Le Festin — Mario Velazquez
// 130 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5848704; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A@5 B@5 C D E D F G H I J K L M N O P Q R S T U ~@2 V D W D X G H I J Y Z AA R AB P Q R S AC AD AE AF AG R AH AI AJ AK
  AL AM K AN AO AP AQ D E D F G H I J K L M N O P Q R S AR AS@3 AT
>`.pickRestart({
  A: "[bb4@20 g4@10 c5@20 eb5@3 d5@3 c5@3 d5@20 ~]/5", B: "[~@9 d5@10 eb5@10 g5@10 c5@40 ~]/5", C: "~@13 d4@3",
  D: "g4@5 f4@5 ~ eb4@5", E: "g4 ~@4 f4@8 eb4@3", F: "bb3@11 ~@2 f4@3", G: "bb4@5 f4@5 ~ eb4@5",
  H: "bb4@3 ~@2 d4@8 d4@3", I: "bb4@3 ~@2 f4@8 d4@3", J: "eb4@11 f4@4 bb4", K: "g4@5 f4@8 eb4@3", L: "g4@5 f4@8 ab4@3",
  M: "bb4@5 g4@5 ~ bb4@5", N: "c5@11 ~@5", O: "ab4@4 g4 f4@3 ~@3 eb4@3 ~@2", P: "bb3@3 ~@2 d4@8 c5@3",
  Q: "d5@5 d5@5 ~ bb4@5", R: "c5@11 ~@2 g4@3", S: "ab4@5 eb4@8 c4@3", T: "d4@11 g4@4 g4", U: "eb4@11 ~@5",
  V: "~@13 bb3@3", W: "g4@3 ~@2 f4@8 eb4@3", X: "bb3", Y: "g4@11 f4@2 eb4@3", Z: "g4@11 ~@2 ab4@3",
  AA: "bb4@5 g4@8 bb4@3", AB: "ab4@3 ~@2 f4@3 ~@3 eb4@3 ~@2", AC: "d4", AD: "f4@11 ~@2 gb4@3", AE: "g4@11 f5@5",
  AF: "eb5@11 bb4@5", AG: "bb4@4 a4 bb4@8 db5@3", AH: "ab4@4 g4 ab4@8 f4@3", AI: "bb4", AJ: "ab4 g4 ab4 c5", AK: "d5",
  AL: "bb4@4 bb4 bb4@5 ~ bb4@4 bb4", AM: "ab4@3 g4@8 ~@2 f4@3", AN: "eb4@11 ~@2 eb4@3", AO: "eb4@5 c4@5 ~ eb4@5",
  AP: "eb4@5 c4@5 ~ db4@5", AQ: "d4@13 c4@3", AR: "d4@11 g4@5", AS: "bb5@4 ab5 g5@5 ~ g5@5", AT: "g5",
})).s("gm_clarinet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@11 A B C D E F G H I F J K L M N O P Q R S T U A V L D E F G H I F J W L M N O P Q X Y@3 Z AA@3 D Y@3 Z Y@2 Z A B C
  D E F G H I F J K L M N O P Q Y@3 T
>`.pickRestart({
  A: "eb3@3 ~@2 eb3@11", B: "c3@3 ~@2 f3@11", C: "f3@3 ~@2 eb3@11", D: "bb2@5 c3@5 ~ d3@5", E: "f3@3 ~@2 c3@11",
  F: "bb2@3 ~@2 d3@11", G: "f3@3 ~@2 d3@11", H: "eb3@11 d3@5", I: "c3@3 ~@2 eb3@11", J: "bb3", K: "ab3@11 ~@5",
  L: "f3@3 ~@2 f3@11", M: "d3@3 ~@2 d3@11", N: "g3@3 ~@2 g3@11", O: "eb3@11 ~@5", P: "f3@3 ~@2 c3@3 ~@3 c3@3 ~@2",
  Q: "bb2@11 ~@5", R: "eb3@5 g3@5 ~ f3@5", S: "g3@13 f3 ~ e3", T: "eb3", U: "g3 ~@4 g3@8 ~@3", V: "c3@3 ~@2 g3@11",
  W: "g3@11 ~@5", X: "d3@5 eb3@5 ~ f3@5", Y: "g3@4 f3 eb3@5 ~ eb3@5", Z: "f3", AA: "eb3@4 d3 c3@5 ~ c3@5",
})).s("gm_trombone").gain(0.25)

stack(clarinet, trombone)