Strudelify

Blue Devils 2016 Warm Up Ballad

Lawrence Lai

KeyF majorTempo80 bpm
0:00/0:00
// Blue Devils 2016 Warm Up Ballad — Lawrence Lai
// 80 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 4, 4/4 at bar 5) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 5 "B♭ Trumpet" trumpet (copy of ch 1 "B♭ Clarinet" clarinet)
// note: Transcription provider: pdmx. https://musescore.com/score/4525406; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 29 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 · clarinet · "B♭ Clarinet"
const clarinet = note("<~@4 A B@2 C@2 D E F G H@2 I J ~@2 K L M@3 N@5>".pickRestart({
  A: "~ c5", B: "[e5@5 f5@5 ~ g5@5 a5@36 ~@4 c6@8]/2", C: "[bb5@2 a5@2 [f5,f6]@5 ~ e5@2 f5@2 c5@2]/2", D: "d5 g5 e5 d5",
  E: "e5@5 f5@5 ~ c5@17 ~@4", F: "bb5 a5", G: "g5@3 c5 bb4 a4 f5 e5", H: "f5", I: "d5", J: "c5", K: "~ g4 c5 f5",
  L: "e5@7 ~", M: "[f5@3 g5@3 ~ a5@13 f5@3 g5@3 a5@13 d5@10 g5@10 e5@10 g5@10 ~@17]/3",
  N: "[~@17 g5@2 ~ f5@2 g5@2 ~ a5@2 ~@74 f6@39 ~@20, ~@27 c6@113 ~@20]/5",
})).s("gm_clarinet").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<A@4 B@3 C D E F G H I J K L M N@2 O P@8>".pickRestart({
  A: "[~ f3@2 g3@2 a3@2 c4]/4", B: "c4", C: "d4", D: "c4@16 c4@5 d4@5 ~ c4@5", E: "bb3 c4", F: "c4@16 e4@5 f4@5 ~ c4@5",
  G: "g3 d4 f3 g3", H: "c4@2 d4 db4", I: "a3", J: "c4@4 d4 e4 d4 c4", K: "c4 bb3", L: "bb3 a3", M: "bb3", N: "g3",
  O: "g3@5 ~ c4@2", P: "[a3@39 bb3@20 c4@20 c4@158 ~@19]/8",
})).s("gm_tenor_sax").gain(0.45)

// bass · baritone sax · "Baritone Saxophone"
const bass = note("<~@3 A B C D E F G H I J K L M N ~ O P@2 Q@8>".pickRestart({
  A: "~ g2", B: "c2", C: "f2@3 f2", D: "e2@3 e2", E: "d2@3 d2", F: "c2@16 c2@5 d2@5 ~ c2@5", G: "bb1 c2", H: "a2",
  I: "g2@3 g2", J: "c2 a1", K: "d2@6 f2 d2", L: "a1@6 d2 c2", M: "bb1@3 d2", N: "f2", O: "~@3 bb1",
  P: "[c2@13 ~ c2@2]/2", Q: "[f2@10 e2@10 d2@10 c2@9 bb1@20 c2@20 f2@158 ~@19]/8",
})).s("gm_baritone_sax").gain(0.72)

// bass · baritone sax · "Baritone Saxophone" · soft notes
const bass_soft = note("<A@3 B ~@25>".pickRestart({
  A: "[~@2 bb1@7 f2 bb2@2]/3", B: "a2 ~",
})).s("gm_baritone_sax").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@4 A B@2 C@2 D E F G H@2 I J ~@2 K L M@3 N@5>".pickRestart({
  A: "~ c5", B: "[e5@5 f5@5 ~ g5@5 a5@36 ~@4 c5@8]/2", C: "[bb4@2 a4@2 d5@5 ~ e5@2 f5@2 c5@2]/2", D: "d5 g5 e5 d5",
  E: "e5@5 f5@5 ~ c5@17 ~@4", F: "bb4 c5 d5@2", G: "e5@3 c5 bb4 a4 f5 e5", H: "d5/2", I: "c5 bb4", J: "bb4 a4",
  K: "~ g4 c5 f5", L: "e5@7 ~", M: "[a4@3 bb4@3 ~ c5@13 a4@3 bb4@3 c5@13 bb4@10 bb4@10 c5@10 c5@10 ~@17]/3",
  N: "[~@17 g5@2 ~ f5@2 g5@2 ~ a5@2 g5@34 ~ a5@79 ~@19]/5",
})).s("gm_trumpet").gain(0.37)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<~@4 A B@2 C@2 D E F G H I J K ~@2 L M N@3 O@5>".pickRestart({
  A: "~ c4", B: "[e4@5 f4@5 ~ g4@5 a4@36 ~@4 c5@8]/2", C: "[bb4@2 a4@2 f4@5 ~ e4@2 f4@2 c4@2]/2", D: "bb4 g4",
  E: "e4@5 f4@5 ~ c4@17 ~@4", F: "bb4 c5 d5@2", G: "c5@3 c5 bb4 a4 f5 e5", H: "c5", I: "c5 a4", J: "c5 bb4",
  K: "bb4 a4", L: "~ g4 c5@2", M: "c5@7 ~", N: "[f4@3 g4@3 ~ a4@13 f4@3 g4@3 a4@13 d4@10 g4@10 e4@10 g4@10 ~@17]/3",
  O: "[~@17 g4@2 ~ f4@2 g4@2 ~ a4@2 c5@113 ~@20]/5",
})).s("gm_trumpet").gain(0.37)

// other · french horn · "Horn in F"
const french_horn = note("<~ A B C D@2 E F G H I J K L M N O P Q R S T U@2 V@5>".pickRestart({
  A: "~@2 e4 f4", B: "g4@4 ~@2 f4 g4", C: "a4 c5 bb4@2", D: "[c5@48 g4@5 a4@5 ~ c4@5]/2", E: "f4@2 c4 f4 g4@2 a4@2",
  F: "f4@16 ~@4 a4@2 g4@2 f4@2 ~ a4@2 ~ c5@2, ~@26 g4@2 ~ bb4@2 ~", G: "d5@3 ~", H: "bb4 a4 g4 c5", I: "a4",
  J: "bb4 a4", K: "g4@3 c5 bb4 a4 f4 e4", L: "e4 d4", M: "d4@4 d4 e4 d4 c4", N: "d4", O: "c4@3 f4",
  P: "g4@2 a4@2 bb4@2 bb4 a4", Q: "a4@2 f4 a4", R: "g4", S: "e4@6 a4 bb4 c5@8", T: "c5@13 c5@3 bb4@3 ~ a4@12",
  U: "[~ g4@3 a4@3 bb4@10 a4@10 g4@10 e4@10 ~@15 g4@2]/2", V: "[f4@2 g4@2 ~ a4@2 c5@133 ~@20]/5",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note("<[~@2 d4 e4] [f4@2 g4 f4 ~@4] ~@27>").s("gm_french_horn").gain(0.2)

// other · french horn · "Horn in F"
const french_horn_2 = note("<~ A B C D@2 E F G H I J K L M N O P ~@2 Q R S@2 T@5>".pickRestart({
  A: "~@2 c4 d4", B: "e4@4 ~@2 d4 e4", C: "f4 a4 bb4@2", D: "[c5@48 g4@5 a4@5 ~ c4@5]/2", E: "f4@2 c4 f4 g4@2 a4@2",
  F: "f4@16 ~@4 f4@2 e4@2 c4@2 ~ e4@2 ~ g4@2, ~@26 d4@2 ~ f4@2 ~", G: "a4@3 ~", H: "bb4 a4 g4 c5", I: "a4", J: "bb4 a4",
  K: "g4@3 c5 bb4 a4 f4 e4", L: "a4@3 a4", M: "g4 f4 e4 c4", N: "d4", O: "f4", P: "g3", Q: "e4@6 a4 bb4 c5@8",
  R: "c5@13 c5@3 bb4@3 ~ a4@12", S: "[~ g4@3 a4@3 bb4@10 a4@10 g4@10 e4@10 ~@15 g4@2]/2",
  T: "[f4@2 g4@2 ~ a4@2 f4@54 ~ a4@79 ~@19]/5",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft_2 = note("<[~@2 bb3 c4] [d4@2 e4 d4 ~@4] ~@27>").s("gm_french_horn").gain(0.2)

// other · tuba · "Euphonium"
const tuba = note("<A@4 B C D C@2 E F G@2 H@2 I B I J B K L@8>".pickRestart({
  A: "[~ bb3@2 c4@2 d4@2 e4]/4", B: "c4", C: "f4", D: "e4", E: "d4 e4", F: "f4@16 e4@5 f4@5 ~ c4@5",
  G: "[g4 d4 f4@4 e4@2]/2", H: "[e4@4 d4@8 d4 e4 d4 c4]/2", I: "d4", J: "bb3", K: "c4@5 ~ c4@2",
  L: "[c4@20 d4@19 d4@20 e4@20 f4@158 ~@19]/8",
})).s("gm_tuba").gain(0.52)

// other · trombone
const trombone = note("<A@4 B C@4 D E F G H@2 I J K L J M N@8>".pickRestart({
  A: "[~ d3@2 e3@2 f3@2 g3]/4", B: "c3", C: "a3/2", D: "f3 g3", E: "f3@16 e3@5 f3@5 ~ c3@5", F: "g3 d3 f3 g3",
  G: "g3 a3", H: "[f3@3 a3]/2", I: "bb3 f3", J: "f3", K: "g3", L: "e3 f3", M: "e3@5 ~ c4@2",
  N: "[a3@20 a3@19 bb3@20 g3@20 [f3,a3]@158 ~@19]/8", // F
})).s("gm_trombone").gain(0.4)

// bass · tuba
const bass_2 = note("<~@3 A B C D E F G H I J K L M N ~@2 O@2 P@8>".pickRestart({
  A: "~ g2", B: "c2", C: "f2@3 f2", D: "e2@3 e2", E: "d2@3 d2", F: "c2@16 c2@5 d2@5 ~ c2@5", G: "bb1 c2", H: "a1",
  I: "g1@3 g1", J: "c2 a1", K: "d2@6 f2 d2", L: "a1@6 d2 c2", M: "bb1@3 d2", N: "f1", O: "[c2@13 ~ c2@2]/2",
  P: "[f2@10 e2@10 d2@10 c2@9 bb1@20 c2@20 c2@158 ~@19]/8",
})).s("gm_tuba").gain(0.45)

// bass · tuba · soft notes
const bass_soft_2 = note("<A@3 B ~@14 C ~@10>".pickRestart({
  A: "[~@2 bb1@7 f2 bb2@2]/3", B: "a2 ~", C: "~@3 bb1",
})).s("gm_tuba").gain(0.25)

stack(
  clarinet, tenor_sax, bass, bass_soft, trumpet, trumpet_2, french_horn, french_horn_soft, french_horn_2,
  french_horn_soft_2, tuba, trombone, bass_2, bass_soft_2
)