AudioVisualizer - Xenon257R/blue-archive-rainmeter GitHub Wiki

images/visualizer.png

This skin displays the audio level of your system. It also displays the current album + track name when available.

Components & Behaviors

  • @includes:
    • musicplayer.inc
    • visettings.inc
  • (40 ms) Update Value: Requires low update rate to display audio levels
  • (0, 100%) Anchor Point
  • Loads up hidden
    • Will unhide itself only when EventBanner is hidden/disabled
  • Does not respond to ToggleSwitch

Context Menu Options

Details

A Large Container of Lines

To utilize the dash patterns available to Line shapes, this skin overlooks the Bar meter and instead draws Shape (Line) meters, their second point being adjusted by the MeasureBands. The finished "parallel lines" shape is then used as a Container for a rectangle of the same size to use a color gradient that encompasses the entire visualizer.

If you wish to use an image instead of a color gradient or any other extension of Rainmeter's Shape Meter, remove the [ColorGradient] meter in the .ini file and replace it with an Image meter with the following parameters:

[AudioImage]
Meter=Image
ImageName=[Insert_Filepath_here]
PreserveAspectRatio=2
W=(#GridWidth#+#Pixel#-(#GapSize#*1.5*#Pixel#))
H=(#GridHeight#+#Pixel#)
Container=AudioGridCore

You may expand on the above section with more Image/Meter options.

:speech_balloon: The image variant looks best with a static backdrop and the visualizer shadow highly transparent or outright removed. If you want no shadows, it is more performant to remove the appropriate meters instead of setting a 0 alpha value in the Style Settings for the visualizer's shadow. The sections to remove are [AudioGridShadow] and [AudioShadow].

The linear variant uses StrokeDashes without any Stroke Caps. The dot/square/diamond variants exploit the nature of StrokeDashCaps on segments of length 0. Because 0-length dashes are still "rendered" and StrokeDashCaps are appended to the dashes instead of shaving off their tips, it exhibits an all-or-nothing behavior where each segment when rendered shows its DashCaps in full instead of treating the caps as part of the segment's length.

You can edit the PixelType variable located in @Resources\user\visettings.inc to write in your own custom pattern. For example, a stereo pattern can be done using the following string:

StrokeDashCap Flat | StrokeDashOffset 0 | StrokeDashes 0.5,#GapSize#

:speech_balloon: The above configuration was not included in the UI as a true stereo should render in discrete values like Rainmeter's bitmap-based visualizers and the dot/square/diamond variants. Unfortunately, joined dash caps are at minimum as thick as the stroke, making flat rectangles an impossibility. However, this behavior can still be emulated if the MeasureBangs' values are processed before the render to be rounded to specific values by dividing the % value by the number of rectangles, round/floor/ceil the value, re-multiply it by the number of rectangles and then finally multiply it by the render height. This logic will only work with a single repeating pattern and will not work with more complex patterns such as StrokeDashes 0.5,#GapSize#,1,#GapSize#.

Two Places To Be

The Audio Visualizer is not switched off by the ToggleSwitch. Instead, it repositions itself to a new position accordingly to whether its master skin Audio is active or not. As Rainmeter natively does not have a way to memorize old Skin positions, this skin has internal variables used as storage to remember them. They are updated accordingly every time the skin moves.

In the case the variables break and desync with the state of the ToggleSwitch, you may go into the configuration file and edit the Variables OnX, OnY, OffX and OffY. Below them should be a commented copy of those variables which are archived values of the AudioVisualizer's positions for a 1920:1080 screen in the default layout.

Clashing with EventBanner

In the default layout, AudioVisualizer is set to render in the same location as EventBanner. To prevent visual overlap, AudioVisualizer is given priority over EventBanner.

AudioVisualizer is activated Hidden and will only unhide itself after EventBanner is fully hidden or disabled. EventBanner, being on an Update rate of 1000ms, may take up to a second to respond to AudioVisualizer's activation.