Rainmeter ~ Elegant Music Player


vsthemes.org

vsthemes.org/en/skins/rainmeter/45451-elegant-music-player
www.rainmeter.net

Foobar2000 ~ Grouping Schemes


How Grouping Schemes Work in foobar2000 Playlists

In foobar2000, a playlist is simply a list of tracks.
A grouping scheme is a set of rules that tells foobar2000 how to visually organize those tracks inside the playlist.

Grouping does not change:

  • The order of tracks
  • The audio files
  • The tags

Grouping only changes how tracks are visually grouped and labeled in the playlist.


What β€œGrouping” Means in Practice

When grouping is enabled, foobar2000 inserts group headers into the playlist.
Each header represents a group of tracks that share something in common, such as:

  • The same album
  • The same artist
  • The same year
  • The same format or codec

For example, instead of seeing a flat list of tracks, you might see:

Radiohead β€” OK Computer (1997)
  Airbag
  Paranoid Android
  Subterranean Homesick Alien

That header line is created by a grouping scheme.


How Grouping Is Different from Sorting

This distinction is important for beginners.

  • Sorting decides the order of tracks
  • Grouping decides where headers appear

You can:

  • Sort tracks by album and track number
  • Group tracks by album artist and album name

Grouping does not automatically sort tracks.
If tracks are not sorted in a way that matches the grouping rules, grouping may look incorrect.


What a Custom Grouping Scheme Is

A custom grouping scheme is a user-defined rule that tells foobar2000:

  1. When a new group should start
  2. What text should appear in the group header

It uses title formatting, the same system used for playlist columns and status bar text.


Custom grouping schemes are used in both UIs

  • The Default User Interface (DUI) playlist view
  • The Columns UI playlist (with slightly different configuration)

The concept is the same in both:
title formatting defines group identity and group header text.


The Two Parts of a Grouping Scheme

A grouping scheme has two logical parts:

1. Grouping Key (What Defines a Group)

This determines which tracks belong together.

Example grouping key:

%album artist%|%album%

This means:

  • All tracks with the same album artist and
  • The same album name
    will be placed into the same group.

If either value changes, a new group starts.


2. Group Header Display (What You See)

This defines what text is shown as the group header.

Example header display:

%album artist% β€” %album% (%date%)

Displayed header:

Radiohead β€” OK Computer (1997)

This is purely visual and can include:

  • Plain text
  • Fields
  • Conditional logic

A Simple Beginner Grouping Example

Grouping key:

%album%

Group header display:

Album: %album%

Result:

Album: OK Computer
  Airbag
  Paranoid Android

All tracks with the same album name are grouped together.


Why Grouping Often Uses Album Artist Instead of Artist

Many albums contain tracks by multiple artists.
If you group only by %artist%, compilation albums will split into many groups.

Using %album artist% avoids this:

%album artist%|%album%

This keeps the album intact under one header.


Grouping and Playlist Columns Work Together

Grouping schemes use title formatting, just like playlist columns.

  • Playlist columns control what each track row shows
  • Grouping controls what the header above those rows shows

They are independent but complementary.

You might show:

  • Track number and title in the row
  • Album, artist, and year in the group header

Grouping Does Not Replace Multiple Playlists

Grouping is visual organization, not logical separation.

  • One playlist can contain many groups
  • Groups do not behave like folders
  • You cannot collapse groups into separate playlists automatically

Think of grouping as visual structure inside a single playlist.


Common Beginner Mistakes

  • Grouping without sorting first
  • Using %artist% instead of %album artist%
  • Expecting grouping to change playback order
  • Making grouping schemes too complex early on

A Practical Starter Grouping Scheme

Sort by:

%album artist% | %date% | %album% | %tracknumber%

Group by (key):

%album artist%|%album%

Group header:

%album artist% β€” %album% (%date%)

This produces clean, album-centric playlists suitable for most libraries.


Final Notes

  • Grouping schemes are purely visual
  • They rely on title formatting
  • Sorting and grouping must agree
  • Simple schemes work best for beginners

Once you understand grouping, foobar2000 playlists become far more readable and powerful without adding complexity.


Built-In Grouping Schemes in foobar2000 (And What They Produce)

Several predefined grouping schemes are already created. These are basic and simple title-formatting rules.

You can see them here:

Preferences β†’ Display β†’ Default User Interface β†’ Playlist view β†’ Grouping


1. β€œBy Album” (Default)

This is the most commonly used grouping scheme and the one most users start with.

Grouping Key (Conceptual)

Tracks are grouped when the album artist and album name change.

Effectively based on:

%album artist% + %album%

Group Header Display

Typically shows:

  • Album artist
  • Album name
  • Year (if available)

What the Playlist Looks Like

Pink Floyd β€” The Dark Side of the Moon (1973)
  01 Speak to Me
  02 Breathe
  03 On the Run
Pink Floyd β€” Wish You Were Here (1975)
  01 Shine On You Crazy Diamond
  02 Welcome to the Machine

Why This Works Well

  • Keeps albums intact
  • Handles compilation albums correctly
  • Matches how most people think about music collections

This is the recommended default for beginners.


2. β€œBy Artist”

This grouping changes whenever the track artist changes.

Grouping Key

%artist%

Group Header Display

Usually just the artist name.

Outcome

David Bowie
  Space Oddity
  Heroes
  Ashes to Ashes
Talking Heads
  Psycho Killer
  Once in a Lifetime

Important Limitation

  • Albums are not preserved
  • Tracks from different albums by the same artist are mixed together

This grouping is useful for:

  • Shuffled playlists
  • β€œBest of” or mixed artist views

It is not ideal for album-oriented listening.


3. β€œBy Album Artist”

This is similar to β€œBy Artist” but uses %album artist%.

Grouping Key

%album artist%

Outcome

Various Artists
  Track from Compilation A
  Track from Compilation B
Daft Punk
  Track from Discovery
  Track from Random Access Memories

When This Is Useful

  • Compilation-heavy libraries
  • Soundtracks
  • DJ-style playlists

Albums are still mixed together, but compilations stay intact.


4. β€œBy Directory Structure”

This groups tracks based on their file path, not tags.

Grouping Key (Conceptual)

%path%

Outcome

D:\Music\Pink Floyd\The Wall\
  Another Brick in the Wall
  Comfortably Numb
D:\Music\Radiohead\OK Computer\
  Airbag
  Paranoid Android

Why This Exists

  • Useful when tags are incomplete or inconsistent
  • Reflects how files are physically organized

Downsides

  • Breaks if you reorganize folders
  • Ignores metadata entirely

This is mainly for troubleshooting or legacy libraries.


5. β€œNo Grouping”

This disables grouping entirely.

Outcome

Airbag
Paranoid Android
Time
Comfortably Numb

When to Use It

  • Temporary playlists
  • Search results
  • Debugging sorting issues

This is effectively a flat list.


How These Rules Are Actually Applied

Internally, each built-in grouping scheme defines:

  1. When a new group starts
    (based on one or more title formatting fields)
  2. What text appears in the group header

You can view and edit these rules by:

  • Selecting a grouping scheme
  • Clicking Edit
  • Inspecting the title formatting expressions

This is how users learn grouping: by modifying existing schemes.


Why Sorting Matters (Again)

All built-in grouping schemes assume a compatible sort order.

Example:

  • Grouping by album
  • But playlist sorted randomly

Result:

  • Multiple album headers
  • Broken grouping

That’s why foobar2000 usually pairs:

  • Sort pattern
  • Grouping pattern

They are designed to work together.


What foobar2000 Does NOT Do Automatically

Even with built-in schemes, foobar2000 does not:

  • Auto-fix bad tags
  • Reorder tracks inside a group
  • Merge albums with inconsistent metadata

Grouping is visual logic only.


Why Built-In Schemes Are Important for Learning

The built-in grouping schemes are:

  • Real working examples
  • Written using standard title formatting
  • Safe to experiment with

The recommended learning path is:

  1. Duplicate an existing scheme
  2. Make small changes
  3. Observe the playlist outcome

This is far easier than writing one from scratch.


Summary

  • Built-in grouping schemes are prewritten title formatting rules
  • β€œBy Album” is the most balanced and beginner-friendly
  • Grouping affects visual structure only
  • Sorting and grouping must match
  • Editing existing schemes is the best way to learn

References:

wiki.hydrogenaudio.org/index.php?title=Foobar2000:Playlist_View#Custom_Grouping_Schemes

foo_vis_wispan ~ Winamp Spectrum Analyzer


foo_vis_wispan is a Foobar2000 spectrum analyzer visualization implemented with GDI. It is a port of the Classic Spectrum Analyzer (vis_classic) Winamp visualization plug-in by Mike Lynch.

Features:

  • Accurate, detailed, customizable spectrum analyzer.
  • vis_classic library has been upgraded to compile with a modern toolset.
    • Upgraded the resolution of the waveform passed into the library from 8 bits to 16 bits.
    • Other changes are mainly to integrate with foobar2000 instead of Winamp.
    • That means bugs in the original are still likely to be present.
  • Options can be modified and their effects viewed in real-time as the component is running.
  • Compatible with the Default User Interface (Default UI) and the Columns User Interface (Columns UI).
  • Tested on foobar2000 v2.25.3 (x86 32-bit and x86 64-bit) and Microsoft Windows 11 (Build 26200).

www.foobar2000.org/components/view/foo_vis_wispan
wiki.hydrogenaudio.org/…/Foobar2000_visualization_components

Resources:

en.wikipedia.org/wiki/Spectrum_analyzer

Bitter ~ Bitscope & Intersample Clip Monitor


Bitter shows how many of the available bits are being used by the audio signal, reports clipping samples, and estimates when digital-to-analog conversion would cause inter-sample clips. Typical uses for a bitscope include: verifying that a render dither is working properly; verifying that a particular plugin is not reducing the signal bit depth; testing for faulty audio source data.

Features:

  • Check for Intersample Clipping that may appear during digital-to-analog conversion
  • Detailed display of the usage density of each bit
  • Reveal the bitrate of the digital signal, which may well differ from that of the file’s bitrate or your DAW’s audio engine bitrate
  • Display the audio sample rate

www.stillwellaudio.com/plugins/bitter

HiddenWave ~ Embed Messages In Wave Files


Hiddenwave is a python based program for simple audio steganography. You can hide your secret text messages in wave or mp3 audio files. You can play this audio in any media player and secretly share your private message with anyone.

github.com/techchipnet/HiddenWave (Python)
github.com/thehackersbrain/hiddenwave (C++)

foo_outinfo ~ Foobar2000 Output Information


Installing foo_outinfo allows for accessing the actual specs of the audio being played and the output device information using titleformatting.

The fields exposed by this component are:

%output_samplerate%Returns the sample rate entering output component
%output_channels%Returns the number of channels entering output component
%output_channel_mask%Returns the description of above channel configuration
%output_bitdepth%Returns the bitdepth used by output component, or best guess in case output doesn’t specify
%output_device%Returns the name of the output device
%output_dsps%Returns the list of active DSPs
%output_dsp_preset%Returns the name of the active DSP chain preset
%output_volume%Returns the playback volume in dB
%output_rg_source%Returns the ReplayGain source mode
%output_rg_mode%Returns the ReplayGain processing mode
%output_rg_gain%Returns the effective ReplayGain gain value in dB
%output_rg_peak%Returns the effective ReplayGain peak value
%output_rg_peak_db%Returns the effective ReplayGain peak value in dBFS
%output_buffer_length%Returns the output buffer length in ms

foobar.hyv.fi/?view=foo_outinfo
hydrogenaudio.org/index.php/topic,127228.0

Basic Status Bar Example Using foo_outinfo Fields

The foo_outinfo component exposes information about the current audio output and signal, such as the active output device, sample rate, bit depth, and channel count. These fields are especially useful in the status bar, where you want quick technical confirmation without cluttering playlists.

A simple and practical example is:

Now Playing: %artist% - %title% | %output_samplerate% Hz / %output_bitdepth% bit


What This Displays

When a track is playing, the status bar would show something like:

Now Playing: Miles Davis - So What | 44100 Hz / 16 bit

This tells you at a glance:

  • What is playing
  • The actual output sample rate
  • The output bit depth being sent to your audio device

Step By Step Explanation:

Music Metadata (Standard Fields)

%artist% - %title%
  • %artist% β†’ Track artist tag
  • %title% β†’ Track title tag

These are standard foobar2000 title formatting fields and work everywhere.


Separator

 |

This is just plain text. It visually separates the music info from the technical output info. You can replace it with a dash, bullet, or brackets if you prefer.


foo_outinfo Output Fields

%output_samplerate%
  • Displays the actual output sample rate in Hertz
  • Reflects resampling, DSP changes, or output driver behavior
  • This is more reliable than %samplerate% when DSPs are active
%output_bitdepth%
  • Displays the bit depth used by the output
  • Shows what is being sent to the DAC, not just what is in the file

More Informative Versions

If you want to include channels and output device name:

Now Playing: %artist% - %title% | %output_samplerate% Hz / %output_bitdepth% bit / %output_channels% channels

Displays:

Now Playing: Aphex Twin - Xtal | 48000 Hz / 24 bit / 2 channels

If you want to add the current Replaygain mode:

Now Playing: %artist% - %title% | %output_samplerate% Hz / %output_bitdepth% bit / %output_channels% channels | RG %output_rg_source%

Displays:

Now Playing: Aphex Twin - Xtal | 48000 Hz / 24 bit / 2 channels | RG Album

If you want to display the active DSP

$if(%output_dsp%, | DSP: %output_dsp%)

Displays the separator and active DSP, otherwise displays nothing:

| DSP: Resampler (SoX)

Minimal Technical Version (Very Clean)

For users who want only output confirmation:

Output: %output_samplerate% Hz / %output_bitdepth% bit

Displays:

Output: 96000 Hz / 24 bit

Why Use foo_outinfo in the Status Bar?

  • Confirms what your DAC is actually receiving
  • Helps verify exclusive mode, resampling, and DSP behavior
  • Avoids cluttering playlists with technical data
  • Ideal for users who care about signal integrity but want a clean UI

Beginner Notes and Caveats

  • All output_* fields require foo_outinfo to be installed
  • These fields only show values while audio is playing
  • If nothing is playing, the fields will appear empty
  • Output fields are best used in:
    • Status bar
    • Window title
    • Custom display panels

S Pulser ~ Tremolo Effect Plugin


S Pulser is a unique tremolo effect plugin, designed to help you effortlessly create captivating and rhythmic melodies. Ideal for music producers, sound designers, musicians, and DJs alike, this versatile tool is available for free download. Give it a try and explore new ways to streamline your music-making process.

www.solidersound.com/plugins/s-pulser

Rusty Pipes ~ Virtual Pipe Organ


Rusty Pipes is a digital organ instrument compatible with GrandOrgue sample sets. It features both graphical and text-based user interface, can be controlled via MIDI and play back MIDI files. Rusty Pipes can stream samples from disk instead of load them into RAM, though a RAM precache mode similar to GrandOrgue and Hauptwerk is available too.

rusty-pipes.com
github.com/dividebysandwich/rusty-pipes
en.wikipedia.org/wiki/GrandOrgue

Sample Rate Conversion Comparison ~ Hydrogen Audio


HydrogenAudio presents the definitive resource for testing sample rate conversion applications. Each Sample Rate Converter (SRC) is examined against multiple revealing tests, generating an overall quality ranking. A quality ranking needs careful consideration, these tests are formulated to test modern SRC routines, as such they are very sensitive way in excess of the 24 bit (-144dB) audible range. A SRC scoring 60% could very well have inaudible defects if converted to 24 bit, so why the need for high precision testing? An example might be in the studio, audio is processed in many ways, having a clean SRC converter allows further processing steps, including amplification, without fear of audible distortion. The best SRC have distortion down below -300 dBFS, giving plenty of head room for future processing and mixing of different sources.

src.hydrogenaudio.org
en.wikipedia.org/wiki/Sample-rate_conversion

DSOAL ~ DirectSound DLL Replacement


This project is for a DirectSound DLL replacement. It implements the DirectSound interfaces by translating the calls to OpenAL, and fools applications into thinking there is a hardware accelerated sound device. EAX is also implemented (up to version 4) by using OpenAL’s EAX extension, allowing for environmental reverb with sound obstruction and occlusion effects.

Effectively, this allows DirectSound applications to enable their DirectSound3D acceleration path, and turn on EAX. The actual processing is being done by OpenAL with no hardware acceleration requirement, allowing it to work on systems where audio acceleration is not otherwise available.

Or more succinctly: it enables DirectSound3D surround sound and EAX for systems without the requisite hardware.

github.com/kcat/dsoal
github.com/WinterSnowfall/dsoal

iobroker.foobar2000 ~ Foobar2000 Adapter For iobroker


Integrate Foobar2000 with iobroker home automation.

www.npmjs.com/package/iobroker.foobar2000
www.iobroker.net

OpenMusic ~ Music Composition Language


OpenMusic (OM) is a visual programming language based on Common Lisp. Visual programs are created by assembling and connecting icons representing functions and data structures. Most programming and operations are performed by dragging an icon from a particular place and dropping it to an other place. Built-in visual control structures (e.g. loops) are provided, that interface with Lisp ones. Existing CommonLisp/CLOS code can easily be used in OM, and new code can be developed in a visual way.

OM may be used as a general purpose functional/object/visual programming language. At a more specialized level, a set of provided classes and libraries make it a very convenient environment for music composition. Above the OpenMusic kernel, live the OpenMusic Projects. A project is a specialized set of classes and methods written in Lisp, accessible and visualisable in the OM environment. Various classes implementing musical data / behaviour are provided. They are associated with graphical editors and may be extended by the user to meet specific needs. Different representations of a musical process are handled, among which common notation, midi piano-roll, sound signal. High level in-time organisation of the music material is proposed through the concept of β€œmaquette”.

openmusic interface

openmusic-project.github.io
openmusic-project.github.io/openmusic
github.com/openmusic-project
en.wikipedia.org/wiki/OpenMusic

OM-SoX

OM-SoX is a library for multichannel audio manipulation and functional batch processing for OpenMusic, a visual programming environment based on CommonLisp / CLOS.

sourceforge.net/projects/omsox