Foobar2000:Components/Waveform Seekbar (foo wave seekbar)
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 horrible cards like the Intel 945 (the graphics chipset on a lot of laptops). The HLSL effect (seekbar.fx
, in the effects directory) can be modified using any text editor to customize the look further.
In order to not bog the system down with analysation, 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 XP and GDI+, both of which anyone should have out of the box.
Features
- 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
seekbar.fx
file - 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)
Settings
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.
- 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.
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).
Troubleshooting
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.
External links
- foo_wave_seekbar announcement, info, links & discussion (forum thread)