Strudelify

Femmes... je vous aime

Clerc Julien

KeyA♭ majorTempo71 bpm
0:00/0:00
// Femmes... je vous aime — Clerc Julien
// 71 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 76 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/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 F G H I@2 J K L M N O P Q R S T U V W X@2 Y@2 Z AA@2 AB@3 AC AD AE AF@2 AG@2 AH AI@2 AJ AK AL AM AN
  AO AP AQ AR AS@2 AT AU@2 AV AW AX AY AZ BA BB BC@6 ~
>`.pickRestart({
  A: "[~@15 bb4, gb2@6 f4@4 f4@3 db4@3, ~ gb3@6 bb4@4 bb4@3 f4@2, ~@4 db4@4 bb4@2 db4@6 gb2@15 ~, ~@6 gb4@9 ~@3 db4@6 db5@7 ~]/2",
  B: "~@6 f4 bb4, gb2, ~@4 gb3@27 ~, ~@2 db4@2 bb4@3 ~, ~@12 f4@8 db4@11 ~",
  C: "[~@6 b4 ~@8 gb4, b2@28 gb4@16 gb4@8 eb4@4 b4@7 ~, ~@4 b3@26 ~@2 b2@31 ~, ~@8 eb4@8 db5@14 ~@10 eb4@8 db5@15 ~, ~@12 gb4@8 eb4@10 ~@6 b3@27 ~]/2",
  D: "[~@12 gb4@2 f4 ~@15 [bb2,bb3]@2, bb2@20 bb3@10 ~@6 bb3@12 ab4@15 ~, ~@4 f3@26 ~@2 bb2@20 bb3@4 gb4@7 ~, ~@8 bb3@8 ab4@14 ~@14 f4@19 ~, ~@12 db4@18 db4@10 db4@23 ~]/2", // Bb
  E: "~@6 f4 gb4, ab2@15 ~, ~@2 ab3@6 gb4@2 ab3@5 ~, ~@4 b3@11 ~, ~@6 eb4@9 ~",
  F: "~@4 gb4 ~@2 gb4, ab2, ~ ab3@4 ab3@3, ~ b3@3, ~@12 eb4@12 f4@7 ~",
  G: "~@12 gb4@2 f4 db4, db2, ~@2 ab3@8 b3@5 ~, ~@4 b3@4 ab4@7 ~, ~@6 db4@9 ~",
  H: "~@7 bb4, gb2@31 ~, ~@2 gb3@13 ~, ~@8 db4@8 bb4@8 f4@7 ~, ~@12 f4@8 db4@11 ~",
  I: "[~@14 gb4 ~@13 db4@2 b3@2, b2@10 b4 bb4 b4@3 eb4@7 db4@4 gb3@5 ~, ~@4 gb3@27 ~ b2@30 ~@2, ~@8 b3@23 ~@5 gb3@12 eb4@14 ~@2, ~@12 eb4@4 db5@15 ~@9 b3@20 ~@4]/2",
  J: "~@24 f4@4 db4@3 ~, bb2@15 ~, ~@2 bb3@6 ab4@7 ~, ~@2 db4@5 ~, ~@6 f4@4 bb3@5 ~",
  K: "~@24 bb4@4 f4@3 ~, bb2@31 ~, bb3@4 bb3@6 db4@5 ~, ~@2 f3@13 ~, ~@6 db4@2 db5@7 ~",
  L: "~@7 gb4, ab2@3 f4, ~ gb3@7, ~@2 ab3@2 gb4 ab3@3, ~@3 b3@5",
  M: "~@5 ab3 gb4 [db4,f4], db4@23 ~@9, ~@4 ab2@27 ~, ~@8 db3@23 ~, ~@12 ab3@4 [b3,gb4]@8 b3@3 ~@5", // Db B5
  N: "~@7 gb4, gb2, ~ db3@7, ~@8 gb3@8 b3@4 gb3@4 db4@7 ~, ~@12 bb3@19 ~",
  O: "~@3 gb3!2 ~@2 gb3, gb2, [bb3,db4,gb4] [db4,bb4]@3, ~ gb3 bb3@2 [bb3,eb4] gb3@2 ~, ~ gb4@2 [bb3,eb4,gb4]", // Gb Eb5 Ebm
  P: "~@2 b3@2 b3@2 b3@2 ab3@2 ab3@2 ~@3 ab3, ab2@7 ab2, [eb4,ab4] ab4@2 ~, ~@8 eb4@8 [b3,eb4]@8 [ab3,b3,eb4,ab4]@7 ~", // Ab5 B Abm
  Q: "~@4 ab3@4 ~@6 ab3@2 ab3@4 ab3@4 [ab3,db4,f4]@4 db3@3 ~, db2@15 ~, [db4,gb4]@4 gb4@11 ~, ~ [ab3,db4] [db4,f4] ~, ~@3 db3@4 ~", // Db Gb5 Db5 Db
  R: "bb3@2 bb3@2 ~@4 [bb3,db4]@2 ~ [bb3,db4] [bb3,db4,ab4]@2 [bb3,db4,f4]@2, gb2@31 ~, gb3@6 gb3@4 gb3@5 ~, [db4,f4]@2 [bb3,db4,f4]@2 f4@3 ~, ~@22 gb4@9 ~", // Bbm Bbm7 Bbm Db Bbm
  S: "b3!2 ~@2 [b3,eb4,gb4] gb3 b3 [b2,gb3,b3], b2@7 ~, [eb4,gb4]@8 [b3,eb4,gb4]@8 ~@8 [eb4,gb4]@7 ~, ~@3 gb3@2 ~@3", // B B5 Ebm B Ebm
  T: "~@5 ab3 [ab3,b3,ab4] [ab2,ab3], ab2@7 ~, [b3,eb4,ab4]!3 eb4, ~ ab3@2 ab3@2 ~@3", // Abm Ab Abm
  U: "ab3@4 ab3@4 ~@6 ab3@2 ab3 ~@3 ab3@4 [ab3,db4,f4]@4 [db3,ab3]@4, db3@3 db3@4 ~, [db4,gb4]@8 [ab3,db4,gb4]@7 ~ [db4,f4]@8 ~@4 db4 ~@3", // Db Db5 Gb5 Dbsus4 Db
  V: "bb3@4 bb3@4 bb3@4 bb3@4 [bb3,db4,f4]@4 ~@4 [db4,f4]@4 [bb3,db4,f4]@2 [bb3,db4,f4] ~, bb2@21 ~@3 bb2@7 ~, [db4,f4]@2 [db4,f4]@2 ~ bb3@2 ~", // Bbm Db Bbm Db
  W: "[gb3,eb4]@4 gb3@2 ~@4 gb3@2 [gb3,bb3,eb4]@2 gb3 ~, eb2@29 ~@3, bb3 ~@7 [bb3,eb4]@8 [bb3,eb4]@8 ~@8, ~@3 gb3@2 ~@3", // Ebm Eb5
  X: "[ab3!3 ~@3 [b3,eb4] ~@8 [b1,ab3], ab2@29 ~@3 ab2@27 ~@5, [b3,eb4]!3 ~ [b3,eb4]!4, ~@12 ab3@8 ab3@8 ab3@8 ab3@8 ab3@8 ab3@7 ~@5]/2", // B E B
  Y: "[~@28 ab4@3 ~@25 f4@7 ~, db2@24 b4@7 ~@17 f4@8 ~@8, ~@4 db4@12 ab4@4 db4@16 db4@8 db4@8 db4@11 ~, ~@8 eb4@23 ~ [gb2,bb4]@31 ~, ~@12 gb4@19 ~@9 gb4@22 ~@2]/2", // Gb
  Z: "~@7 db4, gb2, ~ gb3@7, ~ db4 bb4@2, ~@3 f4@2 db4 db5@2",
  AA: "[~@15 [b2,gb4], b2@12 db5@4 gb5@22 b3@14 gb4@4 db5@7 ~, b3@2 b3@12 gb4@2 b2@8 gb5@7 ~, ~ gb3@9 gb4@2 db5@8 gb4@2 b4@9 ~, ~@3 gb4 b4@14 gb3@13 ~]/2", // B5
  AB: "[~@12 f4@2 db4 ~@15 bb3@2 ~@12 f4@2 gb4@2, bb2@15 ~ bb1@15 ~ ab2@15 ~, ~@2 f3@13 ~@7 f4@4 bb3@2 f4@12 gb4@2 ab3@6, ~@8 bb3@8 ab4@14 ~@10 db4@22 ~@6 ab3@8 eb4@17 ~@3, ~@12 db4@8 bb3@10 bb3@6 bb3@12 ab4@14 ~@10 b3@21 ~@3]/3",
  AC: "~@3 eb3!5, ab2, ~ eb3@2 ~ ab3@2 [ab3,eb4]@2, ~ ab3 b3@2", // Ab5
  AD: "~@12 ab4@3 ~ g4@4 ~@8 bb3@4, [db2,db3]@15 ~ [eb2,eb3,bb4]@16, f4@8 f4@7 eb4@8 ~ eb4@8, ~@4 db4@11 ~@5 g4@12", // Db Eb5
  AE: "ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 ab3@4 ab3@3 ~, ab2@31 ~, [c4,eb4]@8 [c4,eb4]@8 [c4,eb4]@8 [c4,eb4]@7 ~", // Cm
  AF: "[f3@2 f3@2 [f3,ab3]@2 ~ [f3,ab3] ~@3 f3!5 f3@2 f3@2 ~@3 f3 f3@2 f3@2 db3@2 db3@2, db2@16 [f3,ab3]@4 db2@8 ab3@4 db2@31 ~, [ab3,eb4]@8 eb4@16 ab3@4 f4@35 ~, ~@4 db3@8 db3@12 [db3,eb4]@6 db3@2 [ab3,eb4]@8 eb4@23 ~, ~@16 db4@24 [f3,ab3]@4 db3@4 [ab3,db4]@8 [f3,ab3,db4]@7 ~]/2", // Fm Ab5 Dbsus2 Ab5 Fm Db5 Db
  AG: "[c4@2 c4@2 c4@2 c4@2 ~@7 c4 c4@2 c4@2 ~@10 c3@2, c2@31 ~ c2@32, [eb4,g4]@8 [eb4,g4]@8 [c4,eb4,g4]@8 [c4,eb4,g4]@7 ~ [eb4,g4]@8 [c4,eb4,g4]@8 [c4,g4]@16, ~ c3@2 c3@2 c3@2 c3@4 c3@2 c3@2 ~, ~@6 eb4 [g3,bb3,eb4]]/2", // Eb Cm Eb Cm C5 Eb
  AH: "~@2 f3@2 ~@3 f3 f3@2 f3@2 ~@2 f2@2, [bb1,g3], eb4 eb4@3, ~ bb2@2 bb2@5, ~ [f3,bb3] [bb3,db4] [f3,bb3,db4]", // Eb Bb5 Bbm
  AI: "[g3@4 g3@4 g3@4 g3@4 g3@4 g3@4 ~@8 ab2@6 ~@2 ab3@4 ab3@4 [ab2,ab3]@4 [ab2,ab3]@4 [ab2,ab3]@4 [ab2,ab3,g4,g5]@3 ~, eb2@32 [c4,eb4]@6 ab2@2 [bb3,bb4]@4 [c4,c5]@4 [db4,db5]@4 [eb4,eb5]@4 [f4,f5]@7 ~, [bb3,eb4]@8 eb4@16 g4@8 ab4@31 ~, ~@4 eb3@8 eb3@4 bb3@4 eb3@4 g3@39 ~, ~@8 bb3@8 f4@8 bb3@4 eb3@35 ~]/2", // Ab Abmaj7 Cm Bb C Db Eb F …
  AJ: "ab3@4 ~@16 ab3@4 ~@4 f3@3 ~, [ab2,ab4,ab5]@14 ~@2 f2@15 ~, ~ ab3@2 ab3@2 f3@2 ~, ~@8 [c4,eb4]@8 [c4,f4]@8 [ab3,c4,f4]@7 ~", // Ab Cm F5 Fm
  AK: "bb3@2 bb3@2 bb3@2 bb3@2 ~@3 bb3 [bb3,db4,f4]@2 [bb3,db4,f4]@2, bb1@24 bb1@7 ~, [db4,f4]!2 [bb3,db4,f4] ~, ~@4 bb2@16 bb2@11 ~", // Bbm Db Bbm
  AL: "~@4 eb3@8 [bb3,eb4,ab4]@3 ~ bb3@4 bb3@4 [bb3,eb4]@4 [eb3,bb3,eb4,bb4]@4, [eb2,bb3,eb4,ab4]@3 eb3@4 ~, ~ eb2, ~@2 [eb4,g4] g4", // Ebsus4 Eb5 Ebsus4 Eb
  AM: "eb4!4 ab2@2 ~ [bb4,bb5], c5, ab4@3 ~, ab2@2 ~ [ab2,ab4,ab5], ~ g4 [eb4,g4]@2", // Bb Ab Eb
  AN: "~@3 [ab4,ab5] ~@4 ab5@2 ab5!2 ~@2 c6@2, c5, c6@4 db6 db3 [db3,ab5,db6]@2, db3@2 ab5 db3 f6@4, ~ [ab4,f5]@3", // Ab Db5 Db
  AO: "bb2 ~@3 bb3!2 [bb3,db4,bb4] [bb2,bb3,db4,f4], bb1@15 ~, bb4@5 bb2@2 ~, [db4,f4]@2 [bb3,db4,f4]@2 f4@3 ~, ~ bb2@2 bb2 db4@2 ~@2", // Bbm Db Bbm
  AP: "~ eb3@2 [bb3,eb4] ~@2 [bb3,eb4,g4] [eb3,bb3,eb4], [eb2,bb3,eb4]@3 eb3@2 eb3@2 ~, ~@8 eb2@7 ~, ~@2 [bb3,eb4,g4] ~", // Eb5 Eb Eb5 Eb
  AQ: "~@7 c3, [c2,c4,eb4], ~ c3@2 c3@2 c3@2 ~, ~ [g4,g5]@2 [g4,g5], ~ [f4,f5]", // Cm G F
  AR: "[ab4,c5,f5] ~@3 [c5,f5,ab5] ~@2 [f3,ab4], f2@11 ~ [f2,c5,f5]@4, ~ f3@4 [f3,ab4]@2 ~, ~ ab4@2 ab4@2 ~@3, ~ [c5,f5,ab5] ~@2", // Fm F5 Fm
  AS: "[~@6 [bb3,db4,f4] ~@7 db4 [bb2,bb3], [bb1,f5]@29 ~@2 db4 bb4@4 bb3@4 db4@4 bb3@4 bb4@14 ~@2, [bb4,db5]@8 db5@22 ~ f4@31 ~@2, ~ bb2@2 bb2 [db4,f4] bb2@2 bb2@6 bb3@2 ~, ~@4 [f4,bb4]@4 bb4@7 bb3 bb1@15 ~]/2", // Bbm Bb Bb5 Bbm Db Bb5
  AT: "~@12 [eb3,g4,g5]@3 [ab4,ab5], eb2@4 [eb3,eb4,eb5] [f4,f5]@3, eb3@3 [bb3,db4]@5, ~ g3@7, ~ bb3 [ab3,c4]@6", // Eb Ab Eb F Bbm Ab
  AU: "[ab4@4 ab4@4 ab4@4 [ab3,ab4]@4 f4@4 f4@4 f4@4 [f2,f3]@3 ~@5 f4@4 f4@4 ~@8 f4@4 [f4,bb4]@4 [bb2,f4,bb4]@4, ab2@4 f2@3 ~ bb1@4 bb1@4, [c5,ab5]@8 [c5,ab5]@8 [ab4,c5,f5]@8 [ab4,c5,f5]@7 ~ [bb4,db5,f5]@8 [bb4,db5,f5]@8 [bb4,db5,f5]@8 [db5,f5]@8, ~ ab3@2 ~@2 f3@2 f4@2 bb2@2 bb2@4 ~, ~@11 f4@2 ~@3]/2", // Ab F Bb5 Fm Bbm Db
  AV: "bb4@4 bb4@4 [bb4,eb5,ab5]@4 [bb4,g5]@3 ~ bb4@4 bb4@4 ~@4 eb3@4, eb2@7 ~ [eb2,g5]@8, [eb5,ab5] ~ eb5 [bb4,eb5], ~ eb3@2 eb3@4 ~", // Ebsus4 Eb Ab5 Eb5
  AW: "[c5,eb5]@2 c5@2 ~@2 eb5 [eb5,ab5,c6] [eb5,ab5,c6]@2 [eb5,ab5,c6]!2 [ab2,eb5,ab5]@2 [ab2,eb5,ab5]@2, g5, ab2@3 ~, ~@2 [eb5,ab5]@5 ~@5 c6@4, ~ [c5,f5]@3", // Cm Ab Ab5 F5
  AX: "db5!2 ~@2 [ab4,c5]@2 ~ eb4, db3, [f5,c6] [db5,f5,c6]@3, ~ f3@2 f3@5, ~@3 [f4,ab4,c5]", // Ab F5 Dbmaj7 Fm
  AY: "~@2 bb3@2 bb3@2 [bb2,bb3]@2 bb3@2 bb3@2 ~@2 bb2 bb3, bb1@31 ~, [f4,bb4]@8 [db4,f4,bb4]@8 [db4,f4,bb4]@8 [bb3,db4,f4,bb4]@7 ~, ~ bb2@2 ~ bb2@3 ~", // Bb Bb5 Bbm
  AZ: "bb3 ~@3 bb3@4 ~@12 bb3@4 [bb3,eb4,g4]@4 [eb3,bb3]@3 ~, eb2@13 ~ bb3@6 ~@12, [eb4,ab4]@8 [bb3,eb4,ab4]@7 ~ eb2@15 ~, ~ eb3@2 eb3@4 ~, ~@2 [eb4,g4] ~", // Eb Eb5 Ab5 Ebsus4 Eb
  BA: "c4 ~ [eb4,g4,c5] ~@2 [c3,c4] [c3,c4,eb4,g4,c5]!2, c2@7 ~ c2@8, [eb4,g4,c5] ~ [eb4,g4,c5] ~, ~ c4@2 c4@2 ~@3", // Cm C Cm
  BB: "~ ab3!2 ~@2 ab3!2 [f3,ab3], f2!2, [c4,f4]!4, ~ f3@2 f3@4 ~, ~@3 ab3@2 ~@3", // Fm F5
  BC: "[bb3@4 ~@4 [db4,f4,bb4]@4 ~@12 [db4,f4,bb4]@4 ~@8 bb3@4 [bb2,bb3,db4]@4 [bb2,bb3,db4]@3 ~ bb3@4 bb3@4 [bb3,db4,ab4]@4 ~@4 eb4@4 ~@48 eb4@4 ab4@4 ~@37 [g4,bb4]@31, bb1@14 ~@2 bb1@13 ~@3 bb1@14 ~@2 bb1@14 ~@2 [eb2,g4]@12 ab4@4 [bb4,bb5]@44 ab2@4 [db5,f5,ab5]@4 ab4@4 [db3,db5,f5,ab5]@4 ab4@4 [db5,f5,ab5]@12 ab4@7 ~@29, [db4,f4,bb4]@4 ~@2 bb3@4 bb3@5 bb3@3 ~@6 [db4,f4,ab4]@4 ~@6 eb3@10 db5@4 c6@26 ab4@2 [db3,bb4]@4 [ab2,c4,eb4]@16, ~@2 [bb2,bb3]@4 bb2@8 bb2@6 ~@10 [bb2,bb3]@8 ab5@6 db6@18 ab4@2 db2@17 ~@15, ~@16 [db4,f4,bb4]@8 ~@8 [db4,f4,bb4]@8 [f4,bb4]@7 ~@9 f4@12 eb4@4 f4@24 [ab2,c5]@16 ab4@8 [eb4,c5]@42 ~@30]/6", // Bbm Bbm7 Gm Eb Bb Db Bbm Db …
})).s("gm_piano").gain(0.18).pan(0.4)

// other · pan flute
const pan_flute = note(`<
  ~ A@2 ~@17 B C D E F G H I ~ J K L ~@5 M N O P Q R@2 S T U V N W X Y Z AA AB AC N AD AE X AF AG AH AI AJ AK AL AM AN
  AO AP AQ AR AS AT@2
>`.pickRestart({
  A: "[bb4@3 ~]/2", B: "~@14 db5 eb5", C: "db5@29 ~@3", D: "~@4 ab5 ~ gb5@2 f5@11 ~ ab5@3 ~ gb5@5 ~ f5@2",
  E: "gb5@31 ~", F: "~@24 gb5@7 ~", G: "gb5 f5", H: "~@24 f5@7 ~", I: "f5 gb5@3", J: "~@3 ab4", K: "ab4", L: "db5@3 ~",
  M: "~@2 ab4 bb4 b4@3 bb4", N: "ab4@31 ~", O: "ab4@21 ~@3 eb5@2 f5 ~ g5@2 ab5@2", P: "g5@2 ab5@2 g5@2 ab5@2 g5@23 ~",
  Q: "f5", R: "[ab5@31 g5@32 ~]/2", S: "~@8 g5@3 ~ ab5@4 bb5@15 ~", T: "~@8 db6@4 eb6@4 db6@3 ~ c6@3 db6@8 ~",
  U: "db5@23 ~ bb4@8", V: "ab4@3 ~", W: "~@4 bb4 c5 bb4 a4 bb4@8", X: "bb4@15 ~", Y: "~@8 g4@2 ab4 ~ g4@2 eb4@2 c4@16",
  Z: "~@16 ab4@15 ~", AA: "~@2 db5@2 eb5@2 db5 c5", AB: "db5@2 ~ bb4", AC: "c5@31 ~", AD: "~@4 c5 db5 c5 ab4 bb4@8",
  AE: "bb5", AF: "~@4 g4 ab4 g4 ab4 g4@4 ab4@4", AG: "bb4@7 ~ bb4@2 c5@2 bb4@2 a4@2 bb4@15 ~", AH: "~@24 c5@7 ~",
  AI: "c5", AJ: "~ db5@2 c5", AK: "bb4@23 ~ bb4@2 c5@2 bb4@2 ab4@2", AL: "bb4 eb5", AM: "c5@24 ab4@4 g4@3 ~",
  AN: "ab4 c5", AO: "ab4@2 bb4@2 ab4@3 ~ bb4@24", AP: "bb4", AQ: "eb4@23 ~@9", AR: "~@4 g4 ab4 eb4@2",
  AS: "~@8 c5@2 db5@2 eb5@2 db5@2 c5@15 ~", AT: "[g4@2 ab4@2 ~ bb4@2 ~ g4@32 ~@24]/2",
})).s("gm_pan_flute").gain(0.12).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B@2 ~@16 C D E F G H I J K L M@2 N ~@3 O@2 P@2 Q R S T U@2 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AA AB AM AN
  AE AF AG AH AI AO AP@4
>`.pickRestart({
  A: "~ [b4,eb5] [bb4,db5] [ab4,b4]", B: "[[gb4,bb4]@43 ~@21]/2", C: "[gb4,bb4]@23 ~ [bb4,db5]@7 ~",
  D: "b4, ab4@29 ~@3", E: "db5@16 b4@15 ~, ab4", F: "[db5,f5]", G: "gb5@16 bb5@13 ~@3, eb5",
  H: "[eb5,ab5]@23 ~ [eb5,gb5]@8", I: "[db5,gb5]@15 ~ [db5,f5]@16", J: "[db5,f5]@23 ~ [db5,f5]@8",
  K: "f5@4 gb5@2 f5@2 eb5@23 ~", L: "~@4 bb5@4 b5@4 ab5@3 ~ ab5@16", M: "[~ eb5, ab5@63 ~]/2", N: "[f5,bb5]",
  O: "[db5@63 ~]/2", P: "[eb5@5 b4 db5 eb5]/2", Q: "f5@15 ~ g5@4 eb5@2 f5@2 g5@2 eb5@2 g5@2 bb5@2",
  R: "[ab5,c6]@27 ~ ab5@4", S: "c6@16 ab5@15 ~", T: "ab5 f6", U: "[eb6 bb5 c6@12 c6@2]/2", V: "db6@28 ab5@3 ~",
  W: "ab5@3 ~ bb5@3 ~ bb5@24", X: "c6@16 ab5@4 bb5@4 ab5 bb5 c6 ~ db6 eb6 f6 ~", Y: "c6@4 ab5@2 bb5 ab5, eb6@7 ~",
  Z: "[bb5,f6]", AA: "[ab5,c6] [bb5,eb6]", AB: "[ab5,eb6]@5 c6 ab5 bb5", AC: "eb6@4 f6@4 f6@19 ~ ab6@2 f6@2",
  AD: "eb6@4 db6@4 f5@4 db6@19 ~", AE: "[bb5,eb6]", AF: "[c6,eb6]@4 eb5@2 f5@2 f5@2 g5@2 bb5@2 c6 bb5",
  AG: "[ab5,c6]@23 ~ [ab5,c6]@8", AH: "[f5,db6]", AI: "db6@2 c6 db6, f5@29 ~@3", AJ: "[eb5,bb5]",
  AK: "[c6,eb6]@4 ab5@2 bb5 ab5", AL: "[bb5,f6]@31 ~", AM: "eb6@4 f6@3 ~ f6@19 ~ ab6@2 f6@2", AN: "eb6 db6 f5 db6@5",
  AO: "bb5, eb5@29 ~@3", AP: "[eb5@32 f5@32 eb5@41 ~@23, c6@107 ~@21]/4",
})).s("gm_string_ensemble_1").gain(0.1).pan(0.3)

// bass · fretless bass
const bass = note(`<
  ~ A ~@17 B C D E F G H I J K L M N@2 ~@2 O P ~@2 Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK Z AL AM AN AO AP
  AQ AR AS AT AU AV AW AX AY@2
>`.pickRestart({
  A: "gb1@31 ~", B: "gb1@10 ~@2 gb1@4 eb1@15 ~", C: "ab1@11 ~ bb1@3 ~ b1@8 eb2@8", D: "db2@9 ~@3 db2 ~@3 db2@16",
  E: "gb1@11 ~ gb1@3 ~ gb1@2 ~@2 gb1@2 ab1@2 bb1@8", F: "b1@10 ~@2 b1 ~@3 b1@11 ~ bb1@2 eb1@2",
  G: "ab1@11 ~ bb1@4 b1@4 bb1@4 ab1@4 eb2@2 b1@2", H: "db2@9 ~@3 db2 ~@3 db2@12 b1@2 f1@2",
  I: "bb1@9 ~@3 bb1@2 ~@2 bb1@11 ~ bb1@2 db1@2", J: "eb1@15 ~ eb1@16", K: "ab1@10 ~@2 ab1 ~@3 ab1@14 ~@2",
  L: "ab1@10 ~@2 ab1@2 ~@2 ab1@8 b1@7 ~", M: "db1@5 ~ db1 ~ db1@6 ab1@2", N: "[gb1@39 ~@25]/2", O: "~@14 f2 ~",
  P: "bb1 ~", Q: "db2@15 ~ eb2@11 ~ eb2@4", R: "ab1@11 ~ ab1@2 ~@2 ab1@12 eb2@4", S: "db2@11 ~ db2 ~@3 db2@14 ~@2",
  T: "db2@10 ~@2 db2 ~@3 db2@15 ~", U: "c2@11 ~ c2@3 ~ c2@4 c3@3 ~ bb2@4 g2@2 eb2 ~", V: "c2@10 ~@2 c2 ~@3 c2@16",
  W: "bb1@11 ~ [bb1,b1] ~@3 bb1@15 ~", X: "eb1@10 ~@2 eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1@4",
  Y: "ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@3 ~ ab1@4", Z: "ab1@11 ~ ab1@2 c2@2 f1@12 ~@2 f1@2",
  AA: "bb1@11 ~ bb1@3 ~ bb1@3 ~ bb1@4 c2@4 db2@4", AB: "eb2@11 ~ eb2@3 ~ eb2@3 ~ eb2@3 ~ eb2@5 ~ eb2@2",
  AC: "ab1@11 ~ ab1@3 ~ ab1@4 bb1@4 c2@6 ab1@2", AD: "db2@11 ~ db2@3 ~ db2@12 f2@4",
  AE: "bb1@11 ~ bb1@3 ~ bb1@12 f2@2 db2@2", AF: "eb1@10 ~@2 eb1@3 ~ eb1@11 ~ eb2@2 bb1@2, f1 ~@31",
  AG: "c2@11 ~ c2@9 ~ c2@6 eb2@2 c2@2", AH: "f1@11 ~ f1 ~@3 f1@12 ~@2 f1@2", AI: "bb1@10 ~@2 bb1 ~@3 bb1@11 ~ f1@4",
  AJ: "bb1@10 ~@2 bb1 ~@3 bb1@11 ~ f2@2 bb1@2", AK: "eb1@4 eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1 ~ eb1@2",
  AL: "bb1@10 ~@2 bb1 ~@3 bb1@8 c2@4 db2@4", AM: "eb2@11 ~ eb2@3 ~ eb2@11 ~ eb2 ~ eb2@2",
  AN: "ab1@10 ab1@3 ~ ab1 ~ ab1@8 ~@4 bb1@4", AO: "db2@12 db2@2 ~@2 db2@13 ~ f2@2", AP: "bb1@11 ~ bb1 ~@3 bb1@8 db2@8",
  AQ: "eb1@5 ~ eb1 ~ eb1@4 eb2@2 bb1@2", AR: "c2@11 ~ c2@5 ~ c2@5 ~ c2@3 ~ eb2@2 c2@2",
  AS: "f1@10 ~@2 f1 ~@3 f1@12 ~@2 f1@2", AT: "bb1@10 ~@2 bb1 ~@3 bb1@15 ~", AU: "bb1@15 ~ bb1@16", AV: "eb1", AW: "ab1",
  AX: "db2", AY: "[ab1 eb2 c3 ab1@13]/2",
})).s("gm_fretless_bass").gain(0.21)

// bass · synth bass 2
const bass_2 = note(`<
  ~@10 A B C D E F G H I J K L M N O P F Q R S T U ~@3 V@2 W@2 X G Y P Z AA F AB R AC F AD AE AF F AD AA AG AH F Q AC F
  AD AE P AI AD AA AG AH F Q AE P AJ@2
>`.pickRestart({
  A: "~@15 db3", B: "gb2@13 ~ db3 gb2", C: "b2@7 gb2", D: "b1@29 ~ b1@2", E: "bb1@7 f2", F: "bb1", G: "ab1@7 eb2",
  H: "db2@27 ~ db2@4", I: "gb1@15 ~", J: "gb1 eb1", K: "ab1@3 bb1 b1@2 eb2@2", L: "db2@15 ~ db2@16",
  M: "gb1@5 ab1 bb1@2", N: "b1", O: "ab1@3 bb1 b1@4", P: "db2", Q: "eb1", R: "ab1@15 ~", S: "ab1@15 ~ ab1@8 b1@8",
  T: "db2@7 ab2", U: "gb2", V: "bb2/2", W: "ab2/2", X: "db2 eb2", Y: "db2@7 ab1", Z: "c2@31 ~", AA: "c2", AB: "eb1@7 ~",
  AC: "ab1 f1", AD: "eb2", AE: "ab1", AF: "db2@7 f2", AG: "f1", AH: "bb1@31 ~", AI: "bb1@27 ~ db2@4",
  AJ: "[ab2@21 ~@11]/2",
})).s("gm_synth_bass_2").gain(0.14)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  A B@2 ~@16 C D E F G D H I J D@2 K J ~@3 L@2 M@2 N O P Q R S L@2 T U J V W A J X Y Z AA Z J U J V Y A J X Y Z A Z X Y
  A AB@2
>`.pickRestart({
  A: "db3", B: "[gb2@41 ~@23]/2", C: "bb2@12 b2@3 ~ bb2@8 db3@8", D: "b2", E: "ab2@3 bb2 b2@2 db3@2", F: "gb2",
  G: "b2@31 ~", H: "ab2@15 ~ ab2@16", I: "bb2@23 ~ bb2@7 ~", J: "bb2", K: "ab2 b2", L: "bb2/2",
  M: "[b2@48 bb2@8 b2@7 ~]/2", N: "ab2 bb2", O: "ab2@14 c3 ~", P: "db3@15 ~ db3@15 ~", Q: "db3@15 ~ db3@16",
  R: "c3@6 f3 eb3", S: "c3@23 ~ c3@8", T: "ab2@20 ab2 ~@7 ab2@3 ~", U: "ab2", V: "eb3 bb2", W: "c3@6 bb2 c3", X: "eb3",
  Y: "c3", Z: "f2", AA: "db3@31 ~", AB: "[c3@21 ~@11]/2",
})).s("gm_string_ensemble_1").gain(0.11).pan(0.7)

// other · french horn
const french_horn = note(`<
  ~@18 A B C D E F G H I J K L M N ~@3 O@2 P Q R S T U V W X Y M Z@3 AA AB AC AA@3 AC N F AD AE AF AA N AC AG@2 AA AC N
  AH AI N AJ@2
>`.pickRestart({
  A: "~@4 db3@4 gb3@4 ab3@4 bb3@4 db4@4 gb4@4 ab4@3 ~", B: "bb3@11 ~ b3@4 bb3@16", C: "b3@6 db4@2 b3@7 ~",
  D: "ab3@11 ~ bb3@4 b3@16", E: "bb3@6 db4@2 bb3@7 ~", F: "bb3", G: "b3@11 ~ b3@3 ~ b3@16",
  H: "ab3@11 ~ ab3@3 ~ ab3@16", I: "~@4 f3@4 db4@15 ~ db4@8", J: "~@4 gb3@4 db4@15 ~ db4@7 ~",
  K: "b3@4 bb3@4 b3@4 eb4@2 db4@2 b3@7 ~ eb4@5 ~ gb4@2", L: "db4@8 eb4@8 ab3@15 ~", M: "ab3", N: "db4", O: "db4/2",
  P: "b3@31 ~", Q: "b3@8 ab3@7 ~ bb3@8 b3@8", R: "ab3@15 ~ eb4@15 ~", S: "eb4@15 ~ eb4@15 ~", T: "eb4@4 db4@2 eb4 f4",
  U: "eb4 db4", V: "g3 bb3 c4@6", W: "~@4 g3@4 c4@23 ~", X: "f3", Y: "g3",
  Z: "[~@8 eb4@8 f4@19 ~@5 f4@7 ~ f4@23 ~ db4@8 eb4@15 ~]/3", AA: "eb4", AB: "db4@31 ~", AC: "f4", AD: "~ eb4 f4@2",
  AE: "~@8 f4@7 ~ f4@16", AF: "~@8 db4@8 eb4@15 ~", AG: "eb4@31 ~", AH: "bb3@15 ~", AI: "c4", AJ: "[g3@21 ~@11]/2",
})).s("gm_french_horn").gain(0.1).pan(0.1)

// other · piano
const piano_2 = note("<~@40 A@7 B C D E D F G F H F@3 I J K L M F N D F@4 O ~@4>".pickRestart({
  A: "~@8 eb3 ~@15 eb3 ~@7", B: "~@4 eb3 ~ eb3!26",
  C: "eb3 ~ eb3 ~@5 eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~@3 eb3 ~",
  D: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~",
  E: "eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~",
  F: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~",
  G: "eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~",
  H: "eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~",
  I: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3!24",
  J: "eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~@5",
  K: "eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~@3",
  L: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~@3",
  M: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~@3",
  N: "eb3 ~ eb3 ~@3 eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~@3", O: "eb3 ~@31",
})).s("gm_piano").gain(0.1)

// other · piano · soft notes
const piano_soft = note("<~@47 A B C D C ~ E ~ F ~@4 G H I J ~ K ~@10>".pickRestart({
  A: "~@5 eb3 ~@26", B: "~@4 eb3 ~ eb3 ~@7 eb3 ~@7 eb3 ~@5 eb3 ~@3", C: "~@14 eb3 ~@17", D: "~@6 eb3 ~@7 eb3 ~@17",
  E: "~@2 eb3 ~@11 eb3 ~@17", F: "~@6 eb3 ~@25", G: "~@6 eb3 ~@21 eb3 ~ eb3 ~", H: "~@6 eb3 ~@7 eb3 ~@15 eb3 ~",
  I: "~@14 eb3 ~@7 eb3 ~@7 eb3 ~", J: "~@30 eb3 ~", K: "~@4 eb3 ~@25 eb3 ~",
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct("<~@19 A@12 B ~@8 A@4 C A@2 ~ C@3 D C@3 B C@3 B C@3 E C@3 F C@2 B@2 ~@4>".pickRestart({
// … 49 more lines

More by Clerc Julien