Strudelify

Chronologie, Part 2

Jean Michel Jarre

KeyD♭ majorTempo162 bpm
0:00/0:00
// Chronologie, Part 2 — Jean Michel Jarre
// 162 bpm, 4/4, key Db 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, 8/4 at bar 34, 4/4 at bar 60, 8/4 at bar 161, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 219 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(162/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@8 B@8 ~ C D C E F G F G H I@3 J@8 K@2 L@2 M@2 K@2 L@2 M@2 K@2 L@2 N@2 O P Q R S T U V W X Y Z AA AB AC AD W AE AF AG
  AH AI AJ AK AL AM AN AO AP AQ AR AS@5 AT AU AV AW AX AY AZ BA BB BC BD BE AX BF AZ BG BH@2 BI BJ BK@2 BI BL BM BN BO@2
  C D C E F BP BQ@4 BR AM AN AO AP AQ AR BS@5 AT BT BU AW AX BV AZ BA BW BX BY BZ AX CA AZ CB CC@8 ~@2 CD@6 CE@4 CF CG
  CH CI@2 CJ CK CL CM CN CO CP CQ CR CS CT CU CV CW CX CY CJ CK CL CU CN CZ CP DA CJ DB CL CU DC CW CP DD@6
>`.pickRestart({
  A: "[db6@2 bb6@2 gb6@28 c6@2 ab6@2 f6@27 ~ b5@2 gb6@2 eb6@28 bb5@2 f6@2 db6@28, [bb2,bb3]@63 ~]/8", // Bb
  B: "[db6@2 bb6@2 gb6@28 c6@2 ab6@2 f6@28 b5@2 gb6@2 eb6@27 ~ bb5@2 f6@2 db6@28, [bb2,bb3]]/8", C: "[bb2,bb5,db6]",
  D: "[a5,c6]@2 [bb5,db6] [c6,eb6]@2 [bb5,db6] [a5,c6]@2, f3", // Am Bbm Cm Bbm Am
  E: "[a5,c6]@2 [bb5,db6] [c6,eb6]@2 [db6,f6] [eb6,gb6]@2, f3", F: "[db3,db6,f6]",
  G: "[c6,eb6]@2 [db6,f6] [eb6,gb6]@2 [db6,f6] [c6,eb6]@2, ab3", // Cm Db Ebm Db Cm
  H: "[eb6,gb6]@4 [c6,eb6]@3 ~ [db6,f6]@4 [bb5,db6]@4, f3", // Ebm Cm Db Bbm
  I: "[[c6,eb6]@4 [a5,c6]@4 [bb5,db6]@3 ~ [g5,bb5]@4 [a5,c6]@32, f3]/3", // Cm Am Bbm Gm Am
  J: "[[bb4,db5,f5] [bb4,db5,gb5] [bb4,eb5,gb5] [bb4,db5,f5], bb2]/8", K: "[bb4,db5,gb5]/2", L: "[bb4,eb5,gb5]/2",
  M: "[bb4,db5,f5]/2", N: "[~@14 g3 a3, [bb4,db5,f5], ~@26 f3@5 ~]/2",
  O: "bb1 ~ bb2 ~ [bb5,db6,gb6]@2 bb2 ~ [bb5,db6,f6]@2 bb2 ~ bb1 ~ bb2 ~, bb3@4 [bb1,bb2] ~@3 bb1 ~@7", // Gb Bbm Bb
  P: "[bb2,bb5,db6,f6]@2 bb2@2 bb1 ~ [bb5,db6,gb6]@2 bb1 ~ [bb5,db6,f6]@2 bb2@2 db3@2, bb1 ~@5 bb2 ~@3 bb2 ~ bb1 ~ bb2 ~", // Bbm Gb Bbm
  Q: "[ab1,ab5,c6,f6] ~ [ab2,ab5,c6,f6] ~ [ab2,ab5,c6,eb6]@2 ab2 ~ ab1 ~ [ab5,c6,f6]@2 ab1 ~ ab2 ~, ab2@2 ~@2 ab1 ~@5 ab2 ~@5", // Fm Ab Fm
  R: "[ab2,ab5,c6,eb6]@2 ab2 ~ ab1 ~ [ab5,c6,f6]@2 ab1 ~ ab2 ~ [ab2,ab5,c6,eb6]@2 eb3@2, ab1 ~@5 ab2 ~@5 ab1 ~ ab2 ~", // Ab Fm Ab
  S: "[gb2,gb5,bb5,eb6]@2 gb2 ~ [gb2,gb5,bb5,db6]@2 gb2 ~ gb1 ~ [gb5,bb5,eb6]@2 gb1 ~ gb2 ~, gb1 ~@3 gb1 ~@5 gb2 ~@5", // Ebm Gb Ebm
  T: "[gb1,bb5,db6] ~ [gb2,gb5,bb5,db6] ~ [gb1,gb5,bb5,db6] ~ [gb5,bb5,eb6]@2 gb1 ~ [gb5,bb5,db6]@2 gb2@2 db3@2, [gb2,gb5]@2 ~@4 gb2 ~@3 gb2 ~ gb1 ~ gb2 ~", // Gb Ebm Gb
  U: "f2@2 f2@2 [f5,bb5,db6]@2 f2 ~ f1 ~ [f5,bb5,c6]@2 f1 ~ f2 ~, f1 ~@3 f1 ~@5 f2 ~@5", // Bbm Fsus4
  V: "[f2,f5,bb5,c6]@2 f2@2 f1 ~ [f5,bb5,db6]@2 f1 ~ [f5,c6,eb6]@2 f2@2 [a2,bb5,db6,f6]@2, f1 ~@5 f2 ~@3 f2 ~ f1 ~ f2 ~", // Fsus4 Bbm F7 Bbm
  W: "bb2@2 bb2@2 [bb5,db6,gb6]@2 bb2 ~ [bb5,db6,f6]@2 bb2 ~ bb1 ~ bb2 ~, bb1 ~@3 bb1 ~@3 bb1 ~@7", // Gb Bbm
  X: "[bb2,bb5,db6,f6]@2 [bb2,bb5,db6,f6]@2 bb1 ~ [bb5,db6,gb6]@2 bb1 ~ [bb5,db6,f6]@2 bb2@2 db3@2, bb1 ~@5 bb2 ~@3 bb2 ~ bb1 ~ bb2 ~", // Bbm Gb Bbm
  Y: "[ab1,ab5,c6,f6] ~ [ab5,c6,f6] ~ [ab5,c6,eb6]@2 ab2 ~ ab1 ~ [ab5,c6,f6]@2 ab1 ~ ab2 ~, ab2@2 ab2@2 ab1 ~@5 ab2 ~@5", // Fm Ab Fm
  Z: "[ab2,ab5,c6,eb6]@2 ab2@2 ab1 ~ [ab5,c6,f6]@2 ab1 ~ [ab5,c6,eb6]@2 ab2@2 eb3@2, ab1 ~@5 ab2 ~@3 ab2 ~ ab1 ~ ab2 ~", // Ab Fm Ab
  AA: "[gb1,gb5,bb5,eb6] ~ [gb5,bb5,eb6] ~ [gb5,bb5,db6]@2 gb2 ~ gb1 ~ [gb5,bb5,eb6]@2 gb1 ~ gb2 ~, gb2@2 gb2@2 gb1 ~@5 gb2 ~@5", // Ebm Gb Ebm
  AB: "[gb2,gb5,bb5,db6]@2 gb2@2 gb1 ~ [gb5,bb5,eb6]@2 gb1 ~ [gb5,bb5,db6]@2 gb2@2 db3@2, gb1 ~@5 gb2 ~@3 gb2 ~ gb1 ~ gb2 ~", // Gb Ebm Gb
  AC: "[f2,f5,bb5,db6]@2 f2@2 f1 ~ [f5,bb5,c6]@2 f1 ~ f2 ~ f1 ~ f2 ~, f1 ~@5 f2 ~@9", // Bbm Fsus4
  AD: "[f1,bb5,c6] ~ [f2,f5,bb5,c6]@2 f1 ~ [f5,bb5]@2 f1 ~ [f5,c6,eb6]@2 f2@2 [a2,bb5,db6,f6]@2, [f2,f5]@2 ~@4 [f2,db6] ~@3 f2 ~ f1 ~ f2 ~", // Fsus4 Bb5 F7 Bbm F Db
  AE: "bb5@2 c3 ~ c2 ~ [bb5,db6,f6]@2 c2 ~ [bb5,db6,f6]@2 bb2@2 [f3,bb5,db6,f6]@2, [bb2,db6,f6]@4 ~@2 c3 ~@3 c3 ~@3 c3 ~, c2 ~@11 c2 ~@3", // Bbm
  AF: "db3@2 db3@2 [bb5,db6,gb6]@2 db3 ~ [bb5,db6,f6]@2 db3 ~ db2 ~ db3 ~, db2 ~@3 db2 ~@3 db2 ~@7", // Gb Bbm
  AG: "[d3,bb5,d6,f6,ab6]@2 d3@2 d2 ~ [bb5,d6,f6,ab6]@2 d2 ~ [bb5,db6,gb6,bb6]@2 d3@2 [bb3,bb5,eb6,gb6]@2, d2 ~@5 d3 ~@3 d3 ~ d2 ~ d3 ~", // Bb7 Gb Ebm
  AH: "eb3@2 eb3 ~ [bb5,f6,ab6]@2 eb3 ~ [bb5,eb6,gb6]@2 eb3 ~ eb2 ~ eb3 ~, eb2 ~@3 eb2 ~@3 eb2 ~@7", // Bb7 Ebm
  AI: "[e3,db6,e6,g6,bb6]@2 e3 ~ e2 ~ [db6,e6,g6,bb6]@2 e2 ~ [db6,e6,g6,bb6]@2 e3@2 [c4,a5,c6,eb6,f6]@2, e2 ~@5 e3 ~@3 e3 ~ e2 ~ e3 ~", // Edim Dbdim F7
  AJ: "f3@2 f3@2 [a5,c6,eb6,gb6]@2 f3 ~ [a5,c6,eb6,f6]@2 f3 ~ f2 ~ f3 ~, f2 ~@3 f2 ~@3 f2 ~@7", // Adim F7
  AK: "f3@2 f3@2 f2 ~ [a5,db6]@2 f2 ~ [a5,c6]@2 g2@2 a2@2, [a5,c6,eb6,f6] ~@3, f2 ~@5 f3 ~@3 f3 ~ f2 ~ f3 ~", // A Am F7
  AL: "[bb2,bb4,bb5] [db3,db5,db6] [c3,c5,c6] [eb3,eb5,eb6], f2 ~@15", // Bb Db C Eb
  AM: "[db3,db5,db6] [f3,f5,f6] [eb3,eb5,eb6] [gb3,gb5,gb6]", AN: "[f3,f5,f6] [db3,db5,db6] [eb3,eb5,eb6] [c3,c5,c6]",
  AO: "[db3,db5,db6]@2 [bb2,bb4,bb5]@2 [c3,c5,c6]@2 [bb2,bb4,bb5] [a2,a4,a5]", // Db Bb C Bb A
  AP: "[bb1,bb2,bb4,bb5] [db2,db3,db5,db6] [c2,c3,c5,c6] [eb2,eb3,eb5,eb6]", // Bb Db C Eb
  AQ: "[db2,db3,db5,db6] [f2,f3,f5,f6] [d2,d3,d5,d6] [f2,f3,f5,f6]", // Db F D F
  AR: "[eb2,eb3,eb5,eb6] [gb2,gb3,gb5,gb6] [e2,e3,e5,e6] [g2,g3,g5,g6]", // Eb Gb E G
  AS: "[f3@4 ~@4 f3 ~@3 f3 ~@3 [bb5,db6]@3 ~ f3 ~ [f5,a5,c6]@2 f3 ~ [f5,bb5,db6] ~ [f5,c6,eb6]@3 ~ f3 ~@3 [f5,f6]@3 ~ f3 ~ [f5,eb6]@2 f3 ~@3 [f5,bb5,db6]@3 ~ f3 ~ [f5,a5,c6]@2 f3 ~ [f5,bb5,db6] ~ [f5,c6,eb6]@3 ~ f3 ~@3 f3 ~@3 f3 ~@3 bb2@2 f3@2, f2, [f5,f6]@16 f3 ~@11 f3 ~@7 f3 ~@5 c6 ~@5 f1@32, ~@48 f3 ~@11 f3 ~@19]/5", // Bbm F Bbm F7 F F7 Bbm F …
  AT: "bb2@2 bb2@2 [bb2,bb5,db6,ab6]@2 bb2@2 [bb5,db6,gb6]@2 bb2 ~ bb1 ~ bb2 ~, bb1 ~@3 bb1 ~@3 bb1 ~@7", // Bbm7 Gb
  AU: "[bb2,bb5,db6,f6]@2 bb2@2 bb1 ~ [bb5,db6,ab6]@2 bb1 ~ [bb5,db6,gb6]@2 bb2@2 [f3,ab5,c6,f6]@2, bb1 ~@5 bb2 ~@3 bb2 ~ bb1 ~ bb2 ~", // Bbm Bbm7 Gb Fm
  AV: "ab2@2 ab2@2 [ab2,ab5,db6,gb6]@2 ab2@2 [ab5,c6,f6]@2 ab2 ~ ab1 ~ ab2 ~, ab1 ~@3 ab1 ~@3 ab1 ~@7", // Dbsus4 Fm
  AW: "[ab2,ab5,c6,eb6]@2 ab2@2 ab1 ~ [ab5,c6,gb6]@2 ab1 ~ [ab5,c6,f6]@2 ab2@2 [eb3,gb5,bb5,eb6]@2, ab1 ~@5 ab2 ~@3 ab2 ~ ab1 ~ ab2 ~", // Ab Ab7 Fm Ebm
  AX: "gb2@2 gb2@2 [gb2,gb5,bb5,eb6]@2 gb2@2 [gb5,bb5,db6]@2 gb2 ~ gb1 ~ gb2 ~, gb1 ~@3 gb1 ~@3 gb1 ~@7", // Ebm Gb
  AY: "gb2@2 gb2@2 [bb5,db6]@2 gb2 ~ gb1 ~ [gb5,bb5,eb6]@2 [gb2,bb5,db6]@2 db3@2, [gb5,bb5,eb6] ~@3, gb1 ~@3 gb1 ~@5 gb2 ~ gb1 ~ gb2 ~", // Bbm Ebm Gb Ebm
  AZ: "f2@2 f2@2 [f2,f5,bb5,db6]@2 f2@2 f1 ~ [f5,bb5,c6]@2 f1 ~ f2 ~, f1 ~@3 f1 ~@5 f2 ~@5", // Bbm Fsus4
  BA: "[f1,f5,a5,c6] ~ [f5,a5,c6] ~ [f1,f5,a5,c6] ~ [f5,bb5,db6]@2 f1 ~ [f5,c6,eb6]@2 f2@2 a2@2, f2@2 f2@2 ~@2 f2 ~@3 f2 ~ f1 ~ f2 ~", // F Bbm F7
  BB: "bb2@2 bb2@2 [bb2,bb5,db6,gb6]@2 bb2@2 bb1 ~ bb2 ~ bb1 ~ bb2 ~, bb1 ~@3 bb1 ~@3 [bb5,db6,f6]@4 ~@4", // Gb Bbm
  BC: "[bb1,bb5,db6,f6] ~ [bb5,db6,f6] ~ [bb1,bb5,db6,f6] ~ [bb5,db6,gb6]@2 bb1 ~ [bb5,db6,f6]@2 bb2@2 f3@2, bb2@2 bb2@2 ~@2 bb2 ~@3 bb2 ~ bb1 ~ bb2 ~", // Bbm Gb Bbm
  BD: "[ab2,ab5,c6,f6]@2 ab2@2 [ab1,ab5,c6] ~ ab2@2 ab1 ~ [ab5,db6,f6]@2 ab1 ~ ab2 ~, ab1 ~@3 [ab2,eb6]@2 ~@4 ab2 ~@5", // Fm Ab Db Ab5
  BE: "[ab2,ab5,c6,eb6]@2 ab2@2 ab1 ~ [ab5,db6,f6]@2 ab1 ~ [ab5,c6,eb6]@2 ab2@2 eb3@2, ab1 ~@5 ab2 ~@3 ab2 ~ ab1 ~ ab2 ~", // Ab Db Ab
  BF: "[gb2,gb5,bb5,eb6]@2 gb2@2 gb1 ~ [gb5,bb5,db6]@2 gb1 ~ [gb5,bb5,eb6]@2 [gb2,gb5,db6]@2 db3@2, gb1 ~@5 gb2 ~@3 gb2 ~ gb1 ~ gb2 ~", // Ebm Gb Ebm Gb5
  BG: "[f1,f5,c6] ~ [f5,c6] ~ [f1,f5,c6] ~ [f5,bb5]@2 f1 ~ [f5,a5]@2 f2@2 a2@2, f2@2 f2@2 ~@2 f2 ~@3 f2 ~ f1 ~ f2 ~", // F5 Bb5 F
  BH: "[~@2 [f5,bb5,db6] ~@2 [eb5,ab5,c6] ~@2 [db5,gb5,bb5] ~@2 [c5,f5,ab5] ~@2 [bb4,eb5,gb5] ~, bb2]/2", // Bbm Ab Gb Fm Ebm
  BI: "~@2 [gb4,bb4,f5] ~@2 [gb4,bb4,eb5] ~@2, [c2,c3]", // Gbmaj7 Ebm C
  BJ: "[f4,bb4,db5]@2 ~@4 [f4,a4] ~@3 [a5,c6]@2 [bb5,db6] ~ [c6,eb6] ~, [f1,f2], ~@3 c5 ~@4", // Bbm F Am Bbm Cm F
  BK: "[~@2 [f5,bb5,db6] ~@2 [eb5,ab5,c6] ~@2 [db5,gb5,bb5] ~@2 [c5,f5,ab5] ~@2 [bb4,eb5,gb5] ~, [bb1,bb2]]/2", // Bbm Ab Gb Fm Ebm Bb
  BL: "[f4,bb4,db5]@2 ~@4 [f4,a4] ~@3 a5@2 [bb5,db6] ~ [c6,eb6] ~, [f1,f2], ~@6 c5@2 ~@2 c6 ~@5", // Bbm F Bbm Cm F
  BM: "[db5,ab5,c6]@5 ~ [db5,gb5,bb5]@5 ~ [db5,gb5,bb5]@3 ~, [gb1,gb2]", // Dbmaj7 Gb
  BN: "[e5,g5,db6]@5 ~ [e5,g5,c6]@5 ~ [e5,g5,bb5]@3 ~, [e1,e2]", // Dbdim C Edim E
  BO: "[[f5,bb5,c6]@5 ~ [f5,bb5,c6]@5 ~ bb5@4 a5@15 ~, [f1,f2], f6@11 ~ [f5,c6,f6]@19 ~]/2", // Fsus4 F F5
  BP: "[c6,eb6]@2 [db6,f6] [eb6,gb6]@2 [db6,f6] [c6,eb6]@2, ab2", // Cm Db Ebm Db Cm
  BQ: "[[eb6,gb6]@4 [c6,eb6]@3 ~ [db6,f6]@4 [bb5,db6]@4 [c6,eb6]@4 [a5,c6]@4 [bb5,db6]@3 ~ [g5,bb5]@4 [a5,c6]@32, f3]/4", // Ebm Cm Db Bbm Cm Am Bbm Gm …
  BR: "[bb2,bb4,bb5] [db3,db5,db6] [c3,c5,c6] [eb3,eb5,eb6]", // Bb Db C Eb
  BS: "[f3@4 ~@2 c6@2 f3@4 f3@4 [f3,bb5,db6]@4 ~@2 [f5,a5,c6]@2 ~@2 [f5,bb5,db6] ~ [f3,f5]@4 f3@4 [f3,f6]@4 ~@2 [f5,eb6]@2 f3@4 [f3,f5,bb5,db6]@4 ~@2 [f5,a5,c6]@2 ~@2 [f5,bb5,db6] ~ [f3,eb6]@4 f3@4 f3@4 f3@4 bb2@2 f3@2, f2, f6@16 ~@12 [c6,eb6]@2 ~@12 c6 ~@17 [f5,c6]@2 ~@18, f5@8 ~@8 f5 ~@19 f5@2 ~@2 f3@4 ~@8 f3@4 f3@4 ~@20, ~ f3 ~@3 f3!2 ~ f1@12]/5", // Bbm F Bbm F F7 Bbm F Bbm …
  BT: "[bb2,bb5,db6,f6]@2 bb2@2 bb1 ~ [bb5,db6,ab6]@2 bb1 ~ [bb5,db6,gb6]@2 bb2@2 [bb2,c6,f6] ~, bb1 ~@5 bb2 ~@3 bb2 ~ bb1 ~ [f3,ab5]@2", // Bbm Bbm7 Gb Bbsus2 Fm
  BU: "ab2@2 ab2@2 [ab2,ab5,c6,gb6]@2 ab2@2 [ab5,c6,f6]@2 ab2 ~ ab1 ~ ab2 ~, ab1 ~@3 ab1 ~@3 ab1 ~@7", // Ab7 Fm
  BV: "[gb2,gb5,bb5,eb6]@2 gb2@2 [gb5,bb5,db6]@2 gb2 ~ gb1 ~ [gb2,gb5,bb5,eb6] ~ [gb2,gb5,bb5,db6]@2 db3@2, gb1 ~@3 gb1 ~@7 gb1 ~ gb2 ~", // Ebm Gb Ebm Gb
  BW: "bb2@2 bb2@2 [bb2,bb5,db6,gb6]@2 bb2@2 [bb5,db6,f6]@2 bb2 ~ bb1 ~ bb2 ~, bb1 ~@3 bb1 ~@3 bb1 ~@7", // Gb Bbm
  BX: "[bb1,bb5,db6,f6] ~ [bb5,db6,f6] ~ [bb1,bb5,db6,f6] ~ [bb5,eb6,gb6]@2 bb1 ~ [bb5,db6,f6]@2 bb2@2 f3@2, bb2@2 bb2@2 ~@2 bb2 ~@3 bb2 ~ bb1 ~ bb2 ~", // Bbm Ebm Bbm
  BY: "[ab1,ab5,c6,f6] ~ [ab5,c6,f6] ~ [ab2,ab5,c6,eb6]@2 ab2@2 ab1 ~ [ab5,db6,f6]@2 ab1 ~ ab2 ~, ab2@2 ab2@2 ab1 ~@5 ab2 ~@5", // Fm Ab Db
  BZ: "[ab1,ab5,c6,eb6] ~ [ab5,c6,eb6] ~ [ab1,ab5,c6,eb6] ~ [ab5,db6,f6]@2 ab1 ~ [ab5,c6,eb6]@2 ab2@2 eb3@2, ab2@2 ab2@2 ~@2 ab2 ~@3 ab2 ~ ab1 ~ ab2 ~", // Ab Db Ab
  CA: "[gb2,gb5,bb5,eb6]@2 gb2@2 gb1 ~ [gb5,bb5,db6]@2 gb1 ~ [gb2,gb5,bb5,eb6] ~ [gb2,gb5,bb5,db6]@2 db3@2, gb1 ~@5 gb2 ~@5 gb1 ~ gb2 ~", // Ebm Gb Ebm Gb
  CB: "[f1,f5,a5,c6] ~ [f5,a5,c6] ~ [f1,f5,a5,c6] ~ [f5,bb5]@2 f1 ~ f2 ~ f2@2 a2@2, f2@2 f2@2 ~@2 f2 ~@3 [f5,a5]@6, ~@12 f1 ~ f2 ~", // F Bb5 F
  CC: "[[f5,bb5] ~@3, bb2]/8", CD: "[db6@2 bb6@2 gb6@28 c6@2 ab6@2 f6@27 ~ b5@2 gb6@2 eb6@28, bb2]/6",
  CE: "[bb5@2 f6@2 ~@3 eb3 c3@4 eb3@4 db3@4 f3@4 eb3@4 gb3@4 bb2@4 db3@4 c3@4 eb3@4 db3@4 f3@4 eb3@4 gb3@4, bb2@7 ~@17 bb6@40, ~@2 db6@13 ~@17]/4",
  CF: "[bb1,bb2,bb5] [db2,db3,db6] [c2,c3,c6] [eb2,eb3,eb6]", // Bb Db C Eb
  CG: "[db2,db3,db6] [f2,f3,f6] [eb2,eb3,eb6] [gb2,gb3,gb6]", CH: "bb4@2 ~@2 g4 ~ c5@2, [e2,e3,e5,g5], c5@3 ~, ~ bb4@3",
  CI: "[c5@2 db5 c5, [f2,f3,bb4,f5], ~ f1]/2", // Bb5
  CJ: "bb2@2 bb2@2 [bb2,f5,bb5,eb6]@2 bb2@2 bb1 ~ [f5,bb5,db6]@2 bb1 ~ bb2 ~, bb1 ~@3 bb1 ~@5 bb2 ~@5", // Bbsus4 Bbm
  CK: "[bb2,f5,bb5,c6]@2 bb2@2 bb1 ~ [f5,db6]@2 bb1 ~ bb2 ~ bb2@2 f3@2, bb1 ~@5 [bb2,bb5] ~@5 bb1 ~ bb2 ~", // Bbsus2 Db Bb
  CL: "ab2@2 ab2@2 [ab2,f5,bb5,eb6]@2 ab2@2 ab1 ~ [f5,bb5,db6]@2 ab1 ~ ab2 ~, ab1 ~@3 ab1 ~@5 ab2 ~@5", // Absus2 Bbm
  CM: "[ab2,f5,bb5,c6]@2 ab2@2 ab1 ~ [f5,bb5,db6]@2 ab1 ~ ab2 ~ [ab2,f5,bb5]@2 [ab2,f6] ~, ab1 ~@5 ab2 ~@5 [ab1,eb6] ~ eb3@2", // Fm Bbm Bb7 Db Ab5
  CN: "gb2@2 gb2@2 [gb2,f5,bb5,eb6]@2 gb2@2 gb1 ~ [f5,bb5,db6]@2 gb1 ~ gb2 ~, gb1 ~@3 gb1 ~@5 gb2 ~@5", // Ebm Bbm
  CO: "[gb2,f5,bb5,c6]@2 gb2@2 gb1 ~ [f5,bb5,db6]@2 gb1 ~ gb2 ~ [gb2,f5,bb5]@2 [gb2,f6] ~, gb1 ~@5 gb2 ~@5 [gb1,eb6] ~ db3@2", // Gbmaj7 Bbm Gbmaj7 Ebm
  CP: "f2@2 f2@2 [f2,f5,bb5,c6]@2 f2@2 f1 ~ [f5,bb5,c6]@2 f1 ~ f2 ~, f1 ~@3 f1 ~@5 f2 ~@5", // Fsus4
  CQ: "[f1,f5,a5,c6] ~ [f5,a5,c6] ~ [f1,f5,a5,c6] ~ [f5,bb5]@2 f1 ~ [f5,a5,c6]@2 f2@2 [a2,f5,bb5,db6]@2, f2@2 f2@2 ~@2 f2 ~@3 f2 ~ f1 ~ f2 ~", // F Bb5 F Bbm
  CR: "bb2@2 bb2@2 [bb2,f5,eb6]@2 bb2@2 bb1 ~ [f5,bb5,db6]@2 bb1 ~ bb2 ~, bb1 ~@3 [bb1,bb5] ~@5 bb2 ~@5", // Bbsus4 Bbm Bb
  CS: "[bb1,bb5,c6] ~ bb2@2 bb1 ~ [f5,bb5,db6]@2 bb1 ~ bb2 ~ bb2@2 f3@2, [bb2,f5]@2 ~@4 bb2 ~@5 bb1 ~ bb2 ~", // Bbsus2 Bbm Bb5
  CT: "ab2@2 ab2@2 [ab2,f5,bb5,eb6]@2 ab2@2 ab1 ~ [f5,bb5]@2 ab1 ~ ab2 ~, ab1 ~@3 ab1 ~@5 [ab2,db6] ~@5", // Absus2 Bb5 Db5
  CU: "[ab2,f5,bb5,c6]@2 ab2@2 ab1 ~ [f5,bb5,db6]@2 ab1 ~ ab2 ~ [ab2,f5,c6]@2 [ab2,f6] ~, ab1 ~@5 ab2 ~@5 [ab1,eb6] ~ eb3@2", // Fm Bbm Fm Db Ab5
  CV: "gb2@2 gb2@2 [gb2,gb5,bb5,f6]@2 gb2@2 gb1 ~ [ab5,bb5,eb6]@2 gb1 ~ gb2 ~, gb1 ~@3 gb1 ~@5 gb2 ~@5", // Gbmaj7 Absus2
  CW: "[gb2,ab5,bb5,db6]@2 gb2@2 gb1 ~ [ab5,c6]@2 gb1 ~ [gb2,ab5,bb5] ~ gb2@2 db3@2, gb1 ~@5 gb2 ~@5 gb1 ~ gb2 ~", // Gb Ab Gb
  CX: "f2@2 f2@2 [f2,f5,bb5,c6,f6]@2 f2@2 f1 ~ [f5,bb5,c6]@2 f1 ~ f2 ~, f1 ~@3 f1 ~@5 f2 ~@5", // Fsus4
  CY: "[f1,f5,c6] ~ [f5,c6] ~ [f1,f5,c6] ~ [f5,bb5]@2 f1 ~ [f5,a5]@2 f2@2 [a2,f5,bb5]@2, f2@2 f2@2 ~@2 f2 ~@3 f2 ~ f1 ~ f2 ~", // F5 Bb5 F Bbmaj7
  CZ: "[gb2,f5,bb5,c6]@2 gb2@2 gb1 ~ [f5,bb5,db6]@2 gb1 ~ gb2 ~ [gb2,f5,c6]@2 [gb2,f6] ~, gb1 ~@5 gb2 ~@5 [gb1,eb6] ~ db3@2", // Gbmaj7 Bbm F Gbmaj7 Ebm
  DA: "[f1,f5,c6] ~ [f5,c6] ~ [f1,f5,c6] ~ [f5,bb5]@2 f1 ~ [f5,c6]@2 f2@2 [a2,f5,c6]@2, f2@2 f2@2 ~@2 f2 ~@3 f2 ~ f1 ~ f2 ~", // F5 Bb5 F5 F
  DB: "[bb2,f5,bb5,c6]@2 bb2@2 bb1 ~ [f5,db6]@2 bb1 ~ bb2 ~ bb2@2 db3@2, bb1 ~@5 [bb2,bb5] ~@5 bb1 ~ bb2 ~", // Bbsus2 Db Bb
  DC: "ab1 ~ ab2 ~ [gb2,gb5,bb5,f6]@2 gb2@2 gb1 ~ [ab5,bb5,eb6]@2 gb1 ~ gb2 ~, gb2@4 gb1 ~@5 gb2 ~@5", // Gbmaj7 Absus2
  DD: "[[f1,f5,c6] ~ [f5,c6] ~ [f1,f5,c6] ~ [f5,bb5]@2 f1 ~ [f5,a5]@2 f2@2 a2@2 [bb0,bb1,bb2]@67 ~@13, f2@2 f2@2 ~@2 f2 ~@3 f2 ~ f1 ~ [f5,bb5]@68 ~@14, ~@14 f2 ~@81]/6", // F5 Bb5 F Bb Bb5
})).s("gm_piano").gain(0.6)

// chords · piano
const piano_2 = note(`<
  ~@36 A ~ A ~ B ~ B ~ B ~ B ~ B ~ B ~ C ~@105 D ~ E ~ A ~ B ~@17 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2
  S@3 T U@7
>`.pickRestart({
  A: "~@6 [bb5,bb6]@3 ~ [bb5,bb6]@4 ~@2", B: "~@6 [bb5,bb6]@3 ~ [bb5,bb6]@5 ~", C: "~@6 [bb5,bb6]@3 ~ [bb5,bb6]@6",
  D: "~@6 [bb5,bb6]@2 ~@2 [bb5,bb6]@3 ~@3", E: "~@3 [bb5,bb6] ~ [bb5,bb6]@2 ~",
  F: "[~@3 [eb5,gb5]@3 ~@3 [eb5,gb5]@4 ~@2 [db5,f5]@17]/2", G: "[~@3 [db5,f5]@5 ~@2 [db5,f5]@4 ~ [c5,eb5]@17]/2",
  H: "[~@4 [c5,eb5]@4 ~@2 [c5,eb5]@5 [bb4,db5]@16 ~]/2", I: "[~@3 [bb4,db5]@3 ~@3 [bb4,db5]@5 ~ [a4,c5]@15 ~@2]/2",
  J: "[~@3 [eb5,gb5]@5 ~@2 [eb5,gb5]@4 ~ [db5,f5]@16 ~]/2", K: "[~@3 [db5,f5]@4 ~@2 [db5,f5]@5 ~ [c5,eb5]@17]/2",
  L: "[~@3 [c5,eb5]@5 ~@2 [c5,eb5]@4 ~ [bb4,db5]@15 ~@2]/2", M: "[~@3 [bb4,db5]@5 ~@2 [bb4,db5]@4 ~ [a4,c5]@17]/2",
  N: "[~@4 [eb5,gb5]@4 ~@2 [eb5,gb5]@5 [db5,f5]@16 ~]/2", O: "[~@4 [db5,f5]@5 ~ [db5,f5]@5 [c5,eb5]@17]/2",
  P: "[~@4 [c5,eb5]@5 ~ [c5,eb5]@5 [bb4,db5]@16 ~]/2", Q: "[~@4 [bb4,db5]@4 ~@2 [bb4,db5]@5 [a4,c5]@17]/2",
  R: "[~@3 [eb5,gb5]@4 ~@2 [eb5,gb5]@5 ~ db5@17, ~@14 f5@17 ~]/2", // Ebm
  S: "[~@3 [db5,f5]@5 ~@2 [db5,f5]@5 [c5,eb5]@18 ~@3 [c5,eb5]@5 ~@2 [c5,eb5]@4 ~]/3", T: "[bb4,db5]",
  U: "[~@3 [bb4,db5]@5 ~@2 [bb4,db5]@4 ~ c5@9 ~@8 [db4,f4]@66 ~@14, ~@15 a4@15 ~@82, ~@12 bb4@37 ~@7]/7", // Bbm Db
})).s("gm_piano").gain(0.8)

// chords · piano
const piano_3 = note("<~@141 A@8 ~@8 B@2 C@2 D@2 E@2 F@2 G@2 H@2 E@2 I@4 J K L M@2 ~@37>".pickRestart({
  A: "[~ eb6@31]/8", B: "[db5,f5,bb5]/2", C: "[[bb4,db5,gb5]@31 ~]/2", D: "[bb4,db5,e5,g5]/2", E: "[bb4,b4,eb5,gb5]/2",
  F: "[[bb4,db5,f5]@31 ~]/2", G: "[bb4,db5,gb5]/2", H: "[ab4,c5,f5]/2", I: "[bb4,db5,f5]/4",
  J: "[bb4,db5,f5] [a4,c5,f5]", K: "[ab4,db5,f5] [bb4,eb5,gb5]", L: "[c5,e5,g5,bb5]", M: "[c5@2 db5 c5, [bb4,f5]]/2",
})).s("gm_piano").gain(0.66)

// other · piano
const piano_4 = note(`<
  ~@79 A B C D A E F G ~@28 H I J K ~@10 A B C D A E F G ~@3 L@3 M@2 N@4 O@2 P@2 Q@4 R@2 ~@38 S@5 T@4 U V W X Y@3 Z@6
>`.pickRestart({
  A: "bb2 db3 c3 eb3", B: "db3 f3 eb3 gb3", C: "f3 db3 eb3 c3", D: "db3@2 bb2@2 c3@2 bb2 a2", E: "db3 f3 d3 f3",
  F: "eb3 gb3 e3 g3", G: "f3@15 ~", H: "c5@6 bb4@6 db5@3 ~", I: "db5@6 c5@5 ~ bb4@4", J: "f5@3 f5@2 a5 bb5 c6", K: "f6",
  L: "[~@6 f5@2 a5@2 bb5@2 c6@2 bb5@12 c6@2 db6@2 db6@9 ~ db6 c6 db6 c6 bb5 c6 db6 c6]/3",
  M: "[db6@7 ~ eb6@2 f6@4 bb6@13 ~ bb6@2 ab6@2]/2",
  N: "[bb6@2 ab6@2 gb6 ~ gb6@4 f6@2 gb6@2 eb6@9 ~ eb6@2 f6@2 gb6@2 eb6@4 ~@2 bb6@3 ~ bb6@2 ~ c7@3 a6@9 ~ c7 bb6 a6 gb6 f6 eb6 f6 eb6]/4",
  O: "[f6@4 bb6@6 bb6@13 ~ bb6 ab6 gb6 f6 gb6 f6 eb6 db6]/2", P: "[f6@2 bb6@2 eb6 db6@2 c6@4 c6 db6 c6 bb5 ab5]/2",
  Q: "[bb5@10 c6@2 db6@2 f6@7 ~ f6@2 bb6@2 a6@2 bb6@2 c7@26 ~@4 db7@2 c7@2]/4", R: "bb6/2",
  S: "[~@6 f4@2 a4@2 bb4@2 c5@2 db5@10 eb5@2 f5@12 db5 eb5 c5@2 db5@2 eb5@2 f5@10 gb5@2 ab5@14 eb5@2 f5@2 gb5@2 ab5@2]/5",
  T: "[bb5@20 bb5@2 c6@2 db6@2 eb6@4 f6@22 ~@4 bb3 c4 db4 eb4 c4 db4 eb4 f4]/4",
  U: "db4 eb4 f4 gb4 eb4 f4 gb4 ab4 f4 gb4 ab4 bb4 f4 gb4 ab4 bb4",
  V: "gb4 ab4 bb4 c5 db5 bb4 db5 f5 eb5 f5 db5 eb5 f5 db5 eb5 f5",
  W: "gb5 eb5 f5 gb5 ab5 bb5 c6 db6 eb6 bb5 c6 db6 eb6 f6 gb6 ab6", X: "bb6",
  Y: "[~@2 f6@2 eb6 db6 c6 bb5@3 ab5 gb5 f5 eb5 db5 c5@9]/3", Z: "[~@2 f4 eb4 db4 c4 a3 bb3@34 ~@7]/6",
})).s("gm_piano").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~@41 [x!4]!66 ~@12 [x!2]!8 [x!4]!30 ~@25 [x!4]!32 ~@5>").gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@55 A B A B A B A C A B A B A B A D A B A B A B E F@2 ~@11 A B A B A B A G A B A B A B A ~ F ~@21 F ~@11 A B A B A B
  H I A B A B A B J F@2 ~@32 A B A B A B A ~ A B A B A B H K A B A B A B J F@2 ~@4
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@4 x ~ x ~@6 x ~@2", D: "~@7 x ~ x!2 ~ x ~ x ~", E: "~ x!2 ~", F: "x",
  G: "~@3 x!5", H: "x!2", I: "x ~@2 x ~ x ~@2", J: "~@2 x ~@2 x ~@2", K: "x ~@2 x ~ x!2 ~",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@78 [~@3 x] ~@49 [~@5 x ~@2] ~@90>").gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@43 [x!16]!64 ~@20 [x!16]!30 ~@25 [x!16]!32 ~@5>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@78 [~@4 x!2 ~@2] ~@49 [~ x!2 ~] ~@90>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@110 [~@3 x] ~@108>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@78 A B ~@27 B ~ B C ~@4 B ~@13 B ~@11 B ~@6 D ~@8 B ~@24 B ~ B ~ B ~@10 D ~@16 B ~ E ~@2
>`.pickRestart({
  A: "~ x ~@14", B: "x", C: "~@7 x", D: "x ~@2 x ~ x ~@2", E: "~@7 x ~@8",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@78 [~ x ~@14] ~@135 x ~@4>").gain(0.8)

// … 26 more lines

More by Jean Michel Jarre