Reviewing Bad Mister's article

https://yamahasynth.com/learn/montage-series-synthesizers/montage-velocity-sensitivity/

In trying to understand what effect the Level/Vel parm value has over its range I did the following:

1. loaded 'Ens Mix' perf

2. went to Amplitude -> Level / Pan screen after editing part 1 element 1

3. Repeatedly pressed middle C at the same 'normal' velocity during the entire test

4. Changed the Level/Vel parameter from the default +17 towards +63

5. As the value went past +8 the level/volume decreased and around +48 (to +63) disappeared

6. The result in step 5 was expected since, as explained in the article, it should take a higher velocity to produce the same sound as you increase the value of the parm.

7. Returned the Level/Vel value to +0

8. Changed the Level/Vel parameter towards -64

9. As the value went past -15 the level/volume again began decreasing and around -40 disappeared

What is the reason for the behaviour in step 9? I expected the negative values to have no effect at all.

10. For both tests increasing the offset from 0 to values > 32 restored the level/volume.

If the curve is a ramp starting at 0 in the lower left and ending at 127 in the upper right then using positive values soft velocities will start on the left hand side so a soft velocity results in a soft output (y axis). Negative values the soft velocity input starts on the opposite side so a soft input will create a high velocity output. Or you can think of negative flipping the graph such that the left side starts at a high value and ramps down to 0 on the right side. Then soft velocity inputs still start on the left side but now the y axis will have high values for low velocity inputs.

For a linear curve if you play a velocity of 64 (in the middle) then flipping the Level/Vel from + to - (and same value) shouldn't change anything because the middle should have the same Y value. It's at the extremes (soft inputs and hard inputs) where things become more apparent. Not so much in the middle.

These curves are intercepting your supplied velocities and outputting a translated velocity according to the polarity and absolute value of Level/Vel. The behavior can be modified with different curve types.

If the curve is a ramp

I might not have been as clear as I could have been. I'm not even considering yet which curve is being used or how it affects things.

It is ONLY the 'Level/Vel' parameter and, specifically, how negative values affect the leftmost graph on page 333 of the Montage M reference (or the same graph on page 108 of the Montage reference doc.

And it isn't clear to me if the curve effects are applied before, or after the Level/Vel and Offset values are used to derive an effective velocity value. Consider an X value of 16 that doesn't change. That is approximately 1/4 the distance from 0 to 64 along the X axis. But, fractionally, it represents a velocity of 1/8 of maximum.

That intercepts the A line at a value of 127 and '1/8 of maximum' is 1/8 of the max 127 which is still 16. So either 16 is sent to either the tone generator or the the logic that applies the curve.

But it intercepts the B line at a value of perhaps 16 and '1/8 of maximum' is 1/8 of the max 16 which is 2. Now it is a value of 2 that is sent to the tone generator or the curve logic.

So I'm guessing that the Y value is NOT the actual, effective velocity value used but is, rather, the high value used to scale the true key velocity value.

The dark, left-to-right line uses the top right corner as a pivot point. As you increase the Level/Vel parameter from 0 to 64 (+63) that line rotates counter-clockwise around that pivot point in the top right corner.

The graph doesn't show what happens if NEGATIVE values are used for Level/Vel.

But, based on your comments, it acts as if negative values cause the top LEFT corner to be used as the pivot point. If so a Level/Vel value of -32 would be a line from the top left corner to the bottom right corner

That seems to match the description you gave of reversing the graph. It also seems to match the results I am getting.

I think I already understood the way the curve logic you described is applied it was just this negative Level/Vel stuff that stymied me.

Does the above seem to agree with your understanding?

If so, do you think the Levl/Vel and Offset are applied first and the result used as the velocity value for the curve? Or the other way around?

The article and manuals state that when negative softer strikes map to higher velocities and harder strikes map to lower velocities. This would be effectively reversing the graph as I described.

The article and manuals state that when negative softer strikes map to higher velocities and harder strikes map to lower velocities.

Yes - but my tests don't involve changing the 'strike'. They involve changing the Level/Vel parameter.

And the issue I asked about wasn't what result do you get - it was WHY you get that result.

That 'when negative softer strikes map to higher velocities' seemed to be contradicted by the test result I reported where high negative values mapped to lower levels.

I understand that when playing the parameters are generally constant and it is the key velocity that the player might change, either intentionally or without knowing it.

But my testing involved keeping the initial key velocity constant and then manipulating the Level/Vel parameter to see how it was reflected in the result.

As a side note while monitoring with MIDI-OX I noticed that ONLY the initial/actual key velocity (1-127) was being transmitted by MIDI as shown by MIDI-OX. So any changes dues to Level/Vel, Offset, or the curve aren't sent.

I get it but the critical context involves the strike input is a key component of the system and dictates your position along the curve (right to left) while polarity determines if you're traveling from right to left or left to right along the curve. I'm assuming they don't visually flip the curve for negative values although I haven't had (in depth) experience with the new M.

... and the summary statement backs up this flipping of the graph.

If you have the same velocity coming in then where the "Y" of the graph is at that X (velocity input) location may be changing depending on your values. Between depth of the curve (sort of like a ratio multiplier to the "full" curve) and description of what happens to negatives - that should fully explain the system other than the lack of factoring in offset. I don't think there was a question as to what offset does exactly - so I've purposefully excluded it from consideration.

Between depth of the curve (sort of like a ratio multiplier to the "full" curve) and description of what happens to negatives - that should fully explain the system other than the lack of factoring in offset.

I think you are right.

This is where I was headed eventually - trying to determine the order of application of things:

1. actual key press - this is the velocity starting point as measured when the key is moved

2. element adjustments - a) Level/Vel value, b) offset value c) curve selected

3. part level adjustments - a) velocity offset, b) velocity depth)

My hypothesis is that #1 velocity is the raw input to #2 and the output of the #2 adjustments is the raw input to #3 with the output of #3 being sent to the tone generator as the effective 'velocity'.

I understand (I think) how 2b (offset) and 2c) curve affect things and the positive values for 2a. So my question was about negative values for 2a. And I think your description, and my previous reply describes how negative values of Level/Vel are applied although the graph in the book doesn't actually show negative values.

Even though that graph in the book (p333) shows straight lines I'm don't know if we can assume things are really linear. If they were it would be straightforward to do the computations. But you would need to use a sensitive audio meter to measure the output effect since the data isn't in the midi. Of course you don't really want all of those adjustments in the midi output.

I got the info I was looking for - thanks.

That comment above may be confusing at first and so is the explanation.

1. assume the graph shown is 1" x 1" but is really 6" wide and 6" high- but the part shown is just

the top right 1" x 1" box. The lines you see are only shown in that one box but if extended would reach

the bottom of the 6" x 6" square.

2. line A, LevelVel = 0, is just horizontal and has no effect

3. line B, Level/Vel = +32, is drawn from the top right corner to the bottom left corner of the 1" x 1" box

but would extend to the bottom left corner of the 6" x 6" box.

So it drops 127 units over that +32 range or approximately 4 units per each unit of Level/Vel

4. line C, Level = +63, is drawn from the top right corner to a bottom left corner that is 6" down and 1" to the left.

Testing shows that if you draw lines based on that extended 6" x 6" box you can compute the postition of those lines

in the topmost 1" x 1" box and derive the resulting value.

Additional testing shows that the Offset value essentially makes the width of each box 1 unit smaller for each unit of offset. That is shown in the 2nd and 3rd graphs. The shrinking of the width due to offset appears to be linear and in 1 unit increments.

Initially the box shown in the graph is 128 units (0 - 127) wide. But if you set the offset to 8 the box effectively becomes 120 units wide. Which means than any velocity greater than the net box width (minus 1) will result in maximum velocity as if you were using line A.

So as the second graph shows for an offsest of 64 any applied velocity 62 or greater will result in a velocity of 127.

Both arpeggios and motion sequences can have velocity ranges that affect their operation. I don't know if those ranges are based on the actual key velocity or are applied based on the results of the Level/Vel operations above.

Does anyone have a guess? I plan to do further testing to try to determine that order of events.