-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Depth Sliders hae Visual Representation for bounds extrema, not just curve #767
Comments
With the addition that my firm stance is that the curvature in either of the two modes should be identical, for these reasons: simplicity, muscle memory, user end expectation. |
I think that's probably right. But its easier to code it as two separate complete operators and make them the same than it is to do the opposite and realize we want it in some case. |
Oh gotcha! |
Also some poor sucker in SCXT 1.17 may decide to add '14 depth slider modes' to the RMB menu. We want to be nice to that person. Since it's probably you or me. LOL. |
Yes let's not even think to go there as that would be UX suicide. :) |
Discussing about this with Paul some more, we have reached the hopefully ultimate workflow. Borrowing from Diodow/Tranzistow, the parameter operates in its normal range, unless you hold Alt when it can go beyond the slider (but clamps visually just gives a notification by changing the slider color in some way). See: The annoying thing in Tranzistow is that if you click the slider after it was expanded this way, you're clamped back to normal range. We can resolve this by assuming Alt was clicked even if it wasn't, in case slider is in expanded range. Then you just keep on dragging normally. If you end up back in normal range, you are back to being clamped to that normal range. Slider should respond to changes in Alt keyboard modifier state during the drag. |
This commit injects a rescaling data adapter between the depth slider and the underlying depth which basically uses a cube / cuberoot on the depth slider. This is part of the plan for surge-synthesizer#767 but not all of it With this a 1 semitone pitch adjustment is about 25% of the total throw so it is already a vast improvement, so merge it for now to make the synth generaly way less annoying to use.
This commit injects a rescaling data adapter between the depth slider and the underlying depth which basically uses a cube / cuberoot on the depth slider. This is part of the plan for #767 but not all of it With this a 1 semitone pitch adjustment is about 25% of the total throw so it is already a vast improvement, so merge it for now to make the synth generaly way less annoying to use.
The mod matrix depth scale is a tricky problem. Ties closes with #766 which we will probably have to solve first.
In some cases you want the entire range available, in some you dont.
We had a longish discussion on discord with me and @mkruselj on morning of Feb 19 after @Andreya-Autumn and I tagged it as a problem the evening before. Here's our rough conclusion:
We want the depth slider to have two modes, which we will call "natural" and "extended". The intent is "natural" means modulation depths are "roughly what you want most of the time musically" and "extended" means "you can access the entire parameter range". Moreover those "natural" mode sliders may concentrate depth adjustment differently near zero than the edge.
So what we want to do is add a 'ui-side' curve to the depth slider. The backend calculation of modulation is still
depth * rowcurve(source * (sourceVia || 1))
but the slider drag -> depth map should not necessarily be linear. And can have a pair of ranges.So, for instance, slider depth -> mapping pitch offset could have a logarithmic offset and a range of an octave in normal mode, and could have a linear offset and a range of 127 notes in extended mode. That's not decided as the 'right' answer but it is the 'type' of thing we want to be able to do in the code.
But again, and especially because of matrix self-modulation, this is a curve applied on the UI edit gesture not on the backend.
The text was updated successfully, but these errors were encountered: