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

Loop enabled/disabled button should be more obvious #3069

Open
tresf opened this issue Oct 8, 2016 · 57 comments
Open

Loop enabled/disabled button should be more obvious #3069

tresf opened this issue Oct 8, 2016 · 57 comments

Comments

@tresf
Copy link
Member

tresf commented Oct 8, 2016

The enable/disable loop points button is a bit backwards. It's gray-ed out when it's inactive and just "regular" when it's active.

At a glance, this makes it hard to know when the loop points are enabled:

screen shot 2016-10-08 at 11 53 37 am

Gray-ed out from a UI perspective generally means it's not accessible. I think instead, the loop points should behave more like an LED toggle and be very obvious when enabled.

screen shot 2016-10-08 at 11 53 37 am

This way when a composer finds their project arbitrarily jumping away from the cursor area, they have a visual indicator as to why.

@BaraMGB
Copy link
Contributor

BaraMGB commented Oct 8, 2016

This looks a little bit like a overkill to me. Perhaps we can make it like the pencil button. When it's active it looks pushed in.

@tresf
Copy link
Member Author

tresf commented Oct 8, 2016

This looks a little bit like a overkill to me. Perhaps we can make it like the pencil button. When it's active it looks pushed in.

Pencil is a radio button, not an on/off toggle. Also, Pencil has a persistent cursor which illustrates it's action to the user. Looping should be very obvious to the end-user. Furthermore, suppressed... does this mean looping is enabled or disabled? If your mind needs to think for 0.5 seconds about it to use it, it's bad UI.

@RebeccaDeField
Copy link
Contributor

Does anyone know how other DAWs handle the enable/disable loop points function?

@SirBothersome
Copy link

SirBothersome commented Oct 8, 2016

@RebeccaDeField Of my brief use of FL Studio, not much different than this AFAIK, I believe it may have been a radio button

@tresf
Copy link
Member Author

tresf commented Oct 9, 2016

Does anyone know how other DAWs handle the enable/disable loop points function?

  • Ableton and Pro Tools will highlight the entire loop region (patterns too) and use a separate button for playing the loop. sample
  • Audacity (not a DAW) just loops what's selected, assuming that's what you wanted.
  • Logic Pro uses a very, very distinguishable loop area but I've no idea how it's toggled.
  • Bitwig studio appears to use a bright button although others that have used it would need to confirm.

@mikobuntu
Copy link
Contributor

mikobuntu commented Oct 9, 2016

Bitwig studio appears to use a bright button although others that have used it would need to confirm.

  • All Bitwig buttons when not in use are grey with a white logo and when in use ( toggled ) are orange with a black logo. [ this is a very good way of showing what is going on ] [[ imo :) ]]
  • Ardour5 : when buttons are not in use are grey with white logos ( small black outline ) and when in use ( toggled ) only the grey changes to green. Also the loop region on the song editor is all highlighted with a green transparency. I find this behaviour the most obvious from most DAWS that I use.
  • QTractor : Is probably the worst to see what is going on regarding loop area. Hovering over the loop button uses the same image/colour/css/whatever as actually enabling loop play.
  • Hydrogen ( drum machine ) Just changes the button colour from grey to blue on toggle.

@Umcaruje
Copy link
Member

Umcaruje commented Oct 9, 2016

I think also that a nicer icon should be on the button. The current icon made sense back when we had the loop markers, but now its just confusing. Most DAW's have an icon similar to this: screenshot from 2016-10-09 18 51 20 a simple line that clearly indicates looping.

I also like @BaraMGB's idea of making all the toggle buttons get creased in as pressed, like we do with the radio buttons.

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Oct 11, 2016

I agree with @Umcaruje about changing the icon.

I would like to propose that we start with changing the button to be pressed so that it matches the other behavior in the program and then if users do not find that to be distinguishable enough, we could use the colored button idea instead.

I can tackle the new icon, but someone more familiar with the code side of things would need to change the loop button styling.

@tresf
Copy link
Member Author

tresf commented Oct 11, 2016

Rough mockup...

I agree this is better visually although now we're starting to introduce some inconsistencies in our GUI. (play toggle, auto-scrolling toggle, etc). If we are to keep this consistent, I'd like auto-scroll to be default and non-autoscroll to be the supressed button. Play should be supressed while playing, etc.

image

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Oct 19, 2016

Idea for new loop points icon:
loop_points_on

@tresf @Umcaruje

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Oct 22, 2016

After some discussion on Discord, this is what the icon looks like:
loop_points_on 1
loop_points_on
👆 Transparent .png here

Now that we have an icon to work with, is there someone that would like to code up @tresf's proposal for the pressed button?

@smithjessk
Copy link

@RebeccaDeField I am interested!

@Umcaruje
Copy link
Member

Could we just make the icon green when its enabled and do the same with the autoscroll button? I think it would fit.

@tresf
Copy link
Member Author

tresf commented Oct 22, 2016

Auto scroll is on by default. Would that be confusing from a UI perspective to have it bright green on project load?

@Spekular
Copy link
Member

@tresf I think so.

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Dec 1, 2016

Would that be confusing from a UI perspective to have it bright green on project load?

@tresf I think so as well. I've come up with a few alternate ideas for this, but none of them made sense to me from a UI consistency standpoint when tested in the program.

Anyone have any other ideas?

@tresf
Copy link
Member Author

tresf commented Dec 1, 2016

I think consensus is the combination of a few posts above:

  • Make the color different per: @mikobuntu
    • All Bitwig buttons when not in use are grey with a white logo and when in use ( toggled ) are orange with a black logo. [ this is a very good way of showing what is going on ] [[ imo :) ]]
  • Improve the loop logo per @Umcaruje:
    • I think also that a nicer icon should be on the button. The current icon made sense back when we had the loop markers, but now its just confusing.

If the only way to make this consistent is to also do this to the pencil (play, etc) in the same fashion, so be it.

@tresf
Copy link
Member Author

tresf commented Dec 1, 2016

If the only way to make this consistent is to also do this to the pencil (play, etc) in the same fashion, so be it.

Going out on a limb... One other idea from a UI perspective is to make two tones of green as to illustrate severity. I'll call these tones "Meh" and "OMG". Stuff like Loop and Play can use "OMG" where pencil and section can use "Meh". That way we can maintain a consistent UI theme without sacrificing usability. Ugh. ;)

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Dec 1, 2016

Improve the loop logo per @Umcaruje:

8df0a37c-97b9-11e6-93ec-2d20b8b8259e

So we're halfway there, then.

@mikobuntu
Copy link
Contributor

Here's how I envisage my Loop_Region_Overlay to look in LMMS.
lmmsloopoverlay

Comparing to Ardours view of Loop_Region.
ardourloopoverlay

@musikBear
Copy link

@mikobuntu it looks good, but only ok If the transparency is cpu-lean, imo

@tresf
Copy link
Member Author

tresf commented Dec 1, 2016

but only ok If the transparency is cpu-lean, imo

Please stop making these statements. No one wants the software to run slowly and blindly mentioning it on every UI change is obvious and superfluous, especially so if the person commenting hasn't even looked at the draw routines.

The draw routine for the Song Editor should be able to handle this with little or no additional overhead. The transparency itself can add additional GPU/CPU resources however we're already using it in several other places, so the impact should be minimal.

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Dec 1, 2016

@mikobuntu I would turn down the opacity a touch, but I think your idea makes the loop point a lot more obvious.

I noticed in your screenshot of Ardour the white audio graph and midi track notes are above the transparent layer which I believe is done so that the producer can still easily identify those elements. Does anyone know if that would be possible for us to implement as well?

@tresf
Copy link
Member Author

tresf commented Dec 1, 2016

Does anyone know if that would be possible for us to implement as well?

Theoretically, anything is possible, but I believe the highlighted region is a topic for another issue, unless of course @mikobuntu plans to work on this. 🏖

@mikobuntu
Copy link
Contributor

@RebeccaDeField Yes I think the opacity may have been a bit higher than needed, this was just a mockup to show roughly how my idea would look. I will leave the colour stuff up to the experts like yourself :) @tresf I'm unsure if I would have enough knowledge to be able to work on this to be honest tho. I could probably have a look through the QT docs for some info regarding overlays.

@Umcaruje
Copy link
Member

Umcaruje commented Dec 1, 2016

I like @mikobuntu's idea and I would be willing to work on it, but I'm in middle of my semester so I don't have that much free time on my hands. So maybe when things cool down I can take this on and finish that piano roll grid

@tresf
Copy link
Member Author

tresf commented Dec 1, 2016

@mikobuntu if you have time to start this, @Umcaruje's PR is a good place to start looking at the code (examples are for other editors, but can be adapted in principal to the Song Editor):

https://github.com/LMMS/lmms/pull/3062/files

The paintEvent stuff is about as straight forward as it gets. Unfortunately the routines are huge, so finding out where best to put the paint code can get tricky. 👍

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Dec 1, 2016

And then out of the blue, a wild idea attacks..

idea

This would be consistent with the UI because:
buttons

EDIT: I'm not 100% sure about this idea, but I thought I'd post it anyway

@RebeccaDeField
Copy link
Contributor

Since changing the button to be green seems to be at a standstill, I'm thinking about changing active icons to be green. It solves the immediate issue of confusion which is making some newer icons already outside of the palette and style.

If I don't hear any objections about this, I will make a PR for it.

@musikBear
Copy link

@RebeccaDeField Good idea, except maby for this
image, because it is always selected in one of its states. Else all should be green i guess..

@RoxasKH
Copy link
Contributor

RoxasKH commented Jul 19, 2020

I know probably importante decision had already been made. But anyway i think in the future LMMS should get an highlighted background for that button whn is active, something like this (i know it's horrible it's just to give an understanding, so like pressed but with a green background)

Senzanome

This because it's the most common behaviour in DAWs.

Here's some examples

FL Studio 12: flloop
Bitwig: bitwigloop
Ableton: abletonlloop
Reason: reasonloop
Cubase: cubaseloop
Ardour: ardourloop

Even if Budislav concept shows an FL20 like behaviour, so maybe that'll be like that.

Budislav: immagine
FL20: immagine

@RebeccaDeField
Copy link
Contributor

@RoxasKH I agree, this would be ideal. The coding work behind implementing that seemed to be at a standstill so I was looking for a workaround that I could make happen. If we could implement it this way, we already have the improved icon ready.

An older mockup we had settled on some time ago:
8f872262-8d4e-11e6-95a2-3c2abf47e3d0

A possible good addition with some design tweaking:
0dc43366-b795-11e6-938f-c375f81cec23

@RebeccaDeField
Copy link
Contributor

As a follow up, if someone is able to team up with me to work on this, I can make improved mockups for it.

@ryuukumar
Copy link
Member

Not a designer, but I can help in coding if required.

@RoxasKH
Copy link
Contributor

RoxasKH commented Jul 20, 2020

@RoxasKH I agree, this would be ideal. The coding work behind implementing that seemed to be at a standstill so I was looking for a workaround that I could make happen. If we could implement it this way, we already have the improved icon ready.

An older mockup we had settled on some time ago:

A possible good addition with some design tweaking:

That green gradient is kinda weird, maybe it shuld be lighter, but i got it. I love the transaprency of the second mockup.

The problem is that that button can't be styled in the css because all buttons use the same class as i experienced when i was making my theme.
If we can get a separate class for that button that could be implemented through css and be also themeable. But maybe is a bad workaround, let's see what developers say.

@tresf
Copy link
Member Author

tresf commented Jul 20, 2020

LcdWidget uses a style parameter to change its behavior.

void LcdWidget::initUi(const QString& name , const QString& style)

This isn't the same thing as overloading the CSS, but might be helpful.

Knob does something closer to what's being described, it makes a special class for implementation-specific version:

class kickerKnob : public Knob

Last, and perhaps the simplest -- is to allow multi-state buttons to be an alternate color when they're non-default values. This would encourage consistency (such as the example @musikBear makes with the play head behavior) so that it can benefit from the same "I'm obviously toggled right now" visual appearance.

@RebeccaDeField
Copy link
Contributor

RebeccaDeField commented Jul 20, 2020

Not a designer, but I can help in coding if required.

I'll take care of the design refinements.

That green gradient is kinda weird, maybe it should be lighter, but i got it. I love the transparency of the second mockup.

Yeah, I agree that the old mockup needs some revisiting and rethinking but I think we've got the basic concept down.

@tresf
Copy link
Member Author

tresf commented Jul 20, 2020

That green gradient is kinda weird

that the old mockup needs some revisiting

Also will need to be tested against the selection-rectangle.

@zacius
Copy link

zacius commented Feb 17, 2021

FWIW i came to this thread to find out how to turn it off.

+1 unintuitive UI

But again, my deepest gratitude, this software has enabled me to express myself and feel a creative connection to the sounds of the world around me.

@Rossmaxx
Copy link
Contributor

At current master, looks like the icon has changed and setting loop on seems to have become more obvious. If anyone disagrees, we can reopen.

@musikBear
Copy link

At current master, looks like the icon has changed and setting loop on seems to have become more obvious. If anyone disagrees, we can reopen.

Can you screen-shoot the on/off behaviour of Master?

@Rossmaxx
Copy link
Contributor

Rossmaxx commented Jun 15, 2024

IMG_20240615_211033

Here's loop marker on

IMG_20240615_211004

And here's loop marker off. There is change from what is defined in the PR and it is obvious for regular users. The green is missing. If the green background should be added, just lmk and I'll reopen this.

@Rossmaxx
Copy link
Contributor

#5588 was the fix.

@Rossmaxx
Copy link
Contributor

Got a hint from discord that the icon change is not the fix. The button should still be highlighted. Reopening.

@Rossmaxx Rossmaxx reopened this Jun 16, 2024
@Rossmaxx Rossmaxx changed the title Enable/disable loop points should be more obvious Loop enabled/disabled button should be more obvious Jun 16, 2024
@musikBear
Copy link

The button should still be highlighted.

Agree.

@Rossmaxx
Copy link
Contributor

@zonkmachine how viable is it to add this change too to #7314

If you can't, I'll try something but I'll have to do some learning before i land the fix.

@zonkmachine
Copy link
Member

@zonkmachine how viable is it to add this change too to #7314

I'll look into it.

@zonkmachine
Copy link
Member

looppoints

Something like this? It's just a matter of editing the colors of loop_points_on.png

@Rossmaxx
Copy link
Contributor

Rossmaxx commented Jun 16, 2024

Nope, more like changing the button's background colour to highlight to green

Refer #3069 (comment)

@zonkmachine
Copy link
Member

Nope, more like changing the button's background colour to highlight to green

Similar how the modes draw/knife/edit in the editor change background when selected? Darker on the Default theme and lighter on Classic.

actions

@Rossmaxx
Copy link
Contributor

Rossmaxx commented Jun 16, 2024

Similar but the active background should be green like in the linked comment above.

@zonkmachine
Copy link
Member

Similar but the active background should be green like in the linked comment above.

Yes, I occasionally do green. I don't get where that background is set in the case of the edit buttons though?

@Rossmaxx
Copy link
Contributor

It's currently not available for theming. #3069 (comment) in combination with a theme entry should do the trick.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests