Author Topic: VUMeter Plugin  (Read 50518 times)

voodoopunk

  • Full Member
  • ***
  • Posts: 212
Fair enough, not judging.

even though I want it to look how I want, I start music playing and then leave it.

No lyrics, or anything animated, don't see the point.
Black Flag - The First Four Years

Artesoll

  • Jr. Member
  • **
  • Posts: 29
Fair enough, not judging.

even though I want it to look how I want, I start music playing and then leave it.

No lyrics, or anything animated, don't see the point.

I think it's something old, since the first Media Player Classic, with the arrival of Winamp, which took visuals and movements into account. For those who really like organizing music, this is the point, I think.  Then comes the design and interactivity, which is what attracts attention, for example Spotfy, Itunes or Audivana.
I spend hours on Musicbee as a pleasure, a hobby. organize and update data from everything you listen to.

In the living room I listen through a common sound system, the kitchen, the bedroom, the car each have a different system, But the data that goes to these systems comes from musicBee statistics. But on the PC, I like to see Musicbee in action.


I wrote this text using Google Translate, no word is actually meant to sound offensive

kaivsdoom

  • Jr. Member
  • **
  • Posts: 22
Hi guys, thank you very much for the great work you do. I have a tiny little problem with the Vu-meter plugin. It is installed and activated. It is located at the bottom right of the panel. The menu can be called up, but it does not load the skins. I hope the files are all in the right place. The Vu skins are in User/appdata/Roaming/Musicbee/Vu meter.., the plugin in the main directory, Musicbee/Plugins. I have already tried zipping or extracting the skins, with the same result. It must be me, something is definitely in the wrong place, but I cannot find the error. musicbee 3.6.9052, Vu-meter 1.8.2 win 11, attached is a screenshot... many, many thanks
https://imgur.com/a/8nMDajv

BoringName

  • Sr. Member
  • ****
  • Posts: 916
The Vu skins are in User/appdata/Roaming/Musicbee/Vu meter..,

The skins need to be in the following folder -
User\AppData\Roaming\MusicBee\Plugins\VUMeter\VUSkins

edit: Also be careful when unzipping/zipping skins. You want to make sure the zip only has files in it, not folders. eg) don't right click the "Teac" skin folder and choose to zip it. Go into the Teac folder and zip the files instead. *.png, skin.ini etc... and name that "Teac.zip".
Last Edit: October 18, 2024, 10:53:44 PM by BoringName

MotleyG

  • Full Member
  • ***
  • Posts: 212
@BoringName Thank you so much for your efforts in this project, and for everyone else that contributed time for testing. I finally had a chance to get MB updated and add the VUmeter plugin on my end. What an incredibly realistic performance. Kudos!

@Hiccup your AccuPhase setup pushed me over the edge. Funny how this has nothing to do with listening to the music. But somehow it truly makes an experiential difference.

MusicBee is so versatile. And the dedication of the core group in this forum is icing on the cake. Thanks to all for this addition.

kaivsdoom

  • Jr. Member
  • **
  • Posts: 22
:D  great BoringName, thank you very much, that was exactly my mistake, now everything works :))

BoringName

  • Sr. Member
  • ****
  • Posts: 916
I've transferred the foobar code from my test program (essentially a viewer) into VUMeter and it all seems to be working ok. The scaling worked exactly how I thought it would so that's made things a lot simpler.

I just need to sort out the vertical/horizontal options now. Some of the foobar skins require vertical positioning so I'll get that sorted before I release it.

I could also modify my test program to save all the image files if that would be any use to anyone who wants to convert the bin files into a different format or even use them as source files to use in the VUEditor.

You can extract frames with the VUEditor but they are fully drawn frames with the needle, glass and LED drawn onto the background. I could extract the needle/glass and LED positions and save them on a transparent background separate from the background image. Unfortunately the needle and glass can't be separated so they might require some editing to re-use properly.

hiccup

  • Hero Member
  • *****
  • Posts: 9107
I could also modify my test program to save all the image files if that would be any use to anyone who wants to convert the bin files into a different format or even use them as source files to use in the VUEditor.
Wow, you keep going above and beyond. That will be very useful.
The first skin I'm going to use that on is this one.
I've been wrapping my head around trying to figure out how they did that, but I can't figure it out.
My guess is that it is using lamps only and no needles, but then I'm still not sure how it works exactly.

sveakul

  • Hero Member
  • *****
  • Posts: 3262
I could also modify my test program to save all the image files if that would be any use to anyone who wants to convert the bin files into a different format or even use them as source files to use in the VUEditor.

You can extract frames with the VUEditor but they are fully drawn frames with the needle, glass and LED drawn onto the background. I could extract the needle/glass and LED positions and save them on a transparent background separate from the background image. Unfortunately the needle and glass can't be separated so they might require some editing to re-use properly.
Your fast progress on the BINs-for-MusicBee has been phenomenal to say the least.  Yes I think it would be a great idea to have an option to extract/save the image files; for me it wouldn't be for converting to a new format but for being able to re-color and then re-import lamps, etc. into the original BIN.

I'm still playing with VUEditor and thanks to hiccup sending me the extracted parts of his first BIN meter (DejaVU Compact Calibrated) I've been able to re-color the lamps and part of the background (https://mega.nz/file/PExXRQbZ#NV-clgJR60vbqVARNNlrDkwOIisRPzsVW2LoY90PN84).  How he used VUEditor to extract the components from a BIN file I still haven't a clue!  I can't even open a BIN file into VUEditor.  Once I had the parts, I could export the changed *.vu components as a BIN file.

BTW, I've been comparing the needle/LED action of hiccup's BIN meter to the recently devloped horizontal "bar" VU meters available for Foobar after the Javascript Panel3 writer was able to make raw audio data from the player accessible via a visualization stream.  With the new 64-bit foo_vis_vumeter plugin that has multiple levels and other options, I was able to see an almost identical meter needle reaction to the RMS level of the new bar meters, with the LEDs following the needle levels.  Hiccup's meter is extremely lively and responsive, better than many of the "old" BIN meters.

When Peak was selected, both LEDs and needle would follow the Peak level of the bar meters.  There wasn't a setting like in MusicBee for "LED uses Peak", so I imagine that option would need to be coded into the actual BINS for it to work.  Actually I can't think of a Foobar gallery BIN meter that DOES use LEDs--only AIMP meters.  Apparently AIMP compatibility is 90% complete for Foobar with version 0.2 of the plugin, but I have yet to install it as oops is still making off-putting comments like, "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."  Man, improve it first THEN release it, haha..  He's made no comments on if it includes LVU compatibility.

Edit:  Hiccup, did you use the old foo_vis_vumeter.dll when creating your first BIN?  I just tested it with the old DLL that has no "level" settings at all, and this time the LEDs DO apparently "use Peak", while the needle is normally behind, I assume following a mobility average or RMS.  If so let me know because I would recommend to oops that he modify his new DLL to follow that default behavior for level.  Much nicer than both LEDs and needle always at the same dB.
Also, I changed the Mega download link above for my modified Bright version which has had additional color modifications, please re-download if interested.
Last Edit: October 19, 2024, 07:49:07 PM by sveakul

BoringName

  • Sr. Member
  • ****
  • Posts: 916
My guess is that it is using lamps only and no needles, but then I'm still not sure how it works exactly.

That is correct. The way the foobar skins work is the background image is stored by itself and the needle/led pixel data is stored separately. So to draw each frame you start with the background data and then iterate through the LED pixel data for that particular frame and use it to replace the pixels on the background image with the LED pixels, then repeat that for the needle pixels. That's why you can't separate the needle images from the glass because it only stores the pixels required to draw each frame, it doesn't save the entire needle or glass separately. It would be possible to extract the full needle image if the skin has a needle that is fully visible for at least one of the frames. If a glass is used that would prevent that from being possible because the glass nearly always covers the needle at least partially.

For that skin they have just used large LED images. The background image is the eyes closed. The led images are the eyes opening more each frame which overwrite the background image. Theoretically you could have LED images that fully overwrite the background image.

When Peak was selected, both LEDs and needle would follow the Peak level of the bar meters. 

I was about to say the needle and LED are linked with foobar skins because you choose what level the LED are drawn in the VUEditor and the needle will always be in that particular spot. But it's just occurred to me the needle and LED data can come from different frames. So it will be possible to have the LED use peak and the needle be averaged. I actually split the LED and Needle retrieval already so that shouldn't be too hard to implement.

BoringName

  • Sr. Member
  • ****
  • Posts: 916
New version - VUMeter2.0.zip

Changes
- Sub directories are now supported for the Skins folder. These are loaded on demand when navigating the Skin option and ~40 skins per folder is recommended. More than that is supported but it slows things down and makes navigation painful. There is an intermittent bug where sometimes the menu will briefly appear in the top left corner of the screen. I've minimised it's occurrence but the bug persists. Unzipped skins are no longer supported.
- Foobar skins are now supported. Thanks to oops on the Hydrogenaudio forums for sharing how to decode the bin files.
- Everything is now packaged under one DLL. You no longer need the SharpGL related DLL's in the plugin folder. If you also use 3DBee, make sure to update to the latest version of that plugin also before removing the SharpGL dll files.
- New sub menu "Layout". The "Hide Header" and "Single Meter" options have been moved into this sub menu.
- New options "Center Y Axis" and Center X Axis" added to the Layout sub menu.
- New option "Vertical Display" added to the Layout sub menu. This will display the meters up and down instead of left and right.
- Sample Settings sub menu renamed to "Mobility Settings". The sample sliders have been changed to "Positive" and "Negative" which are mobility settings for Foobar skins.The scale ranges from 1 to 10 which is the equivalent of 0.01 to 0.10 with the AIMP method. Lower is slower.
- New option "Override AIMP Settings" added to the Mobility Settings sub menu. When enabled the mobility settings for Foobar skins will override the mobility settings in the skin.ini files for AIMP skins.
- New option "Event Mode" added. The old buffer settings have been hardcoded to 25 or 5 when Event Mode is enabled as per Hiccups recommendations.

If you come across the foobar skin "lenco - blue.bin". This skin does not display properly. This isn't a problem with VUMeter, it's just how the skin was created, possibly in error.

If a skin isn't displaying properly, make sure to check you have the correct settings before reporting an issue. Some skins require vertical display and some the default horizontal display. I had considered automating some option switching for particular skins eg) automatically switching to Single Meter mode when an LVU skin is selected but I held off on those changes for this version.

I did a fair bit of testing between the installed and portable versions but if my previous releases are anything to go by, expect a few bugs. I haven't altered any of the code regarding needle movement apart from adding the mobility settings so nothing should be different in terms of needle movement unless you override the mobility settings.

edit: there is still the issue when resizing where part of the background will go black. Resizing the height of the meter fixes this. I can't find the problem, I think it's just a quirk of nesting an OpenGL element into 2 layers of other elements. It occurs horizontally once the meter height is a bit over a third of the screen and you resize to make the meter wider. It occurs vertically when resizing the meter to around half the width of the screen. As stated, the black parts will render correctly if you just alter the height very slightly or restart musicbee.
Last Edit: October 26, 2024, 10:48:05 PM by BoringName

hiccup

  • Hero Member
  • *****
  • Posts: 9107
New version - VUMeter2.0.zip
Congratulations with the 2.x birthday of your plugin child ;-)

It's a great update. Everything seems to be working perfectly.
I will do some more thorough testing and see if I can nitpick on anything at all, but I've got a feeling that is going to be difficult...

hiccup

  • Hero Member
  • *****
  • Posts: 9107
I appreciate that Linear was kept as a movement option, which depending on the meter I sometimes prefer using.
@sveakul:

Can you name some (let's say three) VU meter skins that work better by disabling the default 'linear' setting?
I would be surprised if they wouldn't work better by simply adjusting the gain instead of switching the 'linear' mode.

It was just added in the last Foobar plugin update to its selection of Levels options.
And it has now been removed for the latest version of oops' plugin.

Change log Version: 0.4.0-rc:
ยท Remove "linear" level mode


Oops seems to agree with me about it not being useful.
 

sveakul

  • Hero Member
  • *****
  • Posts: 3262
Terrific news on the 2.0 release, BoringName, can't wait to do some extensive testing.  Thank you for your work.

Hiccup, after oops explained to me what "Linear" was originally for--to give some scale of movement to meter faces never intended to measure dBs but just flat-scale "temperature/oil pressure/fuel gauge" types--it made sense to me why it was removed.  Why cater to something that doesn't fit the program in the first place.  For whatever reason, probably chance, for me it gave some meters e.g. the DejaVu Compact LED Calibrated, AcuVu, and AL-65 meter a lot of mid-movement.  Others, like with Foobar, it would just "pin right."  I'm certainly not going to worry about its absence now, I'm "all-in" on 2.0!

BTW, if you do have Foobar, give your own BIN plugin, the DejaVu Compact Calibrated (double BIN version), a try with their 0.4 plugin and RMS or Peak options--it's RIGHT ON, the most accurate rep. of the audio I've seen.  The time you spend on the "calibrated" portion is well-spent, and I hope you will keep creating them.  BTW, the single BIN version you also posted and asked to test caused a crash so that's all I can tell you there.

OK, it's onwards into testing land.

hiccup

  • Hero Member
  • *****
  • Posts: 9107
New version - VUMeter2.0.zip
Congratulations with the 2.x birthday of your plugin child ;-)
Oops, I forgot to bring a present.
Here it is, I hope you like it.