Waveform Minibar (mod)

Component for foobar2000 v1.5 and newer.

foobar2000 v1.4 version available here.

foobar2000 v1.3 version available here.

Released:2024-01-16 11:24
Size:566.4 KB
License:Modified ISC license




´╗┐Seekbar that shows the waveform of the track. Lighter, fully software implemented version of the original Waveform Seekbar. Heavily based on zao's excellent Minibar component.

Scanned waveforms configured to be saved are stored in minibar.db inside the foobar2000 profile directory. By default only tracks in Media Library are saved. Other scan results are cached temporarily in memory.


Additional info


1.2.58 (2024-01-16):Better fix for out-of-memory error for waveform render. Now just the waveform rendering is skipped and error reported.
1.2.57 (2024-01-16):Fixed an unhandled crash on memory allocation failure when rendering waveform. Added Default UI button state support. Tooltip dark mode now supported on Columns UI even without foobar2000 v2.x. Changed transparency feature to only have effect with Columns UI.
1.2.56 (2024-01-14):Added option to use transparent background.
1.2.55 (2023-07-11):Made tooltip dark mode aware.
1.2.54 (2023-05-05):Improved scroll wheel seek amount adjustments.
1.2.53 (2023-03-16):Recompile with latest SDK and foobar2000 v1.5 compatibility.
1.2.52 (2022-09-03):Fixed custom color adjustment to update the UI properly.
1.2.51 (2022-08-27):Right click context menu cancels active seek drag. Switched to use SQLite bundled by the player. Added dark mode support.
1.0.50 (2022-08-20):Added option to scale waveform by ReplayGain values.
1.0.49 (2022-04-24):Fixed the preferences page font some more.
1.0.48 (2022-04-20):Fixed component hanging on sources without length.
1.0.47 (2022-04-06):Enhanced half wave mode to always show the larger peaks instead of always showing just the top half. Added half wave mode to the UI element context menu. Changed the preferences page to use the default dialog font. Made the waveform regeneration of the currently visible track take immediate effect.
1.0.46 (2022-03-06):Fixed UI element flashing white on start. Enhanced rate limiting for render progress updates so drawing frequency is automatically reduced if machine can't keep up. Added option to blank waveform display after playback stops. Added option to render only half of the waveform.
1.0.45 (2021-05-09):Latest foobar2000 SDK generates code that requires Vista+. Reverted to 2019-11-29 SDK. Also reverted to older SQLite for reduced binary size.
1.0.44 (2021-05-08):Fixed seek tooltip showing invalid timestamps when dragging the slider beyond the minibar. Updated to latest SDK and SQLite.
1.0.43 (2020-11-22):Further increased the allowed length mismatch before scan results are discarded.
1.0.42 (2020-11-22):Waveform scan result is no longer discarded if the decoded length is slightly shorter than the file info indicates.
1.0.41 (2020-10-19):Added milliseconds as an optional unit for wheel scroll.
1.0.40 (2020-10-18):Fixed a crash bug with the new scan feature.
1.0.39 (2020-10-18):Added Columns UI button state support for the halt command. Added context menu command for generating missing waveforms.
1.0.38 (2020-09-23):Changed decoder initialization flags to allow inaccurate seeking to improve subsong scanning speed.
1.0.37 (2020-08-17):Removed useless console debug output.
1.0.36 (2020-08-09):Stores the lengths of unseekable tracks in memory. Added a workaround for unseekable file seeking failing if foo_skip is installed.
1.0.35 (2020-08-08):Improved downmixing of multichannel audio. Moved length scanning of tracks with unknown length to a background thread. Restored length scanner to respect the speed-based abort option. Fixed unscanned tracks to be shown as blank.
1.0.34 (2020-04-12):Changed waveform scale normalization to take place after image scaling to improve its accuracy.
1.0.33 (2020-01-29):Fixed a crash bug introduced by the error reporting change.
1.0.32 (2020-01-29):Fixed %filesize% formatting not working. Improved error reporting in case of an error after requested decoder release.
1.0.31 (2019-10-21):Added file lock manager support to allow tagging files during waveform scanning.
1.0.30 (2019-10-19):Fixed waveform rendering stopping on its own when non-playing waveform was viewed for too long.
1.0.29 (2019-10-18):Changed render loop to stop update timer on pause only after playback actually stops progressing - previously progress during output component's fade-out was not shown. Added render target preference and halt processing settings to context menu.
1.0.28 (2019-08-02):Made the seek hack DSP hidden. Added configuration option to select which scan results to store in the database. Moved the "do not revert..." option to "track to prefer" dropdown.
1.0.27 (2019-07-23):Added optional translucency support for cursor.
1.0.26 (2019-07-07):Fixed waveform display of short tracks.
1.0.25 (2019-03-23):The old cursor render code was used for case where waveform was missing or disabled.
1.0.24 (2019-03-18):Added basic right click context menu that allows switching between linear and logarithmic modes quickly and has a shortcut to open the configuration screen.
1.0.23 (2019-03-17):Added configuration options to seek shorter distances with mouse wheel. Improved cursor motion smoothness. Made cursor width configurable.
1.0.22 (2019-02-14):Setting minibar width or height to 5 pixels or less will turn the element blank. Improved waveform render canceling with stop. Now the canceled waveform is cleared.
1.0.21 (2018-12-06):Fixed waveform not updating while paused if seeking without using minibar. Waveform extraction for playing track is aborted when playback is stopped. Unhalting waveform processing refreshes current track automatically.
1.0.20 (2018-11-18):Added option to disable waveform extraction speed check.
1.0.19 (2018-08-24):Added optional logarithmic scale for waveform display.
1.0.18 (2018-08-14):Removed buggy color client entry from Columns UI color configuration. Made border style adjustment take effect immediately.
1.0.17 (2018-07-16):Render cursor even in halted mode.
1.0.16 (2018-07-14):Changed halt status into a saved setting. Unhalting will now automatically process the current waveform. Added experimental feature where automatic waveform extraction gets terminated when decoding happens too slowly.
1.0.15 (2018-06-18):Added third waveform display method that prefers playing track and reverts to selected track in stopped state. Added menu command to temporarily stop waveform processing.
1.0.14 (2018-05-29):Added option to reverse the mouse wheel seeking direction.
1.0.13 (2018-05-27):Added vertical scaling setting for waveform. Fixed config having unintentionally editable comboboxes.
1.0.12 (2018-03-02):Fixed a typo in the code so sync-with-library can actually be started. Changed SQLite not to allow opening the database in read-only mode. Made the component refuse to perform long scan operations if database can't be written. Added file names to console scan reports. Switched compression routines to use the zlib1.dll bundled by the player. Whitelisted tone:// and sweep:// protocols so their waveforms are shown.
1.0.11 (2018-02-28):Added support for seeking with mouse wheel.
1.0.10 (2018-02-25):Fixed crash with decode errors.
1.0.9 (2018-02-23):Enabled waveform display for local files that report no length. Added a hack to allow seeking in non-seekable local files.
1.0.8 (2018-01-21):Fix to waveform not updating when stopping from a paused state. Made waveform not disappear when layout is modified.
1.0.7 (2018-01-20):Made refresh rate configurable. Screen updating is halted while playback is paused or stopped.
1.0.6 (2018-01-10):Added option not to show the waveform for active track when player is started and nothing is playing.
1.0.5 (2018-01-06):Fixed a situation where database was loaded too late and the first track after player start was rescanned unnecessarily. Dynamic C runtime version for foobar2000 v1.4
1.0.4 (2017-12-16):Fixed a bug that waveforms scanned with the context menu tool were always saved in the database. Added option to always show playback position cursor. Normally it's visible only when waveform can't be shown.
1.0.3 (2017-12-11):Seekbar now allows starting playback of the viewed track from the selected position by clicking on the waveform. Modified selection based waveform viewing to require single selected track.
1.0.2 (2017-12-09):Moved configuration from advanced preferences to regular preferences. Added ability to use UI colors and changed the waveform to use UI colors by default.
1.0.1 (2017-12-08):Fixed scanning hanging with very short files
1.0 (2017-12-07):First released modified version of zao's Waveform Minibar component. Changed database name not to conflict with the original. Added some safety checks to prevent crashing on errors. Modified the waveform display to show waveform shape for short files. Fixed RMS rendering not to overlap with waveform. Added ability to optionally show waveform for selected track instead of currently playing track.