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

allow to change volume at higher resolution #100

Closed
landroni opened this issue Sep 11, 2015 · 52 comments
Closed

allow to change volume at higher resolution #100

landroni opened this issue Sep 11, 2015 · 52 comments
Assignees
Milestone

Comments

@landroni
Copy link

Please allow for more fine-grained volume changes. While the default percentage steps, 1% or 5%, work very well for a majority of users, there are cases when a user would need 0.1% steps. For instance some USB DACs have so much power, that already at 4-5% it already gets too loud for safe listening, while 1% may be too low. With traditional stepping it's hard to find a useful sound level.

One way to deal with this would be to allow decimals in Mouse Scroll Step. For instance a step of 0.1% would be a big improvement. In addition to this, a Scroll Step for the pop-up dialogue would also be useful; now it seems to default to 1% or in the whereabouts, but allowing to go in the decimals would help.

Some mixers provide this feature. QasMixer has an unfortunately named Number of turns for a slider change. Maxing it allows for about 4-5 steps within a percentage (i.e. ~0.2pp resolution). Here's how their option looks like:
screenshot_2015-09-11_20-48-56

@hasufell
Copy link
Collaborator

:goberserk:

@elboulangero
Copy link
Collaborator

Allowing decimal numbers for Mouse Scroll Step preferences is probably not a problem.

For the popup dialog, I think it would make sense that the Mouse Scroll Stepalso applies here. For the moment, there are two hard-coded values for the popup:

<property name="step_increment">1</property>
<property name="page_increment">10</property>

step_increment is used when hitting up/down when the slider has focus. page_increment is used when hitting Page up/down, but it's also used when mouse-wheeling on the slider.

Alright, let's suppose that the Mouse Scroll Step is also used for the slider. I think first, we should rename the preference in something else, like Volume Changing Step (feel free to have a better idea for the name :)). We can't let it named Mouse Scroll Step since it would apply to keyboard hitting also.

Now, the mapping: I'd say that we map this Volume Changing Step to step_increment. Because when you use your keyboard to change volume, you're more likely to use up/down rather than Page up/down. I mean, if you define Volume Changing Step to 5, then you go changing the volume with up/down, you expect that the volume will change 5 by 5. We could define page_increment to be automatically defined to step_increment * 10, then when a smart user uses Page up/down, he's happy, it's probably what he wants.

Ok, the only problem with this mapping is that currently, mouse-wheeling on slider is tied to page_increment. I'll dig a little bit to see how we can tie it to step_increment instead. If it's possible, I'll go for that solution.

OK, so to sum that up: we would have only one setting in the UI Volume Change Step. It would apply to mouse-wheeling on the icon, on the slider, and up/down keys from keyboard. Page up/down would change the volumes with a step ten times bigger.

Simple and consistent. What do you think of that ?

@elboulangero elboulangero added this to the 0.7 milestone Sep 14, 2015
@landroni
Copy link
Author

Could work...

we would have only one setting in the UI Volume Change Step .

I thought about this and I can't make my mind if it's better to have one or two settings for this. Maybe others have an opinion. I can see arguments for and against each solution, so it will be a matter of developer preference.

The argument for keeping things separate (as it is now) is that people may be using rough steps (e.g. 5%) scrolling while hovering the icon, and fine steps (e.g. 0.5%) when popping up the slider. I think this arrangement is intuitive and makes sense. This would imply though adding another pref, which might be confusing UI-wise.

we should rename the preference in something else, like Volume Changing Step (feel free to have a better idea for the name :))

Scrolling is not reserved for mouse wheels. I think Volume Scroll Step would work just fine, be it keyboard- or mouse-based scrolling.

Page up/down would change the volumes with a step ten times bigger.

This could be hardcoded (OK as far as I go) or a separate pref (but this might feel like too much for the GUI).

Allowing decimal numbers is ultimately the key part here and hopefully an easy one.

@elboulangero
Copy link
Collaborator

See Pull Request #115

After giving it a second thought, I implemented it exactly as you suggested @landroni, it seemed the easiest and the most intuitive. See screenshot below:

screenshot_2015-12-17_12-06-53

Basically everything is tied to Scroll step, except Up/Down keys from keyboard which are tied to Fine Scroll Step. See commit message 677b370 for more details.

Any comment ? Otherwise I'll merge that

@elboulangero
Copy link
Collaborator

Now, you may notice that, in the HotKeys tab, we have another volume step defined just for Hotkeys.

So the current situation is that we have three volume step settings: two (normal step & fine step) that are used for both mouse and keyboard (when the popup GtkScale has focus), and another setting that is used for HotKeys.

We could make it simpler, and have only two settings (Hotkey would use the same scroll step as the rest).

Or we could make it more complicated and more flexible, and have four settings: one for the mouse scroll, two (normal step & fine step) for keyboard shortcuts inside popup, and another for Hotkeys.

At the moment we're halfway between the most complicated and the most simple solution...

Any thought on that ?

elboulangero added a commit that referenced this issue Dec 21, 2015
Scroll rework, allow volume change at higher resolution #100
@elboulangero
Copy link
Collaborator

Merged

@landroni
Copy link
Author

landroni commented Feb 6, 2016

Sorry for looking into this so late! Real life intervened.

I am trying to check out current master but something goes awry. After building fine, I want to run pnmixer in place (without installing), but it ends up with this error:

** (pnmixer:12507): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-6LQazRtFk7: Connection refused
Can't find the volume popup window interface file. Please ensure PNMixer is installed correctly. Exiting.

Is this expected?

@elboulangero
Copy link
Collaborator

Not really. But wait a little bit. I'm currently in the process of re-writing a big deal of PNMixer code. Doing so I found that the changes I made regarding this ticket were not complete. I missed plenty of things, so the "higher resolution volume changes" is probably bogus on the master branch.

However I think I'll be done with the PNMixer rewriting in a few days. At this moment, I will need people around to help me with testing. If you're available, it will be great !

@landroni
Copy link
Author

landroni commented Feb 6, 2016

Sounds great. Will try the code in the following days.

@elboulangero
Copy link
Collaborator

@landroni Check #120 for discussion, and also for the branch to checkout and test.
Cheers !

@elboulangero
Copy link
Collaborator

I remember that you had a weird setting with different cards etc... It would be great if you could test that a little bit again. Here I don't have a USB dac anymore, the best I could do was to create a dummy virtual alsa card and play a little with it. But it can't be as complete as the test you can do with your setup.

@landroni
Copy link
Author

landroni commented Feb 8, 2016

I'm trying the pnmixer-dirty branch and I still get an error when executing in place (without make install):

/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer (4228)

** (pnmixer:4228): WARNING *: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-cm8tMrUfrt: Connection refused
*

ERROR:ui-popup-menu.c:223:popup_menu_create: assertion failed: (uifile)

/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer (4228) returned '6'

I am not sure if something is wrong with the local setup or not. In any case, right now I'm using Alsa but no fancy USB DACs.

@elboulangero
Copy link
Collaborator

The "WARNING"comes from Glib or Gtk+, given the look of it. I never saw this warning before, but I don't think it's relevant.

The error means PNMixer don't find the UI file. I think I know what's wrong. When you start PNMixer from source, ALWAYS launch it from the root directory. That's to say, DO NOT do cd src && ./pnmixer, but instead DO ./src/pnmixer.

This is because PNMixer looks for the files it needs in ./data/... first, then in your system . If you don't launch it from the root directory, it will not find the files, or it will pick up the files installed on your system (if it's installed), but they may be outdated.

@elboulangero
Copy link
Collaborator

Please also ensure that your git directory is clean (git clean -dfx is my favorite), that you start well from scratch with ./autogen.sh, this kind of things. I guess you do that already, but just to be sure :)
Also don't forget that you can run PNMixer with the -d option to see what's happening.

@landroni
Copy link
Author

landroni commented Feb 9, 2016

Exactly! I must have forgotten this. Now it launches.

Here are some messages on hte console:

/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer (11348)

** (pnmixer:11348): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-cm8tMrUfrt: Connection refused

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11348): Gtk-WARNING **: Unknown property: GtkTable.margin-start

/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer (11348) returned '0'

@landroni
Copy link
Author

landroni commented Feb 9, 2016

As a note, I know PulseAudio is not supported, but when using it with PA running I never felt like pnmixer was broken.

Now with PA running I notice this funny behavior:
With device (default) (Master), I change audio levels in xfce4-mixer or in pavucontrol and pnmixer mirrors changes faithfully. All mixers show the same level (more or less), say 44%.

Then I change audio levels in pnmixer using scrollwheel on top of the icon, and while both xfce4-mixer and pavucontrol change to the correct level (say, 69%), pnmixer stays glued to the previous level (44%) both in tooltip icon and pop-up indicator.

After I resync all mixers, I change levels in pnmixer pop-up by scrollwheel: other mixers and pnmixer pop-up display correct level (say, 69%), but pnmixer icon and tooltip display previous level (44%).

@elboulangero
Copy link
Collaborator

Hi !

Do you use Gtk2 or Gtk3 when you compile PNMixer ? (If you don't know, it means Gtk3). Which version of Gtk is installed on your system ?

About Pulse: yep, PNMixer uses alsa and is not aware of Pulse. So it causes various problems. As long as nobody implements a proper PulseAudio backend, it will be like that I'm afraid...

@landroni
Copy link
Author

landroni commented Feb 9, 2016

Gtk3 v3.10.8

@elboulangero
Copy link
Collaborator

OK, it appears that the margin-start and margin-endproperties only appeared in Gtk+3.12. Source: https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget--margin-start. Before that it was named margin-leftand margin-right.

I'll update the Makefile to ensure proper Gtk+ version. I guess the UI must look a little weird for you, things may be out of place. OK, appart from that, do PNMixer behave?

@landroni
Copy link
Author

landroni commented Feb 9, 2016

UI is OK, I think. I see a largish margin, but I suspect this is one of Gtk3's easter-eggs:

screenshot_2016-02-09_12-25-25

Also, the Mute/Unmute seems to misbehave: it works alright, but after muting the checkbox doesn't appear as "checked". Actually, I would suggest simply naming it "Mute Volume". If checked, muted. If unchecked, unmuted. Visually display when checked/unchecked.

@elboulangero
Copy link
Collaborator

Yep the margin is a Gtk3-only feature :) Maybe it will disappear one day without notice, the same way it appeared.

For the Mute/Unmute label, I agree for the renaming, I would prefer a simple "Mute Volume".

For the misbehave: do you have anything weird in the logs (with -d option) ? I don't have any problem like that. I just tried muting/unmuting like crazy, from any possible way (mouse on tray/popup menu/popup window/hotkey), and it worked good. Except at some point it was stuck in a mute/unmute loop, but I think it's my keyboard keys that are sticky...

@elboulangero
Copy link
Collaborator

Also, are you testing with a USB card ? Some USB DAC don't have a hardware mute switch. In this case, PNMixer don't tell you anything, but it considers that the card is always unmuted. Clicking on the mute checkbox should have no effect: sound shouldn't be muted, and the UI should always appear as umuted.

@landroni
Copy link
Author

landroni commented Feb 9, 2016

No, no USB card this time. But I am using PA, so possibly that's generating issues...

And I don't get any messages at all when hitting mute/unmute even with -d option.

@elboulangero
Copy link
Collaborator

Ok, there shouldn't be any message so it's fine. It's likely that PA causes the issue. PNMixer relies on a callback mechanism from Alsa to update its status. If the callback is not invoked (maybe because somehow PA takes precedence), then PNMixer doesn't update its appearance.

@landroni
Copy link
Author

landroni commented Feb 9, 2016

But then it's strange because with the released pnmixer when hitting Mute its tray icon becomes disabled, whereas with the rewrite nothing happens. My suspicion is that a small bug has crept up in the rewrite; possibly it's evidenced by PA, but I think it wasn't there before.

Same with the out-of-sync volume between tooltip and pop-up as described in #100 (comment). I believe that what is displayed by pnmixer should always be in sync, so possibly some UI-element doesn't get updated in the new infrastructure.

@elboulangero
Copy link
Collaborator

Hi !
I changed PNMixer's way of keeping in sync with volume, it should be more robust now. Can you give it a try along with Pulse ? It should behave better, maybe even... work flawlessly ? Who knows... Other than that, I think I'm finished with the rewrite now. If you see anything weird/bogus, let me know.

Also please let me know if you have the opportunity to play with your fancy USB DAC, and the slight volume variation (like 0.1 steps in fine steps), tell me if it works as expected. Thx !

Branch to checkout, just as a reminder:
https://github.com/elboulangero/pnmixer.git

@landroni
Copy link
Author

Hi!

I tried to build pnmixer, but I hit a snag at this point:
https://github.com/elboulangero/pnmixer/commit/9b97587c1aadbb3267782975eaf46eeba5e43e51

configure: error: Package requirements ( x11 alsa gtk+-3.0 >= 3.12.0 libnotify) were not met:

Requested 'gtk+-3.0 >= 3.12.0' but version of GTK+ is 3.10.8

If the minimum requirements stay like this, I'm not sure I can test the new pnmixer.... Using Ubuntu 14.04 LTS.

@elboulangero
Copy link
Collaborator

Yep, I just updated the minimum requirement according to the problems you run into last time with Gtk. You can tweak the configure.ac with this command:

sed -i 's/3.12.0/3.6.0/' configure.ac

Then reconfigure, and PNMixer should compile just fine. Sorry about this inconvenience.

@landroni
Copy link
Author

Thanks! Now it works. I also had to:

sed -i 's/3.12/3.10/' ./data/ui/*

Now Mute looks and behaves as it should, IMO. I also no longer see the syncing issues (between xfce4-mixer and pnmixer), so your recent fixes seem to have addressed the regressions I've noticed before. Also, PA mixer is still running, and I see no inconvenience in particular; as far as I'm concerned, pnmixer plays nicely with PA.

There is a very minor issue: for some reason the tooltip often displays volume level - 1. For instance, volume is 40 in pop-up, in PA audio, but only 39 in pnmixer tooltip. Sometimes it's the same. No biggy, it's always a 1 point offset, but I'm wondering if this can be tracked somewhere to a wrong rounding or similar...

Will check the USB DAC later (along with the fine steps) as I will need to make some changes to the system in order for that to work...

@elboulangero
Copy link
Collaborator

Thanks a lot for such feedback. Indeed the tooltip value was lazily casted from double to integer. I replaced it by a proper lround() call, should be fixed by now.

@elboulangero
Copy link
Collaborator

Hey, I just found and fixed bugs with the volume slider. This part is very tricky to be done properly ! Be sure to checkout the last version ;)

@landroni
Copy link
Author

Thanks. Now the tooltip offset is definitely fixed. Will try out other use cases later on...

@landroni
Copy link
Author

landroni commented Mar 3, 2016

There is another bug I may have run into --- try Prefs > Disable Notifications > OK. Here notifications remain enabled... The settings don't seem to get saved. (I should mention that I run pnmixer in-place, without installing.)

@hasufell
Copy link
Collaborator

hasufell commented Mar 3, 2016

Can't reproduce that, maybe it's config file skew.

@elboulangero
Copy link
Collaborator

Can't reproduce either. I also run in-place, it shouldn't have any influence. Any weird lines in debug messages ?

@landroni
Copy link
Author

landroni commented Mar 3, 2016

None that I can see. I'm still using gtk 3.10.8, but I guess this shouldn't affect something like this.

>/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer  (1374)

** (pnmixer:1374): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-Sy6PhIBy42: Connection refused

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:1374): Gtk-WARNING **: Unknown property: GtkTable.margin-start
>/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer (1374) returned '0'

@landroni
Copy link
Author

landroni commented Mar 4, 2016

Actually I can see this issue for other tabs as well. For instance, I check System theme, OK, but when I come back to Prefs it hasn't been saved...

@elboulangero
Copy link
Collaborator

Hmm, the first of the logs you have is interesting.

** (pnmixer:1374): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-Sy6PhIBy42: Connection refused

I remember seeing that and digging into it a little bit, but in the end it turned out that this was just a compile issue. Did you try to make some cleanup and recompile, like:

git clean -dfx
./autogen.sh
make

Also, can you run PNMixer with the -d option and paste the output please ? I'm just curious to see which ui files PNMixer picks up.

Thanks !

@landroni
Copy link
Author

landroni commented Mar 5, 2016

Did all this, but still no luck:

>/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer -d  (13785)

** (pnmixer:13785): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-WljcTeDto9: Connection refused
debug: ui-popup-menu.c: Building from ui file './data/ui/popup-menu-gtk3.glade'

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end
debug: ui-popup-window.c: Building from ui file './data/ui/popup-window-vertical-gtk3.glade'
debug: ui-tray-icon.c: Creating tray icon
debug: ui-tray-icon.c: Building pixbuf array for size 16
debug: hotkeys.c: Creating hotkeys control
debug: audio.c: Hooking soundcard '(default) (Master)' to the audio system
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Looking for playable mixer element 'Master'
debug: alsa.c: 'default': 1 poll descriptors are now watched
debug: alsa.c: 'default': Card '(default)' with channel 'Master' initialized !
debug: audio.c: Soundcard successfully hooked (scroll step: 5, normalize: false)
debug: audio.c: ** Dispatching signal 'card initialized' from 'unknown', vol=69.9966, muted=no
debug: main.c: ---- Running main loop ----
debug: audio.c: ** Dispatching signal 'values changed' from 'unknown', vol=69.9966, muted=no
debug: ui-tray-icon.c: Tray icon size is now 35
debug: ui-tray-icon.c: Building pixbuf array for size 35
debug: ui-prefs-dialog.c: Building from ui file './data/ui/prefs-dialog-gtk3.glade'

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start
debug: ui-prefs-dialog.c: Populating prefs dialog values
debug: ui-prefs-dialog.c: Filling cards ComboBox
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: alsa.c: 'hw:0': Opening mixer
debug: alsa.c: 'hw:0': Closing mixer
debug: alsa.c: 'hw:1': Opening mixer
debug: alsa.c: 'hw:1': Closing mixer
debug: ui-prefs-dialog.c: Filling channels ComboBox for card '(default)'
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: ui-prefs-dialog.c: Building from ui file './data/ui/prefs-dialog-gtk3.glade'

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start
debug: ui-prefs-dialog.c: Populating prefs dialog values
debug: ui-prefs-dialog.c: Filling cards ComboBox
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: alsa.c: 'hw:0': Opening mixer
debug: alsa.c: 'hw:0': Closing mixer
debug: alsa.c: 'hw:1': Opening mixer
debug: alsa.c: 'hw:1': Closing mixer
debug: ui-prefs-dialog.c: Filling channels ComboBox for card '(default)'
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: ui-prefs-dialog.c: Building from ui file './data/ui/prefs-dialog-gtk3.glade'

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:13785): Gtk-WARNING **: Unknown property: GtkTable.margin-start
debug: ui-prefs-dialog.c: Populating prefs dialog values
debug: ui-prefs-dialog.c: Filling cards ComboBox
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: alsa.c: 'hw:0': Opening mixer
debug: alsa.c: 'hw:0': Closing mixer
debug: alsa.c: 'hw:1': Opening mixer
debug: alsa.c: 'hw:1': Closing mixer
debug: ui-prefs-dialog.c: Filling channels ComboBox for card '(default)'
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: main.c: ---- Exiting main loop ----
debug: ui-tray-icon.c: Destroying
debug: ui-popup-window.c: Destroying
debug: ui-popup-menu.c: Destroying
debug: audio.c: Unhooking soundcard from the audio system
debug: alsa.c: 'default': Closing mixer
>/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer -d (13785) returned '0'

@elboulangero
Copy link
Collaborator

Hi,
I have no idea what's the problem. It may be related to the Gtk version after all.
Can you try to pull the last version and run it with -d and paste me the result please ? I added a little debug message to see the return value of the preferences dialog. Thx!

@landroni
Copy link
Author

landroni commented Mar 8, 2016

I cleaned up the tree, pulled, and recompiled. It seems like the dialog ends up with code 0, even though things don't get saved (last one, -4, I closed the dialog via WM cross). Should I run it through gdb or similar? Maybe could the code print when a checkbox is enabled/disabled to see if this is correctly registered?

>/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer -d  (11651)

** (pnmixer:11651): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-WljcTeDto9: Connection refused
debug: ui-popup-menu.c: Building from ui file './data/ui/popup-menu-gtk3.glade'

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkAccelLabel.margin-end
debug: ui-popup-menu.c: Gtk3 workaround: resizing images from 22px to 16px
debug: ui-popup-window.c: Building from ui file './data/ui/popup-window-vertical-gtk3.glade'
debug: ui-tray-icon.c: Creating tray icon
debug: ui-tray-icon.c: Building pixbuf array for size 16
debug: hotkeys.c: Creating hotkeys control
debug: audio.c: Hooking soundcard '(default) (Master)' to the audio system
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Looking for playable mixer element 'Master'
debug: alsa.c: 'default': 1 poll descriptors are now watched
debug: alsa.c: 'default': Card '(default)' with channel 'Master' initialized !
debug: audio.c: Soundcard successfully hooked (scroll step: 5, normalize: false)
debug: audio.c: ** Dispatching signal 'card initialized' from 'unknown', vol=49.9786, muted=no
debug: main.c: ---- Running main loop ----
debug: audio.c: ** Dispatching signal 'values changed' from 'unknown', vol=49.9786, muted=no
debug: ui-tray-icon.c: Tray icon size is now 35
debug: ui-tray-icon.c: Building pixbuf array for size 35
debug: ui-prefs-dialog.c: Building from ui file './data/ui/prefs-dialog-gtk3.glade'

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start
debug: ui-prefs-dialog.c: Populating prefs dialog values
debug: ui-prefs-dialog.c: Filling cards ComboBox
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: alsa.c: 'hw:0': Opening mixer
debug: alsa.c: 'hw:0': Closing mixer
debug: alsa.c: 'hw:1': Opening mixer
debug: alsa.c: 'hw:1': Closing mixer
debug: ui-prefs-dialog.c: Filling channels ComboBox for card '(default)'
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: main.c: Dialog response: 0
debug: ui-prefs-dialog.c: Building from ui file './data/ui/prefs-dialog-gtk3.glade'

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start
debug: ui-prefs-dialog.c: Populating prefs dialog values
debug: ui-prefs-dialog.c: Filling cards ComboBox
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: alsa.c: 'hw:0': Opening mixer
debug: alsa.c: 'hw:0': Closing mixer
debug: alsa.c: 'hw:1': Opening mixer
debug: alsa.c: 'hw:1': Closing mixer
debug: ui-prefs-dialog.c: Filling channels ComboBox for card '(default)'
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: main.c: Dialog response: 0
debug: ui-prefs-dialog.c: Building from ui file './data/ui/prefs-dialog-gtk3.glade'

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkBox.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkLabel.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkCheckButton.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkEntry.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start

(pnmixer:11651): Gtk-WARNING **: Unknown property: GtkTable.margin-start
debug: ui-prefs-dialog.c: Populating prefs dialog values
debug: ui-prefs-dialog.c: Filling cards ComboBox
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: alsa.c: 'hw:0': Opening mixer
debug: alsa.c: 'hw:0': Closing mixer
debug: alsa.c: 'hw:1': Opening mixer
debug: alsa.c: 'hw:1': Closing mixer
debug: ui-prefs-dialog.c: Filling channels ComboBox for card '(default)'
debug: alsa.c: 'default': Opening mixer
debug: alsa.c: 'default': Closing mixer
debug: main.c: Dialog response: -4
debug: main.c: ---- Exiting main loop ----
debug: ui-tray-icon.c: Destroying
debug: ui-popup-window.c: Destroying
debug: ui-popup-menu.c: Destroying
debug: audio.c: Unhooking soundcard from the audio system
debug: alsa.c: 'default': Closing mixer
>/home/geek/Build/Devel/pnmixer-dirty/pnmixer/src/pnmixer -d (11651) returned '0'

@elboulangero
Copy link
Collaborator

My dialog responses are: -6 when I click Cancel, and -5 when I click OK. Apparently you have 0 and -4. It's surprising...

@landroni
Copy link
Author

landroni commented Mar 8, 2016

Even more surprising: I get 0 for both Cancel and OK, and -4 for closing the window using ESC or WM cross or alt+f4...

@elboulangero
Copy link
Collaborator

I get -4 with ESC and Alt+F4 (using openbox). I'm wondering...

In the ui file, I use a string to define the response sent by the button. That's to say, for the ok button, I define the response as "ok" (a string). Then somehow, this is converted to an enum value GTK_RESPONSE_OK. This being said, I've seen some code where the response is set to a number, (aka a cryptic -5 for ok).

It's probably the problem. I don't think I ever found a place where this stuff is documented. It must be somewhere, but I didn't find it. So I processed by trying.

Ok, so, please, just have a look in data/ui/prefs-dialog-gtk3.glade. At he very end, of the file tweak these two lines:

<action-widget response="ok">ok_button</action-widget>
<action-widget response="cancel">cancel_button</action-widget>

Replace ok by -5, cancel by -6. Leave the double-quotes. Then tell me if it fixes the problem.

@landroni
Copy link
Author

landroni commented Mar 8, 2016

It does. Now I get the expected exit codes, and prefs are being saved...

@elboulangero
Copy link
Collaborator

Pushed ! Thx again for the time and patience !

@landroni
Copy link
Author

landroni commented Mar 8, 2016

Thanks for addressing these esoteric concerns! :)

@landroni
Copy link
Author

landroni commented Mar 8, 2016

Since we're discussing the recent port here, if I may interject a very small cosmetic request:

It always felt to me like the Device tab in Prefs should be the first one in the list, followed by View and all the other. If people need to change the device often (add USB DAC, connect HDMI, etc.), then it would make sense to make the Device choices handy. View on the other hand is something you would set up once and forget about it... (Let me know if it's best that I open a new request about it.)

@elboulangero
Copy link
Collaborator

Yep, maybe just copy paste that in a new request that would be nice. I personally don't mind were the Device tab is. Your argument makes sense.

@landroni
Copy link
Author

landroni commented Mar 8, 2016

Done. Another thing: What does Normalize volume do? Perhaps a tooltip would be useful there...

@elboulangero
Copy link
Collaborator

Hmm, yes, I'm not even sure Normalizeis the right word.

Without Normalize, the volume scale is linear. It's the most simple and straight-forward way, but it doesn't match the human ear, which response is logarithmic of the input. It means that if you want to double the volume you hear, yo have to multiply the volume produced by ten or something like that. That's why, by the way, a common unit for sound is the Decibel, which is a logarithmic unit. It matches the human hearing, and is easier to manipulate. If you want to have the volume twice louder, you just produce twice more decibels.

But back to PNMixer, if you don't check Normalize, volume scale is linear. Try it, and you will see that the volume distribution is a little bit awkward. You have a lot of accuracy in lower volumes, where you don't need it. Then in higher volumes that actually matters more, you don't have enough accuracy anymore.

The Normalize setting aims to improve that, and the volume is then distributed more evenly. You have more control in the highest volumes.

That's basically my understanding of the thing. I worked a little bit with in acoustics at some point, so I know a little bit. But I may be wrong in the details, don't trust me too much ;)

As for the tooltip, I'll think about it. I agree that more explanation is needed. A tooltip may not be the right thing, since we have no tooltip at all in the ui. How can user guess that there's on here ?

@landroni
Copy link
Author

Good explanation, thanks.

The way tooltips usually work is that when the user is unsure of what a given checkbox will do they will often hover the said checkbox to see if anything pops up. Sometimes users will try to enable/disable the checkbox and if a tooltip pops-up then they will have at least some info on what it does. That's my experience with tooltips from other projects.

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

3 participants