Strudelify

mercy mercy mercy

J. ZAWINUL

KeyB♭ majorTempo120 bpm
0:00/0:00
// mercy mercy mercy — J. ZAWINUL
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 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/98817; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 45 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 · trumpet · "Bb Trumpet"
const trumpet = note(`<
  A B C D E D E D E D E F G F H I J K L M N O P D E D E D E D E F G F H I J K L M N O P O Q
>`.pickRestart({
  A: "~@12 d5@2 f5 ~", B: "bb4@6 a4 ~ bb4@6 a4 ~", C: "bb4 ~@3", D: "~@2 g4 f4@3 d5 bb4",
  E: "c5@2 bb4 ~ bb4@2 g4@2 bb4@4 c5@2 ~@2", F: "f4@4 f4@4 g4 ~ g4@4 ab4@2", G: "ab4@4 ab4@4 g4 ~ g4@4 f4@2",
  H: "ab4@4 ab4@4 g4 ~ g4@4 f4 ~", I: "~@2 d4 bb3 d4!2 eb4!2", J: "f4@2 ~@2 bb4@6 g4@2 bb4@2 bb4 ~",
  K: "~@2 bb3!2 d4!2 eb4!2", L: "f4@2 ~@8 f4@2 g4@2 bb4 ~", M: "c5@6 c5@8 bb4 ~", N: "d5@6 d5@6 d4@2 f4 ~",
  O: "g4@6 f4 ~ g4@6 f4 ~", P: "g4 ~@7", Q: "g4",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note(`<
  A B C D E D E D E D E F G F H I J I K L M N O D E D E D E D E F G F H I J I K L M N O N P
>`.pickRestart({
  A: "~@12 d4@2 f4 ~", B: "g4@6 f4 ~ g4@6 f4 ~", C: "g4 ~@7", D: "~@2 eb4 d4@3 d5 bb4",
  E: "ab4@2 g4 ~ g4@2 db4@2 f4@4 g4@2 ~@2", F: "d4@4 d4@4 eb4 ~ eb4@4 f4@2", G: "f4@4 f4@4 eb4 ~ eb4@4 d4@2",
  H: "f4@4 f4@4 eb4 ~ eb4@4 d4 ~", I: "~@2 bb3!2 d4!2 eb4!2", J: "f4@2 ~@2 g4@6 eb4@2 g4@2 f4 ~",
  K: "f4@2 ~@8 f4@2 g4@2 bb4 ~", L: "eb4@3 eb4@5", M: "f4@6 f4@6 d4@2 f4 ~", N: "d4@6 c4 ~ d4@6 c4 ~", O: "d4 ~@7",
  P: "bb3",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  A B C D E D E D E D E F@4 G H G I J K B C D E D E D E D E F@4 G H G I J K B C B L
>`.pickRestart({
  A: "~@12 d3@2 f3 ~", B: "g3@6 f3 ~ g3@6 f3 ~", C: "g3 ~@7", D: "bb2 ~ bb2@4 f3@2 bb3 ~ bb3@2 db3@2 d3@2",
  E: "eb3 ~ eb3@4 eb3@4 g2@2 ab2@2 a2@2",
  F: "[bb2@2 bb2@2 bb2@2 bb2@2 bb2 ~ bb2@4 bb2@4 bb2@2 bb2@2 bb2@2 bb2 ~ bb2@4 bb2@4 bb2@2 bb2@2 bb2@2 bb2 ~ bb2@4 bb2@4 bb2@2 bb2@2 bb2@2 bb2 ~ bb2@4 bb2 ~]/4",
  G: "~@2 bb2!2 d3!2 eb3!2", H: "f3@2 ~@2 f3@6 c3@2 b2@2 bb2 ~", I: "f3@2 ~@8 f2@2 g2@2 bb2 ~", J: "c3@3 c3@5",
  K: "d3@6 d3@6 d3@2 f3 ~", L: "g2",
})).s("gm_trombone").gain(0.3)

stack(trumpet, trumpet_2, trombone)