Strudelify
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: edit a riff to change every repeat.

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~ A B C D E F G H I J K L M N O@2 P Q R S@2 T U V@2>".pickRestart({
  A: "g2@22 ~@2 g2@10 ~@2 b2@9 ~@3", B: "c3@9 ~@3 d3@10 ~@2 g2@13 ~@11", C: "g2@22 ~@2 g2@9 ~@3 b2@9 ~@3",
  D: "c3@9 ~@3 d3@9 ~@3 g2@13 ~@11", E: "b2@11 e2@11 ~@2 d2@11 c3@12 ~", F: "b2@11 ~ g2@11 d2@13 ~@12",
  G: "g2@10 ~@2 f#2@12 e2@11 ~ g2@12", H: "a2@12 b2@11 ~ c#3@12 a2@11 ~", I: "d3@11 ~ c#3@12 b2@12 a2@12",
  J: "g2@12 f#2@12 e2@11 ~ g2@9 ~@3", K: "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",
  L: "g2@2 ~@4 e2@2 ~@4 a2@2 ~@4 a1@2 ~@4 d2@8 ~@4 d3@3 c3@2 b2@2 ~@2 a2@2 ~", M: "g2@22 ~@2 g2@11 ~ b2@11 ~",
  N: "c3@10 ~@2 d3@10 ~@2 g2@13 ~@11", O: "[g2@22 ~@2 g2@10 ~@2 b2@9 ~@2 c3@10 ~@3 d3@11 ~ g2@12 ~@12]/2",
  P: "b2@12 e2@11 ~ d2@12 c3@11 ~", Q: "b2@11 g2@10 ~@3 d3@3 ~@3 c3@3 ~@3 b2@5 ~@7", R: "c3@11 ~ b2@12 a2@11 ~ g2@11 ~",
  S: "[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",
  T: "f#1@11 ~ a1@11 ~ d2@3 ~@3 e2@3 ~@3 d2@3 ~@3 c2@3 ~@3",
  U: "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",
  V: "[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 C D E F G H F I J K C K C D L M N O P Q R@2>".pickRestart({
  A: "g2@11 ~ g2@6 b2@6", B: "c3@12 d3@12 g2@11 ~@13", C: "c3 d3 g2 ~", D: "b2 e3 d3 c3", E: "b2@12 g2@12 d3@11 ~@13",
  F: "g3 f#3 e3 g3", G: "a3 b3 c#4 a3", H: "d4 c#4 b3 a3", I: "f#3@6 d3@5 ~ a3@5 ~ a2@5 ~ b2@6 c#3@6 d3@6 f#2@6",
  J: "g2@6 e2@6 a2@12 d3@9 ~@3 d3@2 ~ c3@2 ~ b2@3 a2@3", K: "g2@7 ~ g2@4 b2@4", L: "b2@2 g2@2 d3 c3 b2@2",
  M: "c3 b2 a2 g2", N: "d3 e3 f#3 d3", O: "g3@11 ~ b2@12 c3@6 b2@6 a2@6 g2@6",
  P: "f#2@12 a2@12 d3@5 ~ e3@5 ~ d3@6 c3@6", Q: "b2@6 e3@6 c3@6 d3@6 e3@6 f#3@6 g3@6 b2@5 ~",
  R: "[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 I@2 J C K@2 L M ~@2 N O@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: "[b3@2 c4@3 ~ d4@3 ~@3 d4@6 c4@2 ~@4 e4@5 d4@2 ~@4 b3@6 ~ a3@2 ~@3 d4@3 b3@2 ~ c4@2 ~@41]/2",
  J: "b3@2 c4@3 d4@2 ~@5 d4@6 c4@3 ~@2 e4@6 d4@3 ~@3 b3@6 a3@2 ~@5",
  K: "[g3@12 g3@11 ~ a3@10 ~ a3@2 ~ b3@2 ~ c4@2 ~ a3@2 ~ b3@11 ~@38]/2", L: "c4@5 ~ d4@11 ~ e4@5 ~ a3@3 g3@2 ~ a3@17 ~",
  M: "d4@5 e4@11 ~ f#4@5 ~@2 a3@2 ~ g3 ~ a3@17 ~@2",
  N: "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",
  O: "[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