<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hydrogenaudio.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FofR</id>
	<title>Hydrogenaudio Knowledgebase - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hydrogenaudio.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FofR"/>
	<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Special:Contributions/FofR"/>
	<updated>2026-04-29T13:52:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=16598</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=16598"/>
		<updated>2007-02-21T00:24:45Z</updated>

		<summary type="html">&lt;p&gt;FofR: /* External Guides */  added link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{notitle}}&amp;lt;div style=&amp;quot;position: relative; top: -45px; z-index: 100;&amp;quot;&amp;gt;&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;border: 1px solid #777777; padding: 10px; border-bottom: 0px;&amp;quot; colspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 24px; border: 0px; font-weight: normal; padding-left: 5px; margin: 0px;&amp;quot;&amp;gt;[[Image:foobar2000 Logo.png]] the foobar2000 wiki&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border: 1px solid #777777; padding: 10px; border-right: 0px;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;foobar2000&#039;&#039;&#039; is a freeware audio player, and more. Apart from audio playback, it also supports media libraries, file conversion, CD ripping, and many more powerful features.&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #CCCCCC; padding: 5px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The latest stable version is:&#039;&#039;&#039; [http://www.foobar2000.org/foobar2000_0.9.4.2.exe v0.9.4.2]&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The latest beta version is:&#039;&#039;&#039; None&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
* Open component architecture allowing third-party developers to extend functionality of the player&lt;br /&gt;
* Full Unicode support&lt;br /&gt;
* [[Replaygain]] support&lt;br /&gt;
* Low memory footprint, efficient handling of really large playlists&lt;br /&gt;
* Advanced file info processing capabilities (generic file info box and masstagger)&lt;br /&gt;
* Highly customizable playlist display&lt;br /&gt;
* Customizable keyboard shortcuts&lt;br /&gt;
* Gapless playback&lt;br /&gt;
* Multiple playlists&lt;br /&gt;
* Music library&lt;br /&gt;
* Streaming Support&lt;br /&gt;
* Freeware&lt;br /&gt;
&lt;br /&gt;
==Supported Audio Formats==&lt;br /&gt;
&lt;br /&gt;
Native Support (&amp;quot;out-of-the-box&amp;quot;):&lt;br /&gt;
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[Speex]], [[WavPack]], [[WAV]], [[AIFF]], [[AU]], [[SND]], [[CDDA]], [[WMA]].&lt;br /&gt;
&lt;br /&gt;
Supported through plug-ins:&lt;br /&gt;
* [[TTA]], [[Monkey&#039;s Audio]], [[ALAC]], [[MOD]], [[SPC]], [[TFMX]], [[Shorten]], [[OptimFROG]], [[LPAC]], [[AC3]], [[DTS]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]], [[MMS]], [[RSTP]], etc.&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play music directly from compressed RAR, ZIP, [http://kode54.foobar2000.org/foo_unpack_jma.zip JMA] &amp;amp; [http://kode54.foobar2000.org/foo_unpack_lha.zip LHA] archives without requiring the user to extract the files prior to playing.&lt;br /&gt;
&lt;br /&gt;
Foobar2000 has been coded exclusively for the Windows platform with an English interface. The author does not intend to provide alternate language versions nor alternate platform versions. However, several people have had success [http://www.hydrogenaudio.org/forums/index.php?act=ST&amp;amp;f=24&amp;amp;t=6349&amp;amp;hl=wine running foobar2000 on x86 Linux systems] by using [http://www.winehq.org/ Wine], although the Columns UI plugin is known to be problematic.&lt;br /&gt;
&lt;br /&gt;
==Using foobar2000==&lt;br /&gt;
* [[foobar2000:components 0.9|foobar2000 0.9.x Components]]&lt;br /&gt;
* [[foobar2000:Directories|foobar2000 Directories]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&lt;br /&gt;
* [[foobar2000:FAQ|foobar2000 FAQ]]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Guides foobar2000 Guides (category)]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Preferences foobar2000 Preferences (category)]&lt;br /&gt;
* [[foobar2000:Tips &amp;amp; Tricks|foobar2000 Tips &amp;amp; Tricks]]&lt;br /&gt;
&lt;br /&gt;
===Technical Information===&lt;br /&gt;
* [[Foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]&lt;br /&gt;
&lt;br /&gt;
===General Guides===&lt;br /&gt;
&#039;&#039;Note&#039;&#039; All &#039;&#039;&#039;general&#039;&#039;&#039; guides were written for 0.8.3 version and could contain outdated information. For 0.9 version, check out the External Guides below.&lt;br /&gt;
* [[foobar2000:Newbie User Guide|Newbie User Guide]]&lt;br /&gt;
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]&lt;br /&gt;
&lt;br /&gt;
===Specific Guides===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.9.x&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[foobar2000:Preferences|Preferences Dialog]]&lt;br /&gt;
* [[foobar2000:Titleformat Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* [[foobar2000:Titleformat Reference|Titleformat Reference]] - Quick-Reference for fields and functions&lt;br /&gt;
* [[foobar2000:Masstaggers User Guide|Masstagger]]&lt;br /&gt;
* [[foobar2000:Commandline Guide|Commandline Usage]]&lt;br /&gt;
* [[foobar2000:Increasing Performance|Increasing Performance]] - Tips&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.8.x&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following articles contain outdated information that does not apply to Foobar2000 v0.9:&lt;br /&gt;
* [[foobar2000:Tagz|Tagz (Simple Syntax)]]&lt;br /&gt;
* [[foobar2000:Tagscript|Tagscript (Script-like Syntax)]]&lt;br /&gt;
* [[foobar2000:Autoplaylist|Autoplaylist]] Guide and Cookbook&lt;br /&gt;
&lt;br /&gt;
===External Guides===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.9.x&#039;&#039;&#039;&lt;br /&gt;
* [http://fooblog2000.com/ Fooblog2000] News blog with the latest configuration/component tips and guides.&lt;br /&gt;
* [http://eolindel.free.fr/foobar0.9/ Bachi-Bouzouk&#039;s English/French guide] Complete manual about foobar2000, Replaygain, the masstagger (with a tutorial) and common plugins. Two rather extensive FAQ for UI columns and overall use. Step by step guide to help new users.&lt;br /&gt;
* [http://foobar.s53.xrea.com/index.html fb2k Wiki Page] for Japanese users.&lt;br /&gt;
* [http://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide].&lt;br /&gt;
* [http://www.bobulous.org.uk/misc/Replay-Gain.html Replay Gain] focusing on Foobar2000. (But the other articles on this site contain misleading information)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.8.x&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk&#039;s guide]&lt;br /&gt;
* [http://www.dizwell.com/prod/node/44 Howard Rogers&#039; Beginners&#039; Configuration Guide]&lt;br /&gt;
* [http://shsc.info/foobar2000#titelanker2 SH/SC New user guide]&lt;br /&gt;
* [http://www.techspot.com/tweaks/foobar/ TechSpot&#039;s &amp;quot;complete guide to Foobar2000&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==== Scripting Tutorials ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.9.x&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://eolindel.free.fr/foobar0.9/tutorial.php Bachi-Bouzouk&#039;s Scripting Tutorial] Color schemes detailed. Main functions explained, basic and complex code for your columns. Several .fcs explained, detailed FAQ.&lt;br /&gt;
* [http://tagz.brother-john.net/ Brother John&#039;s Foobar2000 Scripting Tutorial]&lt;br /&gt;
&lt;br /&gt;
==Important Links==&lt;br /&gt;
&lt;br /&gt;
===Official Site===&lt;br /&gt;
&lt;br /&gt;
* [http://www.foobar2000.org foobar2000.org: Homepage]&lt;br /&gt;
* [http://www.foobar2000.org foobar2000.org: Download]&lt;br /&gt;
* [http://www.foobar2000.org/requirements.html foobar2000.org: Requirements]&lt;br /&gt;
&lt;br /&gt;
===Community===&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showforum=28 Official foobar2000 forum]&lt;br /&gt;
* [http://foobar2000.fo.funpic.de/ German Support Forum]&lt;br /&gt;
* [http://www.foobar.prv.pl/ Polish-language forum]&lt;br /&gt;
* [http://www.foobar2000.tk Portuguese forum]&lt;br /&gt;
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar2000.ru/forum/ Another Russian-language forum]&lt;br /&gt;
&lt;br /&gt;
===Appearance===&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=49783 Configuration Distribution Thread] Fast Way To Clone Another&#039;s Advanced Configuration {{foobar2000v09}}.&lt;br /&gt;
* [[Foobar2000:Preferences:Columns UI/Appearance|Appearance]] Guides to customizing the look of your Foobar2000&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43077 Foobar Gallery 0.9]: screenshot thread {{foobar2000v09}}&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread {{foobar2000v08}}&lt;br /&gt;
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31027 Columns UI configs]: .fcs file format&lt;br /&gt;
|style=&amp;quot;border: 1px solid #777777; padding: 10px;&amp;quot; valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
{{Software Infobox|&lt;br /&gt;
|name = foobar2000&lt;br /&gt;
|screenshot = [[Image:Foobar2000v0.9.png|250px]]&lt;br /&gt;
|caption = Screenshot of foobar2000 v0.9 using the default user interface&lt;br /&gt;
|maintainer = Peter Pawlowski&lt;br /&gt;
|stable_release = 0.9.4.2&lt;br /&gt;
|preview_release = None&lt;br /&gt;
|operating_system = Windows&lt;br /&gt;
|use = Media Player&lt;br /&gt;
|license = Proprietary, BSD&lt;br /&gt;
|website = [http://www.foobar2000.org/ www.foobar2000.org]&lt;br /&gt;
}}&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 17px;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:foobar2000]]&lt;br /&gt;
[[Category:Media Players|foobar2000]]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_CwBowron%27s_Title_formating_(foo_cwb_hooks)&amp;diff=13388</id>
		<title>Foobar2000:0.9 CwBowron&#039;s Title formating (foo cwb hooks)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_CwBowron%27s_Title_formating_(foo_cwb_hooks)&amp;diff=13388"/>
		<updated>2006-09-11T15:00:44Z</updated>

		<summary type="html">&lt;p&gt;FofR: added new variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;foo_cwb_hooks&#039;&#039;&#039; adds various functions and variables to global title formatting.  The [http://wiki.bowron.us/index.php/Foobar2000#foo_cwb_hooks author&#039;s component page] may contain more up-to-date information on the plugin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Download:&#039;&#039;&#039; [http://foobar.bowron.us/foo_cwb_hooks.zip foo_cwb_hooks.zip]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*$cwb_urldecode / $cwb_httpclean - decodes characters in URLs&lt;br /&gt;
*$cwb_removethe - removes The and A at the beginning of a string&lt;br /&gt;
*$cwb_ltrim - example: $cwb_ltrim(%artist%,The) $cwb_ltrim(%artist%,The ,A ,La )&lt;br /&gt;
*$cwb_datediff(d1,d2) - number of days between two dates in the format yyyy-mm-dd or yyyy-mm-dd hh:mm:ss &lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&#039;&#039;Tagz updated September 11th 2006&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*%cwb_systemdate% - date in the formay yyyy-mm-dd&lt;br /&gt;
*%cwb_systemdatetime% - date and time in the format yyyy-mm-dd hh:mm:ss&lt;br /&gt;
*%cwb_activelist% - active playlist name&lt;br /&gt;
*%cwb_activelist_count% - number of items in the active list&lt;br /&gt;
*%cwb_playinglist% - playing playlist name&lt;br /&gt;
*%cwb_playinglist_count% - number of items in the playing list&lt;br /&gt;
*%cwb_queueindex% - queueindex if in the queue, false otherwise&lt;br /&gt;
*%cwb_queueindexes% - indices of the item in the queue, false otherwise&lt;br /&gt;
*%cwb_queuelength% - length of the queue&lt;br /&gt;
*%cwb_queue_end_playlist% - playlist of the last item in the queue&lt;br /&gt;
*%cwb_next_title% - title of the next song in the playlist of the playing item or the next item in the queue&lt;br /&gt;
*%cwb_next_artist% - artist of the next song in the playlist of the playing item or the next item in queue&lt;br /&gt;
*%cwb_playback_order% - e.g. Default, random, etc.&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
*%cwb_playinglist% and %cwb_activelist% changes won&#039;t refresh in displays &lt;br /&gt;
&lt;br /&gt;
==Feature Requests==&lt;br /&gt;
&#039;&#039;&#039;NOTE: These are NOT implemented.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add variables for the following:&lt;br /&gt;
**length of active playlist and playing list&lt;br /&gt;
**%_playbackorder%&lt;br /&gt;
**%_replaygain_mode% - not really possible&lt;br /&gt;
**%_database% - gives back if a file belongs to database or not&lt;br /&gt;
***not easily possibe because you cannot use SDK functions in the title formatting callback&lt;br /&gt;
***only way I could see to do it is to cache the library and test against that &lt;br /&gt;
**%_added% - timestamp when a file was added to database&lt;br /&gt;
***not really possible - timestamp is not stored when added when added to library&lt;br /&gt;
***could be possible with a plugin that stores the date added to the library&lt;br /&gt;
***library_callback implementing on_items_added() to store timestamps&lt;br /&gt;
&lt;br /&gt;
==Useful Strings==&lt;br /&gt;
&lt;br /&gt;
&#039;Played Today&#039;, &#039;Played Yesterday&#039;, &#039;Played n days ago&#039; or &#039;No last played info&#039; &lt;br /&gt;
&lt;br /&gt;
$if(%last_played%, $puts(diff,$cwb_datediff(%last_played%,%cwb_systemdate%)) Played $ifgreater(1,$get(diff),Today, $ifgreater(2,$get(diff),Yesterday, $get(diff) days ago)), No last played info)&lt;br /&gt;
&lt;br /&gt;
=Link=&lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000#foo_cwb_hooks Official Website]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43606&amp;amp;hl=foo_cwb_hooks Discussion thread]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Other Components|cwb_hooks]]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=File:Trackinfo-font-example.png&amp;diff=12942</id>
		<title>File:Trackinfo-font-example.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=File:Trackinfo-font-example.png&amp;diff=12942"/>
		<updated>2006-09-06T15:22:25Z</updated>

		<summary type="html">&lt;p&gt;FofR: Trackinfo Panel Mod Font Examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trackinfo Panel Mod Font Examples&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=File:Single_column_playlist-3.png&amp;diff=12600</id>
		<title>File:Single column playlist-3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=File:Single_column_playlist-3.png&amp;diff=12600"/>
		<updated>2006-08-31T15:29:44Z</updated>

		<summary type="html">&lt;p&gt;FofR: Single Column Playlist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Single Column Playlist&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=File:Minifooim0.png&amp;diff=12599</id>
		<title>File:Minifooim0.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=File:Minifooim0.png&amp;diff=12599"/>
		<updated>2006-08-31T15:28:00Z</updated>

		<summary type="html">&lt;p&gt;FofR: Single Columns Playlist Component&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Single Columns Playlist Component&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_CwBowron%27s_Title_formating_(foo_cwb_hooks)&amp;diff=12590</id>
		<title>Foobar2000:0.9 CwBowron&#039;s Title formating (foo cwb hooks)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_CwBowron%27s_Title_formating_(foo_cwb_hooks)&amp;diff=12590"/>
		<updated>2006-08-29T14:37:52Z</updated>

		<summary type="html">&lt;p&gt;FofR: /* Feature Requests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;foo_cwb_hooks&#039;&#039;&#039; adds various functions and variables to global title formatting.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Download:&#039;&#039;&#039; [http://foobar.bowron.us/foo_cwb_hooks.zip foo_cwb_hooks.zip]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*$cwb_urldecode / $cwb_httpclean - decodes characters in URLs&lt;br /&gt;
*$cwb_removethe - removes The and A at the beginning of a string&lt;br /&gt;
*$cwb_ltrim - example: $cwb_ltrim(%artist%,The) $cwb_ltrim(%artist%,The ,A ,La )&lt;br /&gt;
*$cwb_datediff(d1,d2) - number of days between two dates in the format yyyy-mm-dd or yyyy-mm-dd hh:mm:ss &lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
*%cwb_systemdate% - date in the formay yyyy-mm-dd&lt;br /&gt;
*%cwb_systemdatetime% - date and time in the format yyyy-mm-dd hh:mm:ss&lt;br /&gt;
*%cwb_activelist% - active playlist name&lt;br /&gt;
*%cwb_activelist_count% - number of items in the active list&lt;br /&gt;
*%cwb_playinglist% - playing playlist name&lt;br /&gt;
*%cwb_playinglist_count% - number of items in the playing list&lt;br /&gt;
*%cwb_queueindex% - queueindex if in the queue, false otherwise&lt;br /&gt;
*%cwb_queueindexes% - indices of the item in the queue, false otherwise&lt;br /&gt;
*%cwb_queuelength% - length of the queue&lt;br /&gt;
*%cwb_queue_end_playlist% - playlist of the last item in the queue&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
*%cwb_playinglist% and %cwb_activelist% changes won&#039;t refresh in displays &lt;br /&gt;
&lt;br /&gt;
==Feature Requests==&lt;br /&gt;
&#039;&#039;&#039;NOTE: These are NOT implemented.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add variables for the following:&lt;br /&gt;
**length of active playlist and playing list&lt;br /&gt;
**%_playbackorder%&lt;br /&gt;
**%_replaygain_mode% - not really possible&lt;br /&gt;
**%_database% - gives back if a file belongs to database or not&lt;br /&gt;
***not easily possibe because you cannot use SDK functions in the title formatting callback&lt;br /&gt;
***only way I could see to do it is to cache the library and test against that &lt;br /&gt;
**%_added% - timestamp when a file was added to database&lt;br /&gt;
***not really possible - timestamp is not stored when added when added to library&lt;br /&gt;
***could be possible with a plugin that stores the date added to the library&lt;br /&gt;
***library_callback implementing on_items_added() to store timestamps&lt;br /&gt;
&lt;br /&gt;
==Useful Strings==&lt;br /&gt;
&lt;br /&gt;
&#039;Played Today&#039;, &#039;Played Yesterday&#039;, &#039;Played n days ago&#039; or &#039;No last played info&#039; &lt;br /&gt;
&lt;br /&gt;
$if(%last_played%, $puts(diff,$cwb_datediff(%last_played%,%cwb_systemdate%)) Played $ifgreater(1,$get(diff),Today, $ifgreater(2,$get(diff),Yesterday, $get(diff) days ago)), No last played info)&lt;br /&gt;
&lt;br /&gt;
=Link=&lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000#foo_cwb_hooks Official Website]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43606&amp;amp;hl=foo_cwb_hooks Discussion thread]&lt;br /&gt;
&lt;br /&gt;
[[Category: Other components]]&lt;br /&gt;
[[Category: Library tools]]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=12589</id>
		<title>Foobar2000:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=12589"/>
		<updated>2006-08-29T14:35:55Z</updated>

		<summary type="html">&lt;p&gt;FofR: /* Component-specific fields and functions */  added CWB hooks link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article contains information about built-in titleformatting functions and field references with special meaning. References to documentation about fields and function which can only be used in specific components or which are provided by specific components can be found at the end of this article.&lt;br /&gt;
&lt;br /&gt;
A field reference is a field name enclosed in percent signs, for example &#039;&#039;%artist%&#039;&#039;. A function call starts with a dollar sign, followed by the function name and the parameter list. A parameter list can either be empty - denoted as &#039;&#039;()&#039;&#039; - or contain one or more parameters separated by commata, for example &#039;&#039;$abbr(%artist%)&#039;&#039;. Note that there must be no whitespace between the dollar sign and the function name, or the function name and the opening parenthesis of the parameter list.&lt;br /&gt;
&lt;br /&gt;
Please see [[Foobar2000:Titleformat_Introduction|Titleformat Introduction]] for a presentation of titleformat syntax in general.&lt;br /&gt;
&lt;br /&gt;
= Field remappings =&lt;br /&gt;
&lt;br /&gt;
Some of the fields accessible through &#039;&#039;%name%&#039;&#039; are remapped to other values to make writing titleformat scripts more convenient.&lt;br /&gt;
&lt;br /&gt;
== Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== %album artist% ===&lt;br /&gt;
Defined as &#039;&#039;$if3($meta(album artist),$meta(artist),$meta(composer),$meta(performer))&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== %album% ===&lt;br /&gt;
Defined as &#039;&#039;$if3($meta(album),$meta(venue))&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== %artist% ===&lt;br /&gt;
Defined as &#039;&#039;$if3($meta(artist),$meta(album artist),$meta(composer),$meta(performer))&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== %disc% ===&lt;br /&gt;
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to the %discnumber% remapping.&lt;br /&gt;
&lt;br /&gt;
=== %discnumber% ===&lt;br /&gt;
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to the %disc% remapping.&lt;br /&gt;
&lt;br /&gt;
=== %track artist% ===&lt;br /&gt;
Defined as &#039;&#039;$meta(artist)&#039;&#039;, if &#039;&#039;$meta(album artist)&#039;&#039; is different than &#039;&#039;$meta(artist)&#039;&#039;, otherwise this field is empty.&lt;br /&gt;
&lt;br /&gt;
=== %title% ===&lt;br /&gt;
Defined as &#039;&#039;$if2($meta(title),%_filename%)&#039;&#039;. Returns the &#039;&#039;title&#039;&#039; tag if available, otherwise it returns the filename excluding the extension.&lt;br /&gt;
&lt;br /&gt;
=== %track% ===&lt;br /&gt;
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to the %tracknumber% remapping.&lt;br /&gt;
&lt;br /&gt;
=== %tracknumber% ===&lt;br /&gt;
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to the %track% remapping.&lt;br /&gt;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
&lt;br /&gt;
=== %bitrate% ===&lt;br /&gt;
Defined as &#039;&#039;$if2($info(bitrate_dynamic),$info(bitrate))&#039;&#039;. Returns the current bitrate, if available, otherwise it returns the average bitrate. If neither is available, nothing is returned.&lt;br /&gt;
&lt;br /&gt;
=== %channels% ===&lt;br /&gt;
Defined as &#039;&#039;$channels()&#039;&#039;. Returns the number of channels in text form; returns &amp;quot;mono&amp;quot; and &amp;quot;stereo&amp;quot; instead of &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== %filesize% ===&lt;br /&gt;
Defined as &#039;&#039;%_filesize%&#039;&#039;. Returns the filesize in bytes.&lt;br /&gt;
&lt;br /&gt;
=== %samplerate% ===&lt;br /&gt;
Defined as &#039;&#039;$info(samplerate)&#039;&#039;. Returns the samplerate in Hz.&lt;br /&gt;
&lt;br /&gt;
=== %codec% ===&lt;br /&gt;
Defined as &#039;&#039;$codec()&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&lt;br /&gt;
&lt;br /&gt;
=== %playlist_number% ===&lt;br /&gt;
Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns the position of the track as index into the playlist. The first track has index 1. The index is padded from the left with zeroes to the same number of digits as the last track.&lt;br /&gt;
&lt;br /&gt;
= Control flow =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
&lt;br /&gt;
=== [...] (conditional section) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates the expression between &#039;&#039;[&#039;&#039; and &#039;&#039;]&#039;&#039;. If it has the truth value &#039;&#039;true&#039;&#039;, its string value and the truth value &#039;&#039;true&#039;&#039; are returned. Otherwise an empty string and &#039;&#039;false&#039;&#039; are returned.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;[%artist%]&#039;&#039; returns the value of the artist tag, if it exists. Otherwise it returns nothing, when &#039;&#039;artist&#039;&#039; would return &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then,else) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $if2(a,else) ===&lt;br /&gt;
&lt;br /&gt;
Like &#039;&#039;$if(a,a,else)&#039;&#039; except that &#039;&#039;a&#039;&#039; is only evaluated once.&lt;br /&gt;
&lt;br /&gt;
=== $if3(a1,a2,...,aN,else) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates arguments &#039;&#039;a1&#039;&#039; ... &#039;&#039;aN&#039;&#039;, until one is found that evaluates to &#039;&#039;true&#039;&#039;. If that happens, its value is returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifequal(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is equal to &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifgreater(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is greater than &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $iflonger(s1,s2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the length of the strings &#039;&#039;s1&#039;&#039; and &#039;&#039;s2&#039;&#039;, if &#039;&#039;s1&#039;&#039; is longer than &#039;&#039;s2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $select(n,a1,...,aN) ===&lt;br /&gt;
&lt;br /&gt;
If the value of &#039;&#039;n&#039;&#039; is between 1 and N, &#039;&#039;an&#039;&#039; is evaluated and its value returned. Otherwise &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
= Arithmetic functions =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to perform arithmetic on integer numbers. A string will be automatically converted to a number and vice versa. The conversion to a number uses the longest prefix of the string, that can be interpreted as number. Leading whitespace is ignored.&lt;br /&gt;
&lt;br /&gt;
Example: &amp;quot;c3po&amp;quot; -&amp;gt; 0, &amp;quot; -12&amp;quot; -&amp;gt; -12, but &amp;quot;- 12&amp;quot; -&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
=== $add(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Adds &#039;&#039;a&#039;&#039; and &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can be used with an arbitrary number of arguments. &#039;&#039;$add(a,b,...)&#039;&#039; is the same as &#039;&#039;$add($add(a,b),...)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $div(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Divides &#039;&#039;a&#039;&#039; through &#039;&#039;b&#039;&#039;. If &#039;&#039;b&#039;&#039; evaluates to zero, it returns &#039;&#039;a&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can be used with an arbitrary number of arguments. &#039;&#039;$div(a,b,...)&#039;&#039; is the same as &#039;&#039;$div($div(a,b),...)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $greater(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Returns true, if &#039;&#039;a&#039;&#039; is greater than &#039;&#039;b&#039;&#039;, otherwise false.&lt;br /&gt;
&lt;br /&gt;
=== $max(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Returns the maximum of &#039;&#039;a&#039;&#039; and &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can be used with an arbitrary number of arguments. &#039;&#039;$max(a,b,...)&#039;&#039; is the same as &#039;&#039;$max($max(a,b),...)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $min(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Returns the minimum of &#039;&#039;a&#039;&#039; and &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can be used with an arbitrary number of arguments. &#039;&#039;$min(a,b,...)&#039;&#039; is the same as &#039;&#039;$min($min(a,b),...)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $mod(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Computes the remainder of dividing &#039;&#039;a&#039;&#039; through &#039;&#039;b&#039;&#039;. The result has the same sign as &#039;&#039;a&#039;&#039;. If &#039;&#039;b&#039;&#039; evaluates to zero, the result is &#039;&#039;a&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can be used with an arbitrary number of arguments. &#039;&#039;$mod(a,b,...)&#039;&#039; is the same as &#039;&#039;$mod($mod(a,b),...)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $mul(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Multiplies &#039;&#039;a&#039;&#039; and &#039;&#039;b&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can be used with an arbitrary number of arguments. &#039;&#039;$mul(a,b,...)&#039;&#039; is the same as &#039;&#039;$mul($mul(a,b),...)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $muldiv(a,b,c) ===&lt;br /&gt;
&lt;br /&gt;
Multiplies &#039;&#039;a&#039;&#039; and &#039;&#039;b&#039;&#039;, then divides by &#039;&#039;c&#039;&#039;. The result is rounded to the nearest integer.&lt;br /&gt;
&lt;br /&gt;
=== $rand() ===&lt;br /&gt;
&lt;br /&gt;
Generates a random number in the range from 0 to 2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;-1.&lt;br /&gt;
&lt;br /&gt;
=== $sub(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Subtracts &#039;&#039;b&#039;&#039; from &#039;&#039;a&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can be used with an arbitrary number of arguments. &#039;&#039;$sub(a,b,...)&#039;&#039; is the same as &#039;&#039;$sub($sub(a,b),...)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Boolean functions =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to work with truth values (&#039;&#039;true&#039;&#039; and &#039;&#039;false&#039;&#039;), which have no explicit representation in titleformat scripts. They do not return a string or number value. You can use them for more complex conditions with &#039;&#039;$if&#039;&#039; and related functions.&lt;br /&gt;
&lt;br /&gt;
=== $and(...) ===&lt;br /&gt;
&lt;br /&gt;
Logical And of an arbitrary number of arguments. Returns &#039;&#039;true&#039;&#039;, if and only if all arguments evaluate to &#039;&#039;true&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Special case: &#039;&#039;$and(x,y)&#039;&#039; is &#039;&#039;true&#039;&#039;, if both &#039;&#039;x&#039;&#039; and &#039;&#039;y&#039;&#039; are &#039;&#039;true&#039;&#039;. Otherwise it is &#039;&#039;false&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $or(...) ===&lt;br /&gt;
&lt;br /&gt;
Logical Or of an arbitrary number of arguments. Returns &#039;&#039;true&#039;&#039;, if at least one argument evaluates to &#039;&#039;true&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Special case: &#039;&#039;$or(x,y)&#039;&#039; is &#039;&#039;true&#039;&#039;, if &#039;&#039;x&#039;&#039; or &#039;&#039;y&#039;&#039; is &#039;&#039;true&#039;&#039;, or if both are &#039;&#039;true&#039;&#039;. Otherwise it is &#039;&#039;false&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $not(x) ===&lt;br /&gt;
&lt;br /&gt;
Logical Not. Returns &#039;&#039;false&#039;&#039;, if &#039;&#039;x&#039;&#039; is &#039;&#039;true&#039;&#039;, otherwise it returns &#039;&#039;true&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $xor(...) ===&lt;br /&gt;
&lt;br /&gt;
Logical Exclusive-or of an arbitrary number of arguments. Returns &#039;&#039;true&#039;&#039;, if an odd number of arguments evaluate to &#039;&#039;true&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Special case: &#039;&#039;$xor(x,y)&#039;&#039; is &#039;&#039;true&#039;&#039;, if one of &#039;&#039;x&#039;&#039; and &#039;&#039;y&#039;&#039; is &#039;&#039;true&#039;&#039;, but not both. Otherwise it is &#039;&#039;false&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Color functions =&lt;br /&gt;
&lt;br /&gt;
=== $blend(color1,color2,part,total) ===&lt;br /&gt;
&lt;br /&gt;
Returns a color that is a blend between &#039;&#039;color1&#039;&#039; and &#039;&#039;color2&#039;&#039;. If &#039;&#039;part&#039;&#039; is smaller than or equal to zero, &#039;&#039;color1&#039;&#039; is returned. If &#039;&#039;part&#039;&#039; is greater than or equal to &#039;&#039;total&#039;&#039;, &#039;&#039;color2&#039;&#039; is returned. Otherwise a blended color is returned that is &#039;&#039;part&#039;&#039; parts &#039;&#039;color1&#039;&#039; and &#039;&#039;total&#039;&#039;-&#039;&#039;part&#039;&#039; parts &#039;&#039;color2&#039;&#039;. The blending is performed in the RGB color space.&lt;br /&gt;
&lt;br /&gt;
=== $hsl() ===&lt;br /&gt;
&lt;br /&gt;
Resets the text color to the default color.&lt;br /&gt;
&lt;br /&gt;
=== $hsl(h,s,l) ===&lt;br /&gt;
&lt;br /&gt;
Sets the color for text in the HSL color space. &#039;&#039;h&#039;&#039;, &#039;&#039;s&#039;&#039; and &#039;&#039;l&#039;&#039; are the hue, saturation, and lightness of the color for unselected text. The color for selected text is set to the inverse color.&lt;br /&gt;
The ranges of &#039;&#039;h&#039;&#039;, &#039;&#039;s&#039;&#039;, and &#039;&#039;l&#039;&#039; are from 0 to 240; the function is designed to interpret those values in the same way as the standard Windows color dialog.&lt;br /&gt;
&lt;br /&gt;
=== $hsl(h1,s1,l1,h2,s2,l2) ===&lt;br /&gt;
&lt;br /&gt;
Sets the color for text in the HSL color space. &#039;&#039;h1&#039;&#039;, &#039;&#039;s1&#039;&#039; and &#039;&#039;l1&#039;&#039; are the hue, saturation, and lightness of the color for unselected text. &#039;&#039;h2&#039;&#039;, &#039;&#039;s2&#039;&#039; and &#039;&#039;l2&#039;&#039; are the hue, saturation, and lightness of the color for selected text.&lt;br /&gt;
&lt;br /&gt;
=== $rgb() ===&lt;br /&gt;
&lt;br /&gt;
Resets the text color to the default color.&lt;br /&gt;
&lt;br /&gt;
=== $rgb(r,g,b) ===&lt;br /&gt;
&lt;br /&gt;
Sets the color for text. &#039;&#039;r&#039;&#039;, &#039;&#039;g&#039;&#039; and &#039;&#039;b&#039;&#039; are the red, green and blue component of the color for unselected text. The color for selected text is set to the inverse color.&lt;br /&gt;
&lt;br /&gt;
=== $rgb(r1,g1,b1,r2,g2,b2) ===&lt;br /&gt;
&lt;br /&gt;
Sets the color for text. &#039;&#039;r1&#039;&#039;, &#039;&#039;g1&#039;&#039; and &#039;&#039;b1&#039;&#039; are the red, green and blue component of the color for unselected text. &#039;&#039;r2&#039;&#039;, &#039;&#039;g2&#039;&#039; and &#039;&#039;b2&#039;&#039; are the red, green and blue component of the color for selected text.&lt;br /&gt;
&lt;br /&gt;
=== $transition(string,color1,color2) ===&lt;br /&gt;
&lt;br /&gt;
Inserts color codes into &#039;&#039;string&#039;&#039;, so that the first character has &#039;&#039;color1&#039;&#039;, the last character has &#039;&#039;color2&#039;&#039;, and intermediate characters have blended colors. The blending is performed in the RGB color space. Note that color codes are additional characters that will also be counted by string manipulation functions. For example, if you need to truncate a string, you should do this before applying &#039;&#039;$transition&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Now playing info =&lt;br /&gt;
The following functions and fields are usable for scripts used with the currently playing item, for example the status bar, the main window title and the copy command script.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&lt;br /&gt;
&lt;br /&gt;
=== %playback_time% ===&lt;br /&gt;
Returns the elapsed time formatted as [HH:]MM:SS.&lt;br /&gt;
&lt;br /&gt;
=== %playback_time_seconds% ===&lt;br /&gt;
Returns elapsed time in seconds.&lt;br /&gt;
Old version: &amp;lt;code&amp;gt;%_time_elapsed%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== %playback_time_remaining% ===&lt;br /&gt;
Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
Old version: &amp;lt;code&amp;gt;%_time_remaining%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== %playback_time_remaining_seconds% ===&lt;br /&gt;
Returns remaining time in seconds.&lt;br /&gt;
Old version: &amp;lt;code&amp;gt;%_time_remaining_seconds%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== %length% ===&lt;br /&gt;
Returns the length of the track formatted as hours, minutes, and seconds.&lt;br /&gt;
Old version: &amp;lt;code&amp;gt;%_time_total%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== %length_ex% ===&lt;br /&gt;
Returns the length of the track formatted as hours, minutes, seconds, and milliseconds.&lt;br /&gt;
&lt;br /&gt;
=== %length_seconds% ===&lt;br /&gt;
Returns the length of the track in seconds.&lt;br /&gt;
Old version: &amp;lt;code&amp;gt;%_time_total_seconds%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== %length_seconds_fp% ===&lt;br /&gt;
Returns the length of the track in seconds as floating point number.&lt;br /&gt;
&lt;br /&gt;
=== %length_samples% ===&lt;br /&gt;
Returns the length of the track in samples.&lt;br /&gt;
&lt;br /&gt;
= Playlist info =&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&lt;br /&gt;
&lt;br /&gt;
=== %isplaying% ===&lt;br /&gt;
&lt;br /&gt;
Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
&lt;br /&gt;
The old version &amp;lt;code&amp;gt;%_isplaying%&amp;lt;/code&amp;gt; still works.&lt;br /&gt;
&lt;br /&gt;
=== %ispaused% ===&lt;br /&gt;
&lt;br /&gt;
Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
&lt;br /&gt;
The old version &amp;lt;code&amp;gt;%_ispaused%&amp;lt;/code&amp;gt; still works.&lt;br /&gt;
&lt;br /&gt;
=== %list_index% ===&lt;br /&gt;
&lt;br /&gt;
Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
&lt;br /&gt;
Also see [[Foobar2000:Titleformat Reference#%playlist_number%|%playlist_number%]].&lt;br /&gt;
&lt;br /&gt;
The old version &amp;lt;code&amp;gt;%_playlist_number%&amp;lt;/code&amp;gt; still works.&lt;br /&gt;
&lt;br /&gt;
=== %list_total% ===&lt;br /&gt;
&lt;br /&gt;
Returns number of items in the playlist.&lt;br /&gt;
&lt;br /&gt;
The old version &amp;lt;code&amp;gt;%_playlist_total%&amp;lt;/code&amp;gt; still works.&lt;br /&gt;
&lt;br /&gt;
=== %playlist_name% ===&lt;br /&gt;
&lt;br /&gt;
Returns the name of the playlist containing the specified item.&lt;br /&gt;
&lt;br /&gt;
The old version &amp;lt;code&amp;gt;%_playlist_name%&amp;lt;/code&amp;gt; still works.&lt;br /&gt;
&lt;br /&gt;
= String functions =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to manipulate character strings.&lt;br /&gt;
&lt;br /&gt;
=== $abbr(x) ===&lt;br /&gt;
&lt;br /&gt;
Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $abbr(x,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns abbreviation of &#039;&#039;x&#039;&#039;, if &#039;&#039;x&#039;&#039; is longer than &#039;&#039;len&#039;&#039; characters, otherwise returns &#039;&#039;x&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $ansi(x) ===&lt;br /&gt;
&lt;br /&gt;
Converts &#039;&#039;x&#039;&#039; to system codepage and back. Any characters that are not present in the system codepage will be removed / replaced. Useful for mass-renaming files to ensure compatibility with non-unicode-capable software.&lt;br /&gt;
&lt;br /&gt;
=== $ascii(x) ===&lt;br /&gt;
&lt;br /&gt;
Converts &#039;&#039;x&#039;&#039; to ASCII. Any characters that are not present in ASCII will be removed / replaced.&lt;br /&gt;
&lt;br /&gt;
=== $caps(x) ===&lt;br /&gt;
&lt;br /&gt;
Converts first letter in every word of x to uppercase, and all other letters to lowercase.&lt;br /&gt;
&lt;br /&gt;
=== $caps2(x) ===&lt;br /&gt;
&lt;br /&gt;
Converts first letter in every word of x to uppercase, and leaves all other letters as they are.&lt;br /&gt;
&lt;br /&gt;
=== $char(x) ===&lt;br /&gt;
&lt;br /&gt;
Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $crc32(a) ===&lt;br /&gt;
&lt;br /&gt;
Computes the CRC32 of the string &#039;&#039;a&#039;&#039; as a number. Intended for use in coloring scripts.&lt;br /&gt;
&lt;br /&gt;
Example: $rgb($mod($crc32(%album%),256),128,128)&lt;br /&gt;
&lt;br /&gt;
=== $crlf() ===&lt;br /&gt;
&lt;br /&gt;
Inserts end-of-line marker (carriage return, line feed). Can be used to generate multiple lines in the output, for example for the tooltip of the system  notification area (&amp;quot;systray&amp;quot;) icon.&lt;br /&gt;
&lt;br /&gt;
=== $cut(a,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns first &#039;&#039;len&#039;&#039; characters on the left of &#039;&#039;a&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $directory(x) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $directory(x,n) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory name from the file path &#039;&#039;x&#039;&#039;; goes up by &#039;&#039;n&#039;&#039; levels.&lt;br /&gt;
&lt;br /&gt;
=== $ext(x) ===&lt;br /&gt;
&lt;br /&gt;
Extracts file extension from &#039;&#039;x&#039;&#039; which must be a file name or path.&lt;br /&gt;
&lt;br /&gt;
=== $filename(x) ===&lt;br /&gt;
&lt;br /&gt;
Extracts file name from full path.&lt;br /&gt;
&lt;br /&gt;
=== $fix_eol(x) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;x&#039;&#039; contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by &amp;quot; (...)&amp;quot;. Otherwise &#039;&#039;x&#039;&#039; is returned unaltered.&lt;br /&gt;
&lt;br /&gt;
=== $fix_eol(x,indicator) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;x&#039;&#039; contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by &#039;&#039;indicator&#039;&#039;. Otherwise &#039;&#039;x&#039;&#039; is returned unaltered.&lt;br /&gt;
&lt;br /&gt;
=== $hex(n) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
&lt;br /&gt;
=== $hex(n,len) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation with &#039;&#039;len&#039;&#039; digits. Pads with zeros from the left if necessary.&lt;br /&gt;
&lt;br /&gt;
=== $insert(a,b,n) ===&lt;br /&gt;
&lt;br /&gt;
Inserts &#039;&#039;b&#039;&#039; into &#039;&#039;a&#039;&#039; after &#039;&#039;n&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $left(a,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns the first &#039;&#039;len&#039;&#039; characters from the left of &#039;&#039;a&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $len(a) ===&lt;br /&gt;
&lt;br /&gt;
Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
&lt;br /&gt;
=== $len2(a) ===&lt;br /&gt;
&lt;br /&gt;
Returns length of string x in characters, respecting double-width character rules (double-width characters will be counted as two).&lt;br /&gt;
&lt;br /&gt;
=== $longer(a,b) ===&lt;br /&gt;
&lt;br /&gt;
Returns &#039;&#039;true&#039;&#039;, if string &#039;&#039;a&#039;&#039; is longer than string &#039;&#039;b&#039;&#039;, false otherwise.&lt;br /&gt;
&lt;br /&gt;
=== $lower(a) ===&lt;br /&gt;
&lt;br /&gt;
Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
&lt;br /&gt;
=== $longest(a,...) ===&lt;br /&gt;
&lt;br /&gt;
Returns the longest of its arguments. Can be used with an arbitrary number of strings.&lt;br /&gt;
&lt;br /&gt;
=== $num(n,len) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;n&#039;&#039; in decimal notation with &#039;&#039;len&#039;&#039; digits. Pads with zeros from the left if necessary.&lt;br /&gt;
&lt;br /&gt;
=== $pad(x,len) ===&lt;br /&gt;
&lt;br /&gt;
Pads &#039;&#039;x&#039;&#039; from the left with spaces to &#039;&#039;len&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $pad_right(x,y) ===&lt;br /&gt;
&lt;br /&gt;
Pads &#039;&#039;x&#039;&#039; from the right with spaces to &#039;&#039;len&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $pad(x,len,char) ===&lt;br /&gt;
&lt;br /&gt;
Pads &#039;&#039;x&#039;&#039; from the left with &#039;&#039;char&#039;&#039; to &#039;&#039;len&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $pad_right(x,len,char) ===&lt;br /&gt;
&lt;br /&gt;
Pads &#039;&#039;x&#039;&#039; from the right with &#039;&#039;char&#039;&#039; to &#039;&#039;len&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $padcut(x,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns first &#039;&#039;len&#039;&#039; characters from the left of &#039;&#039;x&#039;&#039;, if &#039;&#039;x&#039;&#039; is longer than &#039;&#039;len&#039;&#039; characters. Otherwise pads &#039;&#039;x&#039;&#039; from the left with spaces to &#039;&#039;len&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $padcut_right(x,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns first &#039;&#039;len&#039;&#039; characters from the left of &#039;&#039;x&#039;&#039;, if &#039;&#039;x&#039;&#039; is longer than &#039;&#039;len&#039;&#039; characters. Otherwise pads &#039;&#039;x&#039;&#039; from the right with spaces to &#039;&#039;len&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $progress(pos,range,len,a,b) ===&lt;br /&gt;
&lt;br /&gt;
Creates a progress bar: &#039;&#039;pos&#039;&#039; contains position, &#039;&#039;range&#039;&#039; contains range, &#039;&#039;len&#039;&#039; progress bar length in characters, &#039;&#039;a&#039;&#039; and &#039;&#039;b&#039;&#039; are characters to build progress bar with.&lt;br /&gt;
&lt;br /&gt;
Example:&#039;&#039;$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,&#039;#&#039;,&#039;=&#039;)&#039;&#039; produces &amp;quot;====#===============&amp;quot;, the # character is moving with playback position.&lt;br /&gt;
&lt;br /&gt;
=== $progress2(pos,range,len,a,b) ===&lt;br /&gt;
&lt;br /&gt;
Creates a progress bar: &#039;&#039;pos&#039;&#039; contains position, &#039;&#039;range&#039;&#039; contains range, &#039;&#039;len&#039;&#039; progress bar length in characters, &#039;&#039;a&#039;&#039; and &#039;&#039;b&#039;&#039; are characters to build progress bar with. Produces different appearance than &#039;&#039;$progress&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $repeat(a,n) ===&lt;br /&gt;
&lt;br /&gt;
Returns &#039;&#039;n&#039;&#039; copies of &#039;&#039;a&#039;&#039;. Note that &#039;&#039;a&#039;&#039; is evaluated once before its value is used, so &#039;&#039;$repeat&#039;&#039; cannot be used for loops.&lt;br /&gt;
&lt;br /&gt;
=== $replace(a,b,c) ===&lt;br /&gt;
&lt;br /&gt;
Replaces all occurrences of string &#039;&#039;b&#039;&#039; in string &#039;&#039;a&#039;&#039; with string &#039;&#039;c&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can also be used with an arbitrary number of arguments. Note that &#039;&#039;$replace(a,b1,c1,b2,c2)&#039;&#039; is generally not the same as &#039;&#039;$replace($replace(a,b1,c1),b2,c2)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$replace(ab,a,b,b,c)&#039;&#039; -&amp;gt; &amp;quot;bc&amp;quot;, &#039;&#039;$replace($replace(ab,a,b),b,c)&#039;&#039; -&amp;gt; &amp;quot;cc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== $right(a,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns the first &#039;&#039;len&#039;&#039; characters from the right of &#039;&#039;a&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $roman(n) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
&lt;br /&gt;
=== $rot13() ===&lt;br /&gt;
&lt;br /&gt;
Performs [http://en.wikipedia.org/wiki/ROT13 ROT13] transformation to given string.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$rot13(&#039;foobar2000&#039;)&#039;&#039; -&amp;gt; &amp;quot;sbbone2000&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== $shortest ===&lt;br /&gt;
&lt;br /&gt;
Returns the shortest of its arguments. Can be used with an arbitrary number of strings.&lt;br /&gt;
&lt;br /&gt;
=== $strchr(s,c) ===&lt;br /&gt;
&lt;br /&gt;
Finds first occurence of character &#039;&#039;c&#039;&#039; in string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$strchr(abca,a)&#039;&#039; -&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
=== $strrchr(s,c) ===&lt;br /&gt;
&lt;br /&gt;
Finds last occurence of character &#039;&#039;c&#039;&#039; in string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$strrchr(abca,a)&#039;&#039; -&amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
=== $strstr(s1,s2) ===&lt;br /&gt;
&lt;br /&gt;
Finds first occurence of string &#039;&#039;s2&#039;&#039; in string &#039;&#039;s1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $strcmp(s1,s2) ===&lt;br /&gt;
&lt;br /&gt;
Performs a case-sensitive comparison of the strings &#039;&#039;s1&#039;&#039; and &#039;&#039;s2&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $stricmp(s1,s2) ===&lt;br /&gt;
&lt;br /&gt;
Performs a case-insensitive comparison of the strings &#039;&#039;s1&#039;&#039; and &#039;&#039;s2&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $substr(s,m,n) ===&lt;br /&gt;
&lt;br /&gt;
Returns substring of string &#039;&#039;s&#039;&#039;, starting from &#039;&#039;m&#039;&#039;-th character and ending at &#039;&#039;n&#039;&#039;-th character.&lt;br /&gt;
&lt;br /&gt;
=== $trim(s) ===&lt;br /&gt;
&lt;br /&gt;
Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $tab() ===&lt;br /&gt;
&lt;br /&gt;
Inserts one tabulator character.&lt;br /&gt;
&lt;br /&gt;
=== $tab(n) ===&lt;br /&gt;
&lt;br /&gt;
Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
&lt;br /&gt;
=== $upper(s) ===&lt;br /&gt;
&lt;br /&gt;
Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
&lt;br /&gt;
= Track info =&lt;br /&gt;
&lt;br /&gt;
The functions and fields in this section can be used to access information about tracks.&lt;br /&gt;
&lt;br /&gt;
== Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== $meta(name) ===&lt;br /&gt;
Returns value of tag called &#039;&#039;name&#039;&#039;. If multiple values of that tag exist, they are concatenated with &amp;quot;, &amp;quot; as separator.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist)&#039;&#039; -&amp;gt; &amp;quot;He, She, It&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== $meta(name,n) ===&lt;br /&gt;
Returns value of &#039;&#039;n&#039;&#039;-th (0,1,2 and so on) tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,1)&#039;&#039; -&amp;gt; &amp;quot;She&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== $meta_sep(name,sep) ===&lt;br /&gt;
Returns value of tag called &#039;&#039;name&#039;&#039;. If multiple values of that tag exist, they are concatenated with &#039;&#039;sep&#039;&#039; as separator.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta_sep(artist,&#039; + &#039;)&#039;&#039; -&amp;gt; &amp;quot;He + She + It&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== $meta_sep(name,sep,lastsep) ===&lt;br /&gt;
Returns value of tag called &#039;&#039;name&#039;&#039;. If multiple values of that tag exist, they are concatenated with &#039;&#039;sep&#039;&#039; as separator between all but the last two values which are concatenated with &#039;&#039;lastsep&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$metasep(artist,&#039;, &#039;,&#039;, and &#039;)&#039;&#039; -&amp;gt; &amp;quot;He, She, and It&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== $meta_test(...) === &lt;br /&gt;
Returns &#039;&#039;1&#039;&#039;, if all given tags exist, &#039;&#039;undefined&#039;&#039; otherwise.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta_test(artist,title)&#039;&#039; -&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
=== $meta_num(name) ===&lt;br /&gt;
Returns the number of values for the tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta_num(artist)&#039;&#039; -&amp;gt; 3&lt;br /&gt;
&lt;br /&gt;
=== $tracknumber() ===&lt;br /&gt;
Returns the tracknumber padded to 2 digits with zeroes.&lt;br /&gt;
&lt;br /&gt;
=== $tracknumber(n) ===&lt;br /&gt;
Returns the tracknumber padded to &#039;&#039;n&#039;&#039; digits with zeros.&lt;br /&gt;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
&lt;br /&gt;
=== $info(name) ===&lt;br /&gt;
Returns value of technical information field called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$info(channels)&#039;&#039; -&amp;gt; 2&lt;br /&gt;
&lt;br /&gt;
=== $codec() ===&lt;br /&gt;
Returns codec of track. If no codec field is present, it the uses file extension.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$codec()&#039;&#039; -&amp;gt; &amp;quot;WavPack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== $channels() === &lt;br /&gt;
Returns number of channels in text format.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$channels()&#039;&#039; -&amp;gt; &amp;quot;stereo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== %__replaygain_album_gain% ===&lt;br /&gt;
Returns ReplayGain album gain value. //Not available through// &#039;&#039;$info(replaygain_album_gain)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== %__replaygain_album_peak% ===&lt;br /&gt;
Returns ReplayGain album peak value. //Not available through// &#039;&#039;$info(replaygain_album_peak)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== %__replaygain_track_gain% ===&lt;br /&gt;
Returns ReplayGain track gain value. //Not available through// &#039;&#039;$info(replaygain_track_gain)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== %__replaygain_track_peak% ===&lt;br /&gt;
Returns ReplayGain track peak value. //Not available through// &#039;&#039;$info(replaygain_track_peak)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&lt;br /&gt;
&lt;br /&gt;
=== $extra(name) ===&lt;br /&gt;
Returns the value of the special field called &#039;&#039;name&#039;&#039;. These fields can also be accessed as &#039;&#039;%_name%&#039;&#039;; note the additional underscore. This syntax is from an older version of Foobar2000 {{Foobar2000v08}}. The following fields can be used normally.&lt;br /&gt;
==== %filename% ====&lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
==== %filename_ext% ====&lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
==== %directoryname% ====&lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
==== %lastmodified% ====&lt;br /&gt;
Returns the date and time the file was last modified. Eg: &#039;&#039;2005-12-22 00:04:10&#039;&#039;&lt;br /&gt;
==== %path% ====&lt;br /&gt;
Returns the path.&lt;br /&gt;
==== %path_raw% ====&lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
==== %subsong% ====&lt;br /&gt;
Returns the subsong index. The subsong index is used to distuingish multiple tracks in a single file, for example for cue sheets, tracker modules and various container formats.&lt;br /&gt;
==== $extra(foobar2000_version) ====&lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
&lt;br /&gt;
= Variable operations =&lt;br /&gt;
&lt;br /&gt;
Variables can be used to store strings and number. They cannot store truth values. They are best used to store intermediate results that you need multiple times. Variable names are not case-sensitive.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! code&lt;br /&gt;
! output&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;pre&amp;gt;$put(foo,bar)$char(10)&lt;br /&gt;
$get(foo)$char(10)&lt;br /&gt;
$get(Foo)$char(10)&lt;br /&gt;
$puts(foo,2000)$char(10)&lt;br /&gt;
$get(foo)$char(10)&amp;lt;/pre&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot; |&amp;lt;pre&amp;gt;bar&lt;br /&gt;
bar&lt;br /&gt;
bar&lt;br /&gt;
&lt;br /&gt;
2000&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== $get(name) ===&lt;br /&gt;
&lt;br /&gt;
Returns the value that was last stored in the variable &#039;&#039;name&#039;&#039;, if the variable was not defined (yet), it returns nothing. The truth value returned by &#039;&#039;$get&#039;&#039; indicates if the variable &#039;&#039;name&#039;&#039; was defined&lt;br /&gt;
&lt;br /&gt;
=== $put(name,value) ===&lt;br /&gt;
&lt;br /&gt;
Stores &#039;&#039;value&#039;&#039; in the variable &#039;&#039;name&#039;&#039; and returns &#039;&#039;value&#039;&#039; unaltered&lt;br /&gt;
&lt;br /&gt;
=== $puts(name,value) ===&lt;br /&gt;
&lt;br /&gt;
Stores &#039;&#039;value&#039;&#039; in the variable &#039;&#039;name&#039;&#039; and returns nothing&lt;br /&gt;
&lt;br /&gt;
= Component-provided fields and functions on tracks =&lt;br /&gt;
&lt;br /&gt;
This section lists components that provide additional fields and functions that are useable in the context of any track.&lt;br /&gt;
&lt;br /&gt;
== Playback statistics ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.foobar2000.org/beta/components.html Playback statistics homepage]&lt;br /&gt;
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]&lt;br /&gt;
&lt;br /&gt;
= Component-specific fields and functions =&lt;br /&gt;
&lt;br /&gt;
This section lists components that provide additional fields and functions that are only useable in the context of the particular component.&lt;br /&gt;
&lt;br /&gt;
== Album list ==&lt;br /&gt;
&lt;br /&gt;
The official album list component supports creating multiple tree entries using special commands.&lt;br /&gt;
&lt;br /&gt;
* [http://www.foobar2000.org/ Album list homepage]&lt;br /&gt;
* [[Foobar2000:Titleformat Album List|Album list titleformat reference]]&lt;br /&gt;
&lt;br /&gt;
== Columns UI ==&lt;br /&gt;
&lt;br /&gt;
* [http://music.morbo.org/wiki/columns_ui:manual Columns UI homepage]&lt;br /&gt;
* [http://music.morbo.org/wiki/columns_ui:config:global_variables Global variables reference]&lt;br /&gt;
* [http://music.morbo.org/wiki/columns_ui:config:colour_string Playlist colors reference]&lt;br /&gt;
* [http://music.morbo.org/wiki/columns_ui:config:playlist_switcher_titleformatting Playlist switcher reference]&lt;br /&gt;
&lt;br /&gt;
==  CwBowron&#039;s Title formating (foo cwb hooks) ==&lt;br /&gt;
foo_cwb_hooks adds various functions and variables to global title formatting:&lt;br /&gt;
* [[Foobar2000:0.9_CwBowron%27s_Title_formating_%28foo_cwb_hooks%29|cwb_hooks title formatting wiki page]]&lt;br /&gt;
&lt;br /&gt;
= Additional Reading =&lt;br /&gt;
&lt;br /&gt;
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* &#039;&#039;&#039;titleformat_help.html&#039;&#039;&#039; in your Foobar2000 directory (ie C:\Program Files\foobar2000\titleformat_help.html) file:///C:/Program%20Files/foobar2000/titleformat_help.html&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=File:Ebatgh0.png&amp;diff=12587</id>
		<title>File:Ebatgh0.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=File:Ebatgh0.png&amp;diff=12587"/>
		<updated>2006-08-29T13:55:06Z</updated>

		<summary type="html">&lt;p&gt;FofR: Home stereo panel code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Home stereo panel code&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Quick_Search_(foo_uie_quicksearch)&amp;diff=12494</id>
		<title>Foobar2000:0.9 Quick Search (foo uie quicksearch)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Quick_Search_(foo_uie_quicksearch)&amp;diff=12494"/>
		<updated>2006-08-25T13:34:43Z</updated>

		<summary type="html">&lt;p&gt;FofR: added links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Derived from &#039;&#039;foo_uie_search&#039;&#039; and ported to foobar2000 0.9, &#039;&#039;&#039;foo_uie_quicksearch&#039;&#039;&#039; provides the ability to include a search panel in your Columns UI layout, displaying results in a chosen playlist. &lt;br /&gt;
&lt;br /&gt;
[[Image:QuickSearch3.png|Quick Search]]&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&lt;br /&gt;
* Versions 2.8g &amp;amp; 1.5g (2006-08-16)&lt;br /&gt;
**Search pattern is now selected when the toolbar receives focus&lt;br /&gt;
** Fixed unproper toolbar colors after undock when autosearch is selected (1.5g only)&lt;br /&gt;
* Versions 2.8f &amp;amp; 1.5f (2006-06-20)&lt;br /&gt;
** Reorganized code and fixed a bug (wrong search results happening in extremely rare circumstances with &amp;quot;Exact&amp;quot; mode)&lt;br /&gt;
* Versions 2.8e &amp;amp; 1.5e (2006-06-19)&lt;br /&gt;
** Improved reactiveness and speed of inline playlist search&lt;br /&gt;
** Added &amp;quot;Search for same/Directory&amp;quot; to context menu&lt;br /&gt;
*Version 1.5 (2006-06-16)&lt;br /&gt;
** Ported from 2.8 for Foobar 0.8.3&lt;br /&gt;
*Version 2.8 (2006-06-15)&lt;br /&gt;
** Added configurable delay for autosearch&lt;br /&gt;
** Reorganized prefs &amp;amp; help pages&lt;br /&gt;
*Version 2.7 (beta) (2006-06-11)&lt;br /&gt;
** New: Autosearch feature ... (for people too lazy to hit the Enter Key)&lt;br /&gt;
** New: Added option to manage preferences (record of favorites search)&lt;br /&gt;
** Fixed weird bug (search not working with searchstrings of length 12 or 26)&lt;br /&gt;
** Changed &amp;quot;override keys&amp;quot; settings (Now: Alt+Enter=All Playlist, Shift+Enter=Playlist,Ctrl+Shift+enter=DB, Alt+Keydown=Menu)&lt;br /&gt;
** Reorganized menu&lt;br /&gt;
** Fixed auto selection of searchstring when not found. Added additional colors settings to manage unfound situations (See prefs colors)&lt;br /&gt;
** Various bugfix &amp;amp; improvements&lt;br /&gt;
*Quick updates to V1.4 &amp;amp; 2.6 (2006-06-07)&lt;br /&gt;
** Menu shortcut is now Alt+Down instead of Alt&lt;br /&gt;
** Added tooltip for reminding which options were chosen&lt;br /&gt;
** Added &amp;quot;Same genre&amp;quot; in context menus&lt;br /&gt;
*Version 1.4 (2006-06-04)&lt;br /&gt;
** Port of features from 2.0 to 2.6 in 1.4 (for foobar 0.8.3 users)&lt;br /&gt;
*Version 2.6 (2006-06-04)&lt;br /&gt;
** Added &amp;quot;Search as you type&amp;quot; option (for inline playlist search only)&lt;br /&gt;
** QuickFixed searchstring not reset properly after a successfull search (bug appeared in V2.5)&lt;br /&gt;
** QuickFixed tab key blocked from within control&lt;br /&gt;
** Prevented deletion of search results playlist when searching inline&lt;br /&gt;
** Fixed redrawing of frame style in prefs page&lt;br /&gt;
*Version 2.5 (2006-06-03)&lt;br /&gt;
** Added menu option, available through Alt Key&lt;br /&gt;
** Added options to override on the fly the &amp;quot;Search in ...&amp;quot; settings. Shift+Enter = Force search in playlist, Ctrl+Enter = Force search in all playlists, Ctrl+Shift+Enter=Force search in database.&lt;br /&gt;
*Version 2.4 (2006-06-03)&lt;br /&gt;
** Added an option to setfocus on the playlist window after a search (complete mouseless utilization is now possible)&lt;br /&gt;
** Implemented &amp;quot;Escape&amp;quot; key. Will set focus on the playlist window.&lt;br /&gt;
** New option to search &amp;quot;inline&amp;quot; when &amp;quot;playlist&amp;quot; is selected as the search domain (will highlight results in the current playlist, navigation is available through up and down arrow keys) .... mimics old playlistfind plugin&lt;br /&gt;
*Version 2.3 (2006-06-01)&lt;br /&gt;
** Hotfix : Search in &amp;quot;all playlist&amp;quot; was only searching in the last playlist&lt;br /&gt;
** Fixed text not scrolling when longer than the text box&lt;br /&gt;
** Prefs page now supports XP themes&lt;br /&gt;
** Fixed icon switch enabled/disabled spinbutton status&lt;br /&gt;
** Minor bugfix and improvement&lt;br /&gt;
*Version 2.2 (2006-05-28)&lt;br /&gt;
** Fixed text entry/display/overlapping selection problem&lt;br /&gt;
*Version 2.1 (2006-05-27)&lt;br /&gt;
** Fixed Tagz strings reset happening even when user cancels operation&lt;br /&gt;
** Better vertical sizing of search string area&lt;br /&gt;
** Changed Tagz string &amp;quot;Delete&amp;quot; button enabled/disabled state (only last remaining item can&#039;t be deleted)&lt;br /&gt;
*Version 2.0 (2006-05-27)&lt;br /&gt;
** Ported (from version 1.3) to Foobar 0.9 version&lt;br /&gt;
*Version 1.3 (2006-05-27)&lt;br /&gt;
** Added option to include %artist% in %album% search from context menu (fixes the &amp;quot;greatest hits&amp;quot; problem, requires a VA string to be entered)&lt;br /&gt;
** Added option to automaticall switch to extended search mode when a &#039;%&#039; char is entered in the searchstring (and back when none is present in the search string)&lt;br /&gt;
** Added option to override current settings with recall from history search&lt;br /&gt;
** Fixed toolbar disappearing under albumart&lt;br /&gt;
*Version 1.2 (2006-05-21)&lt;br /&gt;
** Context menu (and shortcuts) is now available through [context]Now Playing and Playlist entries&lt;br /&gt;
** New : Ability to load custom bitmaps (H=16, W= 20, .bmp only)&lt;br /&gt;
** New : Playlist_gen queries are now available (Credit to tbohrer for the search engine development)&lt;br /&gt;
** Fixed lowercased search strings when appended to playlist name&lt;br /&gt;
** New processing of history with memorization/recall of all variables&lt;br /&gt;
** Added customization of toolbar frame (None, Grey, Sunken)&lt;br /&gt;
** Restructured config. page &amp;amp; help, including playlist_gen syntax overview&lt;br /&gt;
* Version 1.1 (2006-05-16)&lt;br /&gt;
** Implemented hourglass&lt;br /&gt;
** Added repainting of icon during resizing&lt;br /&gt;
** Fixed possible vertical resizing (top right)&lt;br /&gt;
** Improved cursor management for resizing (top, bottom)&lt;br /&gt;
* Version 1.0 (2006-05-15)&lt;br /&gt;
** Implemented context menus to search for same Artist/Album/Title (search in database only and with &amp;quot;Exact&amp;quot; match ... will temporarily overide the current settings).&lt;br /&gt;
** Implemented toolbar resizing (horizontal only)&lt;br /&gt;
* Version 0.9.3 (2006-05-14)&lt;br /&gt;
** Fixed icons not displayed properly on Windows XP&lt;br /&gt;
** Centered vertically the test edit control&lt;br /&gt;
* Version 0.9 (2006-05-12)&lt;br /&gt;
** Added clickable search icon on the toolbar, customizable through the prefs; moved right click options (except undock) to icon standard click&lt;br /&gt;
** Added menu entry to access the preferences&lt;br /&gt;
** Minor bugfixes and improvements&lt;br /&gt;
** Increased max history size to 32&lt;br /&gt;
* Version 0.8 (2006-05-08)&lt;br /&gt;
** Added list of Tagz presets to choose from for searching&lt;br /&gt;
** Avoided duplicates in the history of search strings&lt;br /&gt;
** Reorganized prefs page&lt;br /&gt;
* Version 0.7 (2006-05-05)&lt;br /&gt;
** Added history of search strings with recall option (rightclick the toolbar)&lt;br /&gt;
** Fixed unwanted duplication of target playlist with different search strings&lt;br /&gt;
* Version 0.6 (2006-05-04)&lt;br /&gt;
** Added customized color scheme&lt;br /&gt;
** Fixed unwanted resizers appearing after undock&lt;br /&gt;
** Reorganized prefs page&lt;br /&gt;
* Version 0.5 (2006-05-01)&lt;br /&gt;
** New option to append the search string to the name of the target playlist&lt;br /&gt;
** Revisited the preferences dialog&lt;br /&gt;
** Changed the behavior when nothing is found (searchstring highlited, playlist selection unchanged)&lt;br /&gt;
** Added an option to reset the searchstring after a successfull search&lt;br /&gt;
* Version 0.4 (2006-05-01)&lt;br /&gt;
** Added ability to perform a search in all playlists (Search results playlist is excluded in this case)&lt;br /&gt;
** Undock function now fixed&lt;br /&gt;
** Added ability to search by prefix&lt;br /&gt;
** Code cleaned, reorg. and commented&lt;br /&gt;
* Version 0.3 (2006-04-27)&lt;br /&gt;
** Performance dramatically improved&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*[http://thx538.free.fr/Foobar/Quicksearch%20V2.x/foo_uie_quicksearch.zip Download v2.8g for foobar 0.9]&lt;br /&gt;
*[http://thx538.free.fr/Foobar/Quicksearch%20V1.x/foo_uie_quicksearch.zip Download v1.5g for foobar 0.8]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=44012 Hydrogenaudio Thread]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Quick_Search_(foo_uie_quicksearch)&amp;diff=12493</id>
		<title>Foobar2000:0.9 Quick Search (foo uie quicksearch)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Quick_Search_(foo_uie_quicksearch)&amp;diff=12493"/>
		<updated>2006-08-25T13:26:02Z</updated>

		<summary type="html">&lt;p&gt;FofR: Added changelog&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Derived from &#039;&#039;foo_uie_search&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:QuickSearch3.png|Quick Search]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&lt;br /&gt;
* Versions 2.8g &amp;amp; 1.5g (2006-08-16)&lt;br /&gt;
**Search pattern is now selected when the toolbar receives focus&lt;br /&gt;
** Fixed unproper toolbar colors after undock when autosearch is selected (1.5g only)&lt;br /&gt;
* Versions 2.8f &amp;amp; 1.5f (2006-06-20)&lt;br /&gt;
** Reorganized code and fixed a bug (wrong search results happening in extremely rare circumstances with &amp;quot;Exact&amp;quot; mode)&lt;br /&gt;
* Versions 2.8e &amp;amp; 1.5e (2006-06-19)&lt;br /&gt;
** Improved reactiveness and speed of inline playlist search&lt;br /&gt;
** Added &amp;quot;Search for same/Directory&amp;quot; to context menu&lt;br /&gt;
*Version 1.5 (2006-06-16)&lt;br /&gt;
** Ported from 2.8 for Foobar 0.8.3&lt;br /&gt;
*Version 2.8 (2006-06-15)&lt;br /&gt;
** Added configurable delay for autosearch&lt;br /&gt;
** Reorganized prefs &amp;amp; help pages&lt;br /&gt;
*Version 2.7 (beta) (2006-06-11)&lt;br /&gt;
** New: Autosearch feature ... (for people too lazy to hit the Enter Key)&lt;br /&gt;
** New: Added option to manage preferences (record of favorites search)&lt;br /&gt;
** Fixed weird bug (search not working with searchstrings of length 12 or 26)&lt;br /&gt;
** Changed &amp;quot;override keys&amp;quot; settings (Now: Alt+Enter=All Playlist, Shift+Enter=Playlist,Ctrl+Shift+enter=DB, Alt+Keydown=Menu)&lt;br /&gt;
** Reorganized menu&lt;br /&gt;
** Fixed auto selection of searchstring when not found. Added additional colors settings to manage unfound situations (See prefs colors)&lt;br /&gt;
** Various bugfix &amp;amp; improvements&lt;br /&gt;
*Quick updates to V1.4 &amp;amp; 2.6 (2006-06-07)&lt;br /&gt;
** Menu shortcut is now Alt+Down instead of Alt&lt;br /&gt;
** Added tooltip for reminding which options were chosen&lt;br /&gt;
** Added &amp;quot;Same genre&amp;quot; in context menus&lt;br /&gt;
*Version 1.4 (2006-06-04)&lt;br /&gt;
** Port of features from 2.0 to 2.6 in 1.4 (for foobar 0.8.3 users)&lt;br /&gt;
*Version 2.6 (2006-06-04)&lt;br /&gt;
** Added &amp;quot;Search as you type&amp;quot; option (for inline playlist search only)&lt;br /&gt;
** QuickFixed searchstring not reset properly after a successfull search (bug appeared in V2.5)&lt;br /&gt;
** QuickFixed tab key blocked from within control&lt;br /&gt;
** Prevented deletion of search results playlist when searching inline&lt;br /&gt;
** Fixed redrawing of frame style in prefs page&lt;br /&gt;
*Version 2.5 (2006-06-03)&lt;br /&gt;
** Added menu option, available through Alt Key&lt;br /&gt;
** Added options to override on the fly the &amp;quot;Search in ...&amp;quot; settings. Shift+Enter = Force search in playlist, Ctrl+Enter = Force search in all playlists, Ctrl+Shift+Enter=Force search in database.&lt;br /&gt;
*Version 2.4 (2006-06-03)&lt;br /&gt;
** Added an option to setfocus on the playlist window after a search (complete mouseless utilization is now possible)&lt;br /&gt;
** Implemented &amp;quot;Escape&amp;quot; key. Will set focus on the playlist window.&lt;br /&gt;
** New option to search &amp;quot;inline&amp;quot; when &amp;quot;playlist&amp;quot; is selected as the search domain (will highlight results in the current playlist, navigation is available through up and down arrow keys) .... mimics old playlistfind plugin&lt;br /&gt;
*Version 2.3 (2006-06-01)&lt;br /&gt;
** Hotfix : Search in &amp;quot;all playlist&amp;quot; was only searching in the last playlist&lt;br /&gt;
** Fixed text not scrolling when longer than the text box&lt;br /&gt;
** Prefs page now supports XP themes&lt;br /&gt;
** Fixed icon switch enabled/disabled spinbutton status&lt;br /&gt;
** Minor bugfix and improvement&lt;br /&gt;
*Version 2.2 (2006-05-28)&lt;br /&gt;
** Fixed text entry/display/overlapping selection problem&lt;br /&gt;
*Version 2.1 (2006-05-27)&lt;br /&gt;
** Fixed Tagz strings reset happening even when user cancels operation&lt;br /&gt;
** Better vertical sizing of search string area&lt;br /&gt;
** Changed Tagz string &amp;quot;Delete&amp;quot; button enabled/disabled state (only last remaining item can&#039;t be deleted)&lt;br /&gt;
*Version 2.0 (2006-05-27)&lt;br /&gt;
** Ported (from version 1.3) to Foobar 0.9 version&lt;br /&gt;
*Version 1.3 (2006-05-27)&lt;br /&gt;
** Added option to include %artist% in %album% search from context menu (fixes the &amp;quot;greatest hits&amp;quot; problem, requires a VA string to be entered)&lt;br /&gt;
** Added option to automaticall switch to extended search mode when a &#039;%&#039; char is entered in the searchstring (and back when none is present in the search string)&lt;br /&gt;
** Added option to override current settings with recall from history search&lt;br /&gt;
** Fixed toolbar disappearing under albumart&lt;br /&gt;
*Version 1.2 (2006-05-21)&lt;br /&gt;
** Context menu (and shortcuts) is now available through [context]Now Playing and Playlist entries&lt;br /&gt;
** New : Ability to load custom bitmaps (H=16, W= 20, .bmp only)&lt;br /&gt;
** New : Playlist_gen queries are now available (Credit to tbohrer for the search engine development)&lt;br /&gt;
** Fixed lowercased search strings when appended to playlist name&lt;br /&gt;
** New processing of history with memorization/recall of all variables&lt;br /&gt;
** Added customization of toolbar frame (None, Grey, Sunken)&lt;br /&gt;
** Restructured config. page &amp;amp; help, including playlist_gen syntax overview&lt;br /&gt;
* Version 1.1 (2006-05-16)&lt;br /&gt;
** Implemented hourglass&lt;br /&gt;
** Added repainting of icon during resizing&lt;br /&gt;
** Fixed possible vertical resizing (top right)&lt;br /&gt;
** Improved cursor management for resizing (top, bottom)&lt;br /&gt;
* Version 1.0 (2006-05-15)&lt;br /&gt;
** Implemented context menus to search for same Artist/Album/Title (search in database only and with &amp;quot;Exact&amp;quot; match ... will temporarily overide the current settings).&lt;br /&gt;
** Implemented toolbar resizing (horizontal only)&lt;br /&gt;
* Version 0.9.3 (2006-05-14)&lt;br /&gt;
** Fixed icons not displayed properly on Windows XP&lt;br /&gt;
** Centered vertically the test edit control&lt;br /&gt;
* Version 0.9 (2006-05-12)&lt;br /&gt;
** Added clickable search icon on the toolbar, customizable through the prefs; moved right click options (except undock) to icon standard click&lt;br /&gt;
** Added menu entry to access the preferences&lt;br /&gt;
** Minor bugfixes and improvements&lt;br /&gt;
** Increased max history size to 32&lt;br /&gt;
* Version 0.8 (2006-05-08)&lt;br /&gt;
** Added list of Tagz presets to choose from for searching&lt;br /&gt;
** Avoided duplicates in the history of search strings&lt;br /&gt;
** Reorganized prefs page&lt;br /&gt;
* Version 0.7 (2006-05-05)&lt;br /&gt;
** Added history of search strings with recall option (rightclick the toolbar)&lt;br /&gt;
** Fixed unwanted duplication of target playlist with different search strings&lt;br /&gt;
* Version 0.6 (2006-05-04)&lt;br /&gt;
** Added customized color scheme&lt;br /&gt;
** Fixed unwanted resizers appearing after undock&lt;br /&gt;
** Reorganized prefs page&lt;br /&gt;
* Version 0.5 (2006-05-01)&lt;br /&gt;
** New option to append the search string to the name of the target playlist&lt;br /&gt;
** Revisited the preferences dialog&lt;br /&gt;
** Changed the behavior when nothing is found (searchstring highlited, playlist selection unchanged)&lt;br /&gt;
** Added an option to reset the searchstring after a successfull search&lt;br /&gt;
* Version 0.4 (2006-05-01)&lt;br /&gt;
** Added ability to perform a search in all playlists (Search results playlist is excluded in this case)&lt;br /&gt;
** Undock function now fixed&lt;br /&gt;
** Added ability to search by prefix&lt;br /&gt;
** Code cleaned, reorg. and commented&lt;br /&gt;
* Version 0.3 (2006-04-27)&lt;br /&gt;
** Performance dramatically improved&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=File:QuickSearch3.png&amp;diff=12492</id>
		<title>File:QuickSearch3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=File:QuickSearch3.png&amp;diff=12492"/>
		<updated>2006-08-25T13:17:46Z</updated>

		<summary type="html">&lt;p&gt;FofR: Quick Search&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quick Search&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Quick_Search_(foo_uie_quicksearch)&amp;diff=12491</id>
		<title>Foobar2000:0.9 Quick Search (foo uie quicksearch)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Quick_Search_(foo_uie_quicksearch)&amp;diff=12491"/>
		<updated>2006-08-25T12:04:08Z</updated>

		<summary type="html">&lt;p&gt;FofR: page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Derived from &#039;&#039;foo_uie_search&#039;&#039;&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:FofR&amp;diff=12490</id>
		<title>User:FofR</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:FofR&amp;diff=12490"/>
		<updated>2006-08-25T11:59:17Z</updated>

		<summary type="html">&lt;p&gt;FofR: Page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dedicated to making foobar information easier to find, I have wasted hours searching threads.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[http://fofr.trivialbeing.net Blog]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Winamp_Spam_(foo_winamp_spam)&amp;diff=12488</id>
		<title>Foobar2000:0.9 Winamp Spam (foo winamp spam)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Winamp_Spam_(foo_winamp_spam)&amp;diff=12488"/>
		<updated>2006-08-25T11:50:26Z</updated>

		<summary type="html">&lt;p&gt;FofR: added description and download links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;foo_winamp_spam&#039;&#039;&#039; emulates a Winamp 2.x window so existing plugins you have that use the &#039;&#039;&#039;Winamp API&#039;&#039;&#039; can continue to work with foobar2000 with minimal trouble. &lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This component was primarily designed to be used in conjunction with an mIRC song reporting DLL, [http://www.r1ch.net/stuff/r1dll/ r1dll]. However it is known to work with several other software packages that use the Winamp API such as &#039;&#039;EvilLyrics&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Foobar2000 0.9 support is currently in beta: [http://www.hydrogenaudio.org/forums/index.php?showtopic=42941 Hydrogenaduio Thread]&lt;br /&gt;
&lt;br /&gt;
The component works primarily by creating a window with the Winamp 1.x classname and setting the current song title to it. This allows programs to find the Winamp window handle in order to send further messages. Currently a small subset of the full Winamp API is emulated, including play/pause/stop, add files, exit, repeat/shuffle, report song stats (kbps, khz, channels, duration, position) and a few other things.&lt;br /&gt;
&lt;br /&gt;
The latest stable version is 0.74 and is designed to work on Windows 9x/ME/NT/2K/XP/2K3 through use of the utf8api.dll. Please note that this version requires foobar2000 version 0.7 or 0.8 to work. Previous versions used a foo_winamp_spam.cfg file - this has been obsoleted with the addition of a config page within fb2k itself. Please delete this file if you have it.&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
==Google Talk (Gtalk)==&lt;br /&gt;
The latest release of Gtalk (as of Aug 2006) includes the ability to display currently playing music and log this to your google account (if you want it to). The client natively supports Winamp, iTunes, WMP, etc. however lacks foobar2000 compatability. It is possible to use the &#039;&#039;&#039;foo_winamp_spam&#039;&#039;&#039; component to show songs foobar is playing: [http://www.hydrogenaudio.org/forums/index.php?showtopic=47155 Hydrogenaudio Discussion]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.r1ch.net/stuff/r1dll/ Homepage]&lt;br /&gt;
*[http://r-1.ch/foo_winamp_spam-0.9beta3.7z Download Foobar2000 0.9 Compatible Beta (7z compressed)]&lt;br /&gt;
*[http://www.r1ch.net/stuff/foobar/foo_winamp_spam-0.74.zip Download latest stable release (0.74) (9.33kb, released 29 January 2004) (Foobar 0.8)]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Winamp_Spam_(foo_winamp_spam)&amp;diff=12487</id>
		<title>Foobar2000:0.9 Winamp Spam (foo winamp spam)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Winamp_Spam_(foo_winamp_spam)&amp;diff=12487"/>
		<updated>2006-08-25T11:34:48Z</updated>

		<summary type="html">&lt;p&gt;FofR: Page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Links==&lt;br /&gt;
[http://www.r1ch.net/stuff/r1dll/ Homepage]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/MSN_Now_Playing_(alt)_(foo_msnalt)&amp;diff=12486</id>
		<title>Foobar2000:Components/MSN Now Playing (alt) (foo msnalt)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/MSN_Now_Playing_(alt)_(foo_msnalt)&amp;diff=12486"/>
		<updated>2006-08-25T11:28:46Z</updated>

		<summary type="html">&lt;p&gt;FofR: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Msnalt1.PNG|thumb]]&lt;br /&gt;
=Description=&lt;br /&gt;
&#039;&#039;&#039;MSN Now Playing&#039;&#039;&#039; (foo_msnalt) allows for showing the current song as your &amp;quot;Now Playing&amp;quot; personal status message in MSN Messenger version 7 or later and Windows Live Messenger.&lt;br /&gt;
&lt;br /&gt;
=Link=&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#msn Official Website]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31609&amp;amp;st=0 Discussion thread]&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foo_msnalt/foo_msnalt.dll Download link]&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foo_msnalt/foo_msnalt.cpp Source Code]&lt;br /&gt;
&lt;br /&gt;
[[Category: Other components]]&lt;br /&gt;
[[Category: Notifier]]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/MSN_Now_Playing_(alt)_(foo_msnalt)&amp;diff=12485</id>
		<title>Foobar2000:Components/MSN Now Playing (alt) (foo msnalt)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/MSN_Now_Playing_(alt)_(foo_msnalt)&amp;diff=12485"/>
		<updated>2006-08-25T11:27:29Z</updated>

		<summary type="html">&lt;p&gt;FofR: /* Link */  added source code link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Msnalt1.PNG|thumb]]&lt;br /&gt;
=Description=&lt;br /&gt;
* Allows for showing the current song as your &amp;quot;Now Playing&amp;quot; personal status message in MSN Messenger version 7 or later and Windows Live Messenger.&lt;br /&gt;
&lt;br /&gt;
=Link=&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#msn Official Website]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31609&amp;amp;st=0 Discussion thread]&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foo_msnalt/foo_msnalt.dll Download link]&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foo_msnalt/foo_msnalt.cpp Source Code]&lt;br /&gt;
&lt;br /&gt;
[[Category: Other components]]&lt;br /&gt;
[[Category: Notifier]]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Album_Art_Panel_(foo_uie_albumart)&amp;diff=12484</id>
		<title>Foobar2000:Components/Album Art Panel (foo uie albumart)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Album_Art_Panel_(foo_uie_albumart)&amp;diff=12484"/>
		<updated>2006-08-25T11:24:01Z</updated>

		<summary type="html">&lt;p&gt;FofR: format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Album Art Panel is a component for foobar2000 and Columns UI that displays album art in a panel. When configured, it can display any image you would like to associate with a track.&lt;br /&gt;
&lt;br /&gt;
[[Image:Albumartpannel.PNG|thumb]]&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
*Configurable sources list allows cycling of multiple images for a single track&lt;br /&gt;
*Allows title-formatting and wildcards to specify image file location&lt;br /&gt;
*Minimum height setting to assist with layouts&lt;br /&gt;
*Configurable resizing of album art to fit panel size&lt;br /&gt;
*Fading transitions between album art&lt;br /&gt;
*Configurable actions when panel is left-clicked, double-clicked, and middle-clicked.&lt;br /&gt;
*Can display album art for either the currently playing track or the currently selected track&lt;br /&gt;
*Can automatically cycle through source list during playback&lt;br /&gt;
&lt;br /&gt;
==Reading Embedded Album Art==&lt;br /&gt;
&lt;br /&gt;
Album Art Panel does not support reading album art which has been embedded as a tag (for example, as an ID3v2 tag in an MP3).&lt;br /&gt;
&lt;br /&gt;
=Sources List=&lt;br /&gt;
The sources list allows you to use [[Foobar2000:Titleformat_Reference|titleformatting scripts]] to specify exactly where Album Art Panel will look for image files.  In order to learn how to use the sources list, let&#039;s look at an example:&lt;br /&gt;
&lt;br /&gt;
  $replace(%_path%,%_filename_ext%,)folder.jpg&lt;br /&gt;
  -$replace(%_path%,%_filename_ext%,)*&lt;br /&gt;
  --components\default.png&lt;br /&gt;
  C:\Music\Arts\%artist% %album%*&lt;br /&gt;
  --components\default.png&lt;br /&gt;
&lt;br /&gt;
The sources list is organized into groups, based on which lines have a &#039;-&#039; in front of them.  Each line that does not start with a &#039;-&#039; is the beginning of a new source group.  A line which starts with &#039;-&#039; is part of the same source group as the line above it.  In the example above, there are two source groups.  The first source group consists of the first three lines and the second group consists of the last two lines.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Next Source&amp;quot; action (by default, left-clicking on the panel) will cycle forward through the source groups.  Similarily, the &amp;quot;Previous Source&amp;quot; action will cycle backwards through the source groups.&lt;br /&gt;
&lt;br /&gt;
The prefix &amp;quot;--&amp;quot; (two hypens) is used to indicate a &amp;quot;No Cover&amp;quot; image.  A &amp;quot;No Cover&amp;quot; image is essentially a default image which will be shown if no other matches can be found.  When automatic cycling is enabled, &amp;quot;No Cover&amp;quot; images will be skipped.&lt;br /&gt;
&lt;br /&gt;
The wildcard &#039;*&#039; can be used in place of one or any number of characters and &#039;?&#039; can be used in place of any single character.  For instance, the second line of the example above tells Album Art Panel to look for any file it can display in the same directory as the track.  Album Art Panel will display the first image which matches the pattern.  Characters in tags that are not allowed in filenames will be replaced with the &#039;?&#039; wildcard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Note: The &amp;quot;match:&amp;quot; prefix is obsolete.  Since version 0.160, the &amp;quot;match:&amp;quot; prefix is ignored, and &amp;quot;-match:&amp;quot; is treated like &amp;quot;-&amp;quot;.  The wildcards &#039;*&#039; and &#039;?&#039; can be used in any source string.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Album Art Panel will first look for an image at the location indicated in the first line of a source group.  If the image indicated by the first line cannot be found, Album Art Panel will look at subsequent lines within the same source group and display the first image which can be found.  If no image within a source group can be found, Album Art Panel will try to display the next source group instead.  If none of the source groups can be found, the display will be blank.&lt;br /&gt;
&lt;br /&gt;
=Link=&lt;br /&gt;
* [http://cherans.bol.ucla.edu/fooplugins.html Website and Download]&lt;br /&gt;
* [http://eolindel.free.fr/foobar0.9/albumart.shtml Unofficial User Manual]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=39924 Discussion Thread] [http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=39924&amp;amp;view=findpost&amp;amp;p=404265 (Current version)]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=34341 No-Cover Image Thread]&lt;br /&gt;
&lt;br /&gt;
[[Category: Columns UI]]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_CwBowron%27s_Title_formating_(foo_cwb_hooks)&amp;diff=12449</id>
		<title>Foobar2000:0.9 CwBowron&#039;s Title formating (foo cwb hooks)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_CwBowron%27s_Title_formating_(foo_cwb_hooks)&amp;diff=12449"/>
		<updated>2006-08-24T14:52:09Z</updated>

		<summary type="html">&lt;p&gt;FofR: /* Description */  Added latest functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;foo_cwb_hooks&#039;&#039;&#039; adds various functions and variables to global title formatting.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Download:&#039;&#039;&#039; [http://foobar.bowron.us/foo_cwb_hooks.zip foo_cwb_hooks.zip]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*$cwb_urldecode / $cwb_httpclean - decodes characters in URLs&lt;br /&gt;
*$cwb_removethe - removes The and A at the beginning of a string&lt;br /&gt;
*$cwb_ltrim - example: $cwb_ltrim(%artist%,The) $cwb_ltrim(%artist%,The ,A ,La )&lt;br /&gt;
*$cwb_datediff(d1,d2) - number of days between two dates in the format yyyy-mm-dd or yyyy-mm-dd hh:mm:ss &lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
*%cwb_systemdate% - date in the formay yyyy-mm-dd&lt;br /&gt;
*%cwb_systemdatetime% - date and time in the format yyyy-mm-dd hh:mm:ss&lt;br /&gt;
*%cwb_activelist% - active playlist name&lt;br /&gt;
*%cwb_activelist_count% - number of items in the active list&lt;br /&gt;
*%cwb_playinglist% - playing playlist name&lt;br /&gt;
*%cwb_playinglist_count% - number of items in the playing list&lt;br /&gt;
*%cwb_queueindex% - queueindex if in the queue, false otherwise&lt;br /&gt;
*%cwb_queueindexes% - indices of the item in the queue, false otherwise&lt;br /&gt;
*%cwb_queuelength% - length of the queue&lt;br /&gt;
*%cwb_queue_end_playlist% - playlist of the last item in the queue&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
*%cwb_playinglist% and %cwb_activelist% changes won&#039;t refresh in displays &lt;br /&gt;
&lt;br /&gt;
==Feature Requests==&lt;br /&gt;
&lt;br /&gt;
* Add variables for the following:&lt;br /&gt;
**length of active playlist and playing list&lt;br /&gt;
**%_playbackorder%&lt;br /&gt;
**%_replaygain_mode% - not really possible&lt;br /&gt;
**%_database% - gives back if a file belongs to database or not&lt;br /&gt;
***not easily possibe because you cannot use SDK functions in the title formatting callback&lt;br /&gt;
***only way I could see to do it is to cache the library and test against that &lt;br /&gt;
**%_added% - timestamp when a file was added to database&lt;br /&gt;
***not really possible - timestamp is not stored when added when added to library&lt;br /&gt;
***could be possible with a plugin that stores the date added to the library&lt;br /&gt;
***library_callback implementing on_items_added() to store timestamps &lt;br /&gt;
&lt;br /&gt;
==Useful Strings==&lt;br /&gt;
&lt;br /&gt;
&#039;Played Today&#039;, &#039;Played Yesterday&#039;, &#039;Played n days ago&#039; or &#039;No last played info&#039; &lt;br /&gt;
&lt;br /&gt;
$if(%last_played%, $puts(diff,$cwb_datediff(%last_played%,%cwb_systemdate%)) Played $ifgreater(1,$get(diff),Today, $ifgreater(2,$get(diff),Yesterday, $get(diff) days ago)), No last played info)&lt;br /&gt;
&lt;br /&gt;
=Link=&lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000#foo_cwb_hooks Official Website]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43606&amp;amp;hl=foo_cwb_hooks Discussion thread]&lt;br /&gt;
&lt;br /&gt;
[[Category: Other components]]&lt;br /&gt;
[[Category: Library tools]]&lt;/div&gt;</summary>
		<author><name>FofR</name></author>
	</entry>
</feed>