Skip Track

Component for foobar2000 v1.5 and newer.

foobar2000 v1.4 version available here.

foobar2000 v1.1 version available here.

Released:2024-05-07 09:27
Size:169.2 KB
License:Modified ISC license




Skips tracks that match user configurable title formatting string. By default skips over each track with Rating set to 1.

Additional info


1.40 (2024-05-07):Removed restriction where manual bookmarking was only allowed for local file paths. DSP is no longer forcefully activated unless the component is enabled. Removed some support code for foobar2000 versions older than 1.5 as new SDK isn't compatible with those versions anyway. Repeat skip detection improved, status is now reset when playing a track that isn't skipped.
1.39 (2024-01-09):Fixed preferences dialog being clipped on high DPI mode. Added Default UI button state support.
1.38 (2023-09-15):Changed skip_count title format field name to skip_track_skip_count. Updated to latest SDK.
1.37 (2023-03-16):Recompile with latest SDK and foobar2000 v1.5 compatibility.
1.36 (2022-08-27):Added dark mode support.
1.35 (2022-07-01):Fixed incorrect time parsing when millisecond accuracy was used.
1.34 (2021-08-05):Fixed converter DSP not resetting partial skip list after each track. Reverted to older SDK to restore Windows XP compatibility.
1.33 (2021-03-21):Fixed playlist length not changing when changing playback to another playlists.
1.32 (2020-11-29):Added support for skipping streams. This requires enabling the setting "treat query as titleformat string" and writing the skip string as a regular titleformat string. If the string evaluates to anything but empty string or 0 the track will be skipped.
1.31 (2020-10-17):Added Columns UI button state support.
1.30 (2020-09-13):Removed all restrictions from bookmarking code that limited it to function only with local files and changed bookmarks to use foobar's metadb index store instead of file tags.
1.29 (2020-07-10):Improved performance of playlist length computation.
1.28 (2020-06-22):Changed behavior with "Repeat (track)" playback order. Now manually selecting a skippable track will allow the track to play once but not continue looping.
1.27 (2020-06-21):Fixed skipping not working with "Repeat (track)" playback order. Added tracking of skip counts - visible in the properties dialog and accessible with title format field %skip_count%. Added rounding to playlist_length functionality and made $playlist_length() function return one as a minimum value instead of zero.
1.26 (2020-05-16):Fixed playback resume to be treated like manual track selection. Added new titleformat variable %playlist_length% which returns the total duration of the playing playlist in minutes. Added new function $playlist_length(unit, percentage) which returns the wanted percentage of the total duration of the playlist in chosen unit.
1.25 (2020-04-09):Fixed the timestamp skip check.
1.24 (2020-04-09):Reverted the change introduced in version 1.17. Instead SKIP isn't treated as a timestamp if it doesn't include colon or decimal dot.
1.23 (2020-03-28):Automatic bookmarking will ignore the playing track if the bookmark is manually removed. Adjusted autobookmarking behavior with seeking. Added new titleformat variable %playback_reason% to further control skip behavior.
1.22 (2020-03-25):Fixed autobookmarking of tracks outside media library to also require 10 seconds of playback before being triggered. Added 10 second playback requirement after forward seek until new position is used for autobookmarking. Renamed bookmark menu entries to include mention of Skip Track.
1.21 (2020-03-24):Added setting to allow automatically bookmarking tracks outside media library too. Added option to restrict bookmarking to tracks that match a query string.
1.20 (2020-03-14):Made %playlist_name% and %playback_order% checks case insensitive. Fixed %playlist_name% to reflect playing playlist and not active playlist.
1.19 (2020-03-07):Fixed dynamic_assert failure with repeated skip.
1.18 (2020-02-24):Switching component on or off unintentionally triggered the bookmarking command.
1.17 (2020-02-10):Doesn't use %SKIP% tag for time based partial skipping if it's used in the skip query.
1.16 (2019-10-04):Reintroduced bookmarking support (requires foobar2000 v1.5 series).
1.15 (2019-08-24):The DSP is automatically enabled when playback is started on foobar2000 v1.5 series and disabled on foobar2000 v1.4 series.
1.15beta2 (2019-08-20):Restored the ability to force play a skippable track that got broken in beta 1. Made the component not skip the playing track mid-playback if the decoder gets reinitialized for any reason.
1.15beta1 (2019-08-07):Added support for arbitrary number of skip positions. Added support for new APIs introduced with foobar2000 v1.5. The new interface makes the component fully compatible with External Tags and partial skipping works without altering track lengths and remains compatible with DSP effects. The component needs to be inserted into the DSP chain on foobar2000 v1.5.
1.10.3 (2019-07-29):Removed the restrictions added for 1.10 that excluded the component from streams and prevented it from using input redirectors
1.10.2 (2019-07-19):Removed External Tags exclusion when new-enough version of the component is installed. Restored partial skip support for tracks that would normally be skipped
1.10.1 (2019-07-17):Fixed delay insertion when continuously skipping tracks. Fixed "stop playback after repeated skips" to work when looping backwards. Fixed manual skip override to work with m-TAGS
1.10 (2019-07-16):Added configuration to select if full track skipping should be active outside normal playback. Fixed queue not being able to force play tracks that would normally be skipped. Fixed Previous button being able to jump backwards in history over skipped tracks. Removed bookmark support
1.10 beta 2 (2019-07-14):Made "Skip even manually selected tracks" setting work. Prevented the component from being able to freeze the player on continuous track skipping.
1.10 beta 1 (2019-07-14):Removed DSPs and made the skip component work as an input decoder. Added option to stop playback on repeated skips
1.9.10 (2018-01-06):Skip timestamp parser doesn't overflow from decimals so easily anymore. Dynamic C runtime version for foobar2000 v1.4
1.9.9 (2017-08-15):Skipping the end of a track prevented Stop after current from working. Now playback is stopped in this case. Unfortunately cursor won't advance to the next track like it normally would
1.9.8 (2016-04-17):Fixed incorrect behavior when using Previous-command after skipping a track
1.9.7 (2015-01-05):Fixed conflicts between SKIP tag and other components that try to seek
1.9.6 (2014-12-03):Fixed DSP part playing silence if component was enabled while playing a track that should be skipped
1.9.5 (2014-11-06):Fixed to work with other DSPs that request track change marks
1.9.4 (2014-10-13):Added safety checks to callbacks to stop all action after on_quit is called
1.9.3 (2014-09-30):Fixed query string length limit
1.9.2 (2014-09-29):Moved settings from advanced preferences to main preferences
1.9.1 (2014-09-20):Bugfixes
1.9 (2014-08-05):Fixed muted output when resuming in paused state. SKIP and BOOKMARK fields no longer override playback resume position. Allows other components to seek to any position on track start regardless of SKIP field's presence.
1.8.9 (2014-07-19):Changed not to skip tracks if skip query is empty.
1.8.8 (2014-07-06):Fixed %playlist_name% handling.
1.8.7 (2014-05-01):Fixed playback skipping not always working.
1.8.6 (2014-04-28):Properly fixed Converter DSP failing to skip parts. Fixed playback failing to skip ending of track if SKIP tag specified also beginning of track.
1.8.5 (2014-04-27):Fixed Converter DSP failing to skip end of track.
1.8.4 (2014-04-20):Fixed skip check for the next track if component was enabled during playback. Added status printing for queue sourced tracks.
1.8.3 (2014-03-06):Removed the DSP change checks introduced in version 1.7.3. These were misbehaving with at least foo_playlist_attributes.
1.8.2 (2014-03-04):Now considers queued tracks to be manually selected and uses the appropriate skip rule.
1.8.1 (2014-02-27):Recompile with SSE2 optimizations disabled.
1.8 (2014-02-23):Moved track skip logic to be performed entirely in the DSP. Fixed partial skipping with SKIP tag. Now also comes with an additional DSP for Converter use. Converter behavior when skipping entire tracks depends on output codec. WAV for example produces zero byte file and converter reports error, FLAC produces no output.
1.7.8 (2013-04-13):Changed DSP skip check to allow core callbacks more time to skip track before giving up
1.7.7 (2013-03-24):Fixed bug that component did not respect playback queue
1.7.6 (2013-03-23):Documented all the special fields skip query supports
1.7.5 (2013-01-26):Added support for $rand() function
1.7.4 (2011-07-02):Bookmark tag isn't updated if another component changes playback position immediately after track is opened. Fixed 'Skip to end' behavior with 'Repeat (track)' playback mode. Allowed use of 'Skip to end' feature together with bookmarks.
1.7.3 (2011-06-29):Fixed DSP chain adjustments causing pauses in audio. Fixed bookmarks disappearing unintentionally in some cases.
1.7.2 (2011-06-25):Fixes to bookmarking related features. Changed autobookmarking not to tag files during the first ten seconds of playback.
1.7.1 (2011-06-25):Added an option to keep bookmarks of manually bookmarked tracks updated too. Now updates bookmark also when playback is stopped.
1.7 (2011-06-25): Added support for bookmarking tracks. Can also automatically bookmark tracks that are in Media Library.
1.6 (2011-06-20): Added support for querying current playback order name using %playback_order%
1.5.1 (2011-03-27):Fixed an issue where the DSP could start playing silence in some situations when using time expressions.
1.5 (2011-03-12): Fixed manual playback of files from Media Library Search window. Added support for time expressions in the skip string (time expressions in the DSP component require foobar2000 v1.1.6 or newer).
1.3 (2010-08-23): Allows skipping both the beginning and the end of a track.
1.2 (2010-07-04): Allows skipping a part inside a track. Syntax SKIP=[from-time]-[to-time]. Changed status bar description for main menu entry to show current skip query string.
1.1 (2010-07-04): Added support for querying current playlist name using %playlist_name%. Added support for skipping the beginning or the end of a track by using tag field SKIP. To skip the beginning, use syntax SKIP=-<time>. To skip the end, use SKIP=<time>-.
1.0 (2010-05-02): Previous version broke gapless playback. Simplified the DSP code. Skip Track should be the last DSP in the chain.
0.9 (2010-05-02): Beginning of a skipped track was still played even when using DSP.
0.8 (2010-04-24): Bugfix: DSP component skipped some short tracks always. Added console notification about skipped track.
0.7 (2010-01-16): Better thread safety. Should no longer hang playback when changing DSP configuration while playing. Added support for dynamic title change detection.
0.6 (2010-01-16): Added optional DSP component for increased skipping accuracy. Changed configuration to use search query syntax.
0.5 (2009-12-25): Added option to force skip tracks even when manually selecting them.
0.4 (2009-01-03): Behavior change: track is not skipped if formatting string evaluates to 0.
0.3 (2008-11-03): Bugfix: backwards skipping didn't work properly when there were more than one track to skip.
0.2 (2008-11-02): Doesn't skip manually selected track or currently playing track when foobar resumes after restart. Skips to previous track when to-be-skipped track was reached by user pressing Prev-button.