Strudelify

Rien qu'un homme

Alain Barriere

KeyG majorTempo120 bpm
0:00/0:00
// Rien qu'un homme — Alain Barriere
// 120 bpm, 2/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 192 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/2)

// 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.

// bass · electric bass pick · "Basse"
const bass = note("<A@2 B@2 C@2 D E F@2 G@2 H ~@179>".pickRestart({
  A: "[~@12 c2@9 ~@3 b1@4 c2@4, ~@12 g1 ~@19]/2", B: "[d2@4 c2@4 b1@4 a1@7 ~@5 g1@4 a1@4]/2",
  C: "[g1@4 a1@4 b1@4 c2@7 ~@5 b1@4 c2@3 ~]/2", D: "d2 c2 b1 a1", E: "~@4 a1@3 ~ b1@3 ~@5", F: "[~@12 c2@7 ~@5 c2@8]/2",
  G: "[~@8 g1@3 ~ c2@9 ~@3 c2@2 ~@6]/2", H: "~ c2 ~@2",
})).s("gm_electric_bass_pick").gain(0.23)

// bass · fretless bass · "Basse"
const bass_2 = note(`<
  ~@13 A@2 B@4 C@4 D@4 E@4 B@4 C@4 D@4 F@2 G@2 H I J@2 K L M@2 N O P@2 H I Q@2 H I R@2 K L S@2 N O T@2 U ~ V W X Y@2 Z
  AA AB@2 AC AD AE@2 W X AF@2 W X Y@2 Z AA AB@2 AC AD AE@2 W X AG AH@2 U AI@3 AJ AK@3 AL AM@3 U AN@3 U AO@3 AJ AP@3 AL
  AM@3 U AN@3 U AO@3 AJ AP@3 AL AM@3 U AN@3 U AO@3 AJ AP@3 AL AM@3 U AN@3 U AO@3 AJ AK@3 AL AM@3 U AQ@3 AR
>`.pickRestart({
  A: "[~@12 c2@7 ~@5 c2@8]/2", B: "[~@8 g1@3 ~ c2@7 ~@5 c2@12 ~@8 d2@7 ~@5 d2@8]/4",
  C: "[~@8 a1@3 ~ d2@7 ~@5 d2@12 ~@8 g1@7 ~@5 g1@8]/4", D: "[~@8 d2@3 ~ g1@7 ~@5 g1@12 ~@8 c2@7 ~@5 c2@8]/4",
  E: "[~@8 g1@3 ~ c2@7 ~@5 c2@12 ~@8 c2@7 ~@5 c2@8]/4", F: "[~@8 g1@3 ~ c2@7 ~@5 c2 ~@7]/2",
  G: "[~@12 c2@9 ~@3 e1@8]/2", H: "~@4 g1@7 ~ c2@4", I: "~@8 e1@7 ~", J: "[g1@3 ~ a1@4 g1@3 d2 d2@9 ~@3 f1@8]/2",
  K: "~@4 a1@7 ~ d2@4", L: "~@8 f1@7 ~", M: "[a1@3 ~ a#1@4 a1@3 g1 g1@9 ~@3 b1@8]/2", N: "~@4 d2@7 ~ g1@4",
  O: "~@8 b1@7 ~", P: "[d2@3 ~ e1@4 d2@3 ~ c2@9 ~@3 e1@8]/2", Q: "[g1@3 ~ a1@4 g1@3 ~ c2@9 ~@3 e1@8]/2",
  R: "[g1@3 ~ a1@4 g1@3 ~ d2@9 ~@3 f1@8]/2", S: "[a1@3 ~ a#1@4 a1@3 ~ g1@9 ~@3 b1@8]/2",
  T: "[d2@3 e1@4 d2@3 ~ c2@9 ~@3 e1@9]/2", U: "~@3 g1@7 ~ c2@5", V: "~@11 c2@5", W: "~@7 c2@9", X: "~@7 g1@3 ~ c2@5",
  Y: "[~@7 c2@12 ~@8 d2@5]/2", Z: "~@7 d2@9", AA: "~@7 a1@3 ~ d2@5", AB: "[~@7 d2@12 ~@8 g1@5]/2", AC: "~@7 g1@9",
  AD: "~@7 d2@3 ~ g1@5", AE: "[~@7 g1@12 ~@8 c2@5]/2", AF: "[~@7 c2@12 ~@8 c2@5]/2", AG: "~@7 c2 ~@8",
  AH: "[~@11 c2@9 ~@3 e1@9]/2", AI: "[~@7 e1@7 ~ g1@3 ~ a1@4 g1@3 ~ d2@9 ~@3 f1@9]/3", AJ: "~@3 a1@7 ~ d2@5",
  AK: "[~@7 f1@7 ~ a1@3 ~ a#1@4 a1@3 ~ g1@9 ~@3 b1@9]/3", AL: "~@3 d2@7 ~ g1@5",
  AM: "[~@7 b1@7 ~ d2@3 ~ e1@4 d2@3 ~ c2@9 ~@3 e1@9]/3", AN: "[~@7 e1@7 ~ g1@3 ~ a1@4 g1@3 ~ c2@9 ~@3 e1@9]/3",
  AO: "[~@7 e1@7 ~ g1@3 ~ a1@4 g1@3 d2 d2@9 ~@3 f1@9]/3", AP: "[~@7 f1@7 ~ a1@3 ~ a#1@4 a1@3 g1 g1@9 ~@3 b1@9]/3",
  AQ: "[~@7 e1@7 ~ g1@3 ~ a1@4 g1@3 ~ c2@9 ~@3 c2@2 ~@7]/3", AR: "~@3 c2@4 ~@9",
})).s("gm_fretless_bass").gain(0.3)

// chords · electric guitar clean · "CleanGuit"
const electric_guitar_clean = note(`<
  ~ A B C B D B C B E F@2 G ~ E H E H I J I J K L K L E H E H E H E H I J I J K L K L E H E ~ E H E H I J I J K L K L E
  H E H E H E H I J I J K L K L M ~@2 N O N O P Q P Q R S R S N O N O N O N O P Q P Q R S R S N O N ~ N O N O P Q P Q R
  S R S N O N O N O N O P Q P Q R S R S N O N O N O N O P Q P Q R S R S N O N O N O N O P Q P Q R S R S N O N O N O N O
  P Q P Q R S R S N O ~@5
>`.pickRestart({
  A: "~@4 [g3,c4] ~@11", B: "[g3,b3] ~@15", C: "~@4 [e3,a3] ~@11", D: "~@2 [g3,c4] ~@5", E: "~@4 [e3,g3,c4] ~@11",
  F: "[[e3,g3,c4] ~@11 [f3,g3,c4]@7 ~ [f3,g3,c4] ~@3 [f3,g3,c4] ~@7]/2", G: "~ [e3,g3,c4] ~@2", H: "[e3,g3,c4] ~@15",
  I: "~@4 [f3,a3,d4] ~@11", J: "[f3,a3,d4] ~@15", K: "~@4 [b3,d4,g4] ~@11", L: "[b3,d4,g4] ~@15",
  M: "~@3 [e3,g3,c4] ~@11 [e3,g3,c4]", N: "~@15 [e3,g3,c4]", O: "~@11 [e3,g3,c4] ~@4", P: "~@15 [f3,a3,d4]",
  Q: "~@11 [f3,a3,d4] ~@4", R: "~@15 [b3,d4,g4]", S: "~@11 [b3,d4,g4] ~@4",
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.4)

// chords · percussive organ · "Orgue"
const percussive_organ = note(`<
  ~@10 A@2 B ~@16 C@4 D@8 E@3 F@8 G@8 H@8 I@8 ~@2 J K@2 ~ L@3 ~ M@3 ~ N@3 O@4 P@8 Q@3 R@8 S@8 T@8 U@8 T@8 U@8 T@8 U@8
  V@4 W@8 X@7 Y
>`.pickRestart({
  A: "[~@12 [g5,c6,f6]@11 ~ [g5,c6,f6]@4 ~@4]/2", B: "~@4 [g5,c6,e6]@7 ~@5", C: "[~@3 [c5,e5,g5]@13]/4",
  D: "[~@12 [f5,a5]@60 ~@3 [g5,b5]@53, ~@3 d5@29]/8", E: "[~@11 [c5,e5,g5]@34 ~@3]/3",
  F: "[~@4 d4 [b3,e4] [c#4,f4] [d4,e4,g4,a4,b4] [f#4,g#4,c5,d5] [b4,c#5,e5,f5] d5 ~ [e5,g5]@63 [f5,a5] [f5,a5]@52, ~@2 c4@3 ~@123, ~@3 a3@2 ~@123]/8", // E5 C# Em7 D7 C#7 Em F
  G: "[~@11 [b5,d6] [b5,d6]@64 [e5,g5]@52]/8", H: "[~@12 [e5,g5]@63 a5 [f5,a5]@52]/8",
  I: "[~@11 d6 [b5,d6]@64 [e5,g5]@39 [e5,g5]@4 ~@9]/8", J: "~@2 [c5,e5,g5]@2 ~@2 [c5,e5,g5] ~",
  K: "[[c5,e5,g5]@5 ~@3 g5@12 ~@12, ~@7 [c5,e5]@12 ~@13]/2", // C
  L: "[~@3 [d5,f5,a5]@3 ~@5 [d5,f5] ~@4 d5@5 ~@3 [d5,a5]@16 ~@8, ~@11 a5@2 ~@2 [f5,a5]@5 ~@3 f5@16 ~@9]/3", // Dm D5 F
  M: "[~@3 [d5,g5,b5]@3 ~@5 [d5,g5,b5] ~@4 [d5,b5]@4 ~@4 b5@18 ~@6, ~@15 g5@4 ~@4 [d5,g5]@18 ~@7]/3", // G G5
  N: "[~@3 [c5,e5,g5]@3 ~@5 [c5,e5,g5] ~@3 [c5,e5,g5]@4 ~@4 [c5,e5,g5]@18 ~@7]/3", O: "[~@11 [c5,e5,g5]@53]/4",
  P: "[~@11 [f5,a5]@35 ~@9 a5@16 ~@4 [d5,g5,b5]@36 ~@8 b5@9, ~@11 d5@32 ~@4 d5@26 ~@38 d5@17, ~@51 f5@20 ~@44 g5@13]/8", // F G
  Q: "[~@11 [c5,e5,g5]@35 ~@2]/3", // C
  R: "[~@2 [a3,c4]@2 d4 [b3,e4] [c#4,d4,f4,g4] [e4,f#4,a4,b4] [g#4,c5,d5,e5] [b4,c#5,d5,f5] ~ [e5,g5]@63 ~ [f5,a5]@53]/8", // Am E5 G7 Esus4 G#aug Bdim Em F
  S: "[~@11 [b5,d6]@64 [e5,g5]@53]/8", T: "[~@11 [e5,g5]@63 [f5,a5] [f5,a5]@53]/8",
  U: "[~@10 [b5,d6] [b5,d6]@64 [e5,g5]@53]/8", V: "[~@11 [e5,g5]@53]/4", W: "[~@10 [f5,a5] [f5,a5]@64 [b5,d6]@53]/8",
  X: "[~@11 [e5,g5]@78 ~@2 [g5,c6,f6]@11 ~ [g5,c6,f6]@4 ~@5]/7", Y: "~@3 [g5,c6,e6]@7 ~@6",
})).s("gm_percussive_organ").gain(0.22).pan(0.1)

// chords · trumpet · "Trompet"
const trumpet = note("<~@46 A ~ B ~@13 C ~ D ~@45 E ~ F ~@13 C ~ C ~@13 E ~ F ~@13 C ~ C ~@13 E ~ F ~@15>".pickRestart({
  A: "~@3 g5 [c5,e5] ~@11", B: "~@2 [c5,e5,g5] ~@5", C: "~@3 [c5,e5] ~@12, ~@3 g5@2 ~@11",
  D: "~@4 [c5,e5] ~@11, ~@2 g5 ~@5", E: "~@3 [c5,e5,g5] ~@12", F: "~@3 [c5,e5,g5]@2 ~@11",
})).s("gm_trumpet").gain(0.53).pan(0.9)

// chords · brass section · "Brass"
const brass_section = note(`<
  ~@46 A ~ B ~@13 C ~ D ~@45 E ~ F ~@13 C ~ C ~@13 E ~ F ~@13 C ~ C ~@13 E ~ F ~@11 G H@2 I
>`.pickRestart({
  A: "~@3 g5 [c5,e5] ~@11", B: "~@2 [c5,e5,g5] ~@5", C: "~@3 [c5,e5] ~@12, ~@3 g5@2 ~@11",
  D: "~@4 [c5,e5] ~@11, ~@2 g5 ~@5", E: "~@3 [c5,e5,g5] ~@12", F: "~@3 [c5,e5,g5]@2 ~@11", G: "~@11 [c4,e4]@5",
  H: "[~@3 [e4,g4]@7 ~ [c4,f4]@9 ~@3 c4@2 ~@7, ~@23 f4 ~@8]/2", I: "~@3 [c4,e4]@4 ~@9",
})).s("gm_brass_section").gain(0.44).pan(0.1)

// chords · trumpet · "Trompet"
const trumpet_2 = note(`<
  ~@9 A B@2 C ~ A ~ D ~ E ~ F ~ G ~ H ~ I ~ D ~ I ~ D ~ J ~ F ~ K ~ H ~ I ~ L M N O P@2 Q R S@2 T U V@2 N O W@2 N O X@2
  Q R S@2 T U Y@2 Z AA AB ~ I ~ D ~ J ~ F ~ K ~ H ~ I ~ D ~ I ~ D ~ J ~ F ~ K ~ H ~ I ~ AC AD Z AA AE AF AG AH AI AJ AK
  AL AM AN Z AA AE AO Z AA AE AF AG AH AI AJ AK AL AM AN Z AA AE AO Z AA AE AF AG AH AI AJ AK AL AM AN Z AA AE AO Z AA
  AE AF AG AH AI AJ AK AL AM AN Z AA AE AO Z AA AE AF AG AH AI AJ AK AL AM AN Z AA AE AP@2 AQ
>`.pickRestart({
  A: "~@4 [c5,e5]@3 ~ e5 ~@7, ~@7 c5@2 ~@7", B: "[~@12 [c4,f4]@9 ~@3 c4@2 ~@6, ~@24 f4 ~@7]/2", C: "~ [c4,e4] ~@2",
  D: "~@3 [c5,e5]@3 ~ e5@2 ~@7, ~@7 c5 ~@8", E: "~@4 [d5,f5]@3 ~ f5 ~@7, ~@7 d5@2 ~@7",
  F: "~@3 [d5,f5]@3 ~ f5@2 ~@7, ~@7 d5 ~@8", G: "~@4 [g5,b5]@3 ~ b5 ~@7, ~@7 g5@2 ~@7",
  H: "~@3 [g5,b5]@3 ~ b5@2 ~@7, ~@7 g5 ~@8", I: "~@3 [c5,e5]@3 ~ c5@2 ~@7, ~@7 e5 ~@8",
  J: "~@3 [d5,f5]@3 ~ d5@2 ~@7, ~@7 f5 ~@8", K: "~@3 [g5,b5]@3 ~ g5@2 ~@7, ~@7 b5 ~@8",
  L: "~@3 [c5,e5]@2 ~@3 [c5,e5]@2 ~@6", M: "~@12 [g3,c4] ~@3", N: "~@8 [g3,c4] ~@7", O: "~@4 [g3,c4] ~@11",
  P: "[[g3,c4] ~@7 [g3,c4] ~@3 [c4,e4]@7 ~ [e4,g4]@7 d4 [a3,d4] ~@3]/2", Q: "~@8 [a3,d4] ~@7", R: "~@4 [a3,d4] ~@11",
  S: "[[a3,d4] ~@7 [a3,d4] ~@3 [d4,f4]@7 ~ [a3,d4]@7 ~ [d4,g4] ~@3]/2", T: "~@8 [d4,g4] ~@7", U: "~@4 [d4,g4] ~@11",
  V: "[[d4,g4] ~@7 [d4,g4] ~@3 [g4,b4]@7 ~ [b4,d5]@7 ~ [g3,c4] ~@3]/2", // G5 G Bm C5
  W: "[[g3,c4] ~@7 [g3,c4] ~@3 [c4,e4]@7 ~ [e4,g4]@7 ~ [g3,c4] ~@3]/2", // C5 C Em C5
  X: "[[g3,c4] ~@7 [g3,c4] ~@3 [c4,e4]@7 ~ [e4,g4]@7 ~ [a3,d4] ~@3]/2", // C5 C Em D5
  Y: "[[d4,g4] ~@7 [d4,g4] ~@3 [g4,b4]@7 [b4,d5]@7 ~ [g3,c4] ~@4]/2", Z: "~@7 [g3,c4] ~@8",
  AA: "~@3 [g3,c4] ~@11 [g3,c4]", AB: "~@3 [c4,e4] ~@12", AC: "~@3 [c5,e5] ~@3 [c5,e5]@2 ~@7", AD: "~@11 [g3,c4] ~@4",
  AE: "~@7 [g3,c4] ~@3 [c4,e4]@5", AF: "~@3 [e4,g4]@7 ~ [a3,d4] ~@4", AG: "~@7 [a3,d4] ~@8",
  AH: "~@3 [a3,d4] ~@11 [a3,d4]", AI: "~@7 [a3,d4] ~@3 [d4,f4]@5", AJ: "~@3 [a3,d4]@7 ~ [d4,g4] ~@4",
  AK: "~@7 [d4,g4] ~@8", AL: "~@3 [d4,g4] ~@11 [d4,g4]", AM: "~@7 [d4,g4] ~@3 [g4,b4]@5",
  AN: "~@3 [b4,d5]@7 ~ [g3,c4] ~@4", AO: "~@3 [e4,g4]@7 ~ [g3,c4] ~@4",
  AP: "[~@3 [e4,g4]@7 ~ [c4,f4]@9 ~@3 c4@2 ~@7, ~@23 f4 ~@8]/2", AQ: "~@3 [c4,e4]@4 ~@9",
})).s("gm_trumpet").gain(0.3).pan(0.6)

// chords · trombone
const trombone = note(`<
  A B C D E F G H@2 I J@2 K ~ I ~ L ~ M ~ N ~ O ~ P ~ Q ~ L ~ Q ~ L ~ R ~ N ~ S ~ P ~ Q ~ T U V W X@2 Y Z AA@2 AB AC
  AD@2 V W AE@2 V W AF@2 Y Z AA@2 AB AC AG@2 AH AI AJ ~ Q ~ L ~ R ~ N ~ S ~ P ~ Q ~ L ~ Q ~ L ~ R ~ N ~ S ~ P ~ Q ~ AK
  AL AH AI AM AN AO AP AQ AR AS AT AU AV AH AI AM AW AH AI AM AN AO AP AQ AR AS AT AU AV AH AI AM AW AH AI AM AN AO AP
  AQ AR AS AT AU AV AH AI AM AW AH AI AM AN AO AP AQ AR AS AT AU AV AH AI AM AW AH AI AM AN AO AP AQ AR AS AT AU AV AH
  AI AM AX@2 AY
>`.pickRestart({
  A: "~@12 [c4,e4,g4,b4] ~@3", B: "~@4 [c4,e4] ~@3 c4@2 ~@6, ~@8 e4 ~@7", C: "[b3,d4] ~@7 [a3,c4] ~@7",
  D: "c4 ~@3 d4 ~@3, a3 ~@7 b3 ~@7", E: "[g3,b3] ~@3 [a3,c4]@2 ~@2 [b3,d4] ~@3 [c4,e4]@2 ~@2",
  F: "~@4 [c4,e4] ~@3 c4@2 ~@5 d#4, ~@8 e4 ~@7", G: "e4@7 ~ f4@7 ~", H: "[e4@7 ~ g4@20 ~@4]/2",
  I: "~@4 [c4,e4]@3 ~ e4 ~@7, ~@7 c4@2 ~@7", J: "[~@12 [c3,f3]@9 ~@3 c3@2 ~@6, ~@24 f3 ~@7]/2", K: "~ [c3,e3] ~@2",
  L: "~@3 [c4,e4]@3 ~ e4@2 ~@7, ~@7 c4 ~@8", M: "~@4 [d4,f4]@3 ~ f4 ~@7, ~@7 d4@2 ~@7",
  N: "~@3 [d4,f4]@3 ~ f4@2 ~@7, ~@7 d4 ~@8", O: "~@4 [g4,b4]@3 ~ b4 ~@7, ~@7 g4@2 ~@7",
  P: "~@3 [g4,b4]@3 ~ b4@2 ~@7, ~@7 g4 ~@8", Q: "~@3 [c4,e4]@3 ~ c4@2 ~@7, ~@7 e4 ~@8",
  R: "~@3 [d4,f4]@3 ~ d4@2 ~@7, ~@7 f4 ~@8", S: "~@3 [g4,b4]@3 ~ g4@2 ~@7, ~@7 b4 ~@8",
  T: "~@3 [c4,e4]@2 ~@3 [c4,e4]@2 ~@6", U: "~@12 [g2,c3] ~@3", V: "~@8 [g2,c3] ~@7", W: "~@4 [g2,c3] ~@11",
  X: "[[g2,c3] ~@7 [g2,c3] ~@3 [c3,e3]@7 ~ [e3,g3]@7 d3 [a2,d3] ~@3]/2", Y: "~@8 [a2,d3] ~@7", Z: "~@4 [a2,d3] ~@11",
  AA: "[[a2,d3] ~@7 [a2,d3] ~@3 [d3,f3]@7 ~ [a2,d3]@7 ~ [d3,g3] ~@3]/2", AB: "~@8 [d3,g3] ~@7", AC: "~@4 [d3,g3] ~@11",
  AD: "[[d3,g3] ~@7 [d3,g3] ~@3 [g3,b3]@7 ~ [b3,d4]@7 ~ [g2,c3] ~@3]/2", // G5 G Bm C5
  AE: "[[g2,c3] ~@7 [g2,c3] ~@3 [c3,e3]@7 ~ [e3,g3]@7 ~ [g2,c3] ~@3]/2", // C5 C Em C5
  AF: "[[g2,c3] ~@7 [g2,c3] ~@3 [c3,e3]@7 ~ [e3,g3]@7 ~ [a2,d3] ~@3]/2", // C5 C Em D5
  AG: "[[d3,g3] ~@7 [d3,g3] ~@3 [g3,b3]@7 [b3,d4]@7 ~ [g2,c3] ~@4]/2", AH: "~@7 [g2,c3] ~@8",
  AI: "~@3 [g2,c3] ~@11 [g2,c3]", AJ: "~@3 [c3,e3] ~@12", AK: "~@3 [c4,e4] ~@3 [c4,e4]@2 ~@7", AL: "~@11 [g2,c3] ~@4",
  AM: "~@7 [g2,c3] ~@3 [c3,e3]@5", AN: "~@3 [e3,g3]@7 ~ [a2,d3] ~@4", AO: "~@7 [a2,d3] ~@8",
  AP: "~@3 [a2,d3] ~@11 [a2,d3]", AQ: "~@7 [a2,d3] ~@3 [d3,f3]@5", AR: "~@3 [a2,d3]@7 ~ [d3,g3] ~@4",
  AS: "~@7 [d3,g3] ~@8", AT: "~@3 [d3,g3] ~@11 [d3,g3]", AU: "~@7 [d3,g3] ~@3 [g3,b3]@5",
  AV: "~@3 [b3,d4]@7 ~ [g2,c3] ~@4", AW: "~@3 [e3,g3]@7 ~ [g2,c3] ~@4",
  AX: "[~@3 [e3,g3]@7 ~ [c3,f3]@9 ~@3 c3@2 ~@7, ~@23 f3 ~@8]/2", AY: "~@3 [c3,e3]@4 ~@9",
})).s("gm_trombone").gain(0.3).pan(0.6)

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

// drums · clap
const clap = s("cp").struct(`<
  ~@46 A B A B A B A B A B A B A B A B A B A B A B A B A B A C D C ~@34 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 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 D C D C D C D C D C D C D C D C D C D C D C D C ~@2
>`.pickRestart({
  A: "~ x!2 ~", B: "~ x ~@2", C: "~@3 x ~@12", D: "~@3 x ~@3 x ~@8",
})).gain(0.19)

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

// drums · low tom
const low_tom = s("lt").struct("<~@77 [~@3 x ~@12] ~@114>").gain(0.21)

// drums · hihat
const hihat = s("hh").struct("<A B C B D B C E ~@184>".pickRestart({
  A: "~@3 x", B: "x!4", C: "x ~ x!2", D: "x ~@2 x", E: "x!2 ~@2",
})).gain(0.16)

// drums · open hat
const open_hat = s("oh").struct("<~@2 [~ x ~@2] ~ [~ x ~@2] ~ [~ x ~@2] [~ x] ~@184>").gain(0.19)

// drums · crash
const crash = s("cr").struct("<~@10 [~@3 x] ~ [~ x ~@2] ~@176 [~@11 x ~@4] ~ [~@3 x ~@12]>").gain(0.19)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@45 A B C D A B C D A B C D A B C D A B C D A B C D A B C D E F G ~@33 E F G H E F G H E F G H E F G H E F G H E F G
  H E F G H E F G H E F G H E F G H E F G H E F G H E F G H E F G H E F G H E F G H E F G H E F G H E F G H E F G H ~@3
>`.pickRestart({
  A: "~@3 x", B: "x ~ x!2", C: "~ x ~@2", D: "~ x ~ x", E: "~@11 x ~@3 x", F: "~@7 x ~@3 x ~@4", G: "~@3 x ~@12",
  H: "~@3 x ~@7 x ~@4",
})).gain(0.19)
// … 67 more lines

More by Alain Barriere