Strudelify

6 Duos Op.50

Fredrick Belcke

KeyB♭ majorTempo120 bpm
0:00/0:00
// 6 Duos Op.50 — Fredrick Belcke
// 120 bpm, 4/4, key Bb 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/5933323; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 141 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · trombone
const trombone = note(`<
  ~ A B@3 C@2 D E F@3 G@4 H I@3 J ~@2 K L@2 M N@2 O P@2 Q ~ R S@2 T ~@2 U@2 V@8 ~ W X Y W Z AA AB ~ W X Y W Z AA AB ~@6
  AC AD ~ W X Y W Z AA AB ~ W X Y W Z AA AB ~@6 AC AD ~ W X Y W Z AA AB AE AF@2 AG@2 AH AI ~ AJ AK@2 AL AM AN@2 ~@5 AO
  AP ~ AQ AR AS@2 AT AU AV AW AX@2 AY AZ
>`.pickRestart({
  A: "~@9 bb2@12 ~ d3@2", B: "[~@4 f3@3 ~@3 a3@25 bb3@6 f3@6 d3@3 ~@3 d3@3 ~@4 bb2@12]/3",
  C: "[d3@3 ~@3 f3@3 ~@3 bb3@25 c4@6 a3@5]/2", D: "~@2 f3@3 ~@3 f3@3 ~@3 d3@3 ~@3 bb3@3 ~", E: "~@2 d3@3 ~@19",
  F: "[~@16 bb2@12 d3@3 ~@3 f3@3 ~@4 a3@24 bb3@6 ~]/3",
  G: "[f3@6 d3@3 ~@3 d3@3 ~@3 bb2@12 ~ d3@3 ~@3 f3@3 ~@3 bb3@25 c4@6 a3@6 f3@3 ~@3 f3@3 ~@4 d3@3]/4",
  H: "~ bb3 ~ d3 ~@4", I: "[~@22 eb4@12 ~ c4@3 ~@3 a3@3 ~@3 f3@25]/3", J: "f4@12 d4@3 ~@4 bb3@3 ~@2",
  K: "~@18 f3@2 ~ a3@2 ~", L: "[g3@2 ~ gb3@12 ~ d3@12 ~@20]/2", M: "~@5 bb2@12 d3@3 ~@4",
  N: "[f3@3 ~@3 a3@25 bb3@6 f3@6 d3@3 ~@2]/2", O: "~ d3@3 ~@3 bb2@12 ~ d3@3 ~",
  P: "[~@2 f3@3 ~@3 bb3@25 c4@6 a3@6 ~ f3@2]/2", Q: "~@4 f3@3 ~@3 d3@3 ~@3 bb3@3 ~@3 d3@2", R: "~ eb4",
  S: "[c4@3 ~@3 a3@3 ~@3 f3@25 f4@11]/2", T: "~@2 d4@3 ~@3 bb3@3 ~@13",
  U: "[~@7 f3@2 ~ a3@2 ~ g3@2 ~@2 gb3@12 d3@12 ~@7]/2",
  V: "[~@18 bb2@12 ~ d3@3 ~@3 f3@3 ~@3 a3@25 bb3@6 f3@6 d3@3 ~@3 d3@3 ~@4 bb2@12 d3@3 ~@3 f3@3 ~@4 bb3@24 c4@6 ~ a3@6 f3@3 ~@3 f3@3 ~@3 d3@3 ~@3 bb3@3 ~@4 d3@3 ~@9]/8",
  W: "bb2 ~ d3 ~ f3 ~ bb3 ~", X: "c4", Y: "d4 ~ bb3 ~ f3 ~ d3 ~", Z: "d4", AA: "f4@2 eb4@2 c4 ~ a3 ~", AB: "bb3",
  AC: "~@6 bb3 ~", AD: "a3 ~ c4 ~ bb3@2 f3@2", AE: "~@22 bb3 ~",
  AF: "[~ c4 ~@2 d4 ~ eb4 ~@2 f4@3 ~@3 f4@3 ~@2 f4@11 c4@11 a3 ~@2 bb3 ~@2]/2",
  AG: "[c4 ~@2 d4 ~@2 eb4@3 ~@2 eb4@3 ~@3 d4@11 bb3@5 b3@4 ~@2 c4@5 a3@4]/2",
  AH: "~@2 bb3@5 eb3@4 ~@2 f3 ~@2 bb3 ~ d4 ~@2 f4 ~@2", AI: "f3 ~@2 a3 ~@2 c4 ~ f4 ~@2 d4@6 f3@3 ~@2 d3@2",
  AJ: "~@7 bb3 ~@2 c4 ~@2 d4 ~@2 eb4 ~ f4@3 ~@3",
  AK: "[f4@3 ~@3 f4@11 c4@11 a3 ~ bb3 ~@2 c4 ~@2 d4 ~@2 eb4@3 ~@2 eb4@3 ~]/2", AL: "~@2 d4@11 bb3@5 b3@4 ~@2",
  AM: "c4@6 a3@4 ~ bb3@6 eb3@4 ~ f3 ~",
  AN: "[~ bb3 ~@2 d4 ~ f4 ~@2 f3 ~@2 a3 ~@2 c4 ~@2 f4 ~ d4@6 f3@3 ~@2 d3@3 ~@14]/2", AO: "~@21 bb3 ~@2",
  AP: "a3 ~@2 g3 ~@2 f3@6 ~@12", AQ: "~@2 bb3 ~@2 c4 ~ d4 ~@2 eb4 ~@2 f4@3 ~@2 f4@3 ~@3", AR: "f4@11 c4@11 a3 ~",
  AS: "[~ bb3 ~@2 c4 ~ d4 ~@2 eb4@3 ~@3 eb4@3 ~@2 d4@11 bb3@6 b3@4 ~ c4@6]/2",
  AT: "a3@4 ~@2 bb3@5 eb3@4 ~@2 f3 ~ bb3 ~@2 d4 ~", AU: "~ f4 ~@2 f3 ~ a3 ~@2 c4 ~@2 f4 ~@2 d4 ~@2 bb3 ~ f3 ~@2 d3",
  AV: "~@2 bb2@6 ~@5 f3 ~@2 g3 ~ a3 ~@2 bb3 ~@2", AW: "c4 ~@2 f3 ~@2 g3 ~ a3 ~@2 c4@13",
  AX: "[~ d4 ~@2 c4 ~ bb3 ~@2 a3 ~@2 bb3 ~@2 c4 ~@2 d4 ~ eb4@6 c4@5 d4@6 ~@3 bb3 ~ f3@3 ~@3]/2",
  AY: "d3@3 ~@3 bb2@6 ~@2 d3 ~@2 f3@3 ~@2 d3@2", AZ: "~@4 bb2@11 ~@9",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft = note(`<
  ~@21 A B C ~@13 D E@3 ~@25 F G H I J K L ~@17 F G H I J K L ~@23 M N@2 O P Q R ~@14
>`.pickRestart({
  A: "~ f3@3 ~@3 d3@3 ~@3 bb3@3 ~@3 d4@3 ~@2", B: "~ d4@3 c4@3 bb3@3 ~@2", C: "~@2 f3@6 ~ eb3@6 d3@2 ~@7",
  D: "~@14 f3@3 ~@3 d3@3 ~", E: "[~@2 bb3@3 ~@4 d4@3 ~@3 d4@6 c4@6 bb3@6 ~@7 f3@6 eb3@6 d3@2 ~@18]/3",
  F: "a3@2 f3@2 g3 ~ bb3 ~", G: "a3 f3", H: "c3 ~ e3 ~ g3 ~ c4 ~", I: "e4@2 c4 ~", J: "c4@2 f4@2 e4 ~ d4 ~", K: "c4 a3",
  L: "c3 ~ e3 ~ g3 ~@3", M: "~@18 f3 ~@2 g3 ~@2",
  N: "[a3 ~@2 bb3 ~@2 c4@3 ~@2 c4@3 ~@3 a3@11 f3@11 e3 ~@2 f3 ~ g3 ~@2 a3]/2", O: "~@2 bb3@3 ~@2 bb3@3 ~@3 bb3@11",
  P: "g3@11 f3@6 ~@7", Q: "~ a3 ~@2 g3 ~ f3 ~@2 bb2@6 ~@8 d4", R: "~@2 c4 ~@2 bb3 ~ a3 ~@2 c4 ~@2 bb3 ~@2 a3 ~ g3 ~@5",
})).s("gm_trombone").gain(0.2)

stack(trombone, trombone_soft)