Strudelify

Vaya Con Dios

G. G. Anderson

KeyD majorTempo94 bpm
0:00/0:00
// Vaya Con Dios — G. G. Anderson
// 94 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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 · synth bass 2
const bass = note(`<
  ~@4 A B@3 C D@2 E F@2 C D@2 G H@2 I J@2 K@3 L M@2 N@3 C D@2 E F@2 C D@2 G H@2 I J@2 K@3 L M@2 O@3 P Q@2 R S@2 T U@2
  V@3 I J@2 K@3 L M@2 W@3 I J@2 K@3 L M@2 W@3 I J@2 K@3 L M@2 X@3
>`.pickRestart({
  A: "~@3 a2", B: "[d2@15 ~ d2 ~ d2@16 ~@2 d2@15 ~ d2 ~ d2@16 ~@2]/3", C: "a1@15 ~ g1 ~ a1@6",
  D: "[g1@6 e1@6 a1@15 ~ e2@2 a1@15 ~ a1@2]/2", E: "c#2@6 d2@10 d2 ~ d2@4 b1@2", F: "[a1@12 d2@15 ~ d2 ~ d2@16 ~@2]/2",
  G: "c#2@6 d2@10 a1 ~ d2@4 a1@2", H: "[e1@3 f#1@3 g1@8 g1 g1@8 a1]/2", I: "d2@8 a2 b2@2 a#2",
  J: "[a2@2 f#2 d2@2 b1 a1@8 g1 g1@6 a1@3]/2",
  K: "[f#1@12 d2@2 e2@2 d2@2 f#2@4 a2@4 f#2@2 e2@2 d2@5 ~ g1@16 g1@2 g1@16 a1@2]/3", L: "d2@6 d2 e2 d2 f#2@2 e2",
  M: "[d2@3 b1@3 a1@8 a1 a1@3 b1@3 c#2@3]/2", N: "[d2@16 d2@2 d2@18 d2@15 ~ d2 ~ d2@16 ~@2]/3",
  O: "[d2@8 d2 d2@9 d1@8 d1 f#1@8 f#1]/3", P: "g1@8 d2 g2@2 a2", Q: "[g2@3 d2@3 d1@8 d1 d1@6 a1@3]/2",
  R: "g1@5 d2 g2@2 d2 g1@3", S: "[f#2@3 f2@3 e2@8 e1 e1@9]/2", T: "a1@8 e2 a2@2 b2",
  U: "[a2 f#2 e2 a1@3 b1@8 d2 e2@6 b1 e1 g#1]/2", V: "[a1@5 a2@2 b2 a2 b2@2 a2@4 a1@3 g1@8 g1 g1@8 a1]/3",
  W: "[d2@8 d2 d2@9 g1@8 g1 g1@8 a1]/3", X: "[d2@8 d2 d2@6 a1@3 d2@9 ~@9]/3",
})).s("gm_synth_bass_2").gain(0.55)

// other · muted trumpet
const muted_trumpet = note(`<
  ~@6 A B C D E F A B C D E F G@2 H I@2 J G@2 H K@2 L A B C D E F A B C D E F G@2 H I@2 J G@2 H K@2 L M N O P Q R S T U
  V W X G@2 H I@2 J G@2 H K@2 L G@2 H I@2 J G@2 H K@2 L G@2 H I@2 J G@2 H K@2 L ~@2
>`.pickRestart({
  A: "~@3 d4@2 e4 f#4@2 f4 f#4@2 f4", B: "f#4@4 ~@6 f4@2 f#4@7 ~@3 g4@2", C: "f#4@5 ~ e4@8 ~@10",
  D: "~@3 e4@2 f#4 g4@2 f#4 g4@2 f#4", E: "g4@2 ~@3 f#4 g4@3 ~@2 e4", F: "f4@6 f#4@11 ~@7",
  G: "[~@6 d5@3 d5@5 d5 d5@3 c#5@5 b4]/2", H: "b4 a4@2 ~", I: "[~@6 a4@3 a4@5 a4 a4@3 g4@4 a4@2]/2", J: "f#4@3 ~",
  K: "[~@6 a4@3 a4@5 a4 a4@3 g4@3 c#4@3]/2", L: "d4@3 ~", M: "~@3 d4@3 c5@2 d5 c5@2 b4",
  N: "c5@5 ~@5 b4@2 c5@7 ~@3 d5@2", O: "c5@6 b4@11 ~@7", P: "~@5 d4 a4@2 b4 a4@2 g#4", Q: "a4@2 g#4 a4@6 ~@2 b4",
  R: "g4@7 ~@5", S: "~@6 d5@2 e5 d5@2 c#5", T: "d5@4 c#5@2 d5@7 ~@3 c#5@2 d5@4 e5@2", U: "d5@6 c#5@11 ~@7",
  V: "~@5 e4 b4@2 c#5 b4@2 a#4", W: "b4@2 a#4 b4@6 c#5@3", X: "a4@7 ~@5",
})).s("gm_muted_trumpet").gain(0.38)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@5 B@3 C@3 D@3 C@3 E@3 F@3 G H@2 F@3 I@3 C@3 D@3 C@3 E@3 F@3 G H@2 F@3 I@3 J@3 K@3 L@3 M@3 F@3 G H@2 F@3 N@3 F@3 G
  H@2 F@3 N@3 F@3 G H@2 F@3 O@3
>`.pickRestart({
  A: "[~@2 [g1,g2]@6 ~ f#3@5 [a1,a2,c#3,e3]@6, ~ d3@6 ~@3, ~@2 [g3,b3]@7 a3@11, ~@4 d2@3 ~@3]/5", // G A G
  B: "[[d3,f#3,a3] [f#3,a3,d4]]/3", C: "[e3,a3,c#4]/3", D: "[[f3,g#3,c#4] [f#3,a3,d4]@5 [f#3,a3,d4]@6]/3",
  E: "[[f3,g#3,c#4] [f#3,d4]@3 [e3,c#4] [f#3,c4] [b3,d4,g4]@6, ~ a3@5 ~@6]/3", // C# D C#m F#dim G
  F: "[[d4,f#4]@4 [c#4,e4] [b3,d4] [e3,a3,c#4]@6, a3 ~]/3", G: "[f#3,a3]@3 [a3,f#4], d4",
  H: "[[b3,e4,g4] [c#4,f#4,a4] [b3,d4,g4]@6]/2", I: "[[f#3,a3,d4] [f#3,a3,d4]]/3", J: "[[g3,b3,d4] [f#3,a3,d4]]/3",
  K: "[[g3,b3,d4] [g#3,b3,e4]]/3", L: "[[a3,c#4,e4] [g#3,b3,e4]]/3", M: "[[a3,c#4,e4] [b3,d4,g4]]/3",
  N: "[[f#3,a3,d4] [b3,d4,g4]]/3", O: "[[f#3,a3,d4]@3 ~]/3",
})).s("gm_synth_strings_1").gain(0.24)

// other · synth strings 1
const synth_strings_1_2 = note(`<
  A@2 B@3 C ~@6 D E F G H I J@2 K L@2 M N@2 K O@2 P ~@6 D E F G H I J@2 K L@2 M N@2 K O@2 P ~@5 Q R@2 S@2 T U@3 K L@2 M
  N@2 K O@2 P N@2 K L@2 M N@2 K O@2 P N@2 K L@2 M N@2 K O@2 V@3
>`.pickRestart({
  A: "[~@6 b3@3 b3@5 b3 b3@3 a3@5 g3]/2", B: "[g3@3 f#3@15 a3@3 a3@5 a3 a3@2 g#3 g3@3 a3@3]/3", C: "f#3@5 ~@19",
  D: "~@3 d4@2 e4 f#4@2 f4 f#4@2 f4", E: "f#4@4 ~@6 f4@2 f#4@7 ~@3 g4@2", F: "f#4@5 ~ e4@8 ~@10",
  G: "~@3 e4@2 f#4 g4@2 f#4 g4@2 f#4", H: "g4@2 ~@3 f#4 g4@3 ~@2 e4", I: "f4@6 f#4@11 ~ f#4@6",
  J: "[g4@3 a4@3 d5@3 d5@5 d5 d5@3 c#5@5 b4]/2", K: "b4 a4@2 ~", L: "[~@6 a4@3 a4@5 a4 a4@3 g4@4 a4@2]/2", M: "f#4@3 ~",
  N: "[~@6 d5@3 d5@5 d5 d5@3 c#5@5 b4]/2", O: "[~@6 a4@3 a4@5 a4 a4@3 g4@3 c#4@3]/2", P: "d4@3 ~", Q: "~@3 g4",
  R: "[f#4 f4 e4@3 g#4@3]/2", S: "[e4@2 a4 c#5@3 e4@2]/2", T: "g#4 b4@2 c#5", U: "[a4@18 d5@3 d5@5 d5 d5@3 c#5@5 b4]/3",
  V: "[d4@3 ~]/3",
})).s("gm_synth_strings_1").gain(0.33).pan(0.7)

// chords · pan flute
const pan_flute = note("<A@2 B@3 C@2 ~@97>".pickRestart({
  A: "[~@6 [b4,d5]@3 [b4,d5]@5 [b4,d5] [b4,d5]@3 [a4,c#5]@5 [g4,b4]]/2", // Bm A G
  B: "[[g4,b4]@3 [f#4,a4]@15 [e4,a4]@3 [e4,a4]@5 [e4,a4] [e4,a4]@2 [e4,g#4] [e4,g4]@3 [c#4,a4]@3]/3", // G F#m A5 E Em F#m
  C: "[[d4,f#4]@29 ~@19]/2", // D
})).s("gm_pan_flute").gain(0.33).pan(0.7)

// other · pad new age
const pad_new_age = note("<A@2 B@3 C ~@98>".pickRestart({
  A: "[~@6 [d6,d7]@3 [d6,d7]@5 [d6,d7] [d6,d7]@3 [c#6,c#7]@5 [b5,b6]]/2", // D C# B
  B: "[[b5,b6]@3 [a5,a6]@15 [a5,a6]@3 [a5,a6]@5 [a5,a6] [a5,a6]@2 [g#5,g#6] [g5,g6]@3 [c#5,c#6]@3]/3", // B A G# G C#
  C: "[d5,d6]@17 ~@7", // D
})).s("gm_pad_new_age").gain(0.38)

// other · shamisen
const shamisen = note(`<
  ~@2 A B C D E F G H C I J F G H C K L M N B C N L M N B C N E F G H C I J F G H C K L M N B C N L M N B C N O F P Q F
  P R S T U S T V M N B C N L M N B C N L M N B C N L M N B C N L M N B C N L M N B C N W ~
>`.pickRestart({
  A: "~@18 d6 ~ e6 ~ f#6 ~", B: "a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ c#6 ~ e6 ~ g6 ~ a6 ~ c#6 ~ e6 ~",
  C: "g6 ~ a6 ~ g6 ~ c#6 ~ e6 ~ g6 ~ a6 ~ c#6 ~ e6 ~ g6 ~ a6 ~ g6 ~",
  D: "d6 ~ e6 ~ f#6 ~ a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~ f#6 ~",
  E: "a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ d6 ~ e6 ~",
  F: "f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~",
  G: "c#6 ~ e6 ~ g6 ~ a6 ~ c#6 ~ e6 ~ g6 ~ a6 ~ g6 ~ c#6 ~ a6 ~ e6 ~",
  H: "a6 ~ e6 ~ a6 ~ e6 ~ a6 ~ e6 ~ c#6 ~ e6 ~ g6 ~ a6 ~ c#6 ~ e6 ~",
  I: "c#6 ~ f6 ~ g#6 ~ a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ a6 ~ d6 ~",
  J: "a6 ~ d6 ~ a6 ~ d6 ~ a6 ~ d6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ d6 ~ e6 ~",
  K: "c#6 ~ f6 ~ g#6 ~ a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~ f#6 ~",
  L: "a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ g6 ~ b6 ~ g6 ~ d6 ~ g6 ~",
  M: "a6 ~ b6 ~ g6 ~ d6 ~ g6 ~ a6 ~ b6 ~ d6 ~ g6 ~ a6 ~ b6 ~ g6 ~",
  N: "d6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~ f#6 ~",
  O: "a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~",
  P: "d6 ~ g6 ~ b6 ~ g6 ~ d6 ~ g6 ~ a6 ~ b6 ~ g6 ~ d6 ~ g6 ~ a6 ~",
  Q: "b6 ~ d6 ~ g6 ~ a6 ~ b6 ~ g6 ~ d6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~ e6 ~",
  R: "b6 ~ d6 ~ g6 ~ a6 ~ b6 ~ g6 ~ e6 ~ g#6 ~ b6 ~ g#6 ~ e6 ~ f#6 ~",
  S: "g#6 ~ b6 ~ g#6 ~ e6 ~ f#6 ~ g#6 ~ b6 ~ e6 ~ f#6 ~ g#6 ~ b6 ~ g#6 ~",
  T: "e6 ~ a6 ~ c#7 ~ a6 ~ e6 ~ a6 ~ b6 ~ c#7 ~ a6 ~ e6 ~ a6 ~ b6 ~",
  U: "c#7 ~ e6 ~ a6 ~ b6 ~ c#7 ~ a6 ~ e6 ~ g#6 ~ b6 ~ g#6 ~ e6 ~ f#6 ~",
  V: "c#7 ~ e6 ~ a6 ~ b6 ~ c#7 ~ a6 ~ d6 ~ g6 ~ b6 ~ g6 ~ d6 ~ g6 ~", W: "a6 ~ d6 ~ e6 ~ f#6 ~ a6 ~ f#6 ~ d6 ~@11",
})).s("gm_shamisen").gain(0.11).pan(0.8)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@6 A@2 B@3 C@3 B@3 D@2 ~@11 A@2 B@3 C@3 B@3 D@2 ~@11 A@2 E@3 F@3 G@3 H@2 ~@37
>`.pickRestart({
  A: "[~@13 a3@2 ~@7 a3@2, ~@6 a4@2 d4@2 d4@2 d4@2 ~ a4@2 d4@2 d4@2 d4@2 ~, ~@7 f#4@2 f#4@2 a3@2 ~@3 f#4@2 f#4@2 a3@2 ~@2]/2",
  B: "[~@7 a3@2 ~@7 a3@2 ~@7 a3@2 ~@7 a3@2, a4@2 c#4@2 c#4@2 c#4@2 ~ a4@2 c#4@2 c#4@2 c#4@2 ~ a4@2 c#4@2 c#4@2 c#4@2 ~ a4@2 c#4@2 c#4@2 c#4@2 ~, ~ e4@2 e4@2 a3@2 ~@3 e4@2 e4@2 a3@2 ~@3 e4@2 e4@2 a3@2 ~@3 e4@2 e4@2 a3@2 ~@2]/3",
  C: "[~@7 a3@2 ~@7 a3@2 ~@7 a3@2 ~@7 a3@2, f4@2 a3@2 d4@2 d4@2 ~ a4@2 d4@2 d4@2 d4@2 ~ a4@2 d4@2 d4@2 d4@2 ~ a4@2 d4@2 d4@2 d4@2 ~, ~ c#4@2 f#4@2 a3@2 ~@3 f#4@2 f#4@2 a3@2 ~@3 f#4@2 f#4@2 a3@2 ~@3 f#4@2 f#4@2 a3@2 ~@2]/3",
  D: "[~@7 a3@2 ~@7 a3@2 ~@6, f4@2 a3@2 d4@2 d4@2 ~ a4@2 d4@2 d4@2 d4@2 ~@7, ~ c#4@2 f#4@2 a3@2 ~@3 f#4@2 f#4@2 a3@2 ~@8]/2",
  E: "[~@7 b3@2 ~@7 b3@2 ~@7 a3@2 ~@7 a3@2, b4@2 d4@2 d4@2 d4@2 ~ b4@2 d4@2 d4@2 d4@2 ~ a4@2 d4@2 d4@2 d4@2 ~ a4@2 d4@2 d4@2 d4@2 ~, ~ g4@2 g4@2 b3@2 ~@3 g4@2 g4@2 b3@2 ~@3 f#4@2 f#4@2 a3@2 ~@3 f#4@2 f#4@2 a3@2 ~@2]/3",
  F: "[~@7 b3@2 ~@7 b3@2 ~@7 b3@2 ~@7 b3@2, b4@2 d4@2 d4@2 d4@2 ~ b4@2 d4@2 d4@2 d4@2 ~ b4@2 e4@2 e4@2 e4@2 ~ b4@2 e4@2 e4@2 e4@2 ~, ~ g4@2 g4@2 b3@2 ~@3 g4@2 g4@2 b3@2 ~@3 g#4@2 g#4@2 b3@2 ~@3 g#4@2 g#4@2 b3@2 ~@2]/3",
  G: "[~@7 c#4@2 ~@7 c#4@2 ~@7 b3@2 ~@7 b3@2, c#5@2 e4@2 e4@2 e4@2 ~ c#5@2 e4@2 e4@2 e4@2 ~ b4@2 e4@2 e4@2 e4@2 ~ b4@2 e4@2 e4@2 e4@2 ~, ~ a4@2 a4@2 c#4@2 ~@3 a4@2 a4@2 c#4@2 ~@3 g#4@2 g#4@2 b3@2 ~@3 g#4@2 g#4@2 b3@2 ~@2]/3",
  H: "[~@7 c#4@2 ~@7 c#4@2 ~@6, c#5@2 e4@2 e4@2 e4@2 ~ c#5@2 e4@2 e4@2 e4@2 ~@7, ~ a4@2 a4@2 c#4@2 ~@3 a4@2 a4@2 c#4@2 ~@8]/2",
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.3)

// other · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@7 A@2 B C@2 D A@2 B C@2 D ~@12 A@2 B C@2 D A@2 B C@2 D ~@12 E@2 F E@2 F G@2 H G@2 H ~@37
>`.pickRestart({
  A: "[~@2 f#3@2 ~@7 f#3@2 ~@7 e3@2 ~@2]/2", B: "~@5 e3@2 ~@5", C: "[~@2 e3@2 ~@7 e3@2 ~@7 f#3@2 ~@2]/2",
  D: "~@5 f#3@2 ~@5", E: "[~@2 f#3@2 ~@7 f#3@2 ~@7 g3@2 ~@2]/2", F: "~@5 g3@2 ~@5",
  G: "[~@2 g#3@2 ~@7 g#3@2 ~@7 a3@2 ~@2]/2", H: "~@5 a3@2 ~@5",
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.3)

// other · synth drum
const synth_drum = note(`<
  ~@17 A B ~@4 C D ~@16 A B ~@4 C D ~@16 E F ~@4 C D ~@4 G H ~@4 C D ~@4 G I ~@4 C D ~@4 G J ~
>`.pickRestart({
  A: "~@18 a3 ~@3 a3 ~", B: "e3 ~ g2 ~ g3 ~ g2 ~@17", C: "~@22 e4 ~", D: "~@2 b3 ~ b3 ~ g3 ~@17", E: "~@22 g3 ~",
  F: "~@4 f3 ~ d#3 ~@17", G: "~@18 g3 ~@3 g3 ~", H: "~@2 f#3 ~ f#3 ~ e3 ~ d#3 ~ d#3 ~@13", I: "~@2 f#3 ~ f#3 ~ e3 ~@17",
  J: "~@2 f#3 ~@3 f3 ~@17",
})).s("gm_synth_drum").gain(0.43).pan(0.6)

// other · string ensemble 2
const string_ensemble_2 = note("<~@42 A@5 B C@5 D@2 ~@11 A@5 B C@5 E@6 B C@5 E@6 B C@5 F@3>".pickRestart({
  A: "[~@2 g6@7 f#6@5 e6@3 a6@3]/5", B: "d6", C: "[e6 f#6 g6@7 f#6@5 a6@6]/5", D: "[d6@31 ~@17]/2",
  E: "[d6@31 ~@5 g6@42 f#6@30 e6@18 a6@18]/6", F: "[d6@3 ~]/3",
})).s("gm_string_ensemble_2").gain(0.24).pan(0.7)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@44 A B ~ C@2 ~ D E ~@16 A B ~ C@2 ~ D E ~@4 A B ~ C@2 ~ D E ~@4 A B ~ C@2 ~ D E ~@4
>`.pickRestart({
  A: "~@6 f#4 a4 f#4 b4@2 a#4", B: "a4@2 f#4 d4@2 b3 ~@6", C: "[~@12 d4@2 e4@2 d4@2 f#4@4 a4@4 f#4@2 e4@2 d4@7 ~@11]/2",
  D: "~@6 d4 e4 d4 f#4@2 e4", E: "d4 b3 a3@2",
})).s("gm_synth_brass_1").gain(0.33)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 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 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 A B ~
>`.pickRestart({
  A: "x ~@7 x!2 ~@2", B: "~ x", C: "~@2 x!2 ~@8",
})).gain(0.6)

// drums · rim
const rim = s("rim").struct(`<
  ~@5 A B C A B C A B C A B C A D C A B C A B C A B C A B C A B C A B C A B C A D 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 A B C A B C A B C A B C A E ~
>`.pickRestart({
  A: "~ x ~@2", B: "x ~@2 x", C: "~ x", D: "~@3 x", E: "x",
})).gain(0.53)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A B C D E C D E C D E C D F ~@10 A B C D E C D E C D E C D E C D E C D E C D E C G E C D E C D E C D E C D E C D
  E C D E C D E C D E C D E C D E C D E C D F ~
>`.pickRestart({
  A: "~@9 x ~ x", B: "x!4 ~@6 x!2", C: "x ~@6 x!3 ~@2", D: "~@4 x!3 ~@5", E: "~ x!3 ~@6 x!2", F: "~ x!3 ~@8",
  G: "~@4 x!3 ~@4 x",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@6 A B ~ A B ~ A B ~ A B ~@14 B ~ A B ~ A B ~ A B ~@63>".pickRestart({
  A: "~ x ~@2", B: "~@3 x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@12 B ~@5 B ~@4 A ~@12 B ~@5 B ~@4 A B ~@5 B ~@5 B ~@5 B ~@4 A B ~@5 B ~@4 A B ~@5 B ~@4 A B ~
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(0.33)

// drums · tambourine
const tambourine = s("tb").struct("<~@5 A ~ B A ~ B A ~ B A ~ B A ~@13 B A ~ B A ~ B A ~ B A ~@62>".pickRestart({
  A: "~ x", B: "x",
})).gain(0.47)

// drums · cabasa
// … 7 more lines

More by G. G. Anderson