Wonderful ! I will test that soon. The great thing is that it’s going to be compatible with plugins like sforzando and sfizz and we also have the possibility to use Bjoerns Sample Mapper to creates the sfz file.
So, as we now have a parser on the way for sfz format, let me suggest you a compatible solution for round-robin :
The idea is to use 16 <group> headers to identify the 16 voices.
Then, to open the possibility to set the program change of each voices with the opcodes loprog= and hiprog=
https://sfzformat.com/opcodes/hiprogThen, to use the opcodes lorand= and hirand=
https://sfzformat.com/opcodes/hirand to set the round-robin :
<group> //Voice 01
loprog=1 hiprog=1
<region> key=72 hirand=0.3 sample=kick_rr1.wav
<group> //Voice 02
loprog=1 hiprog=1
<region> key=72 lorand=0.3 hirand=0.6 sample=kick_rr2.wav
<group> //Voice 03
loprog=1 hiprog=1
<region> key=72 lorand=0.6 sample=kick_rr3.wav
With this solution, we can even have multilayers sounds, each one with his own round-robin (for example an attack sound with two round-robin on voices 1 and 2 and a release sound with three round-robin on voices 3, 4 and 5).
Of course, this could work only if several voices can be played together in you code. If not, a possibility is to put the lorand= and hirand= opcodes on the group and having the same round-robin for all the voices.