Strudelify

St. Louis Blues

W C Handy

KeyB♭ majorTempo120 bpm
0:00/0:00
// St. Louis Blues — W C Handy
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/8 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5962248; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 73 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 · [...]/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 B C@2 D E F G H I J@2 K L M@2 N O P@2 Q R S T U V W X Y O Z@2 AA AB AC@4 AD@2 AE AF AG@2 AH AI AJ@2 AK AL AM AN
  AO@2 AM AP AQ AR AS AT AK AL AM AN AO@2 AM AP AQ AR AU AV
>`.pickRestart({
  A: "db5 db5@7", B: "bb3", C: "[a4@13 c5!3]/2", D: "c5 c5@7", E: "c4", F: "f4 bb4", G: "a4!2",
  H: "db5 d5 f5@2 d5@2 bb4@10", I: "~ gb4 g4 bb4 db5@3 c5", J: "[bb4@7 ~]/2", K: "~ g4 bb4 c5@5",
  L: "~ g4 bb4 c5 db5@3 c5", M: "[bb4@3 ~]/2", N: "a4 c5 a4 f4@3 ~@2", O: "~@2 db5!2 db5@3 c5", P: "bb4/2", Q: "ab4",
  R: "g4@4 bb4@3 bb4", S: "~ db5 d5 f5@5", T: "bb4@2 f4 f5@5", U: "eb4", V: "eb4@2 eb4@2 bb4@3 bb4", W: "f4",
  X: "bb3@3 ~", Y: "a4 c5 a4 f4@5", Z: "[bb4@5 f4 bb3 ~]/2", AA: "bb3@3 bb4 bb4@2 bb3@2", AB: "gb3@3 e3",
  AC: "f3@3 a3 c4@2 a3@2", AD: "bb3@3 bb3 db4@2 bb3@2", AE: "bb3@3 a3 bb3@3 db4 e4@3 f4 a4@3 bb4", AF: "~ bb4!4 g4@3",
  AG: "[a4@7 ~]/2", AH: "f3@3 a3 f4@2 f3@2", AI: "f4@2 a4!2 a4@2 f4@2", AJ: "[d4@4 bb3@2 c4@4 db4 d4 eb4@2 e4 f4]/2",
  AK: "d4@2 e4 f4 d4@2 e4 f4", AL: "d4@2 e4 f4 d4 e4 f4 d4", AM: "f4@2 g4!2 f4@2 g4!2", AN: "f4@2 g4!2 ab4@2 e4 f4",
  AO: "g4 eb4 g4 eb4", AP: "f4@2 g4!2 f4@2 ~@2", AQ: "d4", AR: "c4 eb4", AS: "bb4 db4 d4 bb4 db4 d4 bb4 db4",
  AT: "d4 bb4 db4 d4 bb4@2 e4 f4", AU: "bb4 db4 d4 bb3 e4 f4 bb4 e5", AV: "bb4@5 ~@3",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note(`<
  ~ A B C D@2 E F G H I J K L M N O I P Q@2 R S T U V W X Y Z AA AB AC AD AE AF@2 AG AH AI@2 AD AE AJ@2 AK AL AM AN AO@2
  AP AQ AR@2 AP AS AT AU AV AW AO@2 AP AQ AR@2 AP AS AT AU AX AY
>`.pickRestart({
  A: "bb3@3 bb3 f4@2 bb3@2", B: "gb3", C: "f3@3 a3 eb4@2 a3@2", D: "f3@3 a3 c4@2 f3@2", E: "a3", F: "db4!2 e4!2",
  G: "f4 c4 f4@2", H: "c4 f4 d4!2", I: "eb4", J: "d4@2 db4 d4 d4@4", K: "ab4@3 ab4", L: "bb3 ~", M: "~@4 bb4@3 bb4",
  N: "d4@3 f3", O: "f3@3 d4", P: "~@2 eb4!2 eb4@3 eb4", Q: "[d4@2 db4 d4 f4@2 db5 d5@7 d4@2]/2", R: "bb3!2 d4!2",
  S: "eb4@4 g4@3 g4", T: "bb3@2 d4 d5@5", U: "bb3@2 d4 d5 ab4@2 ab4@2", V: "g4", W: "eb3 bb3 eb4 g4",
  X: "d4@2 db4 d4 d4@2 db5 d5", Y: "d5@3 d4", Z: "c4 a3 f3 a3", AA: "f3 a3 f3 a3", AB: "bb3 g3 f3 d3",
  AC: "bb4@2 ~@3 f5!3", AD: "f5 f5@7", AE: "~ eb5!2 e5 f5 db5@3", AF: "[c5@13 eb5!3]/2", AG: "eb5 eb5@7",
  AH: "~@2 eb5 e5 f5 c5@3", AI: "[bb4@12 ~@2 f5!2]/2", AJ: "[c5@6 ~ eb5]/2", AK: "eb5 eb5@2 eb5@5",
  AL: "~@2 eb5 e5 f5@2 c5@2", AM: "bb4 c5", AN: "f5@3 ~", AO: "bb3!4", AP: "d4@2 eb4!2 d4@2 eb4!2",
  AQ: "d4@2 eb4!2 f4 ~@3", AR: "eb4 g4 eb4 g4", AS: "d4@2 eb4!2 d4@2 ~@2", AT: "bb3", AU: "f3!2",
  AV: "bb3 db4 d4 bb4 db4 d4 bb4 db4", AW: "d4 bb4 db4 d4 bb4@2 e4 f4", AX: "bb3 e3 f3 bb3 db4 d4 bb3 db4",
  AY: "d4 f4 db5 d5 f5 ~@3",
})).s("gm_clarinet").gain(0.3)

stack(clarinet, clarinet_2)