Skip to content
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

Open
baconpaul opened this issue Feb 19, 2024 · 6 comments
Labels
Modulation Modulation related issues UX Issues related to user experience (UX) - mouse, touch, keyboard, MIDI inputs, etc.

Comments

@baconpaul
Copy link
Contributor

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.

@mkruselj
Copy link
Collaborator

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.

@baconpaul
Copy link
Contributor Author

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.

@mkruselj
Copy link
Collaborator

Oh gotcha!

@baconpaul
Copy link
Contributor Author

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.

@mkruselj
Copy link
Collaborator

Yes let's not even think to go there as that would be UX suicide. :)

@mkruselj
Copy link
Collaborator

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:

ext

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.

@mkruselj mkruselj added Modulation Modulation related issues UX Issues related to user experience (UX) - mouse, touch, keyboard, MIDI inputs, etc. labels Sep 18, 2024
@mkruselj mkruselj added this to the Shortcircuit XT 1.0 milestone Sep 18, 2024
baconpaul added a commit to baconpaul/shortcircuit-xt that referenced this issue Sep 19, 2024
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.
baconpaul added a commit that referenced this issue Sep 19, 2024
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.
@baconpaul baconpaul changed the title Mod Matrix Depth Scale Depth Sliders hae Visual Representation for bounds extrema, not just curve Sep 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Modulation Modulation related issues UX Issues related to user experience (UX) - mouse, touch, keyboard, MIDI inputs, etc.
Projects
None yet
Development

No branches or pull requests

2 participants