Strudelify
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: edit a riff to change every repeat.

// chords · piano · "Piano  1"
const piano = note(`<
  ~ A B C D E@2 F G H I J K L M@2 N ~@2 O P@5 Q R@5 S T@5 U R@5 V W@2 X Y Z AA P@2 AB AC@2 AD W@2 X Y AE AF AG AH AI ~@2
  O P@5 Q R@5 S T@2 AJ AK@2 AL AM@5 AN W@2 X Y Z AA P@2 AB AC@2 AD W@2 X Y AE AF AG AH AI ~@2 O P@5 Q R@5 S T@2 AJ AK@2
  AL AM@2 AO AP@2 AQ W@2 X Y Z AA P@2 Q R@2 V W@2 X Y Z AA P@2 Q R@2 AR AS@2 AT ~@2 O AU AV AW AX AY AZ@4
>`.pickRestart({
  A: "~@10 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2", B: "~ [c4,e4,g4] ~@4 [c4,e4,g4] ~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~@2",
  C: "~ [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@2", // C
  D: "~ [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@2", // C Em
  E: "~ [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@2", // Em
  F: "~ [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@2", // Em F
  G: "~ [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@2", // F
  H: "~ [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@2", // Dm7
  I: "~ [a3,c4,d4,f4] ~@3 [a3,c4,d4,f4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~@2", // Dm7 G
  J: "~ [b3,d4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@2", // G Em
  K: "~ [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@2", // G7
  L: "~ [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~@3 [c4,e4,f4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3", // G7 C
  M: "[c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3", // C
  N: "[c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@3 [c4,e4,g4,c5] ~@7", O: "~@8 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3",
  P: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // C
  Q: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // C Em
  R: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // Em
  S: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // Em F
  T: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3", // F
  U: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", // F Em
  V: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [d4,f4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Em Dm7
  W: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Dm7
  X: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3", // Dm7
  Y: "[d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3 [d4,f4,g4,c5] ~@3", // Dm7
  Z: "[d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3", // G7
  AA: "[d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // G7 C
  AB: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3", // C Am7
  AC: "[e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3", // Am7
  AD: "[e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Am7 Dm7
  AE: "[d4,f4,g4,b4,c5] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3", // G7
  AF: "[d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~ [e4,g4,c5] ~", // G7 C
  AG: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,b4] ~@3 [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // C Em
  AH: "[c4,e4,a4] ~@3 [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,f4,g#4] ~@3", // Am Fm
  AI: "[c4,f4,g#4] ~ [c4,f4,g#4] ~ [c4,f4,g#4] ~ [c4,f4,g#4] ~ [e4,g4,c5] ~@7", // Fm C
  AJ: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3", // F Dm7
  AK: "[a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3", // Dm7
  AL: "[a4,c5,d5,f5] ~@3 [a4,c5,d5,f5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3", // Dm7 Em
  AM: "[g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3", // Em
  AN: "[g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [d4,f4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Em Dm7
  AO: "[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
  AP: "[g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3", // C#dim
  AQ: "[g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3 [d4,f4,c5] ~@3 [d4,f4,a4,c5] ~@3", // C#dim Dm7
  AR: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3", // Em Dm7
  AS: "[d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3", // Dm7
  AT: "[d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@3 [d5,f5,g5,c6] ~@7", // Dm7
  AU: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,c5] ~@3, ~@6 g4 ~", // C
  AV: "[e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3", // Eaug
  AW: "[e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [g4,c5] ~@3 [e4,g4,c5] ~@2 [e4,g4], ~@4 e4 ~@3", // Eaug C5 C Em
  AX: "c5 ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // C
  AY: "[e4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3, g#4 ~@7", // C Eaug
  AZ: "[[e4,g#4,c5] ~@3 [e4,g#4,c5] ~@3 [e4,g4,c5]@44 ~@12]/4", // Eaug C
})).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 H@2 E I@2 J K@2 J L@2 M N@2 M O@2 J P@2 J Q@2 R S@2 T U@2 E V@2 E W@2 M X@2 Y Z AA AB@2
  ~@2 G@2 E H@2 E I@2 J K@2 J L@2 M N@2 M O@2 J P@2 J Q@2 R S@2 T U@2 E V@2 E W@2 M X@2 Y Z AA AB@2 ~@2 G@2 E H@2 E I@2
  J K@2 J AC@2 M AD@2 M AE@2 J AF@2 AG AH@2 R S@2 AI U@2 E V@2 E AJ@2 R S@2 T U@2 E V@2 E AK@2 E AL ~@2 AM@2 AN@3 AO@5
>`.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: "[~@4 g2@4 c2@15 ~@5 g1@2 ~@2]/2", E: "c2", F: "~@4 g1@3 ~ c2@2 ~@6", G: "[~@4 g2@3 ~ c2@18 ~@2 g2@3 ~]/2",
  H: "[~@4 g2@3 ~ c2@17 ~@3 g2@4]/2", I: "[~@4 g2@4 e2@16 ~@4 b2@3 ~]/2", J: "e2", K: "[~@4 b2@4 e2@16 ~@4 b2@3 ~]/2",
  L: "[~@4 e2@3 ~ f2@17 ~@3 c3@3 ~]/2", M: "f2", N: "[~@4 c3@3 ~ f2@16 ~@4 c3@3 ~]/2",
  O: "[~@4 f2@3 ~ e2@16 ~@4 b2@3 ~]/2", P: "[~@4 b2@3 ~ e2@17 ~@3 b2@3 ~]/2", Q: "[~@4 e2@3 ~ d2@15 ~@5 a2@3 ~]/2",
  R: "d2", S: "[~@4 d2@4 g2@15 ~@5 d2@4]/2", T: "g2@7 ~", U: "[~@4 g2@4 c2@16 ~@4 g2@3 ~]/2",
  V: "[~@4 g2@3 ~ c2@15 ~@5 g2@4]/2", W: "[~@4 c2@3 ~ f2@16 ~@4 c2@3 ~]/2", X: "[~@4 c2@3 ~ g2@16 ~@4 d2@4]/2", Y: "g2",
  Z: "~@4 g2@3 ~ c2@8", AA: "~@4 b1@9 ~@3", AB: "[a1@9 ~@3 g#1@9 ~@3 g1@3 ~@5]/2",
  AC: "[~@3 e2@3 ~@2 f2@17 ~@3 c3@3 ~]/2", AD: "[~@5 c3@3 f2@16 ~@4 c3@3 ~]/2", AE: "[~@3 f2@3 ~@2 e2@16 ~@4 b2@3 ~]/2",
  AF: "[~@4 e2@3 ~ a1@17 ~@3 e2@3 ~]/2", AG: "a1", AH: "[~@4 a1@3 ~ d2@15 ~@5 a2@3 ~]/2", AI: "~ g2@14 ~",
  AJ: "[~@4 c2@3 ~ d2@15 ~@5 a2@3 ~]/2", AK: "[~@4 g2@3 ~ c2@17 ~@3 g2@3 ~]/2", AL: "~@4 g2@3 ~ c2@3 ~@5",
  AM: "[~@8 c2@17 ~@2 g2@4 ~]/2", AN: "[c2@18 ~@2 g2@4 c2@17 ~@2 g2@4 ~]/3", AO: "[c2@18 ~ g2@4 ~ c2@45 ~@11]/5",
})).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@2 U@8
>`.pickRestart({
  A: "[g2@23 ~ [e3,e4]@11 ~ [e3,e4]@11 ~]/3", B: "[[e3,e4]@12 [d#3,d#4]@12 [e3,e4]@3 ~@5]/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@22 ~@2 [e3,e4]@12 [e3,e4]@11 ~]/3", H: "[[e3,e4]@11 ~ d#3@11 ~ e4@3 ~@5, ~@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: "~@2 f6 e6", 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 ~@4 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", T: "[~@8 [c3,g3]@19 ~ [c3,g3]@4]/2",
  U: "[g#3@23 ~ g3@19 ~ c3@3 ~ c3@21 ~@2 [c3,g3]@47 ~@10, c3@22 ~ c3@20 g3@4 g#3@24 ~@57]/8", // 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: "[~@5 c6@24 b5@19, ~@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@3 P@5>".pickRestart({
  A: "~@7 [a3,f4]!2 ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~", B: "[a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] [g3,g4] ~@6",
  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: "[~@12 e4@15 ~ g2@3 ~, ~@8 g2@19 e4@4 ~]/2",
  O: "[d#4@12 ~@2 e4@7 ~ g2@2, g#2@22 ~@2 g2@19 e4@4 ~]/3",
  P: "[g#2@12 ~@3 d#3 [g2,c4] ~ [g2,d#3,c4] ~ [g2,d#3,c4] ~ [g2,d#3,c4] ~ [g2,c4]@45 ~@11, d#4@22 ~ e4@43 ~@14, ~@24 e3@43 ~@13]/5", // 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@3 P Q@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] ~@5", // 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] ~ [f4,g4,a4,f5] ~", // 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 ~, ~@27 [e5,g5]@14 ~@2 [e5,g5]@4 ~]/3", P: "[d#5,g5], c5@3 ~",
  Q: "[[c5,d#5,g5] ~ [c5,d#5,g5] ~ [c5,d#5,g5] ~ [c5,d#5,g5] ~ [c5,e5,g5]@44 ~@12]/4", // Cm C
})).s("gm_trumpet").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B ~@2 C ~@2 C ~@2 D ~ E F G H F ~@2 F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F
  G H F I J K ~@2 F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F I J K ~@2 F G H
  F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F G H F I J K ~@2 K G H F G H K
  ~@2 H
>`.pickRestart({
  A: "~@3 x ~@12", B: "~@6 x ~@2 x ~@6", C: "~@3 x ~ x ~@2", D: "~@5 x ~@4 x ~@5", E: "~ x ~@14", F: "~ x!2 ~",
  G: "~@3 x", H: "x", I: "~ x ~@2", J: "x ~@2 x", K: "~ 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 H ~@44 I F G H ~@46 J K L M I F G H ~@3 L N ~ L N H O P M
>`.pickRestart({
  A: "~@7 x!2 ~ x ~ x ~ x ~", B: "x ~ x ~ x ~ x!2 ~ x ~@6", C: "~@5 x ~ x ~ x ~ x ~ x ~ x", D: "~ x!2 ~ x ~ x ~ x ~@7",
  E: "~@6 x!2", F: "x!3 ~ x!4", G: "x ~ x!6", H: "x!5 ~@3", I: "~@4 x ~ x!2", J: "x ~@2 x", K: "~ x", L: "~ x ~@2",
  M: "x", N: "~@3 x", O: "~@9 x ~ x!5", P: "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 C D E@7 F G H@2 I ~@2 J H@41 I ~@117>".pickRestart({
  A: "~@7 x", B: "~ x ~@4 x ~@2 x ~@4 x ~", C: "~@2 x ~@3 x ~@2 x ~@3 x ~@2", D: "~ x ~@4 x ~@3 x ~@2 x ~@2",
// … 18 more lines

More by Alain Barriere