Strudelify

Baila Me

Gipsy Kings

KeyG majorTempo118 bpm
0:00/0:00
// Baila Me — Gipsy Kings
// 118 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "STEEL GTR" acoustic guitar steel (copy of ch 4 "A.GUITAR" acoustic guitar nylon)
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@11 A B C D E F G H I J K L D M J N D H O ~ P Q R S T U R V W@2 R X T P R Y P@3 Z AA AB@2 AC P T W AD R@2 AE AF AG AH
  AI AJ AK AL AM AN AO ~@9 AP ~@5 AQ ~@6 AR@2 AS AI AT AU AV AM AW AK AX AY AW AU AX AZ BA ~@8
>`.pickRestart({
  A: "g1@9 ~ g1@5 ~", B: "g1@3 ~@5", C: "g1 ~ g1 g1@10 ~@3", D: "d2@3 f#2 a2@2 a1@2 d2@4 ~@2 d2 ~",
  E: "d2@3 f#2 a2@2 a1@2 d2@5 ~ d2@2", F: "g1@3 b1 d2@2 d1@2 g1@4 ~@2 g1 ~", G: "g1@2 ~ b1 d2@2 d1@2 g1@4 ~@2 g1@2",
  H: "d2@3 f#2 a2@2 a1@2 d2@5 ~ d2 ~", I: "d2@2 ~ f#2 a2@2 a1@2 d2@5 ~ d2@2", J: "g1@3 b1 d2@2 d1@2 g1@5 ~ g1 ~",
  K: "g1 ~@3", L: "g1 ~ g1@8 ~@6", M: "d2@3 f#2 a2@2 a1@2 d2@4 ~@2 d2@2", N: "g1@3 b1 d2 ~ d1@2 g1@5 ~ g1@2",
  O: "g1@3 ~@13", P: "g1@4 ~@2 g1 ~ g1@2 ~ b1 d2@2 d1@2", Q: "g1@4 ~@2 g1 ~ d2@2 ~ f#2 a2@2 a1@2",
  R: "d2@4 ~@2 d2 ~ d2@3 f#2 a2@2 a1@2", S: "d2@4 ~@2 d2 ~ g1@2 ~ b1 d2@2 d1@2", T: "g1@3 ~@3 g1 ~ g1@3 b1 d2@2 d1@2",
  U: "g1@4 ~@2 g1@2 d2@3 f#2 a2@2 a1@2", V: "d2@4 ~@2 d2 ~ g1@3 b1 d2@2 d1@2", W: "g1@4 ~@2 g1 ~ g1@3 b1 d2@2 d1@2",
  X: "d2@3 ~@3 d2 ~ d2@3 f#2 a2@2 a1@2", Y: "d2@4 ~@2 d2 ~ d2@2 ~ f#2 a2@2 d2@2",
  Z: "c2@4 ~@2 c2 ~ c2@2 ~ e2 g2@2 g1@2", AA: "c2@3 ~@3 c2 ~ c2@2 ~ e2 g2@2 g1@2",
  AB: "c2@4 ~@2 c2 ~ c2@3 e2 g2@2 g1@2", AC: "c2@4 ~@2 c2 ~ c2@3 e2 g2@3 ~", AD: "g1@4 ~@2 g1 ~ g1@3 b1 d2 ~ d1@2",
  AE: "d2@4 ~@2 d2 ~ d2@3 f#2 a2@4", AF: "g1@3 ~@3 g1 ~ g1@2 ~ b1 d2@2 d1@2", AG: "g1@3 b1 d2 ~ d1 ~ g1@6 ~@2",
  AH: "~@8 g1 ~ [f#1,g1] g1@4 ~", AI: "~@4 d2 f#2 a2 a1", AJ: "d2@3 ~@3 d2 ~ d2@2 f#2@2 a2@2 a1@2",
  AK: "d2@2 ~ d2 g1 b1 d2 d1", AL: "g1@3 ~@3 g1 ~ g1@2 b1@2 d2@2 d1@2", AM: "g1@2 ~ g1 d2 f#2 a2 a1",
  AN: "d2@2 ~@2 d2 f#2 a2 a1", AO: "d2@2 ~ d2@2 ~ d2@2 g1@3 ~@5", AP: "~@8 g1@5 ~@3", AQ: "~ g1",
  AR: "[~@8 g1@15 ~ g1@2 ~@6]/2", AS: "~@8 g1@7 ~", AT: "d2@4 ~@2 d2 ~ d2@2 f#2@2 a2@2 a1 ~",
  AU: "d2@4 ~@2 d2 ~ g1@2 b1@2 d2@2 d1@2", AV: "g1@5 ~@3 g1@2 b1 ~ d2 ~ d1@2", AW: "d2@4 ~@2 d2 ~ d2@2 f#2@2 a2@2 a1@2",
  AX: "g1@4 ~@2 g1 ~ g1@2 b1@2 d2@2 d1@2", AY: "g1@4 ~@2 g1 ~ d2 ~ f#2@2 a2@2 a1@2",
  AZ: "g1@4 ~@2 g1 ~ g1@3 ~@5, ~@8 f#1 ~@7", BA: "g1@5 ~@11",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · bandoneon · "BANDNEON"
const bandoneon = note(`<
  ~@23 A@2 B@2 A C ~@2 D E F G B E H I B@2 J K L B A@2 M N O P Q R S Q T U V T W X@2 Y Z ~ AA A AB L AC AD AE ~@9 AF
  AG@3 AH AG AI ~@9 AA A AJ B AC A AB B AC A AB AK AL AM ~@8
>`.pickRestart({
  A: "~@2 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~@3 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~", // D7
  B: "~@2 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~@3 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~", // G
  C: "~@2 [d4,f#4,c5]!2 ~@2 [d4,f#4,b4] ~@3 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4] ~", // D7 Bm D
  D: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~", // G
  E: "~@2 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~@3 [d4,f#4,c5]!2 ~ [d4,f#4,b4] [d4,f#4,a4] ~", // G D7 Bm D
  F: "~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4] ~@3 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~", // D D7
  G: "~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4] ~@3 [d4,g4,b4]!2 ~ [d4,a4] [d4,g4] ~", // D G D5 G5
  H: "~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4] ~@3 [d4,f#4,c5]!2 ~@2 [d4,f#4,a4] ~", // D D7 D
  I: "~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4] ~@3 [d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~", // D G
  J: "~@2 [d4,f#4,c5]!2 ~@2 [d4,f#4,a4,c5] ~@3 [d4,f#4,a4,c5]!2 ~@2 [d4,f#4,c5] ~", // D7
  K: "~@2 [d4,f#4]!2 ~@2 [d4,f#4,c5] ~@3 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~, ~ c5 ~@6", // D D7
  L: "~@2 [d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~@3 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~", // G
  M: "~@2 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~@3 [d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~", // G
  N: "~@2 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4]!2 ~ [b3,d4,g4]!2 ~", // G
  O: "~@2 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~", // G
  P: "~@2 [e3,g3,c4]!2 ~@2 [e3,g3,c4] ~@3 [g3,c4]!2 ~ [e3,g3,c4]!2 ~, ~@5 e3 ~@2", // C C5 C
  Q: "~@2 [e3,g3,c4]!2 ~@2 [e3,g3,c4] ~@3 [e3,g3,c4]!2 ~@2 [e3,g3,c4] ~", R: "f#3 g3@14 ~, c4@7 ~",
  S: "[f#3,a#3] g3@15, c4", T: "~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4]!2 ~@2 [g3,b3,d4] ~",
  U: "[f#3,c#4] [g3,d4]@14 ~", V: "[f#3,c#4] g3@14 ~, d4@15 ~, ~ f#3 ~@14",
  W: "~@2 [f#3,a3,d4]!2 ~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@5", X: "[a3,d4]@15 ~, g#3 ~@15",
  Y: "~@2 [b3,d4,e4,g4]!2 ~@2 [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4]!2 ~ [b3,d4,e4,g4] [b3,d4,e4,g4]@2", // Em7
  Z: "~@2 [b3,d4,e4,g4]!2 ~ [b3,d4,e4,g4]!2 ~ [b3,g4]@2 ~@6, ~@8 d4 ~@7", AA: "~@10 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~",
  AB: "~@2 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~@3 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~", // D7 G
  AC: "~@2 [d4,g4,b4]!2 ~@2 [d4,g4,b4] ~@3 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~", // G D7
  AD: "~@2 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~@3 [d4,f#4,c5]@3 ~ [d4,f#4,c5] ~", // D7
  AE: "~@2 [d4,f#4,c5]!2 ~ [d4,f#4,c5]!2 ~ [d4,g4,b4] ~@7", AF: "~@10 [g4,b4,d5] ~@2 [g4,b4,d5] ~@2",
  AG: "[d5,f5]@3 [c5,e5]@3 [b4,d5] ~@3 [g4,b4,d5] ~@2 [g4,b4,d5] ~@2, g4@7 ~@9", // Dm C Bm G
  AH: "[d5,f5]@2 ~ [c5,e5]@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@2 [g4,b4,d5] ~@2, g4@5 ~@11", // Dm C G
  AI: "[d5,f5]@3 [c5,e5]@3 [b4,d5] ~@9, g4@7 ~@9", // Dm C Bm
  AJ: "~@2 [d4,f#4,c5]!2 ~@2 [d4,f#4,c5] ~@3 [d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~", // D7 G
  AK: "~@2 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [b3,d4,e4,g4]!2 ~@2 [b3,d4,e4,g4] ~", // G Em7
  AL: "~@2 [b3,d4,e4,g4]!2 ~ [b3,d4,e4,g4]!2 ~ [b3,d4,e4,g4] ~@5 [b3,d4,e4,g4]!2", AM: "[b3,d4,e4,g4] ~@15",
})).s("gm_bandoneon").gain(0.25)

// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note(`<
  ~@4 A B C D C D E@2 F G H I J@2 K@2 L F G I@2 J@2 M N O ~ J P I Q R S T U R@2 T@2 R@2 T@2 V R@2 W X Y Z AA J AB AC J
  AD AE T AF AG AH AI AJ AK AL AM AJ AN ~@15 AO@8 AP AQ AI AJ AR AS AT AU AR AS AT AU AR AV AW AX ~@8
>`.pickRestart({
  A: "d4@3 b3@3 g3@5 ~ g3 b3 d4 g4", B: "f#4@3 d4@3 b3@7 ~@3", C: "d4@3 b3@3 g3@4 ~@2 g3 b3 d4 g4",
  D: "f#4@3 d4@3 b3@6 ~@4",
  E: "[d4@3 b3@3 g3@4 ~@2 g3 b3 d4 ~ [b3,d4] [g3,b3,d4] [g3,g4] [g3,b3,d4,g4] [b3,d4,g4] [g3,b3,d4,g4]!3 g3 [g3,b3,d4,g4] [b3,d4,g4] [g3,b3,d4,g4]!5, ~@15 g4@2 ~@15]/2", // Bm G
  F: "[g3,b3,d4,g4] ~@15", G: "[g3,b3,d4,g4] ~ [g3,b3,d4,g4] [g3,b3,d4,g4]@2 ~@11",
  H: "~@2 [c4,d4,f#4] ~@3 [c4,d4,f#4]@2 ~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~", // D7
  I: "~@2 [a3,c4,d4,f#4]@2 ~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~", // D7
  J: "~@2 [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // G
  K: "~@2 [c4,d4,f#4]@2 ~@2 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~", // D7
  L: "~@2 [b3,d4,g4] ~@3 [g3,b3,d4,g4] ~ [b3,d4,g4] [g3,b3,d4,g4] [g3,g4] [g3,b3,d4] [g3,b3,d4,g4]!2 [g3,d4,g4] [g3,b3,d4,g4]", // G G5 G
  M: "~@2 [c4,d4,f#4]@2 ~@2 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~@3 [c4,d4,f#4]@2", // D7
  N: "~@2 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~", O: "[g3,b3,d4,g4] ~@3",
  P: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~", // G D7
  Q: "~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4]@2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // D7 G
  R: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // G
  S: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~", // G D7
  T: "~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~", // D7
  U: "~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // D7 G
  V: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~", // G
  W: "~@2 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~@3 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~", // C
  X: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4]@2", // C
  Y: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~", // C
  Z: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~", // C
  AA: "~@2 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~", // C
  AB: "~@2 [b3,d4,g4] ~@3 [c4,d4,f#4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // G Csus2 G
  AC: "~@2 [b3,d4,g4]@3 ~ [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // G
  AD: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4]@2", // D
  AE: "~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4]@2", // D7
  AF: "~@2 [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,d#4,g4] ~", // G
  AG: "[b3,d4,g4] [g3,b3,d4,g4]!4 g3 [g3,b3,d4,g4]!2 [g3,b3,d4,g4]@3 ~@5", // G
  AH: "~@8 [g3,b3,d4,g4] ~ [g3,b3,d4,g4]!2 ~@4", AI: "~@10 [a3,c4,d4,f#4]!2 ~@2 [a3,c4,d4,f#4] ~",
  AJ: "~@2 [a3,c4,d4,f#4]@2 ~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4]!2 ~@2 [a3,c4,d4,f#4] ~", // D7
  AK: "~@2 [a3,c4,d4,f#4]@2 ~@2 [a3,c4,d4,f#4] ~@3 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~", // D7 G
  AL: "~@3 d4 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~, ~ [b3,d4,g4] ~@6", // G
  AM: "~@2 [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~@3 [a3,c4,d4,f#4]!2 ~@2 [a3,c4,d4,f#4] ~", // G D7
  AN: "~@2 [a3,c4,d4,f#4]@2 ~@2 [a3,c4,d4,f#4] ~@9", // D7
  AO: "[~@8 d4@3 b3@3 g3@5 ~ g3 b3 d4 g4 f#4@3 d4@3 b3@7 ~@3 d4@3 b3@3 g3@5 ~ g3 b3 d4 g4 f#4@3 d4@3 b3@7 ~@3 d4@3 b3@3 g3@4 ~@2 g3 b3 d4 g4 f#4@3 d4@3 b3@8 ~@2 d4@3 b3@3 g3@5 ~ g3 b3 d4 ~@2 g3@2 [g3,b3,d4,g4] [b3,d4,g4] [g3,b3,d4,g4] [g3,d4] [g3,b3,g4], ~@119 g4@2 ~@7, ~@60 b3 ~@3]/8", // G G5 G
  AP: "[g3,b3,d4,g4]!2 [b3,d4,g4] [g3,b3,d4,g4]!6 ~@7", AQ: "~@8 [g3,b3,d4,g4] ~ [g3,d4,g4] [g3,d4,g4]@5, ~@5 b3@3",
  AR: "~@2 [a3,c4,d4,f#4]!2 ~@2 [a3,c4,d4,f#4] ~@3 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~", // D7 G
  AS: "~@2 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~", // G
  AT: "~@2 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [a3,c4,d4,f#4]!2 ~@2 [a3,c4,d4,f#4] ~", // G D7
  AU: "~@2 [a3,c4,d4,f#4]!2 ~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4]!2 ~@2 [a3,c4,d4,f#4] ~", // D7
  AV: "~@2 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] [g3,b3,d4,g4] [g3,g4] [g3,b3,d4] [g3,b3,d4,g4] [b3,d4,g4]", // G
  AW: "[g3,b3,d4,g4] g3 [g3,b3,d4,g4]!2 [b3,d4,g4] [g3,b3,d4] [g3,g4] [g3,b3,d4,g4] [b3,d4,g4] ~@5 [b3,d4,g4]!2", // G
  AX: "~ f#3 ~@14, [g3,b3,d4,g4]@5 ~@11", // G
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.2)

// other · brass section · "BRASS"
const brass_section = note(`<
  ~@21 A ~@3 B ~@14 C ~@2 D ~@19 E ~@3 F G ~@14 H I H I H ~@11 F G ~@2 F G ~@4 J K ~@8
>`.pickRestart({
  A: "g4 ~@7, g5 ~@15", B: "~@11 [g4,g5] ~@3 [g4,g5]", C: "~@3 [g4,g5]@3 ~@10",
  D: "~@4 [g4,g5] ~ [g4,g5] ~@4 [g4,g5] ~@2 g5 g4", E: "~@4 [g4,g5] ~@3", F: "~@12 [g4,g5] ~ [g4,g5] ~",
  G: "~@3 [g4,g5] ~@3 [g4,g5] ~@8", H: "~@4 g4 ~@3, ~@8 g5 ~@7", I: "~@6 [g4,g5] ~ [g4,g5]@2 ~@6",
  J: "~@6 [d4,d5] [e4,e5] [g4,g5] ~@5 [g4,g5]!2", K: "[g4,g5] ~@15",
})).s("gm_brass_section").gain(0.8)

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

// drums · rim
const rim = s("rim").struct("<A@11 ~@3 A@7 ~@2 A@40 B ~ C A@29 B ~ C A@11 B ~@9>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.64)

// drums · clap
const clap = s("cp").struct("<~@77 [~@8 x!8] [x!16]!3 [x!9 ~@7] ~@37>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<A@11 ~@3 A@7 ~@2 A@40 B ~ C A@29 B ~ C A@11 B ~@9>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<A ~@11 A ~ A ~@6 A ~ A ~@39 B ~ B ~@15 B ~@13 B ~ B ~@11 B A ~@8>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@23 A@6 B ~@10 A@10 C D@12 E ~ F A@14 G A H@6 I D@6 J ~ F A@11 K B ~@8
>`.pickRestart({
  A: "x!16", B: "x", C: "x!2 ~ x ~ x ~ x", D: "~ x ~ x ~ x ~ x", E: "~@3 x!2 ~@3", F: "~@8 x!8", G: "x!6 ~ x!9",
  H: "x!8", I: "~ x!3 ~ x ~ x", J: "~ x ~ x!2 ~@3", K: "x!9 ~@5 x!2",
})).gain(0.48)

// drums · cowbell
const cowbell = s("cb").struct("<A@12 B ~ A@7 B ~ A@40 C D@2 A@29 C ~ D A@11 C B ~@8>".pickRestart({
  A: "x!4", B: "x", C: "x!3 ~", D: "~@2 x!2",
})).gain(0.56)

// drums · bongos
const bongos = s("bongo:4").struct("<~@103 [~@15 x] ~@15>").gain(1.26)

// drums · congas
const congas = s("conga:13").struct(`<
  A B@2 C B@2 D C B@4 ~ E B@2 D B D@3 ~ E B F B D B@4 D G H I B D J K L M L A@2 N@2 A@3 N A@2 O P N A O A Q A@2 R G S T
  B U V B W B W B F B X B F B F V W Y F W B W B@2 A Z AA AB Z AC AD T B W@2 B W@2 F AE Z A AA A AF AG ~@8
>`.pickRestart({
  A: "~ x ~ x", B: "~@7 x ~@7 x", C: "~@7 x ~@6 x ~", D: "~@7 x ~ x ~@5 x", E: "x ~ x!2 ~@11 x", F: "~ x ~@5 x ~@7 x",
  G: "~@7 x ~@4 x ~@3", H: "~@4 x ~@2 x ~ x ~@2 x ~@3", I: "~@4 x ~@4 x ~@5 x", J: "~@7 x ~ x ~@6",
  K: "x ~@2 x ~@5 x ~@2 x ~@3", L: "~@4 x ~@4 x ~@2 x ~@3", M: "~@4 x ~@5 x ~@2 x ~@2", N: "~@4 x ~@8 x ~@2",
  O: "~@4 x!2 ~@6 x ~@3", P: "~@4 x ~@6 x ~ x ~@2", Q: "~ x!3", R: "~@4 x ~@7 x ~@2 x", S: "~ x ~@2",
  T: "~@8 x ~ x!2 ~@4", U: "~@3 x ~@3 x", V: "~@6 x!2 ~@7 x", W: "~@6 x ~@8 x", X: "~@6 x ~@5 x!2 ~ x", Y: "~@7 x ~@8",
  Z: "~@5 x ~@6 x ~@3", AA: "~ x ~@2 x ~@7 x ~@3", AB: "~ x ~@3 x ~@6 x ~@3", AC: "~@5 x ~@9 x", AD: "~ x ~@5 x ~@8",
  AE: "~@4 x ~@2 x", AF: "~@4 x ~@9 x!2", AG: "x",
})).gain(2.3)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  A B C@3 D E F G H I J ~ K L F@3 C F@2 M K F@4 N O P I@2 Q R S T F U V W X A Y@2 Z@2 AA@3 AB AA AC Y@2 AD AA@6 AE AF AG
  ~ I AH T AI AJ AI AK H AL AM AN AO AP H B AI AQ AR I AS AT AU AV AI AW AX W AY AZ BA BB ~ I H@3 BC H BD BE BF BG BH BI
  BJ ~@9
>`.pickRestart({
  A: "x ~@5 x!2 ~@6 x!2", B: "~@3 x!2 ~@3 x ~@2 x!2 ~@3", C: "x ~@5 x ~@4 x!2 ~@3", D: "x ~@2 x!2 ~@3 x ~@5 x ~",
  E: "~@3 x!2 ~@6 x!2 ~@3", F: "x ~@3 x ~ x ~@4 x!2 ~@3", G: "x ~ x ~ x ~ x!2", H: "~ x ~ x!2 ~@3 x ~@3 x ~ x ~",
  I: "~@3 x!2 ~@3 x ~@3 x ~ x ~", J: "~ x ~ x!2 ~@3 x!2 ~@2 x ~ x ~", K: "~@11 x!2 ~@3", L: "x ~@3 x ~@3 x ~@2 x!2 ~@3",
  M: "x!2 ~@2", N: "x ~ x!2 ~@2 x ~", O: "x ~ x!2 ~@2 x!2", P: "~@3 x!2 ~@4 x ~@4 x ~", Q: "~@3 x!2 ~@4 x ~@4 x!2",
  R: "~@3 x ~@4 x ~@5 x!2", S: "~@6 x!2 ~@3 x!2 ~@3", T: "x ~@3 x ~ x ~@2 x ~ x!2 ~@3", U: "x ~@3 x ~ x ~@5 x!2 ~@2",
// … 65 more lines

More by Gipsy Kings