Strudelify

Le lundi au soleil

Claude Francois

KeyF majorTempo135 bpm
0:00/0:00
// Le lundi au soleil — Claude Francois
// 135 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 95 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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@2 B C@2 D@2 E@3 F@2 G@2 H I@2 J@2 K L@2 M@2 N O P Q R S T U V W X Y@2 Z AA@2 AB@2 AC AD@2 AE@2 AF@3 AG@2 AH@2 AI
  AJ@3 AK AL@2 AM AN AL AJ AN@2 AO AJ@3 AK AL@2 AM AN AL AJ AN@2 AO AJ@3 AK AP ~@9
>`.pickRestart({
  A: "[~@31 [ab4,c5]@4 f4@4 [ab4,c5]@4 ~ f4@4 [ab4,c5,f5]@4 f4@4 ~ [ab4,c5]@4 f4@3, ~@31 f3@9 ~@24]/2", // Ab Fm Ab
  B: "~ [ab4,c5]@4 ~ f4@4 [ab4,c5]@4 f4@4 ~ [ab4,c5,f5]@4 f4@4 [ab4,c5]@4 ~, ~ f3@9 ~@22", // Ab Fm Ab
  C: "[f4@4 [ab4,c5]@4 f4@4 [ab4,c5]@4 ~ f4@4 [ab4,f5]@4 f4@4 ~ [ab4,c5]@4 f4@4 [bb4,db5]@4 ~ f4@4 [bb4,db5]@4 f4@4 ~ [bb4,f5]@4 f4@4]/2", // Ab Db Ab Bbm Bb5
  D: "[[bb4,db5]@4 ~ f4@4 [g4,bb4]@4 eb4@4 ~ [g4,bb4]@4 eb4@4 [g4,eb5]@4 ~ eb4@4 [g4,bb4]@4 eb4@4 ~ [ab4,c5]@4 eb4@4 [ab4,c5]@4 eb4@4 ~ eb5@3]/2", // Bbm Gm Cm Gm Ab
  E: "[~ eb4@4 [ab4,c5]@4 ~ eb4@4 [ab4,c5]@4 f4@4 ~ [ab4,c5]@4 f4@4 [ab4,f5]@4 ~ f4@4 [ab4,c5]@4 f4@4 ~ [bb4,db5]@4 f4@4 [bb4,db5]@4 ~ f4@4 [bb4,f5]@4 f4@4 ~ [bb4,db5]@4 f4@4 [b4,d5]@4 ~ g4@4 [b4,d5]@4]/3", // Ab Db Ab Bbm Bb5 Bbm Bm
  F: "[g4@4 g5@4 ~ g4@4 [b4,ab5]@4 g4@4 ~ [c5,e5]@4 g4@4 [c5,e5]@4 ~ g4@4 [d5,f5]@4 g4@4 ~ [e5,g5]@4 g4@4 [f4,ab4]@4 ~ db4@3]/2", // E C Dm Em Fm
  G: "[~ [f4,ab4]@4 db4@4 ~ db5@4 db4@4 [f4,ab4]@4 ~ db4@4 [g4,bb4]@4 eb4@4 ~ [g4,bb4]@4 eb4@4 [g4,eb5]@4 eb4@4 ~ [g4,bb4]@4 eb4@4 [eb4,g4]@3]/2", // Fm Gm Cm Gm Eb
  H: "~@2 c4@4 [eb4,g4]@4 c4@4 ~ [eb4,c5]@4 c4@4 [eb4,g4]@4 ~ c4@4", // Eb Cm Eb
  I: "[[f4,ab4]@4 db4@4 ~ [f4,ab4]@4 db4@4 [f4,db5]@4 ~ db4@4 [f4,ab4]@4 db4@4 ~ [d4,f4]@4 bb3@4 [d4,f4]@4 ~ bb3@4 [d4,bb4]@4 bb3@4 [d4,f4]@4]/2", // Fm Db Fm Dm Gm Dm
  J: "[~ bb3@4 ~@4 bb3@4 ~ [c4,e4]@4 bb3@4 [d4,f4]@4 ~ bb3@4 [e4,g4]@4 bb3@4 ~ [f4,ab4]@4 c4@4 [f4,ab4]@4 ~ c4@4 [e4,g4]@4 c4@3, ~@5 e4@4 ~@55, ~@7 c4@4 ~@53]/2", // C Dm Em Fm Em
  K: "~@2 [f4,ab4]@4 c4@4 [g4,bb4,c5]@4 ~ f4@4 [g4,bb4,c5]@4 f4@4 ~ [g4,bb4,c5]@4", // Fm C7
  L: "[f4@4 [g4,bb4,c5]@4 f4@4 ~ [g4,bb4,c5]@4 e4@4 [g4,bb4,c5]@4 ~ e4@4 [g4,bb4,c5]@4 e4@4 ~ [g4,bb4,c5]@4 e4@4 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5]]/2", // C7 F
  M: "~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5]", // F
  N: "~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5]", // F Bb
  O: "~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5]", // Bb C7
  P: "~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5]", // C7
  Q: "~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5]", // C7 Dm7
  R: "~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4]", // Dm7 Bb
  S: "~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5]", // Bb C7
  T: "~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5]", // C7 F
  U: "~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4]", // F Bb
  V: "~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4]", // Bb
  W: "~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4]", // Bb A
  X: "~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [ab4,c5]@4 ~ f4@4 [ab4,c5]@4 f4@4, ~@15 f3@9 ~@8", // A Ab
  Y: "[~ [ab4,c5,f5]@4 f4@4 [ab4,c5]@4 ~ f4@4 [ab4,c5]@4 f4@4 ~ [ab4,c5]@4 f4@4 [ab4,c5,f5]@4 ~ f4@4 [ab4,c5]@4 f4@4 ~ [ab4,c5]@4 f4@4 [ab4,c5]@3, ~@18 f3@9 ~@37]/2", // Fm Ab Fm Ab
  Z: "~ f4@4 ~ [ab4,f5]@4 f4@4 [ab4,c5]@4 ~ f4@4 [bb4,db5]@4 f4@4 ~", // Db Ab Bbm
  AA: "[[bb4,db5]@4 f4@4 [bb4,f5]@4 ~ f4@4 [bb4,db5]@4 f4@4 ~ [g4,bb4]@4 eb4@4 [g4,bb4]@4 ~ eb4@4 [g4,eb5]@4 eb4@4 ~ [g4,bb4]@4 eb4@4 [ab4,c5]@4]/2", // Bbm Bb5 Bbm Gm Cm Gm Ab
  AB: "[eb4@4 ~ [ab4,c5]@4 eb4@4 eb5@4 ~ eb4@4 [ab4,c5]@4 eb4@4 ~ [ab4,c5]@4 f4@4 [ab4,c5]@4 ~ f4@4 [ab4,f5]@4 f4@4 ~ [ab4,c5]@4 f4@3]/2", // Ab Db Ab
  AC: "~ [bb4,db5]@4 ~ f4@4 [bb4,db5]@4 f4@4 ~ [bb4,f5]@4 f4@4 [bb4,db5]@4 ~", // Bbm Bb5 Bbm
  AD: "[f4@4 [b4,d5]@4 g4@4 [b4,d5]@4 ~ g4@4 g5@4 g4@4 ~ [b4,ab5]@4 g4@4 [c5,e5]@4 ~ g4@4 [c5,e5]@4 g4@4 ~ [d5,f5]@4 g4@4]/2", // Bm E C Dm
  AE: "[[e5,g5]@4 ~ g4@4 [f4,ab4]@4 db4@4 ~ [f4,ab4]@4 db4@4 db5@4 ~ db4@4 [f4,ab4]@4 db4@4 ~ [g4,bb4]@4 eb4@4 [g4,bb4]@4 eb4@4 ~ [g4,eb5]@3]/2", // Em Fm Gm Cm
  AF: "[~ eb4@4 [g4,bb4]@4 ~ eb4@4 [eb4,g4]@4 c4@4 ~ [eb4,g4]@4 c4@4 [eb4,c5]@4 ~ c4@4 [eb4,g4]@4 c4@4 ~ [f4,ab4]@4 db4@4 [f4,ab4]@4 ~ db4@4 [f4,db5]@4 db4@4 ~ [f4,ab4]@4 db4@4 [d4,f4]@4 ~ bb3@4 [d4,f4]@4]/3", // Gm Eb Cm Eb Fm Db Fm Dm
  AG: "[bb3@4 [d4,bb4]@4 ~ bb3@4 [d4,f4]@4 bb3@4 ~@5 bb3@4 [c4,e4]@4 ~ bb3@4 [d4,f4]@4 bb3@4 ~ [e4,g4]@4 bb3@4 [f4,ab4]@4 ~ c4@3, ~@11 e4@2 ~@19, ~@6 c4 ~@9]/2", // Gm Dm C Dm Em Fm
  AH: "[~ [f4,ab4]@4 c4@4 ~ [e4,g4]@4 c4@4 [f4,ab4]@4 ~ c4@4 [g4,bb4,c5]@4 f4@4 ~ [g4,bb4,c5]@4 f4@4 [g4,bb4,c5]@4 f4@4 ~ [g4,bb4,c5]@4 f4@4 [g4,bb4,c5]@3]/2", // Fm Em Fm C7
  AI: "~@2 e4@4 [g4,bb4,c5]@4 e4@4 ~ [g4,bb4,c5]@4 e4@4 [g4,bb4,c5]@4 ~ e4@4", // C7
  AJ: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  AK: "[f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3", // Bb
  AL: "[e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3", // C7
  AM: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Dm7
  AN: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3", // Bb
  AO: "[db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3", // A
  AP: "[e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@11", // C7
})).s("gm_piano").gain(0.26).pan(0.4)

// chords · piano · soft notes
const piano_soft = note("<~@85 A B C D B E D@2 F ~>".pickRestart({
  A: "~@24 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3", // C7
  B: "[e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3 [e4,g4,bb4,c5] ~@3", // C7
  C: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Dm7
  D: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3", // Bb
  E: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  F: "[db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@7", // A
})).s("gm_piano").gain(0.1).pan(0.4)

// bass · acoustic bass
const bass = note(`<
  A@2 B C D E@6 F@4 G H@3 I@2 J@8 K@5 L@8 M N@2 O@5 P Q R@3 S@2 T U V W X Y W Z AA AB AC S@2 T U V W X Y W Z AA AB AC
  S@2 T U V ~@9
>`.pickRestart({
  A: "[~@31 f2@30 ~@3]/2", B: "~ f2@30 ~", C: "~@2 f2@13 ~", D: "~ f2@2 bb2@13",
  E: "[~@5 bb2@2 ~@2 eb2@11 ~@2 eb2@15 ~@2 eb2@4 ~ ab2@24 ~ ab2@2 ~@3 g2@4 f2@15 ~@2 f2@11 ~@2 f2@4 ~ bb2@32 ~@2 g2@32 ~@3 c3@2 ~@2 c3@2 ~@2 c3@2]/6",
  F: "[~@3 c3@2 ~@2 c3@2 ~@2 c3@2 ~@3 c3@2 ~@2 c3@4 bb2@26 ~@5 bb2@4 eb2@26 ~@4 eb2@4 ~ ab2@26 ~@4 ab2@4]/4", G: "db2",
  H: "[~@3 g2@9 ~@4 g2@19 ~@2 c3@9 ~@4 c3@2 ~@2 c3@9 c3@9 f2@6 ~@2 f2@6 ~@3 f2@6 ~]/3",
  I: "[~@2 f2@6 ~@2 c3@8 ~@5 c3@4 ~ c3@8 c3@6 ~@3 c2@8 c3@2 ~@3 c3@4 d3@2]/2",
  J: "[~@2 d3@2 ~@3 e3@2 ~@2 e3@4 ~ f2@12 ~@3 c2@12 ~@4 f2@12 ~@4 c2@12 ~@4 f2@12 ~@4 f2@10 ~@2 f2@4 g2@12 ~@4 g2@12 ~@4 c3@12 ~@4 g2@12 ~@4 c3@12 ~@4 c3@10 ~@2 c3@4 d3@14 ~@2 d3@10 ~@2 d3@4 g2@6 ~@2 g2@9]/8",
  K: "[~@7 g2@8 c3@12 ~@4 c3@10 ~@2 c3@4 f2@14 ~@2 f2@14 ~@2 bb2@20 ~@4 bb2@8 g2@14 ~@2 g2@6 ~@2 g2@6 ~@2 a2@12 e2@4 a2]/5",
  L: "[~@3 ab2@2 ~@2 g2@2 ~@2 gb2@4 f2@30 ~@5 f2@30 ~@5 f2@26 ~@4 f2@4 bb2@26 ~@4 bb2@2 ~@3 eb2@11 ~@2 eb2@15 ~@2 eb2@4 ab2@24 ~@2 ab2@2 ~@2 g2@4 ~ f2@15 ~@2 f2@11 ~@2 f2@3]/8",
  M: "~ bb2@31", N: "[~@4 g2@32 ~@2 c3@2 ~@3 c3@2 ~@2 c3@2 ~@2 c3@2 ~@3 c3@2 ~@2 c3@2 ~@2]/2",
  O: "[c3@2 ~@3 c3@4 bb2@26 ~@4 bb2@4 ~ eb2@26 ~@4 eb2@4 ab2@26 ~@4 ab2@4 ~ db2@32 ~@2 g2@8 ~@5]/5",
  P: "g2@19 ~@3 c3@9 ~", Q: "~@3 c3@2 ~@2 c3@8 ~ c3@8 f2@6 ~@2",
  R: "[~ f2@6 ~@3 f2@6 ~@2 f2@6 ~@3 c3@9 ~@4 c3@4 c3@9 c3@6 ~@3 c2@8 c3@2 ~@2 c3@4 ~ d3@2 ~@2 d3@2 ~@2 e3@2 ~@3 e3@4]/3",
  S: "f2@3 ~ c2@3 ~", T: "f2@6 ~@2 f2@5 ~ f2@2", U: "g2@3 ~ g2@3 ~", V: "c3@3 ~ g2@3 ~", W: "c3@6 ~@2 c3@5 ~ c3@2",
  X: "d3@7 ~ d3@5 ~ d3@2", Y: "g2@3 ~ g2@7 ~ g2@4", Z: "f2@7 ~ f2@7 ~", AA: "bb2@5 ~ bb2@2", AB: "g2@7 ~ g2@3 ~ g2@3 ~",
  AC: "a2@6 e2@2 a2@2 ab2 ~ g2 ~ gb2@2",
})).s("gm_acoustic_bass").gain(0.41).pan(0.6)

// bass · acoustic bass · soft notes
const bass_soft = note("<~@86 A B C A D E F G ~>".pickRestart({
  A: "c3@6 ~@2 c3@5 ~ c3@2", B: "d3@7 ~ d3@5 ~ d3@2", C: "g2@3 ~ g2@7 ~ g2@4", D: "f2@7 ~ f2@7 ~", E: "bb2@5 ~ bb2@2",
  F: "g2@7 ~ g2@3 ~ g2@3 ~", G: "a2@6 e2@2 a2@2 ab2 ~ g2 ~ gb2@2",
})).s("gm_acoustic_bass").gain(0.15).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@3 A@8 B@4 C@4 D E F@5 G@5 H@4 ~ I@6 J@3 K@7 L@3 M N M O P Q R S Q T U S V M N M O P Q R S Q T U S V M N M O P ~@9
>`.pickRestart({
  A: "[~@4 [f3,c4,f4,ab4]@34 ~ [db4,f4,bb4]@34 [eb3,eb4,g4]@34 ~ [ab2,c4,ab4]@34 [f3,f4,ab4]@34 ~ [bb2,db4,f4,bb4]@34 [g2,d4,g4,b4]@34 ~ [c3,c4,e4]@10, ~@19 db3@17 ~@92]/8", // Fm Bbm Eb Ab Fm Bbm G C
  B: "[~@7 [c3,c4,f4]@9 [e3,c4,g4]@8 ~ bb4@34 [eb3,eb4,g4,bb4]@34 ~ [ab2,ab4,c5]@34, ~@24 [db3,db4,f4]@35 ~@69]/4", // F5 C Eb Ab Db
  C: "[[db3,db4,f4]@35 [g2,d4,f4,bb4]@34 [c3,c4,e4,g4]@35 [f2,f4,ab4]@17 [c3,e4,g4]@7]/4", // Db Gm7 C Fm C
  D: "~ [f2,f4,ab4]@4 [f4,bb4,c5]@11", E: "~@13 [g3,e4,bb4]@19",
  F: "[~ c5@2 [f3,f4,a4,c5]@2 [f3,c4,f4,a4,c5]@2 [f3,bb3,d4,bb4,d5]@2 [c3,e4,g4,c5], ~@15 [f3,c4,f4,a4]@32 ~@113]/5", // F Bb C F
  G: "[~ [c3,e4,g4,bb4,c5]@2 [d3,a3,d4,f4,a4]@2 [g2,g3,d4,f4,bb4]@2 [c3,e4,g4,bb4,c5]@2 [f3,f4,a4]]/5", // C7 Dm Gm7 C7 F
  H: "[~ [bb2,d4,f4,bb4]@2 [g2,g3,d4,f4,bb4]@2 [a2,e3,db4,e4,a4]@2 ~]/4", // Bb Gm7 A
  I: "[~@21 [f3,c4,f4,ab4]@34 [db3,db4,f4,bb4]@34 ~ [eb3,eb4,g4]@34 [ab2,c4,ab4]@34 ~ [f3,f4,ab4]@33]/6", // Fm Bbm Eb Ab Fm
  J: "[~ [bb2,db4,f4,bb4]@34 ~ [g2,d4,g4,b4]@34 ~ [c4,e4]@17 [c3,c4,f4]@8, ~@70 c3@17 ~@9]/3", // Bbm G C F5
  K: "[[e3,c4,g4]@9 [db3,db4,f4,bb4]@35 [eb3,eb4,g4,bb4]@34 [ab2,ab4,c5]@34 ~ [db3,db4,f4]@34 [g2,d4,f4,bb4]@35 [c3,c4,e4,g4]@34 [f2,f4,ab4]@8]/7", // C Bbm Eb Ab Db Gm7 C Fm
  L: "[~@10 [c3,e4,g4]@8 [f2,f4,ab4]@9 [f4,bb4,c5]@34 ~ [g3,e4,bb4]@34]/3", M: "[f3,c4,f4,a4,c5]", N: "[f3,f4,a4,c5]",
  O: "[f3,bb3,d4,bb4,d5]", P: "[c3,e4,g4,c5]", Q: "[c3,e4,g4,bb4,c5]", R: "[d3,a3,d4,f4,a4]", S: "[g2,g3,d4,f4,bb4]",
  T: "[f3,f4,a4]", U: "[bb2,d4,f4,bb4]", V: "[a2,e3,db4,e4,a4]",
})).s("gm_string_ensemble_2").gain(0.15).pan(0.4)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@86 A B C A D E C F ~>".pickRestart({
  A: "[c3,e4,g4,bb4,c5]", B: "[d3,a3,d4,f4,a4]", C: "[g2,g3,d4,f4,bb4]", D: "[f3,f4,a4]", E: "[bb2,d4,f4,bb4]",
  F: "[a2,e3,db4,e4,a4]", // A
})).s("gm_string_ensemble_2").gain(0.05).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C D E F G H I J K L M N O P Q R S T@12 ~@2 U V W X Y Z AA AB AC AD AE AF F AG O I J AH AI AJ@31 AK ~@8
>`.pickRestart({
  A: "~ x ~@6", B: "~@3 x ~@12", C: "~@5 x ~@3 x ~@22", D: "~@3 x ~@4", E: "~@5 x ~@4 x ~@20 x", F: "~@17 x ~@14",
  G: "~@15 x ~@3 x ~@12", H: "~@11 x ~@3 x", I: "~@7 x ~@12 x ~@3 x ~@7", J: "~@10 x ~@16 x ~@4",
  K: "~@12 x ~@12 x ~@4 x ~", L: "~@15 x ~@16", M: "x ~@16 x ~@12 x ~", N: "~@3 x ~@16 x ~@11", O: "~@5 x ~@16 x ~@9",
  P: "~@3 x ~@4 x ~@16 x ~@6", Q: "~@10 x ~@12 x ~@8", R: "~@8 x ~@4 x ~@12 x ~@5", S: "~@2 x ~@8 x ~@4 x ~@14 x",
  T: "~@15 x ~@15 x", U: "~@21 x ~@10", V: "~@23 x ~@8", W: "~@21 x ~@4 x ~@5", X: "~@7 x", Y: "~@11 x ~ x ~@2",
  Z: "~ x", AA: "~ x ~@30", AB: "x!2 ~@6", AC: "~@6 x ~@8 x ~@8 x ~@7", AD: "~@5 x ~@3 x ~@16 x ~@5",
  AE: "~@12 x ~@16 x ~@2", AF: "~@10 x ~@3 x ~@16 x", AG: "~@2 x ~@12 x ~@3 x ~@12", AH: "~@8 x ~@16 x ~@4 x ~",
  AI: "~@10 x ~@8 x ~@8 x ~@3", AJ: "x!2", AK: "x",
})).gain(0.36)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@86 [~ x] [x!2]!7 ~>").gain(0.1)

// drums · snare
const snare = s("sd").struct(`<
  ~@21 A B C D C B C D C B C D C E ~@20 F G F H F G F H F G F H F@2 G F H F G F H F G F H F@2 G F H I ~@9
>`.pickRestart({
  A: "~@23 x ~@8", B: "~@7 x ~@15 x ~@8", C: "~@7 x ~@3 x ~@11 x ~@8", D: "~@7 x ~@11 x ~@7 x ~@4", E: "~@7 x ~@24",
  F: "~ x ~ x", G: "~@2 x ~@3 x!2", H: "~ x ~ x ~@2 x!2", I: "~ x ~@2",
})).gain(0.31)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@85 A B C D C B C D ~@2>".pickRestart({
  A: "~@3 x", B: "~@2 x ~@3 x!2", C: "~ x ~ x", D: "~ x ~ x ~@2 x!2",
})).gain(0.1)

// drums · hihat
const hihat = s("hh").struct("<~@11 A B C D E F G H I J K L@12 M ~@10 N F O P Q R S B C I T@30 U ~@9>".pickRestart({
  A: "~@29 x ~@2", B: "~@5 x ~@8 x ~@8 x ~@7 x", C: "~@8 x ~@7 x ~@8 x ~@6", D: "~@2 x ~@7 x ~@8 x ~@8 x ~@3",
  E: "~@4 x ~@8 x ~@8 x ~@7 x ~", F: "~@7 x ~@8 x ~@7 x ~@7", G: "~ x ~@7 x ~@8 x ~@8 x ~@4",
  H: "~@3 x ~@8 x ~@8 x ~@7 x ~@2", I: "~@6 x ~@8 x ~@7 x ~@8", J: "x ~@3 x ~@6 x ~@3 x", K: "~@7 x ~@11 x ~@7 x ~@4",
  L: "~@3 x ~@7 x ~@7 x ~@7 x ~@4", M: "~@3 x ~@7 x ~@20", N: "~@13 x ~@8 x ~@8 x", O: "~ x ~@8 x ~@7 x ~@8 x ~@4",
  P: "~@4 x ~@7 x ~@8 x ~@8 x ~", Q: "~@6 x ~@8 x ~@8 x ~@7", R: "x ~@8 x ~@7 x ~@8 x ~@5",
  S: "~@3 x ~@7 x ~@8 x ~@8 x ~@2", T: "~ x ~ x ~ x ~ x", U: "~ x ~ x ~ x ~@2",
})).gain(0.36)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@85 [~@7 x] [~ x ~ x ~ x ~ x]!8 ~>").gain(0.1)

// drums · ride
const ride = s("rd").struct("<~@3 A B C D E F G H ~@25 I J K L M N O A B ~@50>".pickRestart({
  A: "~ x ~@6", B: "~ x ~ x ~@12", C: "~@9 x ~@22", D: "~@7 x ~@4 x ~@19", E: "~@7 x ~@8", F: "~@12 x ~@4 x ~@14",
  G: "~@19 x ~@12", H: "~@17 x ~@4 x ~@9", I: "~@21 x ~@10", J: "~@19 x ~@3 x ~@8", K: "~@13 x ~@2", L: "~@6 x!2",
  M: "~@31 x", N: "~@29 x ~@2", O: "~ x ~@30",
})).gain(0.36)

stack(
  piano, piano_soft, bass, bass_soft, string_ensemble_2, string_ensemble_2_soft, kick, kick_soft, snare, snare_soft,
  hihat, hihat_soft, ride
)

More by Claude Francois