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.
Hi @oops,
I have just played some songs using AIMP to quickly observe the VU Meter:
- The needle seems sensitive to tempo.
- The dB scale ranges from -20dB to 3dB.
- The VU Meter follows its own algorithm to calculate the dB, and it seems higher than fb2k's. This can be scaled up to push the level beyond 0 dB (to +3dB). This is just a guess and may be for a symmetric and nice look and feel.
- Based on the formula from here:https://www.aimp.ru/forum/index.php?topic=52865.msg325256#msg325256, @Black_AVP
A = Am * (0.5 - 10^((L - Lm)/20)) + 90
where:
+ Am is the full angle of the scale, assuming it is symmetrical (MinAngle and MaxAngle are equal in absolute value);
+ L is the calculated level in dB;
+ Lm is the same MaxLevel - the extreme mark of the scale.
and the 'skin.ini' from the VU Meter skin stocked with AIMP (Classic) shows that:
-20dB = -52 degree
3dB = 52 degree
Applying the above formula and adjusting :
-20dB = -44.6 degree (not -52 degree). It should be -60 dB to reach that -52 degree.
=> The VU Meter is based on its own algorithm to draw the needle and its decay/attack speed on-the-fly. Therefore, without the exact formula, we cannot justify further. Moreover, AIMP may have its own dB scale, which is different from others.
As such, it is very kind of you to try to adapt AIMP VU meter skins.
I am thinking of replicating the AIMP VU Meter by utilizing @marc2003's JSP3. This is just to see how far we can tweak their skin. Especially, the skin is quite easy for many of us to build with at least 3 images and 1 skin.ini file, as well as, playing around with it (by JSP3 script). This may trade off for the VU Meter accuracy.
Once again, thank you very much for your beautiful component and valuable contribution to us.
Regards,
@ilovefb2k