Strudelify
KeyC minorTempo160 bpm
0:00/0:00
// Carol of The Bells — PapaJohnGustav Modified by Henderson Gentillon
// 160 bpm, 3/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5345920; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 181 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~ A B C D E F G H B@2 C D I J K L M N O P Q R S T M N O U Q R S V W@16 X Y Z AA AB AC AD AE AF AG AF AG W@3 AH AI AJ
  AK AL AM AK AN AK AO AP AQ AR AS P Q R S T AQ AR AS U Q R S V W@4 ~@2 AT AU W@4 ~@2 AT AV W@4 AB AC AD AE AW AX ~@2 AW
  AX AY AZ BA BB BC AQ BD BE BF BG BH BI BJ BK BL BM BF BG BH BI BJ BK BL BM BF BG BH BI BJ BK BL BM BF BG BH BI BJ BK
  BL BM BN@2 A B C D E F BO H B@2 C BP BQ BR BS@4
>`.pickRestart({
  A: "~@5 eb5@3 d5@3 c5@2 d5@3", B: "eb5@3 ~@2 eb5@3 d5@3 c5@2 d5@3", C: "eb5@3 ~@2 c5@3 d5@3 eb5@3 ~@2",
  D: "bb4@5 ab4@3 g4@3 f4@2 g4@3", E: "ab4@3 ~@2 c5@3 ~@3 ab4@3 ~@2", F: "c5@3 ~@2 ab4@3 ~@3 bb4@2 ab4@3",
  G: "g4@3 ~@2 g4@3 ~@3 f5@2 eb5@3", H: "d5@5 eb5@5 ~ f5@5", I: "ab4@3 ~@2 c5@3 ~@3 ab4@2 g4@3",
  J: "f4@3 ~@8 g4@2 ab4@3", K: "g4@11 f4@2 eb4@3", L: "d4@5 eb4@5 ~ f4@5", M: "g3", N: "eb4@5 d4@8 c4@3", O: "bb3",
  P: "g4@5 f4@5 ~ eb4@5", Q: "c4@11 f4@2 g4@3", R: "ab4@11 f4@2 g4@3", S: "ab4@5 g4@5 ~ f4@5", T: "eb4@5 d4@5 ~ b3@5",
  U: "g4@5 f4@3 g4@3 f4@2 eb4@3", V: "eb5@5 d5@5 ~ b4@5", W: "eb5@5 d5@3 eb5@3 c5@5", X: "c4", Y: "eb4@5 f4@5 ~ g4@5",
  Z: "f4", AA: "g4@3 f4@2 eb4@5 ~ d4@5", AB: "c5@5 c5@3 c5@3 bb4@2 ab4@3", AC: "g4@5 g4@3 g4@3 f4@2 eb4@3",
  AD: "f4@5 f4@3 f4@3 g4@2 f4@3", AE: "eb4@5 c4@3 c4@3 c4@5", AF: "g4@3 a4@2 b4@3 c5@3 d5@2 eb5@3",
  AG: "f5@3 g5@2 f5@5 ~ eb5@5", AH: "eb4@5 d4@3 eb4@3 c4@5", AI: "g4!2", AJ: "g4 ~", AK: "g4 eb4", AL: "f4 bb3",
  AM: "bb3 f4", AN: "ab4!2", AO: "d5 b4", AP: "c5", AQ: "g4", AR: "eb5@5 d5@8 c5@3", AS: "bb4", AT: "f4@5 eb4@5 ~ d4@5",
  AU: "eb4@5 f4@11", AV: "c4@5 d4@5 ~ bb4@5", AW: "g3@3 a3@2 b3@3 c4@3 d4@2 eb4@3", AX: "f4@3 g4@2 f4@5 ~ eb4@5",
  AY: "d5 eb5", AZ: "f5 d5", BA: "eb5", BB: "c5 bb4", BC: "ab4", BD: "c5!2", BE: "c5 ~",
  BF: "g4@3 f4@2 eb4@3 d4@3 c4@5", BG: "ab4@3 g4@2 f4@3 eb4@3 f4@5", BH: "d4@3 bb3@2 bb4@3 ab4@3 g4@2 f4@3",
  BI: "g4@3 bb3@2 g4@3 ab4@3 g4@5", BJ: "eb4@3 d4@2 c4@3 d4@3 eb4@5", BK: "f4@3 g4@2 f4@3 eb4@3 f4@5",
  BL: "d4@3 c4@2 b3@3 c4@3 d4@2 f4@3", BM: "e4@3 f4@2 e4@3 d4@3 e4@5", BN: "[eb4@21 ~@11]/2",
  BO: "g4@3 ~@2 g4@3 ~@3 f4@2 eb4@3", BP: "c5@8 d5@3 eb5@2 f5@3", BQ: "g5@8 f5@3 eb5@5", BR: "d5@5 c5@5 ~ d5@5",
  BS: "[eb5 e5@63]/4",
})).s("gm_alto_sax").gain(0.4)

stack(alto_sax)