Strudelify

Vom Himmel hoch da komm ich her BWV 769

J. S. Bach

KeyG majorTempo80 bpm
0:00/0:00
// Vom Himmel hoch da komm ich her BWV 769 — J. S. Bach
// 80 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: ch 2 "Organ" named as an organ, played on drawbar organ (its pan flute patch is not one); ch 4 "Organ" named as an organ, played on drawbar organ (its pan flute patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5905143; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 28 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "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.

// chords · drawbar organ · "Organ"
const drawbar_organ = note("<A B C D E F G H I J K L M N O P Q R S@2 T U@3 V W@3>".pickRestart({
  A: "g6@2 f#6 e6", B: "~@2 d7 c7 b6 a6 g6 f#6 g6 g7 f#7 e7 d7 c7 b6 a6, f#6 d6 e6 f#6",
  C: "g6@2 g5 a5 b5 c#6 d6 e6 d6 e6 d6 c6 b5 a5 g5 f#5, b6@2 a6 g6 d5@4, ~@2 f#6 ~",
  D: "g5 g6 f#6 e6 d6 c6 b5 a5 ~ e7 d7 c7 b6 a6 g6 f#6, b4 a4 [b4,g5] g4", // Em
  E: "~ d6 c#6 b5 a5 g5 f#5 e5 ~ a5 b5 c#6 ~ e5 f#5 g5, g6@3 [d6,f#6], b4@4 c#5@4 d5@5 ~@3", // D
  F: "~ d6 c6 b5 ~ b5 a5 g5 ~ c6 b5 a5 g5 a5 g5 f#5, e6 d6, a5@2 c6@2 f#5 d5 b5@2",
  G: "~ b5 a5 g5 ~ g5 f#5 e5 ~ a5 g5 f#5 e5 f#5 e5 d5, c6 b5, e5@2 a5@2 d#5 b4 g5@2",
  H: "~ g5 f#5 e5 f#5 a6 g6 f#6 e6 d6 c#6 b5 a5 g5 f#5 e5, a5 ~ g6@2, c#5 a4 d5@4 c#5@2",
  I: "~ d4 e4 f#4 g4 a4 b4 c5 d5 e5 [d5,b5] [c5,a5] b4 [a4,c6] [g4,b5] [f#4,a5], f#6 e6 f#6 ~, d5 d6@2 c6@2 ~ d6@2", // G F Am G F#m
  J: "e4 g4 f#4 e4 d4 c4 b3 a3 g3 b3 [c4,g6] d4 e4 f#4 [g4,d6] a4, e6@2 f#6@2 g6 ~ g6 ~, g5 c6 b5 a5 b5@2 ~@2", // C5 G5
  K: "b4 f#4 [g4,g5,b5] [a4,c6] b4 c5 [b4,e5] [a4,f#5] b5 d6 e6 f#6 g6 a6 b6 c7, d6 ~ [g5,d6] c6 g4@3 a4, ~@4 g5 f#5 e5@2", // G Am E5 D G5
  L: "~ d5 e5 f#5 g5 a5 b5 c6 ~ g4 [a4,g6] b4 c5 d5 [e5,d6] f#5, d7@2 b6 a6, b4 ~@3 d6 ~ g6 ~", // A7 E7
  M: "g5 f#5 [g5,b5] [a5,c6] b5 c6 b5 a5 g5 a5 g5 f#5 e5 a5 g5 a5, b6 ~ b6 [g6,c#7], d6 ~ [d6,g6] [c6,a6] b5 d6 ~@2", // G Am Gdim G5 F
  N: "d5 e5 f#5 g5 a5 b5 c#6 a5 d6 e6 [d6,f#7] c6 b5 c6 [b5,b6] a5, [f#6,d7] e6 f#6 d6, ~@6 f#7 ~", // D B D
  O: "g5 a5 [g5,g6] [f#5,a6] e5 f#5 e5 d#5 ~@2 g5@2 c6 ~ c6 ~, e6 f#6 e5@2, b6 ~ b6 a6 g6@2 ~@2", // G F#m
  P: "b5@2 c6 d6 e6 d6 c6@2 ~@2 d6@2 g6 ~ d5@2, d5 c5 [d5,b5] b4, ~@2 b6@4 a6@4 ~@4 g6 ~", // G
  Q: "[a5,e6]@2 f#6 g6 [f#5,a6] [g5,g6] a5 b5 c6 b5 [f5,b6]@2 b4@2 [e5,g#5]@2, c#5@2 d#5@2 [e5,e6] a5@2 ~, ~@2 a5@2 ~@2 f#6@2 ~@4 d7 ~ d7 ~", // A5 F#m G Fdim E
  R: "[a4,c7]@2 [b4,d7] [c5,e7] f7 [c6,e7] b5 a5 g#5 b6 a6 g6 [d5,f6] e6 [d5,c7] b6, a5@2 d5@2 e5 a4 ~@2, ~@3 d7 c7@3 f6", // Am Bm C Dm D7
  S: "[~ e6 [d5,f#6] [e5,g6] f5 [e5,c7] ~ a6 ~ c5 b4 a4 ~ b6 a6 g6 f#6 g6 [a6,d7] g6 f#6 g6 [f#6,a6] e6 d6 c#6 [d6,f#6] [e6,g6] f#6 e6 d6 c#6, c7@5 ~ [d5,b6]@4 ~@2 [b4,d7]@2 c#5@2 d5@8 b4@4 a4@4, c5@2 ~@2 a6@3 ~ g#6@2 [a6,c7]@3 ~ e7@4 ~@2 d7@2 ~@2 a6@2 ~@2 a6@2 g6@2]/2", // D Em C D5 F#m D Em G …
  T: "d6@2 f#5@2 b5 ~ g6@2 a5@2 [b5,c7] c6 d6 c6 c7 d7, [b4,f#6] g4 a4 b4, ~@6 b5 ~ c7 ~@3 b6@2 b5@2", // Cmaj7 B5
  U: "[[c5,e7] [b4,d7] c5 d5 e5 f#5 g5 a5 b5 c6 b5 a5 g5 f#5 e5 d#5 e5 f5 e5 d5 c5 b4 a4 g#4 a4 b5 a5 g5 f#5 e5 d5 c#5 d5 e5 d5 c5 b4 a4 g4 f#4 g4 a5 g5 f#5 [e5,e7] f#5 [g5,e7] a5, a5 a6@2 g6 f#6 b6@2 a6@2 g#6 a6 b6 e6 a6@2 g6@2 f#6 g6 a6 d6@2 ~@2, ~ c7 b6 e7@2 d#7 e7 f#7 b6 e7@2 d7@2 c#7 d7 e7 a6 d7@2 c7@2 b6 g6@2]/3", // C Bm E C
  V: "b5 c6 [b5,e7] [a5,f#7] g7 f#7 [c6,e7]@2 ~ e6 d6 c6 b5 [a5,c7] [g5,b6] [f#5,a6], f#6@4 e6@4 [f#6,d7]@5 ~@3, d7 ~ g5 ~@3 d6@2", // E5 D C Am G F#m D
  W: "[[e5,g6] [g5,b6] f#5 e5 d5 c5 [b4,d7] [a4,c7] [g4,g6,b6] ~ [e4,b5,g6]@2 ~ [c4,c6,a6]@2 [d4,a5,f#6]@2 ~@2 [g3,b5,g6]@16 ~@13, e6 f#6 ~@10, ~ e7@2 ~@21]/3", // Em G Bm Am G Em F D …
})).s("gm_drawbar_organ").gain(0.04).pan(0.4)

// chords · drawbar organ · "Organ"
const drawbar_organ_2 = note("<A B C D E F G H I J K L M N O P Q R S@2 T U@3 V W@3>".pickRestart({
  A: "c5@2 b4 a4", B: "~@2 g5 f5 e5 d5 c5 b4 c5 c6 b5 a5 g5 f5 e5 d5, b4 g4 a4 b4",
  C: "c5@2 c4 d4 e4 f#4 g4 a4 g4 a4 g4 f4 e4 d4 c4 b3, e5@2 d5 c5 g3@4, ~@2 b4 ~",
  D: "c4 c5 b4 a4 g4 f4 e4 d4 ~ a5 g5 f5 e5 d5 c5 b4, e3 d3 [e3,c4] c3", // C
  E: "~ g4 f#4 e4 d4 c4 b3 a3 ~ d4 e4 f#4 ~ a3 b3 c4, c5@3 [g4,b4], e3@4 f#3@4 g3@5 ~@3", // G
  F: "~ g4 f4 e4 ~ e4 d4 c4 ~ f4 e4 d4 c4 d4 c4 b3, a4 g4, d4@2 f4@2 b3 g3 e4@2",
  G: "~ e4 d4 c4 ~ c4 b3 a3 ~ d4 c4 b3 a3 b3 a3 g3, f4 e4, a3@2 d4@2 g#3 e3 c4@2",
  H: "~ c4 b3 a3 b3 d5 c5 b4 a4 g4 f#4 e4 d4 c4 b3 a3, d4 ~ c5@2, f#3 d3 g3@4 f#3@2",
  I: "~ g2 a2 b2 c3 d3 e3 f3 g3 a3 [g3,e4] [f3,d4] e3 [d3,f4] [c3,e4] [b2,d4], b4 a4 b4 ~, g3 g4@2 f4@2 ~ g4@2", // C Dm C Bm
  J: "a2 c3 b2 a2 g2 f2 e2 d2 c2 e2 [f2,c5] g2 a2 b2 [c3,g4] d3, a4@2 b4@2 c5 ~ c5 ~, c4 f4 e4 d4 e4@2 ~@2", // F5 C5
  K: "e3 b2 [c3,c4,e4] [d3,f4] e3 f3 [e3,a3] [d3,b3] e4 g4 a4 b4 c5 d5 e5 f5, g4 ~ [c4,g4] f4 c3@3 d3, ~@4 c4 b3 a3@2", // C Dm A5 G C5
  L: "~ g3 a3 b3 c4 d4 e4 f4 ~ c3 [d3,c5] e3 f3 g3 [a3,g4] b3, g5@2 e5 d5, e3 ~@3 g4 ~ c5 ~", // D7 A7
  M: "c4 b3 [c4,e4] [d4,f4] e4 f4 e4 d4 c4 d4 c4 b3 a3 d4 c4 d4, e5 ~ e5 [c5,f#5], g4 ~ [g4,c5] [f4,d5] e4 g4 ~@2", // C Dm Cdim C5 Dm
  N: "g3 a3 b3 c4 d4 e4 f#4 d4 g4 a4 [g4,b5] f4 e4 f4 [e4,e5] d4, [b4,g5] a4 b4 g4, ~@6 b5 ~", // G E Em
  O: "c4 d4 [c4,c5] [b3,d5] a3 b3 a3 g#3 ~@2 c4@2 f4 ~ f4 ~, a4 b4 a3@2, e5 ~ e5 d5 c5@2 ~@2", // C Bm
  P: "e4@2 f4 g4 a4 g4 f4@2 ~@2 g4@2 c5 ~ g3@2, g3 f3 [g3,e4] e3, ~@2 e5@4 d5@4 ~@4 c5 ~", // C
  Q: "[d4,a4]@2 b4 c5 [b3,d5] [c4,c5] d4 e4 f4 e4 [a#3,e5]@2 e3@2 [a3,c#4]@2, f#3@2 g#3@2 [a3,a4] d4@2 ~, ~@2 d4@2 ~@2 b4@2 ~@4 g5 ~ g5 ~", // D5 Bm C A#dim A
  R: "[d3,f5]@2 [e3,g5] [f3,a5] a#5 [f4,a5] e4 d4 c#4 e5 d5 c5 [g3,a#4] a4 [g3,f5] e5, d4@2 g3@2 a3 d3 ~@2, ~@3 g5 f5@3 a#4", // Dm Em F Gm G7
  S: "[~ a4 [g3,b4] [a3,c5] a#3 [a3,f5] ~ d5 ~ f3 e3 d3 ~ e5 d5 c5 b4 c5 [d5,g5] c5 b4 c5 [b4,d5] a4 g4 f#4 [g4,b4] [a4,c5] b4 a4 g4 f#4, f5@5 ~ [g3,e5]@4 ~@2 [e3,g5]@2 f#3@2 g3@8 e3@4 d3@4, f3@2 ~@2 d5@3 ~ c#5@2 [d5,f5]@3 ~ a5@4 ~@2 g5@2 ~@2 d5@2 ~@2 d5@2 c5@2]/2", // G Am Dm G5 Bm G Am C …
  T: "g4@2 b3@2 e4 ~ c5@2 d4@2 [e4,f5] f4 g4 f4 f5 g5, [e3,b4] c3 d3 e3, ~@6 e4 ~ f5 ~@3 e5@2 e4@2", // Fmaj7 E5
  U: "[[f3,a5] [e3,g5] f3 g3 a3 b3 c4 d4 e4 f4 e4 d4 c4 b3 a3 g#3 a3 a#3 a3 g3 f3 e3 d3 c#3 d3 e4 d4 c4 b3 a3 g3 f#3 g3 a3 g3 f3 e3 d3 c3 b2 c3 d4 c4 b3 [a3,a5] b3 [c4,a5] d4, d4 d5@2 c5 b4 e5@2 d5@2 c#5 d5 e5 a4 d5@2 c5@2 b4 c5 d5 g4@2 ~@2, ~ f5 e5 a5@2 g#5 a5 b5 e5 a5@2 g5@2 f#5 g5 a5 d5 g5@2 f5@2 e5 c5@2]/3", // F Em A F
  V: "e4 f4 [e4,a5] [d4,b5] c6 b5 [f4,a5]@2 ~ a4 g4 f4 e4 [d4,f5] [c4,e5] [b3,d5], b4@4 a4@4 [b4,g5]@5 ~@3, g5 ~ c4 ~@3 g4@2", // A5 G F Dm C Bm Em
  W: "[[a3,c5] [c4,e5] b3 a3 g3 f3 [e3,g5] [d3,f5] [c3,c5,e5] ~ [a2,e4,c5]@2 ~ [f2,f4,d5]@2 [g2,d4,b4]@2 ~@2 [c2,e4,c5]@16 ~@13, a4 b4 ~@10, ~ a5@2 ~@21]/3", // Am C Em Dm C Am Dm G …
})).s("gm_drawbar_organ").gain(0.03).pan(0.7)

stack(drawbar_organ, drawbar_organ_2)

More by J. S. Bach