Strudelify
KeyB♭ majorTempo80 bpm
0:00/0:00
// Journey (Low Brass Sextet) — Skye Lewin Michael Salvatori and Kronos String Quartet
// 80 bpm, 3/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: duplicate parts dropped: ch 6 "Tuba" tuba (copy of ch 5 "Bass Trombone" trombone)
// note: Transcription provider: pdmx. https://musescore.com/score/5769262; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 68 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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("<~@20 A B C D A E F D G H I J K L M N G H I J K L M N K L O@2 P@8 Q@4 R@5 S@3>".pickRestart({
  A: "~ d4 f4@4", B: "~ c4 g4@4", C: "~ bb3 f4@4", D: "eb4 c4 d4@4", E: "~ c4 g4@2 f4 g4", F: "~ bb3 f4@2 g4 f4",
  G: "~ d3 f3@2 g3 bb3", H: "d4@2 c4", I: "bb3@5 a3", J: "g3@5 ~", K: "~ d4 eb4@2 d4 c4", L: "~ d4 f4 d4 c4 bb3",
  M: "~ bb3 g4@2 f4 d4", N: "c4 bb3 d4@4", O: "[~ c4 d4@10]/2",
  P: "[~@2 c4 bb3 a3 bb3@4 ~ d4 f4@4 ~ c4 g4@4 ~ bb3 f4@4 eb4 c4 d4@4 ~ d4 f4@4 ~ c4 g4@4 ~ bb3 f4]/8",
  Q: "[~ g4 f4 eb4 c4 d4@2 c4 bb3 ~ d4 f4@2 g3 bb3 d4@2 c4@2 bb3@2 f4@2 d4]/4",
  R: "[~@4 a3@8 g3@24 [g3,g4]@29 g3@38 ~@17]/5", S: "[~@5 d4@64 ~@3]/3",
})).s("gm_trombone").gain(0.3)

// other · trombone
const trombone_2 = note(`<
  ~@16 A B C D E F G H E F G I E J G K L M N O E J G K L M N O L P Q@2 R@8 S@5 T@4 U@3
>`.pickRestart({
  A: "~ d3 f3@4", B: "~ c3 g3@4", C: "~ bb2 f3@4", D: "eb4 c4 d4@4", E: "~ f3 g3@4", F: "~ g3 bb3@4", G: "~ g3 a3@4",
  H: "eb4 c4 a3@4", I: "f3 g3@2", J: "~ g3 a3@3 g3", K: "f3 bb3 f3 g3 f3 g3", L: "~ f3 g3@2 f3 d3",
  M: "~ a3 c4 g3 eb3 d3", N: "~ g3 a3@2 bb3 a3", O: "f3 a3@2", P: "~ d3 g3 f3 eb3 d3", Q: "[~ g3@5]/2",
  R: "[~@2 d3!3 d3@4 ~ f3 g3@4 ~@2 bb3@4 ~ g3 a3@4 g3 f3 g3@4 ~ f3 g3@4 ~ g3 bb3@4 ~ g3 a3]/8",
  S: "[~ bb3 a3 f3@2 d3@2 c3 bb2 ~ f3 g3@4 ~ g3 a3@4 ~ f3 a3@4 g3 a3 bb3]/5", T: "[a3@4 g3@4 a3@4 d3@29 g3@38 ~@17]/4",
  U: "[~@5 g3@64 ~@3]/3",
})).s("gm_trombone").gain(0.3)

// other · trombone
const trombone_3 = note(`<
  ~@16 A B C D E F G D E F G H A I G J K L M H A I G J K L M H K N O@2 P@8 Q@5 R@4 S@3
>`.pickRestart({
  A: "~ d3 f3@4", B: "~ c3 g3@4", C: "~ bb2 f3@4", D: "c4 g3 a3@4", E: "~ f3 g3@4", F: "~ g3 bb3@4", G: "~ g3 a3@4",
  H: "f3 g3@2", I: "~ g3 a3@3 g3", J: "f3 bb3 f3 g3 f3 g3", K: "~ f3 g3@2 f3 d3", L: "~ a3 c4 g3 eb3 d3",
  M: "~ g3 a3@2 bb3 a3", N: "~ d3 g3 f3 eb3 d3", O: "[~ g3@5]/2",
  P: "[~@2 c3 bb2 a2 bb2@4 ~ f3 g3@4 ~@2 bb3@4 ~ g3 a3@4 g3 f3 g3@4 ~ f3 g3@4 ~ g3 bb3@4 ~ g3 a3]/8",
  Q: "[~ bb3 a3 f3@2 d3@2 c3 bb2 ~ f3 g3@4 ~ g3 a3@4 ~ f3 a3@4 f3 g3 f3]/5", R: "[g3@4 f3@4 g3@4 d3@29 g3@38 ~@17]/4",
  S: "[~@5 g3@64 ~@3]/3",
})).s("gm_trombone").gain(0.3)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  ~@4 A B C D A B C E A B C D A B C D A B C D A B C D A B C D B C A D A B C D B C A D F G H@3 I@12 J@4 K@3
>`.pickRestart({
  A: "g2", B: "eb2", C: "f2", D: "c2 d2", E: "c2 d2@2", F: "c2", G: "d2", H: "[eb2@5 c2]/3",
  I: "[d2 g2@2 eb2@2 f2@2 c2]/4", J: "[d2@12 eb2@29 eb2@38 ~@17]/4", K: "[~@5 g2@64 ~@3]/3",
})).s("gm_trombone").gain(0.25)

stack(trombone, trombone_2, trombone_3, bass)