Strudelify

Bach - Kyrie from Mass in B Minor - Woodwind Quintet

Johann Sebastian Bach

KeyD majorTempo50 bpm
0:00/0:00
// Bach - Kyrie from Mass in B Minor - Woodwind Quintet — Johann Sebastian Bach
// 50 bpm, 4/4, key D 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, 1/4 at bar 6, 4/4 at bar 6) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/3786271; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(50/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 · oboe · "Ob. da Cacc."
const oboe = note("<A B@2 C D E F@2 G H I J K L M N@2 O@2 P Q R S@2 T U V W X Y Z AA@2>".pickRestart({
  A: "~@7 b4@5", B: "[~@2 b4@7 ~ b4@7 a#4@7 ~ c#5@7 e5@7 ~ a4@7 c5@15 b4@7 ~ g4@15 ~@11]/2",
  C: "~@4 c#5@22 c#5@7 ~ b4@14", D: "~@8 c#5@7 ~ b4@7 a#4@7 ~ b4@10 c#5@7", E: "~ a#4@10 ~@5",
  F: "[f#4@8 g4@4 c#4@2 f#4@4 e4@2 d#4@2 f#4@2 b3@2 e4@3 d4 c#4 b3]/2", G: "f#4@4 ~@4 f#4@3 f#4 f#4@2 f#4@2",
  H: "g#4 d4 c#4 g#4 a4 d4 c#4 a#4", I: "b4 a4 g4@3 f#4 f4 f#4 f4@2 d5@2 c#5@2 b4@2",
  J: "a4@2 g#4 f#4 c#5@6 f#4@2 b4@2 a4@2", K: "g#4@5 c#4 f#4 e4", L: "d4@2 c#4@2 b3 g#4 a4 b4",
  M: "c#5 d5 c#5 f#4@2 f4@2 f#4", N: "[f#4@2 b4@2 a4@2 g#4@2 f#4@2 d5@2 c#5@2 b4@4 a4 b4 c5@6 e4@2 d#4@2 a4@2]/2",
  O: "[g4@4 ~@8 c#5@6 b4 c#5 d5@6 f#4@2 f4@2 b4@2]/2", P: "c#5 ~@2 d#5", Q: "e5 b4 a#4 c#5 f#4 b4 c#5 f4",
  R: "f#4 a#4 b4 d#4 e4 g#4 a4 e4", S: "[d4 f#4 b4@4 a#4 c#5@2 f#4 b4@4 a#4@2]/2", T: "b4@5 a4 g4 f#4",
  U: "e4@2 c#5@3 f#4 b4 a4", V: "g4@5 c#4 f#4 e4", W: "d4@5 a#4 b4 d4", X: "e4 a#4 b4 c#5 f#4 e4 d4 g4",
  Y: "f#4 e4@2 d4 e4 g4 f#4 e4", Z: "d4@6 g4@12 f#4@3 e4@3 d4@6 e4@6 d4@6 ~ c#4@5", AA: "[~ d4@55 ~@40]/2",
})).s("gm_oboe").gain(0.33).pan(0.7)

// other · bassoon
const bassoon = note("<A B@2 C D E F G H I J K L M N@2 O P Q R S T U V W X Y Z AA AB AC@3>".pickRestart({
  A: "~@7 b2@5", B: "[~@2 b2@7 ~ c#3@15 ~@15 d#3@22 d#3@7 ~ e3@15 ~@11]/2", C: "~@4 a#3@22 a#3@7 ~ b3@14",
  D: "~@8 a3@7 ~ g3@32", E: "~ f#3@10 ~@5", F: "b2 d3 e3 f#3", G: "b2@2 a3@2 g3 e3 f#3 g3",
  H: "f#3 e3 d3 c#3 b2@2 a2@2", I: "b2 c#3 f#2 e3", J: "d3 b2 b3 c#4 d4@2 f3@2", K: "f#3 g#3 a3 f#3 b3 a3 g#3 f#3",
  L: "f3 d#3 f3 c#3 f#3 e3 d3 c#3", M: "b2@2 c#3@2 d3@2 c#3 b2", N: "[a2 g#2 a2 b2 c#3@9 b2 c#3 c#2]/2",
  O: "f#2@2 f#3@4 g3 a3 b3@4 b2@4", P: "e3@6 d3 e3 f#3@4 f#2@4", Q: "b2@6 a2 b2 c#3@4 c#2@4",
  R: "f#2@6 g2 a2 b2@4 b3@4", S: "e3@2 ~ e3 d3@2 ~ c#3", T: "f#3@2 ~ b2 e3@2 ~ a2", U: "d3@2 ~ g3 c#3@2 ~ f#3",
  V: "b2@3 b2 b2@2 b2@2 c#3@2 g2@2 f#2@2 c#3@2", W: "d3@2 g2@2 f#2@2 d#3@2 e3 d3 c3@3 b2 a#2 b2",
  X: "a#2 g#2 a#2 f#2 b2 c#3 d3 b2", Y: "e3 f#3 g3 e3 a#3 g#3 a#3 f#3", Z: "b3 a3 g3 f#3 e3@2 f#3@2",
  AA: "g3@2 f#3 e3 d3 c#3 d3 e3", AB: "f#3@2 e3 d3 c#3@2 f#3@2 a#3@2 c#3@2 f#3@2 a#3@2",
  AC: "[f#3@2 e3@2 f#3@2 f#2@2 b2@27 ~@13]/3",
})).s("gm_bassoon").gain(0.3).pan(0.6)

// other · clarinet
const clarinet = note("<A B@2 C D E F G@2 H I@3 J K L M@2 N O P Q R S T U V W X Y Z AA@2>".pickRestart({
  A: "~@7 f#4@5", B: "[~@2 f#4@7 ~ e4@15 ~@22 a4@7 ~ f#4@7 d#4@7 ~ b3@15 ~@11]/2",
  C: "~@4 e4@7 f#4@7 ~ a#4@7 c#5@7 ~ d5@7 c#5@4 b4@3", D: "~ c#5@7 f#4@7 ~ b4@4 a4@3 g4@4 f#4@4 e4@5 d4@5 c#4@7",
  E: "~ c#4@10 ~@5", F: "b3 b4@2 a#4", G: "[b4@6 e4@3 a#4 b4 c#5 d5@2 c#5@2]/2", H: "b4@4 a4 g#4 a#4 c#5",
  I: "[f#5 a#4 b4@3 a4 g#4 c#5@2 b4 a4 c#5 d5 c#5 b4@4 c#5@4 b4 c#5]/3", J: "d5 g#4 a4 f#5 f5 b4 c#5 f4",
  K: "f#4@2 b4@2 a4@2 g#4@2 a4@2 b4 c#5 d5@2 c#5@2", L: "b4 f5 f#5 g#5 c#5 f#5@2 f5",
  M: "[f#5@6 e5@2 d#5@2 c#5@2 b4@6 c#5 d#5 e5@6 d5@2 c#5@2 b4 c#5]/2", N: "d5@2 e5 f#5 b4@2 b5@2 f5@2 f#5 g#5 c#5@4",
  O: "~ b4 a4 g#4 f#4@6 e5@2 d#5@2 f#5@2", P: "g#5@2 ~ g5 f#5@2 ~ g#5", Q: "a#5@2 ~ f#5 g#5@2 ~ e5",
  R: "f#5@2 ~ f#5 e5@2 ~ c#5", S: "d5 c#5", T: "b4@2 b5@2 a5@2 g5 f#5 g5@2 f#5@2 e5@2 d5@2",
  U: "c#5@6 b4 c#5 d5@2 e5@2 f#5@2 d5@2", V: "b4@6 a#4 b4 c#5@8", W: "d5 c#5 b4@3 c#4 d4 b4",
  X: "a#4 e5 d5 g4 f#4 e4 d4 c#4", Y: "d4@2 e4 f#4 g4@2 f#4@2 e4@2 a#4@2 b4@2 c#5@2",
  Z: "d5@9 c#5@3 c#5@9 b4@3 b4@6 c#5@6 b4@6 ~ a#4@5", AA: "[~ b4@55 ~@40]/2",
})).s("gm_clarinet").gain(0.3)

// other · french horn · "Horn"
const french_horn = note("<A B@2 C D E F G H I J K L@2 M N@2 O@2 P Q R S T U V W X Y Z AA AB@2>".pickRestart({
  A: "~@7 b3@5", B: "[~@2 a3@7 ~ g3@15 ~@15 f#3@7 a3@7 ~ d#4@7 f#4@7 ~ g4@15 ~@11]/2",
  C: "~@4 c#4@7 f#4@15 f#4@7 ~ f#4@7 g4@7", D: "~ a4@7 a3@7 ~ d4@7 e4@4 f#4@4 g4@5 f#4@5 g4@7", E: "~ a#3@10 ~@5",
  F: "d4@4 c#4 d4 e4@2", G: "d4@2 e4@2 f#4@4 e4@2 g4@4 f#4 e4", H: "c#5 c#4 d4 a#4 f#4 g#4 a4 f#4",
  I: "d4 b3 g#3 c#4 c#4@4", J: "b3 c#4 d4 a3 g#3@4", K: "a3 b3 c#4 a3 f#3@2 f4 f#4",
  L: "[g#4@3 f4 a4 g#4 f#4@3 b3 a3 a4 b4@2 a4 d4]/2", M: "c#4@4 ~@2 d4@2 c#4@2 d4 c#4 b3@2 a3@2",
  N: "[g#3@4 a3@2 f4@2 a4@2 f#4@2 c#4@6 f#3 g3 a3@2 g3@2 f#3@2 g3@2 f#3@2 e3 f#3]/2",
  O: "[g3@2 a3@2 b3@2 e4@2 a#3@2 b3 c#4 f#3@6 g#3 a#3 b3@6 a3@2 g#3@2 f#3 g#3]/2",
  P: "a3@6 b3 c4 d#3@2 g3@2 f#3@2 b3@2", Q: "b3@2 ~ e4 f#4@2 ~ f4", R: "c#4@2 ~ d#4 b3@2 ~ c#4",
  S: "a3@2 ~ b3 g3@2 ~ a#3", T: "f#4@6 e4 d4 g4@6 d4 c#4", U: "f#3@2 ~ b3 b3@2 ~ b3", V: "e4@2 ~ a#4 f#4 e4 d4 f#4",
  W: "g4 f#4 e4 g4 c#4@2 ~ a#4", X: "f#4@6 e4 f#4 g4@2 e4@2 d4@4", Y: "c#4@2 f#4 a#3 b3@2 ~ g4",
  Z: "f#4@2 g4 f#4 e4@2 d4@2 c#4@4 d4@2 e4@2", AA: "f#4@6 g4@12 f#4@6 f#4@6 c#4@6 d4@6 ~ e4@5", AB: "[~ f#4@55 ~@40]/2",
})).s("gm_french_horn").gain(0.3)

stack(oboe, bassoon, clarinet, french_horn)

More by Johann Sebastian Bach