Strudelify

Gourmet Race

B. Hanysz

KeyB♭ majorTempo120 bpm
0:00/0:00
// Gourmet Race — B. Hanysz
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/150788; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 102 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 · [c3,e3] is a chord.
// 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 F C G H I C D E J C K L M ~@4 N O P Q ~@4 R S T U ~@8 V W X Y Z AA AB AC A B C D E F C G H I C D E J C K L M
  ~@4 N O P Q ~@4 R S T U ~@8 V W X Y Z AA AB AC A B
>`.pickRestart({
  A: "g5@2 f5 eb5 d5 bb4 g4@2", B: "c5 d5 eb5 f5 d5@2 ~@2", C: "[c5,c6] [g4,g5]", D: "eb5 d5 c5@2", E: "c5 d5 eb5 c5",
  F: "bb4 c5 g4@2", G: "eb5@2 d5@2 c5@2 c5 d5", H: "eb5 f5 d5 bb4",
  I: "[c4,c5]@4 [g3,g4]@4 [c4,c5]@2 [d4,d5] [eb4,eb5] [f4,f5] [g4,g5] [ab4,ab5] [b4,b5]", // C G C D Eb F G Ab …
  J: "bb4@4 c5@4 [g4,ab4] [a4,bb4] [b4,c5] [db5,d5] [eb5,e5] [f5,gb5] [g5,ab5] [a5,bb5,b5]", K: "eb5 f5 g5 c5",
  L: "d5 f5 d5 bb4", M: "c5", N: "ab5@3 g5 f5@2 eb5 f5", O: "g5 c5 g5@2", P: "f5@3 f5 f5@2 eb5@2 d5@4 eb5@2 f5@2",
  Q: "eb5 f5 g5 eb5", R: "ab5@3 g5 f5@2 g5 ab5", S: "c6 g5 eb5 c5", T: "d5@3 d5 d5@2 f5@2 d5@2 bb4@2 g4@2 bb4@2",
  U: "c5 ~@5 bb4@2", V: "eb4@2 eb4!2 eb4@2 eb4 f4 g4@2 g4!2 f4@2 eb4@2", W: "d4@2 d4!2 d4@2 d4 eb4 d4@6 eb4 d4",
  X: "c4@2 c4!2 c4@2 c4 d4 eb4@2 eb4!2 d4@2 c4@2", Y: "bb3@2 bb3!2 bb3@2 c4@2 d4@6 c4 bb3",
  Z: "ab3@2 ab3!2 ab3@2 bb3@2 c4@2 c4!2 d4@2 f4@2", AA: "g4@2 g4!2 g4@2 bb4@2 g4@2 g4@2 f4@2 eb4@2",
  AB: "d4 f4 g4 d4 f4 g4 d4 f4", AC: "d4@2 f4@2 g4@2 c5@2 b4@4 c4 d4 eb4 f4",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note(`<
  A B C D E F C G H I C D E J C K L M ~@4 N O P Q ~@4 R S T U V W X Y Z AA AB AC ~@7 AD A B C D E F C G H I C D E J C K
  L M ~@4 N O P Q ~@4 R S T U V W X Y Z AA AB AC ~@7 AD A B
>`.pickRestart({
  A: "g4@2 f4 eb4 d4 bb3 g3@2", B: "c4 d4 eb4 f4 d4@2 ~@2", C: "c5 g4", D: "eb4 d4 c4@2", E: "c4 d4 eb4 c4",
  F: "bb3 c4 g3@2", G: "eb4@2 d4@2 c4@2 c4 d4", H: "eb4 f4 d4 bb3", I: "c4@4 g3@4 c4@2 d4 eb4 f4 g4 ab4 b4",
  J: "bb3@4 c4@4 [g3,ab3] [a3,bb3] [b3,c4] [db4,d4] [eb4,e4] [f4,gb4] [g4,ab4] [a4,bb4,b4]", K: "eb4 f4 g4 c4",
  L: "d4 f4 d4 bb3", M: "c4", N: "ab4@3 g4 f4@2 eb4 f4", O: "g4 c4 g4@2", P: "f4@3 f4 f4@2 eb4@2 d4@4 eb4@2 f4@2",
  Q: "eb4 f4 g4 eb4", R: "ab4@3 g4 f4@2 g4 ab4", S: "c5 g4 eb4 c4", T: "d4@3 d4 d4@2 f4@2 d4@2 bb3@2 g3@2 bb3@2",
  U: "c4@3 bb4", V: "eb4@2 eb4!2 eb4@2 eb4 f4 g4@2 g4!2 f4@2 eb4@2", W: "d4@2 d4!2 d4@2 d4 eb4 d4@6 eb4 d4",
  X: "c4@2 c4!2 c4@2 c4 d4 eb4@2 eb4!2 d4@2 c4@2", Y: "bb3@2 bb3!2 bb3@2 c4@2 d4@6 c4 bb3",
  Z: "ab3@2 ab3!2 ab3@2 bb3@2 c4@2 c4!2 bb3@2 ab3@2", AA: "g3@2 g3!2 eb4@2 f4@2 eb4@4 bb3@4",
  AB: "eb4@2 eb4!2 eb4@3 f4 gb4@2 gb4!2 ab4@2 gb4@2", AC: "f4@2 f4!2 f4@2 gb4@2 f4@6 g4 f4",
  AD: "d4@2 f4@2 g4@2 c5@2 b4@4 c4 d4 eb4 f4",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  A B C@2 A C@3 D C@3 A C@2 E C@2 F G F H I J I J F G F H A C K C A C E A L A M C A C E A L A C N A B C@2 A C@3 D C@3 A
  C@2 E C@2 F G F H I J I J F G F H A C K C A C E A L A M C A C E A L A C N A B
>`.pickRestart({
  A: "~ f3 ~ f3 ~ f3 ~ f3", B: "~ ab3 ~ ab3 g3@2 ~@2", C: "~ eb3 ~ eb3 ~ eb3 ~ eb3", D: "~ c3 ~ c3 ~ d3 ~ bb2",
  E: "~ d3 ~ d3 ~ d3 ~ d3", F: "[f2,f3]!2 [ab2,ab3] [c3,c4]", G: "[eb3,eb4] [d3,d4] [c3,c4] [g2,g3]",
  H: "[eb3,eb4] [f3,f4] [g3,g4]@2", I: "~ c3 ~ c3 ~ c3 ~ c3", J: "~ bb2 ~ bb2 ~ bb2 ~ bb2", K: "~ g3 ~ g3 ~ g3 ~ g3",
  L: "~ d3 ~ d3 ~ eb3 ~ eb3", M: "~ e3 ~ e3 ~ e3 ~ e3", N: "~ c3 ~ c3 c3@2 ~@2",
})).s("gm_trombone").gain(0.3)

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

stack(trumpet, trumpet_2, trombone, bass)