Author Topic: VUMeter Plugin  (Read 50517 times)

BoringName

  • Sr. Member
  • ****
  • Posts: 916
Threads been busy.... I haven't read everything. Got a bit on today so I will go through it all later.

Once Phred listed a skin with an issue that I could check, I can see that I have buggered something up when "linear" is unchecked. Well, buggered up in the fact I didn't update the formula since changing to the Musicbee api to get the peak levels. I'll leave it intact and fix it for the next version.

I'm still not sold on the importance of it but I guess it is a quick way to make some meters look better (when it's the correct formula) rather than messing around with DB adjustment.

If everyone who created skins was as thorough as Hiccup, we wouldn't have this problem as linear would work for all of them!

Does that crash you listed occur only in safe mode? Safe mode might not let it load required DLL's, not sure.

phred

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 10266
Does that crash you listed occur only in safe mode? Safe mode might not let it load required DLL's, not sure.
Yes, the crash only happened in Safe Mode, so I wouldn't worry too much about it. Especially since your explanation about the DLLs makes sense.

I believe you said you were building, or rebuilding, or demolishing your garage. Go finish that and then come back and fix things here. Now that we know that it seems like an easy fix, it can wait.

Thanks again for breathing life into this seven year old pipe dream.
Download the latest MusicBee v3.6 patch from here.
Unzip into your MusicBee directory and overwrite existing files.

----------
The FAQ
The Wiki
Custom Forum Search
Posting screenshots is here

sveakul

  • Hero Member
  • *****
  • Posts: 3262
I believe you said you were building, or rebuilding, or demolishing your garage. Go finish that and then come back and fix things here. Now that we know that it seems like an easy fix, it can wait.
Let the poor guy finish the LVU meters first while he's on a roll, the garage will still be there  ;D   As phred said, thanks for finally being the person who made all this happen.

BoringName

  • Sr. Member
  • ****
  • Posts: 916
Garage is done and dusted, got that down pretty easy. Finding someone to build a new one is the hard part, there is a tradesmen shortage here, they are so busy their customer service is non existent. 3 said they couldn't do it, the 4th said they could but they have told me they will call me on Monday but never do, that's happened 4 weeks in a row now. A concreter I was organising to do the slab has completely ghosted me for the last 3 weeks. Not like I'm hassling them either, just sent a message once per week.

I'm at the point now where they can all get stuffed and I'll do it myself, I just wanted a tradie to do it so I didn't have to muck around with council permits etc...

This weekend I was painting other parts of the house.

Back on topic. New version is looking pretty good. In terms of the needle movement, I've added two slider options to adjust the interval that samples are taken and the number of samples used in the average. Adjusting these alters the movement considerably so Hiccup will probably have fun with that. If you set the number of samples to 1 it gives peak values.

I've tested 5 different LVU meters and 2 of them were setup wrong.... Most of them are very similar so I think I've covered the different layouts and got them all working properly.

Not sure how the original author of LVU handles those errors. Considering the old author just popped up 8 years later with a new version and his only response to all the queries of it triggering antivirus is "trust me bro", I haven't got much faith in it and I'm not going to risk checking if I have the meters working like they do in AIMP.

I'll do some more tests and probably release the new version tomorrow.


sveakul

  • Hero Member
  • *****
  • Posts: 3262
Not sure how the original author of LVU handles those errors. Considering the old author just popped up 8 years later with a new version and his only response to all the queries of it triggering antivirus is "trust me bro", I haven't got much faith in it and I'm not going to risk checking if I have the meters working like they do in AIMP.
Thank you for the update and looking forward to the new release!!  Appreciate you taking on the LVU designs.

BTW, the response of the LVU developer to the unnerving virus alerts on his new 1.2 x64/x86 version for AIMP:

"Unfortunately, I don't know how to deal with false positives from antivirus software. At the moment I can’t do anything about it, I’m sorry that this is happening, but I don’t see a way out...
This plugin is only visualization and nothing more, it does not have the best code for calculations and drawing graphics in some places with crutches + an algorithm for managing ini and zip files to implement skin support."

So It think it's just a case of him throwing up his hands at an admitted lack of the personal skill needed to fix the SINGLE DLL FILE that is throwing the multiple virus alerts due to a bad design.  I am going to post over at the AIMP forum and see if the AIMP developer himself could possibly take the time to re-compile/code that one DLL that is screwing up the works for everybody.  That was a extremely popular plugin before the recent events dropped it like a lead balloon.

BoringName

  • Sr. Member
  • ****
  • Posts: 916
New version - VUMeter1.4.zip

Changes
- LVU Skin support added, Requires Single Meter option to be checked to display correctly. Only zipped LVU skins supported.
- New option to suppress duplicate value messages with LVU skins.
- db offset (mouse wheel) increased to 100 to account for LVU skins with lots of increments. For LVU skins it adjusts which increment is returned. eg) if the settings file contains values for -50, -40, -30 and the peak average is -40, a db offset of 1.00db will return the value for -30 instead and an offset of -1.00db will return the value for -50. So it's effect is dependent on how many values are listed in the settings.ini file dbs section.
- Double clicking on the window will now reset the db offset to zero. (Credit to Boroda for that idea).
- Changed some code that I think may have Improved CPU usage slightly, it seems lower but hard to tell as it jumps around a bit.
- More accurate calculation when checking if the reading is lower than the MinAngle setting for AIMP skins.
- Fixed logarithmic scale that was broken in version 1.1
- Improved message box scaling when using larger font size in Musicbee layout settings.
- New option sliders to adjust sample interval and number of samples to average. Sample interval is in milliseconds. If you set the interval to 10 and the sample number to 5, it will average 5 samples over 50 milliseconds. Setting sample number to 1 will give you peak values with no averaging. Default is 15 and 10 respectively.

I've tested 6 different LVU skins which covers all the different formats I've found. If you find one that doesn't work, let me know. Out of those, 3 of them had errors with the dbs section which specifies how much of the LED's to show based on the decibel level. One had a value of 5000 instead of 500 and the other 2 had duplicate values. I've set it to ignore duplicates and popup a message if they exist as it may not display as the author intended. The user can either fix it or just enable the suppress messages option and ignore it.

Here is a sample of one of them
Code
dbs=5;171|5;186|4;200|4;213|3;226|3;240|2;252|2;265|1;278|1;278|0;291|-1;304|-2;316|-3;330|-4;343|

I did consider it was intentional but it doesn't make a lot of sense because the second value would display the wrong result on the meter, also the value for 1 decibel is 278 in both cases. I think it's just an error with the software used to make the skins. The other issue is all the duplicated values are for values above zero so they would never display anyway without adjusting the db offset.

For anyone considering making an LVU skin. I don't use the start_point and finish_point values. The DBS section is how much of the LED image to display based on the current decibel level. In the example above the LED are on the background image and the LED image file is just a cover that reveals the LED's as the decibel level increases. In this case at -4 decibels it shows 343 pixels of the LED cover, at 0 decibels it shows 291. Most of them are the other way around, the higher the decibel level, the more pixels of the LED are displayed.

The pos_y/pos_x are offsets for the LED image file if it isn't the same resolution as the background image. It's based on where you want the top left corner of the LED file to appear on the background image. pos_x is number of pixels from the left edge of the background image, pos_y is the number of pixels from the top edge of the background image. If you make all the image files the same resolution (like the AIMP skins) you can set these both to zero.

Orientation is whether the dbs section is working on the X or Y axis. 0 for X, 1 for Y.

edit: Actually it's just occurred to me that orientation 1 for vertical meters will have always have to go with the cover method. Because it starts at the top and extends down Eg) the LEDs are on the background image, the LED file is just a cover that is reduced as the decibels increase, revealing the LED's. Not sure why the creator has set it up that way as it means horizontal and vertical meters need to be designed differently.

edit2: LVU skins can be found here. It's in Russian.
LVU Skins
Last Edit: September 17, 2024, 05:36:15 AM by BoringName

phred

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 10266
I guess you're waiting for all the paint to dry and you had some time for this major update.

I'm not sure you did anything regarding my report of one or both needles not moving six skins, but I can report that the two where there was no needle movement at all, M4762 and Hartmann & Braun, are now working properly.

The other four, all of the DejaVU Compact series by hiccup, still have only one needle moving unless linear is enabled.
Download the latest MusicBee v3.6 patch from here.
Unzip into your MusicBee directory and overwrite existing files.

----------
The FAQ
The Wiki
Custom Forum Search
Posting screenshots is here

BoringName

  • Sr. Member
  • ****
  • Posts: 916
I've updated the same link with a fix, try it again. All the skins "should" work properly now.....

phred

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 10266
I've updated the same link with a fix, try it again. All the skins "should" work properly now.....
Indeed they are  now working as expected. Thank you.

Now isn't it time for you to be working the delivery chute of the cement mixer that's pulling into your driveway?
Download the latest MusicBee v3.6 patch from here.
Unzip into your MusicBee directory and overwrite existing files.

----------
The FAQ
The Wiki
Custom Forum Search
Posting screenshots is here

BoringName

  • Sr. Member
  • ****
  • Posts: 916
Now isn't it time for you to be working the delivery chute of the cement mixer that's pulling into your driveway?

Just going to see another builder today. If he can't help me I'll start organizing it myself, I really didn't want to but at this point it seems no one wants my money. With the quality of trade work around here lately, I'll probably end up with a better result doing it myself anyway. Sad times.

sveakul

  • Hero Member
  • *****
  • Posts: 3262
Thanks for 1.4.  Everything seems to be working fine.  The LVU meter support is welcome, although they are less ambitious than the Foobar ones.  My two favorite LVU skins so far are Grundig, and LVU 100 B:


BoringName

  • Sr. Member
  • ****
  • Posts: 916
The LVU meter support is welcome, although they are less ambitious than the Foobar ones.

Foobar support is dead in the water. I've done all I can there. in terms of appearance it shouldn't be hard for people to make similar skins in the AIMP/LVU formats.

As far as LED's/LAMPS for peak values go, I should be able to combine the LVU implementation with the AIMP skins to provide a needle and Lamp for both left and right meters as Hiccup has requested. It will just require a bit of a mashup of the different INI file formats.

hiccup

  • Hero Member
  • *****
  • Posts: 9107
As far as LED's/LAMPS for peak values go, I should be able to combine the LVU implementation with the AIMP skins to provide a needle and Lamp for both left and right meters as Hiccup has requested. It will just require a bit of a mashup of the different INI file formats.
That would be great. I have some new insights in the sense that this may be more useful than I expressed the last time I had an opinion on this ;-)

Quote
Foobar support is dead in the water. I've done all I can there. in terms of appearance it shouldn't be hard for people to make similar skins in the AIMP/LVU formats.
It's a pity it has cost you so much time and effort, but I agree that if the AIMP skins work well, we can do without support for foobar2000 skins.
A large amount of the available AIMP skins are ports from foobar2000 skins anyway.
But thanks for giving this a serious shot!


About the needle action.

I have played around with the two new sample sliders, and it seems an interesting option.
Yet at the moment I think that some optimal setting for the two can be decided on that will work well for all needles, and it may not need to be an additionally available setting option.
But it's a bit hard to be sure about that because in my opinion the basic needle response should be improved upon first.
When that is really good, additional settings for 'samples' and linear curves may not be needed or useful at all.
(less is more, KISS, etc.)

Here's an interesting discovery I made about this:

I was curious about the needle action of professional VU meters.
Reading some articles on it revealed that the needle should go from ∞ to 0 dB in 300 ms. (for a 1kHz sine wave)
Then I started fooling around with AIMPs MobilityNegative and MobilityPositive settings to see if I could get it to have such a response, and I found that the values that are set for those correspond to exactly that.
So if you set the value to 0.3, it takes the needle 300 ms to travel that distance.
0.1 makes it take one second, etc.
(why the hell didn't they just name it RiseTime and FallTime?)

Here are two test files, one for 300ms and one for 1 sec., and two skins, one set to 0.3 sec. and the other to 1 sec. rise/fall times.
They may be helpful for trying to get optimal compatibility with the needle action that is set for AIMP skins.

Here you can see how AIMP is correctly applying 1 sec. fall/rise, and VUMeter™ is not:


Two other things that I hope can be improved upon:

- audio/graphics sync is still not great, the needle trailing a little bit behind the music.
- the needle often seems a bit nervous and jumpy. It's especially noticeable with thinner needles and fast moving needles.
  Could it be that the frame-rate of the needle image is a bit low?

(I hope you're still having fun with this ;-)

And a final observation for now:

I noticed that the meter now seems to get the sound post-ReplayGain adjustment.
Has that been changed, and is it intentional?
I'm not sure that I like it, since for a lot of my music the needle now only uses a small part of the scale.
Is it also post-equaliser and possible VST or Winamp plugins?

Perhaps it could be an option setting to have it operating pre- or post?


edit:
And something I thought I reported earlier, but it seems that I didn't:

I noticed that the plugin seems to ignore the value that is set for ZeroLevel?
So when e.g. having 'ZeroLevel=-3', the needle should indicate -3dB at the zero level position, but instead it always uses 0dB.
Similarly, I'm not sure what it does with MaxLevel, if anything?

It would be good if it did use/respect these values, since it is useful for some skins to be able to set e.g.  MaxLevel to 0dB and ZeroLevel to -6dB.
And same as the fall/rise aspect, it's also a factor in existing AIMP skins behaving as they are intended to.
 
Last Edit: September 17, 2024, 08:11:25 PM by hiccup

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3871
  • MB Version: 3.6.9255 P
I noticed that the meter now seems to get the sound post-ReplayGain adjustment.
Has that been changed, and is it intentional?
I'm not sure that I like it, since for a lot of my music the needle now only uses a small part of the scale.
Is it also post-equaliser and possible VST or Winamp plugins?

Perhaps it could be an option setting to have it operating pre- or post?

I too thought the earlier version was using the raw audio as well.
An option to have it operating pre- or post processing would indeed be a welcome addition
MusicBee and my library - Making bee-utiful music together

phred

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 10266
A new VU Meter skin has been added to the VU Meter Skin Repository.
https://getmusicbee.com/forum/index.php?topic=41767.0
Download the latest MusicBee v3.6 patch from here.
Unzip into your MusicBee directory and overwrite existing files.

----------
The FAQ
The Wiki
Custom Forum Search
Posting screenshots is here