Strudelify
Femmes... je vous aime cover art

1984 · Femmes, indiscrétion, blasphème

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 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 14 ms ahead of the beat; the grid follows it, so its parts stay together.
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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~ A@2 B C@2 D@2 E F G B H@2 I J K L M N O P Q R S T U V W@2 X@2 Y Z@2 AA@3 AB AC AD AE@2 AF@2 AG AH@2 AI AJ AK AL AM
  AN AO AP AQ AR@2 AS AT@2 AU AV AW AX AY AZ BA BB@5 BC ~
>`.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, ~@2 gb3@13 ~, ~@2 db4@2 bb4@3 ~, ~@6 f4@4 db4@5 ~",
  C: "[~@6 b4 ~@8 gb4, b2@7 gb4@4 gb4@2 eb4 b4@2, ~@2 b3@13 ~ b2@15 ~, ~@4 eb4@4 db5@7 ~@5 eb4@4 db5@7 ~, ~@6 gb4@4 eb4@5 ~@3 b3@13 ~]/2",
  D: "[~@12 gb4@2 f4 ~@13 gb4@2 [bb2,bb3]@2, bb2@10 bb3@5 ~@3 bb3@6 ab4@7 ~, ~@2 f3@13 ~ bb2@10 bb3@4 ~@2, ~@4 bb3@4 ab4@7 ~@7 f4@9 ~, ~@6 db4@9 db4@5 db4@11 ~]/2", // Bb
  E: "~@6 f4 gb4, ab2@15 ~, ~@2 ab3@6 gb4@2 ab3@5 ~, ~@4 b3@11 ~, ~@6 eb4@9 ~",
  F: "~@4 gb4 ~ f4 gb4, ab2, ~ ab3@4 ab3@3, ~ b3@3, ~@3 eb4@3 ~@2",
  G: "~@12 gb4@2 f4 db4, db2, ~@2 ab3@8 b3@5 ~, ~@4 b3@4 ab4@7 ~, ~@6 db4@9 ~",
  H: "[~@12 b4@2 gb4 ~@13 db4@2 b3@2, b2@8 db5@2 b4 bb4@4 ~@5 b3@10 ~@2, ~@2 gb3@13 ~ b2@15 ~, ~@4 b3@11 ~@3 gb3@6 eb4@7 ~, ~@6 eb4@9 eb4@7 db4@4 gb3@5 ~]/2",
  I: "~@6 f4 db4, bb2@15 ~, ~@2 bb3@6 ab4@7 ~, ~@2 db4@5 ~, ~@6 f4@4 bb3@5 ~",
  J: "~@6 bb4 f4, bb2@10 db4@5 ~, bb3@4 bb3@11 ~, ~@2 f3@13 ~, ~@6 db4@2 db5@7 ~",
  K: "~@7 gb4, ab2@3 f4, ~ gb3@7, ~@2 ab3@2 gb4 ab3@3, ~@3 b3@5",
  L: "~@5 ab3 gb4 [db4,f4], db4@3 ~, ~@2 ab2@13 ~, ~ db3@3, ~@6 ab3@2 [b3,gb4]@4 b3 ~@3", // Db B5
  M: "~@7 gb4, gb2@5 gb3 db4@2, ~ db3@7, ~ gb3 b3@2, ~@3 bb3@5",
  N: "~@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
  O: "~@2 b3@2 b3@2 b3@2 ab3@2 ab3@2 ~@3 ab3, ab2@7 ab2, [eb4,ab4] ab4@2 ~, ~ eb4 [b3,eb4] [ab3,b3,eb4,ab4]", // Ab5 B Abm
  P: "~@2 ab3@2 ~@3 ab3 ab3@2 ab3@2 [ab3,db4,f4]@2 db3@2, db2@15 ~, [db4,gb4]@4 gb4@11 ~, ~ [ab3,db4] [db4,f4] ~, ~@3 db3@4 ~", // Db Gb5 Db5 Db
  Q: "bb3@2 bb3@2 ~@4 [bb3,db4]@2 ~ [bb3,db4] [bb3,db4,ab4]@2 [bb3,db4,f4]@2, gb2@15 ~, gb3@6 gb3@4 gb3@5 ~, [db4,f4]@2 [bb3,db4,f4]@2 f4@3 ~, ~@11 gb4@4 ~", // Bbm Bbm7 Bbm Db Bbm
  R: "b3!2 ~@2 [b3,eb4,gb4] gb3 [b3,eb4,gb4] [b2,gb3,b3], b2@7 ~, [eb4,gb4] [b3,eb4,gb4] ~@2, ~@3 gb3@2 ~@3", // B B5 Ebm B
  S: "~@5 ab3!2 [ab2,ab3], ab2@7 ~, [b3,eb4,ab4]!4, ~ ab3@2 ab3@2 ~@3", // Ab Abm
  T: "ab3@2 ab3@2 ~@3 ab3!2 ~ ab3@2 [ab3,db4,f4]@2 [db3,ab3]@2, db3@3 db3@4 ~, [db4,gb4]@4 [ab3,db4,gb4]@4 [db4,f4]@4 ~@2 db4 ~", // Db Db5 Gb5 Dbsus4 Db
  U: "bb3@2 bb3@2 bb3@2 bb3@2 [bb3,db4,f4]@2 ~@2 [bb2,db4,f4]@2 [bb3,db4,f4]!2, bb2@11 ~@5, [db4,f4]@2 [db4,f4]@2 ~ bb3@2 ~", // Bbm Db
  V: "[gb3,eb4]@4 gb3@2 ~@4 gb3@2 [gb3,bb3,eb4]@2 gb3 ~, eb2@15 ~, bb3 ~@3 [bb3,eb4]@4 [bb3,eb4]@4 ~@4, ~@3 gb3@2 ~@3", // Ebm Eb5
  W: "[ab3!3 ~@3 [b3,eb4] ~@6 ab3 ~ [b1,ab3], ab2@15 ~ ab2@14 ~@2, [b3,eb4]!3 ~ [b3,eb4]!4, ~@3 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ~@3]/2", // B E B
  X: "[~@6 b4 ab4 ~@6 f4@2, db2@15 ~ [gb2,bb4]@15 ~, ~ db4@3 ab4 db4@4 db4@2 db4@2 db4@3, ~@4 eb4@11 ~@9 f4@4 ~@4, ~@6 gb4@9 ~@5 gb4@11 ~]/2", // Gb
  Y: "~@7 db4, gb2@5 db4 db5@2, ~ gb3@7, ~ db4 bb4@2, ~@3 f4@5",
  Z: "[~@14 db5 [b2,gb4], b2@6 db5@2 gb5@11 b3@7 gb4@4 ~@2, 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
  AA: "[~@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@5 ~, ~@4 bb3@4 ab4@7 ~@5 db4@11 ~@3 ab3@4 eb4@9 ~, ~@6 db4@4 bb3@5 bb3@3 bb3@6 ab4@7 ~@5 b3@11 ~]/3",
  AB: "~@3 eb3!5, ab2, ~ eb3@2 ~ ab3@2 [ab3,eb4]@2, ~ ab3 b3@2", // Ab5
  AC: "~@3 ab4 g4 ~@2 bb3, [db2,db3]@7 ~ [eb2,eb3,bb4]@8, f4!2 eb4!2, ~@2 db4@5 ~@3 g4@6", AD: "ab3!8, ab2, [c4,eb4]!4",
  AE: "[f3@2 f3@2 [f3,ab3]@2 ~ [f3,ab3] ~@3 f3!5 f3@2 f3@2 ~@3 f3 f3@2 f3@2 [db3,f3,ab3,db4]@2 db3@2, db2@8 [f3,ab3]@2 db2@4 ab3@2 db2@15 ~, [ab3,eb4]@2 eb4@4 ab3 f4@9, ~@2 db3@4 db3@6 [db3,eb4]@3 db3 [ab3,eb4]@4 eb4@12, ~@4 db4@6 [f3,ab3] db3 [ab3,db4]@2 ~@2]/2", // Fm Db Fm Ab5 Dbsus2 Ab5 Fm Db5
  AF: "[c4@2 c4@2 c4@2 c4@2 ~@4 [c4,eb4,g4]@2 ~ c4 c4@2 c4@2 ~@10 c3@2, c2@15 ~ c2@16, [eb4,g4]!2 [c4,eb4,g4] ~ [eb4,g4] [c4,eb4,g4] [c4,g4]@2, ~ c3@2 c3@2 c3@2 c3@4 c3@2 c3@2 ~, ~@6 eb4 [g3,bb3,eb4]]/2", // Cm Eb Cm Eb Cm C5 Eb
  AG: "~@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
  AH: "[g3@2 g3@2 g3@2 g3@2 g3@2 g3@2 ~@4 ab2@3 ~ ab3@2 ab3@2 [ab2,ab3]@2 [ab2,ab3]@2 [ab2,ab3,f4,f5]@2 [ab3,g4,g5] ~, eb2@16 [c4,eb4]@3 ab2 [bb3,bb4]@2 [c4,c5]@2 [db4,db5]@2 [eb4,eb5]@4 ab2@2, [bb3,eb4]@4 eb4@8 bb3@2 eb3@17 ~, ~@2 eb3@4 eb3@2 bb3@2 eb3@2 [g3,g4]@19 ~, ~@4 bb3@4 f4@8 ab4@15 ~]/2", // Ab Db Abmaj7 Cm Bb C Db Eb …
  AI: "ab3@2 ~@8 ab3@2 [ab3,c4,f4]@2 f3 ~, [ab2,ab4,ab5]@7 ~ f2@7 ~, ~ ab3@2 ab3@2 f3@2 ~, ~ [c4,eb4] [c4,f4] ~", // Fm Ab Cm F5
  AJ: "bb3@2 bb3@2 bb3@2 bb3@2 ~@3 bb3 [bb1,bb3,db4,f4]@2 [bb3,db4,f4]@2, bb1@3 ~, [db4,f4]!2 [bb3,db4,f4] ~, ~ bb2@4 bb2@3", // Bbm Db Bbm
  AK: "~ eb3@2 [bb3,eb4,ab4] bb3!2 [bb3,eb4] [eb3,bb3,eb4,bb4], [eb2,bb3,eb4,ab4]@3 eb3@4 ~, ~ eb2, ~@2 [eb4,g4] g4", // Ebsus4 Eb5 Ebsus4 Eb
  AL: "eb4!4 ab2@2 ~ [bb4,bb5], c5, ab4@3 ~, ab2@2 ~ [ab2,ab4,ab5], ~ g4 [eb4,g4]@2", // Bb Ab Eb
  AM: "~@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
  AN: "bb2 ~@3 bb3!2 [bb3,db4,bb4] [bb2,db4,f4], bb1@15 ~, bb4@5 bb2@2 ~, [db4,f4]@2 [bb3,db4,f4]@2 f4@3 ~, ~@2 bb2@4 bb2@2 db4@4 ~@2 bb3 ~", // Bbm Db Bbm
  AO: "~ eb3@2 eb4 ~@2 [bb3,eb4,g4] [eb3,bb3,eb4], [eb2,bb3,eb4]@3 eb3@2 eb3@2 ~, ~@6 bb3 ~ eb2@7 ~, ~@2 [bb3,eb4,g4] ~", // Eb Eb5 Eb
  AP: "~@7 c3, [c2,c4,eb4], ~ c3@2 c3@2 c3@2 ~, ~ [g4,g5]@2 [g4,g5], ~ [f4,f5]", // Cm G F
  AQ: "[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
  AR: "[~@6 [bb3,db4,f4] ~@7 db4 [bb2,bb3], [bb1,f5]@15 ~ [bb1,f4]@15 ~, [bb4,db5]@4 db5@11 bb3 bb4@6 bb3@2 bb4@7 ~, ~ bb2@2 bb2 [db4,f4] bb2@2 bb2@8 ~, ~@4 [f4,bb4]@4 bb4@7 db4@3 bb3@2 db4@6 bb3@4 ~@2]/2", // Bbm Bb Bb5 Bbm Db Bb5
  AS: "~@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
  AT: "[ab4@2 ab4@2 ab4@2 [ab3,ab4]@2 f4@2 f4@2 f4@2 [f2,f3] ~@3 f4@2 f4@2 ~@4 f4@2 [f4,bb4]@2 [bb2,f4,bb4]@2, ab2@4 f2@3 ~ bb1@4 bb1@4, [c5,ab5]!2 [ab4,c5,f5]!2 [bb4,db5,f5]!3 [db5,f5], ~ ab3@2 ~@2 f3@2 f4@2 bb2@2 bb2@4 ~, ~@11 f4@2 ~@3]/2", // Ab F Bb5 Fm Bbm Db
  AU: "bb4@2 bb4@2 [bb4,eb5,ab5]@2 [bb4,g5] ~ bb4@2 bb4@2 ~@2 eb3@2, eb2@7 ~ [eb2,g5]@8, [eb5,ab5] ~ eb5 [bb4,eb5], ~ eb3@2 eb3@4 ~", // Ebsus4 Eb Ab5 Eb5
  AV: "[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
  AW: "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
  AX: "~@2 bb3@2 bb3@2 [bb2,bb3]@2 bb3@2 bb3@2 ~@3 bb3, bb1, [f4,bb4] [db4,f4,bb4]!2 [bb3,db4,f4,bb4], ~ bb2@2 ~ bb2@3 bb2", // Bb Bb5 Bbm
  AY: "bb3 ~ bb3@2 [bb3,eb4,ab4]@2 ~@4 bb3@2 [bb3,eb4,g4]@2 bb3@2, eb2@7 ~ eb2@7 ~, [eb4,ab4]@4 ~@3 bb3@3 ~@6, ~@2 eb3@4 eb3@8 eb3 ~, ~@2 [eb4,g4] ~", // Ebsus4 Eb Ab5 Eb
  AZ: "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
  BA: "~ ab3!2 ~@2 ab3!2 [f3,ab3], f2!2, [c4,f4]!4, ~ f3@2 f3@4 ~, ~@3 ab3@2 ~@3", // Fm F5
  BB: "[bb3@2 ~@2 [db4,f4,bb4]@2 ~@6 [db4,f4,bb4]@2 ~@4 bb3@2 [bb2,bb3,db4,f4,bb4]@2 [bb2,db4] ~ bb3@2 bb3@2 [bb3,db4,ab4]@2 ~@2 eb4@2 ~@24 eb4@2 ab4@2 ~@16 ab4@2, bb1@7 ~ bb1@7 ~ bb1@7 ~ bb1@7 ~ [eb2,g4]@6 ab4@2 [bb4,bb5]@22 ab2@2 [db5,f5,ab5]@2 ab4@2 [db3,db5,f5,ab5]@2 ab4@2 [db5,f5,ab5]@2 ab4@2 [db3,bb4]@4, [db4,f4,bb4]@4 ~@2 bb3@4 bb3@5 bb3@3 ~@4 bb3@2 ~@10 eb3@10 db5@4 c6@32, ~ [bb2,bb3]@2 bb2@4 bb2@3 ~@5 [bb2,bb3]@4 ab5@3 db6@9 ab4 db2@8, ~@4 [db4,f4,bb4]@2 ~@2 [db4,f4,bb4]@2 ~@2 [db4,f4,ab4]@2 f4@3 eb4 f4@6 [ab2,c5]@4 ab4@2 [eb4,c5]@10]/5", // Bbm Bbm7 Eb Bb Db Gb Bbm Bb …
  BC: "~ bb4@15, [ab2,c4,eb4,g4]", // Abmaj7
})).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 K N O P Q R S T U V K W X Y Z AA AB AC K AD AE X AF AG AH AC AI AJ AK AL AM
  AN X AO AP AQ AR@2
>`.pickRestart({
  A: "[bb4@3 ~]/2", B: "~@14 db5 eb5", C: "db5@15 ~", D: "~@2 ab5 gb5 f5@6 ab5@2 gb5@3 f5", E: "gb5@15 ~", F: "~@3 gb5",
  G: "gb5 f5", H: "~@12 f5@3 ~", I: "f5 gb5@3", J: "~@3 ab4", K: "ab4", L: "db5@3 ~", M: "~@2 ab4 bb4 b4@3 bb4",
  N: "ab4@10 ~@2 eb5 f5 g5 ab5", O: "g5 ab5 g5 ab5 g5@12", P: "f5", Q: "ab5", R: "g5", S: "~@4 g5@2 ab5@2 bb5@7 ~",
  T: "~@2 db6 eb6 db6 c6 db6@2", U: "db5@3 bb4", V: "ab4@3 ~", W: "~@4 bb4 c5 bb4 a4 bb4@8", X: "bb4@15 ~",
  Y: "~@4 g4 ab4 g4 eb4 c4@8", Z: "~ ab4", AA: "~@2 db5@2 eb5@2 db5 c5", AB: "db5@2 ~ bb4", AC: "c5",
  AD: "~@4 c5 db5 c5 ab4 bb4@8", AE: "bb5", AF: "~@4 g4 ab4 g4 ab4 g4@4 ab4@4", AG: "bb4@4 bb4 c5 bb4 a4 bb4@7 ~",
  AH: "~@3 c5", AI: "~ db5@2 c5", AJ: "bb4@11 ~ bb4 c5 bb4 ab4", AK: "bb4 eb5", AL: "c5@6 ab4 g4", AM: "ab4 c5",
  AN: "ab4 bb4 ab4@2 bb4@12", AO: "eb4@11 ~@5", AP: "~@4 g4 ab4 eb4@2", AQ: "~@4 c5 db5 eb5 db5 c5@7 ~",
  AR: "[g4 ab4 ~ bb4 g4@16 ~@12]/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 Z AA AB AC AD
  AE AF AG AH AI AL AM@4
>`.pickRestart({
  A: "~ [b4,eb5] [bb4,db5] [ab4,b4]", B: "[[gb4,bb4]@21 ~@11]/2", C: "[gb4,bb4]@11 ~ [bb4,db5]@4", D: "[ab4,b4]",
  E: "db5 b4, ab4", F: "[db5,f5]", G: "gb5@8 bb5@7 ~, eb5", H: "[eb5,ab5]@11 ~ [eb5,gb5]@4", I: "[db5,gb5] [db5,f5]",
  J: "[db5,f5]@3 [db5,f5]", K: "f5@2 gb5 f5 eb5@11 ~", L: "~ bb5 b5 ab5 ab5@4", M: "[~ eb5, ab5]/2", N: "[f5,bb5]",
  O: "[db5@31 ~]/2", P: "[eb5@5 b4 db5 eb5]/2", Q: "f5@8 g5@2 eb5 f5 g5 eb5 g5 bb5", R: "[ab5,c6]@7 ab5", S: "c6 ab5",
  T: "ab5 f6", U: "[eb6 bb5 c6@12 c6@2]/2", V: "db6@7 ab5", W: "ab5 bb5 bb5@6",
  X: "c6@8 ab5@2 bb5@2 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@2 f6@2 f6@10 ab6 f6", AD: "eb6 db6 f5 db6@5",
  AE: "[bb5,eb6]", AF: "[c6,eb6]@4 eb5@2 f5@2 f5@2 g5@2 bb5@2 c6 bb5", AG: "[ab5,c6]@11 ~ [ab5,c6]@4", AH: "[f5,db6]",
  AI: "db6@2 c6 db6, f5@7 ~", AJ: "[eb5,bb5]", AK: "[c6,eb6]@4 ab5@2 bb5 ab5", AL: "bb5, eb5@7 ~",
  AM: "[eb5@4 f5@4 eb5@5 ~@3, c6@27 ~@5]/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 D@2 S T U V W X Y Z AA AB AC AD AE AF AG AH AI X AJ AK AL AM AN
  AO AP AF AQ AR AS AT AU AV@2
>`.pickRestart({
  A: "gb1@15 ~", B: "gb1@5 ~ gb1@2 eb1@8", C: "ab1@5 ~ bb1@2 b1@4 eb2@4", D: "db2@5 ~ db2 ~ db2@8",
  E: "gb1@5 ~ gb1 ~ gb1 ~ gb1 ab1 bb1@4", F: "b1@5 ~ b1 ~ b1@5 ~ bb1 eb1", G: "ab1@6 bb1@2 b1@2 bb1@2 ab1@2 eb2 b1",
  H: "db2@5 ~ db2 ~ db2@6 b1 f1", I: "bb1@5 ~ bb1 ~ bb1@5 ~ bb1 db1", J: "eb1@7 ~ eb1@8", K: "ab1@5 ~ ab1 ~ ab1@7 ~",
  L: "ab1@5 ~ ab1 ~ ab1@4 b1@4", M: "db1@5 ~ db1 ~ db1@6 ab1@2", N: "[gb1@5 ~@3]/2", O: "~@14 f2 ~", P: "bb1 ~",
  Q: "db2@4 eb2@3 eb2", R: "ab1@6 ab1 ~ ab1@6 eb2@2", S: "c2@5 ~ c2 ~ c2@2 c3@2 bb2@2 g2 eb2", T: "c2@5 ~ c2 ~ c2@8",
  U: "bb1@5 ~ [bb1,b1] ~ bb1@8", V: "eb1@5 ~ eb1@2 eb1@2 eb1@2 eb1@2 eb1@2",
  W: "ab1@2 ab1@2 ab1@2 ab1@2 ab1@2 ab1 ~ ab1@2 ab1@2", X: "ab1@5 ~ ab1 c2 f1@6 ~ f1", Y: "bb1@3 bb1!3 c2 db2",
  Z: "eb2@6 eb2 ~ eb2@2 eb2@2 eb2@3 eb2", AA: "ab1@6 ab1 ~ ab1@2 bb1@2 c2@3 ab1", AB: "db2@6 db2 ~ db2@6 f2@2",
  AC: "bb1@6 bb1 ~ bb1@6 f2 db2", AD: "eb1@5 ~ eb1 ~ eb1@6 eb2 bb1, f1 ~@15", AE: "c2@6 c2@5 c2@3 eb2 c2",
  AF: "f1@6 f1 ~ f1@6 ~ f1", AG: "bb1@5 ~ bb1 ~ bb1@6 f1@2", AH: "bb1@5 ~ bb1 ~ bb1@6 f2 bb1",
  AI: "eb1@2 eb1 ~ eb1@2 eb1 ~ eb1@2 eb1@2 eb1 ~ eb1!2", AJ: "bb1@5 ~ bb1 ~ bb1@4 c2@2 db2@2",
  AK: "eb2@6 eb2 ~ eb2@6 eb2!2", AL: "ab1@5 ab1 ~ ab1 ab1@4 ~@2 bb1@2", AM: "db2@6 db2 ~ db2@6 ~ f2",
  AN: "bb1@6 bb1 ~ bb1@4 db2@4", AO: "eb1@5 ~ eb1 ~ eb1@4 eb2@2 bb1@2", AP: "c2@6 c2@3 c2@2 ~ c2@2 eb2 c2",
  AQ: "bb1@5 ~ bb1 ~ bb1@7 ~", AR: "bb1@7 ~ bb1@8", AS: "eb1", AT: "ab1", AU: "db2", AV: "[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@2 F AA R AB F AC R AD F AC Z AE F@2 Q AB F AC R
  P AF AC Z AE F@2 Q R P AG@2
>`.pickRestart({
  A: "~@15 db3", B: "gb2@13 ~ db3 gb2", C: "b2@7 gb2", D: "b1@14 ~ b1", E: "bb1@7 f2", F: "bb1", G: "ab1@7 eb2",
  H: "db2@13 ~ db2@2", I: "gb1@15 ~", J: "gb1 eb1", K: "ab1@3 bb1 b1@2 eb2@2", L: "db2!2", M: "gb1@5 ab1 bb1@2",
  N: "b1", O: "ab1@3 bb1 b1@4", P: "db2", Q: "eb1", R: "ab1", S: "ab1@7 ~ ab1@4 b1@4", T: "db2@7 ab2", U: "gb2",
  V: "bb2/2", W: "ab2/2", X: "db2 eb2", Y: "db2@7 ab1", Z: "c2", AA: "eb1@7 ~", AB: "ab1 f1", AC: "eb2", AD: "db2@7 f2",
  AE: "f1", AF: "bb1@13 ~ db2@2", AG: "[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 D@2 G H I D@2 J I ~@3 K@2 L@2 M N O@2 P Q K@2 R S I T U A I V W X A X I S I T W A I V W X A X V W A
  Y@2
>`.pickRestart({
  A: "db3", B: "[gb2@21 ~@11]/2", C: "bb2@3 b2 bb2@2 db3@2", D: "b2", E: "ab2@3 bb2 b2@2 db3@2", F: "gb2", G: "ab2!2",
  H: "bb2@12 bb2@3 ~", I: "bb2", J: "ab2 b2", K: "bb2/2", L: "[b2@6 bb2 b2]/2", M: "ab2 bb2", N: "ab2@14 c3 ~",
  O: "db3@7 ~ db3@8", P: "c3@6 f3 eb3", Q: "c3@11 ~ c3@4", R: "ab2@10 ab2 ~@3 ab2@2", S: "ab2", T: "eb3 bb2",
  U: "c3@6 bb2 c3", V: "eb3", W: "c3", X: "f2", Y: "[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 AA@2 AB N AC AB@3 AC N F Z AD AE AB N AC AB@3 AC N F
  AF N AG@2
>`.pickRestart({
  A: "~@2 db3@2 gb3@2 ab3@2 bb3@2 db4@2 gb4@2 ab4 ~", B: "bb3@5 ~ b3@2 bb3@8", C: "b3@6 db4@2 b3@7 ~",
  D: "ab3@3 bb3 b3@4", E: "bb3@6 db4@2 bb3@7 ~", F: "bb3", G: "b3@3 b3 b3@4", H: "ab3@3 ab3 ab3@4",
  I: "~@2 f3@2 db4@7 ~ db4@4", J: "~@2 gb3@2 db4@7 ~ db4@4", K: "b3@2 bb3@2 b3@2 eb4 db4 b3@4 eb4@3 gb4",
  L: "db4@4 eb4@4 ab3@7 ~", M: "ab3", N: "db4", O: "db4/2", P: "b3", Q: "b3 ab3 bb3 b3", R: "ab3 eb4", S: "eb4!2",
  T: "eb4@4 db4@2 eb4 f4", U: "eb4 db4", V: "g3 bb3 c4@6", W: "~ g3 c4@6", X: "f3", Y: "g3", Z: "~ eb4 f4@2",
  AA: "[~@4 f4@4 f4@12 db4@4 eb4@7 ~]/2", AB: "eb4", AC: "f4", AD: "~ f4 f4@2", AE: "~@4 db4@4 eb4@7 ~", AF: "c4",
  AG: "[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@4 I J K L F M D F@4 N ~@4>".pickRestart({
  A: "~@4 eb3 ~@7 eb3 ~@3", B: "~@2 eb3!14", C: "eb3!2 ~@2 eb3!3 ~ eb3!3 ~ eb3!2 ~ eb3", D: "eb3!7 ~ eb3!8",
  E: "eb3!3 ~ eb3!3 ~ eb3!8", F: "eb3!16", G: "eb3 ~ eb3!5 ~ eb3!8", H: "eb3!3 ~ eb3!12", I: "eb3!3 ~ eb3!10 ~@2",
  J: "eb3!3 ~ eb3!3 ~ eb3!7 ~", K: "eb3!7 ~ eb3!3 ~ eb3!3 ~", L: "eb3!15 ~", M: "eb3!2 ~ eb3!12 ~", N: "eb3 ~@15",
})).s("gm_piano").gain(0.1)

// other · piano · soft notes
const piano_soft = note("<~@48 A B C B ~ D ~ E ~@4 F G H I ~ J ~@10>".pickRestart({
  A: "~@2 eb3!2 ~@3 eb3 ~@3 eb3 ~@2 eb3 ~", B: "~@7 eb3 ~@8", C: "~@3 eb3 ~@3 eb3 ~@8", D: "~ eb3 ~@5 eb3 ~@8",
  E: "~@3 eb3 ~@12", F: "~@3 eb3 ~@10 eb3!2", G: "~@3 eb3 ~@3 eb3 ~@7 eb3", H: "~@7 eb3 ~@3 eb3 ~@3 eb3", I: "~@15 eb3",
  J: "~@2 eb3 ~@12 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({
  A: "x ~@2 x!2 ~@3", B: "x", C: "x ~@5 x ~ x ~@6 x", D: "x!2", E: "x ~@4 x ~ x ~@2 x ~@5", F: "x ~@2 x ~@12",
})).gain(0.37)

// drums · snare
const snare = s("sd").struct("<~@19 A@12 ~@9 B@7 C B@3 D B@3 E B@3 F B@3 G B@3 H B@2 D ~@5>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@4 x ~@9", D: "~ x ~@2", E: "~@4 x ~@4 x!2 ~@5", F: "~@2 x ~@2 x ~@2 x ~@7",
  G: "~ x!3", H: "~ x!2 ~",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<~@26 A ~@20 B ~@3 A ~@3 C ~@3 A ~ D E A ~@3 F ~@2 A ~@5>".pickRestart({
  A: "~@14 x!2", B: "~@12 x!4", C: "~@7 x ~@3 x ~@2 x!2", D: "~@15 x", E: "x", F: "~@13 x ~ x",
})).gain(0.37)

// drums · hihat
const hihat = s("hh").struct("<~@19 A@3 B@4 C D B@2 A ~@9 E F@6 G E F H I E J@2 G K@3 G K L M N ~@12>".pickRestart({
  A: "x ~ x ~ x!4", B: "x ~ x ~ x!3 ~", C: "x!3 ~", D: "~@2 x ~ x!3 ~", E: "~ x!6 ~", F: "x!7 ~", G: "x", H: "x!8",
  I: "~ x!4 ~@3", J: "~ x!7", K: "~ x ~ x!3 ~ x", L: "x!2 ~ x!3 ~@2", M: "x!2 ~ x!3 ~ x", N: "~ x ~@6",
})).gain(0.25)

// drums · mid tom
// … 28 more lines

More by Clerc Julien