Strudelify

Milowda

Clinton Shorter

KeyD♭ majorTempo35 bpm
0:00/0:00
// Milowda — Clinton Shorter
// 35 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/2 at bar 1, 4/4 at bar 2, 6/8 at bar 38, 4/4 at bar 45) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/6163306; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(35/4)

// 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 · violin · "Violin I"
const violin = note("<A@7 B@2 ~@2 C D E D ~@6 F G H ~@2 I J K L K M N O P Q R S T U@6 V@2 W@2 ~@3>".pickRestart({
  A: "[~@2 db4@4 c4@4 db4@4 db4@4 eb4 db4@2 eb4 bb3@4 eb4@2]/7", B: "[db4@3 eb4 ab3@8 c4@4]/2", C: "~ eb4", D: "f4",
  E: "gb4@3 ab4", F: "c5", G: "db5", H: "d5", I: "~@4 eb5@3 ab5", J: "bb5 c6 db6 eb6", K: "f6@7 gb6",
  L: "f6@14 db6 eb6", M: "f6", N: "gb6@7 ab6", O: "bb5", P: "gb5@4 gb5@3 ab5", Q: "f5", R: "eb5@7 c5",
  S: "db5@8 eb5@4 f5 ab5 ~ c6", T: "db6 eb6", U: "[f6@12 db6@8 eb6@8 f6@12 gb6@12 ab6@4 bb6@10 eb6 f6 gb6@20 db4@8]/6",
  V: "[eb4 f4@2 db5]/2", W: "[eb5 f5@2 ~]/2",
})).s("gm_violin").gain(0.3)

// other · violin · "Violin I" · soft notes
const violin_soft = note("<~@9 A B C ~@3 D E F G H I ~@3 J K L ~@21 M N@3>".pickRestart({
  A: "db4 eb4", B: "f4", C: "db4 ~", D: "eb4@4 f4 db4 eb4 ab3", E: "ab3", F: "c4", G: "bb4!2", H: "c5", I: "bb4",
  J: "eb5", K: "f5", L: "eb5 ~", M: "~ db5", N: "[eb5 bb5@4 ~]/3",
})).s("gm_violin").gain(0.2)

// other · cello · "Violoncello"
const cello = note("<~@12 A B C ~@5 D E F G ~@2 H I J K J L M N O P Q R S@4 T U@4 V ~@4>".pickRestart({
  A: "db2", B: "gb2 eb2", C: "d2 bb2", D: "~ f2 db3 f2 bb2 f2 bb2 f2", E: "db2 ab2 db3 ab2 db2 ab2 db3 ab2",
  F: "gb2 db3 gb3 db3 eb2 bb2 eb3 bb2", G: "d2 bb2 f3 bb2!2 f2 bb2 f2", H: "~@2 eb3@2 c3 ab2 eb3@2",
  I: "bb2 gb2 db3 gb2 bb2 gb2 db3 gb2", J: "bb2 f2!2 db3!2 f2!2 bb2!2 f2!2 db3!2 f2!2 bb2",
  K: "a2 f2!2 c3!2 f2!2 a2!2 f2!2 c3!2 f2!2 a2", L: "db2 ab2!2 f3!2 ab2!2 db2!2 ab2!2 f3!2 ab2!2 db2",
  M: "gb2 db3!2 gb3!2 db3!2 gb2 eb2 bb2!2 gb3!2 bb2!2 eb2", N: "d2 bb2!2 f3!2 bb2!2 d2!2 bb2!2 d3!2 bb2!2 d2",
  O: "eb2 bb2!2 eb3!2 bb2!2 eb2 gb2 db3!2 gb3!2 db3!2 gb2", P: "db2 ab2!2 db3!2 ab2!2 db2!2 ab2!2 db3!2 ab2!2 db2",
  Q: "eb2 ab2!2 c3!2 ab2!2 eb2!2 ab2!2 c3!2 ab2!2 eb2", R: "db2 bb2!2 db3!2 bb2!2 db2 db2@4 f2@4",
  S: "[gb2@6 eb2 gb2@2 eb2@2 db2@3 bb2 c3]/4", T: "db3!2 d3 bb2",
  U: "[d3@2 eb3@4 gb3@4 f3@2 bb2@8 f2@8 bb2 f2 bb2 f2]/4", V: "bb2 f2 bb2 f2 a2 f2 a2 f2",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello" · soft notes
const cello_soft = note("<A@2 B@6 C D E D ~@3 F G H I J K ~@3 L M N ~@21 O P Q@2>".pickRestart({
  A: "[~ bb2@3]/2", B: "[f2 bb2@2 ab2@2 gb2@2 d2@2 eb2@2 ab2]/6", C: "eb3 db3 ab2@2", D: "bb2", E: "a2",
  F: "bb3 gb3 bb3 gb3 db4 bb3 c4 ab3", G: "ab3 f3 ab3 f3 eb4 ab3 db4 c4", H: "ab3 eb3 ab3 eb3 ab3 f3 ab3 f3",
  I: "bb2 f2 db3 f2 bb2 f2 bb2 f2", J: "a2 f2 c3 f2 bb2 f2 c3 f2", K: "bb2 ~@7", L: "eb2 bb2 eb3 bb2 gb2 db3 gb3 db3",
  M: "db2 ab2 db3 ab2 db2 ab2 db3 ab2", N: "c3 ab2 ~@6", O: "a2 f2 a2@2 bb2@4", P: "c3@4 db3@3 c3",
  Q: "[bb2 ab2@2 bb2@3 ~@2]/2",
})).s("gm_cello").gain(0.2)

stack(violin, violin_soft, cello, cello_soft)