Strudelify
Wachet auf cover art

1998 · Presenters’ Christmas Choice

Wachet auf

Bach Johann Sebastian

KeyG majorTempo68 bpm
0:00/0:00
// Wachet auf — Bach Johann Sebastian
// 68 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "STRINGS" string ensemble 1 (copy of ch 4 "A.PIANO 1" piano)
// note: Full arrangement: all 26 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(68/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, A@4 for four bars: edit a riff to change every repeat.

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~ A B A B C D E F G H I J K B L@2 M N O P@2 Q R S@2>".pickRestart({
  A: "g2@22 ~@2 g2@10 ~@2 b2@9 ~@3", B: "c3@9 ~@3 d3@10 ~@2 g2@13 ~@11", C: "b2@11 e2@11 ~@2 d2@11 c3@12 ~",
  D: "b2@11 ~ g2@11 d2@13 ~@12", E: "g2@10 ~@2 f#2@12 e2@11 ~ g2@12", F: "a2@12 b2@11 ~ c#3@12 a2@11 ~",
  G: "d3@11 ~ c#3@12 b2@12 a2@12", H: "g2@12 f#2@12 e2@11 ~ g2@9 ~@3",
  I: "f#2@2 ~@4 d2@2 ~@4 a2@3 ~@3 a1@3 ~@3 b1@3 ~@3 c#2@2 ~@4 d2@3 ~@3 f#2@3 ~@3",
  J: "g2@2 ~@4 e2@2 ~@4 a2@2 ~@4 a1@2 ~@4 d2@8 ~@4 d3@3 c3@2 b2@2 ~@2 a2@2 ~", K: "g2@22 ~@2 g2@11 ~ b2@11 ~",
  L: "[g2@22 ~@2 g2@10 ~@2 b2@9 ~@2 c3@10 ~@3 d3@11 ~ g2@12 ~@12]/2", M: "b2@12 e2@11 ~ d2@12 c3@11 ~",
  N: "b2@11 g2@10 ~@3 d3@3 ~@3 c3@3 ~@3 b2@5 ~@7", O: "c3@11 ~ b2@12 a2@11 ~ g2@11 ~",
  P: "[d2@12 e2@11 ~ f#2@11 d2@11 ~ g2@11 ~@2 b1@9 ~@3 c2@3 ~@3 b1@3 ~@3 a1@3 ~@3 g1@4 ~@2]/2",
  Q: "f#1@11 ~ a1@11 ~ d2@3 ~@3 e2@3 ~@3 d2@3 ~@3 c2@3 ~@3",
  R: "b1@3 ~@3 e2@3 ~@3 c2@3 ~@3 d2@3 ~@3 e2@2 ~@4 f#2@3 ~@3 g2@2 ~@5 b1@3 ~@2",
  S: "[c2@3 ~@3 a1@3 ~@4 d2@3 ~@4 d2@3 ~@6 g2@33 ~@34]/2",
})).s("gm_string_ensemble_1").gain(0.24)

// other · piano · "A.PIANO 1"
const piano = note("<~ A B A B C D E F G E H I A B A B C J K L M N O P@2>".pickRestart({
  A: "g2@7 ~ g2@4 b2@4", B: "c3 d3 g2 ~", C: "b2 e3 d3 c3", D: "b2@12 g2@12 d3@11 ~@13", E: "g3 f#3 e3 g3",
  F: "a3 b3 c#4 a3", G: "d4 c#4 b3 a3", H: "f#3@6 d3@5 ~ a3@5 ~ a2@5 ~ b2@6 c#3@6 d3@6 f#2@6",
  I: "g2@6 e2@6 a2@12 d3@9 ~@3 d3@2 ~ c3@2 ~ b2@3 a2@3", J: "b2@2 g2@2 d3 c3 b2@2", K: "c3 b2 a2 g2", L: "d3 e3 f#3 d3",
  M: "g3@11 ~ b2@12 c3@6 b2@6 a2@6 g2@6", N: "f#2@12 a2@12 d3@5 ~ e3@5 ~ d3@6 c3@6",
  O: "b2@6 e3@6 c3@6 d3@6 e3@6 f#3@6 g3@6 b2@5 ~", P: "[c3@7 a2@6 d3@7 ~ d2@7 g2@32 ~@36]/2",
})).s("gm_piano").gain(0.36)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<~ A@2 B C D@2 E@3 F G H A@2 B C I@2 J K ~@2 L M@2>".pickRestart({
  A: "[b3@2 c4@3 d4@3 ~@4 d4@6 c4@2 ~@4 e4@5 d4@2 ~@4 b3@6 ~ a3@2 ~@3 d4@3 b3@2 ~ c4@2 ~@41]/2",
  B: "b3@2 c4@3 d4@2 ~@5 d4@5 c4@3 ~@3 e4@6 d4@3 ~@3 b3@6 a3@2 ~@5", C: "d4@2 b3@2 ~ c4@2 ~@41",
  D: "[g3@12 g3@11 ~ a3@10 ~ a3@2 ~ b3@2 ~ c4@2 ~ a3@2 ~ b3@11 ~@32 d4@4 ~@2]/2",
  E: "[d4@2 ~ c#4@2 ~ d4@7 ~ c#4@2 ~ d4@17 ~ b3@2 ~ c#4@2 ~ d4@2 ~ b3@2 ~ c#4@2 ~ b3@2 ~ c#4@8 ~ b3@2 ~ c#4@8 ~ b3@2 ~ c#4@8 ~ d4@2 ~ e4@2 ~ c#4@2 ~ d4@3 ~ a3@2 ~ f#3 ~@2 a3 ~@2 d3@2 e3@2 ~ f#3@2 ~ g3@2 ~ a3@6 ~ d4@2 ~@3 d4@6 ~ a3@3 ~@3]/3",
  F: "b3 a3 g3 b3", G: "f#4@5 d4@2 ~@4 a3@2 ~@5 g3@2 f#3@2 ~ f#3 ~@2 b3@2 ~ a3@2 ~ g3@2 ~ a3@5 ~ f#3@2 ~@5",
  H: "g3@11 ~ g3@8 ~ f#3 ~@2 f#3@13 ~@11", I: "[g3@12 g3@11 ~ a3@10 ~ a3@2 ~ b3@2 ~ c4@2 ~ a3@2 ~ b3@11 ~@38]/2",
  J: "c4@5 ~ d4@11 ~ e4@5 ~ a3@3 g3@2 ~ a3@17 ~", K: "d4@5 e4@11 ~ f#4@5 ~@2 a3@2 ~ g3 ~ a3@17 ~@2",
  L: "g3@2 a3@3 ~ b3@3 g3@2 ~ a3@2 ~ b3@2 ~ c4@2 ~ a3@2 ~ b3@2 ~@4 d4@2 ~@4 d4@2 ~@4 b3@2 ~@4",
  M: "[c4@10 ~@3 c4@10 ~ b3@2 ~@2 b3@34 ~@34]/2",
})).s("gm_string_ensemble_1").gain(0.28).pan(0.3)

stack(string_ensemble_1, piano, string_ensemble_1_2)

More by Bach Johann Sebastian