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 22618 times) previous topic - next topic
0 Members and 5 Guests are viewing this topic.

Re: foo_vis_vumeter

Reply #75
"DejaVU Compact Calibrated Bright"
I like it better than "DejaVU Compact Calibrated".
The way the needle moves is really cool.
SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD620S, SENNHEISER HD 490 Pro Plus, beyerdynamic DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH1000XM5 (made a Upgrade/Balanced Cable by myself)

Re: foo_vis_vumeter

Reply #76
Spoiler (click to show/hide)
i just asked @oops to have a feature (beat detection) for VU meter (as seen in above post).

Thanks, but I'm still not clear on what you want to visualize or how the needles display BPM. Loudness is logarithmic, BPM is linear.

Hi @oops,
I think of a flash light following a BPM signal, in stead of peak level.
But never mind if it costs your times.
Regards
@ilovefb2k  

Re: foo_vis_vumeter

Reply #77
Updated version with mostly complete AIMP analog VU meter skin support: 0.2.0

This version went through a large refactor to merge everything but the initial loading and device drawing functionality between the foobar2000 BIN files and the AIMP ZIP files. So, if you decide to try it and see a functionality regression let me know. This is not "current" so manual download and install is necessary.

Quick notes:
  • Unfortunately, the needle behavior for the AIMP skins is bad and inaccurate; especially around 0dB. That is likely the next thing I'll work on improving.
  • Some skins are transparent at the edges (mainly at the bottom) which makes the needle show through--I've increased the "glass" size by 4 pixels to cover it on some skins. Removing this "edge trim" might not look the best or some elements might overflow. Let me know if you run a skin where it looks bad.
  • I added SHIFT and CTRL modifiers for more granular control of the preamplifier gain setting. Use them alongside the mouse wheel to step in hundredths or tenths of a dB, respectively. None-modified mouse wheel steps in unit increments.
  • Lasty, if you use a "vertical" stack AIMP skin, there is only 1 layout option: LEFT+RIGHT H. No other options make sense so they are not selectable. Vertical stack means that the left or right channel needle origin in the Y-axis is negative and the opposite channel's is positive.

Thank you @oops a lot for your valued contribution.
Best regards
@ilovefb2k

Re: foo_vis_vumeter

Reply #78
Wouldn't it be so that if for example the VU meter image is 600 pix wide, using 600 angles would suffice?
Is there a benefit in using more angles than the background image is wide?
There likely isn't that much. There is some interpolation going on, the calculations happen with fractional pixels so there could be some "difference" depending on the interpolation method. Looking at the decompiled version of VUEditor, the maximum image size appears to be 4096 pixels and the maximum frame count is 1024. So, the author is using a 4:1 ratio, much less than 1:1. And the needle isn't always vertical either. And that still appears to be over-spec'd. The VUEditor author has been very clever--when reverse engineering the BIN file format I noticed several of the needle delta array pointers using the same offset. That means that the tool uses the same needle "angle" for several frames if there is no change in the pixel data between adjacent frames. And you can see it even when the frame count is 200 since most panels are not over 1000px wide!
Thanks for this detailed 'look behind the screens' explanation. It's very interesting.
The guy that came up with the original idea and created both the tool and the plugin must have been beyond clever.

If I read you correctly: it would be safe to always have the needle angles setting at 1024 and don't worry if that may be overkill for smaller images?
Meaning that (with the capabilities of modern-day hardware, now some 10 yrs later) it doesn't pose any noticeable penalty on CPU load or performance?

Re: foo_vis_vumeter

Reply #79
"DejaVU Compact Calibrated Bright"
I like it better than "DejaVU Compact Calibrated".
The way the needle moves is really cool.
Thanks, Air KEN!  BTW I did some additional changes to the body to add definition:


If you'd rather use this one, download the attached zip and overwrite the existing BIN files.

You'll notice that when used with the old 32-bit foo_vis_vumeter.dll (if you've got a second 32-bit portable Foobar like I do!), the LEDs follow the Peaks while the needle uses an RMS averaging.  With the new 64-bit foo_vis_vumeter, both the LEDs and the needle seem to always follow together.  If that is because of the new DLL instead of how the BIN was made, I recommend to oops that he allow the old behavior of "untied LEDs" again, if possible.

Re: foo_vis_vumeter

Reply #80
@sveakul
Thanks.
But I like the previous background color, it was matte and looked good. Sorry.
-------
I've been looking for an AIMP Analog VU Meter skin that works with the current version (v2.0 beta) and I don't have enough time.
SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD620S, SENNHEISER HD 490 Pro Plus, beyerdynamic DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH1000XM5 (made a Upgrade/Balanced Cable by myself)

Re: foo_vis_vumeter

Reply #81
I've been looking for an AIMP Analog VU Meter skin that works with the current version (v2.0 beta) and I don't have enough time.
You could try these both made by hiccup for the MusicBee AIMP Analog-compliant meter; the first is the AIMP Analog version of the DejaVU BIN one, the second one a cool blue bar meter with a sliding white indicator.

Re: foo_vis_vumeter

Reply #82
AL-65 Calibrated.zip:
Cute and calm

DejaVU Compact LED Calibrated Elemental-mod.zip
This needle movement is also cool.

How do you know so much? hahaha...
----
AIMP Analog VU Meter Skin (.zip)
https://www.aimp.ru/forum/index.php?PHPSESSID=blbv0pcffu7g3skb6ra6s9v38b&topic=52865.msg324215#msg324215

Pifco-All-in-One.zip
Brocker Labs.zip
JVC RC550.zip
StarGazer.zip

These are my favorites.

Pifco-All-in-One


I want to organize my "vumeter" folder.
SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD620S, SENNHEISER HD 490 Pro Plus, beyerdynamic DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH1000XM5 (made a Upgrade/Balanced Cable by myself)

Re: foo_vis_vumeter

Reply #83
AL-65 Calibrated.zip:
Cute and calm

DejaVU Compact LED Calibrated Elemental-mod.zip
This needle movement is also cool.

How do you know so much? hahaha...
It's not me I just know where the people who DO, post them, haha..  the MusicBee forum just went through an extended period of discussion with the development of its VUmeter Plugin that allows use of both AIMP Analog and AIMP "LVU" meters.  Its developer BoringName and main contributor hiccup did some extensive modifications to the *.ini files to allow more precise and accurate meter movement of the dowloaded as-is meters within the plugin's interface and some skin work also.  Some examples are downloadable in the thread here: https://getmusicbee.com/forum/index.php?topic=41696.0 .  The MusicBee plugin is awaiting its own BIN-compatibility soon.

Re: foo_vis_vumeter

Reply #84
It's not me I just know where the people who DO, post them, haha..  the MusicBee forum just went through an extended period of discussion with the development of its VUmeter Plugin that allows use of both AIMP Analog and AIMP "LVU" meters.  Its developer BoringName and main contributor hiccup did some extensive modifications to the *.ini files to allow more precise and accurate meter movement of the dowloaded as-is meters within the plugin's interface and some skin work also.  Some examples are downloadable in the thread here: https://getmusicbee.com/forum/index.php?topic=41696.0 .  The MusicBee plugin is awaiting its own BIN-compatibility soon.
I've been in messaging back-and-forth with BoringName, helping get their BIN version working and exchanging other ideas. I've also been using the skins from that thread to test out my own implementation. BoringName was kind enough to share some of the parameter constants that plugin is using. When I tried them, the seemed to be too heavy-handed and deaden the needle movement in the visualization.
My findings are as follows:
  • The default sample window in the original VU meter component is 200ms. That is the backlog (i.e., sample_window) it uses. This number has by far the most influence on the needle movement. This is because after summing all of the samples and averaging over the window size, it tends to prevent very abrupt movements. In other words, the larger the window size the less needle movement from frame-to-frame. From playing with the original VU meter, this tends to hold true.
  • I added rise and decay factor multipliers to further control these properties given that the sample window can be made very small, but they should only be used to fine tune. Other than what happens when the music stops (due to how foobar2000 provides audio data), the needle movement properties can be controlled solely by the sample window size.
  • One feature I added, is that when paused, the needle stops in place but stopping allows it to decay to the resting position. This behavior is different from the original component.
  • The rise and fall constant defaults come directly from the transfer function of the SPICE netlist simulation of a real live McIntosh VU meter that I own. For those that care, the circuit is just doing some basic integration/filter and then a buffer that drives the appropriate current level for the needle movement. And this is why I added the LKFS calculation as it is the closest to this functionality. Making the visualization closely match the real meter behavior has been my objective, not replicating the behavior of the original VU meter component.
  • For the AIMP skins, I ignore the Mobility* parameters because I don't know what these exactly represent in the AIMP DLL and I think that they are wrong given that many skins just copy/paste them even though the panels have different graduations; similarly several skins also have the wrong *Level parameters.
  • Once again, the BIN file is so much more elegant as everything is precalculated and all I have to do is select the frame to show without any compositing.

Re: foo_vis_vumeter

Reply #85
MusicBee Analog VU Meter Skin (.zip)
I can also use the Analog VU Meter Skin (.zip). There are only a few.
Whether this works correctly or not.

AcuVU Chameleon Dark.zip
I liked it

There are many of the same designs, but there are just too many, so I'm going to take my time to find my favorite. Thank you for the information.
SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD620S, SENNHEISER HD 490 Pro Plus, beyerdynamic DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH1000XM5 (made a Upgrade/Balanced Cable by myself)

Re: foo_vis_vumeter

Reply #86
@oops
I want to express my most heartfelt thanks to you, what you are doing has a remarkable meaning!


Re: foo_vis_vumeter

Reply #87
@oops :  still using 0.1.3 (until you release the AIMP-compatible version you feel is working correctly):

There are TWO settings for "Decay", one in the main context menu (Slow/Normal/Fast/More), and the other in the "Tuning" section.

Does one have precedence over the other?  Does the decay value set in the Tuning section actually function as a fine-adjustment to what is set in the main Decay (Slow/Normal/Fast/More)?  Does it permanently alter those values or get reset--if so, when ?

Also: could release a readme or wiki that describes in layman's terms what adjusting the Tuning options up or down (Zero, Jitter, FPS, etc) do to how the meter responds?  Thanks--whenever you have time, I know you have a lot going on right now.

P.S. Thanks for helping BoringName with the MusicBee BINs


Re: foo_vis_vumeter

Reply #89
@sveakul
Thank you, I noticed that well.

Windows 11 Home 23H2
foobar2000 v2.24 preview 2024-10-18 : 32-bit | 64-bit
VU Meter Visualisation 0.3.0-rc (foo_vis_vumeter) 2024-10-21

Skins that are not displayed correctly in my downloaded AIMP Analog Meter Skins (.zip)

AIMP Analog Meter Skins (.zip)
Adwdg-1.zip
Adwdg-2.zip
Adwdg-3.zip
https://www.aimp.ru/forum/index.php?topic=52865.msg324313#msg324313

Adwdg-3.zip



Skin is not displayed correctly.

Ц4202
https://www.aimp.ru/forum/index.php?topic=52865.msg325817#msg325817

The background color will be white.

SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD620S, SENNHEISER HD 490 Pro Plus, beyerdynamic DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH1000XM5 (made a Upgrade/Balanced Cable by myself)

Re: foo_vis_vumeter

Reply #90
I've made some additional changes to support multiple instance windows and the LVU skins. Release 0.3.0 is mainly made up of dirty workarounds due to the special/ugly/inconsistent window lifecycle of the Default UI. Release 0.3.1 is a small UI fix and release 0.3.2 includes the LVU extension. At this point more than the initial feature set is implemented. Release candidate version: 0.3.2

Seeing as how work obligations are ramping up, leaving substantially less time to work on foobar2000 components, requested features which have not been implemented, at least for a while and may never be (at least by me) are:
  • Columns UI support.
  • Multi-channel support.
  • BPM visualization.
  • Windows Script Host or ActiveX support.
  • vkd3d support; the "D3D12CreateDevice" function call fails with -> E_NOINTERFACE No such interface supported.
  • Low-level performance optimizations.

I apologize if you were holding out for any of these. However, I still expect to work on refinements, particularly on the needle accuracy, calculations and movement. Also, will be fixing any incompatibilities with the supported skins, if found. Finally, I'm focusing on adding some documentation.

The only known memory leak is in PFC in the configuration allocation code which is inside the SDK and not owned by me. The configuration data appears not to be cleaned fully when adding or removing instances during layout editing.

Code: [Select]
Detected memory leaks!
Dumping objects ->
..\pfc\alloc.h(8) : {863} normal block at 0x0000020C568DDCD0, 8 bytes long.
 Data: <VUj2    > 56 55 21 32 01 00 00 00
{862} normal block at 0x0000020C540E9100, 48 bytes long.
 Data: <H  _    z    . C> 48 A3 02 5F FD 7F 00 00 7A 8B 8B 0A 90 2E BB 43
Object dump complete.

Last but not least, a crash may occur on program exit. It is not user noticeable and does not trigger the foobar2000 crash reporting. It is due to a use-after-free issue when the component DLL tries to deallocate memory already freed by foobar2000 during layout editing cut/paste--not all windows are sent "WM_DESTROY" correctly and some destructors get called an additional time.

Re: foo_vis_vumeter

Reply #91
Adwdg-1.zip
Adwdg-2.zip
Adwdg-3.zip
Skin is not displayed correctly.

Ц4202
The background color will be white.
For Adwdg*, the display is correct. The overlays that you see in the screenshot are not part of the ZIP. Everything in the ZIP is drawn.

For 4202, the background PNG is not drawn because I didn't know it existed. It seems to only exist in a few select files. Up to now, what I do is sample a couple of pixels at the corner of the image and that becomes the background color. In these non-rectangular skins for AIMP some appear to include a specific background PNG. I'll try to figure out how to composite it in.

Re: foo_vis_vumeter

Reply #92
@pqyt : Thanks for .3.2, just installed it here!  AIMP and LVU meters seem to be working fine overall although I haven't had time to really compare movements.  One thing that struck me right away was the appearance of a background color, which you mentioned you took from some corner pixels, on some of the AIMP skins.  I don't think these are necessarily correct; for example, the stock "classic" and "night" meters which are included by default with AIMP, appear here with a dark yellow background color, but none exists in the AIMP visualization window.  Actually having used AIMP for years I have never noticed a meter carry a background color, so I would suggest you may be being misled.  Anyhow, if you want to continue to allow for/force a possible background color, please also add a setting for "no background color" so it can be toggled off.

The folder storage method for the skin selections works great!

Edit:  Could you please explain what the Level option "Linear" actually measures?  For all meter types it seems to produce only pegged-to-max, unusable readings.

Re: foo_vis_vumeter

Reply #93
A problem found with an AIMP skin; attached is a skin by hiccup should have top/bottom LEDS as below, but these do not show at all when played in foo_vis_vumeter .3.2 (yes the skin resembles the BIN version I posted recently but uses the *.ini file system):
DejaVU Compact LED Calibrated Elemental-mod




Re: foo_vis_vumeter

Reply #94
I've made some additional changes to support multiple instance windows and the LVU skins. Release 0.3.0 is mainly made up of dirty workarounds due to the special/ugly/inconsistent window lifecycle of the Default UI. Release 0.3.1 is a small UI fix and release 0.3.2 includes the LVU extension. At this point more than the initial feature set is implemented. Release candidate version: 0.3.2

Seeing as how work obligations are ramping up, leaving substantially less time to work on foobar2000 components, requested features which have not been implemented, at least for a while and may never be (at least by me) are:
  • Columns UI support.
  • Multi-channel support.
  • BPM visualization.
  • Windows Script Host or ActiveX support.
  • vkd3d support; the "D3D12CreateDevice" function call fails with -> E_NOINTERFACE No such interface supported.
  • Low-level performance optimizations.

I apologize if you were holding out for any of these. However, I still expect to work on refinements, particularly on the needle accuracy, calculations and movement. Also, will be fixing any incompatibilities with the supported skins, if found. Finally, I'm focusing on adding some documentation.

The only known memory leak is in PFC in the configuration allocation code which is inside the SDK and not owned by me. The configuration data appears not to be cleaned fully when adding or removing instances during layout editing.

Code: [Select]
Detected memory leaks!
Dumping objects ->
..\pfc\alloc.h(8) : {863} normal block at 0x0000020C568DDCD0, 8 bytes long.
 Data: <VUj2    > 56 55 21 32 01 00 00 00
{862} normal block at 0x0000020C540E9100, 48 bytes long.
 Data: <H  _    z    . C> 48 A3 02 5F FD 7F 00 00 7A 8B 8B 0A 90 2E BB 43
Object dump complete.

Last but not least, a crash may occur on program exit. It is not user noticeable and does not trigger the foobar2000 crash reporting. It is due to a use-after-free issue when the component DLL tries to deallocate memory already freed by foobar2000 during layout editing cut/paste--not all windows are sent "WM_DESTROY" correctly and some destructors get called an additional time.

Hi @oops,
Thank you for your valued contribution and hard work.
This absolutely takes a lot of your time and energy, and it is very kind of you to react quickly to our comments as well as take note of those wish-list features, including BPM.
Spoiler (click to show/hide)
Once again, thank you a lot and wish you all the best.
@ilovefb2k

Re: foo_vis_vumeter

Reply #95
I apologize if you were holding out for any of these. However, I still expect to work on refinements, particularly on the needle accuracy, calculations and movement. Also, will be fixing any incompatibilities with the supported skins, if found. Finally, I'm focusing on adding some documentation.

Thank you so much for re-developing this component for the 64bit foobar. Truly appreciate it.
Since you won't have much bandwidth for major works, I think it's best to focus on refinement.
Thanks once again for bringing this VU meter to the 64bit foobar world.
:)

Re: foo_vis_vumeter

Reply #96
The ability to change location of the vumeter panel folder via the entry in Foobar's Prefs/Advanced settings works well.  I tried moving the folder to a whole different drive, then changing the panel path setting to e\vumeter\ ; after the first restart of Foobar, no problems.  The plugin will recreate an empty "vumeter" folder in the Foobar profile directory.  Don't forget the last backslash after the new path entry.  Ultimate usefulness?  You decide.  Makes it easier to add/delete skins without drilling into the profile directory each time, but so does just creating a shortcut for the folder.  One advantage is the same folder could be used for those with both a 32-bit and 64-bit copy of Foobar, etc.

Re: foo_vis_vumeter

Reply #97
Reply #89: https://hydrogenaud.io/index.php/topic,126733.msg1052717.html#msg1052717

VU Meter Visualisation 0.3.0-rc (foo_vis_vumeter) 2024-10-21

Ц4202
https://www.aimp.ru/forum/index.php?topic=52865.msg325817#msg325817

The background color will be white.



VU Meter Visualisation 0.4.0-rc (foo_vis_vumeter) 2024-10-24



Thanks.
SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD620S, SENNHEISER HD 490 Pro Plus, beyerdynamic DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH1000XM5 (made a Upgrade/Balanced Cable by myself)

Re: foo_vis_vumeter

Reply #98
As shown above, what I think will be the final release candidate before a full public release is out: 0.4.0
It includes the last batch of features and fixes and barring any major bugs, the code is frozen. The documentation I'll work to publish next week is based on this feature set.

I've fine-tuned the roots of the galvanometer differential equations to get the needle movement looking as real as I could in both rise and decay. Hope you like it, if not, tune to your heart's content.

In case you want to replicate the original foobar2000 VU meter component behavior and look, the closest settings for that are:
  • Mode: Stereo
  • Levels: RMS
  • Decay: Normal (1.00)
  • Zero: 0.00 frames
  • Range: 0.00
  • Rise: 0.20
  • Jitter: 0.00
  • Gain: 0.00 dB (skin-dependent)
  • Window: 200.00 ms
  • FPS: 60.00 fps
  • Corner: 0.00 pixels
  • Downmix Channels: disabled
  • Cubic Interpolation: disabled

Speaking of the background, some AIMP skins include a background. If it doesn't, the component falls back on the edge sampling method to determine the background color. In oddly-shaped skins, this might not be ideal due to the transparent pixels. Instead of guessing or trying to replicate other music players' behavior, my recommendation is to just add a bg.png file with the appropriate size and colors to the ZIP archive. Any solution I bake into the component will likely be wrong for some skin and it's just easier/quicker to modify the skin.

On the topic of the path to the panels folder, an alternative implementation is to use a symbolic link. Here is what you can do in PowerShell to point to a more convenient folder, instead of modifying the Advanced Options:
Code: [Select]
Set-Location -Path "<foobar2000 profile folder>"
Remove-Item -Path "vumeter" -Recurse -Force
New-Item -Type SymbolicLink -Path "vumeter -Target "<full path to more conveniently-located, possibly shared folder>"
Note: adding the folder on initialization if it doesn't exist is there to a) guide new users on where to place the panels and b) prevent crashes on first install.

Finally, I haven't run AIMP in many years. I don't know how the skins look or what is their behavior. What you see in this component is my "artistic" interpretation. Specifically, the LEDs in LVU skins the light is continuous and the position is interpolated in between the skin's "dbs" entries; while in the AIMP analog skins, the LEDs are discrete (i.e., they don't turn on partially).

With that, thanks for reading and sharing your feedback!

 

Re: foo_vis_vumeter

Reply #99
As shown above, what I think will be the final release candidate before a full public release is out: 0.4.0
It includes the last batch of features and fixes and barring any major bugs, the code is frozen. The documentation I'll work to publish next week is based on this feature set.

Finally, I haven't run AIMP in many years. I don't know how the skins look or what is their behavior. What you see in this component is my "artistic" interpretation. Specifically, the LEDs in LVU skins the light is continuous and the position is interpolated in between the skin's "dbs" entries; while in the AIMP analog skins, the LEDs are discrete (i.e., they don't turn on partially).

With that, thanks for reading and sharing your feedback!
Thanks for .4, some preliminary testing:

1.  LKFS level mode seems broke, produces unnaturally low dB values (-20dB) from all plugin types and music.  Previously always read just slightly below RMS,

2.  LEDS on AIMP skins now work correctly

3.  Just a Q on the removal of the "Linear" level option--I had asked previously what that was meant to measure but never got an answer; hate to lose an option without even knowing what it was in the first place!

Edit:  the BINs and the AIMP meters I've had time to test are beautifully accurate with .4.  An ideal way to test is by simultaneously using one of the new large, scaled horizontal JSP3 VU bar meters (like the Sample from JSP3 3.79+) in a second long panel and with upper dB level extended to 10db to make room for Peak movements.  The varying Peak level from the sample is always shown by a line at end of and at the same time as the RMS bars.