New version -
VUMeter1.6.zipIs 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.