foobar2000:Components/Waveform Seekbar (foo_wave_seekbar)

From Hydrogenaudio Knowledgebase
Jump to: navigation, search
Waveform Seekbar

Developer(s) Lars Viklund
Repository {{{repository}}}
Release information
Initial release January 3, 2010
Stable release 0.2.45 (February 8, 2014)
Preview release N/A
foobar2000 compatibility
Minimum version 1.1
Maximum version {{{foobar2000_maximum}}}
UI module(s) Default UI; Columns UI
Additional information
Use UI
License {{{license}}}
Discussion thread {{{discussion_thread}}}
View all components

Waveform Seekbar is a UI element for both the Default UI and Columns UI that provides seekbar functionality (seeking, position indicator) on top of a pretty image of the waveform of the currently playing song, drawn using either Direct3D 9.0c or Direct2D 1.0.

The Direct3D 9.0c mode requires a Pixel Shader 2.0 capable graphics card, and has some hacks to support legacy cards like the Intel GMA 950 (the graphics chipset on a lot of laptops). The HLSL effect can be modified to customize the look further.

In order to not bog the system down with analysis, it can extract the waveform signature of a song in advance through a context menu item. The process works in the background and resumes after closing foobar2000. It will automagically analyse the currently playing song and attempt to enqueue what it believes is the next song in case of the linear playback orders.

The seekbar has three frontends and a bunch of per-instance customizable settings accessible through the context menu, as well as seeking functionality if you click and drag, like the regular, boring seekbar.

The GDI+ mode requires Windows XP and GDI+, both of which anyone should have out of the box.


  • Semi-intelligent scanning of yet-to-be-played files in playlist (if it looks like songs are being played in order, the whole set will be scanned)
  • Multiple CPU threads supported for quicker scanning
  • Multiple channels handled (up to 18)
  • Optional folding to mono for display and/or storage
  • Custom visual effects (scale, shade) via user-editable text
  • Graphics drawn with either Direct2D (Windows Vista SP2 and up), Direct3D 9.0c, or GDI+ (CPU-intensive, no custom effects)
  • Cached waveform database can be compacted or cleared of 'dead' waveforms (those for which the audio file is gone)


Install the base package as described in its official support forum thread. After installing the base package there may be extra steps involved. The hint that you need to install something extra will be a message like:

This component is missing a required dependency, or was made for different version of foobar2000
  • Starting with version 0.2.35 (May 2013), as described by developer Zao in this update, you will need to separately install the Visual Studio 2012 Update 1 (x86) runtime.
    • For a portable installation you may need to manually find and copy the msvcr110.dll and msvcp110.dll installed by the VS runtime installer in the folder containing foo_wave_seekbar. Even on a 64-bit OS you still need the 32-bit dlls (follow details after the forum post linked above).
  • older versions have different requirements, listed at the start of the same forum thread.
  • Recent versions can display using basic GDI+ functionality (or direct-X 2D for recent Windows), but if you want customizable effects, you need to use Direct-X 3D mode, which requires the direct-X 9c end-user runtime. You need this no matter what direct-X comes with your installed version of Windows. After you download the web installer, run it to get the real package. Avoid the Bing offer (unless you really want it) and wait for the ~100MB download.


In the right-click menu in the Waveform Seekbar panel itself:

  • Configure
    • Frontend - Defaults to Direct2D 1.0 or Direct3D 9.0c depending on your version of Windows, but can be changed to GDI+. GDI+ is not recommended but may be necessary if you can't get Direct2D/3D to work. If you're having problems, try getting the latest DirectX.
      • Frontend settings - If there are options specific to the selected frontend, this button will be enabled so you can access them.
    • Colors - You can customize the background, foreground, highlight, and selection colors by checking the boxes and clicking on the color samples.
    • Misc.
      • Shade played - Check if you want the area to the left of the seek position indicator to be highlighted.
      • Disable window border
      • Downmix display to mono - This combines all channels into one front center (mono) channel for display. If you're only interested in seeing one waveform, check this box.
    • Channel display order - You can choose which channels from the file, if they exist, are shown, and in what order. If you have the Downmix display to mono box checked, make sure you also have the front center (mono) channel selected here.

Advanced preferences

In the foobar2000 Preferences, under Advanced > Tools > Waveform Seekbar:

Analyze tracks not in the media library
By default, this is unchecked, meaning you won't see waveforms for tracks that aren't in your media library. If you aren't using the library features of foobar2000, you'll want to check this box.
Number of concurrent scanning threads (capped by current processor count)
If the scanning of yet-to-be-played files in your playlist is too slow, you can try increasing this, up to a maximum of the number of processors/cores your computer has.
Store analysed tracks in mono
Every channel's waveform is scanned and stored separately. If you're only ever going to be displaying a single, mono waveform for each file, you can check this box to save space by only storing the merged waveforms.

Custom waveform rendering

In Direct3D mode, you can change how the waveform is drawn. This used to be accomplished through an external seekbar.fx file in a %APPDATA%\foobar2000\effects folder, but the HLSL instructions are now entered from the within the component, in the Frontend settings (see above).


After installation, you still have to add it to your layout. Depending on where you put it, the panel may be collapsed when you first add it; make sure to enlarge it in the layout editor before assuming it's not working.

File locations

You shouldn't need to get into these folders, but for troubleshooting, it may be helpful:

  •  %APPDATA%\foobar2000\wavecache.db - This is where the analyzed waveforms are stored. You can remove all the waveforms by deleting this file; it will be created again when the next waveform is generated.
  •  %APPDATA%\foobar2000\user-components\foo_wave_seekbar - The DLLs live in this folder.

After finding this page I couldn't find the database. After a bit of searching it was found at:

  •  %PROGRAMFILES%\foobar2000\wavecache.db

See also

External links