Strudelify
Ma vie cover art

Ma vie

Ma vie

Alain Barriere

KeyC majorTempo175 bpm
0:00/0:00
// Ma vie — Alain Barriere
// 175 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "Orgue  7" drawbar organ (copy of ch 1 "Piano  1" piano)
// note: Full arrangement: all 179 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(175/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 · "Piano  1"
const piano = note(`<
  ~ A B@2 C D@2 E F G H I J K L@2 M ~@2 N O@5 P Q@5 R S@5 T Q@5 U V@2 W X Y Z O@2 AA AB@2 AC V@2 W X AD AE AF AG AH ~@2
  N O@5 P Q@5 R S@2 AI AJ@2 AK AL@5 AM V@2 W X Y Z O@2 AA AB@2 AC V@2 W X AD AE AF AG AH ~@2 N O@5 P Q@5 R S@2 AI AJ@2
  AK AL@2 AN AO@2 AP V@2 W X Y Z O@2 P Q@2 U V@2 W X Y Z O@2 P Q@2 AQ AR@2 AS ~@2 N O AT AU AV AT AW@4
>`.pickRestart({
  A: "~@9 [c4,e4,g4] ~@3 [c4,e4,g4] ~@2", B: "~ [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@2",
  C: "~ [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@2", // C Em
  D: "~ [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@2", // Em
  E: "~ [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@2", // Em F
  F: "~ [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@2", // F
  G: "~ [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@2", // Dm7
  H: "~ [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~@2", // Dm7 G
  I: "~ [b3,d4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@2", // G Em
  J: "~ [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@2", // G7
  K: "~ [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~@3 [c4,e4,f4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3", // G7 C
  L: "[c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3", // C
  M: "[c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@7", N: "~@8 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3",
  O: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // C
  P: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // C Em
  Q: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // Em
  R: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // Em F
  S: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  T: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // F Em
  U: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [d4,f4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Em Dm7
  V: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Dm7
  W: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3", // Dm7
  X: "[d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3", // Dm7
  Y: "[d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3", // G7
  Z: "[d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // G7 C
  AA: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3", // C Am7
  AB: "[e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3", // Am7
  AC: "[e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Am7 Dm7
  AD: "[d4,f4,g4,b4,c5] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3", // G7
  AE: "[d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~ [e4,g4,c5] ~", // G7 C
  AF: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,b4] ~@3 [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // C Em
  AG: "[c4,e4,a4] ~@3 [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,f4,g#4] ~@3", // Am Fm
  AH: "[c4,f4,g#4] ~ [c4,f4,g#4] ~ [c4,f4,g#4] ~ [c4,f4,g#4] ~ [e4,g4,c5] ~@7", // Fm C
  AI: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3", // F Dm7
  AJ: "[a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3", // Dm7
  AK: "[a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3", // Dm7 Em
  AL: "[g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3", // Em
  AM: "[g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [d4,f4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Em Dm7
  AN: "[g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [g4,a#4,b4,c#5,e5] ~@3 [g4,c#5,e5] ~@3", // Em C#m7b5 C#dim
  AO: "[g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3", // C#dim
  AP: "[g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3 [d4,f4,c5] ~@3 [d4,f4,a4,c5] ~@3", // C#dim Dm7
  AQ: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3", // Em Dm7
  AR: "[d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3", // Dm7
  AS: "[d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@7", // Dm7
  AT: "[e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3", // Eaug
  AU: "[e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [g4,c5] ~@3 [e4,g4,c5] ~@2 [e4,g4,c5], ~@4 e4 ~@3", // Eaug C5 C
  AV: "~@4 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", AW: "[[e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g4,c5]@44 ~@12]/4",
})).s("gm_piano").gain(0.23).pan(0.3)

// bass · acoustic bass · "Basse  2"
const bass = note(`<
  A@7 B@5 C D@2 E F ~@2 G@2 E G@2 E H@2 I J@2 I K@2 L M@2 L N@2 I J@2 I O@2 P Q@2 R G@2 E S@2 E T@2 L U@2 V W X Y@2 ~@2
  G@2 E G@2 E H@2 I J@2 I K@2 L M@2 L N@2 I J@2 I O@2 P Q@2 R G@2 E S@2 E T@2 L U@2 V W X Y@2 ~@2 G@2 E G@2 E H@2 I J@2
  I K@2 L M@2 L N@2 I Z@2 AA AB@2 P Q@2 R G@2 E S@2 E AC@2 P Q@2 R G@2 E S@2 E G@2 E AD ~@2 AE@2 E AF@2 E AG@4
>`.pickRestart({
  A: "[~@3 g1@17 ~@2 g2@3 ~ c2@42 ~ g2 ~@4 e2@38]/7", B: "[~@5 e2@3 ~ f2@43 ~ f2@2 ~@2 g2@23]/5", C: "~ g1@3 ~@12",
  D: "[~@2 g2@2 c2@8 ~@2 g1 ~]/2", E: "c2", F: "~@4 g1@3 ~ c2@2 ~@6", G: "[~@4 g2@3 ~ c2@17 ~@3 g2@3 ~]/2",
  H: "[~@4 g2@4 e2@16 ~@4 b2@3 ~]/2", I: "e2", J: "[~@4 b2@4 e2@16 ~@4 b2@3 ~]/2", K: "[~@4 e2@3 ~ f2@17 ~@3 c3@3 ~]/2",
  L: "f2", M: "[~@4 c3@3 ~ f2@16 ~@4 c3@3 ~]/2", N: "[~@4 f2@3 ~ e2@16 ~@4 b2@3 ~]/2",
  O: "[~@4 e2@3 ~ d2@15 ~@5 a2@3 ~]/2", P: "d2", Q: "[~@4 d2@4 g2@15 ~@5 d2@4]/2", R: "g2@7 ~",
  S: "[~@4 g2@4 c2@16 ~@4 g2@3 ~]/2", T: "[~@4 c2@3 ~ f2@16 ~@4 c2@3 ~]/2", U: "[~@4 c2@3 ~ g2@16 ~@4 d2@4]/2", V: "g2",
  W: "~@4 g2@3 ~ c2@8", X: "~@4 b1@9 ~@3", Y: "[a1@9 ~@3 g#1@9 ~@3 g1@3 ~@5]/2", Z: "[~@4 e2@3 ~ a1@17 ~@3 e2@3 ~]/2",
  AA: "a1", AB: "[~@4 a1@3 ~ d2@15 ~@5 a2@3 ~]/2", AC: "[~@4 c2@3 ~ d2@15 ~@5 a2@3 ~]/2", AD: "~@4 g2@3 ~ c2@3 ~@5",
  AE: "[~@8 c2@17 ~@2 g2@4 ~]/2", AF: "[~@4 g2@3 ~ c2@17 ~@2 g2@4 ~]/2", AG: "[~@3 g2@4 ~ c2@45 ~@11]/4",
})).s("gm_acoustic_bass").gain(0.26)

// chords · string ensemble 2 · "Cordes 5"
const string_ensemble_2 = note(`<
  ~@60 A@3 B@2 ~@27 C D@3 E@8 C F@3 G@3 H@2 ~@11 I@2 J@2 K L@4 ~@6 M N@4 O@8 C F@3 P@8 Q R S ~@2 T@6 U@4
>`.pickRestart({
  A: "[g2@23 ~ [e3,e4]@11 ~ [e3,e4]@11 ~]/3", B: "[[e3,e4]@12 [d#3,d#4]@11 ~ e4@2 ~@6, ~@23 e3@3 ~@6]/2", C: "~ a3@3",
  D: "[e4@20 d4@5 c4@23]/3", E: "[b3@23 ~ b3@84 a3@11 ~@9, ~@24 e3@95 ~@9]/8", F: "[e4@5 d4 c4@6]/3",
  G: "[b3@23 ~ [e3,e4]@11 ~ [e3,e4]@11 ~]/3", H: "[[e3,e4]@11 ~ d#3@11 ~ e4@2 ~@6, ~@11 d#4@12 e3@3 ~@6]/2",
  I: "[e6@4 a6@4 g6@15 e6@5 b5@4]/2", J: "[e5@11 ~@5]/2", K: "~@7 e6@5 c6@4", L: "[~@19 c4@5 d4@36 ~@4, a5@11 ~@21]/4",
  M: "~@7 f6@5 e6@4", N: "[d6@4 ~@4 g4@4 f4@4 e4@20 d4@4 c4@15 b3@5 a3@4, ~@2 c6@17 ~@13]/4",
  O: "[b3@19 ~@5 c3@47 ~ b2@43 c3@5 ~@8, ~@3 e3@12 ~]/8", P: "[b3@23 [c3,g3]@96 ~ [d3,g3] ~@3 [d3,g3] ~ [d3,g3] ~]/8",
  Q: "[d3,g3] ~ [d3,g3] ~ [g3,c4] ~@3 [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~", // G5 C5
  R: "[g3,c4] ~@3 [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~", // C5
  S: "[g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~@7", // C5
  T: "[~@8 [c3,g3]@19 ~ [c3,g3]@3 ~ g#3@23 ~ g3@19 ~ c3@3 ~ c3@16, ~@31 c3@22 ~@2 c3@20 g3@4 g#3@17]/6", // C5
  U: "[~@7 [c3,g3]@47 ~@10]/4", // C5
})).s("gm_string_ensemble_2").gain(0.38)

// chords · percussive organ · "Orgue  6"
const percussive_organ = note(`<
  ~ A@6 B@6 C@4 ~@2 D@6 E@6 F@6 G@6 H@6 D@6 I@8 J@2 ~@2 D@6 E@6 F@6 G@6 H@6 D@6 I@8 J@2 ~@2 D@6 E@6 F@6 K@4 ~@2 H@6 D@6
  H@6 D@6 L@4 ~@2 M@6 N@4
>`.pickRestart({
  A: "[~@10 c6@47 b5@39, ~@5 [e5,g5]@43]/6", // Em
  B: "[~@33 d5@23 ~@25 f5@15, ~@9 [a5,c6]@47 ~@40, ~@10 f5@47 [d5,g5,b5]@39]/6", C: "[~@8 [e5,g5,c6]@49 ~@7]/4",
  D: "[~ [e5,g5,c6]@11]/6", E: "[~ b5@11]/6", F: "[~ [f5,a5,c6]@11]/6", G: "[~ [e5,g5,b5]@11]/6",
  H: "[~ a5@9 [g5,b5]@2, ~ [d5,f5]@11]/6", // G Dm
  I: "[~@8 a5@72 [g5,b5]@23 ~ c6@12 b5@12, ~@8 d6@95 ~@25, ~@4 c6@35 ~@13 [e5,g5]@12]/8", // G Em
  J: "[a5@10 ~@2 [f5,g#5]@11 ~ g5@3 ~@5, c6@27 ~@5]/2", K: "[~ [b4,d5,e5]@6 ~]/4", L: "[~@4 [g4,c5,d5,f5]@25 ~@3]/4",
  M: "[~ e5@3 d#5@3 e5@3 d#5@2, ~ [c5,g5,c6]@11]/6", N: "[~@8 c5@45 ~@11, ~@7 [e5,g5,c6]@45 ~@12]/4",
})).s("gm_percussive_organ").gain(0.16).pan(0.3)

// chords · percussive organ · "Orgue  6" · soft notes
const percussive_organ_soft = note("<~@55 A@7 ~@2 B ~@38 A@7 ~@2 B ~@20 C@7 ~@39>".pickRestart({
  A: "[~@8 f5@95 ~@9]/7", B: "~@8 e5@3 ~@5", C: "[~@4 g4@24 [e4,g4,a4,c#5]@23 ~@5]/7",
})).s("gm_percussive_organ").gain(0.04).pan(0.3)

// chords · trombone · "Trbone 8"
const trombone = note("<A B ~@10 C D ~@46 E@2 F G H ~@44 I F G H ~@50 J K L M ~@2 N@2 O@8>".pickRestart({
  A: "~@6 [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~", // Dm
  B: "[a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] [g3,g4] ~@6", // Dm G
  C: "~@5 [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4]", // Dm
  D: "~ [a3,f4]!2 ~ [a3,f4] ~ [a3,f4] ~ [g3,g4] ~@7", E: "[g3@23 ~ [c4,e4] ~@3 [c4,e4] ~ [c4,e4] ~]/2",
  F: "[c4,e4] ~ [c4,e4] ~ [b3,g4] ~@3 [b3,g4] ~ [b3,g4] ~ [b3,g4] ~ [b3,g4] ~", // C Em
  G: "[a3,e4] ~@3 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [g#3,f4] ~ [g#3,f4] ~", // A5 C#
  H: "[g#3,f4] ~ [g#3,f4] ~ [g#3,f4] ~ [g#3,f4] ~ g3@2 ~@6, ~@8 e4 ~@7", I: "~@12 [c4,e4] ~ [c4,e4] ~",
  J: "~@8 g3 ~@3 g3 ~ g3 ~", K: "g3 ~ g3 ~ c4 ~@3 c4 ~ c4 ~ c4 ~ c4 ~", L: "c4 ~@3 c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
  M: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~@7", N: "[~@11 e4@15 ~@2 g2@3 ~, ~@8 g2@19 e4@4 ~]/2",
  O: "[d#4@24 ~@3 e4@15 ~@2 g2@3 ~ g#2@12 ~@3 d#3 [g2,c4] d#3 [g2,c4] d#3 [g2,c4] ~ [g2,d#3,c4] ~ [g2,c4]@45 ~@11, g#2@22 ~@2 g2@19 e4@4 d#4@22 ~@2 e4@43 ~@14, ~@72 e3@43 ~@13]/8", // C5 Cm C5
})).s("gm_trombone").gain(0.35)

// chords · trumpet · "Trpette9"
const trumpet = note("<A B ~@10 C D ~@47 E F G H ~@44 I F G H ~@50 J K L M ~@2 N@2 O@4 P@4>".pickRestart({
  A: "~@7 [a4,d5,g5]!2 ~ [a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5] ~", // Dsus4
  B: "[a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5] [e5,g5,c6] ~@6", // Dsus4 C
  C: "~@5 [a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5] ~ [a4,d5,g5]", // Dsus4
  D: "~ [a4,d5,g5]!2 ~ [a4,d5,g5] ~ [a4,d5,g5] ~ [e5,g5,c6] ~@7", E: "~@8 [g4,c5] ~@3 [g4,c5] ~ [g4,c5] ~",
  F: "[g4,c5] ~ [g4,c5] ~ [g4,c5,e5] ~@3 [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~", // C5 C
  G: "[c5,g5] ~@3 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,f5,g#5] ~ [c5,f5,g#5] ~, e5 ~@7", // C5 C Fm
  H: "[c5,f5,g#5] ~ [c5,f5,g#5] ~ [c5,f5,g#5] ~ [c5,f5,g#5] ~ [e5,g5,c6] ~@7", I: "~@12 [g4,c5] ~ [g4,c5] ~",
  J: "~@8 [f4,g4,a4,c5] ~@3 [f4,g4,a4,c5] ~ [f4,g4,a4,c5] ~", // F
  K: "[f4,g4,a4,c5] c5 [f4,g4,a4] ~ [f4,g4,a4,f5] ~@3 [f4,g4,a4,f5] ~ [f4,g4,a4,f5] ~ [f4,g4,a4,f5] [g4,a4] [f4,f5] ~", // F Gsus2 F
  L: "[f4,g4,a4,g5] ~@3 [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~", // F
  M: "[f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~ [f4,g4,a4,g5] ~@7", // F
  N: "[~@12 [e5,g5]@15 ~ [c5,e5,g5]@3 ~, ~@11 c5@16 ~@5]/2", // Em C
  O: "[[c5,d#5,g5]@25 ~@3 c5@15 ~ c5@3 ~ d#5@16, ~@27 [e5,g5]@14 ~@2 [e5,g5]@4 g5@16 ~, ~@12 c5@3 ~]/4", // Cm Em
  P: "[[c5,d#5,g5] ~ [c5,d#5,g5] ~ [c5,d#5,g5] [d#5,g5] c5 ~ [c5,e5,g5]@44 ~@12]/4", // Cm D# C
})).s("gm_trumpet").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B ~@2 B ~@2 B ~@2 B ~ C D E F D ~@2 D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D
  E F D G H I ~@2 D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D G H I ~@2 D E F
  D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D G H I ~@2 I E F D E F I
  ~@2 F
>`.pickRestart({
  A: "~@3 x ~@12", B: "~@5 x ~@3 x ~@6", C: "~ x ~@14", D: "~ x!2 ~", E: "~@3 x", F: "x", G: "~ x ~@2", H: "x ~@2 x",
  I: "~ x",
})).gain(0.25)

// drums · rim
const rim = s("rim").struct(`<
  ~@2 A B ~ A B ~ A B ~ A ~@2 C D ~@4 C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D
  ~@7 C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~@7 C D ~ C D ~ C D ~ C D ~ C D
  ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C D ~ C ~@3 D ~@16
>`.pickRestart({
  A: "~@5 x ~@10", B: "~@13 x ~@2", C: "~ x ~@2", D: "~@3 x",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct(`<
  ~@67 A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C ~@6 A B C A B C A B C A B C A
  B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C ~@16
>`.pickRestart({
  A: "~@8 x!8", B: "x!5 ~@11", C: "x!13 ~@3",
})).gain(0.35)

// drums · clap
const clap = s("cp").struct(`<
  A B ~@10 C D ~@47 E F G D ~@44 H F G D ~@46 I J K L H F G D ~@3 K M ~ K M D N O L
>`.pickRestart({
  A: "~@7 x!2 ~ x ~ x ~ x ~", B: "x ~ x ~ x!2 ~ x ~ x ~@6", C: "~@5 x ~ x ~ x ~ x ~ x ~ x", D: "x!5 ~@3", E: "~@6 x!2",
  F: "x!3 ~ x!4", G: "x ~ x!6", H: "~@4 x ~ x!2", I: "x ~@2 x", J: "~ x", K: "~ x ~@2", L: "x", M: "~@3 x",
  N: "~@9 x ~ x!5", O: "x!6 ~@6 x!4",
})).gain(0.35)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@176 [~@4 x!2 ~@2] [~@6 x!6 ~@4] ~>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~ A B@10 C D E@2 F ~@2 G E@41 F ~@117>".pickRestart({
  A: "~@13 x ~@2", B: "~ x ~@3 x ~@3 x ~@3 x ~@2", C: "~ x ~@14", D: "~@3 x", E: "x!4", F: "x!3 ~", G: "~@2 x!2",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@175 [~ x] ~@3>").gain(0.35)

// drums · ride
// … 11 more lines

More by Alain Barriere