Feature request: velocity compensation for black keys

Hello all,

I’m sure I’m not the only one who has noticed that black keys tend to reach higher velocities quicker, especially on synth-weighted or non-weighted keyboards. This has to do with the shorter length of the key vs the same spring being used on all keys.

It’s not normally a huge problem but when programming sensitive velocity switched sounds (in this particular case, a fingered electric bass switching to picks) it can be a nuisance. With the power of software, it’s theoretically possible to overcome this with a large amount of filters/velocity curves but it seems to me it’s a fairly universal problem and it would be really nice to have an integrated single control to help with this. Basically a velocity offset and curve control that affects only the black keys of a keyboard (and that takes into account transposition, at least on Cantabile’s end).

Hope this makes sense and I’m not the only one obsessing about this.

This would be reasonably easy to implement as a MIDI filter - it’s really just a question of exactly what settings would be required.

One easy solution might be to update the velocity curve filter to have an option for which keys it should apply to: black only, white only or all. That way you could setup two filters, one for white keys, one for black.


That’s exactly what I thought. Right now if I wanted to do it I’d basically have to make a filter for every key and update those simultaneously to make a change, which is an almost unworkable hassle, but on the programming level the idea is fairly simple.

I think an offset and a curve would do almost everything for my personal needs. Although if you implement it as a separate note filter, people could use any and all additional modifiers and filters you’ve already created and you’d perhaps avoid any bugs or unexpected behavior with the existing velocity curve filter a bit easier.

If you can find them, the Piz MIDI Plugins have a plugin that does almost exactly what you are looking for, as described here https://www.kvraudio.com/forum/viewtopic.php?t=300566. I know this because a few years ago, I was having the exact same frustration with the particular keyboard I was using at the time. I don’t have time to find an archive of the Piz MIDI plugins right now, but they has been discussed here before.

Here you go: Google Code Archive - Long-term storage for Google Code Project Hosting.

The original website is defunct, but the google archive still exists.



Thanks for the help guys. Still hoping for an integrated solution since it seems fairly easy but this is something I can already try!

What about this: create a small rack with 2 routings from Rack midi in to Rack midi out inside. Setup a suppress events filter in the first and suppress all black notes (o.k. it‘s a bit work to type in all notes but with copy & paste it just takes a few minutes. This is the „white“ routing.

Store the filter and call it up in the second routing but here you change from „Suppress“ to „Allow“ and you have the „white“ routing.

Now you can chose the correct curve and offset for each of them.

If you want to have different areas you can create more routings with dedicated ranges.

If have a buch of proper settings you can easily store them in rack states and simply recall them if needed.

Regards, humphrey

Edit: If you additionally add 2 pitched velocity filters with identical settings to each of the suppress event filters you can also realize a weighting over the whole keyrange if you like.

I considered that route before getting to the feature request, although adding it in a rack is of course a nice way to replicate it easily.

However, I’m not sure how this would take into account global transposition and though I don’t use it that often, it would immediately break this solution, I think.

Nope, not necessarily - you just need to be careful that all routes that lead TO this rack (and of course all routes inside the rack) are set to “ignore global transpose”. Only the routes FROM the rack to the destination inside the song can have “ignore global transpose” set to off.

This way, on the way to this rack, nothing gets transposed, only afterwards.




Next build (3624) will have an improvement to the velocity curve MIDI filter that lets you configure a velocity curve just for black or just for white notes:


Note this is only on the MIDI Filter velocity curve, not the MIDI route velocity curve. It’s suitable for adding to a MIDI Input port to compensate for a mis-behaving keyboard.


Next build 3624 available now.

Awesome, Brad, thanks!