easy velocity curve bomebox

I want to get a more stable keyboard rig and i'm consider a bomebox. now I use MainStage but sometimes it is not stable enough for my midi routing. is it easy to setup a velocity curve compressor or limiter like to make the dynamic range smaller? so it receives velocity from 0-127 and wand to send it out to 50-127on a midi channel .

  1. Incoming trigger on any note with any velocity
  2. Set incoming velocity to pp
  3. In rules use the following
    1. qq=pp*100
    2. qq=qq*57
    3. qq=qq/94
    4. qq=qq+5000 (which is 50×100)
    5. qq=qq+49
    6. qq=qq/100
  4. Set output velocity to qq

The formula is essentially output = input x 57/94 + 50. I multiplied everything by 100 since BMT doesn’t handle non integers very well. When I was done, I divided by 100 to get back to the right final result.

I only tested on paper so if you still have an issue let me know and I can actually set up a file and play with it.

 

currently, MT Pro does not offer a direct way for setting response curves (this is on the TODO list!). But using simple math as outlined by Steve works great…

Any update on response curves i Bome?

Nothing new yet.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like

You might want to look at this post. Not done easily in MT Pro, however. Maybe it would be better to have an external MIDI helper application and send the current velocity to it, have the external program do the calculations and send it back to MT Pro. This might be possible with MT Pro Beta 1.8.5 but this type of thing would be a paid engagement by me and would not be part of the MT Pro core functionality. Also, I think I could do this in Windows but not on Mac.

The reason it would be difficult in MT Pro is because there are no complex formula capabilities and each calculation has to be handled on a single statement and this formula is quite complex. Also MT Pro only does integer math.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi, thanks for the reminder. This is still on our feature request list, would be nice! Not for a calculation of a curve, but for a graphical way to a) choose one of a number of typical curves and b) draw your own curve (bezier curves).
I’ve just bumped up the priority, but I cannot promise anything.

1 Like

Hi,
The below should give you an approximation of the desired effect.

It uses a MIDI timer as input. You set the global variable ga to the velocity curve -100 to + 100
The input value is captured in gb.

It triggers a timer.
The timer does the calculations and then provides MIDI output based on the velocity curve.

I used this as a guide, however had to convert to integer math since MT Pro does not handle floating point.

If you want to do it for different knobs or notes, you should create pairs for each and use different timer names and global variables. The example I have is for a knob (CC) but can just as easily be for a note.
Velocity-Curve-Example-2021-02-28.bmtp (3.2 KB)

I graphed them out using google sheets and they look like this.

image

image

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

yeah, well, i mocked around in Grapher (mac) fumbled around int the dark and found this formula that may do the job for me.formula

Don’t know if it works in Bome, though :smiley:

(as you can see, I am no mathematician)

Neither am I. The key thing I found out is that since there is no floating point in MT Pro.
I had to do all the math as integers x 100 and then at the end normalize it back down /100

Steve

Hi! I was looking at this thread cause I’m trying to do something similar with CC values but I’m having trouble understanding your formula above cause I’m not sure where the 57 and 94 came from. Basically what I want to do is have a CC that goes from 0 to 127 to instead go from 75 to 127, so that when it’s all the way down it outputs 75 and when it’s all the way up it outputs 127. But besides that specific problem I would like to understand how to scale the values on a more general way for many circumstances. For instance how could I have the 0 to 127 go from 30-80 instead? Thanks in advance for your help!

Hi @Matthew9 ,
Welcome to the Bome Community!

The formla you need is discussed in this tutorial called “Scaling”. Let me know if you have any further questions.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

oh I can’t believe I missed that in my search. This is great! thank you!

1 Like