Rainmeter Samurize utilities

Samurize plugins

These plugins are for the Samurize desktop info/ gadget app. It's a very mature and capable app, though, sadly, it appears to be dying. Still, I use these plugins daily and find them very useful, so I decided to make them available.

Spectrum analyzer / VU meter

(for Vista and Win7)

SpecGP is a highly configurable spectrum analyzer / VU meter. It's a general purpose (GP) plugin: it's not tied to any specific player, nor does it require any plugins to be used by your music player. SpecGP analyzes the audio output of the sound card in real time: it works with music, games, TV, DVD, etc.

Because it is graphically intensive, SpecGP is a visual plugin, not a source plugin. It takes over all graphics tasks from Samurize: the bars are drawn by the plugin, they're not Samurize progress bars. SpecGP can also be set up as an input plugin to show tooltips, reload (LMB), or quit (RMB).

Features

Spectrum analyzer
  • integrated VU meter
  • linear and log frequency distribution
  • 1, 1/2, 1/3, 1/4 or 1/6 octaves
  • 20Hz-20kHz range, adjustable upper limit
  • motion smoothing, attack/decay damping
  • unique dominance mode shows only the most dominant frequencies
  • optional labels showing frequencies

Peaks

Tooltip

Labels
With gaps, peaks, color zones and markers Tooltip shows bar ID, ideal freq., true freq., FFT index Frequency labels
VU meter Top band monochrome Top band in color
Integrated VU meter Dominance mode (monochrome) "Light organ": bars colored by value

Settings

SpecGP GUI

Mirror Mirrors the display (left-right or top-bottom).
Gain Increase overall sensitivity to sound (1.0=default level).
High gain Increase sensitivity in high frequency range (0.0=default response across frequencies, >0.0=highs are boosted).
Nonlinear response Increase senstitivity to quiet sounds, but keep loud sounds intact (1.0=linear response, <1.0=boost quiet sounds). Don't overdo this, or you may end up picking up static noise from the sound card's amp.
Alpha Bar opacity (0-255): start=at the bottom of the bar, end=at the top of the bar
Bar colors 1) solid color, 2) top-bottom gradient, 3) divide bars into 3 color zones, 4) "light organ": bars colored by value using a color ramp.
Round corners Make bar corners round. Amount: 0%=not round, 100%=as round as the bar width allows.
Background Optional, filled-in area behind each bar.
Color zones Defines the size of color zones, if bar color mode is set to "Zones".
Markers Shows lines delimiting the color zones.
Motion drag Slows down fast, jerky animation by clamping down rapid changes. The value indicates how much change is allowed between two frames, as a percentage of the full range. 100%=allow all motion, 5%=clamp any change down to 5% of the full range. Attack=upward motion, decay=downward motion.
Smooth motion Another way to slow down fast, jerky animation. 0=raw animation, 8=slow as molasses. Note: use either smooth or motion drag (above), not both at the same time, as these two methods will clash with each other.
Gaps Divides each bar into segments. Fill makes the gaps partially opaque. Spacing is the distance between two gaps, thickness is the width of the gap between segments. Values can be in pixels or a percentage of width/height.
Bar gap Distance between adjacent bars.
Labels Adds captions below/beside the bars. Vertical will set the text vertically, to conserve space when using vertical bars. Ideal frequency is the frequency that "should" be shown, per math formula. True frequency is the frequency actually shown. It's different from true freq. because FFT size is limited (see below). FFT index is the index in the FFT array. If you use SpecGP as an input plugin, this info shows in a tooltip for each bar.
FFT size The more accurate (ideal) frequency representation you want, the bigger FFT you'll need, but bigger FFT means more CPU usage. Use the smallest FFT size you can get away with. If the FFT is too small, some bars will move in sync and/or some frequencies will start to drop out.
Octaves Linear will divide the freq. spectrum into equal parts. You get to choose the number of bands. Octaves creates a log frequency distribution, which is how people perceive sounds. A formula computes the bands, so you can't choose their number.
Peaks Adds a peak marker to each bar. Attach fixes the peak to the moving bar, otherwise it falls on its own. Decay controls how fast the peaks fall (a percentage of full motion range). Alpha=opacity (0-255)
Dominance mode Shows only the most dominant frequencies. Top bands determines how many (max=4). The dominance order can be shown in monochrome (less dominant freq.=more transparent), or in color (most dominant freq.=color 3, 2nd most dominant=color 2, etc).
VU meter channels VU meter: the number of channels you want to display, chosen from all available audio channels (2 for stereo, 6 for 5.1, etc)
Use system volume VU meter: should the level be affected by changes in system volume (muting or moving a mixer volume slider). Right now, in spec. analyzer mode the levels are always affected.
Debug Show available sound devices and inputs.

Performance

SpecGP was optimized for a small display area. In my config (160x50 pixels, 19 bands, 50 ms refresh rate, spec. analyzer mode) SpecGP uses only about 0.3% of CPU, less than my main Samurize config (which monitors hard disks, RAM, CPU, network traffic, weather, etc.)

Audio input/output

In spectrum analyzer mode, SpecGP reads the default input (Sound Properties->Recording). Set it to Stereo Mix ("What You Hear") to pick up all audio. VU mode reads the default endpoint (Sound Properties->Playback, e.g. Speakers). Set your sound card accordingly.

If you use the default input, you don't need to do anything else. If you want to specify a non-default input for use in SpecGP, place a file called SpecGPSet.ini in the plugins folder. Without this file, default values are used. Note: in SpecGPSet.ini, the value of "-1" means "use default device/input". Use the Debug button to identify devices. An example:

AudioDevice=2
AudioInput=-1

Notes

  • You may want to use SpecGP in a separate config with a high refresh rate (50 ms), while keeping the other configs at a lower rate.
  • In the Config editor, SpecGP should react to the sound after a redraw (e.g. when you reload plugins or resize the plugin area)
  • SpecGP uses the excellent BASS sound library (free for non-commercial purposes). Keep the included BASS.dll where Windows can find it, eg: C:\Windows\System32 (32-bit), C:\Windows\SysWOW64 (64-bit). Check the PATH environment variable for other possible locations.
  • If a bar moves in sync with an adjacent bar, increase the FFT size. You can also cheat by blending the motion of the "bad" bar with the one to the left. Add this to your config (BarBlendID1 is the "bad" bar's index):
BarBlendOn=1
BarBlendID1=1

Download

Download SpecGP_1.45.zip (253K)