Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_vis_vumeter (Read 40814 times) previous topic - next topic
Bogozo and 30 Guests are viewing this topic.

Re: foo_vis_vumeter

Reply #250
Some observations & enhancement request ... the tuning menu makes my fingers work very hard on the mouse ... click here click there roll wheel ... compounded by me testing different skins causing tuning to reset and have to tune again.

May I suggest a "one page" tuning screen enhancement  ( only if there is bandwidth to code it  )...

Example:



 

Re: foo_vis_vumeter

Reply #251
+1 Excellent idea, even if with just a simple line scale and vertical pointers to drag.  So much easier to see all at a glance vs. click and re-click, and allow adjustments by dragging the pointer (or using wheel).

Re: foo_vis_vumeter

Reply #252
May I suggest a "one page" tuning screen enhancement  ( only if there is bandwidth to code it  )...
It wouldn't look nearly as colorful when implemented in native Win32.

+1 Excellent idea, even if with just a simple line scale and vertical pointers to drag.  So much easier to see all at a glance vs. click and re-click, and allow adjustments by dragging the pointer (or using wheel).
Do you prefer vertical or horizontal sliders? Horizontal is generally simplest as it seems to scale easier across multiple resolutions and DPIs. But horizontal is less intuitive without labeling.

My biggest reservation on this is dealing with the multiple instance situation, that makes it rather complex. Because of that, it is not as simple as adding a preferences page. It might not work requiring a fully custom dialog like the one in foo_vis_spectrum_analyzer that runs on its own non-blocking thread.

Re: foo_vis_vumeter

Reply #253
May I suggest a "one page" tuning screen enhancement  ( only if there is bandwidth to code it  )...
Do you prefer vertical or horizontal sliders? Horizontal is generally simplest as it seems to scale easier across multiple resolutions and DPIs. But horizontal is less intuitive without labeling.
I mean, like WOW if you can do this!  As long as it is clear which tuning parameter the slider corresponds to, it wouldn't make a difference to me.  I would assume the resulting value from the slider setting could be indicated by a mouse-click on the slider's pointer or even better an actual always-present text value?  Hopefully boxerfan88 will chime in with his opinion too!

BTW, thank you for adding support for extracted *.ini files in 0.8.1

Re: foo_vis_vumeter

Reply #254
I think horizontal bar will be good.
Text on left, adjustment bar on right.
One row for each tuning parameter.
Relatively easy to align/format.
That’s my suggestion…

Re: foo_vis_vumeter

Reply #255
@BoringName

Using BinExtractor1.2 works fine.

VU Editor does something nasty to to the source Back image png when building a BIN. It stores the transparent parts of a background to a grey checkerboard when building the BIN.

How do I replace a background png with a modified png with transparent parts inside the BIN?

Can your tool be modified to replace the background png or is there another way?

Re: foo_vis_vumeter

Reply #256
@oops

I use CUI with (pseudo)transparency enabled.

In settings (with aspect ratio locked) you have an option to enable or disable Remove Background.

When Remove Background is enabled, a greyish (32-32-32-255) background is painted.
When Remove Background is disabled, a black (10-10-10-255) background is painted.

Can you add a third option Transparency which does not paint anything so I can see the original background I painted (gradient with/without art)?
Alternatively maybe add an RGBA option for the background paint, where selecting RGBA with A=0 gives full transparency?

Re: foo_vis_vumeter

Reply #257
When Remove Background is enabled, a greyish (32-32-32-255) background is painted.
When Remove Background is disabled, a black (10-10-10-255) background is painted.

Can you add a third option Transparency which does not paint anything so I can see the original background I painted (gradient with/without art)?
Alternatively maybe add an RGBA option for the background paint, where selecting RGBA with A=0 gives full transparency?
I think you're misunderstanding what is going on. When "Remove Background" is enabled the component skips extending the edge color to fill the window. That is all. The greyish color you see is the system color for the dark theme. It is the background color for the client area of the window. So technically, nothing whatsoever is being painted on that region of the window.

Window transparency and layering is a whole other thing. What window would you layer below this with the background, how are you doing this exactly? I tried a quick experiment, and everything got worse.

Re: foo_vis_vumeter

Reply #258
@BoringName

Using BinExtractor1.2 works fine.

VU Editor does something nasty to to the source Back image png when building a BIN. It stores the transparent parts of a background to a grey checkerboard when building the BIN.

How do I replace a background png with a modified png with transparent parts inside the BIN?

Can your tool be modified to replace the background png or is there another way?
Defender I believe you posted this in the wrong forum--BinExtractor is not needed/used in oops' foo_vis_vumeter.  You should ask this in the JSP Script Analog VU Meter forum where ilovefb2k may be able to help you.  While BoringName wrote BinMeter 1.2, he did it mainly as a proof-of-concept tool within the realm of his VUMeter plugin for the MusicBee player, and actually discourages its use in the way it has been optionally adapted into JSP Script Analog VU Meter.  BoringName's normal activity is within the MusicBee forum's thread for his own plugin , but I doubt he will want to address this.

When working with PNG's you have to be careful when saving the original after changing it that the transparency options are correctly set to avoid the "checkerboard" effect on re-use.  For example, in IrfanView those look like this ( I don't know if these are correct for your use):

Re: foo_vis_vumeter

Reply #259
When Remove Background is enabled, a greyish (32-32-32-255) background is painted.
When Remove Background is disabled, a black (10-10-10-255) background is painted.

Can you add a third option Transparency which does not paint anything so I can see the original background I painted (gradient with/without art)?
Alternatively maybe add an RGBA option for the background paint, where selecting RGBA with A=0 gives full transparency?
I think you're misunderstanding what is going on. When "Remove Background" is enabled the component skips extending the edge color to fill the window. That is all. The greyish color you see is the system color for the dark theme. It is the background color for the client area of the window. So technically, nothing whatsoever is being painted on that region of the window.

Window transparency and layering is a whole other thing. What window would you layer below this with the background, how are you doing this exactly? I tried a quick experiment, and everything got worse.
In CUI I define a Panel Stack Splitter in the Layout. In the properties of such a PSS you can enable Pseudotransparency which will be active for all underlying defined child panels and will work if the child panel (plugin) supports pseudotransparency.
In such a PSS you can also put code to paint the background of this PSS panel (I use a gradient) and to paint optional art (Cover, Artist, ArtistFlag, Label, Genre, Bandlogo or Namelogo) on top of the painted background).
Then I activate the child panel plugin which displays on top of the resulting background.

If the child panel plugin supports pseudo transparency you can create visually nice effects imo.

Not all child panel plugins I use support pseudotransparency, but good old foo_uie_vis_channel_spectrum, foo_uie_esplaylist, foo_uie_elplaylist and foo_uie_eslyric (old version) do.
Also all Jsplitter, SMP, WSH, JS2 and JS3 panels (by disabling one line of code) support transparency.
Foo_wave_minibar_mod was modified some time ago on my request by Case to support transparency too.

Foo_vis_vumeter 2013 does not support transparency, but since you now created a modern version which I'm testing now I thought it was a good moment to ask for some extra functionality in the new component.
Related is my question about BinExtractor (I posted the same question in the MusicBee forum before asking here). When you create a BIN with VU Editor a valid background png which is partly transparent will have transparency substituted by an ugly checkerboard. I want to be able to insert the correct png in the BIN without transparency butchered by a checkerboard.

Since ilovefb2k's script is JS3 based I can have transparency and proper partially background png using that script.
But it is a horrendous process to create the needed png's for back, glass, needle and light and skin.ini with the correct angle values and offsets. And I cannot get Lights to work currently.

To make the above a bit more visual I created a small video where for test purposes I paint the backgrounds for the panels  with a nokeepaspect cover with alpha 64.
When I select VU 2013 it is the old component, VU 2024 is your component and VU JS3 is ilovefb2k's script. Background including bezel around VU meter should (ideally) be the same for your component and the JS3 one.

Re: foo_vis_vumeter

Reply #260
In CUI I define a Panel Stack Splitter in the Layout. In the properties of such a PSS you can enable Pseudotransparency which will be active for all underlying defined child panels and will work if the child panel (plugin) supports pseudotransparency.
In such a PSS you can also put code to paint the background of this PSS panel (I use a gradient) and to paint optional art (Cover, Artist, ArtistFlag, Label, Genre, Bandlogo or Namelogo) on top of the painted background).
Then I activate the child panel plugin which displays on top of the resulting background.

If the child panel plugin supports pseudo transparency you can create visually nice effects imo.

Not all child panel plugins I use support pseudotransparency, but good old foo_uie_vis_channel_spectrum, foo_uie_esplaylist, foo_uie_elplaylist and foo_uie_eslyric (old version) do.
Also all Jsplitter, SMP, WSH, JS2 and JS3 panels (by disabling one line of code) support transparency.
Foo_wave_minibar_mod was modified some time ago on my request by Case to support transparency too.

Foo_vis_vumeter 2013 does not support transparency, but since you now created a modern version which I'm testing now I thought it was a good moment to ask for some extra functionality in the new component.
Related is my question about BinExtractor (I posted the same question in the MusicBee forum before asking here). When you create a BIN with VU Editor a valid background png which is partly transparent will have transparency substituted by an ugly checkerboard. I want to be able to insert the correct png in the BIN without transparency butchered by a checkerboard.

Since ilovefb2k's script is JS3 based I can have transparency and proper partially background png using that script.
But it is a horrendous process to create the needed png's for back, glass, needle and light and skin.ini with the correct angle values and offsets. And I cannot get Lights to work currently.
Several things here to unpack:
  • None of the components mentioned have their source code available. So it is still a mystery what part of the Win32 transparency all of this is referring to.
  • Up to this point, the only way I have been able to achieve proper transparency in the Win32 shell has been using precomputed alpha--see the radio buttons on the context menu.
  • I do not use CUI. First time I've heard of PSS. Not sure either how or even whether this maps to DUI.
  • I do not run any of the script interpreter components either. Any other option is better than using JS ;)
  • I do not know how VUEditor and BinExtractor work. Sorry. My suspicion is that when PNGs are being converted to bitmaps, they do not include the necessary DIB fields. Furthermore, if you look at the bitmap array output by VUEditor in the BIN format, all of the alpha fields are 0x00 so the assumption is that this field is unused (mostly there to keep the array 4-byte aligned).
  • Not opposed to implementing this, just have little idea of how to achieve what you're looking for and I do not have a proper setup to test it.

Re: foo_vis_vumeter

Reply #261
CUI/PSS transparency
Several things here to unpack:
  • None of the components mentioned have their source code available. So it is still a mystery what part of the Win32 transparency all of this is referring to.
  • Up to this point, the only way I have been able to achieve proper transparency in the Win32 shell has been using precomputed alpha--see the radio buttons on the context menu.
  • I do not use CUI. First time I've heard of PSS. Not sure either how or even whether this maps to DUI.
  • I do not run any of the script interpreter components either. Any other option is better than using JS ;)
  • I do not know how VUEditor and BinExtractor work. Sorry. My suspicion is that when PNGs are being converted to bitmaps, they do not include the necessary DIB fields. Furthermore, if you look at the bitmap array output by VUEditor in the BIN format, all of the alpha fields are 0x00 so the assumption is that this field is unused (mostly there to keep the array 4-byte aligned).
  • Not opposed to implementing this, just have little idea of how to achieve what you're looking for and I do not have a proper setup to test it.
Thanks for taking the time for a response.

Enabling transparency in the options of the PSS is only needed to be able to paint the background of the buttonbars with a gradient (and/or art).
I do need PSS to be able to provide me with the option to enter a script that among things does background/art painting, create image/text buttons and display panels on top of my painted background/art based on which button is pressed.

All the mentioned components that work have a specific setting in their respective options which explicably enable transparency.
JS3 is a bit different. Here you need to create a JS3 panel as a "toolbar" and then find and disable the line in the chosen sample/code where the background is overwritten/painted which is most of the times found in the callback on_repaint() and just a single line that needs to be disabled.

@oops @Case
Yes, you are right that pretty much all of the working plugins are old with lost sourcecode, but the minibar mod is not old and has the (available) correct code added recently to enable transparency in CUI/PSS.
Maybe Case can help here and explain how he enabled transparency in his Minibar mod?

I don't agree with your remark about JS. It's by far the most elegant method imo to define your own buttons with your own graphical layout/padding and it does not crash like for instance JSplitter/SMP still sometimes do. Also a lot of the samples provided with JS are unmatched in quality after some tweaking.

More in general, pretty much all components I use in my skin are flawed somehow. I try to work around that or find alternatives that do a better job. I cannot code the plugins myself, therefore I'm grateful for what is out there.

Your component looks very good and I know you are working on / have implemented the possibility to save separate configs for more instances. I use 5 instances of VU Meter (any version) and would very much like your component to also handle background/transparency like the JS3 script does.
Of course I also asked in the VU JS3 thread for the things your plugin handles very well but are missing in that plugin.
The end goal for me (and maybe others users) is a single modern VU Meter plugin that does it all and works in CUI/DUI and x86/x64.

Re: foo_vis_vumeter

Reply #262
I don't agree with your remark about JS. It's by far the most elegant method imo to define your own buttons with your own graphical layout/padding and it does not crash like for instance JSplitter/SMP still sometimes do. Also a lot of the samples provided with JS are unmatched in quality after some tweaking.
I intended JS to mean "JavaScript" not JSP3 (JScript Panel 3). Been burned by JS and TS enough to avoid using either if I can help it.

Re: foo_vis_vumeter

Reply #263
A mod of the "Technics2" by "kutuzof".

Changes the range from "-20 dB +6 dB" to "-60dB -6dB"  Adds green and yellow.  Uses 6 dB spacing instead of 10 dB then 5 dB then 3 dB.  I wanted to do 5 dB spacing but couldn't get it to work correctly using DRON's VU Editor.

Re: foo_vis_vumeter

Reply #264
May I suggest a "one page" tuning screen enhancement...
+1
Done in 0.8.2. Accessible through the context menu Configure option. Notes:
  • Only 1 dialog can be open at a time.
  • The dialog box is modeless.
  • Changes are reflected in real time.
  • Undo any changes back to the state when the dialog box was opened by clicking "Cancel" or "X" (in the system menu bar). Either of these will also close the dialog box.
  • Clicking "OK" will keep the changes and close the dialog box.
  • Clicking "Reset" will revert all options to their default values (exactly equivalent to the reset option in the context menu).
  • All combos, buttons, sliders and edit boxes have tooltips and are tab stops.
  • Sliders can be controlled using the mouse by dragging the slider or by the mouse wheel. Also using the keyboard's arrow keys, home/pgup/pgdn/end.
  • The edit box value and the tune value itself is updated only when the dragging ends.
  • Editing the tune value with the keyboard directly might be difficult due to the real-time validation. Sorry.
  • The dialog box is themed based on light/dark mode.
  • The panel selection will only affect the instance from where the dialog was launch, whereas all of the other tuning parameters affect every instance.


Re: foo_vis_vumeter

Reply #266
Done in 0.8.2. Accessible through the context menu Configure option.

Very nice!! Thank you very much!! @oops
@oops : INCREDIBLE job, thank you so much!!

Oops you do great technical description as well!  FWIW I made a copy of the latest foo_vis_vumeter.md "raw" documentation file from the GitHub site, containing the latest settings/tuning guide.  I added the extra 0.8.2 info from oop's above post in the appropriate area.  As a markdown format file this is best viewed in Notepad++ for access to links, text color, correct layout, although it can be opened in regular Notepad as a txt file as well.  Both are attached below.

Re: foo_vis_vumeter

Reply #267
@oops

Thanks for the excellent update/addition.

I'm using CUI/PSS. Some remarks/findings:

1) When starting fooBar a very small rendered bitmap of the selected vumeter skin will be stretched in the available vumeter panel, which looks ugly. In a couple of seconds this ugly render will be replaced with the correct scaled image of the current vumeter.
When I activate "hide panel on startup" in the PSS settings the issue is still present, but will "fix" itself a lot quicker.
Note: This is the first plugin for which I have to activate this PSS setting.

2) Double clicking the vumeter skin or selecting fullscreen in the context menu will crash foobar. As a side note ... this also happens with foo_vis_spectrum_analyzer 0.8.0.0-beta2. So maybe DX12/CUI related. Not an issue for me since I'll never run VUmeter fullscreen.

3) A suggestion. Can the context menu Options - Disable Tuning be moved to an extra option under Tuning (preferably the first option).
In my opinion the whole Tuning section can then be moved to context menu Configure as a Tuning dropdown menu next to the dropdown for Panel:.
Also the open Configure window has "Tuning" as window caption.

4) Context Decay seems obsolete too, since it is present in context menu Configure. Also the readme is not entirely correct imo. It states Slow: 0.0075, Normal: 0.01, Fast: 0.015. All values are in fact 100x greater.

5) I have a small issue with the selection colour of the slider in the Configure screen. The slidervalue has a nice blue color (78-119-138) but upon selection it changes to blackish (23-23-23). I cannot find the latter colour anywhere in Preferences. How can I change this colour?

6) Regarding pseudotransparency, when a JS3 panels opens you can see very briefly the theme background (greyblack) before the original underlying bitmap is redisplayed. I am pretty sure that JS3 "copies" the underlying bitmap from the panel it lives in before overwriting the theme background. Maybe this gives you an idea how to implement pseudotransparency.

Re: foo_vis_vumeter

Reply #268
Oops you do great technical description as well!  FWIW I made a copy of the latest foo_vis_vumeter.md "raw" documentation file from the GitHub site, containing the latest settings/tuning guide.
I updated the documentation as well.

2) Double clicking the vumeter skin or selecting fullscreen in the context menu will crash foobar. As a side note ... this also happens with foo_vis_spectrum_analyzer 0.8.0.0-beta2. So maybe DX12/CUI related. Not an issue for me since I'll never run VUmeter fullscreen.
In CUI, the fullscreen is much simpler than DUI because the window is not swapped. Just remove the frame, fill the screen and paint it in front of all the others. Here is how it works, I believe spectrum analyzer does it similarly.

3) A suggestion. Can the context menu Options - Disable Tuning be moved to an extra option under Tuning (preferably the first option).
In my opinion the whole Tuning section can then be moved to context menu Configure as a Tuning dropdown menu next to the dropdown for Panel:.
Also the open Configure window has "Tuning" as window caption.
Prefer it the way it is because it is easier to disable the entire popup when there are no enabled options in that menu tree. What do you want the caption to say? The "Configure" option was "Preferences" and the "Tuning" text read "Dialog" a few minutes before I ran the release build script. All I tried to do is summarize their functionality in a single word. Not sure if they are that important with the manual and the tool tips backing them up.

4) Context Decay seems obsolete too, since it is present in context menu Configure. Also the readme is not entirely correct imo. It states Slow: 0.0075, Normal: 0.01, Fast: 0.015. All values are in fact 100x greater.
Read the manual more carefully.

5) I have a small issue with the selection colour of the slider in the Configure screen. The slidervalue has a nice blue color (78-119-138) but upon selection it changes to blackish (23-23-23). I cannot find the latter colour anywhere in Preferences. How can I change this colour?
I do not think you can. I don't even know what preferences you'd be looking at. It comes from the system. Guessing it would require figuring out how to use the NM_CUSTOMDRAW notification for the track bar control directly in the code.

Re: foo_vis_vumeter

Reply #269
Oops, thanks for 0.8.2. With regards to the new Configure (Tuning) options, I was curious what "Panel" is for. To me it seems to imply that you can have independent settings for each VU Meter, but that doesn't seem to be the case.

Re: foo_vis_vumeter

Reply #270
@oops

5) I have a small issue with the selection colour of the slider in the Configure screen. The slidervalue has a nice blue color (78-119-138) but upon selection it changes to blackish (23-23-23). I cannot find the latter colour anywhere in Preferences. How can I change this colour?


Just thought I'd mention that I also have this issue. I know it's minor but hopefully something can be done about it in the future.

Re: foo_vis_vumeter

Reply #271
Some minor feedback about the "Configure" screen.
  • mouse wheel behavior is opposite of tuning menu (tuning menu -- roll up is increase)
  • mouse wheel step differs from tuning menu (eg. gain -- tuning menu, one wheel stop is 1dB)

I prefer the tuning menu behavior :)

Re: foo_vis_vumeter

Reply #272
Some minor feedback about the "Configure" screen.
  • mouse wheel behavior is opposite of tuning menu (tuning menu -- roll up is increase)
  • mouse wheel step differs from tuning menu (eg. gain -- tuning menu, one wheel stop is 1dB)

I prefer the tuning menu behavior :)
Oh man PLEASE don't diss the new "Configure" screen!  What could be more intuitive than a visible pointer moved by the mouse pointer, right + and left -, with a changing real-time value visible the whole time.  I am not a fan of "mouse wheeling" for tuning.

I am curious though also on the point raised by Majestyk, if that could be clarified.

Re: foo_vis_vumeter

Reply #273
No, no, don’t get me wrong.
Not dissing … just suggesting tweaks … i am very very glad to have the configure panel.

Re: foo_vis_vumeter

Reply #274
2) Double clicking the vumeter skin or selecting fullscreen in the context menu will crash foobar. As a side note ... this also happens with foo_vis_spectrum_analyzer 0.8.0.0-beta2. So maybe DX12/CUI related. Not an issue for me since I'll never run VUmeter fullscreen.
In CUI, the fullscreen is much simpler than DUI because the window is not swapped. Just remove the frame, fill the screen and paint it in front of all the others. Here is how it works, I believe spectrum analyzer does it similarly.
I do not understand, I cannot remove a frame, fill the screen and paint it in front. I only control and can paint the window/panel I designate for VUmeter to live in. If Fullscreen is selected in this VUmeter or the VUmeter is doubleclicked, I have no way of knowing/acting upon this action. CUI/PSS responds with an instant foobar crash.

5) I have a small issue with the selection colour of the slider in the Configure screen. The slidervalue has a nice blue color (78-119-138) but upon selection it changes to blackish (23-23-23). I cannot find the latter colour anywhere in Preferences. How can I change this colour?
I do not think you can. I don't even know what preferences you'd be looking at. It comes from the system. Guessing it would require figuring out how to use the NM_CUSTOMDRAW notification for the track bar control directly in the code.
Preferences as in main fooBar Preferences. There is no mention of colour 23-23-23 anywhere.
Even if I switch to Light Mode (Preferences - Display - Columns UI - Colours and fonts - Mode) the colour used for unselected slider and selected slider stays the same.  Everything else is correctly changed to Light mode.