Strudelify

2-Part Invention No. 8 in F major, BWV 779

Bach Johann Sebastian

KeyF majorTempo110 bpm
0:00/0:00
// 2-Part Invention No. 8 in F major, BWV 779 — Bach Johann Sebastian
// 110 bpm, 3/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 34 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/3)

// 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 · piano · "A.PIANO 1"
const piano = note("<A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG@2>".pickRestart({
  A: "~@4 f4 ~@3 a4@2 ~@2 f4@2 ~@2 c5 ~@3 f4 ~@3",
  B: "f5@2 e5 d5 c5 d5 c5 bb4 a4 bb4 a4 g4, ~@4 f3 ~@3 a3 ~@3 f3 ~@3 c4 ~@3 f3 ~@3",
  C: "f4@2 [e4,a4] d4 [c4,c5] d4 [c4,a4] bb3 a3 bb3 a3 g3, ~@16 f5 ~@3 c5 ~@3", // A5 C F
  D: "[f3,a5] c6 bb5 c6 [c4,a5] c6 bb5 c6 [f4,a5] c6 bb5 c6, ~@4 a3 ~@7 a3 ~@7 c4 ~@3", // F
  E: "[a4,f5] [c5,a5] [bb4,g5] [c5,a5] [a4,f5] [c5,a5] [bb4,g5] [c5,a5] [a4,f5] [c5,a5] [bb4,g5] [c5,a5]", // Dm F Eb F Dm F Eb F …
  F: "[f4,d5]@2 [a4,f5]@2 [g4,e5]@2 [a4,f5]@2 [f4,d5]@2 [a4,f5]@2 [g4,e5]@2 [a4,f5]@2 [f4,d5]@2 [a4,f5]@2 [g4,e5]@2 [a4,f5] ~", // Dm C Dm C Dm C Dm
  G: "[d4,b4] f4 [e4,g4] f4 d4 f4 [e4,b4] f4 d4 f4 [e4,d5] f4, ~@8 d5 ~@7 f5 ~@7", // G Em E5 E7
  H: "[b3,g5] a5 [g3,g5] f5 [c4,e5] f5 [g3,e5] d5 [e4,c5] d5 c5 bb4, ~@20 c4 ~@3", // Em G C
  I: "[f4,a4] g4 [f4,d5] [e4,c5] [d4,b4] [e4,c5] [d4,b4] [c4,a4] [b3,g4] [c4,a4] [b3,g4] [a3,f4]", // F Dm C G C G F Em …
  J: "[g3,e4] f4 [c4,e4] [b3,d4] [a3,c4] b3 [a3,c5] [g3,b4] [f3,c5] g3 [f3,e4] e3", // C Bm Am G F5 Fmaj7
  K: "d3 e3 [d3,c5] c3 [g3,e4] f3 e3 f3 [g3,d4] ~ [g2,b4] ~, f4 ~@11 c5 ~@11", // D7 C G5 G
  L: "~@4 c3@2 ~@2 e3@2 ~@2 c3@2 ~@2 g3 ~@3 c3@2 ~@2, c5@3 ~@5",
  M: "c4@2 b3 a3 g3 a3 [g3,c5] f3 e3 f3 e3 d3, ~@4 c5 ~@3 e5 ~@7 g5 ~@3 c5 ~@3", // C5
  N: "c6@2 b5 a5 g5 a5 g5 f5 [c4,e5] f5 e5 d5, c3@2 ~@2 e3 ~@3 g3 ~@3 e3 ~@7 g3 ~@3", // C
  O: "c5@2 bb4@2 [gb3,c5]@2 a5@2 [eb4,c5]@2 a5@2 [gb3,bb4]@2 a5@2 [eb4,c5]@2 a5@2 gb3 ~ a5 ~, eb4 ~@4 a4", // Gbdim Cm Gb Cm
  P: "g3@2 [f3,g4] eb3 d3 eb3 [d3,g4] c3 bb2 c3 bb2 a2, bb4@2 ~@6 bb4 ~@7 d5 ~@3 g4 ~@3", // Fsus2 G5
  Q: "g5@2 f5 eb5 [bb3,d5] eb5 [g3,d5] c5 [d4,bb4] c5 [g3,bb4] a4, g2@2 ~@2 g3 ~@19", // Bb G5 Gm
  R: "g4@3 ~ [f4,bb4]@2 eb4@2 d4@2 eb4@2 d4@2 c4@2 bb3@2 c4@2 bb3@2 a3@2, ~@8 d5 ~@3 bb4 ~@3 g5 ~@3 d5 ~@3", // Bb5
  S: "[g3,bb5] f3 [g3,db5] e4 [g3,bb5] f3 [g3,db5] e4 [g3,bb5] e4 [e3,db5] e4", // Gm Gdim Gm Gdim Gm Dbm
  T: "[f3,d5] e3 [f3,a4] d4 [f3,f5] d4 [e3,d5] d4 [f3,a5] d4 [d3,f5] d4", // Dm F E7 F Dm
  U: "[bb3,g5] f5 [g3,g5] bb5 [e3,c5] bb5 [g3,d5] bb5 [c3,e5] bb5 c5 bb5, ~@20 e3 ~@3", // Eb G C G5 C
  V: "[a3,f5] e5 [f3,f5] a5 [d3,b4] a5 [f3,db5] a5 [b2,d5] a5 b4 a5, ~@20 d3 ~@3", // Dm F G Db Bm
  W: "[g3,e5] d5 [e3,e5] g5 [db3,a4] g5 [e3,b4] g5 [a2,db5] g5 [db3,a4] g5", // C E Gbm E5 A Gbm
  X: "[d2,f5]@2 d3@2 [c3,d5]@2 d3@2 [g2,bb4]@2 d3@2 a2@2 d3@2 [bb2,g4]@2 d3@2 g2@2 d3 ~, ~@12 d5 ~@7 f5 ~@3", // Dm Csus2 Gm Eb
  Y: "[c2,e5] c3 [bb2,c5] c3 [f2,a4] c3 [g2,c5] c3 [a2,f4] c3 [f2,eb5] c3", // C Bbsus2 F C5 Dm F7
  Z: "[bb2,d5] f5 eb5 f5 [f3,d5] f5 eb5 f5 [bb3,d5] f5 [f3,eb5] f5, ~@4 d3 ~@7 d3 ~@11", // Bb Dm Bb F7
  AA: "[d4,bb4] [f4,d5] [eb4,c5] [f4,d5] [d4,bb4] [f4,d5] [eb4,c5] [f4,d5] [d4,bb4] [f4,d5] [eb4,c5] [f4,d5]", // Gm Dm Cm Dm Gm Dm Cm Dm …
  AB: "[bb3,g4] [d4,bb4] [c4,a4] [d4,bb4] [bb3,g4] [d4,bb4] [c4,a4] [d4,bb4] [bb3,g4] [d4,bb4] [c4,a4] d4, ~@22 bb4 ~", // Eb Gm F Gm Eb Gm F Gm …
  AC: "[g3,e4]@2 bb3@2 [a3,c4]@2 bb3@2 [g3,g4]@2 bb3@2 [a3,e4]@2 bb3@2 [g3,bb4]@2 bb3@2 [a3,g4]@2 bb3 ~", // C Am G A5 Gm A7
  AD: "[e3,c5] d5 c5 bb4 [f3,a4] bb4 [c3,a4] g4 [a3,f4] g4 f4 eb4, ~@4 c3 ~@15 f3 ~@3", // C F Dm
  AE: "[bb3,d4] c4 [bb3,g4] [a3,f4] [g3,e4] [a3,f4] [g3,e4] [f3,d4] [e3,c4] [f3,d4] [e3,c4] [d3,bb3]", // Bb Eb Dm C Dm C Dm C …
  AF: "[c3,a3] bb3 [f3,a3] [e3,g3] f3 e3 [d3,f4] [c3,e4] [bb2,f4] c3 [bb2,a3] a2, ~@8 d3 ~@15", // F Em Dm C Bb5 Bbmaj7
  AG: "[[g2,bb3]@2 a2@2 [g2,f4]@2 f2@2 [c3,a3]@2 bb2@2 ~ [a2,f4]@2 bb2@2 [c3,g3]@3 ~@2 [c2,e4]@4 ~ [f2,a3,c4,f4]@12 ~@9]/2", // Gm G7 F Dm C5 C F
})).s("gm_piano").gain(0.3)

stack(piano)

More by Bach Johann Sebastian