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 267931 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: foo_vis_vumeter

Reply #500
@oops : just wanted to let you know I took the plunge to version 0.10.0 and I didn't turn into transparent columns, haha..  Thanks for making all that jazz on/off optional.. all running nice and smooth, thank you for your work!

One question:  in the setting Options->Ignore Defaults, what are the "defaults" it is referring to?  Is that the bin.ini file inside some of the hiccup-authored skins?  In .9.1 this option was always greyed out, now I see it is active.

Re: foo_vis_vumeter

Reply #501
@oops : just wanted to let you know I took the plunge to version 0.10.0 and I didn't turn into transparent columns, haha..  Thanks for making all that jazz on/off optional.. all running nice and smooth, thank you for your work!

One question: in the setting Options->Ignore Defaults, what are the "defaults" it is referring to?  Is that the bin.ini file inside some of the hiccup-authored skins?  In .9.1 this option was always greyed out, now I see it is active.
My pleasure. There are 3 sources for defaults:
  • INI file in RAR archive, that you mention from hiccup's skins. The supported parameters are fall, rise, singleMeter, peakLED, isVertical, curveAdj, and bgColour.
  • Loose INI files that share their name with a BIN file, same as above otherwise.
  • The scheme I made up to encode the layout for the screensaver mode in between the curly braces ({}) in the file name.

The "Ignore Defaults" option turns off loading the INI file preferences and implementing the {} preferences. Point 3 is why you see it on enabled all the time instead of just when you load a skin with the INI file. In addition, with it off, the replacement of this regexp pattern is disabled anywhere the filename is displayed: "[[:space:]]*\\{[0-4]}[[:space:]]*"

Re: foo_vis_vumeter

Reply #502
For the panels directory in Prefs/Advanced how do I enter a path for portable use? For example, ESLyrics path would be %fb2k_profile_path%DarkOne\Lyrics. But VU Meter doesn't accept this kind of path.

Re: foo_vis_vumeter

Reply #503
For the panels directory in Prefs/Advanced how do I enter a path for portable use? For example, ESLyrics path would be %fb2k_profile_path%DarkOne\Lyrics. But VU Meter doesn't accept this kind of path.
Try adding a backslash "\" as the last character


Re: foo_vis_vumeter

Reply #505
For the panels directory in Prefs/Advanced how do I enter a path for portable use? For example, ESLyrics path would be %fb2k_profile_path%DarkOne\Lyrics. But VU Meter doesn't accept this kind of path.
Try adding a backslash "\" as the last character

Thanks, but that doesn't work.
I agree foo_vis_vumeter should preferably accept a path relative to %fb2k_profile_path%.

I create a junction for the couple of components that don't accept %fb2k_profile_path%.
Eg. mklink /j %APPDATA%\foobar2000-v2

Works great for different user names and also for portable installations.

Re: foo_vis_vumeter

Reply #506
Setting a custom path through advanced preferences definitely works for an absolute, local file path. It is not elegantly implemented since I don't really have a need for it and advanced preferences are kind of weird. The backslash at the end is implied and the component adds it automatically for you if it is not there.

I create a junction for the couple of components that don't accept %fb2k_profile_path%.
Eg. mklink /j %APPDATA%\foobar2000-v2
For my own purposes I prefer to use symbolic links. For example, to share the VU meter path between x86 and x64:
foobar2000_x86\profile> New-Item -Type SymbolicLink -Path vumeter -Target ..\..\foobar2000_x64\profile\vumeter\

For the panels directory in Prefs/Advanced how do I enter a path for portable use? For example, ESLyrics path would be %fb2k_profile_path%DarkOne\Lyrics. But VU Meter doesn't accept this kind of path.
Sure, done. Threw in environment variable expansion too (giving you all the weapons, please use responsibly :). For next release.

Re: foo_vis_vumeter

Reply #507
Setting a custom path through advanced preferences definitely works for an absolute, local file path. It is not elegantly implemented since I don't really have a need for it and advanced preferences are kind of weird. The backslash at the end is implied and the component adds it automatically for you if it is not there.

I create a junction for the couple of components that don't accept %fb2k_profile_path%.
Eg. mklink /j %APPDATA%\foobar2000-v2
For my own purposes I prefer to use symbolic links. For example, to share the VU meter path between x86 and x64:
foobar2000_x86\profile> New-Item -Type SymbolicLink -Path vumeter -Target ..\..\foobar2000_x64\profile\vumeter\

For the panels directory in Prefs/Advanced how do I enter a path for portable use? For example, ESLyrics path would be %fb2k_profile_path%DarkOne\Lyrics. But VU Meter doesn't accept this kind of path.
Sure, done. Threw in environment variable expansion too (giving you all the weapons, please use responsibly :). For next release.

That's great, thanks!

Re: foo_vis_vumeter

Reply #508
@oops

I finally found the time to fully implement the ideas I had about using your foo_vis_vumeter in transparent mode in combination with blurring the background with the cover of the playing track/station.

I created a couple of VU skins with your code that are transparent all around and have the inner part with 50% alpha (and 20% shaded) and thus take full advantage of the blurred background. I attached the BIN's to this post.
Results look stunning imo.

So once again thank you for the staggering amount of work you put in to get transparency working (from PSS and JSplitter).

I'd like to remind you of the question I have about disabling the minimum sizecheck of foo_vis_vumeter, because I'd like to use foo_vis_vumeter without displaying parts outside the coordinates I gave in the main PSS instead of wrapping it in a child PSS.

Thx again.

Re: foo_vis_vumeter

Reply #509
@oops

I finally found the time to fully implement the ideas I had about using your foo_vis_vumeter in transparent mode in combination with blurring the background with the cover of the playing track/station.

I created a couple of VU skins with your code that are transparent all around and have the inner part with 50% alpha (and 20% shaded) and thus take full advantage of the blurred background. I attached the BIN's to this post.
Results look stunning imo.

So once again thank you for the staggering amount of work you put in to get transparency working (from PSS and JSplitter).

I'd like to remind you of the question I have about disabling the minimum sizecheck of foo_vis_vumeter, because I'd like to use foo_vis_vumeter without displaying parts outside the coordinates I gave in the main PSS instead of wrapping it in a child PSS.

Thx again.

Looks good! What js or component are you using for the top left panel? I'm pretty sure I've seen it before but I can't find it.
(Unless you wrote it yourself for personal use...then disregard)

Re: foo_vis_vumeter

Reply #510
UTD + Alpha VU

Looks good! What js or component are you using for the top left panel? I'm pretty sure I've seen it before but I can't find it.
(Unless you wrote it yourself for personal use...then disregard)
Short question, long answer.

I started working on JS3 samples last year for personal use, but saw a lot of people where struggling to make adjustments, so I published some of the stuff I made for personal use. People were asking for extra buttons after that initial post, so I added some.
After Case published foo_outinfo I had a reason to start using (some of) the script myself and customized it a bit more. It quickly became one of the cornerstones in my skin as a result.

This sums it up:
https://hydrogenaud.io/index.php/topic,125548.msg1060233.html#msg1060233

I just posted a new version with all features over here:
https://hydrogenaud.io/index.php/topic,127425.msg1060262.html#msg1060262

Let me know, what you think about it.

Re: foo_vis_vumeter

Reply #511
oops, I've noticed when the transparency is turned on the CPU usage really skyrockets. My DarkOne tweak theme almost always sits at 1 to 1.5 CPU usage, (using i5-12400 / 32gb of ram) but when I turn on the transparency it shoots up to 10 or 11.

Also the control panel volume knob doesn't "turn" as fluently when the transparency is on, so it's definitely pushing things to the limit. On another one of my older (and much slower) PC's it's even worse. The VU Meter needles slow down when the transparency is on.

Is there anything that can be done about this?

Re: foo_vis_vumeter

Reply #512
Very long shot feature request:

If >2 channel audio data is available, to combine the L&R channels as follows:
L = FL + a*Center + b*Sub
R = FR + a*Center + b*Sub

where a,b are user configurable ratios.

Re: foo_vis_vumeter

Reply #513
Very long shot feature request:

If >2 channel audio data is available, to combine the L&R channels as follows:
L = FL + a*Center + b*Sub
R = FR + a*Center + b*Sub

where a,b are user configurable ratios.
Current multi-channel mixing is as follows:
Code: [Select]
uint32_t left_channels = channel_front_left | channel_back_left | channel_front_center_left | channel_side_left | channel_top_front_left | channel_top_back_left;
uint32_t right_channels = channel_front_right | channel_back_right | channel_front_center_right | channel_side_right | channel_top_front_right | channel_top_back_right;
uint32_t center_channels = channel_front_center | channel_lfe | channel_back_center | channel_top_center | channel_top_front_center | channel_top_back_center;
std::array<int8_t, defined_channel_count> mix_factors{0, 0, -3, -10, -3, -3, -6, -6, -6, -3, -3, -6, -3, -6, -3, -3, -6, -3}; // front_left, front_right, front_center, lfe, back_left, back_right, front_center_left, front_center_right, back_center, side_left, side_right, top_center, front_left, front_center, front_right, back_left, back_center, back_right
Left panel gets left and center channels. Right panel right gets right and center channels. The mix factors attenuate center channels by half, generally, since they are mixed into both channels. There are too many channels (18) to intuitively allow for a specific mix factor for each. In case it wasn't obvious, the mix factors are in decibels.

Re: foo_vis_vumeter

Reply #514
New release: 0.10.2.

Main changes:
  • Catch DirectX adapter creation runtime errors to stop UI element window creation (instead of exiting foobar2000 with a "crash")
  • Add "%fb2k_profile_path%" and environment variable expansion to advanced panels directory option
  • Update foobar2000 SDK to 2025-03-07


 

Re: foo_vis_vumeter

Reply #515
Very long shot feature request:

If >2 channel audio data is available, to combine the L&R channels as follows:
L = FL + a*Center + b*Sub
R = FR + a*Center + b*Sub

where a,b are user configurable ratios.
Current multi-channel mixing is as follows:
Code: [Select]
uint32_t left_channels = channel_front_left | channel_back_left | channel_front_center_left | channel_side_left | channel_top_front_left | channel_top_back_left;
uint32_t right_channels = channel_front_right | channel_back_right | channel_front_center_right | channel_side_right | channel_top_front_right | channel_top_back_right;
uint32_t center_channels = channel_front_center | channel_lfe | channel_back_center | channel_top_center | channel_top_front_center | channel_top_back_center;
std::array<int8_t, defined_channel_count> mix_factors{0, 0, -3, -10, -3, -3, -6, -6, -6, -3, -3, -6, -3, -6, -3, -3, -6, -3}; // front_left, front_right, front_center, lfe, back_left, back_right, front_center_left, front_center_right, back_center, side_left, side_right, top_center, front_left, front_center, front_right, back_left, back_center, back_right
Left panel gets left and center channels. Right panel right gets right and center channels. The mix factors attenuate center channels by half, generally, since they are mixed into both channels. There are too many channels (18) to intuitively allow for a specific mix factor for each. In case it wasn't obvious, the mix factors are in decibels.

Ah ... i see.
Any chance to expose mix_factors for user adjustments?
Either in config_panel or foobar_advanced_preferences?
Thank you in advance for your consideration.

Re: foo_vis_vumeter

Reply #516
@oops

I noticed another small bug (?).

The needle is displayed before Lights are applied. As a result part of the needle disappears behind Lights.
Can you change this?

Re: foo_vis_vumeter

Reply #517
The needle is displayed before lights are applied. As a result, part of the needle disappears behind Lights.
Can you change this?
Can you be more specific? What type of skin is this? AIMP-style or BIN-style. If it's BIN-style, I think I can swap the drawing order.

Re: foo_vis_vumeter

Reply #518
The needle is displayed before lights are applied. As a result, part of the needle disappears behind Lights.
Can you change this?
Can you be more specific? What type of skin is this? AIMP-style or BIN-style. If it's BIN-style, I think I can swap the drawing order.
Sorry.

BIN.

Re: foo_vis_vumeter

Reply #519
oops... In the next update is it possible to eliminate the vumeter directory in profile folder, when a Panels Directory is used? It gets spawned even though it's not being used.

Re: foo_vis_vumeter

Reply #520
Current multi-channel mixing is as follows:
Code: [Select]
uint32_t left_channels = channel_front_left | channel_back_left | channel_front_center_left | channel_side_left | channel_top_front_left | channel_top_back_left;
uint32_t right_channels = channel_front_right | channel_back_right | channel_front_center_right | channel_side_right | channel_top_front_right | channel_top_back_right;
uint32_t center_channels = channel_front_center | channel_lfe | channel_back_center | channel_top_center | channel_top_front_center | channel_top_back_center;
std::array<int8_t, defined_channel_count> mix_factors{0, 0, -3, -10, -3, -3, -6, -6, -6, -3, -3, -6, -3, -6, -3, -3, -6, -3}; // front_left, front_right, front_center, lfe, back_left, back_right, front_center_left, front_center_right, back_center, side_left, side_right, top_center, front_left, front_center, front_right, back_left, back_center, back_right
Left panel gets left and center channels. Right panel right gets right and center channels. The mix factors attenuate center channels by half, generally, since they are mixed into both channels. There are too many channels (18) to intuitively allow for a specific mix factor for each. In case it wasn't obvious, the mix factors are in decibels.

Ah ... i see.
Any chance to expose mix_factors for user adjustments?
Either in config_panel or foobar_advanced_preferences?
Thank you in advance for your consideration.

Hello @oops

If exposing mix_factors for user adjustment is too much work, may I request a special preset?

If (some_flag_in_advanced_preferences)  load
   mix_factors{0, 0, 0, -10, -3, -3, 0, 0, -6, -3, -3, -6, -3, -6, -3, -3, -6, -3};
else load
   default mix_factors;

I hope this is possible. Thank you very much in advance.

On a related topic, may I know why the FC isn't downmixed into the left_channel or right_channel for VU display, instead FCL and FCR is used instead? 
(I would guess that FCL and FCR would be silence in the case of 5.1 or 7.1)

I saw this image in another thread in this forum ... FCL and FCR are not used for downmixing to stereo ... instead FC is used for downmixing to stereo.


Re: foo_vis_vumeter

Reply #521
Updated version: 0.10.5
Note: this version has too many ambitious changes which necessitates a more cautious rollout. Consequently, it is not marked as the current release and that means you'll need to manually download/install to use.

Fixes from forum reports:
  • Fix multi-monitor behavior during fullscreen
  • Draw LEDs before the needle in BIN-style panels

Features from forum requests:
  • Do not regenerate panels directory when using a custom panel path
  • Add mixer dialog

Plus, various other behind-the-scenes improvements.

On a related topic, may I know why the FC isn't downmixed into the left_channel or right_channel for VU display, instead FCL and FCR is used instead?
How did you figure that? All "center channels" are mixed in equally into right and left. The reason the center channel levels are (generally) halved in the default levels _is_ because of they are "downmixed" into the L and R stereo channels. The C channel would overwhelm the traditional L and R ones if left at 0 dB (which is why I made the default -3 dB; the ideal assuming equidistant channel separation from and constructive interference at the listening position). This mixing is very clearly visible when using test tones.
According to foobar2000 SDK, 5.1 is: FL, FR, FC, BL, BR, LFE. I had always thought SL and SR were for 5.1 with BL and BR completing the 7.1 configuration. But in this case, following the SDK. If the channels are not included in the PCM stream or they are silent, there is no impact.


Re: foo_vis_vumeter

Reply #523
How did you figure that? All "center channels" are mixed in equally into right and left. The reason the center channel levels are (generally) halved in the default levels _is_ because of they are "downmixed" into the L and R stereo channels. The C channel would overwhelm the traditional L and R ones if left at 0 dB (which is why I made the default -3 dB; the ideal assuming equidistant channel separation from and constructive interference at the listening position). This mixing is very clearly visible when using test tones.
According to foobar2000 SDK, 5.1 is: FL, FR, FC, BL, BR, LFE. I had always thought SL and SR were for 5.1 with BL and BR completing the 7.1 configuration. But in this case, following the SDK. If the channels are not included in the PCM stream or they are silent, there is no impact.

From this:

Code: [Select]
uint32_t left_channels = channel_front_left | channel_back_left | channel_front_center_left | channel_side_left | channel_top_front_left | channel_top_back_left;
uint32_t right_channels = channel_front_right | channel_back_right | channel_front_center_right | channel_side_right | channel_top_front_right | channel_top_back_right;
uint32_t center_channels = channel_front_center | channel_lfe | channel_back_center | channel_top_center | channel_top_front_center | channel_top_back_center;

I didn't see front_center in the left_channels and right_channels, that is why I asked.
Now that you've clarified, it is my misunderstanding. My apologies.

VU_L = left_channels + center_channels
VU_R = right_channels + center_channels

Let me re-check why my 2.1 VU is showing lower value compared with my 2.0 VU. Hmm....

Re: foo_vis_vumeter

Reply #524
I didn't see front_center in the left_channels and right_channels, that is why I asked.
Now that you've clarified, it is my misunderstanding. My apologies.

VU_L = left_channels + center_channels
VU_R = right_channels + center_channels
You got it exactly right. No need to apologize! It's not easy to achieve technical clarity in the forums--we all have different backgrounds, expertise, native languages...

Released another update (0.10.10), just changing the way the DirectX toolkit is built. The toolkit release from a couple of days ago removed the ARM64 native build from the desktop NuGet package. No other feature differences.