Strudelify

Old Town Road For Brass Band

EJ Hardy

KeyB majorTempo69 bpm
0:00/0:00
// Old Town Road For Brass Band — EJ Hardy
// 69 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5629124; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(69/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@3 A B C B D E F E F E F E F E F E F E F E G B C B D H I H I E F E G B C B D ~@4>".pickRestart({
  A: "~@10 d#5@3 d#5!3", B: "d#5@2 c#5@2 b4@2 g#4!2 d#5 c#5@2 b4@2 g#4!2 f#4",
  C: "~@2 c#5@4 c#5 d#5 b4@2 a#4@2 b4 g#4!2 f#4", D: "~@2 c#5@4 c#5 d#5 b4@2 g#4@2 g#4@2 ~@2",
  E: "c5 ~ c5 ~ c#5 ~ c#5 ~", F: "c#5 ~ c#5 ~ c#5 ~ c#5 ~", G: "c#5@2 ~@2 c#5@2 ~@4 d#5@3 d#5!3", H: "c5 ~@3 c#5 ~@3",
  I: "c#5 ~@3 c#5 ~@3",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  A B C D ~@3 E F G ~@2 H I ~@2 J K ~@2 H I ~@2 L M L M N O N O L M L M L M L M P Q P R
>`.pickRestart({
  A: "~@5 b3@3", B: "g#3@2 ~@6 f#3!2 g#3 ~ b3@2 g#3@2", C: "f#3 g#3 ~@8 b3@6",
  D: "g#3@2 ~@4 d#4@2 c#4 b3 g#3@2 g#3@2 ~@2", E: "~@13 g#2!3", F: "c#3 d#3!2 c#3 d#3@2 ~@2 b2 c#3!2 b2 c#3@2 ~@2",
  G: "b2 c#3!2 b2 c#3@2 c#3 b2 c#3 b2 c#3 d#3 b2 a#2 g#2@2", H: "d#3!2 c#3!2 d#3@2 g#3@2 d#3@2 c#3@6",
  I: "f#2!2 f#2@2 f#2@2 f#2@2 c#3@2 b2@2 a#2@2 g#2@2", J: "c#3 d#3!2 c#3 d#3@2 g#2@2 b2 c#3!2 b2 c#3@2 f#2@2",
  K: "b2 c#3!2 b2 c#3@2 f#2@2 c#3 b2 c#3 d#3 b2 a#2 g#2@2", L: "c4 ~ c4 ~ c#4 ~ c#4 ~", M: "c#4 ~ c#4 ~ c#4 ~ c#4 ~",
  N: "c4 ~@3 c#4 ~@3", O: "c#4 ~@3 c#4 ~@3", P: "~@12 f#3 g#3@2 g#3", Q: "~@8 f#3!2 g#3@2 b3@2 g#3@2",
  R: "~@6 d#4@2 c#4 b3 g#3@2 g#3@2 ~@2",
})).s("gm_trombone").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B A B A B A B ~@2 C D ~@2 E F ~@2 G H ~@2 E F A B A B I J I J A B A B A B A B A B A B
>`.pickRestart({
  A: "g#2 ~ g#2 ~ b2 ~ b2 ~", B: "f#2 ~ f#2 ~ e2 ~ e2 ~", C: "c#3 d#3!2 c#3 d#3 ~ g#2@2 b2 c#3!2 b2 c#3@2 ~@2",
  D: "b2 c#3!2 b2 c#3 b2 g#2!2 c#3 b2 c#3 d#3 b2@2 g#2@2", E: "d#3!2 c#3!2 d#3@2 g#3@2 d#3@2 c#3@6",
  F: "f#2!2 f#2@2 f#2@2 f#2@2 c#3@2 b2@2 a#2@2 g#2@2", G: "c#3 d#3!2 c#3 d#3@2 g#2@2 b2 c#3!2 b2 c#3@2 f#2@2",
  H: "b2 c#3!2 b2 c#3@2 f#2@2 c#3 b2 c#3 d#3 b2 a#2 g#2@2", I: "g#2 ~@3 b2 ~@3", J: "f#2 ~@3 e2 ~@3",
})).s("gm_baritone_sax").gain(0.4)

// bass · tuba
const bass = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D C D A B A B A B A B A B A B
>`.pickRestart({
  A: "g#2 b2", B: "f#2 e2", C: "g#2 ~@3 b2 ~@3", D: "f#2 ~@3 e2 ~@3",
})).s("gm_tuba").gain(0.3)

stack(trumpet, trombone, baritone_sax, bass)