Strudelify

trumpet voluntary

Henry Purcell

KeyG majorTempo114 bpm
0:00/0:00
// trumpet voluntary — Henry Purcell
// 114 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/832316; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 76 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B C D A B E F A B C D A B E F G H I J G H K L A B C D A B E F A B C D A B E F M@3 N O@2 P Q M@3 R O@2 P S ~@3 T A B
  U F ~@12
>`.pickRestart({
  A: "a#4@16 d5 c5 d5 c5 d5 c5 d5@2 c5@4 a#4@2 c5@2", B: "d5@3 d#5 d5@2 c5@2", C: "a#4@2 c5@2 d5@2 c5 a#4",
  D: "c5@8 f4@8 f4@5 ~@3 f4@8", E: "a#4@4 c5@4 a#4@4 c5@4 d5 c5 d5 c5 d5 c5 d5@2 c5@4 a#4@2 c5@2", F: "a#4@3 ~",
  G: "d5@16 f5 e5 f5 e5 f5 e5 f5@2 e5@4 d5@2 e5@2", H: "f5@3 g5 f5@2 d#5@2", I: "d5 a#4!2 f4", J: "a#4 f4 d4 a#3",
  K: "d5@2 c5 a#4!2 c5 d5 d#5", L: "c5@3 ~", M: "f4@2 d4 d#4 f4@2 a#4@2",
  N: "a#4 a4 a#4 a4 a#4 a4 a#4 a4 a#4 a4 a#4 a4 a#4@2 g4 a4 a#4@2 a4@2 g4@4 f4@8", O: "c5@2 a4 a#4 c5@2 d5@2",
  P: "c5@8 a#4@4 a4@4 a4 g4 a4 g4 a4 g4 a4@2 g4@4 f4@2 g4@2", Q: "f4@3 ~", R: "f4@6 f4!3 ~ f4 ~ f4 ~ f4 ~", S: "f4",
  T: "~@3 f4", U: "a#4@4 c5@4 a#4@4 c5@4 d5 c5 d5 c5 d5 c5 d5@2 c5@4 a#4@4",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@59 A ~@4 B C D E@2 F G H@2 I J@2>".pickRestart({
  A: "f4@3 ~", B: "~@15 a#4",
  C: "~@2 f4@2 ~ a#4@2 ~@2 d5@2 ~ a#4@2 ~@2 f4@2 ~ d4@2 ~@2 a#3@2 ~ d5@2 ~@2 a#4@2, ~@11 c5@2 ~@5 d#4@2 ~@12",
  D: "~ d5@2 ~@2 d5@2 ~ f5@2 ~@2 d#5@2 d5@2 c5@7 a#4@2 ~ f4@2 ~@2 a#4@2, ~@7 d#5@2 ~@23",
  E: "[~ d5@2 c5@2 a#4@2 ~ f4@2 d#4@2 d4@2 ~ a#3@2 ~@3 d#5@2 d5@2 d#5@2 f5@2 ~ d#5@2 d5@2 c5@5 ~@2 a#4@7 c5@2 ~ f4@2 ~@2 c5@2 ~ c5@2 d5@2 ~ a#4@2, ~@19 d5@2 ~@40 c5@2 ~]/2",
  F: "a4@2 a#4@2 c5@2 ~ f4@2 ~@2 a#4@2 ~ f4@2 ~@2 a#4@2 ~ a#4@2 c5@2 ~ d#5@2 d5@2 d#5@2, ~@25 d5@2 ~@5",
  G: "f5@7 f5@2 ~ f5@2 d#5@2 d5@2 ~ a#4@3 ~@12, ~@9 g5@2 ~@5 c5@2 ~@14",
  H: "[~@3 a#4@2 ~ a#4@2 c5@2 d5@2 ~ d#5@2 d5@2 c5@5 ~@2 a#4@7 c5@2 ~ f4@2 ~@2 c5@2 ~ c5@2 d5@2 c5@2 ~ a4@2 a#4@2 c5@2 ~ f4@2 ~@2 a#4@2 ~ f4@2, ~@5 c5@2 ~@5 f5@2 ~@33 a#4@2 ~@15]/2",
  I: "~@2 a#4@2 ~ a#4@2 c5@2 d5@2 ~ d5@2 d#5@2 f5@7 f5@2 g5@2 ~ d#5@2 d5@2, ~@11 d#5@2 ~@14 f5@2 ~@3",
  J: "[c5@2 a#4@3 ~@14 a#4@2 c5@2 ~ c5@2 d5@2 f5@2 ~ d5@2 c5@5 ~@2 a#4@7 ~@17, ~@23 a#4@2 ~@5 d#5@2 ~@32]/2",
})).s("gm_trumpet").gain(0.2)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  A B C D E B F G A B C D E B F G H I J K H L M N A B C D E B F G A B C D E B F G O@3 P Q@2 R S T@2 U V W X Y Z ~@3 AA E
  B F G ~@12
>`.pickRestart({
  A: "a#1 a#2 a2 f2", B: "a#2 f2 a#2 c2", C: "d2 c2 a#1 d2", D: "f2@3 d#2", E: "d2 a#2 a2 f2",
  F: "d2@2 d#2@2 f2@2 a2 a#2", G: "a#2 f2 a#1 ~", H: "a#2 f2 c2 g2", I: "f2@2 c2@2 f2 c2 f2 a2", J: "a#2 d3!2 a#2",
  K: "d3 a#2 f2!2", L: "f2@2 c2@2 a2 f2 c2 f2", M: "a#2@2 f2!2 f2@2 a#1@2", N: "f2@2 f2 g2 f2 d#2 d2 c2", O: "a#1@3 ~",
  P: "a2@2 f2@2 c2 ~ c2@2", Q: "f2@3 ~", R: "c3@2 a#2@2 g2@2 e2 f2", S: "c2@2 f2 g2 f2 d#2 d2 c2", T: "a#1 a#2",
  U: "a#1@4 a#2@3 d#2", V: "f2 f3", W: "f2 a2", X: "f2 c3", Y: "f3 d3 a#2 c3", Z: "a2", AA: "~@3 d#2",
})).s("gm_trombone").gain(0.4)

// bass · trombone · "Bass Trombone" · soft notes
const bass_soft = note("<~@56 A B C D ~@4 E F G H I J K L@2 G M N>".pickRestart({
  A: "a#1 a#2 a2 f2", B: "a#2 f2 a#2 c2", C: "d2 c2 a#1 d2", D: "f2@3 ~", E: "~@15 a#1", F: "~@26 a#1@3 ~@3",
  G: "~@23 a#1@3 ~@6", H: "~@19 f2@2 ~ f2@2 ~@2 a#2@2 ~ a#2@2 ~", I: "~ f2@3 ~@4 f2@7 a1@3 ~@14", J: "~@11 a#1@3 ~@18",
  K: "~@7 a#1@3 ~@22", L: "[~@3 f2@2 ~ f2@2 ~@2 a#2@2 ~ a#2@2 ~@2 f2@3 ~@4 a#2@7 a1@3 ~@25 a#1@3 ~@2]/2",
  M: "~@19 f2@2 ~@2 f2@2 ~ a#2@2 ~@2 a#2@2", N: "~ f2@3 ~@4 a#2@7 ~@17",
})).s("gm_trombone").gain(0.2)

stack(trumpet, trumpet_soft, bass, bass_soft)

More by Henry Purcell