Strudelify

NFL on CBS (For marching band and percussion)

Cole Frishman / Cooper Rhoades/Andrew Rogers

KeyE♭ majorTempo172 bpm
0:00/0:00
// NFL on CBS (For marching band and percussion) — Cole Frishman / Cooper Rhoades/Andrew Rogers
// 172 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 22) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 7 "B♭ Trumpet" trumpet (copy of ch 2 "B♭ Clarinet" clarinet); ch 13 "Trombone" trombone (copy of ch 6 "Baritone Saxophone" baritone sax); ch 14 "Euphonium" tuba (copy of ch 6 "Baritone Saxophone" baritone sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5583538; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 24 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(172/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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("<A B C D E ~ A B C D A B F G ~@2 H I ~@2 H I J K>".pickRestart({
  A: "c5@10 g4 ~ c5 ~ eb5 ~", B: "g5 eb5", C: "ab5@6 g5 f5", D: "eb5 ~ d5 ~ f5 ~ b4 ~", E: "c5",
  F: "c5@2 ~ c5!2 ~ c5@2", G: "~ c5!2 ~ c5@2 ~@2", H: "c5 ~ c5 ~ c5 ~ d5 ~@3 eb5 ~@3 f5 ~",
  I: "~@2 g5 ~@3 f5 ~ eb5@4 d5@4", J: "c5 ~ c5 ~ c5 ~ g5 ~@5 c5 ~ c5 ~",
  K: "c5 ~ ab5 ~@5 [c5,c6] ~ [c5,c6] ~ [c5,c6] ~ [c5,c6] ~", // C
})).s("gm_clarinet").gain(0.45)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note("<A B C B D ~ E F G H E F I J ~@8 K L>".pickRestart({
  A: "c4@8 c4 ~ c4 ~ c4 ~ c4 ~", B: "c4!2", C: "c4@6 c4!2", D: "c4", E: "c4@10 g3 ~ c4 ~ eb4 ~", F: "g4 eb4",
  G: "ab4@6 g4 f4", H: "eb4 ~ d4 ~ f4 ~ b3 ~", I: "c4@2 ~ c4!2 ~ c4@2", J: "~ c4!2 ~ c4@2 ~@2",
  K: "c4 ~ c4 ~ c4 ~ g4 ~@5 c4 ~ c4 ~", L: "c4 ~ ab4 ~@5 c4 ~ c4 ~ c4 ~ c4 ~",
})).s("gm_clarinet").gain(0.45)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<A B C B D E F G F G H@2 I J ~@8 K L>".pickRestart({
  A: "c4@8 c4 ~ c4 ~ c4 ~ c4 ~", B: "c4!2", C: "c4@6 c4!2", D: "c4", E: "d4 ~@3",
  F: "c4 ~ c4 ~ c4 ~ c4 ~@3 c4 ~@3 c4 ~", G: "~@2 c4 ~@3 c4 ~ c4@4 c4@4", H: "~ c4 ~ c4 ~ c4 ~ c4",
  I: "c4@2 ~ c4!2 ~ c4@2", J: "~ c4!2 ~ c4@2 ~@2", K: "c4 ~ c4 ~ c4 ~ g4 ~@5 c4 ~ c4 ~",
  L: "c4 ~ ab4 ~@5 c4 ~ c4 ~ c4 ~ c4 ~",
})).s("gm_alto_sax").gain(0.45)

// other · oboe · "Tenor Saxophone"
const oboe = note("<A ~ A ~ B C D@2 E F D@2 G H ~@8 I@2>".pickRestart({
  A: "c4!4 c3 ~@3", B: "c3@2 ~ c3@2 c3@2 ~ c3@2 ~ c3@2 c3@2 ~", C: "d3 ~ c3@2",
  D: "[c4 g3 eb3 d3 c3@2 c3@3 c3 d3 c3 eb3 c3@3]/2", E: "c3@2 bb2 c3 c3@2 d3 c3", F: "d3@2 eb3 d3 eb3 f3 g3 b3",
  G: "c3@2 ~ c3@2 ~ c3@2", H: "~ c3@2 ~ c3@2 ~@2", I: "[c3@6 g3@6 c3@6 ab3@6 c3 ~ c3 ~ c3 ~ c3 ~]/2",
})).s("gm_oboe").gain(0.4)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<A ~ A ~ B C D@2 E F D@2 G H ~@2 I@2 ~@2 I@2 J@2>".pickRestart({
  A: "c3!4 f2 ~@3", B: "c3@2 ~ c3@2 c3@2 ~ c3@2 ~ c3@2 c3@2 ~", C: "d3 ~ c3@2",
  D: "[c4 g3 eb3 d3 c3@2 c3@3 c3 d3 c3 eb3 c3@3]/2", E: "c3@2 bb2 c3 c3@2 d3 c3", F: "d3@2 eb3 d3 eb3 f3 g3 b3",
  G: "c3@2 ~ c3@2 ~ c3@2", H: "~ c3@2 ~ c3@2 ~@2", I: "[c3 ~ c3 ~ c3 ~ bb2@4 ab2@22]/2",
  J: "[c3@6 g2@6 c3@6 ab2@6 c3 ~ c3 ~ c3 ~ c3 ~]/2",
})).s("gm_baritone_sax").gain(0.45)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A B C B D ~ E F G H E F I J K L ~@2 K L ~@2 M N>".pickRestart({
  A: "c4@8 c4 ~ c4 ~ c4 ~ c4 ~", B: "c4!2", C: "c4@6 c4!2", D: "c4", E: "c4@10 g3 ~ c4 ~ eb4 ~", F: "g4 eb4",
  G: "ab4@6 g4 f4", H: "eb4 ~ d4 ~ f4 ~ b3 ~", I: "c4@2 ~ c4!2 ~ c4@2", J: "~ c4!2 ~ c4@2 ~@2",
  K: "c4 ~ c4 ~ c4 ~ d4 ~@3 eb4 ~@3 f4 ~", L: "~@2 g4 ~@3 f4 ~ eb4@4 d4@4", M: "c4 ~ c4 ~ c4 ~ g4 ~@5 c4 ~ c4 ~",
  N: "c4 ~ ab4 ~@5 c4 ~ c4 ~ c4 ~ c4 ~",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Mellophone"
const french_horn = note("<A B C B D E F G F G H@2 I J K@2 L@2 K@2 L@2 M N>".pickRestart({
  A: "c4@8 c4 ~ c4 ~ c4 ~ c4 ~", B: "c4!2", C: "c4@6 c4!2", D: "c4", E: "d4 ~@3",
  F: "c4 ~ c4 ~ c4 ~ c4 ~@3 c4 ~@3 c4 ~", G: "~@2 c4 ~@3 c4 ~ c4@4 c4@4", H: "~ c4 ~ c4 ~ c4 ~ c4",
  I: "c4@2 ~ c4!2 ~ c4@2", J: "~ c4!2 ~ c4@2 ~@2", K: "[c4 ~ c4 ~ c4 ~ c4@4 c4@2 ~@2 c4@4 c4@2 ~@2 c4@2 c4@4 c4@4]/2",
  L: "[c4 ~ c4 ~ c4 ~ bb3@4 ab3@22]/2", M: "c4 ~ c4 ~ c4 ~ g4 ~@5 c4 ~ c4 ~", N: "c4 ~ ab4 ~@5 c4 ~ c4 ~ c4 ~ c4 ~",
})).s("gm_french_horn").gain(0.34)

// bass · tuba
const bass = note("<A ~ A ~ B C D@2 E F D@2 G H ~@2 I@2 ~@2 I@2 J@2>".pickRestart({
  A: "c2!5 ~@3", B: "c2@2 ~ c2@2 c2@2 ~ c2@2 ~ c2@2 c2@2 ~", C: "d2 ~ c2@2",
  D: "[c3 g2 eb2 d2 c2@2 c2@3 c2 d2 c2 eb2 c2@3]/2", E: "c2@2 bb1 c2 c2@2 d2 c2", F: "d2@2 eb2 d2 eb2 f2 g2 b2",
  G: "c2@2 ~ c2@2 ~ c2@2", H: "~ c2@2 ~ c2@2 ~@2", I: "[c2 ~ c2 ~ c2 ~ bb1@4 ab1@22]/2",
  J: "[c3@6 g2@6 c3@6 ab2@6 c3 ~ c3 ~ c3 ~ c3 ~]/2",
})).s("gm_tuba").gain(0.45)

// drums · kick
const kick = s("bd").struct("<A ~ A ~ B ~ C D@2 E ~@2 F A ~@10>".pickRestart({
  A: "~ x", B: "x ~@4 x ~@2 x ~@4 x ~@2", C: "~@9 x!3 ~@4", D: "x!2 ~@2", E: "x!4", F: "x ~@2 x",
})).gain(0.15)

// drums · rim
const rim = s("rim").struct("<A ~ A ~ B ~ C D E D@3 F G H@8 I J>".pickRestart({
  A: "x!5 ~@3", B: "x ~@10 x ~ x ~@2", C: "x ~ x!2", D: "x!4", E: "x ~ x!3 ~ x!2", F: "x ~@2 x!2 ~ x ~",
  G: "~ x!2 ~ x ~@3", H: "x!2", I: "x ~@2 x ~@2 x ~", J: "~ x ~@2 x!4",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<A ~ B ~ C D E F@2 G E H I J K L ~@2 K L ~@4>".pickRestart({
  A: "x!5 ~@3", B: "x!5 ~ x ~ x ~@7", C: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", D: "~@8 x!8", E: "x!16",
  F: "x ~ x ~ x ~ x ~ x!8", G: "x!8", H: "x!3 ~ x ~ x!3 ~ x!6", I: "x ~@2 x!2 ~ x ~", J: "~ x!2 ~ x ~@3",
  K: "x!4 ~ x ~ x", L: "~ x ~ x!2 ~ x ~",
})).gain(0.15)

// drums · crash
const crash = s("cr").struct("<A ~ A ~ B ~ C ~ D E F G H I J@2 ~ K J@2 ~ K L M>".pickRestart({
  A: "x!5 ~@3", B: "~@8 x ~@4 x ~@2", C: "~@3 x ~@4", D: "x!4", E: "~ x ~@2", F: "x", G: "~ x", H: "x ~@2 x!2 ~ x ~",
  I: "~ x!2 ~ x ~@3", J: "x!2", K: "~@3 x", L: "x ~@2 x ~@2 x ~", M: "~ x ~@2 x!4",
})).gain(0.3)

// drums · ride bell
const ride_bell = s("rd").struct("<~@16 [x!4 ~ x ~ x] [~ x ~ x!2 ~@3] ~@2 [x!4 ~ x ~ x] [~ x ~ x!2 ~@3] ~@2>")
  .gain(0.15)

// drums · bongos
const bongos = s("bongo:4").struct("<[~@2 x!2 ~@4] ~ [~@2 x!2 ~@4] ~ [~@3 x ~@7 x ~@4] ~@19>").gain(0.78)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct(`<
  ~@6
  [x!6 ~@7 x!3]
  [~@12 x!4]
  [~@8 x!4 ~@4]
  ~@3
  [~@3 x!2 ~@3]
  [~ x!2 ~@5]
  ~@10
>`).gain(0.39)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<A ~ A ~ B ~ C D ~ D E F G H ~@2 I@2 ~@2 I@2 J K>".pickRestart({
  A: "x!5 ~@3", B: "~@5 x ~@7 x ~@2", C: "~ x ~@2", D: "~ x ~ x", E: "~@3 x", F: "x ~ x!2", G: "x ~@2 x!2 ~ x ~",
  H: "~ x!2 ~ x ~@3", I: "x!2", J: "x ~@2 x ~@2 x ~", K: "~ x ~@2 x!4",
})).gain(0.78)

// drums · whistle
const whistle = s("ballwhistle:0").struct("<[x!4 ~@12] ~@3 [x ~@4 x ~@2 x ~@2 x ~ x ~@2] ~@19>").gain(0.39)

// drums · whistle · soft notes
const whistle_soft = s("ballwhistle:0").struct("<~@6 [~@6 x!3 ~@7] ~@5 [~@3 x!2 ~@3] [~ x!2 ~@5] ~@10>").gain(0.19)

// drums · guiro
const guiro = s("guiro:0").struct("<A ~ A ~ B ~ C ~ D ~ E F G H ~@2 I@2 ~@2 I@2 J K>".pickRestart({
  A: "x!5 ~@3", B: "~@3 x ~@9 x ~@2", C: "~ x ~@6", D: "~ x ~@3 x ~@2", E: "~ x!2 ~", F: "~ x ~@2",
  G: "x ~@2 x!2 ~ x ~", H: "~ x!2 ~ x ~@3", I: "x!2", J: "x ~@2 x ~@2 x ~", K: "~ x ~@2 x!4",
})).gain(6.29)

// drums · guiro
const guiro_2 = s("guiro:4").struct("<[~ x] ~ [~ x] ~@3 x ~@17>").gain(6.29)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@7 [~ x ~ x ~@4]!2 [~ x ~ x ~ x ~ x] ~@14>").gain(0.89)

stack(
  clarinet, clarinet_2, alto_sax, oboe, baritone_sax, trumpet, french_horn, bass, kick, rim, high_tom, crash, ride_bell,
  bongos, bongos_soft, bongos_2, whistle, whistle_soft, guiro, guiro_2, bell_tree
)