Strudelify

Bach - Arioso from Cantata BWV 156

Hudson2006pro

KeyE♭ majorTempo35 bpm
0:00/0:00
// Bach - Arioso from Cantata BWV 156 — Hudson2006pro
// 35 bpm, 4/4, key Eb 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, 2/4 at bar 9, 4/4 at bar 10) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5911385; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 30 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(35/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 · piano · "피아노"
const piano = note("<A B C B D E F G H I J K L M N O P Q@2 R S T U V B W X Y@3>".pickRestart({
  A: "~@5 [bb3,eb4,g4] [eb4,g4,bb4] eb3, ~@4 eb3@3 ~", // Eb
  B: "~ [bb3,f4] [d4,f4,bb4] d3 ~ [bb3,eb4] [ab3,eb4,ab4] c3, d3@3 ~ c3@3 ~", // Bb5 Bb Eb5 Ab5
  C: "~ [bb3,d4,f4] [d4,f4,bb4] bb2 ~ [bb3,eb4,g4] [eb4,g4,bb4] eb3, bb2@3 ~ eb3@3 ~", // Bb Eb
  D: "~ [d4,f4,ab4] [ab4,d5,f5] bb2 ~ [g4,bb4,eb5] [bb3,eb4,g4] d3, bb2@3 ~ eb3@3 ~", // Ddim Eb
  E: "~ [c4,eb4,g4] [eb4,g4,c5] bb2 ~ [eb4,f4,c5] [c4,eb4,f4] a2, c3@3 ~ a2@3 ~", // Cm F7
  F: "~ [bb3,d4,f4] [d4,f4,bb4] bb2 ~ [bb3,eb4] [eb3,bb3,d4] g2, bb2@3 ~ g2@3 ~", // Bb Eb5 Ebmaj7
  G: "~ [c4,f4] [f3,c4,eb4] a2 ~ [eb4,f4] [d4,f4,bb4] [d3,bb3,f4,a4], a2@3 ~ bb2@3 ~", // F5 F7 Ebsus2 Bb Bbmaj7
  H: "[eb3,bb3,eb4,g4] [c3,eb4,g4,c5,eb5] [f3,d4,f4,a4] [f2,c4,eb4] ~ [bb3,eb4,f4] [d4,bb4] [bb3,f4,ab4], ~@4 bb2@3 ~", // Eb Cm Dm F7 Bbsus4 Gm Bb7
  I: "~ [bb3,eb4,g4] [eb4,g4,bb4] eb3 ~ [bb3,f4] [d4,f4,bb4] d3, eb3@3 ~ d3@3 ~", // Eb Bb5 Bb
  J: "~ [bb3,eb4] [ab3,eb4,ab4] c3 ~ [d4,f4,ab4] [ab4,d5,f5] bb2, c3@3 ~ bb2@3 ~", // Eb5 Ab5 Ddim
  K: "~ [g4,bb4,eb5] [bb3,eb4,g4] d3 ~ [c4,eb4,g4] [eb4,g4,c5] bb2, eb3@3 ~ c3@3 ~", // Eb Cm
  L: "~ [eb4,f4,c5] [c4,eb4,f4] a2 ~ [bb3,d4,f4] [d4,f4,bb4] bb2, a2@3 ~ bb2@3 ~", // F7 Bb
  M: "~ [bb3,eb4] [eb3,bb3,d4] g2 ~ [c4,f4] [f3,c4,eb4] a2, g2@3 ~ a2@3 ~", // Eb5 Ebmaj7 F5 F7
  N: "~ [eb4,f4] [d4,f4,bb4] [d3,bb3,f4,a4] [eb3,bb3,eb4,g4] [c3,eb4,g4,c5,eb5] [f3,d4,f4,a4] [f2,c4,eb4], bb2@3 ~@5", // Ebsus2 Bb Bbmaj7 Eb Cm Dm F7
  O: "~ [bb3,eb4,f4] [d4,bb4] [bb3,f4,ab4] ~ [f4,bb4,db5] [db4,f4,bb4] bb2, bb2@3 ~ g2@3 ~", // Bbsus4 Gm Bb7 Bbm
  P: "~ [bb3,db4,g4] [g3,bb3,db4] db3 ~ [d4,g4,bb4] [g3,bb3,c4] c2, c3@3 ~ e2@3 ~", // Gdim Gm C7
  Q: "[~ [c4,f4,ab4] f3 ~@2 [f4,ab4,c5] ~ eb3 ~ [g4,bb4,f5] [db4,f4] [db3,ab3,e4,bb4] [c3,c4,f4,ab4] [bb2,d4,g4] [c3,f3,g3,c4] [c2,e3,bb3], f2@3 f3@2 ~@11, ~@2 [ab3,c4]@3 ~ [ab3,c4,f4]@3 ~@7, ~@4 eb3@3 ~ db3@3 ~@5]/2", // Fm Gm7 Db Bbm7b5 Fm Gm Csus4 C7 …
  R: "~ [f3,ab3,c4] [ab3,c4,f4] eb3 ~ [c4,f4,ab4] [f3,ab3,bb3] bb2, f2@3 ~ d3@3 ~", // Fm Bb7
  S: "~ [g3,bb3] [g3,bb3,eb4] db3 ~ [eb3,ab3,eb4] [ab3,eb4,f4] [eb3,bb3,eb4,g4], eb3@3 ~ c3@3 ~", // Gm Eb Ab5 Fm7 Eb
  T: "~ [c4,eb4,ab4] [eb4,ab4,c5] g2 ~ [eb3,ab3,eb4] [f3,ab3,d4] [eb2,g3,ab3,c4], ab2@3 ~ f2@3 ~", // Ab Ab5 Ddim Abmaj7
  U: "[f3,ab3,bb3] [ab3,f4,c5] [bb3,f4,bb4] [bb1,d4,f4,ab4] [eb2,bb3,eb4,g4] [g2,eb4,bb4,eb5] [c3,eb4,ab4,d5] [ab2,eb3,c4,eb4], d2@3 ~@5", // Bb7 Fm Bb5 Bb7 Eb Ab
  V: "~ [f3,bb3,eb4] [f3,bb3,d4] d3 ~ [bb3,eb4,g4] [eb4,g4,bb4] eb3, bb2@3 ~ eb3@3 ~", // Ebsus2 Bb Eb
  W: "~ [d4,f4,ab4] [ab4,d5,f5] bb2 ~ [bb3,eb4,g4] [g3,bb3,db4] [eb2,g3,bb3,eb4], bb2@3 ~ eb3@3 ~", // Ddim Eb Gdim Eb
  X: "~ [eb3,ab3,c4] [f3,c4,f4] [f2,gb3,c4,eb4] ~ [f3,eb4] [g3,bb3,d4] [bb2,ab3], ab2@3 ~ bb2@3 ~", // Ab F5 Cdim F7 Gm Bb7
  Y: "[~@2 [g3,eb4]@2 [bb3,eb4,bb4]@2 [f2,c4,eb4,a4]@2 [ab2,c4,eb4,bb4]@2 [ab2,c4,eb4]@2 [bb2,eb3,ab3,bb3]@3 [bb1,d3]@3 ~@2 [eb3,g3,bb3]@3 [g3,bb3,eb4]@16 ~@9, c3@4 ~@14 eb2@11 ~@19]/3", // Cm Eb5 F7 Ab Ebsus4 Bb Eb
})).s("gm_piano").gain(0.3)

stack(piano)