On Drumgizmo velocities

DrumGizmo development and support forum.
http://drumgizmo.org/

Moderators: MattKingUSA, khz, muldjord, Glocke, deva

Post Reply
corrados
Established Member
Posts: 39
Joined: Sat Jan 02, 2021 4:01 pm

On Drumgizmo velocities

Post by corrados »

Connecting a Roland V-Drums module to Drumgizmo, it feels like there is almost no dynamic at all. Playing "ghost notes" is almost not possible. This is a topic which I discussed with deva a while ago via private chats. Since the MIDI velocity handling of Drumgizmo is such a fundamental thing, I think it makes sense to discuss this issue in the forum so that other Drumgzimo users can contribute.

I have already created a Git branch "edrumulus" where I have a solution which works for me but is very "Edrumulus specific". It would be good if this issue will be solved in the official version of Drumgizmo.

First question: What is the expectation from a Drumgizmo user view how Drumgizmo should map the MIDI velocities? Should it behave similar to a Roland V-Drums module? Since Roland is a "quasi industry standard" for electronic drums, I would expect a drum plugin like Drumgizmo to behave similar.

To compare Drumgimo with my Roland TD-27, I have created a MIDI file for the snare which contains all possible MIDI velocites from 1-127. Then I recorded the audio signal from that module. I have used the following Python script https://github.com/corrados/edrumulus/b ... zmo_kit.py to convert the recording to a Drumgizmo drum kit. Then I played the same MIDI file in Drumgizmo and checked which sample was selected (using -p close=1,position=0,diverse=0,random=0). This is the yellow line in the following plot which gives you a graphical representation of the already mentioned effect of no ghost notes: If you send small MIDI velocities to Drumgizmo (x-axis of the plot) it will quickly select samples with a high power (y-axis of the plot). The samples with the lowest velocity are not used at all.

Drumgizmo supports a power mapping feature. I wanted to try out if this feature solves my issue. Since the paramters are not available on the CLI interface, I had to hard-code these and recompile Drumgizmo. I tried out the following settings:

  • magenta line in the plot: powermap_fixed1_x = 0.75, powermap_fixed1_y = 0.25
  • green line in the plot: powermap_fixed1_x = 0.9, powermap_fixed1_y = 0.1

As you can see, it is not possible to get a linear relation between input MIDI velocitys and played velocities.

fig.png
fig.png (20.28 KiB) Viewed 2817 times

I would like Drumgizmo to change the velocity behavior to match the Roland module, i.e., the same MIDI velocity will output a sample with a similar loudness. But this would break compatibility to older versions of Drumgzimo.

What is your opinion?

User avatar
RyanH
Established Member
Posts: 206
Joined: Fri Jul 08, 2022 7:58 am
Has thanked: 137 times
Been thanked: 43 times

Re: On Drumgizmo velocities

Post by RyanH »

I can't speak much to the technical aspects "under the hood," but I'm using the Alesis Nitro mesh kit and actually find it in some ways more responsive through Drumgizmo than when using the kit on its own.

I have had some dropped notes in Drumgizmo, which I have yet to troubleshoot, but I think those have more to do with how fast I'm playing. I've had some success reducing dropped notes by tweaking the Drumgimo settings, but like I said, haven't had a chance to really dig in.

Where I find Drumgizmo better than the Nitro alone is things like snare rolls and variability in hihat openness - and ghost notes, actually. Using the Crocell kit, it sounds a bit more like real drums than standalone Nitro... although some of the Nitro's sounds are also very true-to-life.

Just my two cents from the perspective of another kit. :)

corrados
Established Member
Posts: 39
Joined: Sat Jan 02, 2021 4:01 pm

Re: On Drumgizmo velocities

Post by corrados »

The only explanation I have that the ghost notes work for you in Drumgizmo is that your Nitro module may output lower MIDI notes on average than the Roland module. Than you are more on the left side of the yellow line in the graph and there the loudness varies much more than on higher MIDI notes. Or you may play much softer than I do.

Are you using the Powermap (i.e., Velocity Curve in the GUI) feature of Drumgizmo?

User avatar
RyanH
Established Member
Posts: 206
Joined: Fri Jul 08, 2022 7:58 am
Has thanked: 137 times
Been thanked: 43 times

Re: On Drumgizmo velocities

Post by RyanH »

You could be right about my playing - I do hit fairly soft compared to other drummers I know. Looking at some midi I recorded last night (using the Alesis sounds, not Drumgizmo), almost all of my velocities are between 60 and 80. I also mess around with each drum's sensitivities and velocity curves in the Alesis "brain" - I'm still not sure whether that translates to the output (in which case it would impact how Drumgizmo performs) or if those settings just affect my kit's on-board sounds.

As for Drumgizmo's velocity curve, no, I've hardly touched it. Until recently, I was using an older version of Drumgizmo, which I don't think included that function. My initial comment was based mainly on my experience with that older version of the program (which experience was already somewhat limited).

finotti
Established Member
Posts: 528
Joined: Thu Sep 01, 2011 9:07 pm
Has thanked: 86 times
Been thanked: 23 times

Re: On Drumgizmo velocities

Post by finotti »

I've had difficulties with velocities in the past, and this might explain it. (I program in the MIDI editor. I do not play with a kit or pads.) Even when trying really low numerical values I did not seem to get much "softer" hits, and mostly assumed it simply was they way it worked. I will try playing with the power map in my next project.

corrados
Established Member
Posts: 39
Joined: Sat Jan 02, 2021 4:01 pm

Re: On Drumgizmo velocities

Post by corrados »

I also mess around with each drum's sensitivities and velocity curves in the Alesis "brain" - I'm still not sure whether that translates to the output

I am pretty sure that it translates to the output. The problem of changing the curve in the edrum module is that MIDI velocities can only use 127 values. Therefore, the new velocities after the "velocity curve" was applied must be rounded to integer values in the range 1 to 127. So, it can happen that more than one input MIDI velocity is mapped to the same output value. You do not have the quantization problem if you use the power map functionality in Drumgizmo since it works internally on normalized floating point numbers.

Even when trying really low numerical values I did not seem to get much "softer" hits [...] I will try playing with the power map in my next project.

As you can see in my plot, with the power map feature I can improve the situation but not completely fix it. Therefore, my question was if we should change the default power map in Drumgizmo to match that of a Roland edrum module. If users like RyanH are happy with the current behavior, I hope that these users can get the old behavior by using the power map setting.

User avatar
RyanH
Established Member
Posts: 206
Joined: Fri Jul 08, 2022 7:58 am
Has thanked: 137 times
Been thanked: 43 times

Re: On Drumgizmo velocities

Post by RyanH »

Yes, I think you're right about the Alesis module's settings translating to the output. I was messing around with it yesterday and also looking through the manual, and it refers to "pad sensitivity," etc.... so it's specific to the pads' outputs. Also, I have a spreadsheet outlining all the settings I've saved for each of the module's "kits" (in case the module breaks and I need to re-program a new one). Most of the saved kit setups are for playing with the module's own sounds, but I can see that, when I was using the Crocell kit via Drumgizmo, I had to greatly alter my settings to make it sound listenable.

It never occurred to me that the kit's settings aren't on the 1-127 scale that midi software uses. Thanks for the tip!

corrados
Established Member
Posts: 39
Joined: Sat Jan 02, 2021 4:01 pm

Re: On Drumgizmo velocities

Post by corrados »

A short update on my investigations: I created an Octave file where I ported the power mapping function from Drumgizmo to Octave and tried to tune the power map parameters to match the Roland curve as closely as possible (https://github.com/corrados/edrumulus/b ... velocity.m). In the following plot you can see the original Roland measured powers (yellow trace) and the approximated power map function (purple trace). The red trace shows the selected sample based on the input MIDI velocity. As you can see, I achieved a pretty close match:

Bildschirmfoto vom 2023-01-27 20-31-12.png
Bildschirmfoto vom 2023-01-27 20-31-12.png (7.97 KiB) Viewed 2560 times

One thing I noticed is a peak in the red trace close to the lowest MIDI velocity values. This may be a bug in the power map implementation.

Anyway, I loaded the power map parameters in Drumgizmo and tried out my own sampled drum kit and I was very disappointed about the performance. It was like some notes were not played at all and the dynamic was horrible. I may have misunderstood something related to the Drumgizmo power map functionality or something else went wrong. So, it needs some more investigation...

Nachei
Established Member
Posts: 235
Joined: Fri Feb 17, 2012 3:32 am
Has thanked: 6 times
Been thanked: 27 times
Contact:

Re: On Drumgizmo velocities

Post by Nachei »

+1 from my own experience that there's something strange? non standard? about velocities in Drumgizmo. DG is a beast, I love it, but systematically my biggest challenge is getting enough contrast between light and strong blows. (I program my drums, don't play). Generally, to be able to make a series of hits stand out a little (e.g. a tom fill), I have to resort to tricks like duplicating the fragments I want into a second track. Moving velocity levels does not seem to make much difference.

Another problem that might be connected or not that I've experienced with velocities is a strange unevenness of volumes between instruments, that makes the lowest ones (e.g. ghost snare, rim hit...) inaudible in the mix unless you lower the volume of the other ones a lot (by lowering their velocity, which is kind of a hack), and therefore all instruments' velocities become conditioned to that "weakest link" . When a DG version appeared with the option to "normalize samples", I assumed this feature was created to address this problem, and I imagined it would be just one single checkbox to let you either normalize all samples/leave them at their original volume. But it turns out it's not, it's an option that addresses samples individually, normalize this one but not that one, so I really don't know what's its purpose exactly...

Just my 2c on DG's possible weirdness of velocity handling, I haven't used other drum samplers so I don't have much additional reference, and like I say, despite these limitations, the result sounds killer...

corrados
Established Member
Posts: 39
Joined: Sat Jan 02, 2021 4:01 pm

Re: On Drumgizmo velocities

Post by corrados »

When a DG version appeared with the option to "normalize samples", I assumed this feature was created to address this problem, and I imagined it would be just one single checkbox to let you either normalize all samples/leave them at their original volume. But it turns out it's not, it's an option that addresses samples individually, normalize this one but not that one

Are you referring to this Drumgizmo version introducing the Sample Normalization: https://drumgizmo.org/wiki/doku.php?id= ... zmo-0.9.18? This feature is needed if your kit samples are stored with normalized gain, i.e., the original loudness is no longer in the samples gain but the power value in the instrument XML file solely contains the information about the original power of the samples. To my understanding, it is not a checkbox in the GUI but only a kit property.

BTW, if using a kit with normalized samples, Drumgizmo behaves slightly different to the other kits. Deva had done some comparison between a normalized and non-normalized kit and he found out that in the current Drumgizmo version, there is a difference in the velocity curve. He has created a Git branch normalised_scaled_fix which contains some experimental code to fix this issue. You can find the corresponding entry in the roadmap https://drumgizmo.org/wiki/doku.php?id= ... es_roadmap: "Validate normalized sample gain correction. Should be similar to sfz/linuxsampler. (deva)"

Moving velocity levels does not seem to make much difference [...] Just my 2c on DG's possible weirdness of velocity handling

Thank you for sharing your experiences with the Drumgizmo velocity handling. This helps when it comes to the decision whether the default velocity handling in Drumgizmo should be changed.

Nachei
Established Member
Posts: 235
Joined: Fri Feb 17, 2012 3:32 am
Has thanked: 6 times
Been thanked: 27 times
Contact:

Re: On Drumgizmo velocities

Post by Nachei »

corrados wrote: Sat Feb 04, 2023 6:56 pm

Are you referring to this Drumgizmo version introducing the Sample Normalization: https://drumgizmo.org/wiki/doku.php?id= ... zmo-0.9.18?

Yes, that's what I was thinking of. It seems I was wrong about its use; making my own kits is something out of my scope or interests, I only use the player side of DG, although I see that it is also big on sound design and a lot of people like to tinker around with that...

corrados wrote: Sat Feb 04, 2023 6:56 pm

Thank you for sharing your experiences with the Drumgizmo velocity handling. This helps when it comes to the decision whether the default velocity handling in Drumgizmo should be changed.

Glad to provide my feedback, although of course it's also possible that I'm just not very good at programming drums; until now, most of the times I used DG with only two outputs, because it sounds very good like that although you don't have so much control; recently I've tried to split the signal to one output per instrument, and this way it is easier to create more dynamic contrast, although it's still not enough, but maybe it's just my lack of dexterity, I've listened to other people's drum tracks that sound great... Thank you for this incredible piece of software.

Post Reply