Velocity affecting amplitude
I can't for the life of me figure out the algorithm so i thought I would post. Can anyone give me a lead on the math if I want to affect a signal's level based on a percentage of velocity? For example, on a lot of synths, like Ableton Operator, you can set a percentage that the oscillator's level will be affected by the midi velocity. If set at 100%, a 127 would cause maximum volume, and a 1 would be barely audible. But if it is set to 50%, a 1 velocity would not necessarily cause an in-audible signal. Likewise, a -100% would cause a velocity of 127 to create an in-audible signal, but a velocity of 1 to cause maximum amplitude. I am aware one of the tutorial 19 sort of talk about this using an exponential expression, but it assumes you are always using the velocity to determine 100% of the amplitude. I want to be able to create a component that I could say the velocity affects the signal by say 80% (or -80%).
by the way, here is my miserable attempt, which works (but feels wrong) for positive percentage modifier amounts, but doesn't have the inverse affect on negative percentage modifier amounts.
something like this?
...or like this?
going above 100% (or below -100%) will invert the velocity curve, so that higher velocity values will be more dynamic.
I'm not sure if you can literaly say percent thou...
always break down things to a range of 0. 1. before you
calculate offsets and modulations, then you can work on
the linear layer.
velocity (input)
/127. (scaling)
* percentage/100 (mod amount)
+ current velocity (offset)
thanks guys for the help, i tried both examples and they worked the exactly the way i was wanted, i am embarrassed to think how much time i sunk trying to figure this out, it appears i still don't quite think in the max fashion of development, still trying to force programing paradigms from my day job where they don't apply. it looks like from your examples i was sort of close in my latest attempts, but i was always trying to duplicate the signal, modify one by velocity then recombine the percentage of each vs. doing the math, then modifying the signal. I was always getting either the positive values to work, or the negative ... not both. it seems sort of obvious now looking at your examples, that to get the inverse velocity affect, you just add 1!!!!!! doh
roman, thanks for the tip, i usually do do that outside of a given module in the ui or algorithm layer, always expecting something between 0 to 1 (or -1 to 1) in my re-usable component.
thanks again, i learned a lot in the process.