Strudelify

le festin

Camille

KeyB majorTempo110 bpm
0:00/0:00
// le festin — Camille
// 110 bpm, 3/4, key B 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/5962455; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 57 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · alto sax · "Alto"
const alto_sax = note("<A@3 B@3 C@3 D E@2 F G H I J K E L M N H O P Q R S T ~@23 U V W T X>".pickRestart({
  A: "[~@3 a4@16 f#4@8 b4@15 d5@3 c#5@3]/3", B: "[b4@2 c#5@23 ~ c#5@7 d5@8 f#5@7]/3", C: "[~ b4@23 ~ a4@23]/3",
  D: "~@11 a3@5", E: "f#4@5 e4@8 d4@3", F: "f#4@5 e4@5 ~ d4@5", G: "a3", H: "a4@5 e4@8 d4@3", I: "a4@3 ~@2 c#4@11",
  J: "a4@5 e4@8 c#4@3", K: "d4@11 e4@2 a4@3", L: "f#4@5 e4@8 f#4@3", M: "a4@5 f#4@5 ~ a4@5", N: "a4@11 b4@5",
  O: "a3@3 ~@2 c#4@5 ~@2 b4@2 c5@2, ~@11 a4@2 ~@3", P: "c#5@11 a4@5", Q: "b4@11 f#4@5", R: "g4@5 d4@8 b3@3",
  S: "c#4@11 f#4@4 f#4", T: "d4", U: "a#4@5 a4@5 ~ g4@5", V: "f#4", W: "f#4@11 f#4@5", X: "d5",
})).s("gm_alto_sax").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax_2 = note(`<
  ~@10 A@2 B@4 C D E F G H B@2 C H I B F J K@2 L M N O P Q K R S T N U V T W X Y Z S T AA Y AB AC@2
>`.pickRestart({
  A: "[~@5 d4@16 f#4@11]/2", B: "~@5 e4@11", C: "f#3@5 a3@5 ~ c#4@5", D: "b3", E: "~@5 d4@11", F: "~@5 f#4@11",
  G: "f#3@5 a3@5 ~ c4@5", H: "d#4", I: "~@5 g4@11", J: "~@11 a3@5", K: "f#4@5 e4@8 d4@3", L: "f#4@5 e4@5 ~ d4@5",
  M: "a3", N: "a4@5 e4@8 d4@3", O: "a4@3 ~@2 c#4@11", P: "a4@5 e4@8 c#4@3", Q: "d4@11 e4@2 a4@3", R: "f#4@5 e4@8 f#4@3",
  S: "a4@5 f#4@5 ~ a4@5", T: "b4", U: "a3@5 c#4@8 b4@3", V: "c#5@11 a4@5", W: "g4@5 d4@8 b3@3", X: "c#4@11 f#4@5",
  Y: "d4", Z: "~@13 f#4@3", AA: "g3", AB: "c#4", AC: "d3/2",
})).s("gm_alto_sax").gain(0.3)

// other · baritone sax · "Bari"
const baritone_sax = note(`<
  ~@10 A B C D E F G H I J K L E F G M N D A O P Q R S R T U V P W X Y R Z U Y AA J AB Z AC M I N J AD A
>`.pickRestart({
  A: "d2", B: "b2@5 b2@11", C: "e2", D: "a2", E: "e2@5 b2@5 ~ c3@5", F: "c#3@3 ~@2 c#3@11", G: "c#3@11 a2@5",
  H: "b2@11 a2@5", I: "d3", J: "c#3", K: "c3", L: "b2@5 a3@3 b3@3 d#4@5", M: "b2", N: "g2", O: "a2@5 b2@5 ~ c#3@5",
  P: "d3@5 f#3@5 ~ f#3@5", Q: "b2@5 f#3@5 ~ f#3@5", R: "e3@5 g3@5 ~ g3@5", S: "a2@5 g3@5 ~ g3@5",
  T: "a2@3 ~@2 g3@5 ~ g3@5", U: "f#3@5 a3@5 ~ a3@5", V: "d3@5 a3@3 b3@3 c#4@2 d4@3", W: "c#3@5 f#3@5 ~ f#3@5",
  X: "c3@5 f#3@5 ~ f#3@5", Y: "b2@3 d#3@2 f#3@11", Z: "a2@5 a3@5 ~ a3@5", AA: "d3@5 g3@5 ~ g3@5",
  AB: "d3@5 a3@5 ~ a3@5", AC: "c3@5 f#3@5 ~ a3@5", AD: "a2@5 d3@5 ~ a2@5",
})).s("gm_baritone_sax").gain(0.3)

stack(alto_sax, alto_sax_2, baritone_sax)