Strudelify

Canon and Gigue in D major P.37

Lonnie L. Souder II

KeyE majorTempo108 bpm
0:00/0:00
// Canon and Gigue in D major P.37 — Lonnie L. Souder II
// 108 bpm, 4/4, key E 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/151529; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · "Bb Trumpet"
const trumpet = note(`<
  A@5 B@2 C@2 ~@8 D ~@7 E F G H I J E K@2 D L M N O P Q R ~@8 D ~@7 S@3 T@3 U@3 V@6 W@2
>`.pickRestart({
  A: "[f#5@18 e5@18 d5@9 f#5@9 a5@13 ~ b5@4 g5@4 ~ f#5@3]/5", B: "[~ e5@4 ~ g5@4 f#5@4 ~ e5@4 d5@4 ~ c#5@4 b4@4]/2",
  C: "[~ a4@4 g4@4 ~ d5@4 a5@18]/2", D: "f#5", E: "a4 b4 d5!4 b4 d5", F: "d5 e5 e5@6", G: "a4 b4 d5!5 e5",
  H: "c#5 b4 a4@6", I: "a4 b4 d5!5 b4", J: "d5@3 e5@2 f#5@3 d5@8", K: "[e5 a5@3]/2", L: "e5", M: "d5 f#5", N: "a5@3 b5",
  O: "g5 f#5 e5 g5", P: "f#5 e5 d5 c#5", Q: "b4 a4 g4 d5", R: "a5", S: "[f#5 e5]/3", T: "[d5@2 f#5@2 a5@3 b5]/3",
  U: "[g5 f#5 e5 g5 f#5 e5 d5 c#5]/3", V: "[b4 a4 g4 d5 a5@8 a5@4]/6", W: "[d6@3 ~]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet" · soft notes
const trumpet_soft = note("<~@18 A B ~ C@3 A ~@26 A B ~ C@3 A ~@17>".pickRestart({
  A: "e5", B: "d5", C: "d5/3",
})).s("gm_trumpet").gain(0.2)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note(`<
  A B@8 ~@12 C D C E F G H I J K F L@2 A E C D C A@2 E ~@12 C D C E M@3 N@3 O@3 P@2 Q@6
>`.pickRestart({
  A: "d5", B: "[~ c#5@9 b4@9 a4@9 b4@9 d5@9 d5@9 c#5@9]/8", C: "b4", D: "a4", E: "c#5", F: "a3 b3 d4!4 b3 d4",
  G: "d4 e4 e4@6", H: "a3 b3 d4!5 e4", I: "c#4 b3 a3@6", J: "a3 b3 d4!5 b3", K: "d4@3 e4@2 f#4@3 d4@8", L: "e4/2",
  M: "[d5@12 c#5@6 a4 b4 c#5 d5 e5 g5]/3", N: "[b4@8 a4@4 ~ a4 b4 c#5]/3",
  O: "[d5@6 e5@3 d5@3 c#5@3 b4@3 d5 ~ c#5 b4 ~ c#5 d5@3 a4@3 a4@6 f#5 ~ e5 d5 ~ c#5 b4 ~ a4 g4 ~ f#4]/3",
  P: "[g4@6 a4@6 g4@3 a4@3 b4 ~ a4 g4@3 c#5@6 a4 ~]/2", Q: "[b4 c#5 ~ d5 e5@36 f#5@48 ~@8]/6",
})).s("gm_trumpet").gain(0.2)

// other · trumpet · "Bb Trumpet"
const trumpet_3 = note("<A B@8 ~@16 C D E F G H C I@2 A@2 J@2 K J L A ~@16 M@3 N@3 O@3 P@8>".pickRestart({
  A: "a4", B: "[~ a4@9 f#4@9 f#4@9 g4@9 f#4@9 b4@9 a4@9]/8", C: "a3 b3 d4!4 b3 d4", D: "d4 e4 e4@6", E: "a3 b3 d4!5 e4",
  F: "c#4 b3 a3@6", G: "a3 b3 d4!5 b3", H: "d4@3 e4@2 f#4@3 d4@8", I: "e4/2", J: "f#4", K: "g4", L: "b4",
  M: "[a4 a4]/3", N: "[f#4 f#4]/3", O: "[g4 f#4]/3", P: "[b4@3 a4@6 d5@6 ~]/8",
})).s("gm_trumpet").gain(0.3)

// other · french horn · "F Mellophone"
const french_horn = note(`<
  A@2 B C@2 D@2 E@2 F G H I J K L M F G H I J K L M N O N O N P Q R@2 S T U V W X Y Z F G H I J K L M AA@6 AB AC AD@3
  AE@3 AF@3 AG@8
>`.pickRestart({
  A: "[f#4@4 ~ e4@4 f#4@4 ~ g4@4 a4@4 ~ b4@4 a4@4 ~]/2", B: "g4@4 f#4@4 ~ b4@4 a4@3",
  C: "[~@2 g4@4 a4@4 ~ g4@4 f#4@4 ~ e4@4 g4@4 ~ f#4@3]/2", D: "[~ e4@4 ~ g4@4 f#4@4 ~ e4@4 d4@4 ~ c#4@4 b3@4]/2",
  E: "[~ a3@4 g3@4 ~ d4@4 c#4@18]/2", F: "~@4 a4 b4 a4 g4 a4@6 b4@2", G: "a4 g4 f#4 e4@2 e4 d4@2",
  H: "e4@2 f#4@4 a3 a4", I: "a4 g4 f#4 e4@2 f#4 g4@2", J: "a4@2 d4@2 ~@2 f#4 g4", K: "g4 f#4 d4@2 ~@2 a3@2",
  L: "a4@5 b4 a4 g4", M: "e4", N: "f#4", O: "a4", P: "d4@3 e4@2 f#4@3 d4@8", Q: "f#3!6 e3!2", R: "a3/2",
  S: "f#4 e4 f#4 g4", T: "a4 b4 a4 g4", U: "f#4 b4 a4 g4", V: "a4 g4 f#4 e4", W: "g4 f#4 e4 g4", X: "f#4 e4 d4 c#4",
  Y: "b3 a3 g3 d4", Z: "c#4", AA: "f#3", AB: "d3", AC: "e3", AD: "[f#4 e4 f#4 g4 a4 b4 a4 g4]/3",
  AE: "[f#4 b4 a4 g4 a4 g4 f#4 e4]/3", AF: "[g4 f#4 e4 g4 f#4 e4 d4 c#4]/3",
  AG: "[b3@3 a3@3 g3@3 d4@3 c#4@24 f#4@24 ~@4]/8",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn_2 = note(`<
  A B@8 C D C E F@3 D C D C E F@3 D F G F D F H I J@2 K L C L M C M L C D C E F@3 D C D C E F@3 D N@3 O@3 P@3 Q@8
>`.pickRestart({
  A: "f#4@9 a4@7", B: "[~ a4@9 f#4@9 a4@9 g4@9 f#4@9 g4@9 a4@9]/8", C: "f#4", D: "e4", E: "c#4", F: "d4", G: "a3",
  H: "d4@3 e4@2 f#4@3 d4@8", I: "d4!6 f#4!2", J: "e4/2", K: "f#4 a4", L: "a4", M: "g4", N: "[f#4 a4 a4@2]/3",
  O: "[f#4 a4]/3", P: "[g4 f#4]/3", Q: "[g4@3 a4@6 d4@6 ~]/8",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn_3 = note(`<
  A B@8 A C A D E D F D A C A D E D F D A D A G A H I J@2 A C E D F K L M A C A D E D F D A C A D E D F D N@3 O@3 P@3
  Q@8
>`.pickRestart({
  A: "d4", B: "[~ c#4@9 b3@9 a3@9 g3@9 f#3@9 e3@9 a2@9]/8", C: "c#4", D: "a3", E: "b3", F: "g3", G: "e4",
  H: "d4@3 e4@2 f#4@3 d4@8", I: "f#3!6 e3!2", J: "a3/2", K: "f#3", L: "e3", M: "a2", N: "[d4 c#4]/3", O: "[b3 a3]/3",
  P: "[g3 f#3]/3", Q: "[e3@3 a2@6 f#3@6 ~]/8",
})).s("gm_french_horn").gain(0.3)

// bass · tuba · "Euphonium"
const bass = note(`<
  A B@8 C@6 A D C@6 A D A E A D A F G H@2 A E I J K A D E C@6 A D G L M N O P G D Q@3 R@3 S@3 T@8
>`.pickRestart({
  A: "d3", B: "[~ a2@9 b2@9 f#2@9 g2@9 d3@9 e3@9 a2@9]/8", C: "f#3", D: "e3", E: "a2", F: "d4@3 e4@2 f#4@3 d4@8",
  G: "a2 b2 d3!4 b2 d3", H: "e3/2", I: "b2", J: "f#2", K: "g2", L: "d3 e3 e3@6", M: "a2 b2 d3!5 e3", N: "c#3 b2 a2@6",
  O: "a2 b2 d3!5 b2", P: "d3 e3 f#3 d3@5", Q: "[d3 a2]/3", R: "[b2 f#2]/3", S: "[g2 d3]/3", T: "[e3@3 a2@6 d3@6 ~]/8",
})).s("gm_tuba").gain(0.4)

// bass · tuba · "Bb Tuba"
const bass_2 = note(`<
  A B@8 A C D E F A F C A C D E F A F C A C A G A H I J@2 A C D E F A F C A C D E F A F C A C D E F A F C K@3 L@3 M@3
  N@8
>`.pickRestart({
  A: "d2", B: "[~ a1@9 b1@9 f#1@9 g2@9 d2@9 g2@9 a1@9]/8", C: "a1", D: "b1", E: "f#1", F: "g2", G: "e2",
  H: "d2@3 e2@2 f#2@3 d2@8", I: "a1 b1 d2!4 b1 d2", J: "a1/2", K: "[d2 a1]/3", L: "[b1 f#1]/3", M: "[g2 d2]/3",
  N: "[g2@3 a1@6 d2@6 ~]/8",
})).s("gm_tuba").gain(0.4)

stack(trumpet, trumpet_soft, trumpet_2, trumpet_3, french_horn, french_horn_2, french_horn_3, bass, bass_2)