Strudelify

halftime stand up get crunk

Jack Nemec

KeyE minorTempo120 bpm
0:00/0:00
// halftime stand up get crunk — Jack Nemec
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 12 "Mellophone" french horn (copy of ch 3 "Alto Saxophone" alto sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5889658; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · piccolo
const piccolo = note("<~@10 A B C D E F ~@10 A B C D E F G>".pickRestart({
  A: "g7!6", B: "~@2 g7!2 e7 g7 ~@2 g7!2 e7 g7", C: "g6@5 e6@4 a6@2 g6", D: "~ e6@5", E: "g5@5 e5@4 a5@2 g5",
  F: "~@2 e6@6 g6!2 g#6 a6", G: "a6",
})).s("gm_piccolo").gain(0.4)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@8 A@2 B C D E D F ~@8 A@2 B C D E D F G>".pickRestart({
  A: "g4!6", B: "[g4,g5]!6", C: "~@2 [d5,g5]!2 [b4,e5] [d5,g5] ~@2 [d5,g5]!2 [b4,e5] [d5,g5]", D: "g5@5 e5@4 a5@2 g5",
  E: "~ e5@5", F: "~@2 e5@6 g5!2 g#5 a5", G: "[e5,a5]",
})).s("gm_clarinet").gain(0.4)

// chords · alto sax · "Alto Saxophone"
const alto_sax = note("<~@8 A B C D ~@3 E ~@8 A B C D F G H E I>".pickRestart({
  A: "a3!6 a3@3 c4@3", B: "[a3,e4]!6 [a3,e4]@3 [c4,g4]@3", C: "[e4,a4]!6 [e4,a4]@3 [e4,c5]@3", D: "~ [a3,a4] ~ [a3,a4]",
  E: "~@4 g4@2 c4@3 ~ g4@2 c4@3 ~ g4@2 c4@6", F: "a3@5 e4@4 g4@2 a4", G: "~ c5@5", H: "a4@5 e4@4 d4@2 c4", I: "a4",
})).s("gm_alto_sax").gain(0.5)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@8 A B C ~ A B C D E F E G E F H G A B C ~ A B C D I>".pickRestart({
  A: "a3@3 ~@2 e3@3 ~ g3@3", B: "~@4 e3@2 g3@3 ~ e3@2 g3@3 ~ e3@2 c3@6", C: "a3@3 ~@2 e3@3 ~ c3@3",
  D: "~@4 g4@2 c4@3 ~ g4@2 c4@3 ~ g4@2 c4@6", E: "e3@4 ~ e3@5 e3@2 ~@4 e3@2 d3@4 ~ d3", F: "~@5 b2 d3@2 b2 d3@3",
  G: "~@5 d3 g3@2 f#3@2 f3@2", H: "a3@4 ~ a3@5 a3@2 ~@4 a3@2 g3@4 ~ g3", I: "e4",
})).s("gm_tenor_sax").gain(0.45)

// other · trumpet · "B♭ Trumpet 1"
const trumpet = note("<~@9 A B C D E D F ~@9 A B C D E D F G>".pickRestart({
  A: "~@2 g4!4", B: "g5!6", C: "~@2 g5!2 e5 g5 ~@2 g5!2 e5 g5", D: "g5@5 e5@4 a5@2 g5", E: "~ e5@5",
  F: "~@2 e5@6 g5!2 g#5 a5", G: "[e5,a5]",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet 1" · soft notes
const trumpet_soft = note("<~@9 [g4!2 ~@4] ~@15 [g4!2 ~@4] ~@7>").s("gm_trumpet").gain(0.2)

// other · trumpet · "B♭ Trumpet 2"
const trumpet_2 = note("<~@9 A B C D E D F ~@9 A B C G H G I J>".pickRestart({
  A: "~@2 g4!4", B: "g4!6", C: "~@2 d5!2 b4 d5 ~@2 d5!2 b4 d5", D: "g4@5 e4@4 a4@2 g4", E: "~ e4@5",
  F: "~@2 e4@6 g4!2 g#4 a4", G: "d5@5 b4@4 e5@2 d5", H: "~ b4@5", I: "~@2 b4@6 g4!2 g#4 a4", J: "c5",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet 2" · soft notes
const trumpet_soft_2 = note("<~@9 [g4!2 ~@4] ~@15 [g4!2 ~@4] ~@7>").s("gm_trumpet").gain(0.2)

// other · trumpet · "B♭ Trumpet 3"
const trumpet_3 = note("<~@8 A@3 B C D C E ~@8 A@3 B F G H I J>".pickRestart({
  A: "g4!6", B: "~@2 g4!2 e4 g4 ~@2 g4!2 e4 g4", C: "g4@5 e4@4 a4@2 g4", D: "~ e4@5", E: "~@2 e4@6 g4!2 g#4 a4",
  F: "a3@5 e4@4 g4@2 a4", G: "~ c5@5", H: "a4@5 e4@4 d4@2 c4", I: "~@2 g4@6 g4!2 g#4 a4", J: "a4",
})).s("gm_trumpet").gain(0.4)

// bass · tuba · "Euphonium"
const bass = note("<A B C ~ A B C ~ A B C ~ A B C D E F E G E F H G A B C ~ A B C D I>".pickRestart({
  A: "a2@3 ~@2 e3@3 ~ g3@3", B: "~@4 e3@2 g3@3 ~ e3@2 g3@3 ~ e3@2 c3@6", C: "a2@3 ~@2 e3@3 ~ c3@3",
  D: "~@4 c3@2 c3@3 ~ c3@2 c3@3 ~ c3@2 c3@6", E: "e3@4 ~ e3@5 e3@2 ~@4 e3@2 d3@4 ~ d3", F: "~@5 b2 d3@2 b2 d3@3",
  G: "~@5 d3 g3@2 f#3@2 f3@2", H: "a3@4 ~ a3@5 a3@2 ~@4 a3@2 g3@4 ~ g3", I: "e3",
})).s("gm_tuba").gain(0.5)

// bass · tuba
const bass_2 = note("<A B C ~ A B C ~ A B C ~ A B C D E F E G E F E G H B C ~ A B C D I>".pickRestart({
  A: "a1@3 ~@2 e2@3 ~ g2@3", B: "~@4 e2@2 g2@3 ~ e2@2 g2@3 ~ e2@2 c2@6", C: "a1@3 ~@2 e2@3 ~ c2@3",
  D: "~@4 g2@2 g2@3 ~ g2@2 g2@3 ~ g2@2 g2@6", E: "a2@4 ~ a2@5 a2@2 ~@4 a2@2 g2@4 ~ g2", F: "~@5 e2 g2@2 e2 g2@3",
  G: "~@5 g2 c3@2 b2@2 a#2@2", H: "[a1,a2]@3 ~@2 e2@3 ~ g2@3", I: "[a1,a2]",
})).s("gm_tuba").gain(0.5)

stack(piccolo, clarinet, alto_sax, tenor_sax, trumpet, trumpet_soft, trumpet_2, trumpet_soft_2, trumpet_3, bass, bass_2)