Author Topic: VUMeter Plugin  (Read 50564 times)

BoringName

  • Sr. Member
  • ****
  • Posts: 916
Well I unchecked that VST the first test I did.  I've had it, I found what works for me now and I'll stick with that.  The VST host in MB is a bug fest anyway--try this VST and it works by itself, add another that works by itself directly after that and the whole thing crashes, etc etc.  The hosts in Foobar v2 and AIMP 5.30+ are rock solid in comparison.

I did some more testing on this and found a couple of things.
- In WASAPI excluive mode with logarithmic volume unchecked. Moving the volume slider has no effect unless you set it to 0%. This stops any reading in the meter. This doesn't occur in shared mode, you can set it to 0% and the meter will still read whatever level is currently playing in the test file.
- In WASAPI exclusive mode with logarithmic volume checked, moving the volume slider has a significant impact on the meter reading. As I said before, in shared mode, having logarithmic volume checked and moving the slider has no effect on the meter.

So it's a combination of exclusive mode and logarithmic volume scaling checked.

Also this might interest some of you
https://getmusicbee.com/forum/index.php?topic=41697.msg227885#msg227885

I noticed the needle would sometimes go past zero when I had the sample number set to 1. So you may notice the meter going slightly past zero. I notice it quite a bit playing Cradle by Silversun Pickups.

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 34974
So it's a combination of exclusive mode and logarithmic volume scaling checked.
yes that is a bug thats fixed for the next v3.6 update

https://getmusicbee.com/patches/MusicBee36_Patched.zip
Last Edit: September 22, 2024, 05:25:14 AM by Steven

sveakul

  • Hero Member
  • *****
  • Posts: 3263
- In WASAPI exclusive mode with logarithmic volume checked, moving the volume slider has a significant impact on the meter reading. As I said before, in shared mode, having logarithmic volume checked and moving the slider has no effect on the meter.

So it's a combination of exclusive mode and logarithmic volume scaling checked.
Yes, exactly as I first tested and described above, in my Reply #130 post and was told, "This must be due to a combination of something else."

hiccup

  • Hero Member
  • *****
  • Posts: 9107
If hiccup can do one of those gif comparisons of the needle between Musicbee and AIMP that would be great.
Sure, here are two of them.
Both are using AL-65 Calibrated, rise and fall times both set to 0.3
The sample sliders are both set to the minimum setting of 1.
It gives the most 'lively' response, without things becoming shaky or nervous.
I couldn't find benefits in using higher values.
I am assuming it should allow the meter act more as a traditional 'averaging' meter, but I wasn't able to get more satisfying results with higher values myself.


1 sec. 1kHz, test:


Both act very similar.
AIMP is a little bit faster in its impulse response, and both the rise- and fall-times are a little bit longer.


music (Supertramp -Bloody Well Right):


AIMP is a little bit faster in its response to audio, and seems to be indicating averages a bit more than peaks.

VUMeter is more 'lively', which looks good to me.
Increasing the rise and fall times will make it look like its behaving a bit less as a peak indicator, but that quickly has a negative effect on the responsiveness.



Quote from: BoringName
Also Hiccup, not sure if you are aware but some of your skins are not accurate. AL-65 Elemental and Deja Vu Compact Elemental are incorrect when running the test files, with VUMeter and AIMP.
Yes, I am aware and that is intentional.
The focus for my VU meter skins goes to having the needle action being as satisfying as possible, making the best possible use of the available area, and looking visually pleasing and 'balanced' overall.
Making them 'calibrated' will require making some sacrifices on that.
I created AcuVU (and now AL-65 Calibrated) purely for testing purposes trying to be helpful in getting a good idea about what is going on exactly and how things could possibly be improved for the plugin.

But for actual use when playing music I don't care much about the values on the scale being acurate. (if that is even possible for a VU meter)
And I am guessing that will be the case for the majority of users.
As I said before, many very nice VU meter skins are actually ampere meters, voltage meters, oil presure meters, or even speedometers. And nobody ever complained about that ;-)



Quote from: BoringName
I noticed the needle would sometimes go past zero when I had the sample number set to 1. So you may notice the meter going slightly past zero.
Yeah, I've noticed that too with some wall-of-sound tracks.
But that seems fine to me, it's what I would expect from a traditional VU meter also.



Yes it is--hiccup, any chance of getting this newly calibrated version of AL-65 posted for us fans?
Sure, I've added it to the regular AL-65 download link.

- - -

And a request for a new feature:
Could the plugin be made to recognise a (simple) folder structure for the skin location?
It would be useful to be able to have them organised a bit, same as can be done with MusicBee skins.
 

BoringName

  • Sr. Member
  • ****
  • Posts: 916
Thanks for that. Geez that's bloody close. Not bad considering I used the stopwatch on my phone to try and time the fall/rise times in AIMP.

I think I might call it a day on adjusting the movement and leave it as is.

I don't know how much difference it makes but I think setting the sample interval to 1ms is overkill. If you can't notice a difference at higher values then set it higher as it means less work for the machine.

But for actual use when playing music I don't care much about the values on the scale being acurate. (if that is even possible for a VU meter)
And I am guessing that will be the case for the majority of users.

I'm going to pretend I didn't read that.

And a request for a new feature:
Could the plugin be made to recognise a (simple) folder structure for the skin location?
It would be useful to be able to have them organised a bit, same as can be done with MusicBee skins.

I thought you would ask about implementing LED/lamps before something like that :)

Do you mean an option to specify a folder somewhere outside the plugins folder? eg) D:\VUSkins\

I'm just finishing up testing a version that has LED/Lamps as well as needles on the same meter. Just in case you were curious.

hiccup

  • Hero Member
  • *****
  • Posts: 9107
Do you mean an option to specify a folder somewhere outside the plugins folder? eg) D:\VUSkins\
No, I'm thinking of a subfolder level.
So you could have something like:

...\Plugins\VUMeter\VUSkins\analogue\Hartmann & Braun.zip
...\Plugins\VUMeter\VUSkins\analogue\SPL Mk.2.zip
...\Plugins\VUMeter\VUSkins\vertical\NightBars.zip
...\Plugins\VUMeter\VUSkins\testing\AL-65 Calibrated.zip
...\Plugins\VUMeter\VUSkins\testing\DejaVU LED.zip
etc.

Quote
I thought you would ask about implementing LED/lamps before something like that :)
Nah, the last thing I would want to be is being too pushy.
The needle action stuff was much more important to me, so I thought to focus on that first, and now enjoy the accomplishments in that area. And not immediately putting pressure on other complicated 'stuff to do' on your shoulders ;-)

I'm going to pretend I didn't read that.
Well, the Hartmann & Braun meter that you seem to like and have selected for inclusion in your plugin is actually a milliampère meter.
No correct dB values to be found in that one also ;-)

- - -

edit:
About this:
Quote
I don't know how much difference it makes but I think setting the sample interval to 1ms is overkill. If you can't notice a difference at higher values then set it higher as it means less work for the machine.
I can't observe any higher cpu load when changing it to e.g. 5 instead of 1.
The load continuously fluctuates a lot, making it difficult to be sure, but on average I think it's somewhere around 2% with either setting.
And, as soon as I set it higher than say 3, I start noticing it starts missing faster 'beats'.
So I myself don't see a reason for setting it higher than 1.
Last Edit: September 22, 2024, 11:04:52 AM by hiccup

hiccup

  • Hero Member
  • *****
  • Posts: 9107
- db offset (mouse wheel) will now correctly apply a decibel offset for LVU skins instead of the previous method.
- db offset will adjust the meter more accurately for AIMP skins.
Confirming that that now works perfectly:

BoringName

  • Sr. Member
  • ****
  • Posts: 916
No, I'm thinking of a subfolder level.

That might involve a few changes. I'll think about it.

Well, the Hartmann & Braun meter that you seem to like and have selected for inclusion in your plugin is actually a milliampère meter.
No correct dB values to be found in that one also ;-)

Yeah I didn't put a lot of thought into any of those, I just tried to include a few that looked different. I initially thought no one would be too worried about any of the accuracy as long as it looked flashy but here we are 5 versions later..... I've wasted a fair bit of time on silly mistakes but I'm liking where it's at.

And, as soon as I set it higher than say 3, I start noticing it starts missing faster 'beats'.
So I myself don't see a reason for setting it higher than 1.

Like I said, I don't know how much difference it makes, if it creates a visible difference then fair enough. In my head I think it's putting load on musicbee to supply those peak values every millisecond but in real terms it's probably the equivalent of adding one grain of sugar to a tonne of it and expecting to notice the weight difference.


hiccup

  • Hero Member
  • *****
  • Posts: 9107
I've wasted a fair bit of time on silly mistakes but I'm liking where it's at.
Perhaps a small piece of comfort on that:
Without 'mistakes', Darwin would not have invented Evolution some time ago.
And then we would not even have been here to enjoy bourbon and wasting our time on silly computer stuff.

About the included VU meter skins, I'm not sure, and maybe you have already done this, but it would be good to credit the creators of the AIMP skins that you have included with the plugin?
Just making sure. They (same as me) also have made many mistakes in their efforts to create and share their work.
Last Edit: September 22, 2024, 04:39:21 PM by hiccup

BoringName

  • Sr. Member
  • ****
  • Posts: 916
About the included VU meter skins, I'm not sure, and maybe you have already done this, but it would be good to credit the creators of the AIMP skins that you have included with the plugin?

Yes, that's poor form on my part. I'll update the addon page and add a credit text to any future release zips.

BoringName

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

Is anyone sick of having to download a new version every 5 minutes?

Changes -
- LEDs can now be added to AIMP skins. They follow a similar configuration to the LVU skins.
- Option added "LED Use Peak". This specifies if the LED will use peak values with no rise/fall modifications or use the same values as the needles. This only has an effect on AIMP skins that contain LEDs, it has no effect on LVU skins.

Buckle up, this might get complicated.

To add LEDs to an AIMP skin, you need to add "orientation" and "dbs" fields to the skin.ini file. I have modified some of Hiccups skins as an example of how it works. They are nasty hack jobs and probably not something you want to use, it's just to give an idea on how it works. You can download them here - VUMeter LED Examples.zip. I'll go through the different types and how they work further down.

orientation
- 0 for horizontal. This sets the dbs values to be used from the left edge of the image to the right.
- 1 for vertical.This sets the dbs values to be used from the bottom of the image to the top.

dbs
- As with LVU, this is broken up into sets of 2 values, each set is separated by a vertical bar "|" and the values are separated by a semi colon ";". The first value is the decibel level and the second is the number of pixels of the image to display at this level. Number of pixels from the left of the image for orientation 0 or number of pixels from the bottom of the image for orientation 1. VUMeter will search this set of values and return the value that matches the current level or if it cannot be found, it will return the closest one that is below it.

If it can't find the value and they are all higher, it will default to the lowest value. Because of this behaviour you should always make the first value a level that's less than displayed on your meter (eg) -80 and set the number of pixels before any part of the image (unless you want part of the LED image to always be displayed). You can see an example of this in the "AcuVU LED.zip" where the first value is -80;51. The LED image does not start until pixel 56. If the pixel value was set to 98, the first LED would always be on display even when nothing is playing.

How it works with different configurations.
Note - The LED image file resolutions need to match the other images with these types of the skins.
AcuVU LED.zip - This skin has a single set of images to be used for both channels. The LED's will use separate left and right signals for each meter. In single meter mode they will use the combined average.
AcuVU LED V.zip - Same as the first skin but this has orientation set to 1 and a different LED image file changed to be vertical.

AL-65 Elemental LED.zip - This skin has separate images for each channel but only 1 LED has been configured for the left channel. With skins that have separate channel images, VUMeter will check the resolution of the LED image, if the width matches exactly to the combined total width of both channel background images, it will display the LED across the whole meter. If only the left is configured it will use combined averages, if left and right LEDs are configured they will use their respective signals.

AL-65 Elemental 2xLED.zip - Same as above except both left and right LEDs are configured. Both set to display across the whole meter.

DejaVU Void Red LED.zip - This skin has separate images for each channel. Left and right LEDs are configured but their width is set to the same as the other image files for each channel so they only span their own side of the meter.

You may notice some of the increments in the dbs sections do not increase by an even amount of pixels even though the LEDs are all the same size. It's because I just opened the images in an editor, put the cursor somewhere past the LED I wanted to display and noted down the x values. It doesn't have to be exact as long as it is past the part of the LED image you want to display for that level. I hope that makes sense...

For single sets of images, the draw order is Background (0.png), LED (3.png), Needle(1.png), Foreground(2.png).

For separate sets of the images the draw order is Left Background (L_0.png), Right Background (R_0.png), Right LED (R_3.png), Right Needle(R_1.png), Left LED (L_3.png), Left Needle(L_1.png), Left Foregound(L_2.png), Right Foreground(R_2.png)

Each image will overlap the image(s) drawn before it so transparency needs to be used for anything you want to remain visible.

If you wanted to make a skin that was LED only but in the AIMP format, just configure the LEDs and use fully transparent images for the needle files.
Last Edit: September 23, 2024, 02:46:00 AM by BoringName

hiccup

  • Hero Member
  • *****
  • Posts: 9107
New version - VUMeter1.6.zip
Changes -
- LEDs can now be added to AIMP skins. They follow a similar configuration to the LVU skins.…
Looking good! (and also very well explained and thought-through)

I have created a new VU meter skin that is using these peak indicators.
It's called DejaVU Compact LED Calibrated and can be found here.

I hope you like it. (I do ;-)

PS
I suggest using it with the sample sliders both set to 1.
Besides it resulting in very responsive needle action that is able to follow higher-paced rhythms, it also seems to help in keeping audio/visual delays at a minimum.

And perhaps turn the mouse-wheel to +1 or +2, to get some sense of living on the edge...
(and also to see what the VU meter may have looked like in the recording room)
Last Edit: September 23, 2024, 06:12:34 PM by hiccup

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3871
  • MB Version: 3.6.9255 P
Is anyone sick of having to download a new version every 5 minutes?
Not me! (but you're probably tired of uploading them)  ;)

Possibly for VUMeter1.7
An option for the plugin to read the replaygain tag for the playing file and automatically adjust the meter gain to compensate.
MusicBee and my library - Making bee-utiful music together

BoringName

  • Sr. Member
  • ****
  • Posts: 916
Possibly for VUMeter1.7
An option for the plugin to read the replaygain tag for the playing file and automatically adjust the meter gain to compensate.

I was trying to avoid messing around with the library to keep the plugin simple but it's already well past that descriptor.

Looks like I can just directly minus the replaygain value off the peak value to get the desired result. The test track with replaygain of -20% is reading a peak value of 0.80 when playing the 0 level section. (1.0 peak value). Something simple for once!

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3871
  • MB Version: 3.6.9255 P
Looks like I can just directly minus the replaygain value off the peak value to get the desired result. The test track with replaygain of -20% is reading a peak value of 0.80 when playing the 0 level section. (1.0 peak value). Something simple for once!

I thought the peak value was being calculated after replay gain was applied.
So you would take the replay gain -


and add it to the dB here -
MusicBee and my library - Making bee-utiful music together