round robin

Moderators: MattKingUSA, khz, muldjord, deva

Post Reply
User avatar
funkmuscle
Established Member
Posts: 2806
Joined: Mon Jun 02, 2008 2:30 pm
Has thanked: 131 times
Been thanked: 32 times

round robin

Post by funkmuscle »

hey guys I know this has been asked before and I think I maybe the guilty one :mrgreen:
but for the round robin, does this mean you guys will be releasing an updated version of the kits?
If it's a dumb question, sorry. I've only used Linux for music and never Windows or Mac so the round robin is alien to me. I just hear it make things more natural or human.
JamesPeters
Established Member
Posts: 188
Joined: Fri Jun 29, 2018 6:35 pm
Has thanked: 8 times
Been thanked: 15 times

Re: round robin

Post by JamesPeters »

The idea of round-robin is: at each velocity layer, there is an alternate sample (or samples) which are supposed to sound almost the same but slightly different (minor variations in exactly where a kit piece is struck, for instance), and the computer will select each of them in sequence or at random when sequential notes are played at that velocity.

Imagine doing a snare roll for instance: no matter how accurate a drummer you are, there will be slight differences in the sound with sequential hits since the drumhead or cymbal is being displaced from a prior hit. This is what round robin imitates.

Since the kits on the DrumGizmo site were not recorded with round robin alternate samples, it is very unlikely there will be updates to those kits in this regard. To do so would require recording the drums again, and making sure the alternate hits are recorded not only as similar sounding as possible for how the drums are played, but also in terms of the exact recording set up, the room, every variable. It means redoing the entire thing, realistically speaking. Perhaps the people who recorded those kits are planning new ones. But there's no point in updating the existing ones because it would probably take more time to attempt it than to just make new ones.
User avatar
funkmuscle
Established Member
Posts: 2806
Joined: Mon Jun 02, 2008 2:30 pm
Has thanked: 131 times
Been thanked: 32 times

Re: round robin

Post by funkmuscle »

Thanks. I had a feeling.
User avatar
deva
Established Member
Posts: 285
Joined: Sun Oct 23, 2016 10:15 am
Has thanked: 3 times
Been thanked: 31 times
Contact:

Re: round robin

Post by deva »

JamesPeters wrote:The idea of round-robin is: at each velocity layer, there is an alternate sample (or samples) which are supposed to sound almost the same but slightly different (minor variations in exactly where a kit piece is struck, for instance), and the computer will select each of them in sequence or at random when sequential notes are played at that velocity.
This is the correct description of how round-robin would be applied to sfz sample-sets which has velocity groups.

DrumGizmo does something (in our oppinion) better and even more natural considering how a drummer would play, which is to store the measured power level of each recorded stroke with the samples in the xml files.
When playing a sample the input velocity is then mapped to the "most suitable sample" for that velocity and in this process the samples near it in power level are also taken into account. So you could say that the round-robin effect (ie. not playing the exact same sample at the same input velocity) is handled by this mechanism, even though it is not strictly speaking round-robin.

Let me try to illustrate the difference with an example:
In SFZ you would have a velocity group of for example three samples A, B and C which is mapped to the velocities 1-32.
These three samples should be recorded with "the same" power, which is of course not physically possible but lets just assume that they are all very close.
The next velocity group will then have three other samples D, E and F which again are very close in velocity but have more power than the ABC group.
If there are many groups this should give a relatively good perceived power ramp-up if you play 127 samples with the velocities 1, 2, 3, ..., 127 but each sample is not being used much so the kit will end up being very big.
If there are very few groups a "stair" effect will be present where you can hear that the power "jumps" when changing to the next velocity group.

In DrumGizmo we instead use a technique which can be considered a "sliding window" of groups (in fact we use an object function with weights depending on the distance to the center velocity and a normal distribution function around it but this is just a technical detail).
We try to record samples which are evenly spread out over the velocities we want for the kit:

Code: Select all

  A   B      C  D   E   F  ...
 12  20     32 38  42  46
-------------------------------------------->
1                                         127
Then when selecting a sample for a input velocity (for example 31) we create a window which is centered around the input velocity:

Code: Select all

           31
       [ window ]
  A   B      C  D   E   F  ...
 12  20     32 38  42  46
-------------------------------------------->
1                                         127
And then the sample can be thought of as being chosen from within that window, ie. the samples C and D.
The benefit from this approach is that the input velocity 39 would be including some of those same samples (D and E for example) which gives a much better sample utilisation/re-use in a kit and furthermore it will completely eliminate the "stair" effect when doing velocity ramps.

DrumGizmo used to use velocity groups and you can see a video of Lars Muldjord explaining some the differences here: https://www.youtube.com/watch?v=Cp9f11AlWkc where you can clearly hear the stair effects at 5:17 and similarly hear the smoothness of the sliding window approach at 8:30.
Bear in mind that this is a rather old video and we have some even better algorithms today which sound even better. But I think it explains the difference between the velocity groups/round-robin approach and our non-grouped sliding window approach rather well.


I hope this helps clarify things a bit :-)
User avatar
funkmuscle
Established Member
Posts: 2806
Joined: Mon Jun 02, 2008 2:30 pm
Has thanked: 131 times
Been thanked: 32 times

Re: round robin

Post by funkmuscle »

Thanks Deva. So all the knobs and sections on DG, they affect the samples how? I know on your site and I'm so after the latest release you guys explain what they do but it's from a more technical side that it is exactly what it would be doing musically. Is there a way of explaining things in the more simple the musical term?
User avatar
deva
Established Member
Posts: 285
Joined: Sun Oct 23, 2016 10:15 am
Has thanked: 3 times
Been thanked: 31 times
Contact:

Re: round robin

Post by deva »

I assume you already had a look at the descriptions of the knobs form the 0.9.17 release note?
https://drumgizmo.org/wiki/doku.php?id= ... _algorithm

If you click the buttons with the '?' near the buttons in the UI you should get a descriptive text for each of the parameters as well.
JamesPeters
Established Member
Posts: 188
Joined: Fri Jun 29, 2018 6:35 pm
Has thanked: 8 times
Been thanked: 15 times

Re: round robin

Post by JamesPeters »

I know what DrumGizmo does for its power selection of samples. It is a good idea, however it requires some special consideration when making a kit.

Round-robin in itself addresses the issue of how a kit piece sounds different even if struck with the exact same strength in the exact same location, irrespective of how unlikely that is.

The power selection method addresses a different issue: how unlikely it is that a drummer will hit a kit piece with the exact same strength multiple times in a row.

Of course the power selection method can work similarly to round robin if there are enough velocity layers recorded for the particular kit piece. There needs to be a very fine-grained difference among velocity layer samples for this to work effectively as round-robin functionality. Basically it means you shouldn't be sampling something like only 15 layers of velocity if you expect those different velocity layers to sound like round robin, since the difference among the sound of those velocity layers will be too great (when neighboring velocity layers are used) for the sake of sounding like similar strength hits. It also means people should scrutinize all of their samples while sampling their drum kit knowing that they need to play very consistently across the entire velocity range, since neighbouring velocity range samples will (in this case) be used effectively for round-robin. That might not be as easy as you think, since a person tends to play differently as they tense their muscles more or less.

The kits on the DrumGizmo site for instance don't give me an experience that I expect with round-robin functionality, from just using the power selection approach. (Those kits have lots of velocity layers in the samples as well.) Meanwhile I can use a kit that has only 15 velocity layers and 2 alternate hits (round robin) and it sounds more natural to me when I program rolls and fills.

So either approach is possible to work well. However I wouldn't consider the power selection idea to necessarily be superior, unless the person making the kit is keenly aware of how that is being implemented so that the kit can be played/recorded as consistently across the velocity range in a way that will be suitable for round robin as well.

And in my case with the particular kit I am making for DrumGizmo, the power selection idea isn't useful and if anything makes it sound worse. A drummer recorded a bunch of samples for his kits, using only 15 layers for velocity (but he did record round robin samples). Since I am not a drummer, I don't have the luxury of making a recorded kit with 127 velocity levels, especially played very consistently (you don't want to know how bad I am at drums). :) If you are wondering if I tried taking those round robin samples and putting them into neighbouring velocity ranges (so that the power selection idea would work, with more velocity layers): yes, it was the first thing I tried. I found getting the intended round-robin approach wasn't possible for those samples when using the power selection approach. That's probably because I only had 3 alternate round-robin samples for each velocity layer, of 15 velocity layers ("stacked" to total of 45 velocity layers). The algorithm didn't seem to like choosing strictly among the 3 samples that I intended at each velocity range, so sometimes when a neighbouring range was chosen there was a jarring difference in the sound. It seems the power selection approach really does require using the entire possible velocity range and being as consistent as possible playing/recording at different his strengths, to sound as natural as can be.

Keep in mind if people want to make DrumGizmo kits from pre-recorded sample packs, they are going to be limited to whatever velocity ranges and round robins which are provided. A lot of sample packs that you can purchase do not have as many as 127 velocity layers. However a lot of them have round robin samples. If people are sampling their own drum kit, then it's up to them and it can work perfectly fine. However I figure many DrumGizmo users aren't drummers, or even if they are they may not be able to (or want to) sample their own drum kits.

There's also the consideration of how much RAM a kit requires. It's easy to say "RAM is relatively cheap now" but for some people are using less RAM in their computers (plus it's nice if the drum kit loads quickly). If I can use a drum kit that requires 1/4 the RAM of another kit and sounds as realistic to me for my needs, I'm more likely to use it than the larger kit. The power selection method means larger kits than ones with fewer velocity layers (and 2 alternate samples at each velocity layer).

Thankfully DrumGizmo now provides a round-robin functionality, so now I can use the sample packs that I want.
Post Reply