-
-
Notifications
You must be signed in to change notification settings - Fork 1k
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
mini fx rewrite without merge conflicts #7438
base: master
Are you sure you want to change the base?
Conversation
I said it there and I'll say it again, consider spinning up the gate knob removal into it's own seperate PR. Makes it easier to review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My initial review. It's mostly on style.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Follow up style review
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new effect view looks much more polished and less crowded than the old one! 👍
setAcceptDrops(false); | ||
|
||
setCursor(QCursor(embed::getIconPixmap("hand"), 3, 3)); | ||
setStyleSheet("text-align:left;padding:2px;"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line should be removed and the definition should be done in the style sheets of the default and classic theme. This way users can override the style.
Did you check the look of the changes with the classic theme by the way?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line is identical to the one in the TrackLabelButton
class (which I based this class off of), so I think for consistency it makes sense to keep it this way unless we want to change both of them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added classic theme screenshots to the top message. As an aside, it looks like the recent mixer strip PR was not tested in the classic theme since it's completely black...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@michaelgregorius did you convert this to use the stylesheet in your local branch? I'm asking because the latest update you posted seems to use the stylesheet.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Rossmaxx, in the message below I simply added some style sheet which sets a font size for EffectLabelButton
s that are below the effects view, i.e.:
lmms--gui--EffectRackView lmms--gui--EffectLabelButton {
font-size: 12px;
}
But it has nothing to do with the mixer which this thread seems to be about. Or am I missing something?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was supposed to point out the line in question, not the mixer. But since the line is marked in this review, I can't spin up a new one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The setStyleSheet
call to be more precise
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't really have a branch for the stuff that I have proposed in this comment: #7438 (comment). It's just some local changes that I have tried out without committing them somewhere.
I have noticed though that my original statement that I have made here is likely wrong anyway because the style sheets are applied after construction and therefore they should be able to override any default style sheet settings made in the constructor anyway.
On a side note: I cannot find any calls to setStyleSheet
in TrackLabelButton
in the current master (anymore?): https://github.com/LMMS/lmms/blob/master/src/gui/tracks/TrackLabelButton.cpp. So if EffectLabelButton
is intended to be similar to that class as indicated in this comment then it might need some adjustment. I have also noticed that both classes differ with regards to their base class but that's something for another PR remark.
Newline at the end of the `EffectLabelButton` files. Cleanup of includes and forward declarations. Remove commented out friend declaration.
@enp2s0, I took the liberty to apply some changes (forward includes, newline at end of file) myself. That's faster than some back and forth in comment. I hope that's okay for you. |
@michaelgregorius all good, thanks! |
Can we preserve the knob labels? I think it would be clearer that way. Also, how about making the effect buttons more consistent in style to the track buttons (i.e. they're flat and borderless when not pressed)? |
@DomClark As far as knob labels are concerned the reason for removing them is to significantly reduce the required height. I did try adding labels to the left or right at one point, but it leaves very little space for the effect name/button itself, and increasing the width of the effect chain widget causes it to not fit properly inside the 400x400 windows for instruments. As far as making the FX buttons match the track buttons, this is a good idea. Working on implementing that now. |
I personally am willing to trade a little bit of size reduction for clear knob labels |
This is left and we good for merge. |
I tried this, but the only problem is the "W/D" label next to the knob, because visually it makes the plugin space look unnecessarily larger and the difference with the old design is not very noticeable. Please remove the label before merging so that it looks more minimalist like the one in the first image. |
Wholeheartedly agree (but please don't thumb up yourself). The label honestly shouldn't be in such a place where it's a convenient knob but as i said in a mirrored bigger knob inside the fx window. The real beneft coming from this PR is actually there only with the size proposed at the beginning, and it's pretty clear how effective it gets. You should still be able to distinguish the 2 knobs as one starts from the center while the other doesn't, and through tooltips. The difference isn't quite as effective with labels added back in Before vs after. A simple bar with at most w/d knob is also usually the default behaviour afaik in most daws. |
@RoxasKH Actually without the labels the change is quite noticeable, look at all the space that is saved, it looks more modern. I think that all labels should be optional in LMMS, because that is why we have tooltips. |
Tooltips are for additional information, and are not meant to be the sole way of distinguishing UI elements. Labelling elements with tooltips is fine if the elements have sufficiently distinct and suggestive icons, but LMMS has a huge number of near-identical knobs. Omitting labels hampers feature discovery, as the user has to hover over the appropriate knob even to know that a feature exists. Users familiar with other DAWs, who might reasonably anticipate a particular feature to exist, still have to hover over each knob to find it. Even experienced LMMS users, who know what features are available, have to memorise which knob is which or face the same problem. Here's some relevant guidance from an article on tooltips by a UX company:
Surely the name of the knob isn't "additional information" or "reasoning"? And I would consider "which knob does what" to be fairly vital information when trying to do something, that users shouldn't have to memorise. I realise this is just two knobs for now (the screenshots don't show the decay knob), but it already has minor issues with feature discovery and distinguishing controls, and would quickly degrade the usability of the program if taken as a precedent. While aesthetics should of course be considered, they shouldn't be prioritised over UX. |
Looks great, I would love to test this! Can I get a little summary of everything so far, and points that are worth testing? |
I agree About "Users familiar with other DAWs, who might reasonably anticipate a particular feature to exist", to my knowledge and after a quick research, users familiar with other DAWs would most likely not anticipate this. As far as i've seen most daws actually don't have additional controls in the effects chain list aside from active/inactive, but just keep them inside the effect window, usually with a topbar. Unless they integrate the effect window inside the chain, like ableton does afaik All of this to just say either way it's an improvement, i'm ok with it, and there's always room for possible changes later |
@DomClark It should be noted that in this specific case there is only one knob with a very basic function, with the option to "restore" it to default value and with the tooltips with the information of the knob with the mouse movement, so new users already have enough information to know what that knob does. Adding the label makes this pr pointless because I guess the idea is to simplify the effects chain and make it more intuitive. Also there are cases in music composition and sound design where you need to add many plugins to get the desired sound, and this improvement in the effects chain (without the label) makes the workflow better, because now you can see the plugins at a glance and not have to keep scrolling. |
If we want to keep the "W/D" label, maybe it could be placed to the side of the knob and rotated 90 degrees? It shouldn't impact the vertical height that way. I'm not sure how nice it would look, but might be worth trying. The auto quit knob probably shouldn't be in the |
I think the best solution might be to make the list widget of the plugins more flexible so that it can deal with effect widgets that render themselves at different sizes. The effect widget could then be implemented in such a way that it checks a setting which decides whether users want to see the labels or not. Seeing the labels should be the default settings so that users can learn the interface. Once they know it they could decide to switch to a "compact mode" in the settings where the labels are not shown and not much space is used. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR looks good to me overall, but:
- I think the black background for the effects provided a good contrast. This is subjective though, but I'm wondering why it was changed.
- I'm wondering if we should keep the effect name bold or not.
|
||
setModel( _model ); | ||
|
||
if( effect()->controls()->controlCount() > 0 ) | ||
if(hasControls) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if(hasControls) | |
if (hasControls) |
It could be extended to include the scope, as it's just a matter of making the incoming layout respond to horizontal resizing, which i believe is far easier because only the effect name widget should be resized and the rest are of fixed sizes, and it's similar to the work done on the mixer ui recently. |
IMO fixing the effect view is out of scope of this issue. The ideal fix would make the effect list view flexible, e.g. by using a layout to manage the effects, and would make the effect view scalable so that it can render at arbitrary widths. This is a large change though. |
If everyone says so, alrite. Btw when is the name button fix coming? We've been waiting for this for some time. |
I think it already does. That's why i suggested the fix. |
Adding the following code after the creation of the
This in turn enables to increase the font size for better readability via the following style sheet snippet:
The result looks as follows: |
@michaelgregorius why does it look like the effect view is now larger than the old view? |
If they leave the design like the one in the previous photo, then this design change will not have been worth it. So simple that it is to remove the label and give us a smaller and more modern design. |
Because I have global fractional scaling set to 125% which means that Qt renders the view with more pixels on my screen. I have not made any changes to the height of the effect views. |
The ideal solution would adjust the list that shows the effect views such that it can manage effect views at different sizes. That way the effect view could be implemented to be configurable to allow different layouts (compact, normal, etc.). However, the current implementation is rather inflexible. |
|
||
class EffectView; | ||
|
||
class EffectLabelButton : public QPushButton |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have just noticed that this class inherits from QPushButton
whereas TrackLabelButton
inherits from QToolButton
. I think the letter is done so that the button can be put into a checked state when for example an instrument window is opened. So I wonder if the same would make sense for opened effects.
Recent commits introduced some merge conflicts with #7242; this PR replaces that one. This PR also does not attempt to make the EffectView resizable or modify the wet/dry behavior and instead just focuses on UI improvements:
The new design in action:
And in the classic theme (as an aside, the new mixer strip design doesn't seem to be compatible at all with the classic theme, but the FX rack is good enough):
This is mostly complete. Currently hunting down a small bug where the controls button stays in the "open" state even when you close the FX window, but this is likely an easy fix.Issue is fixed.Replaces #7242.