Strudelify
KeyB♭ majorTempo120 bpm
0:00/0:00
// Misc Tunes — Roca Dani (Slavko Avsenik)
// 120 bpm, 2/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2084711; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/2)

// 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 · trumpet · "B Kornett"
const trumpet = note(`<
  ~ A B C D E@3 F G@3 H E@3 F G I J D K@4 L@4 E@3 F G I J M N@4 O@4 N@4 P@2 Q R N@4 O@4 N@4 P@2 Q R E@3 F G@3 H E@3 F G
  I J D K@4 L@4 E@3 F G I J M
>`.pickRestart({
  A: "~@2 f4@2 a4 ~ eb5 ~", B: "a4@2 eb5@2 d5 ~ c5 ~", C: "bb4 ~ a4@2", D: "bb4 ~@3", E: "bb4!3 ~ g4 ~ f4 ~", F: "eb4",
  G: "a4!3 ~ g4 ~ f4 ~", H: "d4", I: "a4!3 ~ g4@4", J: "f4@3 f4 g4 ~ a4 ~", K: "[f4@26 ~@2 g4!2 gb4 ~]/4", L: "f4/4",
  M: "bb4 ~ bb4!2 bb4@4", N: "[~ bb4@2 bb4@2 bb4@2 g4@2 bb4@2 g4@2 bb4@2 ab4]/4",
  O: "[~ bb4@2 bb4@2 bb4@2 ab4@2 bb4@2 ab4@2 bb4@2 g4]/4", P: "[~ bb4@2 bb4@2 bb4@2 ab4]/2", Q: "bb4@3 bb4 ab4@2 bb4@2",
  R: "g4 ~@3",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B Kornett"
const trumpet_2 = note(`<
  ~ A B C D E@3 F G@3 H E@3 F G I J D E@3 F G@3 H E@3 F G I J K L M@2 N O N P M L M Q N O N R S L M@2 N O N P M L M Q N
  O N R S E@3 F G@3 H E@3 F G I J D E@3 F G@3 H E@3 F G I J K
>`.pickRestart({
  A: "~@2 f3@2 a3 ~ eb4 ~", B: "a3@2 g4@2 f4 ~ eb4 ~", C: "d4 ~ eb4@2", D: "d4 ~@3", E: "d4!3 ~ d4 ~ d4 ~", F: "a3",
  G: "eb4!3 ~ eb4 ~ eb4 ~", H: "bb3", I: "eb4!3 ~ eb4@4", J: "eb4@3 eb4!2 ~ eb4 ~", K: "d4 ~ d4!2 d4@4", L: "bb3 g4",
  M: "eb4 c4", N: "d4 c4", O: "bb3 ab4", P: "d4@2 c4 d4", Q: "eb4@4 c4@3 c4", R: "d4@3 d4 c4@2 d4@2", S: "eb4 ~ bb3@2",
})).s("gm_trumpet").gain(0.3)

// bass · tuba
const bass = note(`<
  A B@2 C@2 D@3 E@3 F G D@2 H E@3 I J D@3 E D E F G D@2 H E K L I M N@3 O@3 P Q N@3 O@3 P R N@3 O@3 P Q N@3 O@3 P R D@3
  E@3 F G D@2 H E@3 I J D@3 E D E F G D@2 H E K L I M
>`.pickRestart({
  A: "~@2 f2@2 a2 ~ eb3 ~", B: "[a2@10 f2@2 g2 ~ a2 ~]/2", C: "bb2 ~ f2@2", D: "bb2 ~ f2 ~", E: "c3 ~ f2 ~",
  F: "c3 ~ f2@2 g2 ~ a2 ~", G: "bb2 ~ a2 ~ g2 ~ f2 ~", H: "bb2 ~ d3 ~", I: "f3@3 eb3 d3 ~ c3 ~", J: "f2 ~ f2@2",
  K: "f3!3 ~ f3 ~ f3 ~", L: "f2!3 ~ f2@4", M: "bb2 ~ bb2!2 bb2@4", N: "eb2 ~ bb2 ~", O: "f2 ~ bb2 ~",
  P: "bb2@3 bb2 c3 ~ d3 ~", Q: "eb3 ~ d3 ~ c3 ~ bb2 ~", R: "eb3 ~ bb2@2",
})).s("gm_tuba").gain(0.4)

stack(trumpet, trumpet_2, bass)