<?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=Reglib</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=Reglib"/>
	<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Special:Contributions/Reglib"/>
	<updated>2026-04-29T23:54:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=19735</id>
		<title>Foobar2000:Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=19735"/>
		<updated>2009-09-14T16:57:27Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* General */ Added stub link for new foo_logitech_lcd component&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k}}&lt;br /&gt;
This page contains most Foobar2000 v0.9.x components available at time of [http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9&amp;amp;action=history last update].&lt;br /&gt;
=1st Party Components= &lt;br /&gt;
The following components are created and maintained by the foobar2000 development team. Support for them should be asked for in the [http://www.hydrogenaudio.org/forums/index.php?showforum=29 Support forum]&lt;br /&gt;
===Included in Installer===&lt;br /&gt;
[[Image:Optional_features.png|thumb|The Optional Features screen of the fb2k Installer]]&lt;br /&gt;
In addition to foobar2000&#039;s core functionality, the following components can be installed as needed, in the Optional Features section of the installer.&lt;br /&gt;
*Audio CD Support (foo_cdda) Adds Support for [[CD|Audio CD]] Playback&lt;br /&gt;
*Album List (foo_albumlist) Gives quick access to Media Library Content with customizable tree view&lt;br /&gt;
*Standard DSPs (foo_dsp_std) Equalizer, resampler, advanced limiter, hard limiter, stereo to 4 channel upmixer and a couple other effects&lt;br /&gt;
*ReplayGain Scanner (foo_rgscan) advanced solution for volume matching&lt;br /&gt;
*[[Foobar2000:Converter|Converter (foo_converter)]] Converts files to WAV or any other formats using command line encoders&lt;br /&gt;
*[[Foobar2000:File_operations|File Operations (foo_fileops)]] Renames, moves, or copies files according to specified patterns&lt;br /&gt;
*Archive Reader (foo_unpack) Adds support for playing files directly from ZIP RAR and GZIP archives&lt;br /&gt;
*ABX Comparator (foo_abx) [[ABX]] component for double blind listening tests&lt;br /&gt;
*[[Foobar2000:Components_0.9/Freedb_Tagger_(foo_freedb2)|freedb Tagger (foo_freedb2)]] Tag retrieving support from freedb service for any set of files (mp3,mpc,flac,...-not only CDDA tracks)&lt;br /&gt;
&lt;br /&gt;
===Additional Components===&lt;br /&gt;
These components are provided as separate downloads, found on the [http://www.foobar2000.org/components/index.html Additional Components page]. &lt;br /&gt;
* [[Foobar2000:Components 0.9/Monkey&#039;s Audio Decoder (foo_input_monkey)|Monkey&#039;s Audio Decoder (foo_input_monkey)]] Adds decoding support for Monkey&#039;s Audio files (.[[APE]]) as well as APE Link files (.[[APL]]).&lt;br /&gt;
*[[Foobar2000:Components 0.9/ALAC Decoder (foo_input_alac)|ALAC Decoder (foo_input_alac)]] Apple Lossless ([[ALAC]]) decoder (has known stability issues: random crashes during decoding)&lt;br /&gt;
*[[Foobar2000:Components 0.9/Playback Statistics (foo playcount)|Playback Statistics (foo playcount)]] Collects playback statistics for your Media Library content.&lt;br /&gt;
*[[Foobar2000:Components 0.9/Binary Comparator (foo_bitcompare)|Binary Comparator (foo_bitcompare)]] Performs binary comparison between two or more tracks and reports differences.&lt;br /&gt;
* [[Foobar2000:Components 0.9/File Integrity Verifier (foo_verifier)|File Integrity Verifier (foo_verifier)]] Checks specified media files for decoding errors.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Quick Tagger (foo_quicktag)| Quick Tagger (foo_quicktag)]] Adds customizable context menu commands for quickly setting tag fields to preconfigured values&lt;br /&gt;
* [[Foobar2000:Components 0.9/Text Tools (foo texttools)|Text Tools (foo_texttools)]] Adds customizable context menu commands for copying information about the selected tracks to Windows Clipboard. &lt;br /&gt;
* [[Foobar2000:Components 0.9/Decoding Speed Test (foo_benchmark)|Decoding Speed Test (foo_benchmark)]] Measures decoding speed of audio files.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Convolve (foo_convolve)|Impulse response convolver (foo_convolve)]] Allows arbitrary effects to be captured and used inside foobar2000. ([http://www.hydrogenaudio.org/forums/index.php?showtopic=10611 More Info])&lt;br /&gt;
* [[Foobar2000:Components 0.9/Kernel Streaming Output (foo_out_ks)|Kernel Streaming support (foo_out_ks)]] Allows bit-exact playback bypassing Windows kernel mixer.&lt;br /&gt;
* [[Foobar2000:Components 0.9/ASIO Output (foo_out_asio)|ASIO output support (foo_out_asio)]] Adds ASIO output support.&lt;br /&gt;
* [[Foobar2000:Components 0.9/WASAPI output support (foo_out_wasapi)|WASAPI output support (foo_out_wasapi)]] Adds Windows Audio Session API exclusive mode output support, allowing bit-exact output and muting all other sounds on Windows Vista systems.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Audio CD Writer (foo_burninate)|Audio CD Writer (foo_burninate)]] CD burning support (requires Nero to be installed on your system.)&lt;br /&gt;
====Deprecated components====&lt;br /&gt;
These components are no longer maintained and provided only for compatibility with old configurations that rely on them. Functionality similar to what they offer is now provided through other still-maintained components.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Masstagger (foo_masstag)|Masstagger (foo_masstag)]]&lt;br /&gt;
&lt;br /&gt;
=3rd Party Components=&lt;br /&gt;
The following components are created and maintained by 3rd-party authors, using foobar2000&#039;s [http://www.foobar2000.org/SDK.html SDK]. Support for these components should be asked for in the [http://www.hydrogenaudio.org/forums/index.php?showforum=33 3rd Party Plugins forum] Asking for help directly in the component&#039;s thread is usually preferred.&lt;br /&gt;
== User Interfaces ==&lt;br /&gt;
&lt;br /&gt;
=== Columns UI ===&lt;br /&gt;
[[Foobar2000:Components 0.9/Columns UI (foo_ui_columns)|Columns UI (foo_ui_columns)]] Very popular alternate interface for foobar2000 based on a columns and panel layout.&lt;br /&gt;
&lt;br /&gt;
Columns UI introduced components with [[#Panels|panel]] capability which extend the user interface.&lt;br /&gt;
&lt;br /&gt;
===GFX===&lt;br /&gt;
[[Foobar2000:Components 0.9/GFX window (foo_ui_gfx)|GFX window (foo_ui_gfx)]] is a skinnable user interface, which doesn&#039;t only focus on looking good but tries to be as fast and &amp;quot;lightweight&amp;quot; as possible, too. It uses lua as scripting language. Two skins are included in the archive. Development of this component appears to have ceased.&lt;br /&gt;
&lt;br /&gt;
===Panels UI===&lt;br /&gt;
[[Foobar2000:Components 0.9/Panels UI (foo_ui_panels)|Panels UI (foo_ui_panels)]] gives the ability to manage multiple [[#Panels|panels]] through titleformating. No longer maintained and not compatible with current foobar2000 releases anymore.&lt;br /&gt;
&lt;br /&gt;
== User Interface Addons ==&lt;br /&gt;
=== UI Elements ===&lt;br /&gt;
The [[Foobar2000:Components 0.9/Default user interface (foo_ui_std)|default user interface (foo_ui_std)]], included in the standard installation package, can be extended with the following component(s):&lt;br /&gt;
* [[Foobar2000:Components 0.9/Facets (foo_facets)|Facets (foo_facets)]] Flexible media library viewer based on linked lists.&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels extend the functionality of Columns UI / Panels UI components.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Album Art Panel (foo_uie_albumart)|Album Art Panel (foo_uie_albumart)]] Panel to display album art.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Album Art Panel for matroska (foo_uie_albumart_mka)|Album Art Panel for matroska (foo_uie_albumart_mka)]] Albumart mod to read matroska covers.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Album List Panel (foo_uie_albumlist)|Album List Panel (foo_uie_albumlist)]] Displays the database in a treeview using customizable sorting methods (by genre, artist, directory, etc.)&lt;br /&gt;
* [[Foobar2000:Components 0.9/Bookmarks (foo_uie_bookmarks)|Bookmarks (foo_uie_bookmarks)]] Help you remember positions in songs.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Console (foo_uie_console)|Console (foo_uie_console)]] Panel version of console. Displays diagnostic messages. Requires Columns UI 0.1.3 beta 1 or newer.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Cover Flow (foo_bubble_coverflow)|Cover Flow (foo_bubble_coverflow)]] The plugin can work either as a UI panel or a standalone window (found in the view menu), and a fullscreen mode for both.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Dockable Panels (foo_dockable_panels)|Dockable Panels (foo_dockable_panels)]] It allows you to create windows that host columns ui panels as floating windows that can be attached to the side of the main foobar2000 window or each other.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Egoh Spectrum Analyser (foo_uie_vis_egoh)|Egoh Spectrum Analyser (foo_uie_vis_egoh)]] Similar to the default spectrum analyser.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Explorer Panel (foo_uie_explorer)|Explorer Panel (foo_uie_explorer)]] Displays a treeview of selected disks/folders.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Grouped playlist panel (foo_uie_pvt)|Grouped playlist panel (foo_uie_pvt)]] Preview version of columns playlist with grouping.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Lyrics Panel (foo_uie_lyrics_panel)|Lyrics Panel (foo_uie_lyrics_panel)]] Display lyrics stored in file tags. &lt;br /&gt;
* [[Foobar2000:Components 0.9/Music Browser (foo_browser)|Music Browser (foo_browser)]] Panels for Browsing Library, Similar to iTunes.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Dropdown (foo_uie_playlists_dropdown)|Playlist Dropdown (foo_uie_playlists_dropdown)]] Displays the playlist in a dropdown menu.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Tree (foo_playlist_tree)|Playlist Tree (foo_playlist_tree)]] Tree based media library with many available customizations.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Power Panels (foo_uie_powerpanels)|Power Panels (foo_uie_powerpanels)]] Seekbar and volume transparent version panels. Useful for theming.&lt;br /&gt;
* [[Foobar2000:Components 0.9/ProjectM Visualisation Panel (foo_uie_vis_projectM)|ProjectM Visualisation Panel (foo_uie_vis_projectM)]] Based on the ProjectM project, which is a reimplementation of Milkdrop under OpenGL.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Queue Manager (foo_uie_queuemanager)|Queue Manager (foo_uie_queuemanager)]] It provides a window that shows the queue&#039;s contents and allows you to delete parts of them or clear the whole queue.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Quicksearch Panel (foo_uie_quicksearch)|Quicksearch Panel (foo_uie_quicksearch)]] Search toolbar that sends results to a playlist.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Shpeck (foo_vis_shpeck)|Shpeck (foo_vis_shpeck)]] Winamp visualisation plugins wrapper.&lt;br /&gt;
* [[Foobar2000:Components_0.9/Single Column Playlist (foo_uie_single_column_playlist)|Single Column Playlist Viewer (foo_uie_single_column_playlist)]] Displays the playlist in a single column with &amp;quot;headers&amp;quot;. Useful for creating a narrower and smaller layout.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Tabs (foo_uie_tabs)|Tabs (foo_uie_tabs)]] Tabs allows you to break Pauli&#039;s Exclusion principle by placing multiple panels in the same position at the same time.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Track Info Panel (foo_uie_trackinfo)|Track Info Panel (foo_uie_trackinfo)]] Uses TAGZ to display information about a selected track.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Track Info Panel Mod (foo_uie_trackinfo_mod)|Track Info Panel Mod (foo_uie_trackinfo_mod)]] Improved Track Info panel with the ability to use multiple fonts in the same panel. Also has the ability to display images.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Typefind (foo_typefind)|Typefind (foo_typefind)]] Provides some in-line search facilities.&lt;br /&gt;
* [[Foobar2000:Components 0.9/WmpVis (foo_uie_wmpvis)|&amp;lt;span id=&amp;quot;wmpvis&amp;quot;&amp;gt;WmpVis (foo_uie_wmpvis)&amp;lt;/span&amp;gt;]] Uses the visualizations from WMP.&lt;br /&gt;
* [[Foobar2000:Components 0.9/WSH panel (foo_uie_wsh_panel)|WSH panel (foo_uie_wsh_panel)]] Windows script host panel.&lt;br /&gt;
&lt;br /&gt;
==DSP==&lt;br /&gt;
* [[Foobar2000:Components 0.9/4Front Headphones (foo_dsp_headphones9)|4Front Headphones (foo_dsp_headphones9)]] Effects for headphone users.&lt;br /&gt;
* [[Foobar2000:Components 0.9/ATSurround Processor (foo_dsp_atsurround)|ATSurround Processor (foo_dsp_atsurround)]] Reproduces surround sound information present in many stereo audio material and more.&lt;br /&gt;
* [[Foobar2000:Components 0.9/BS2D (foo_dsp_bs2p)|BS2D (foo_dsp_bs2p)]] Improves headphone listening of regular hi-fi stereo records.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Voice Cut Filter (foo_dsp_centercut)|Voice Cut Filter (foo_dsp_centercut)]] Voice cut filter.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Channel Mixer (foo_channel_mixer)|Channel Mixer (foo_channel_mixer)]] Up/down mix to/from 1-6 channels.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Crossfeed (foo_dsp_crossfeed)|Crossfeed (foo_dsp_crossfeed)]] Filters the music to help reduce fatigue caused by listening to music with headphones.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Dolby Headphone Wrapper (foo_dsp_dolbyhp)|Dolby Headphone Wrapper (foo_dsp_dolbyhp)]] Dolby Headphone engine DLL.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Dolby Pro Logic II wrapper (foo_dsp_pl2)|Dolby Pro Logic II wrapper (foo_dsp_pl2)]] Dolby Pro Logic II engine DLL (dll not included).&lt;br /&gt;
* [[Foobar2000:Components 0.9/Downmix (foo_dsp_downmix)|Downmix (foo_dsp_downmix)]] Downmix [[AC3]], [[DTS]], etc. to stereo.&lt;br /&gt;
* [[Foobar2000:Components 0.9/FreeSurround (foo_dsp_fsurround)|FreeSurround (foo_dsp_fsurround)]] It takes Dolby Surround / Pro Logic I/II encoded stereo music and decodes it into 5.1 sound. &lt;br /&gt;
* [[Foobar2000:Components 0.9/George Yohng&#039;s VST Wrapper (foo_dsp_vstwrap)|George Yohng&#039;s VST Wrapper (foo_dsp_vstwrapper)]] Enables VST plug-ins.&lt;br /&gt;
* [[Foobar2000:Components 0.9/LPCM - Delta-PCM Converter (foo_dsp_delta)|LPCM - Delta-PCM Converter (foo_dsp_delta)]] Noise sharpening filter.&lt;br /&gt;
* [[Foobar2000:Components 0.9/OSS/3D (foo_dsp_oss3ddsp)|OSS/3D (foo_dsp_oss3ddsp)]] Audio enhancement. SHAREWARE.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Post-track Silence (foo_dsp_silence)|Post-track Silence (foo_dsp_silence)]] Inserts a configurable amount of silence after each track to help external devices like MiniDisc players to sync track changes.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Secret Rabit Code Resampler (foo_dsp_src9)|Secret Rabit Code Resampler (foo_dsp_src9)]] Mega Nerd&#039;s Secret Rabbit Code sample rate converter.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Skip Silence (foo_dsp_skip_silence)|Skip Silence (foo_dsp_skip_silence)]] Detect and skip silence.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Soundtouch (foo_dsp_soundtouch)|Soundtouch (foo_dsp_soundtouch)]] Ajust pitch, tempo and rate.&lt;br /&gt;
* [[Foobar2000:Components 0.9/SSRC (foo_dsp_ssrc)|SSRC (foo_dsp_ssrc)]] Sample rate converter.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Stereo Convolver (foo_dsp_stereoconv)|Stereo Convolver (foo_dsp_stereoconv)]] Take stereo audio and convolve each channel with two impulse responses.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Surround Pan (foo_dsp_span)|Surround Pan (foo_dsp_span)]] WYSIWYG Surround panning.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Tube Sound (foo_dsp_tube)|Tube Sound (foo_dsp_tube)]] Emulate tube sound.&lt;br /&gt;
* [[Foobar2000:Components 0.9/VLevel (foo_dsp_vlevel)|VLevel (foo_dsp_vlevel)]] Dynamic compressor which amplifies the quiet parts of music.&lt;br /&gt;
* [[Foobar2000:Components 0.9/VST Host (foo_dsp_vst)|VST Host (foo_dsp_vst)]] Adds support to Virtual Studio Technology audio interface.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Winamp DSP Bridge (foo_dsp_winamp)|Winamp DSP Bridge (foo_dsp_winamp)]] Allows the use of Winamp DSPs.&lt;br /&gt;
* [[Foobar2000:Components 0.9/XOver (foo_dsp_xover)|XOver (foo_dsp_xover)]] Implements this digital crossover to achieve active multi-amplification.&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
===Music codecs===&lt;br /&gt;
* [[Foobar2000:Components 0.9/AC3 Decoder (foo_ac3)|AC3 Decoder (foo_ac3)]] Decodes Dolby Digital lossy audio compression technologies format ([[AC3]]).&lt;br /&gt;
* [[Foobar2000:Components 0.9/AC3 Packet Decoder (foo_packet_decoder_ac3)|AC3 Packet Decoder (foo_packet_decoder_ac3)]] Needed for [[AC3]] in [[Matroska]].&lt;br /&gt;
* [[Foobar2000:Components 0.9/DTS Decoder (foo_dts)|DTS Decoder (foo_dts)]] Decodes Digital Theater Systems ([[DTS]]) audio format.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Matroska Plugin (foo_input_mkx)|Matroska Plugin (foo_input_mkx)]] Decodes [[Matroska]] audio container format.&lt;br /&gt;
* [[Foobar2000:Components 0.9/MIDI Synthesizer Host (foo_midi)|MIDI Synthesizer Host (foo_midi)]] &lt;br /&gt;
* [[Foobar2000:Components 0.9/OptimFROG Lossless Audio Decoder (foo_input_ofr)|OptimFROG Lossless Audio Decoder (foo_input_ofr)]] Decodes both the Lossless ([[OptimFROG|OFR]]) and DualStream (OFS) audio format.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Shorten Decoder (foo_input_shorten)|Shorten Decoder (foo_input_shorten)]] Decodes Shorten ([[SHN]]) audio format.&lt;br /&gt;
* [[Foobar2000:Components 0.9/SPDIF Passthrough (foo_spdif)|SPDIF Passthrough (foo_spdif)]] SPDIF passthrough for [[AC3]] and [[DTS]] files.&lt;br /&gt;
* [[Foobar2000:Components 0.9/TTA Audio Decoder (unofficial) (foo_input_tta)|TTA Audio Decoder (unofficial) (foo_input_tta)]] Decodes True Audio ([[TTA]]) audio format.&lt;br /&gt;
* [[Foobar2000:Components 0.9/WavPack Packet Decoder (foo_packet_decoder_wavpack)|WavPack Packet Decoder (foo_packet_decoder_wavpack)]].&lt;br /&gt;
&lt;br /&gt;
===Other codecs===&lt;br /&gt;
* [[Foobar2000:Components 0.9/ADPCM Decoder (foo_adpcm)|ADPCM Decoder (foo_adpcm)]] Plays GameCube ADPCM audio data and some. (DSP, ADP, GCM, HPS, STM, AST, etc.)&lt;br /&gt;
* [[Foobar2000:Components 0.9/Another Slight Atari Player (foo_asap)|Another Slight Atari Player (foo_asap)]] [http://asap.sourceforge.net/ ASAP] is a player/converter of Atari 8-bit music for modern computers. It provides high-quality, identical to the popular Atari800 emulator, emulation of the POKEY sound chip and the 6502 processor.&lt;br /&gt;
* [[Foobar2000:Components 0.9/DUMB Module Decoder (foo_dumb)|DUMB Module Decoder (foo_dumb)]] Plays your favorite module files, and then some. (MOD, S3M, XM, IT, 669, PTM, PSM, MTM, UMX)&lt;br /&gt;
* [[Foobar2000:Components 0.9/Game Audio Decoder (foo_game)|Game Audio Decoder (foo_game)]] Plays Westwood&#039;s audio (AUD), Sierra&#039;s sounds (SFX/AUD), Core design&#039;s cd audio (cdaudio.WAD), Funcom&#039;s music (ISS), Rome Total War&#039;s IDX (.IDX/DAT), Timegate&#039;s format (RWD), EA&#039;s Pathfinder audio (MUS) and Ben Gerard&#039;s music (SC68).&lt;br /&gt;
* [[Foobar2000:Components 0.9/Game Emu Player (foo_gep)|Game Emu Player (foo_gep)]] Plays several emulation formats. (GBS, NSF, SPC, GYM, HES, VGM)&lt;br /&gt;
* [[Foobar2000:Components 0.9/Ganbatte! (foo_ganbatte)|Ganbatte! (foo_ganbatte)]] Plays compressed Edlib (.d00, .d01) files.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Lunar 2 PCM Decoder (foo_lunar2)|Lunar 2 PCM Decoder (foo_lunar2)]] Plays audio files found on the original Lunar: Eternal Blue CD (RP*.PCM).&lt;br /&gt;
* [[Foobar2000:Components 0.9/M1 Decoder (foo_m1)|M1 Decoder (foo_m1)]] Plays arcade/pinball game sound.&lt;br /&gt;
* [[Foobar2000:Components 0.9/MDX Decoder (foo_input_mdx)|MDX Decoder (foo_input_mdx)]] MDX is a MIDI-like format that is designed to be played using the X68000&#039;s FM synthesizer.&lt;br /&gt;
* [[Foobar2000:Components 0.9/NSF Decoder (foo_input_nsf)|NSF Decoder (foo_input_nsf)]] NSF file is a sound data file containing instructions for the Nintendo Entertainment System (NES) sound hardware.&lt;br /&gt;
* [[Foobar2000:Components 0.9/PSF Decoder (foo_psf)|PSF Decoder (foo_psf)]] Plays PlayStation Sound Format (PSF) files.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Reverse (foo_input_reverse)|Reverse (foo_input_reverse)]] Play music in reverse.&lt;br /&gt;
* [[Foobar2000:Components 0.9/SID Player 2 (foo_sid)|SID Player 2 (foo_sid)]] Sound chip of Commodore&#039;s CBM-II, Commodore 64 and Commodore 128 home computers.&lt;br /&gt;
* [[Foobar2000:Components 0.9/S98 Decoder (foo_input_s98)|S98 Decoder (foo_input_s98)]] Sound format for the NEC PC-98 microcomputer.&lt;br /&gt;
* [[Foobar2000:Components 0.9/USF Decoder (foo_input_usf)|USF Decoder (foo_input_usf)]] Decodes sound data ripped directly from a Nintendo 64 video game.&lt;br /&gt;
&lt;br /&gt;
==Visualisation==&lt;br /&gt;
* [[Foobar2000:Components 0.9/Peakmeter (foo uie peakmeter)|Peakmeter for Columns UI (foo_uie_peakmeter)]] Displays the level for each channel in dB.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Peakmeter Spectrum (foo uie vis peakmeter spectrum)|Peakmeter and spectrum analyzer (foo_uie_vis_peakmeter_spectrum)]] Plugin that combines a peakmeter with a spectrum analyzer.&lt;br /&gt;
* [[Foobar2000:Components 0.9/ProjectM Visualisation (foo_vis_projectM)|ProjectM Visualisation (foo_vis_projectM)]] Based on the ProjectM project, which is a reimplementation of Milkdrop under OpenGL.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Shpeck (foo_vis_shpeck)|Shpeck (foo_vis_shpeck)]] Winamp visualisation plugins wrapper.&lt;br /&gt;
* [[#wmpvis|WmpVis (foo_uie_wmpvis)]] Uses the visualizations from WMP. &#039;&#039;Panel version only&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
===General===&lt;br /&gt;
* [[Foobar2000:Components 0.9/Alarm (foo_alarm)|Alarm (foo_alarm)]] Starts playback at the specified period of time.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Channel Usage Visualisation (foo_vis_channelusage)|Channel Usage Visualisation (foo_vis_channelusage)]] Channel Usage Visualisation.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Common Services (foo_common)|Common Services (foo_common)]] Common services.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Converter (foo converter)|Converter (foo converter)]]&lt;br /&gt;
* [[Foobar2000:Components 0.9/Cwbowron&#039;s Title formating (foo_cwb_hooks)|Cwbowron&#039;s Title Format Hooks (foo_cwb_hooks)]] Adds various global titleformat functions/variables, tagger window, new file tagger, and more. No longer maintained, not compatible with current foobar2000 versions anymore.&lt;br /&gt;
* [[Foobar2000:Components_0.9/Directory_Monitor_(foo_dirwatch)|Directory Monitor (foo_dirwatch)]] Allows you to specify directories to monitor, and notifies the Media Library of any changes (additions, renames, deletions) that occur.&lt;br /&gt;
* [[Foobar2000:Components 0.9/EXTM3U Playlist Creater (foo_extm3u)|EXTM3U Playlist Creater (foo_extm3u)]] Allow to save current playlist in the EXTM3U format.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Feature Watcher (foo_whatsnew)|Feature Watcher (foo_whatsnew)]] Watches for added or removed features.&lt;br /&gt;
* [[Foobar2000:Components 0.9/File Date (foo_filedate)|File Date (foo_filedate)]] Add to file tag date added, accessed, created or modified from context menu entries.&lt;br /&gt;
* [[Foobar2000:Components 0.9/HyperIM (foo_2hyperim)|HyperIM (foo_2hyperim)]] Provides 19 media macros.&lt;br /&gt;
* [[Foobar2000:Components 0.9/iPod Manager (foo_dop)|iPod Manager (foo_dop)]] Experimental iPod plugin for foobar2000 0.9.2+, currently in alpha version.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Logitech G15 LCD Display (foo_g15lcd)|Logitech G15 LCD Display (foo_g15lcd)]] Control the LCD panel on a Logitech G15 keyboard.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=72720|Logitech G15/G19/Z-10 Display (foo_logitech_lcd)] Customizable visualizations and track info on the LCD panel on a Logitech G15/G19/Z-10.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Menu Addons (foo_menu_addons)|Menu Addons (foo_menu_addons)]] Adds a few shortcuts in menu.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Open URL (foo_openurl)|Open URL (foo_openurl)]] Adds a context menu item to open URLs from metadata fields in a web browser.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Pause On Lock (foo_lock)|Pause On Lock (foo_lock)]] Pauses/unpauses foobar2000 on workstation lock/unlock.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Pause on Lock (extended) (foo_lock_ex)|Pause on Lock (extended) (foo_lock_ex)]] Pause playing on workstation lock. Optimized for use with Windows XP/2003.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Preview (foo_preview)|Preview (foo_preview)]] Play only part of each track in the playlist.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Replaygain Override (foo_rg_trn)|Replaygain Override (foo_rg_trn)]] Allows you to automatically switch between replaygain modes based on specified criteria (e.g. use track based RG for shuffle mode, etc.)&lt;br /&gt;
* [[Foobar2000:Components 0.9/Run (foo_run)|Run (foo_run)]] Able you to run a external program with the foobar syntax.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Run Commands (foo_runcmd)|Run Commands (foo_runcmd)]] Search and execute menu commands.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Scheduler (foo_scheduler)|Scheduler (foo_scheduler)]] Plugin for scheduling actions like play, stop, system shutdown/wake up and many more.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Send To Device (foo_sendtodevice)|Send To Device (foo_sendtodevice)]] Add &amp;quot;Send to Device&amp;quot; feature.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Shell Link Resolver (foo_lnk)|Shell Link Resolver (foo_lnk)]] Shell link resolver.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Timebomb (foo_timebomb)|Timebomb (foo_timebomb)]] Stop playback / exit program after a specified time.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Unpacker for JMA archive (foo_unpack_jma)|Unpacker for JMA archive (foo_unpack_jma)]]&lt;br /&gt;
* [[Foobar2000:Components 0.9/Unpacker for LHA archive (foo_unpack_lha)|Unpacker for LHA archive (foo_unpack_lha)]]&lt;br /&gt;
* [[Foobar2000:Components 0.9/Winamp API Emulator (foo_winamp_spam)|Winamp API Emulator (foo_winamp_spam)]] Designed to create a fake Winamp 1.x window which will act as a wrapper between applications written to use the Winamp API and foobar2000.&lt;br /&gt;
&lt;br /&gt;
===Lyrics===&lt;br /&gt;
* [[Foobar2000:Components 0.9/Gasazip Lyrics (foo_gasazip)|Gasazip Lyrics (foo_gasazip)]] Search for lyrics and displays it in external window.&lt;br /&gt;
* [[Foobar2000:Components 0.9/LyricsDB (foo_lyricsdb)|LyricsDB (foo_lyricsdb)]] Search lyrics basing on song&#039;s artist title and sometimes album.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Mini Lyrics (foo_ui_minilyrics)|Mini Lyrics (foo_ui_minilyrics)]] Lyrics viewer for synchronizing and displaying lyrics of the currently playing song.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Sakura Script Lyrics (foo_sstp_lyrics)|Sakura Script Lyrics (foo_sstp_lyrics)]] Plays a SAKURA script lyrics to a SSP client.&lt;br /&gt;
&lt;br /&gt;
===Notifier===&lt;br /&gt;
* [[Foobar2000:Components 0.9/AMIP Wrapper (foo_amipwrapper)|AMIP Wrapper (foo_amipwrapper)]] Complete now-playing plug-in for mIRC, PIRCH, Klient, Bersirc, other IRC and Mail clients, supporting full player control from mIRC, playlist search, clipboard integration, HTTP, dynamic image signatures, etc.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Listening To (foo_listeningto)|Listening To (foo_listeningto)]] Sends NowPlaying information to Miranda IM.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Miranda IM Notifier (foo_mim_notify)|Miranda IM Notifier (foo_mim_notify)]] Sends configurable information about the current playing song to Miranda-IM and shows popup windows with this info.&lt;br /&gt;
* [[Foobar2000:Components 0.9/MSN avatar changer (foo_uie_albumart_msn)|MSN avatar changer (foo_uie_albumart_msn)]] Set currently playing song&#039;s album art as avatar.&lt;br /&gt;
* [[Foobar2000:Components 0.9/MSN Now Playing (alt) (foo_msnalt)|MSN Now Playing (alt) (foo_msnalt)]] Show the current song as &amp;quot;Now Playing&amp;quot; in MSN and MS Live messenger.&lt;br /&gt;
* [[Foobar2000:Components 0.9/On-Screen Display (foo_osd)|On-Screen Display (foo_osd)]] On screen display of track information and volume bar.&lt;br /&gt;
* [[Foobar2000:Components 0.9/On-Screen Display GDI (foo_osd_gdiplus)|On-Screen Display GDI (foo_osd_gdiplus)]] Same as foo_osd but uses GDI+ for osd drawing.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Pretty Popup (foo_prettypop)|Pretty Popup (foo_prettypop)]] Display a moderately sized popup of song information when a new song plays.&lt;br /&gt;
&lt;br /&gt;
===Online database===&lt;br /&gt;
* [[Foobar2000:Components 0.9/Audioscrobbler (foo_audioscrobbler)|Audioscrobbler (foo_audioscrobbler)]] Audioscrobbler will send the name of every song you play on your computer to Last.fm. This effortlessly populates your profile to play radio you like and make personalized recommendations.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Foosic Music Database (foo_sic)|Foosic Music Database (foo_sic)]] Sends track information to the [http://www.foosic.org/ foosic online database]. You can currently view your top artist, album and track statistics with foosic. Now support FooID fingerprints.&lt;br /&gt;
&lt;br /&gt;
===Online radio===&lt;br /&gt;
* [[Foobar2000:Components 0.9/MSLive (foo_input_mslive)|MSLive (foo_input_mslive)]] Support for [[MMS]] and [[RSTP]] broadcast radio protocols.&lt;br /&gt;
* [[Foobar2000:Components 0.9/XM Radio Online Player (foo_xm)|XM Radio Online Player (foo_xm)]] Allow you to listen to XM Radio channels over the Internet by using XM Radio Online.&lt;br /&gt;
&lt;br /&gt;
===Playlist tools===&lt;br /&gt;
* [[Foobar2000:Components 0.9/Audioscrobble Charts (foo_scrobblecharts)|Audioscrobble Charts (foo_scrobblecharts)]] Generate a playlist from an artist&#039;s Last.fm chart. It also allows you to sort a selection in the playlist by the artist&#039;s charts.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Bin Pack (foo_binpack)|Bin Pack (foo_binpack)]] Creates playlists from a list with a maximum length.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Command Playlist (foo_cmd_playlist)|Command Playlist (foo_cmd_playlist)]] Add /playlist-activate:&amp;quot;Name&amp;quot; to the foobar command line to activate the named playlist.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Cuesheet Creator (foo_cuesheet_creator)|Cuesheet Creator (foo_cuesheet_creator)]] Cuesheet creator.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Database Search (foo_dbsearch)|Database Search (foo_dbsearch)]] Database search.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Default Video Player (foo_default_videoplayer)|Default Video Player (foo_default_videoplayer)]] Allows you to play your video clips from foobar playlist with default external player.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Delete Current (foo_deletecurrent)|Delete Current (foo_deletecurrent)]] Adds a menu item giving the possibility to delete from computer the current playing track.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Highlight Playing (foo_highlightplaying)|Highlight Playing (foo_highlightplaying)]] Highlights actual now playing item even when the playlist has been broken.&lt;br /&gt;
* [[Foobar2000:Components 0.9/History (foo_history)|History (foo_history)]] Very basic song history.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Inactive Tracks (foo_skip)|Inactive Tracks (foo_skip)]] Skips tracks that are marked via a tag as inactive.&lt;br /&gt;
* [[Foobar2000:Components 0.9/MeowDB (foo_meowdb)|MeowDB (foo_meowdb)]] Takes the Media Library and outputs the results to a form and uploads it to your server using the cURL library.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Navigator (foo_navigator)|Navigator (foo_navigator)]] Advanced history component.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Now Playing Simple (foo_np_simple)|Now Playing Simple (foo_np_simple)]] Simple now playing plugin to output formatted string to plain text file.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playback Queue Viewer (foo_pqview)|Playback Queue Viewer (foo_pqview)]] Playback queue viewer.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Bind (foo_playlist_bind)|Playlist Bind (foo_playlist_bind)]] Synchronize playlist with contents of specific directory.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Clear (foo_playlistclear)|Playlist Clear (foo_playlistclear)]] All playlists are cleared at startup.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Manager (foo_playlist_manager)|Playlist Manager (foo_playlist_manager)]] Playlist manager.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Name Enhenced (foo_playlist_name_enhanced)|Playlist Name Enhenced (foo_playlist_name_enhanced)]] Appends automatically playlist info (&amp;quot;items / length&amp;quot;) to all playlist names.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Tools (foo_utils)|Playlist Tools (foo_utils)]] Provides various general commands.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playlist Tools for Matroska (foo_utils_mka)|Playlist Tools for Matroska (foo_utils_mka)]] Provides various general commands.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Queue Manager (foo_queuemanager)|Queue Manager (foo_queuemanager)]] It provides a window that shows the queue&#039;s contents and allows you to delete parts of them or clear the whole queue. &#039;&#039;Non-ColumnUI obsolete version, try panel version instead.&#039;&#039;&lt;br /&gt;
* [[Foobar2000:Components 0.9/Randomized Playlist Entry (foo_random)|Randomized Playlist Entry (foo_random)]] Randomized playlist entry.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Rating (foo_rating)|Rating (foo_rating)]] Display an icon in the systray with a tooltip popup from which you can choose a rating between 1 and 5 for the currently playing file.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Remove Played (foo_removeplayed)|Remove Played (foo_removeplayed)]] It removes tracks from the playlist once they&#039;ve been played.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Track Finder (foo_trackfinder)|Track Finder (foo_trackfinder)]] Displays a context menu that lets you quickly find songs based on their album title or artists name.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Track Position (foo_trackpos)|Track Position (foo_trackpos)]] Provides a new context menu item &amp;quot;place after current playing&amp;quot;, that allows you to place any tracks after the current playing one in the playing playlist.&lt;br /&gt;
* [[Foobar2000:Components 0.9/XSPF (foo_xspf)|XSPF (foo_xspf)]] Adds XSPF support. XSPF is an open, XML based playlist format.&lt;br /&gt;
&lt;br /&gt;
===Playback Statistics===&lt;br /&gt;
* [[Foobar2000:Components 0.9/Playback Statistics Custom (foo_playback_custom)|Playback Statistics Custom (foo_playback_custom)]] Stores playback statistics in tags like foo_playcount_mod, with claimed faster response, and uses foo_custominfo db if file is unavailable for writing.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Play Count Mod (foo_playcount_mod)|Play Count Mod (foo_playcount_mod)]] Unofficial playcount modded to supress the update tag popups.&lt;br /&gt;
&lt;br /&gt;
===Remote control===&lt;br /&gt;
* [[Foobar2000:Components 0.9/Advanced Controls (foo_advancedcontrols)|Advanced Controls (foo_advancedcontrols)]]  Control all the playback functions from icons in the Taskbar Notification Area (play, pause, next, previous, open)&lt;br /&gt;
* [[Foobar2000:Components 0.9/Appcommand (foo_appcommand)|Appcommand (foo_appcommand)]] Adds the ability to assign multimedia keyboard buttons that sends APPCOMMAND (for example some HP keyboards) as (global) keyboard hotkeys.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Bluetooth Control (foo_bluetooth_ctrl)|Bluetooth Control (foo_bluetooth_ctrl)]] Control your favourite music player using your favourite Symbian-based bluetooth enabled phone.&lt;br /&gt;
* [[Foobar2000:Components 0.9/COM Automation Server (foo_comserver2)|COM Automation Server (foo_comserver2)]] Allows controlling foobar2000 through COM Automation&lt;br /&gt;
* [[Foobar2000:Components 0.9/Control Server (foo_controlserver)|Control Server (foo_controlserver)]] Acts as a server to control Foobar2000. Connect with a telnet client and control it using ASCII commands.&lt;br /&gt;
* [[Foobar2000:Components 0.9/DDE Control (foo_ddecontrol)|DDE Control (foo_ddecontrol)]] Control foobar remotelly with DDE interprocess communication (interface in japanese only).&lt;br /&gt;
* [[Foobar2000:Components 0.9/HTTP Writer (foo_write_http)|HTTP Writer (foo_write_http)]] It&#039;s TCP/IP server that listens on a specified port for incoming requests such as play, stop, etc.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Joystick Control (foo_joystick_control)|Joystick Control (foo_joystick_control)]] Control foobar2000 from a joystick/gamepad.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Minibar2k (foo_Minibar2k)|Minibar2k (foo_Minibar2k)]] Control Foobar2k from your PDA (PocketPC based).&lt;br /&gt;
* [[Foobar2000:Components 0.9/Remote Control (foo_remotecontrol)|Remote Control (foo_remotecontrol)]] Adds support to Melloware Intelliremote software which claims to work with Creative remote control (Soundblaster Live!, Audigy, Extigy, Audigy ZS and Soundblaster X-Fi.)&lt;br /&gt;
* [[Foobar2000:Components 0.9/RM-1800 (foo_mr1800)|RM-1800 (foo_mr1800)]] Adds support of Creative X-Fi&#039;s remote (RM-1800).&lt;br /&gt;
* [[Foobar2000:Components 0.9/RM-X Media Edition (foo_rmx)|RM-X Media Edition (foo_rmx)]] Yet another plugin for remote control. SHAREWARE.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Titlebar (foo_managedWrapper)|Titlebar (foo_managedWrapper)]] Create a personal title bar that shows the currently playing song on the top of the screen all the time. It supports custom-made skins.&lt;br /&gt;
* [[Foobar2000:Components 0.9/WinLIRC Client (foo_lirc)|WinLIRC Client (foo_lirc)]] Control Foobar from a remote control.&lt;br /&gt;
&lt;br /&gt;
===Tagging===&lt;br /&gt;
* [[Foobar2000:Components 0.9/Custom Info (foo_custominfo)|Custom Info (foo_custominfo)]] Allows you to set info fields for files without modifying them. &lt;br /&gt;
* [[Foobar2000:Components 0.9/Discogs (foo_discogs)|Discogs (foo_discogs)]] Retrieve info and album art from Discogs.com database.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Freedb Tagger (foo_freedb2)|Freedb Tagger (foo_freedb2)]] Freedb.org tagger. Now included with official foobar2000 installers.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Live Show Tagger (foo_tradersfriend)|Live Show Tagger (foo_tradersfriend)]] Live show tagger.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Masstagger Addons (foo_masstag_addons)|Masstagger Addons (foo_masstag_addons)]] Some addons for masstagger, including code page conversion and chinese conversion.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/ Official third-party components site]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=42730&amp;amp;st=0 List of components] from earlier versions not yet ported to 0.9.x.&lt;br /&gt;
&lt;br /&gt;
* [[foobar2000:foobar2000|Go back to Main Page]]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/ASIO_Output_(foo_out_asio)&amp;diff=17928</id>
		<title>Foobar2000:Components/ASIO Output (foo out asio)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/ASIO_Output_(foo_out_asio)&amp;diff=17928"/>
		<updated>2007-11-11T04:25:29Z</updated>

		<summary type="html">&lt;p&gt;Reglib: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
Adds ASIO output support.&lt;br /&gt;
&lt;br /&gt;
=Installation and Usage=&lt;br /&gt;
# Install an ASIO driver such as ASIO4ALL&lt;br /&gt;
# Install the ASIO component for Foobar2000&lt;br /&gt;
# Configure ASIO&lt;br /&gt;
# Set your output device in Foobar2000 to ASIO&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Official Website]&lt;br /&gt;
* [http://www.asio4all.com/ ASIO4ALL Universal ASIO Driver For WDM Audio]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Delete_Current_(foo_deletecurrent)&amp;diff=17926</id>
		<title>Foobar2000:Components 0.9/Delete Current (foo deletecurrent)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Delete_Current_(foo_deletecurrent)&amp;diff=17926"/>
		<updated>2007-11-07T19:21:28Z</updated>

		<summary type="html">&lt;p&gt;Reglib: added author&amp;#039;s name and current version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Niver&lt;br /&gt;
&lt;br /&gt;
Current Version: 1.0.0.0 (Mar 10, 2007)&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* This is a simple component which adds a menu item giving the possibility to delete the current playing track. It becomes accessible as the menu item: Playback -&amp;gt; Delete current song.&lt;br /&gt;
* It allows you to assign a hotkey to this function.&lt;br /&gt;
* When the function is activated, a confirmation box pops up, and if the user chooses to delete, the current playing track is stopped and the associated file is moved to the recycle bin. The next track in the playlist, if any, is then started.&lt;br /&gt;
&lt;br /&gt;
==Link==&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=53305 Discussion thread]&lt;br /&gt;
* [http://www.niversoft.com/downloads/foo_DeleteCurrent.zip Download link]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Delete_Current_(foo_deletecurrent)&amp;diff=17925</id>
		<title>Foobar2000:Components 0.9/Delete Current (foo deletecurrent)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Delete_Current_(foo_deletecurrent)&amp;diff=17925"/>
		<updated>2007-11-07T19:19:32Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Description */ elaborated details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
* This is a simple component which adds a menu item giving the possibility to delete the current playing track. It becomes accessible as the menu item: Playback -&amp;gt; Delete current song.&lt;br /&gt;
* It allows you to assign a hotkey to this function.&lt;br /&gt;
* When the function is activated, a confirmation box pops up, and if the user chooses to delete, the current playing track is stopped and the associated file is moved to the recycle bin. The next track in the playlist, if any, is then started.&lt;br /&gt;
&lt;br /&gt;
==Link==&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=53305 Discussion thread]&lt;br /&gt;
* [http://www.niversoft.com/downloads/foo_DeleteCurrent.zip Download link]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Playback_Statistics_Custom_(foo_playback_custom)&amp;diff=17866</id>
		<title>Foobar2000:Components 0.9/Playback Statistics Custom (foo playback custom)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Playback_Statistics_Custom_(foo_playback_custom)&amp;diff=17866"/>
		<updated>2007-10-07T13:52:09Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Introduction */ linkified names of components&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
This component stores playback statistics (play count, first played date, last played date) in a tag like [[Foobar2000:Components 0.9/Play Count Mod (foo playcount mod)|foo_playcount_mod]], but has a faster response time. If the component is unable to write a tag, you can have it write the information into the custom_info database (this requires you to have [[Foobar2000:Components 0.9/Custom Info (foo_custominfo)|foo_custominfo]] installed).&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
* Writes playback statistics (play_counter, first_played, last_played) in tags&lt;br /&gt;
* Allows you to select which information to be written&lt;br /&gt;
* Allows you to select the tags where the information is to be stored: only in the tag, only in the custominfo database or in custominfo database only if tag cannot be written.&lt;br /&gt;
* Allows you to select when the information is updated (when the song starts playing, when it has finished etc).&lt;br /&gt;
* Allows you to convert from old standards and the official playback statistics format to new standards (e.g. Play_Time, Play_date, Last Played Timestamp, First Played Timestamp, Play Count etc. to Play_Counter, Last_Played, and First_Played)&lt;br /&gt;
&lt;br /&gt;
=Default Settings=&lt;br /&gt;
Note: All of the following can be changed&lt;br /&gt;
* Default tag name for play count: %play_counter%&lt;br /&gt;
* Default tag name for first played: %first_played%&lt;br /&gt;
* Default tag name for last played: %last_played%&lt;br /&gt;
* format of first played and last played is: YYYY-MM-DD HH:MM:SS&lt;br /&gt;
* Update playback statistics: when song has been played for 60 seconds&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Copy the foo_playback_custom to foobar2000&#039;s components directory. Restart foobar.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
#. Run foobar2000&lt;br /&gt;
#. Check to see that foo_playback_custom is installed by going to Preferences -&amp;gt; Components. Also, check to see if you are using the latest version&lt;br /&gt;
#. Go to Preferences -&amp;gt; Tools -&amp;gt; Playback Statistics Custom&lt;br /&gt;
&lt;br /&gt;
==Playback Statistics Update Timing==&lt;br /&gt;
This option allow you to change when the plugin updates information:&lt;br /&gt;
* Disable (Do not update)&lt;br /&gt;
  (self explanatory)&lt;br /&gt;
* Update when a track is started&lt;br /&gt;
  (self explanatory)&lt;br /&gt;
* Update when a track is ended&lt;br /&gt;
  (self explanatory)&lt;br /&gt;
* Update when playback percentage is&lt;br /&gt;
  You can select a value between 1% and 99%&lt;br /&gt;
* Update counter when playback second(s) is:&lt;br /&gt;
  You can set any value greater than 1 second&lt;br /&gt;
&lt;br /&gt;
==Playback statistics settings==&lt;br /&gt;
* Use the dropdown menu to select where you would like to store the information:&lt;br /&gt;
** &#039;only tag&#039;: this option will write the information into the song&#039;s tag. &lt;br /&gt;
** &#039;only foo_custominfo database&#039;: this option will write the information into the foo_custominfo database. You need the foo_custominfo component to be installed.&lt;br /&gt;
** &#039;tag and foo_custominfo...&#039;: this option will write the information to the song&#039;s tag whenever possible, if it is unable to do so (e.g. format does not support tagging -&amp;gt; wav), then the information will be stored in foo_custominfo.&lt;br /&gt;
&lt;br /&gt;
Which option should i choose? Writing tags in information means that the information will always be present regardless of whether you rename or move the file. However, when you back up your collection even a single change in tag will register as a file change and will result in the backup program copying the entire file again. if you play lots of music, you could easily be forced to copy a lot of (otherwise unchanged) music needlessly. Also, writing the tag will change the file&#039;s MD5 signature, which will wreak havoc if you&#039;re using MD5 to verify your files. Foo_custominfo database option avoids the need to write the tags in the file, so you don&#039;t have the backup or the MD5 problem. However, foo_custominfo information is lost when you rename/move the file, and the options aren&#039;t acccessible through masstagger/properties window. The third option is a compromise between the two, however requires the foo_custominfo component to be installed. So it&#039;s not justified for people who don&#039;t use wav/wma files very often..&lt;br /&gt;
&lt;br /&gt;
* Use the checkboxes to select which tags you want to write&lt;br /&gt;
* If you want to use a different tag to store the information (e.g. Play_Count instead of Play_counter), type Play_count in the box next to the tag and press the apply button.&lt;br /&gt;
* If you want to remove older tag standards as they are encountered, check the &amp;quot;convert old tag and remove&amp;quot; option. If you used to use the offfical playback statistics component, leave the tag names unchanged. Otherwise, replace as necessary&lt;br /&gt;
&lt;br /&gt;
==Other Settings==&lt;br /&gt;
* Only Tracks in media library update playback statistics&lt;br /&gt;
If selected, no information will be written to songs that are not in the media library&lt;br /&gt;
&lt;br /&gt;
* Store playback statistics with foo_custominfo database...&lt;br /&gt;
If selected, the component will write information to custominfo database if it fails to write a tag. NOTE: foo_custominfo has to be installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; I get a popup window when playback statistics is being updated. Is this normal?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; Normally, the window shouldn&#039;t appear while using the component. it only appears when I/O processing time while writing the tag is long. The track might also stop playing.&lt;br /&gt;
&lt;br /&gt;
Cause:&lt;br /&gt;
* While playing losssless files (e.g. Flac, APE, Wavpack, TAK) which are highly compressed, IO processing time can be long&lt;br /&gt;
* Another component is trying to update the file information at the same time&lt;br /&gt;
* Your Hard drive is slow/ fragmented&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
* Use a lower compressed lossless file&lt;br /&gt;
* Try changing the update time setting. (Usually components like foosic and audioscrobbler update at around 1 min.)&lt;br /&gt;
* Defrag your hard drive&lt;br /&gt;
&lt;br /&gt;
If none of the above works, make the plugin write the information to the custominfo database.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; How do i convert the tag standards in ALL my files at once form the last_played_timestamp (etc.) format to the new standard?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; The plugin is capable of cleaning the old information as they are encountered, however it might be more prudent to convert the old information to the newer standard in one go (for autoplaylists, columns display etc). &lt;br /&gt;
&lt;br /&gt;
The main difference between the standards used by the official plugin and these unofficial ones are:&lt;br /&gt;
* &#039;&#039;Play_count&#039;&#039; in the official plugin vs &#039;&#039;Play_counter&#039;&#039; in the unofficial plugin&lt;br /&gt;
&lt;br /&gt;
To convert from play_count to play_counter is pretty straightforward. Make an autoplaylist with all the files which have the &amp;quot;play_count&amp;quot; tag (by using &amp;lt;tt&amp;gt;NOT play_count MISSING&amp;lt;/tt&amp;gt; in the Query). Select all files, right click them, go to &amp;lt;tt&amp;gt; Tagging -&amp;gt; Manage Scripts &amp;lt;/tt&amp;gt;. Click &amp;lt;tt&amp;gt;Add&amp;lt;/tt&amp;gt;, and choose &amp;lt;tt&amp;gt;Copy Value&amp;lt;/tt&amp;gt;. Under Source put &amp;lt;tt&amp;gt;play_count&amp;lt;/tt&amp;gt;, under Destination put &amp;lt;tt&amp;gt;play_counter&amp;lt;/tt&amp;gt; and click OK. Again click &amp;lt;tt&amp;gt;Add&amp;lt;/tt&amp;gt; and select &amp;lt;tt&amp;gt;Delete values&amp;lt;/tt&amp;gt;. Put &amp;lt;tt&amp;gt;play_count&amp;lt;/tt&amp;gt; and click OK. Run this script. Now all your play_count information is in play_counter field.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Last_played_timestamp&#039;&#039; and &#039;&#039;First_played_timestamp&#039;&#039; (which are in the Win32Filetime format, and linked to last_played and first_played) vs &#039;&#039;Last_played&#039;&#039; and &#039;&#039;first_played&#039;&#039; (which are in YYYY-MM-DD HH:MM:SS format)&lt;br /&gt;
Note: the official playback plugin is still installed for this to work&lt;br /&gt;
&lt;br /&gt;
This is slightly trickier because of the different standards used.  One method to overcome this hurdle is to use Text Tools which is a part of foo_utils. Go to the Text Tools preferences  and delete the entries in header, body and  footer. Under body enter: &amp;lt;tt&amp;gt; %last_played%. %first_played%$crlf()&amp;lt;/tt&amp;gt;. Now create a playlist of all the files that contain both first_played_timestamp and last_played_timestamp (use &amp;lt;tt&amp;gt;NOT first_played_timestamp MISSING AND NOT last_played_timestamp MISSING&amp;lt;/tt&amp;gt; as the query). Select about 550 files in the autoplaylist, right click them &amp;lt;tt&amp;gt; Text Tools -&amp;gt; Copy Text&amp;lt;/tt&amp;gt;. Now open Masstagger (do not unselect the files). Click &amp;lt;tt&amp;gt; Add&amp;lt;/tt&amp;gt;, choose &amp;lt;tt&amp;gt;Input data (one line per track)&amp;lt;/tt&amp;gt; and paste the contents into the resulting window (press Ctrl-V or right click paste). Under Scheme, use &amp;lt;tt&amp;gt;%last_played%. %first_played%&amp;lt;/tt&amp;gt;. Click OK. and run the script. Repeat these steps for remaining files. NOTE: 550 files is due to the limitations of the masstagger window. If you try to paste more information, the contents will be truncated.&lt;br /&gt;
&lt;br /&gt;
=Link=&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=55746 Discussion thread]&lt;br /&gt;
* [http://kitahei.cocolog-nifty.com/youyou/2007/04/foo_custominfo__6ab8.html Download Site]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/ProjectM_Visualisation_(foo_vis_projectM)&amp;diff=17841</id>
		<title>Foobar2000:Components/ProjectM Visualisation (foo vis projectM)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/ProjectM_Visualisation_(foo_vis_projectM)&amp;diff=17841"/>
		<updated>2007-09-17T05:14:26Z</updated>

		<summary type="html">&lt;p&gt;Reglib: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Based on the ProjectM project, which is a reimplementation of Milkdrop under OpenGL.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* [http://acropolis.lokalen.org/wp-content/plugins/DownloadCounter/download.php?id=15 VC8 sp1 runtime libraries]&lt;br /&gt;
* [http://acropolis.lokalen.org/wp-content/plugins/DownloadCounter/download.php?id=20 libmmd.dll] Extract it to either the SYSTEM32 or foobar directory.&lt;br /&gt;
* Processor compatible with SSE instructions (Pentium 3 +).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
# Download and unpack the projectM [http://stephan.kochen.nl/proj/foobar2000.html#projectM component DLL] into your foobar2000 components directory&lt;br /&gt;
# Download and unpack the [http://www.msu.edu/~singergr/foo_vis_projectm/ fonts and presets] from the 0.8.x version of projectM.&lt;br /&gt;
# Configure projectM in the preferences, making sure to point the fonts and presets to the corresponding directories used in step 2.&lt;br /&gt;
# Test projectM by activating it through the menu: &amp;quot;View -&amp;gt; Visualizations -&amp;gt; ProjectM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Link==&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#projectM Official Website]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=34584 Discussion thread (0.8.x)]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=12288</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=12288"/>
		<updated>2006-08-15T14:33:40Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Specific Guides */ autoplaylist typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Foobar2000 is a freeware audio player, and more. It can not only play, it can also make a library, transcode files, rip CDs, ... the list goes on and on. A very powerful tool.&lt;br /&gt;
&lt;br /&gt;
Check it out to explore its full power.&lt;br /&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, [[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]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]], etc.&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play music directly from compressed RAR, ZIP 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 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:FAQ|foobar2000 FAQ]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&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;
&lt;br /&gt;
* [[foobar2000:Newbie User Guide|Newbie User Guide]]&lt;br /&gt;
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]&lt;br /&gt;
* [[foobar2000:Advanced User Guide|Advanced User Guide]]&lt;br /&gt;
&lt;br /&gt;
===Specific Guides===&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;
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;
* [http://eolindel.free.fr/foobar0.9/index.shtml Bachi-Bouzouk&#039;s guide] Complete manual about foobar2000 (version 0.9.X), 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://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide]&lt;br /&gt;
* [http://www.dizwell.com/html/foobar.htm 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;
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk&#039;s guide]&lt;br /&gt;
&lt;br /&gt;
==== Scripting Tutorials ====&lt;br /&gt;
&lt;br /&gt;
* [http://eolindel.free.fr/foobar0.9/tutorial.shtml 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://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar.prv.pl/ Polish-language forum]&lt;br /&gt;
* [http://foobar2000.fo.funpic.de/ German Support Forum]&lt;br /&gt;
* [http://www.foobar2000.tk Portuguese forum]&lt;br /&gt;
&lt;br /&gt;
===Appearance===&lt;br /&gt;
&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&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread&lt;br /&gt;
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready&lt;br /&gt;
* [http://foobar.nub4life.net/columns/ Columns UI configs]: .fcs file format&lt;br /&gt;
&lt;br /&gt;
==Thanks==&lt;br /&gt;
&lt;br /&gt;
picmixer: ReplayGain tutorial&lt;br /&gt;
&lt;br /&gt;
[[Category: foobar2000]]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=12287</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=12287"/>
		<updated>2006-08-15T14:33:16Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Specific Guides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Foobar2000 is a freeware audio player, and more. It can not only play, it can also make a library, transcode files, rip CDs, ... the list goes on and on. A very powerful tool.&lt;br /&gt;
&lt;br /&gt;
Check it out to explore its full power.&lt;br /&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, [[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]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]], etc.&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play music directly from compressed RAR, ZIP 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 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:FAQ|foobar2000 FAQ]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&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;
&lt;br /&gt;
* [[foobar2000:Newbie User Guide|Newbie User Guide]]&lt;br /&gt;
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]&lt;br /&gt;
* [[foobar2000:Advanced User Guide|Advanced User Guide]]&lt;br /&gt;
&lt;br /&gt;
===Specific Guides===&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;
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;
* [http://eolindel.free.fr/foobar0.9/index.shtml Bachi-Bouzouk&#039;s guide] Complete manual about foobar2000 (version 0.9.X), 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://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide]&lt;br /&gt;
* [http://www.dizwell.com/html/foobar.htm 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;
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk&#039;s guide]&lt;br /&gt;
&lt;br /&gt;
==== Scripting Tutorials ====&lt;br /&gt;
&lt;br /&gt;
* [http://eolindel.free.fr/foobar0.9/tutorial.shtml 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://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar.prv.pl/ Polish-language forum]&lt;br /&gt;
* [http://foobar2000.fo.funpic.de/ German Support Forum]&lt;br /&gt;
* [http://www.foobar2000.tk Portuguese forum]&lt;br /&gt;
&lt;br /&gt;
===Appearance===&lt;br /&gt;
&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&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread&lt;br /&gt;
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready&lt;br /&gt;
* [http://foobar.nub4life.net/columns/ Columns UI configs]: .fcs file format&lt;br /&gt;
&lt;br /&gt;
==Thanks==&lt;br /&gt;
&lt;br /&gt;
picmixer: ReplayGain tutorial&lt;br /&gt;
&lt;br /&gt;
[[Category: foobar2000]]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Discrete_Cosine_Transform&amp;diff=12138</id>
		<title>Discrete Cosine Transform</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Discrete_Cosine_Transform&amp;diff=12138"/>
		<updated>2006-07-26T07:43:50Z</updated>

		<summary type="html">&lt;p&gt;Reglib: cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Discrete Cosine Transform (DCT) is similar to the [[DFT|Discrete Fourier Transform]]: It transforms a signal from the [[time domain]] into the [[frequency domain]]. And just as the fourier transform uses sine and cosine waves to represent a signal, the DCT only uses cosine waves. The DCT I and II, is mostly used in image compression, while [[MDCT]] (DCT-IV) is used in audio encoding.&lt;br /&gt;
&lt;br /&gt;
The DCT is an invertible, discrete orthogonal transformation.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=12030</id>
		<title>Talk:Download page</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=12030"/>
		<updated>2006-07-06T19:43:30Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Nondestructive MP3 editors */ added more details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== table formatting confusion ==&lt;br /&gt;
I LOLed reading HotShot&#039;s comments. Here&#039;s a summary of things to watch when formatting table.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The key is the first character.&#039;&#039;&#039; The pipe character ( | ) produces standard text, the exclaim character ( ! ) produces boldface text. Unless the table&#039;s style has been modified to make all text bold.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The general alignment is set by the table&#039;s style,&#039;&#039;&#039; which is the very first line in the table definition.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The line with a pipe-dash ( |- ) marks start of a new row.&#039;&#039;&#039; You can put style here, which applies to the whole row.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;You can override style for a single cell.&#039;&#039;&#039; E.g., the table is styled to center the text. To left align a cell, slip the style after the first char ( | or ! ) and put another pipe char before the cell&#039;s entry.&lt;br /&gt;
&lt;br /&gt;
Hope this helps. Oh and for comment re: Linux downloads, see below...&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 04:34, 19 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pretty tables ==&lt;br /&gt;
Looking at the recent changes here, it would be nice to be able to get into the style.css for the wiki to make it easier to make pretty tables.&lt;br /&gt;
--[[User:Reglib|Reglib]] 04:57, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure but I think you can do that at [[MediaWiki:Monobook.css]].&lt;br /&gt;
[[User:Jan|Jan]] 05:20, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently all the CSS pages are protected. Templates are another option, but being really lazy, CSS can be simpler if you put in the initial work. I&#039;ll try template-only formatting for a few weeks, and if I think CSS is needed I&#039;ll come a hollerin&#039;&lt;br /&gt;
&lt;br /&gt;
some links for me to look at later: [http://en.wikipedia.org/wiki/Template_talk:Prettytable] [http://meta.wikimedia.org/wiki/Help:Tables#Style_templates]&lt;br /&gt;
[[MediaWiki:Common.css]]&lt;br /&gt;
--[[User:Reglib|Reglib]] 11:54, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Templates are an excellent choice. I think for the timg being though, it would just be easier to add CSS2 tags instead. Templates would keep things more organized, despite the fact though. &lt;br /&gt;
--[[User:HotshotGG|HotshotGG]] 20:40, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HotshotGG&#039;&#039;&#039;, please keep the outer border ala the tables in [[Recommended Ogg Vorbis]]. Outer borders prevent table runins making them currently rather confusing and all mixed-up IMO.&lt;br /&gt;
Also... next time you make extensive editing, why not edit the whole page at once instead of section by section (1) I got a headache looking at the history :P  (2) Jan still has not put spacing before section/subsection heads so the sections all run together :(&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 13:59, 5 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disregard my previous comments. The dotted lines look ugly. I changed to 2px solid line. But the color looks... um, unappetizing now. Edit all page, and replace every occurence of #ffdead with something better (using notepad or similar).&lt;br /&gt;
&lt;br /&gt;
A thought: Should we maintain same coloring for all page, or vary it like in the [[Listening Tests]] page?&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 15:14, 5 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It looks fine with the solid border. A user defined template would be better so that the style can be consist across the wiki pages. Yes do the same for the listening test page. The standard border is irrating to my eyes. &lt;br /&gt;
--[[User:HotshotGG|HotshotGG]] 19:06, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some bureaucracy before some real work... what nomenclature should we use for table formatting templates? It must be short, because they&#039;ll be used frequently, but still descriptive. Template:&amp;lt;prefix&amp;gt;&amp;lt;family&amp;gt;[-variant] so... stuff like Template:TFpretty, Template:TFpretty-head&lt;br /&gt;
--[[User:Reglib|Reglib]] 17:36, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
using simple lingo will work. page-head, page-body, etc. &lt;br /&gt;
--[[User:HotshotGG|HotshotGG]] 19:06, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mmm... recolorized the tables. I pull out the colors just out of thin air. I &#039;&#039;think&#039;&#039; Microsoft&#039;s color is blue. I&#039;m not sure about the others, though. As to why they are pastels, I tried pure colors (e.g. #0000ff) and believe me, it looks awful.&lt;br /&gt;
&lt;br /&gt;
If we want to maintain sameness, IMO the template name must contain something to indicate its relation, e.g. Microsoft&#039;s color, Apple&#039;s color, Linux&#039;s color, etc.&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 14:16, 12 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
I just realized that the tables are displayed differently in I.E 6.0 vs. Mozilla. This may be a problem? ;-/ [[User:HotshotGG|HotshotGG]] 23:38, 23 June 2005 (CDT)&lt;br /&gt;
&lt;br /&gt;
== merge the linux download page? ==&lt;br /&gt;
&lt;br /&gt;
Now that the Download Page is detailed into Windows and Mac OS/X parts (and also PocketPC part), do you think we ought to merge the Download Page for Linux here? --[[User:Pepoluan|pepoluan]] 16:29, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes I think so.&lt;br /&gt;
[[User:Jan|Jan]] 16:58, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes we should. &lt;br /&gt;
[[USer:HotshotGG|HotshotGG]] 18:58, 9 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mmmmmmkayyyy... I&#039;ll see what I can do over the next several days. --[[User:Pepoluan|pepoluan]] 14:16, 12 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems HotShotGG beat me to it... so can we retire/redirect the links to the Download Linux page? Don&#039;t forget to use the &#039;&#039;&#039;What links here&#039;&#039;&#039; link on the toolbox on the left (just under the search box) --[[User:Pepoluan|pepoluan]] 04:34, 19 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think most - if not all - information from the Download Linux page has been merged. I&#039;ve removed notice at top of this page, and put a decommission notice at the top of Download Linux page. I haven&#039;t replaced/deleted the link to Download Linux from anywhere else. --[[User:Pepoluan|pepoluan]] 08:53, 23 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nondestructive MP3 editors ==&lt;br /&gt;
win32:&lt;br /&gt;
* [http://mpesch3.de/ MP3DirectCut] - Freeware, supports cue sheets&lt;br /&gt;
* [http://musicutter.szm.sk/ musiCutter] - Freeware supports OGG Vorbis, VBR, cuesheets&lt;br /&gt;
* [http://www.mptrim.com/ MPTrim] - Freeware, made for trimming heads and tails&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*nix:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://www.puchalla-online.de/cutmp3.html cutmp3]&lt;br /&gt;
other/x-platform:&lt;br /&gt;
* [http://mp3splt.sourceforge.net/ MP3 Split] - Command Line, Vorbis, CUE, &lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=35654&amp;amp;hl=pcut pcutmp3]&lt;br /&gt;
* [http://www.mpgedit.org/mpgedit/ mpgedit]&lt;br /&gt;
* [http://www.librelogiciel.com/software/PyMP3Cut/action_Presentation PyMP3Cut (Python)]&lt;br /&gt;
&lt;br /&gt;
taken from http://www.hydrogenaudio.org/forums/index.php?showtopic=30049&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=12029</id>
		<title>Talk:Download page</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=12029"/>
		<updated>2006-07-06T19:38:34Z</updated>

		<summary type="html">&lt;p&gt;Reglib: proposed new section: mp3 editors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== table formatting confusion ==&lt;br /&gt;
I LOLed reading HotShot&#039;s comments. Here&#039;s a summary of things to watch when formatting table.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The key is the first character.&#039;&#039;&#039; The pipe character ( | ) produces standard text, the exclaim character ( ! ) produces boldface text. Unless the table&#039;s style has been modified to make all text bold.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The general alignment is set by the table&#039;s style,&#039;&#039;&#039; which is the very first line in the table definition.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The line with a pipe-dash ( |- ) marks start of a new row.&#039;&#039;&#039; You can put style here, which applies to the whole row.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;You can override style for a single cell.&#039;&#039;&#039; E.g., the table is styled to center the text. To left align a cell, slip the style after the first char ( | or ! ) and put another pipe char before the cell&#039;s entry.&lt;br /&gt;
&lt;br /&gt;
Hope this helps. Oh and for comment re: Linux downloads, see below...&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 04:34, 19 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pretty tables ==&lt;br /&gt;
Looking at the recent changes here, it would be nice to be able to get into the style.css for the wiki to make it easier to make pretty tables.&lt;br /&gt;
--[[User:Reglib|Reglib]] 04:57, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure but I think you can do that at [[MediaWiki:Monobook.css]].&lt;br /&gt;
[[User:Jan|Jan]] 05:20, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently all the CSS pages are protected. Templates are another option, but being really lazy, CSS can be simpler if you put in the initial work. I&#039;ll try template-only formatting for a few weeks, and if I think CSS is needed I&#039;ll come a hollerin&#039;&lt;br /&gt;
&lt;br /&gt;
some links for me to look at later: [http://en.wikipedia.org/wiki/Template_talk:Prettytable] [http://meta.wikimedia.org/wiki/Help:Tables#Style_templates]&lt;br /&gt;
[[MediaWiki:Common.css]]&lt;br /&gt;
--[[User:Reglib|Reglib]] 11:54, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Templates are an excellent choice. I think for the timg being though, it would just be easier to add CSS2 tags instead. Templates would keep things more organized, despite the fact though. &lt;br /&gt;
--[[User:HotshotGG|HotshotGG]] 20:40, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HotshotGG&#039;&#039;&#039;, please keep the outer border ala the tables in [[Recommended Ogg Vorbis]]. Outer borders prevent table runins making them currently rather confusing and all mixed-up IMO.&lt;br /&gt;
Also... next time you make extensive editing, why not edit the whole page at once instead of section by section (1) I got a headache looking at the history :P  (2) Jan still has not put spacing before section/subsection heads so the sections all run together :(&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 13:59, 5 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disregard my previous comments. The dotted lines look ugly. I changed to 2px solid line. But the color looks... um, unappetizing now. Edit all page, and replace every occurence of #ffdead with something better (using notepad or similar).&lt;br /&gt;
&lt;br /&gt;
A thought: Should we maintain same coloring for all page, or vary it like in the [[Listening Tests]] page?&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 15:14, 5 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It looks fine with the solid border. A user defined template would be better so that the style can be consist across the wiki pages. Yes do the same for the listening test page. The standard border is irrating to my eyes. &lt;br /&gt;
--[[User:HotshotGG|HotshotGG]] 19:06, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some bureaucracy before some real work... what nomenclature should we use for table formatting templates? It must be short, because they&#039;ll be used frequently, but still descriptive. Template:&amp;lt;prefix&amp;gt;&amp;lt;family&amp;gt;[-variant] so... stuff like Template:TFpretty, Template:TFpretty-head&lt;br /&gt;
--[[User:Reglib|Reglib]] 17:36, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
using simple lingo will work. page-head, page-body, etc. &lt;br /&gt;
--[[User:HotshotGG|HotshotGG]] 19:06, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mmm... recolorized the tables. I pull out the colors just out of thin air. I &#039;&#039;think&#039;&#039; Microsoft&#039;s color is blue. I&#039;m not sure about the others, though. As to why they are pastels, I tried pure colors (e.g. #0000ff) and believe me, it looks awful.&lt;br /&gt;
&lt;br /&gt;
If we want to maintain sameness, IMO the template name must contain something to indicate its relation, e.g. Microsoft&#039;s color, Apple&#039;s color, Linux&#039;s color, etc.&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 14:16, 12 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
I just realized that the tables are displayed differently in I.E 6.0 vs. Mozilla. This may be a problem? ;-/ [[User:HotshotGG|HotshotGG]] 23:38, 23 June 2005 (CDT)&lt;br /&gt;
&lt;br /&gt;
== merge the linux download page? ==&lt;br /&gt;
&lt;br /&gt;
Now that the Download Page is detailed into Windows and Mac OS/X parts (and also PocketPC part), do you think we ought to merge the Download Page for Linux here? --[[User:Pepoluan|pepoluan]] 16:29, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes I think so.&lt;br /&gt;
[[User:Jan|Jan]] 16:58, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes we should. &lt;br /&gt;
[[USer:HotshotGG|HotshotGG]] 18:58, 9 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mmmmmmkayyyy... I&#039;ll see what I can do over the next several days. --[[User:Pepoluan|pepoluan]] 14:16, 12 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems HotShotGG beat me to it... so can we retire/redirect the links to the Download Linux page? Don&#039;t forget to use the &#039;&#039;&#039;What links here&#039;&#039;&#039; link on the toolbox on the left (just under the search box) --[[User:Pepoluan|pepoluan]] 04:34, 19 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think most - if not all - information from the Download Linux page has been merged. I&#039;ve removed notice at top of this page, and put a decommission notice at the top of Download Linux page. I haven&#039;t replaced/deleted the link to Download Linux from anywhere else. --[[User:Pepoluan|pepoluan]] 08:53, 23 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nondestructive MP3 editors ==&lt;br /&gt;
win32:&lt;br /&gt;
* [http://mpesch3.de/ MP3DirectCut]&lt;br /&gt;
* [http://musicutter.szm.sk/ musiCutter]&lt;br /&gt;
* [http://www.mptrim.com/ MP3Trim]&lt;br /&gt;
* [http://mp3splt.sourceforge.net/ MP3 Split]&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*nix:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://www.puchalla-online.de/cutmp3.html cutmp3]&lt;br /&gt;
other/x-platform:&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=35654&amp;amp;hl=pcut pcutmp3]&lt;br /&gt;
* [http://www.mpgedit.org/mpgedit/ mpgedit]&lt;br /&gt;
* [http://www.librelogiciel.com/software/PyMP3Cut/action_Presentation PyMP3Cut (Python)]&lt;br /&gt;
&lt;br /&gt;
taken from http://www.hydrogenaudio.org/forums/index.php?showtopic=30049&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Download_page&amp;diff=12028</id>
		<title>Download page</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Download_page&amp;diff=12028"/>
		<updated>2006-07-06T19:31:05Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Encoders, Decoders, Etc. */ extra space was annoying me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All programs mentioned anywhere in the wiki can be downloaded here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Linux downloads have been migrated here. The older Download Linux page will not be maintained anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=CD Rippers=&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ccccff;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ccccff&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:90px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:300px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[CDex]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://cdexos.sourceforge.net/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | An open-source ripper for Windows that uses cdparanoia functionality&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[dBpowerAMP]]&lt;br /&gt;
| Free &lt;br /&gt;
| [http://www.dbpoweramp.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | A secure ripper for Windows that includes Accurate Stream functionality&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Deep Ripper&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://www.deepburner.com/ here]&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[EAC]]&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.exactaudiocopy.de/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | One of the most secure rippers for Windows, C2, Accurate Stream, etc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mac OS/X===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #bbffbb;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#bbffbb;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:90px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Max]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://sbooth.org/Max/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | A secure ripper for OS/X that uses additional cdparanoia functionality&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Linux=== &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ffcccc;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffcccc;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:90px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:320px;&amp;quot; | Description&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | abcde &lt;br /&gt;
| GPL &lt;br /&gt;
|[http://www.hispalinux.es/~data/abcde.php here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | A command-line based ripper with cdparanoia functionality&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[cdparanoia]]&lt;br /&gt;
| BSD, GPL&lt;br /&gt;
| [http://www.xiph.org/paranoia/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | One of the first secure standalone rippers for the Linux platform&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Rubyripper]] &lt;br /&gt;
| GPL &lt;br /&gt;
| [http://www.rubyforge.org/ here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | A secure ripper for the Linux that uses additional cdparanoia functionality&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Grip]] &lt;br /&gt;
| GPL &lt;br /&gt;
| [http://www.nostatic.org/grip here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | An open-source Gnome interface ripper that uses cdparanoia functionality &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CD Writers=&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ccccff;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ccccff&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:185px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:80px;&amp;quot; | Unicode&lt;br /&gt;
! style=&amp;quot;width:90px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:270px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | BurnAtOnce&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.burnatonce.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | CD writing application based upon CDRDAO &lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Burrrn]] (CDA only)&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.burrrn.net/ here]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | CDBurnerXP Pro&lt;br /&gt;
| &lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.cdburnerxp.se/ here]&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | DeepBurner Free&lt;br /&gt;
| N&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://www.deepburner.com/ here]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | DeepBurner Pro&lt;br /&gt;
| &lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.deepburner.com/ here]&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Express Burn&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://nch.com.au/burn/index.html here]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Express Burn Plus&lt;br /&gt;
| &lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://nch.com.au/burn/index.html here]&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Nero]]&lt;br /&gt;
| N&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.nero.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Popular windows commercial CD Writing application&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;left&amp;quot; | SilentNight Micro-CD Burner&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.silentnight2004.com/Download.html here]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mac OS/X===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #bbffbb;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#bbffbb;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:130px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:80px;&amp;quot; | Unicode&lt;br /&gt;
! style=&amp;quot;width:90px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:310px;&amp;quot; | Description&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[FireStarter FX]] &lt;br /&gt;
| N &lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.projectomega.org/subcat.php?lg=en&amp;amp;php=products_firestarter here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Free OS/X Cocoa CD writing application&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[X-CD-Roast]] &lt;br /&gt;
| N &lt;br /&gt;
| Free &lt;br /&gt;
| [http://www.xcdroast.org/xcdr098/xcdrosX.html here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | New OS/X port of this Linux CD writing application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ffcccc;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffcccc;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:130px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:80px;&amp;quot; | Unicode&lt;br /&gt;
! style=&amp;quot;width:90px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;width:260px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | CDRDAO &lt;br /&gt;
| N &lt;br /&gt;
| GPL &lt;br /&gt;
| [http://www.cdrdao.org/ here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Cdrdao records audio or data CD-Rs in disk-at-once (DAO) mode&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Gnome Baker &lt;br /&gt;
| N&lt;br /&gt;
| GPL &lt;br /&gt;
| [http://www.gnomefiles.org/app.php?soft_id=291 here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Popular open-source Gnome interface CD/DVD writing application&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[k3B]]&lt;br /&gt;
| N&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://www.k3b.org/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Popular open-source KDE CD writing application for Linux platform  &lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[X-CD-Roast]] &lt;br /&gt;
| Y &lt;br /&gt;
| GPL &lt;br /&gt;
| [http://www.xcdroast.org here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | New open-source Gnome interface CD/DVD writing application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Multimedia Players=&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ccccff;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ccccff&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:120px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;width:220px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Foobar2000]]&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.foobar2000.org/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Advanced tagging, plugin capabilities, and kernel streaming support&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[MediaMonkey]]&lt;br /&gt;
| Free, Shareware&lt;br /&gt;
| [http://www.mediamonkey.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Supports many Winamp plugins&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | MusikCube&lt;br /&gt;
| BSD&lt;br /&gt;
| [http://www.musikcube.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Supports dynamic playlists and advanced SQL capabilities &lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | VUplayer&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.vuplayer.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Supports many popular digital audio codecs and MOD tracker formats  &lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Winamp]]&lt;br /&gt;
| Free, Shareware&lt;br /&gt;
| [http://www.winamp.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Popular audio player for Windows&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[wxMusik]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://musik.berlios.de/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |A cross-platform open-source audio player&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mac OS/X===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #bbffbb;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#bbffbb;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:120px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:220px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Cog&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://cogosx.sourceforge.net/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | An open-source digital audio player for OS/X.&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[wxMusik]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://musik.berlios.de/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |A cross-platform open-source audio player&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ffcccc;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffcccc;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:120px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:220px;&amp;quot; | Description&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[wxMusik]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://musik.berlios.de/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |A cross-platform open-source audio player&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[XMMS]] &lt;br /&gt;
| GPL &lt;br /&gt;
| [http://www.xmms.org/ here] &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Popular open-source audio player similiar to Winamp &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===PocketPC===&lt;br /&gt;
&#039;&#039;These players may not play all your media files. Check their websites for the format support.&#039;&#039;&lt;br /&gt;
* GSPlayer: http://hp.vector.co.jp/authors/VA032810/&lt;br /&gt;
* MortPlayer: http://www.sto-helit.de/&lt;br /&gt;
* TCPMP: http://tcpmp.corecodec.org/about&lt;br /&gt;
&lt;br /&gt;
=Tagging Utilities=&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ccccff;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ccccff&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:270px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Abander TagControl&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.softartstudio.com/tagcontrol/ here]&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | AudioShell&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.softpointer.com/AudioShell.htm here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Integrates with Windows Explorer&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Magic MP3 Tagger&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.magic-tagger.com here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Optimized for automatic music identification&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[MediaMonkey]]&lt;br /&gt;
| Free, Shareware&lt;br /&gt;
| [http://www.mediamonkey.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Also a Media Player &amp;amp; Library&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | MP3 Book Helper&lt;br /&gt;
| Free&lt;br /&gt;
| [http://mp3bookhelper.sourceforge.net/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Tags [[ID3v1]], ID3v2.3, and Vorbis comments. Features: FreeDB, unicode, guessing and matching, and supporting PAR, SFV, SV, and NFO generation.&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Mp3tag&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.mp3tag.de/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Tags all files supporting [[ID3]], [[APEv2]], and Vorbis comments, not only MP3s&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Mp3/Tag Studio&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.magnusbrading.com/mp3ts/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Supports ID3v1 &amp;amp; v2 &#039;&#039;&#039;only&#039;&#039;&#039;. Powerful matching and fancy filters&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Tag.exe]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://www.synthetic-soul.co.uk/tag/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Command-line universal tagger for Windows&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Tag &amp;amp;amp; Rename&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.softpointer.com/tr.htm here]&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | TagScanner&lt;br /&gt;
| Free/Donate&lt;br /&gt;
| [http://xdev.narod.ru/tagscan_e.htm here]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | The GodFather&lt;br /&gt;
| Card/Donate&lt;br /&gt;
| [http://users.otenet.gr/~jtcliper/tgf/ here]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mac OS/X===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #bbffbb;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#bbffbb;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:270px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Tag&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://sbooth.org/Tag/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | An open-source tagging application for OS/X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; border:2px solid #ffcccc;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffcccc;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Website&lt;br /&gt;
! style=&amp;quot;width:270px;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | EasyTAG&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://easytag.sourceforge.net/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | GTK+ Tagging utility&lt;br /&gt;
|- style=&amp;quot;background-color: #eeeeee;&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Ex Falso&lt;br /&gt;
| Free??&lt;br /&gt;
| [http://www.sacredchao.net/quodlibet here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | GTK+ Tagging utility&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Encoders, Decoders, Etc.=&lt;br /&gt;
&lt;br /&gt;
All basic tools needed to make use of the audio formats supported here.&lt;br /&gt;
&lt;br /&gt;
==[[MP3]]==&lt;br /&gt;
&lt;br /&gt;
* [[LAME]] encoder/decoder: [http://www.rarewares.org/mp3.html download pre-compiled binaries here]. Also check the [[Lame Compiles|Latest recommended version]] page.&lt;br /&gt;
* [[MP3Gain]], a replaygain-like utility: [http://mp3gain.sourceforge.net/download.php download here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Ogg Vorbis]]==&lt;br /&gt;
&lt;br /&gt;
Currently, all recommended Ogg Vorbis utilities are available at the [http://www.rarewares.org/ogg.html Rarewares Ogg Vorbis page]. The following tools are important:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OggEnc2&#039;&#039;&#039;: A command-line Ogg Vorbis encoder that can be used with most CD rippers. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OggDec&#039;&#039;&#039;: Command-line decoder.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[OggDropXPd]]&#039;&#039;&#039;: An easy to use, drag&#039;n&#039;drop encoder/decoder with support for automatic tagging, renaming and  playlist creation on encoding.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Encoding DLLs&#039;&#039;: For encoding within CDex or WinLame.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VorbisGain&#039;&#039;&#039;: The [[Replaygain]] utility for Ogg Vorbis.&lt;br /&gt;
&lt;br /&gt;
In addition, the [[Lancer]] suite — a highly SSE-optimized suite of utilities and libraries — are available at [http://homepage3.nifty.com/blacksword/ this page] &#039;&#039;(in Japanese)&#039;&#039;. See [[Lancer#Platform-specific Builds|this section]] for information about the different builds.&lt;br /&gt;
&lt;br /&gt;
==Musepack ([[MPC]])==&lt;br /&gt;
&lt;br /&gt;
* MPC Encoder (mppenc): [http://www.saunalahti.fi/~cse/mpc/encoders/mppenc-windows-1.14.zip 1.14 Beta] / [http://www.saunalahti.fi/~cse/mpc/encoders/mppenc-windows-1.15r.zip 1.15r Alpha] (Both these versions are safe to use.)&lt;br /&gt;
&lt;br /&gt;
* MPC Decoder (mppdec): [http://www.saunalahti.fi/~cse/mppdec.zip Download latest version]&lt;br /&gt;
&lt;br /&gt;
* [[Replaygain]] utility: [http://www.saunalahti.fi/~cse/replaygain.zip Download latest version]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[FLAC]]==&lt;br /&gt;
&lt;br /&gt;
* CoolEdit / Adobe Audition Filter supporting FLAC: [http://www.vuplayer.com/other.php download here]&lt;br /&gt;
* Various FLAC-related utilities (incl. ReplayGain utility): [http://flac.sourceforge.net/download.html FLAC&#039;s SourceForge Download page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transcoders==&lt;br /&gt;
&#039;&#039;Note: Although these tools may convert from one encoding to another, please remember that [[transcoding]] to any [[lossy]] encoding &amp;lt;u&amp;gt;will&amp;lt;/u&amp;gt; result in a degraded quality.&#039;&#039;&lt;br /&gt;
* BeSweet: http://besweet.notrace.dk/&lt;br /&gt;
* dBpowerAMP Music Converter (dMC): http://www.dbpoweramp.com/dmc.htm&lt;br /&gt;
* MediaCoder: http://www.rarewares.org/mediacoder/&lt;br /&gt;
* WinLAME: http://winlame.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=Drivers=&lt;br /&gt;
&lt;br /&gt;
==ASPI==&lt;br /&gt;
* Ahead Nero ASPI Driver: [http://www.nero.com/nero6/eng/ASPI_Driver.html official website]&lt;br /&gt;
* Adaptec Windows ASPI Package: [http://www.adaptec.com/worldwide/support/suppdetail.jsp?sess=no&amp;amp;prodkey=ASPI-4.70 official website]&lt;br /&gt;
* ASPI4all [http://www.3a.net/main.php?id=20 &amp;quot;official&amp;quot; website]&lt;br /&gt;
* FrogAspi [http://www.frogaspi.org/ official website]&lt;br /&gt;
* VOB ASAPI Driver 1.3: [http://www.rarewares.org/files/ASAPI.exe download]&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
* ALSA Project [http://www.alsa-project.org/ official website]&lt;br /&gt;
* kX Project [http://kxproject.lugosoft.com/ official website]&lt;br /&gt;
* ZonaISIS [http://www.hispasonic.com/zonaisis/index.htm unofficial]&lt;br /&gt;
* I have a dream ... [http://members.aol.com/cridi/ unofficial]&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
&lt;br /&gt;
* [http://www.reactos.org/wiki/index.php/Untested_%28open_source%29_software_list Open source softwares @ ReactOS wiki]&lt;br /&gt;
* [http://www.rarewares.org/ RareWares]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=12024</id>
		<title>Other hardware</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=12024"/>
		<updated>2006-07-05T05:49:47Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Headphones */ more stubbage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== Bluetooth (A2DP) ==&lt;br /&gt;
Advanced Audio Distribution Profile (A2DP)&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=32634 forums]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/A2DP#Bluetooth_profiles wikipedia]&lt;br /&gt;
&lt;br /&gt;
Supports the codecs: Sub Band Codec (SBC)&lt;br /&gt;
&lt;br /&gt;
Optionally supports: MPEG-1,2 Audio, MPEG-2,4 AAC and ATRAC,&lt;br /&gt;
&lt;br /&gt;
With the bitrate limited by the bluetooth link&lt;br /&gt;
&lt;br /&gt;
=== Sub Band Codec ===&lt;br /&gt;
* Sampling Frequency - 16000, 32000, 44100, 48000 (some are optional, see references)&lt;br /&gt;
* Channel Mode - mono, dual channel, stereo, joint stereo&lt;br /&gt;
&lt;br /&gt;
The bitrate used for CD quality audio is 229 kbps and 328 kbps for middle and high quality, respectively.&lt;br /&gt;
&lt;br /&gt;
Reference: [https://www.bluetooth.org/foundry/adopters/document/A2DP_Spec_V1_0/en/ BLUETOOTH Advanced Audio Distribution Profile 1.0]&lt;br /&gt;
&lt;br /&gt;
== Headphones ==&lt;br /&gt;
Some Styles (smallest to largest)&lt;br /&gt;
* In the ear - outputs directly into the ear canal&lt;br /&gt;
* Earbuds - sits in the outer ear&lt;br /&gt;
* Supra-aural - sits on the ear&lt;br /&gt;
* circumaural - completely cover the ear&lt;br /&gt;
&lt;br /&gt;
Terminology used for comparing headphones&lt;br /&gt;
* Noise Cancelling&lt;br /&gt;
** active&lt;br /&gt;
** passive&lt;br /&gt;
&lt;br /&gt;
* Frequency response - The range of frequencies the headphones can reproduce&lt;br /&gt;
&lt;br /&gt;
* Impedance - Doesn&#039;t mean much by itself, but in general, impedence should be matched across a system. &lt;br /&gt;
&lt;br /&gt;
* SPL@1kHz, 1V rms - [http://en.wikipedia.org/wiki/Sound_pressure_level#SPL_in_audio_equipment Sound Pressure Level]. How efficient the unit converts electrical energy to sound energy.&lt;br /&gt;
&lt;br /&gt;
* Neodymium - The magnet of choice for high end headphones.&lt;br /&gt;
Popular Headphones&lt;br /&gt;
* Sub $30&lt;br /&gt;
* Sub $100&lt;br /&gt;
* $100 - $300&lt;br /&gt;
* $300+&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=12023</id>
		<title>Other hardware</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=12023"/>
		<updated>2006-07-04T17:27:00Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Headphones */ SPL definiton more accurate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== Bluetooth (A2DP) ==&lt;br /&gt;
Advanced Audio Distribution Profile (A2DP)&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=32634 forums]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/A2DP#Bluetooth_profiles wikipedia]&lt;br /&gt;
&lt;br /&gt;
Supports the codecs: Sub Band Codec (SBC)&lt;br /&gt;
&lt;br /&gt;
Optionally supports: MPEG-1,2 Audio, MPEG-2,4 AAC and ATRAC,&lt;br /&gt;
&lt;br /&gt;
With the bitrate limited by the bluetooth link&lt;br /&gt;
&lt;br /&gt;
=== Sub Band Codec ===&lt;br /&gt;
* Sampling Frequency - 16000, 32000, 44100, 48000 (some are optional, see references)&lt;br /&gt;
* Channel Mode - mono, dual channel, stereo, joint stereo&lt;br /&gt;
&lt;br /&gt;
The bitrate used for CD quality audio is 229 kbps and 328 kbps for middle and high quality, respectively.&lt;br /&gt;
&lt;br /&gt;
Reference: [https://www.bluetooth.org/foundry/adopters/document/A2DP_Spec_V1_0/en/ BLUETOOTH Advanced Audio Distribution Profile 1.0]&lt;br /&gt;
&lt;br /&gt;
== Headphones ==&lt;br /&gt;
Terminology used for comparing headphones&lt;br /&gt;
&lt;br /&gt;
* Frequency response - The range of frequencies the headphones can reproduce&lt;br /&gt;
&lt;br /&gt;
* Impedance - Doesn&#039;t mean much by itself, but in general, impedence should be matched across a system. &lt;br /&gt;
&lt;br /&gt;
* SPL@1kHz, 1V rms - [http://en.wikipedia.org/wiki/Sound_pressure_level#SPL_in_audio_equipment Sound Pressure Level]. How efficient the unit converts electrical energy to sound energy.&lt;br /&gt;
&lt;br /&gt;
* Neodymium - The magnet of choice for high end headphones.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=12022</id>
		<title>Other hardware</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=12022"/>
		<updated>2006-07-04T17:14:13Z</updated>

		<summary type="html">&lt;p&gt;Reglib: Headphones, A2DP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== Bluetooth (A2DP) ==&lt;br /&gt;
Advanced Audio Distribution Profile (A2DP)&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=32634 forums]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/A2DP#Bluetooth_profiles wikipedia]&lt;br /&gt;
&lt;br /&gt;
Supports the codecs: Sub Band Codec (SBC)&lt;br /&gt;
&lt;br /&gt;
Optionally supports: MPEG-1,2 Audio, MPEG-2,4 AAC and ATRAC,&lt;br /&gt;
&lt;br /&gt;
With the bitrate limited by the bluetooth link&lt;br /&gt;
&lt;br /&gt;
=== Sub Band Codec ===&lt;br /&gt;
* Sampling Frequency - 16000, 32000, 44100, 48000 (some are optional, see references)&lt;br /&gt;
* Channel Mode - mono, dual channel, stereo, joint stereo&lt;br /&gt;
&lt;br /&gt;
The bitrate used for CD quality audio is 229 kbps and 328 kbps for middle and high quality, respectively.&lt;br /&gt;
&lt;br /&gt;
Reference: [https://www.bluetooth.org/foundry/adopters/document/A2DP_Spec_V1_0/en/ BLUETOOTH Advanced Audio Distribution Profile 1.0]&lt;br /&gt;
&lt;br /&gt;
== Headphones ==&lt;br /&gt;
Terminology used for comparing headphones&lt;br /&gt;
&lt;br /&gt;
* Frequency response - The range of frequencies the headphones can reproduce&lt;br /&gt;
&lt;br /&gt;
* Impedance - Doesn&#039;t mean much by itself, but in general, impedence should be matched across a system. &lt;br /&gt;
&lt;br /&gt;
* SPL@1kHz, 1V rms - How &amp;quot;loud&amp;quot; the unit is at 1 volt input (rms not peak-to-peak).&lt;br /&gt;
&lt;br /&gt;
* Neodymium - The magnet of choice for high end headphones.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=12018</id>
		<title>Foobar2000:Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=12018"/>
		<updated>2006-07-01T15:23:20Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Columns UI */ foo_uie_tabs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Components for Foobar2000 v0.9.x=&lt;br /&gt;
This page contains most Foobar2000 v0.9.x components available at time of last update. Descriptions where available. More information on these plugins can be found by searching the [http://www.hydrogenaudio.org/forums/index.php?showforum=28 foobar2000 forums].&lt;br /&gt;
&lt;br /&gt;
Much of the information here came from [http://www.hydrogenaudio.org/forums/index.php?showtopic=42730&amp;amp;st=0 this thread] which may be more up to date, and also shows a list of components not yet updated from earlier versions of foobar2000.&lt;br /&gt;
&lt;br /&gt;
==Columns UI==&lt;br /&gt;
[http://music.morbo.org/components.php Columns UI] is a very popular alternate interface for foobar2000 based on a columns and panel layout. It has a separated wiki that is located [http://music.morbo.org/wiki/columns_ui:columns_ui here].&lt;br /&gt;
&lt;br /&gt;
Columns UI has its own plugin system and these plugins extend the user interface:&lt;br /&gt;
* [http://cherans.bol.ucla.edu/fooplugins.html Album Art Panel (foo_uie_albumart)] ([[Foobar2000:0.9 Album Art Panel (foo_uie_albumart)|&#039;&#039;more info&#039;&#039;]]) Panel to display album art.&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ Album Art Panel for matroska (foo_uie_albumart_mka)] Albumart mod to read matroska covers.&lt;br /&gt;
* [http://music.morbo.org/components.php Album List Panel (foo_uie_albumlist)] Displays the database in a treeview using customizable sorting methods (by genre, artist, directory, etc.)&lt;br /&gt;
* [http://ku.myftp.org/goods/ Explorer Panel (foo_uie_explorer)] Displays a treeview of selected disks/folders.&lt;br /&gt;
* [http://foobar.s53.xrea.com/up/ Lyrics Panel (foo_uie_lyrics_panel)] Display lyrics stored in file tags. &lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000 Music Browser (foo_browser)] Panels for Browsing Library, Similar to iTunes.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44703 Playlist Dropdown (foo_uie_playlists_dropdown)] Displays the playlist in a dropdown menu.&lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000#foo_playlist_tree Playlist Tree (foo_playlist_tree)] Tree based media library with many available customizations.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44865 ProjectM Visualisation Panel (foo_uie_vis_projectM)] Based on the ProjectM project, which is a reimplementation of Milkdrop under OpenGL.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44012 Quicksearch Panel (foo_uie_quicksearch)] Search toolbar that sends results to a playlist.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=46106&amp;amp;view=findpost&amp;amp;p=407833 Tabs(foo_uie_tabs)] Tabs allows you to break Pauli&#039;s Exclusion principle by placing multiple panels in the same position at the same time.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html Track Info Panel (foo_uie_trackinfo)] ([[Foobar2000:0.9 Track Info Panel (foo_uie_trackinfo)|&#039;&#039;more info&#039;&#039;]]) Uses TAGZ to display information about a selected track.&lt;br /&gt;
&lt;br /&gt;
==DSP==&lt;br /&gt;
* [http://www.andrewlabs.com/downloads/downloads.php ATSurround Processor (foo_dsp_atsurround)] ([[Foobar2000:0.9 ATSurround Processor (foo_dsp_atsurround)|&#039;&#039;more info&#039;&#039;]]) Reproduces surround sound information present in many stereo audio material and more.&lt;br /&gt;
* [http://bs2b.sourceforge.net/ BS2D (foo_dsp_bs2p)] ([[Foobar2000:0.9 BS2D (foo_dsp_bs2p)|&#039;&#039;more info&#039;&#039;]]) Improves headphone listening of regular hi-fi stereo records.&lt;br /&gt;
* [http://www.skipyrich.com/foobar/foo_channel_mixer.ptml Channel Mixer (foo_channel_mixer)] ([[Foobar2000:0.9 Channel Mixer (foo_channel_mixer)|&#039;&#039;more info&#039;&#039;]]) Up/down mix to/from 1-6 channels&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#continuator Continuator (foo_dsp_continuator)] ([[Foobar2000:0.9 Continuator (foo_dsp_continuator)|&#039;&#039;more info&#039;&#039;]]) Allows for advanced crossfading between tracks&lt;br /&gt;
* [http://www.foobar2000.org/components/index.html Convolve (foo_convolve)] ([[Foobar2000:0.9 Convolve (foo_convolve)|&#039;&#039;more info&#039;&#039;]]) Takes impulse response and does a fast convolution of the sound data with that impulse response.&lt;br /&gt;
* [http://www.naivesoftware.com/software.html Crossfeed (foo_dsp_crossfeed)] Filters the music to help reduce fatigue caused by listening to music with headphones&lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/dsp.php#132 Dolby Headphone Wrapper (foo_dsp_dolbyhp)] ([[Foobar2000:0.9 Dolby Headphone Wrapper (foo_dsp_dolbyhp)|&#039;&#039;more info&#039;&#039;]]) Dolby Headphone engine DLL.&lt;br /&gt;
* [http://www.stud.uni-karlsruhe.de/~uybc/foo_dsp_delta.zip LPCM &amp;lt;--&amp;gt; Delta-PCM Converter (foo_dsp_delta)] Noise sharpening filter&lt;br /&gt;
* [http://www.oss3d.com/index.html OSS/3D (foo_dsp_oss3ddsp)] Audio enhancement (SHAREWARE)&lt;br /&gt;
* [http://www.acc.umu.se/~zao/foobar2000/#foo_dsp_silence Post-track Silence (foo_dsp_silence)] Inserts a configurable amount of silence after each track to help external devices like MiniDisc players to sync track changes.&lt;br /&gt;
* [http://otachan.com/foo_dsp_ssrc.html SSRC (foo_dsp_ssrc)] ([[Foobar2000:0.9 SSRC (foo_dsp_ssrc)|&#039;&#039;more info&#039;&#039;]]) Sample rate converter.&lt;br /&gt;
* [http://www.skipyrich.com/foobar/foo_dsp_tube.ptml Tube Sound (foo_dsp_tube)] ([[Foobar2000:0.9 Tube Sound (foo_dsp_tube)|&#039;&#039;more info&#039;&#039;]]) Emulate tube sound.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=22057&amp;amp;view=findpost&amp;amp;p=374256 VLevel (foo_dsp_vlevel)] ([[Foobar2000:0.9 VLevel (foo_dsp_vlevel)|&#039;&#039;more info&#039;&#039;]]) Dynamic compressor which amplifies the quiet parts of music.&lt;br /&gt;
* [http://xover.sourceforge.net/ XOver (foo_dsp_xover)] ([[Foobar2000:0.9 XOver (foo_dsp_xover)|&#039;&#039;more info&#039;&#039;]]) Implements this digital crossover to achieve active multi-amplification.&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
===Audio===&lt;br /&gt;
* [http://kode54.foobar2000.org/ AC3 Decoder (foo_ac3)] Decodes Dolby Digital lossy audio compression technologies format ([[AC3]]).&lt;br /&gt;
* [http://dl.matroska.org/downloads/foobar2000/ AC3 Packet Decoder (foo_packet_decoder_ac3)] Needed for [[AC3]] in [[Matroska]].&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html ALAC Decoder (foo_input_alac)] Apple Lossless ([[ALAC]]) decoder (has known stability issues: random crashes during decoding).&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44963 DTS Decoder (foo_dts)] Decodes Digital Theater Systems ([[DTS]]) audio format.&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ Matroska Plugin (unofficial) (foo_input_matroska)] Decodes [[Matroska]] audio container format.&lt;br /&gt;
* [http://kode54.foobar2000.org/ MIDI Synthesizer Host (foo_midi)] &lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Monkey&#039;s Audio Decoder (foo_input_monkey)] Decodes Monkey&#039;s Audio ([[APE]]) audio format (this component has known unresolved stability issues with 0.9)&lt;br /&gt;
* [http://www.losslessaudio.org/ OptimFROG Lossless Audio Decoder (foo_input_ofr)] Decodes both the Lossless ([[OptimFROG|OFR]]) and DualStream (OFS) audio format.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Shorten Decoder (foo_input_shorten)] Decodes Shorten ([[SHN]]) audio format.&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ TTA Audio Decoder (unofficial) (foo_input_tta)] Decodes True Audio ([[TTA]]) audio format.&lt;br /&gt;
&lt;br /&gt;
===Game Sound===&lt;br /&gt;
* [http://kode54.foobar2000.org/ ADPCM Decoder (foo_adpcm)] Plays GameCube ADPCM audio data and some. (DSP, ADP, GCM, HPS, STM, AST, etc.)&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43766 Another Slight Atari Player (foo_asap)] [http://asap.sourceforge.net/ ASAP] is a player/converter of Atari 8-bit music for modern computers. It provides high-quality, identical to the popular Atari800 emulator, emulation of the POKEY sound chip and the 6502 processor.&lt;br /&gt;
* [http://kode54.foobar2000.org/ DUMB Module Decoder (foo_dumb)] Plays your favorite module files, and then some. (MOD, S3M, XM, IT, 669, PTM, PSM, MTM, UMX)&lt;br /&gt;
* [http://shexec32.serveftp.net/products.aspx?id=foo_game Game Audio Decoder (foo_game)] Plays Westwood&#039;s audio (AUD), Sierra&#039;s sounds (SFX/AUD), Core design&#039;s cd audio (cdaudio.WAD), Funcom&#039;s music (ISS), Rome Total War&#039;s IDX (.IDX/DAT), Timegate&#039;s format (RWD), EA&#039;s Pathfinder audio (MUS) and Ben Gerard&#039;s music (SC68).&lt;br /&gt;
* [http://kode54.foobar2000.org/ Game Emu Player (foo_gep)] Plays several emulation formats. (GBS, NSF, SPC, GYM, HES, VGM)&lt;br /&gt;
* [http://kode54.foobar2000.org/ Lunar 2 PCM Decoder (foo_lunar2)] Plays audio files found on the original Lunar: Eternal Blue CD (RP*.PCM).&lt;br /&gt;
* [http://shexec32.serveftp.net/products.aspx?id=foo_m1 M1 Decoder (foo_m1)] ([[Foobar2000:0.9 M1 (foo_m1)|More info]]) Plays arcade/pinball game sound.&lt;br /&gt;
* [http://kode54.foobar2000.org/ PSF Decoder (foo_psf)] Plays PlayStation Sound Format (PSF) files.&lt;br /&gt;
* [http://kode54.foobar2000.org/ SID Player 2 (foo_sid)] Sound chip of Commodore&#039;s CBM-II, Commodore 64 and Commodore 128 home computers.&lt;br /&gt;
&lt;br /&gt;
==Output==&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html ASIO Output (foo_out_asio)] Adds ASIO output support.&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Kernel Streaming Output (foo_out_ks)] Allows bit-exact playback bypassing Windows kernel mixer.&lt;br /&gt;
&lt;br /&gt;
==Visualisation==&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#projectM ProjectM Visualisation (foo_vis_projectM)] Based on the ProjectM project, which is a reimplementation of Milkdrop under OpenGL.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
===Library tools===&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Audio CD Writer (foo_burninate)] CD burning support (requires Nero to be installed on your system.)&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Autoplaylist Manager (foo_autoplaylist)] Presents a Media Library query in a dynamically-generated playlist (under development).&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44656 Bin Pack (foo_binpack)] Creates playlists from a list with a maximum length.&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ Cuesheet Creator (foo_cuesheet_creator)] Cuesheet creator.&lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000#foo_cwb_hooks Cwbowron&#039;s Title formating  (foo_cwb_hooks)] ([[Foobar2000:0.9 CwBowron&#039;s Title formating (foo_cwb_hooks)|&#039;&#039;more info&#039;&#039;]]) Special playlist title formating.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Database Search (foo_dbsearch)] ([[Foobar2000:0.9 Database Search (foo_dbsearch)|&#039;&#039;more info&#039;&#039;]]) Database search.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Freedb Tagger (foo_freedb2)] Freedb tagger.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43012 History (foo_history)] Very basic song history.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Live Show Tagger (foo_tradersfriend)] ([[Foobar2000:0.9 Live Show Tagger (foo_tradersfriend)|&#039;&#039;more info&#039;&#039;]]) Live show tagger.&lt;br /&gt;
* [http://eludevisibility.org/music/ MeowDB (foo_meowdb)] ([[Foobar2000:0.9 MeowDB (foo_meowdb)|&#039;&#039;more info&#039;&#039;]]) Takes the Media Library and outputs the results to a form and uploads it to your server using the cURL library.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Metadata Cache Statistics (foo_metadbstats)] Provides statistics about memory allocation size of playlist and media library tags.&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Play Count (official) (foo_playcount)] ([[Foobar2000:0.9 Play Count (official) (foo_playcount)|&#039;&#039;more info&#039;&#039;]]) Collects statistics about tracks from your Media Library being played.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#playcount Play Count (foo_playcount)] ([[Foobar2000:0.9 Play Count (foo_playcount)|&#039;&#039;more info&#039;&#039;]]) Keeps track of the amount of times, the last time, and the first time a track has been played.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Playback Queue Viewer (foo_pqview)] Playback queue viewer.&lt;br /&gt;
* [http://www.skipyrich.com/foobar/foo_playlist_bind.ptml Playlist Bind (foo_playlist_bind)] Synchronize playlist with contents of specific directory.&lt;br /&gt;
* [http://otachan.com/foo_playlistclear.html Playlist Clear (foo_playlistclear)] All playlists are cleared at startup.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Playlist Manager (foo_playlist_manager)] Playlist manager.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43522 Playlist Name Enhenced (foo_playlist_name_enhanced)] ([[Foobar2000:0.9 Playlist Name Enhenced (foo_playlist_name_enhanced)|&#039;&#039;more info&#039;&#039;]]) Appends automatically playlist info (&amp;quot;items / length&amp;quot;) to all playlist names.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Playlist Tools (foo_utils)] ([[Foobar2000:0.9 Playlist Tools (foo_utils)|&#039;&#039;more info&#039;&#039;]]) Provides various general commands.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Randomized Playlist Entry (foo_random)] Randomized playlist entry.&lt;br /&gt;
* [http://gro.clinux.org/frs/?group_id=737&amp;amp;release_id=1095 Special File Info Box (foo_infobox)] ([[Foobar2000:0.9 Special File Info Box (foo_infobox)|&#039;&#039;more info&#039;&#039;]]) A replacement of the built-in file info box.&lt;br /&gt;
&lt;br /&gt;
===Lyrics===&lt;br /&gt;
* [http://gasazip.com/bbs/download.php?bo_table=down&amp;amp;wr_id=62&amp;amp;no=2 Gasazip Lyrics (foo_gasazip)] Search for lyrics and displays it in external window.&lt;br /&gt;
* [http://lyrics.mirkforce.net/ LyricsDB (foo_lyricsdb)] ([[Foobar2000:0.9 LyricsDB (foo_lyricsdb)|&#039;&#039;more info&#039;&#039;]]) Search lyrics basing on song&#039;s artist title and sometimes album.&lt;br /&gt;
* [http://www.crintsoft.com/minilyrics.htm Mini Lyrics (foo_ui_minilyrics)] ([[Foobar2000:0.9 Mini Lyrics (foo_ui_minilyrics)|&#039;&#039;more info&#039;&#039;]]) Lyrics viewer for synchronizing and displaying lyrics of the currently playing song.&lt;br /&gt;
&lt;br /&gt;
===Notifier===&lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/general.php#40 AMIP Wrapper (foo_amipwrapper)] Complete now-playing plug-in for mIRC, PIRCH, Klient, Bersirc, other IRC and Mail clients, supporting full player control from mIRC, playlist search, clipboard integration, HTTP, dynamic image signatures, etc.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#msn MSN Now Playing (alt) (foo_msnalt)] ([[Foobar2000:0.9 MSN Now Playing (alt) (foo_msnalt)|&#039;&#039;more info&#039;&#039;]]) Show the current song as &amp;quot;Now Playing&amp;quot; in MSN and MS Live messenger.&lt;br /&gt;
* [http://kode54.foobar2000.org/ On-Screen Display (foo_osd)] ([[Foobar2000:0.9 On-Screen Display (foo_osd)|&#039;&#039;more info&#039;&#039;]]) On screen display of track information and volume bar.&lt;br /&gt;
* [http://kode54.foobar2000.org/ On-Screen Display GDI+ (foo_osd_gdiplus)] ([[Foobar2000:0.9 On-Screen Display (foo_osd)|&#039;&#039;more info&#039;&#039;]]) Same as foo_osd but uses GDI+ for osd drawing.&lt;br /&gt;
* [http://www.maroonspoon.com/foo_prettypop/ Pretty Popup (foo_prettypop)] ([[Foobar2000:0.9 Pretty Popup (foo_prettypop)|&#039;&#039;more info&#039;&#039;]]) Display a moderately sized popup of song information when a new song plays.&lt;br /&gt;
&lt;br /&gt;
===Online database===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44320&amp;amp;st=0 Audioscrobbler (foo_audioscrobbler)] Audioscrobbler will send the name of every song you play on your computer to Last.fm. This effortlessly populates your profile to play radio you like and make personalized recommendations.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Foosic Music Database (foo_sic)] Sends track information to the [http://www.foosic.org/ foosic online database]. You can currently view your top artist, album and track statistics with foosic. Now support FooID fingerprints.&lt;br /&gt;
&lt;br /&gt;
===Online radio===&lt;br /&gt;
* [http://www.maroonspoon.com/foo_xm/ XM Radio Online Player (foo_xm)] Allow you to listen to XM Radio channels over the Internet by using XM Radio Online.&lt;br /&gt;
&lt;br /&gt;
===Remote control===&lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/general.php#138 Advanced Controls (foo_advancedcontrols)] ([[Foobar2000:0.9 Advanced Controls (foo_advancedcontrols)|&#039;&#039;more info&#039;&#039;]]) Control all the playback functions from icons in the Taskbar Notification Area (play, pause, next, previous, open)&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ COM Automation Server (foo_comserver)] Allows controlling foobar2000 through COM Automation&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=38114 Control Server (foo_controlserver)] Acts as a server to control Foobar2000. Connect with a telnet client and control it using ASCII commands.&lt;br /&gt;
* [http://otachan.com/foo_ddecontrol.html DDE Control (foo_ddecontrol)] Control foobar remotelly with DDE interprocess communication (interface in japanese only).&lt;br /&gt;
* [http://foobar.daychanged.com/ HTTP Writer (foo_write_http)] It&#039;s TCP/IP server that listens on a specified port for incoming requests such as play, stop, etc.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=19252&amp;amp;view=findpost&amp;amp;p=391028 WinLIRC Client (foo_lirc)] ([[Foobar2000:0.9 WinLIRC Client (foo_lirc)|&#039;&#039;more info&#039;&#039;]]) Control Foobar from a remote control.&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Binary Comparator (foo_bitcompare)] Performs binary comparison between two or more tracks and reports differences.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/#channelusage Channel Usage Visualisation (foo_vis_channelusage)] Channel Usage Visualisation.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Common Services (foo_common)] Common services.&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Decoding Speed Test (foo_benchmark)] ([[Foobar2000:0.9 Decoding Speed Test (foo_benchmark)|&#039;&#039;more info&#039;&#039;]]) Measures decoding speed of audio files.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=37204 Fullscreen (foo_fullscreen)] Enable fullscreen mode.&lt;br /&gt;
* [http://kode54.foobar2000.org/ Pause On Lock (foo_lock)] Pauses/unpauses foobar2000 on workstation lock/unlock.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=42736&amp;amp;hl=foo_sendtodevice Send To Device (foo_sendtodevice)] Add &amp;quot;Send to Device&amp;quot; feature.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Shell Link Resolver (foo_lnk)] Shell link resolver.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#notaskbar Taskbar Remover (foo_notaskbar)] Hides Foobar2000 from the taskbar, even when the window is normally visible.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=42941 Winamp API Emulator (foo_winamp_spam)] Designed to create a fake Winamp 1.x window which will act as a wrapper between applications written to use the Winamp API and foobar2000.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
* [http://www.foobar2000.org/components/index.html Official components site] &lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/ Official third-party components site]&lt;br /&gt;
* [http://music.morbo.org/components.php musicmusic&#039;s components] including Columns UI&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html Several popular components ported to 0.9]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=21105 Most Sought-After Plugins] (forum thread, foobar v0.8.3 only)&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=28647 Columns UI thread]: first post contains links to many Columns UI panel extensions&lt;br /&gt;
&lt;br /&gt;
[[Category: foobar2000]]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11938</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11938"/>
		<updated>2006-06-21T01:04:23Z</updated>

		<summary type="html">&lt;p&gt;Reglib: synced to the main page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
! %codec%&lt;br /&gt;
| Defined as &#039;&#039;$codec()&#039;&#039;.&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %playback_time%&lt;br /&gt;
%_time_elapsed%&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;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_ex%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds.milliseconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_seconds%&lt;br /&gt;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Other information ===&lt;br /&gt;
This is an expansion of names for $info(name). Check the &amp;quot;Other info&amp;quot; box of &#039;&#039;&#039;Properties...&#039;&#039;&#039; for the exact same information. Don&#039;t expect all of these to work for every track&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
! &#039;&#039;name&#039;&#039; !! What &#039;&#039;$info(name)&#039;&#039; or &#039;&#039;%__name%&#039;&#039; returns !! CODEC&lt;br /&gt;
|-&lt;br /&gt;
| bitrate || Returns the bitrate of the track. Eg: 271 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| bitrate_nominal || 192 || Vorbis&lt;br /&gt;
|-&lt;br /&gt;
| bitspersample || Eg: 16 || FLAC&lt;br /&gt;
|-&lt;br /&gt;
| codec || Returns the codec. Eg: Monkey&#039;s Audio, MP3, FLAC || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| codec_profile || Possible Values: Normal,Fast || APE&lt;br /&gt;
|-&lt;br /&gt;
| enc_delay || Has to do with accurate length. Eg: 576 || MP3&lt;br /&gt;
|-&lt;br /&gt;
| enc_padding || Has to do with accurate length. Eg: 1536 || MP3&lt;br /&gt;
|-&lt;br /&gt;
| encoding || Possible values: lossy or lossless || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| extrainfo&lt;br /&gt;
| Possible values: VBR&lt;br /&gt;
 // CBR,VBR detection&lt;br /&gt;
 $if2($info(extrainfo),CBR)&lt;br /&gt;
| MP3&lt;br /&gt;
|-&lt;br /&gt;
| channels || Possible values: 1, 2 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| cue_embedded || Returns &#039;&#039;&#039;yes&#039;&#039;&#039; or &#039;&#039;&#039;no&#039;&#039;&#039; || APE, FLAC&lt;br /&gt;
|-&lt;br /&gt;
| flags || Eg: 0 or 22 || APE&lt;br /&gt;
|-&lt;br /&gt;
| samplerate || 44100 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| MD5 || Contains an MD5 hash || APE&lt;br /&gt;
|-&lt;br /&gt;
| mp3_accurate_length || Returns yes or no || MP3&lt;br /&gt;
|-&lt;br /&gt;
| mp3_stereo_mode || stereo, joint stereo || MP3&lt;br /&gt;
|-&lt;br /&gt;
| tagtype || Returns a &amp;lt;nowiki&amp;gt;&amp;quot;|&amp;quot; delimited list of tags on the track. Eg: id3v2|id3v1|apev2&amp;lt;/nowiki&amp;gt; || APE, MP3&lt;br /&gt;
|-&lt;br /&gt;
| tool || the encoder used to create the file. Eg: reference libFLAC 1.1.0 20030126 || FLAC, Vorbis&lt;br /&gt;
|-&lt;br /&gt;
| version || similar to &#039;&#039;&#039;tool&#039;&#039;&#039;, the version of Monkey&#039;s Audio that encoded || APE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:ID3_Tag_Mapping&amp;diff=11854</id>
		<title>Foobar2000:ID3 Tag Mapping</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:ID3_Tag_Mapping&amp;diff=11854"/>
		<updated>2006-06-13T15:30:24Z</updated>

		<summary type="html">&lt;p&gt;Reglib: fuuuuuusssssssed sentence fragments - ha!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists all ID3v2.4 tag frames natively supported by foobar2000 as of version 0.9.0. The &#039;Field Name&#039; column indicates the name to be used in the foobar2000 &#039;Properties&#039; or &#039;Masstagger&#039; window. The &#039;ID3v2.4 Frame&#039; column indicates in which ID3v2.4 frame the value  will be stored.&lt;br /&gt;
&lt;br /&gt;
Note that foobar2000 0.9 does not &#039;&#039;write&#039;&#039; ID3v2.3 tags; the ID3v2.3 Frame column indicates how foobar2000 &#039;&#039;reads&#039;&#039; this version of the standard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Native ID3 Frames&lt;br /&gt;
|-&lt;br /&gt;
! Field Name&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! ID3v2.3 Frame !! ID3v2.4 Frame !! Description !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ALBUM || TALB || TALB || Album/Movie/Show title ||&lt;br /&gt;
|-&lt;br /&gt;
| ARTIST || TPE1 || TPE1 || Lead performer(s)/Soloist(s) ||&lt;br /&gt;
|-&lt;br /&gt;
| ARTIST WEBPAGE URL || WOAR || WOAR || Official artist/performer webpage ||&lt;br /&gt;
|-&lt;br /&gt;
| BAND || TPE2 || TPE2 || Band/orchestra/accompaniment ||&lt;br /&gt;
|-&lt;br /&gt;
| BPM || TBPM || TBPM || BPM (beats per minute) ||&lt;br /&gt;
|-&lt;br /&gt;
| COMMENT || COMM || COMM || Comments ||&lt;br /&gt;
|-&lt;br /&gt;
| COMMERCIAL INFORMATION URL || WCOM || WCOM || Commercial information ||&lt;br /&gt;
|-&lt;br /&gt;
| COMPOSER || TCOM || TCOM || Composer ||&lt;br /&gt;
|-&lt;br /&gt;
| CONDUCTOR || TPE3 || TPE3 || Conductor/performer refinement ||&lt;br /&gt;
|-&lt;br /&gt;
| CONTENT GROUP || TIT1 || TIT1 || Content group description ||&lt;br /&gt;
|-&lt;br /&gt;
| COPYRIGHT || TCOP || TCOP || Copyright message ||&lt;br /&gt;
|-&lt;br /&gt;
| DATE || || TDRC || Recording time || The TDRC frame is officially to be used for the &#039;&#039;recording time&#039;&#039;, TDRL is for the &#039;&#039;release time&#039;&#039; but TDRC is generally used by most programs. &lt;br /&gt;
|-&lt;br /&gt;
| DATE || TYER || || Year ||&lt;br /&gt;
|-&lt;br /&gt;
| DISCNUMBER || TPOS || TPOS || Part of a set ||&lt;br /&gt;
|-&lt;br /&gt;
| ENCODED BY || TENC || TENC || Encoded by ||&lt;br /&gt;
|-&lt;br /&gt;
| ENCODING SETTINGS || TSSE || TSSE || Software/Hardware and settings used for encoding ||&lt;br /&gt;
|-&lt;br /&gt;
| FILE WEBPAGE URL || WOAF || WOAF || Official audio file webpage ||&lt;br /&gt;
|-&lt;br /&gt;
| GENRE || TCON || TCON || Content type ||&lt;br /&gt;
|-&lt;br /&gt;
| INTERNET RADIO WEBPAGE URL || WORS || WORS || Official Internet radio station homepage ||&lt;br /&gt;
|-&lt;br /&gt;
| ISRC || TSRC || TSRC || ISRC (international standard recording code) ||&lt;br /&gt;
|-&lt;br /&gt;
| ORIGINAL ALBUM || TOAL || TOAL || Original album/movie/show title ||&lt;br /&gt;
|-&lt;br /&gt;
| ORIGINAL ARTIST || TOPE || TOPE || Original artist(s)/performer(s) ||&lt;br /&gt;
|-&lt;br /&gt;
| ORIGINAL RELEASE DATE || || TDOR || Original release time ||&lt;br /&gt;
|-&lt;br /&gt;
| ORIGINAL RELEASE DATE || TORY || || Original release year ||&lt;br /&gt;
|-&lt;br /&gt;
| OWNER || TOWN || TOWN || File owner/licensee ||&lt;br /&gt;
|-&lt;br /&gt;
| PAYMEMT URL || WPAY || WPAY || Payment ||&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISHER || TPUB || TPUB || Publisher ||&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISHER URL || WPUB || WPUB || Publishers official webpage ||&lt;br /&gt;
|-&lt;br /&gt;
| RADIO STATION || TRSN || TRSN || Internet radio station name ||&lt;br /&gt;
|-&lt;br /&gt;
| REMIXED BY || TPE4 || TPE4 || Interpreted, remixed, or otherwise modified by ||&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE WEBPAGE URL || WOAS || WOAS || Official audio source webpage ||&lt;br /&gt;
|-&lt;br /&gt;
| SUBTITLE || TIT3 || TIT3 || Subtitle/Description refinement ||&lt;br /&gt;
|-&lt;br /&gt;
| TITLE || TIT2 || TIT2 || Title/songname/content description ||&lt;br /&gt;
|-&lt;br /&gt;
| TRACKNUMBER || TRCK || TRCK || Track number/Position in set ||&lt;br /&gt;
|-&lt;br /&gt;
| TOTALDISCS || TPOS || TPOS || Part of a set || Stored in the same frame with DISCNUMBER, separated by &#039;/&#039;: e.g. &#039;1/2&#039;. Stored in TXXX if DISCNUMBER does not exist.&lt;br /&gt;
|-&lt;br /&gt;
| TOTALTRACKS || TRCK || TRCK || Total tracks || Stored in the same frame with TRACKNUMBER, separated by &#039;/&#039;: e.g. &#039;4/9&#039;. Stored in TXXX if TRACKNUMBER doesn&#039;t exist.&lt;br /&gt;
|-&lt;br /&gt;
| UNSYNCED LYRICS || USLT || USLT || Unsynchronised lyric/text transcription ||&lt;br /&gt;
|-&lt;br /&gt;
| WRITER || TEXT || TEXT || Lyricist/Text writer ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:Notes:&lt;br /&gt;
:# All non-native supported field names will be stored in the TXXX (User defined text information) frame except for field names starting with &amp;quot;WWW&amp;quot; which will be stored in WXXX (User defined URL link frame) frames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* [http://www.id3.org/id3v2.4.0-frames.txt ID3v2.4.0 Native Frames]&lt;br /&gt;
* [http://www.id3.org/id3v2.3.0.txt ID3v2.3.0 Informal standard]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=11800</id>
		<title>Talk:Download page</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=11800"/>
		<updated>2006-06-06T22:36:10Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* pretty tables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== pretty tables ==&lt;br /&gt;
Looking at the recent changes here, it would be nice to be able to get into the style.css for the wiki to make it easier to make pretty tables.&lt;br /&gt;
--[[User:Reglib|Reglib]] 04:57, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure but I think you can do that at [[MediaWiki:Monobook.css]].&lt;br /&gt;
&lt;br /&gt;
[[User:Jan|Jan]] 05:20, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently all the CSS pages are protected. Templates are another option, but being really lazy, CSS can be simpler if you put in the initial work. I&#039;ll try template-only formatting for a few weeks, and if I think CSS is needed I&#039;ll come a hollerin&#039;&lt;br /&gt;
&lt;br /&gt;
some links for me to look at later: [http://en.wikipedia.org/wiki/Template_talk:Prettytable] [http://meta.wikimedia.org/wiki/Help:Tables#Style_templates]&lt;br /&gt;
[[MediaWiki:Common.css]]&lt;br /&gt;
&lt;br /&gt;
--[[User:Reglib|Reglib]] 11:54, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Templates are an excellent choice. I think for the timg being though, it would just be easier to add CSS2 tags instead. Templates would keep things more organized, despite the fact though. &lt;br /&gt;
&lt;br /&gt;
--[[User:HotshotGG|HotshotGG]] 20:40, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HotshotGG&#039;&#039;&#039;, please keep the outer border ala the tables in [[Recommended Ogg Vorbis]]. Outer borders prevent table runins making them currently rather confusing and all mixed-up IMO.&lt;br /&gt;
Also... next time you make extensive editing, why not edit the whole page at once instead of section by section (1) I got a headache looking at the history :P  (2) Jan still has not put spacing before section/subsection heads so the sections all run together :(&lt;br /&gt;
&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 13:59, 5 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disregard my previous comments. The dotted lines look ugly. I changed to 2px solid line. But the color looks... um, unappetizing now. Edit all page, and replace every occurence of #ffdead with something better (using notepad or similar).&lt;br /&gt;
&lt;br /&gt;
A thought: Should we maintain same coloring for all page, or vary it like in the [[Listening Tests]] page?&lt;br /&gt;
&lt;br /&gt;
--[[User:Pepoluan|pepoluan]] 15:14, 5 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
Some bureaucracy before some real work... what nomenclature should we use for table formatting templates? It must be short, because they&#039;ll be used frequently, but still descriptive. Template:&amp;lt;prefix&amp;gt;&amp;lt;family&amp;gt;[-variant] so... stuff like Template:TFpretty, Template:TFpretty-head&lt;br /&gt;
&lt;br /&gt;
--[[User:Reglib|Reglib]] 17:36, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
== merge the linux download page? ==&lt;br /&gt;
&lt;br /&gt;
Now that the Download Page is detailed into Windows and Mac OS/X parts (and also PocketPC part), do you think we ought to merge the Download Page for Linux here? --[[User:Pepoluan|pepoluan]] 16:29, 6 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes I think so.&lt;br /&gt;
[[User:Jan|Jan]] 16:58, 6 June 2006 (CDT)&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11780</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11780"/>
		<updated>2006-06-05T09:12:10Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Foobar2000 Wishlist */ foo_uie_quicksearch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
That&#039;s based on the Navigator fcs for Columns UI. some changes I&#039;ve made are:&lt;br /&gt;
* updating the general layout&lt;br /&gt;
* uses official playback component&lt;br /&gt;
* condensed play count/time column&lt;br /&gt;
* dimmed zero-padding&lt;br /&gt;
* entries with missing metadata are hilighted&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Foobar2000 Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* Less obtrusive warning window&lt;br /&gt;
* infinite loop detection/termination&lt;br /&gt;
* ability to count the number of selected items&lt;br /&gt;
** 2006-05-15 20h57 norz: you can see that in the properties box, or you could write a lua script (with foo_lua) that would output the number in the console, when invoked (eg: via a keyboard shortcut), but I guess, you&#039;d like to see it in the status bar next to the total playing time... don&#039;t know how to do that, sorry.&lt;br /&gt;
** yeah... in the status bar, right next to selected total time is what i&#039;m thinking - [[User:Reglib|Reglib]] 04:41, 16 May 2006 (CDT)&lt;br /&gt;
* 0.9beta style &amp;quot;playback follows cursor&amp;quot; for when nothing is selected. Here&#039;s the situation, I have an autoplaylist that contains only unrated songs and playback mode to random. If &#039;&#039;playback follows cursor&#039;&#039; is enabled, after i rate a song, foobar *thinks* the Nth track is still selected, and plays it next.&lt;br /&gt;
* WinAMP style media library search [update] foo_uie_quicksearch is good stuff!&lt;br /&gt;
* one-click genre assigner (it&#039;s possible now, i&#039;m just too busy to do it). should maintain a list of recent and popular genres, and display in dynamically generated cloud.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=11760</id>
		<title>Talk:Download page</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=11760"/>
		<updated>2006-06-01T16:54:44Z</updated>

		<summary type="html">&lt;p&gt;Reglib: css vs templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== pretty tables ==&lt;br /&gt;
Looking at the recent changes here, it would be nice to be able to get into the style.css for the wiki to make it easier to make pretty tables.&lt;br /&gt;
--[[User:Reglib|Reglib]] 04:57, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure but I think you can do that at [[MediaWiki:Monobook.css]].&lt;br /&gt;
&lt;br /&gt;
[[User:Jan|Jan]] 05:20, 1 June 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
Currently all the CSS pages are protected. Templates are another option, but being really lazy, CSS can be simpler if you put in the initial work. I&#039;ll try template-only formatting for a few weeks, and if I think CSS is needed I&#039;ll come a hollerin&#039;&lt;br /&gt;
&lt;br /&gt;
some links for me to look at later: [http://en.wikipedia.org/wiki/Template_talk:Prettytable] [http://meta.wikimedia.org/wiki/Help:Tables#Style_templates]&lt;br /&gt;
[[MediaWiki:Common.css]]&lt;br /&gt;
&lt;br /&gt;
--[[User:Reglib|Reglib]] 11:54, 1 June 2006 (CDT)&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11756</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11756"/>
		<updated>2006-06-01T10:01:47Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Wishlist */ further dreaming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
That&#039;s based on the Navigator fcs for Columns UI. some changes I&#039;ve made are:&lt;br /&gt;
* updating the general layout&lt;br /&gt;
* uses official playback component&lt;br /&gt;
* condensed play count/time column&lt;br /&gt;
* dimmed zero-padding&lt;br /&gt;
* entries with missing metadata are hilighted&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Foobar2000 Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* Less obtrusive warning window&lt;br /&gt;
* infinite loop detection/termination&lt;br /&gt;
* ability to count the number of selected items&lt;br /&gt;
** 2006-05-15 20h57 norz: you can see that in the properties box, or you could write a lua script (with foo_lua) that would output the number in the console, when invoked (eg: via a keyboard shortcut), but I guess, you&#039;d like to see it in the status bar next to the total playing time... don&#039;t know how to do that, sorry.&lt;br /&gt;
** yeah... in the status bar, right next to selected total time is what i&#039;m thinking - [[User:Reglib|Reglib]] 04:41, 16 May 2006 (CDT)&lt;br /&gt;
* 0.9beta style &amp;quot;playback follows cursor&amp;quot; for when nothing is selected. Here&#039;s the situation, I have an autoplaylist that contains only unrated songs and playback mode to random. If &#039;&#039;playback follows cursor&#039;&#039; is enabled, after i rate a song, foobar *thinks* the Nth track is still selected, and plays it next.&lt;br /&gt;
* WinAMP style media library search [update] there&#039;s a new panel component that&#039;s close&lt;br /&gt;
* one-click genre assigner (it&#039;s possible now, i&#039;m just too busy to do it). should maintain a list of recent and popular genres, and display in dynamically generated cloud.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=11755</id>
		<title>Talk:Download page</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Talk:Download_page&amp;diff=11755"/>
		<updated>2006-06-01T09:57:18Z</updated>

		<summary type="html">&lt;p&gt;Reglib: observation on the recent edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== pretty tables ==&lt;br /&gt;
Looking at the recent changes here, it would be nice to be able to get into the style.css for the wiki to make it easier to make pretty tables.&lt;br /&gt;
--[[User:Reglib|Reglib]] 04:57, 1 June 2006 (CDT)&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Choosing_the_best_codec&amp;diff=11675</id>
		<title>Choosing the best codec</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Choosing_the_best_codec&amp;diff=11675"/>
		<updated>2006-05-29T07:38:40Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Why no simple answer? */ &amp;quot;to be&amp;quot; usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A common question is &amp;quot;which format is best for me?&amp;quot;, or &amp;quot;which should I use, this or that?&amp;quot;.  While these are important decisions we have all had to make at some point, there is usually no simple answer that can be given to new users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Why no simple answer?==&lt;br /&gt;
&lt;br /&gt;
There are several factors that you must first consider, my needs aren&#039;t the same as yours, maybe we want to do different things with our music, or we have a different amount of disk space to use.&lt;br /&gt;
&lt;br /&gt;
Common considerations are:&lt;br /&gt;
* Do you want the option of using a portable player now?&lt;br /&gt;
* Would no playback support other than on your PC be a problem in the future?&lt;br /&gt;
* Do you need to use a popular format?&lt;br /&gt;
* How much space do you want to use for you music?&lt;br /&gt;
* How much music do you want to store?&lt;br /&gt;
* Are you simply interested in quality?&lt;br /&gt;
* &#039;&#039;How good is your hearing&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
The last question is &#039;&#039;&#039;the&#039;&#039;&#039; most important. Why? I have poor hearing, so something that sounds good to me could well be annoying to you. Only you have your ears, so only you know what sounds good to you.&lt;br /&gt;
&lt;br /&gt;
We can however make general recommendations based on test results from the entire community - for example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [[Lossy]] formats:&lt;br /&gt;
* [[MP3]] has the most widespread acceptance among the general population and in hardware players&lt;br /&gt;
* [[MPC]] was considered in the past as the best format for high bitrates (&amp;gt; 175kb/s)&lt;br /&gt;
* [[Ogg Vorbis]] and [[AAC]] HE are thought to perform better than others at low bitrates (&amp;lt; 128kb/s)&lt;br /&gt;
* There are other lossy formats at the [[lossy|lossy page]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; [[Lossless]] formats:&lt;br /&gt;
Lossless compression is the &#039;&#039;only&#039;&#039; way to retain all the original quality and lose no information.&lt;br /&gt;
* [[FLAC]] is considered the most widely supported format&lt;br /&gt;
* [[LA]] and [[OptimFrog]] is considered to be the tightest compressors&lt;br /&gt;
* [[WavPack]] and OptimFrog support hybrid modes, i.e. combination of lossy (for smaller files, albeit not as small as lossy formats) and lossless.&lt;br /&gt;
* For a list of lossless formats and their pro&#039;s and con&#039;s see the [[lossless|lossless page]].&lt;br /&gt;
&lt;br /&gt;
==How can I choose for myself?==&lt;br /&gt;
&lt;br /&gt;
* Listen and see, use [[ABX]]. Be aware that your tolerance can change if you train your ability to hear [[artifact]]s.&lt;br /&gt;
* Read the pages for the different formats and see their pro&#039;s and con&#039;s.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Talk:Other_hardware&amp;diff=11625</id>
		<title>Talk:Other hardware</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Talk:Other_hardware&amp;diff=11625"/>
		<updated>2006-05-26T22:55:23Z</updated>

		<summary type="html">&lt;p&gt;Reglib: description of page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been sitting around for a long time unused. I figure it&#039;s a good place to keep stubs for future articles on the HA Knowledgebase.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=11624</id>
		<title>Other hardware</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Other_hardware&amp;diff=11624"/>
		<updated>2006-05-26T22:54:25Z</updated>

		<summary type="html">&lt;p&gt;Reglib: bluetooth a2dp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== Bluetooth (A2DP) ==&lt;br /&gt;
Advanced Audio Distribution Profile (A2DP)&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=32634 forums]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/A2DP#Bluetooth_profiles wikipedia]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11623</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11623"/>
		<updated>2006-05-26T21:26:55Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Wishlist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
That&#039;s based on the Navigator fcs for Columns UI. some changes I&#039;ve made are:&lt;br /&gt;
* updating the general layout&lt;br /&gt;
* uses official playback component&lt;br /&gt;
* condensed play count/time column&lt;br /&gt;
* dimmed zero-padding&lt;br /&gt;
* entries with missing metadata are hilighted&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* Less obtrusive warning window&lt;br /&gt;
* infinite loop detection/termination&lt;br /&gt;
* ability to count the number of selected items&lt;br /&gt;
** 2006-05-15 20h57 norz: you can see that in the properties box, or you could write a lua script (with foo_lua) that would output the number in the console, when invoked (eg: via a keyboard shortcut), but I guess, you&#039;d like to see it in the status bar next to the total playing time... don&#039;t know how to do that, sorry.&lt;br /&gt;
** yeah... in the status bar, right next to selected total time is what i&#039;m thinking - [[User:Reglib|Reglib]] 04:41, 16 May 2006 (CDT)&lt;br /&gt;
* 0.9beta style &amp;quot;playback follows cursor&amp;quot; for when nothing is selected. Here&#039;s the situation, I have an autoplaylist that contains only unrated songs and playback mode to random. If &#039;&#039;playback follows cursor&#039;&#039; is enabled, after i rate a song, foobar *thinks* the Nth track is still selected, and plays it next.&lt;br /&gt;
* WinAMP style media library search&lt;br /&gt;
* one-click genre assigner (it&#039;s possible now, i&#039;m just too busy to do it)&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11621</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11621"/>
		<updated>2006-05-26T16:19:49Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Wishlist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
That&#039;s based on the Navigator fcs for Columns UI. some changes I&#039;ve made are:&lt;br /&gt;
* updating the general layout&lt;br /&gt;
* uses official playback component&lt;br /&gt;
* condensed play count/time column&lt;br /&gt;
* dimmed zero-padding&lt;br /&gt;
* entries with missing metadata are hilighted&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* Less obtrusive warning window&lt;br /&gt;
* infinite loop detection/termination&lt;br /&gt;
* ability to count the number of selected items&lt;br /&gt;
** 2006-05-15 20h57 norz: you can see that in the properties box, or you could write a lua script (with foo_lua) that would output the number in the console, when invoked (eg: via a keyboard shortcut), but I guess, you&#039;d like to see it in the status bar next to the total playing time... don&#039;t know how to do that, sorry.&lt;br /&gt;
** yeah... in the status bar, right next to selected total time is what i&#039;m thinking - [[User:Reglib|Reglib]] 04:41, 16 May 2006 (CDT)&lt;br /&gt;
* 0.9beta style &amp;quot;playback follows cursor&amp;quot; for when nothing is selected. Here&#039;s the situation, I have an autoplaylist that contains only unrated songs and playback mode to random. If &#039;&#039;playback follows cursor&#039;&#039; is enabled, after i rate a song, foobar *thinks* the Nth track is still selected, and plays it next.&lt;br /&gt;
* WinAMP style media library search&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Download_page&amp;diff=11620</id>
		<title>Download page</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Download_page&amp;diff=11620"/>
		<updated>2006-05-26T16:13:57Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Tagging Utilities */ added MP3 Book Helper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All programs mentioned anywhere in the wiki can be downloaded here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Linux downloads are [[Download page Linux|listed here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=CD Rippers=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffdead&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:120px;&amp;quot; | Download Site&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[CDex]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://cdexos.sourceforge.net/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[dBpowerAMP]]&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://www.dbpoweramp.com/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | DeepRipper&lt;br /&gt;
| GPL&lt;br /&gt;
| [http://www.deepburner.com/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[EAC]]&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.exactaudiocopy.de/ here]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=CD Writers=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffdead&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:80px;&amp;quot; | Unicode&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | License&lt;br /&gt;
! style=&amp;quot;width:120px;&amp;quot; | Download Site&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | BurnAtOnce&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.burnatonce.com/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Burrrn (CDA only)&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.burrrn.net/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | CDBurnerXP Pro&lt;br /&gt;
| ?&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.cdburnerxp.se/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | DeepBurner Free&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.deepburner.com/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | DeepBurner Pro&lt;br /&gt;
| ?&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.deepburner.com/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Express Burn&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://nch.com.au/burn/index.html here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Express Burn Plus&lt;br /&gt;
| ?&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://nch.com.au/burn/index.html here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | FireStarter FX&lt;br /&gt;
| ?&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.projectomega.org/subcat.php?lg=en&amp;amp;php=products_firestarter here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Nero&lt;br /&gt;
| N&lt;br /&gt;
| Shareware&lt;br /&gt;
| [http://www.nero.com/ here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | SilentNight Micro-CD Burner&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.silentnight2004.com/Download.html here]&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Small CD Writer&lt;br /&gt;
| N&lt;br /&gt;
| Free&lt;br /&gt;
| [http://tinyurl.com/6xm97 here]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Multimedia Players=&lt;br /&gt;
&lt;br /&gt;
===Windows Players===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffdead&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:180px;&amp;quot; | Price&lt;br /&gt;
! style=&amp;quot;width:120px;&amp;quot; | Download Site&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Foobar2000]]&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.foobar2000.org/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Very customizable &amp;amp; powerful&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[MediaMonkey]]&lt;br /&gt;
| Free, Gold Version 19.95 USD&lt;br /&gt;
| [http://www.mediamonkey.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Supports Winamp plugins&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | MusikCube&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.musikcube.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | VUplayer&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.vuplayer.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Site also provides useful plugins for various apps&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Winamp]]&lt;br /&gt;
| Free, Pro Version 19.95 USD&lt;br /&gt;
| [http://www.winamp.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | wxMusik&lt;br /&gt;
| Free&lt;br /&gt;
| [http://musik.berlios.de/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PocketPC Players===&lt;br /&gt;
&#039;&#039;These players may not play all your media files. Check their websites for the format support.&#039;&#039;&lt;br /&gt;
* GSPlayer: http://hp.vector.co.jp/authors/VA032810/&lt;br /&gt;
* MortPlayer: http://www.sto-helit.de/&lt;br /&gt;
* TCPMP: http://tcpmp.corecodec.org/about&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Encoders, Decoders, Etc.=&lt;br /&gt;
&lt;br /&gt;
All basic tools needed to make use of the audio formats supported here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[MP3]]==&lt;br /&gt;
&lt;br /&gt;
* [[LAME]] encoder/decoder: [http://www.rarewares.org/mp3.html download pre-compiled binaries here]. Also check the [[Lame Compiles|Latest recommended version]] page.&lt;br /&gt;
* [[MP3Gain]], a replaygain-like utility: [http://mp3gain.sourceforge.net/download.php download here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Ogg Vorbis]]==&lt;br /&gt;
&lt;br /&gt;
Currently, all recommended Ogg Vorbis utilities are available at the [http://www.rarewares.org/ogg.html Rarewares Ogg Vorbis page]. The following tools are important:&lt;br /&gt;
&lt;br /&gt;
* OggEnc2&lt;br /&gt;
: A command-line Ogg Vorbis encoder that can be used with most CD rippers. &lt;br /&gt;
&lt;br /&gt;
* OggDec&lt;br /&gt;
: Command-line decoder.&lt;br /&gt;
&lt;br /&gt;
* [[OggDropXPd]]&lt;br /&gt;
: A (very cute-looking) drag&#039;n&#039;drop encoder/decoder with support for automatic tagging, renaming and  playlist creation on encoding.&lt;br /&gt;
&lt;br /&gt;
* Encoding DLLs&lt;br /&gt;
: DLLs that can be used for encoding within CDex or WinLame.&lt;br /&gt;
&lt;br /&gt;
* VorbisGain&lt;br /&gt;
: The [[Replaygain]] utility for Ogg Vorbis.&lt;br /&gt;
&lt;br /&gt;
In addition, the [[Lancer]] suite is a highly SSE-optimized utilities and libraries are available at [http://homepage3.nifty.com/blacksword/ this page] &#039;&#039;(in Japanese)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Musepack ([[MPC]])==&lt;br /&gt;
&lt;br /&gt;
* MPC Encoder (mppenc): [http://www.saunalahti.fi/~cse/mpc/encoders/mppenc-windows-1.14.zip 1.14 Beta] / [http://www.saunalahti.fi/~cse/mpc/encoders/mppenc-windows-1.15r.zip 1.15r Alpha] (Both these versions are safe to use.)&lt;br /&gt;
&lt;br /&gt;
* MPC Decoder (mppdec): [http://www.saunalahti.fi/~cse/mppdec.zip Download latest version]&lt;br /&gt;
&lt;br /&gt;
* [[Replaygain]] utility: [http://www.saunalahti.fi/~cse/replaygain.zip Download latest version]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[FLAC]]==&lt;br /&gt;
&lt;br /&gt;
* CoolEdit / Adobe Audition Filter supporting FLAC: [http://www.vuplayer.com/other.php download here]&lt;br /&gt;
* Various FLAC-related utilities (incl. ReplayGain utility): [http://flac.sourceforge.net/download.html FLAC&#039;s SourceForge Download page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transcoders==&lt;br /&gt;
&#039;&#039;Note: Although these tools may convert from one encoding to another, please remember that [[transcoding]] to any [[lossy]] encoding &amp;lt;u&amp;gt;will&amp;lt;/u&amp;gt; result in a degraded quality.&#039;&#039;&lt;br /&gt;
* BeSweet: http://besweet.notrace.dk/&lt;br /&gt;
* dBpowerAMP Music Converter (dMC): http://www.dbpoweramp.com/dmc.htm&lt;br /&gt;
* MediaCoder: http://www.rarewares.org/mediacoder/&lt;br /&gt;
* WinLAME: http://winlame.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Drivers =&lt;br /&gt;
&lt;br /&gt;
== ASPI ==&lt;br /&gt;
* Ahead Nero ASPI Driver: [http://www.nero.com/nero6/eng/ASPI_Driver.html official website]&lt;br /&gt;
* Adaptec Windows ASPI Package: [http://www.adaptec.com/worldwide/support/suppdetail.jsp?sess=no&amp;amp;prodkey=ASPI-4.70 official website]&lt;br /&gt;
* ASPI4all [http://www.3a.net/main.php?id=20 &amp;quot;official&amp;quot; website]&lt;br /&gt;
* FrogAspi [http://www.frogaspi.org/ official website]&lt;br /&gt;
* VOB ASAPI Driver 1.3: [http://www.rarewares.org/files/ASAPI.exe download]&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
* kX Project [http://kxproject.lugosoft.com/ official website]&lt;br /&gt;
* ZonaISIS [http://www.hispasonic.com/zonaisis/index.htm unofficial]&lt;br /&gt;
* I have a dream ... [http://members.aol.com/cridi/ unofficial]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tagging Utilities=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ffdead&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:150px;&amp;quot; | Name&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Price&lt;br /&gt;
! style=&amp;quot;width:110px;&amp;quot; | Download Site&lt;br /&gt;
! style=&amp;quot;width:270px;&amp;quot; | Remark&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Abander TagControl&lt;br /&gt;
| 23 USD, 30D Trial&lt;br /&gt;
| [http://www.softartstudio.com/tagcontrol/ here]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | AudioShell&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.softpointer.com/AudioShell.htm here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Integrates with Windows Explorer&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Magic MP3 Tagger&lt;br /&gt;
| 12.50 EUR, unlimited Trial&lt;br /&gt;
| [http://www.magic-tagger.com here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Optimized for automatic music identification&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[MediaMonkey]]&lt;br /&gt;
| Free, Gold Version 19.95 USD&lt;br /&gt;
| [http://www.mediamonkey.com/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Also a Media Player &amp;amp; Library&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | MP3 Book Helper&lt;br /&gt;
| Free&lt;br /&gt;
| [http://mp3bookhelper.sourceforge.net/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Tags [[ID3v1]], ID3v2.3, and Vorbis comments. Features: FreeDB, unicode, guessing and matching, and supporting PAR, SFV, SV, and NFO generation.&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Mp3tag&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.mp3tag.de/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Tags all files supporting [[ID3]], [[APEv2]], and Vorbis comments, not only MP3s&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Mp3/Tag Studio&lt;br /&gt;
| 19 USD, Unlimited Trial w/ Banner or Limited Trial w/o&lt;br /&gt;
| [http://www.magnusbrading.com/mp3ts/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Supports ID3v1 &amp;amp; v2 &#039;&#039;&#039;only&#039;&#039;&#039;. Powerful matching and fancy filters&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Tag&lt;br /&gt;
| Free&lt;br /&gt;
| [http://sbooth.org/Tag/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | For Mac OS X&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | [[Tag.exe]]&lt;br /&gt;
| Free&lt;br /&gt;
| [http://www.synthetic-soul.co.uk/tag/ here]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Command-line universal tagger for Windows&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Tag &amp;amp;amp; Rename&lt;br /&gt;
| 29.95 USD, 30D Trial&lt;br /&gt;
| [http://www.softpointer.com/tr.htm here]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | TagScanner&lt;br /&gt;
| Free/Donate&lt;br /&gt;
| [http://xdev.narod.ru/tagscan_e.htm here]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | The GodFather&lt;br /&gt;
| Card/Donate&lt;br /&gt;
| [http://users.otenet.gr/~jtcliper/tgf/ here]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
&lt;br /&gt;
* [http://www.reactos.org/wiki/index.php/Untested_%28open_source%29_software_list Open source softwares @ ReactOS wiki]&lt;br /&gt;
* [http://www.rarewares.org/ RareWares]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Album_Art_Panel_(foo_uie_albumart)&amp;diff=11555</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=11555"/>
		<updated>2006-05-21T09:11:48Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Link */ forum link to gfngfgf&amp;#039;s version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Albumartpannel.PNG|thumb]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&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;
==Features==&lt;br /&gt;
*Configurable sources list allows cycling of multiple images for a single track&lt;br /&gt;
*Allows TAGZ 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;
*Sliding and 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;
&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 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;
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;
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=387294 (Current version)] [http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=39924&amp;amp;view=findpost&amp;amp;p=394387 (Even newer 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>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11547</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11547"/>
		<updated>2006-05-20T20:28:09Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Other information */ minor additions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
! %codec%&lt;br /&gt;
| Defined as &#039;&#039;$codec()&#039;&#039;.&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %playback_time%&lt;br /&gt;
%_time_elapsed%&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;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_ex%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds.milliseconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_seconds%&lt;br /&gt;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Other information ===&lt;br /&gt;
This is an expansion of names for $info(name). Check the &amp;quot;Other info&amp;quot; box of &#039;&#039;&#039;Properties...&#039;&#039;&#039; for the exact same information. Don&#039;t expect all of these to work for every track&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
! &#039;&#039;name&#039;&#039; !! What &#039;&#039;$info(name)&#039;&#039; or &#039;&#039;%__name%&#039;&#039; returns !! CODEC&lt;br /&gt;
|-&lt;br /&gt;
| bitrate || Returns the bitrate of the track. Eg: 271 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| bitrate_nominal || 192 || Vorbis&lt;br /&gt;
|-&lt;br /&gt;
| bitspersample || Eg: 16 || FLAC&lt;br /&gt;
|-&lt;br /&gt;
| codec || Returns the codec. Eg: Monkey&#039;s Audio, MP3, FLAC || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| codec_profile || Possible Values: Normal,Fast || APE&lt;br /&gt;
|-&lt;br /&gt;
| enc_delay || Has to do with accurate length. Eg: 576 || MP3&lt;br /&gt;
|-&lt;br /&gt;
| enc_padding || Has to do with accurate length. Eg: 1536 || MP3&lt;br /&gt;
|-&lt;br /&gt;
| encoding || Possible values: lossy or lossless || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| extrainfo&lt;br /&gt;
| Possible values: VBR&lt;br /&gt;
 // CBR,VBR detection&lt;br /&gt;
 $if2($info(extrainfo),CBR)&lt;br /&gt;
| MP3&lt;br /&gt;
|-&lt;br /&gt;
| channels || Possible values: 1, 2 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| cue_embedded || Returns &#039;&#039;&#039;yes&#039;&#039;&#039; or &#039;&#039;&#039;no&#039;&#039;&#039; || APE, FLAC&lt;br /&gt;
|-&lt;br /&gt;
| flags || Eg: 0 or 22 || APE&lt;br /&gt;
|-&lt;br /&gt;
| samplerate || 44100 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| MD5 || Contains an MD5 hash || APE&lt;br /&gt;
|-&lt;br /&gt;
| mp3_accurate_length || Returns yes or no || MP3&lt;br /&gt;
|-&lt;br /&gt;
| mp3_stereo_mode || stereo, joint stereo || MP3&lt;br /&gt;
|-&lt;br /&gt;
| tagtype || Returns a &amp;lt;nowiki&amp;gt;&amp;quot;|&amp;quot; delimited list of tags on the track. Eg: id3v2|id3v1|apev2&amp;lt;/nowiki&amp;gt; || APE, MP3&lt;br /&gt;
|-&lt;br /&gt;
| tool || the encoder used to create the file. Eg: reference libFLAC 1.1.0 20030126 || FLAC, Vorbis&lt;br /&gt;
|-&lt;br /&gt;
| version || similar to &#039;&#039;&#039;tool&#039;&#039;&#039;, the version of Monkey&#039;s Audio that encoded || APE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11546</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11546"/>
		<updated>2006-05-20T08:11:44Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Other information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
! %codec%&lt;br /&gt;
| Defined as &#039;&#039;$codec()&#039;&#039;.&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %playback_time%&lt;br /&gt;
%_time_elapsed%&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;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_ex%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds.milliseconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_seconds%&lt;br /&gt;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Other information ===&lt;br /&gt;
This is an expansion of names for $info(name). Check the &amp;quot;Other info&amp;quot; box of &#039;&#039;&#039;Properties...&#039;&#039;&#039; for the exact same information. Don&#039;t expect all of these to work for every track&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
! &#039;&#039;name&#039;&#039; !! What &#039;&#039;$info(name)&#039;&#039; returns !! CODEC&lt;br /&gt;
|-&lt;br /&gt;
| bitrate || Returns the bitrate of the track. Eg: 271 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| bitrate_nominal || 192 || Vorbis&lt;br /&gt;
|-&lt;br /&gt;
| bitspersample || Eg: 16 || FLAC&lt;br /&gt;
|-&lt;br /&gt;
| codec || Returns the codec. Eg: Monkey&#039;s Audio, MP3, FLAC || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| codec_profile || Possible Values: Normal,Fast || APE&lt;br /&gt;
|-&lt;br /&gt;
| enc_delay || Has to do with accurate length. Eg: 576 || MP3&lt;br /&gt;
|-&lt;br /&gt;
| enc_padding || Has to do with accurate length. Eg: 1536 || MP3&lt;br /&gt;
|-&lt;br /&gt;
| encoding || Possible values: lossy or lossless || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| extrainfo || Possible values: VBR || MP3&lt;br /&gt;
|-&lt;br /&gt;
| channels || Possible values: 1, 2 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| cue_embedded || Returns &#039;&#039;&#039;yes&#039;&#039;&#039; or &#039;&#039;&#039;no&#039;&#039;&#039; || APE, FLAC&lt;br /&gt;
|-&lt;br /&gt;
| flags || Eg: 0 or 22 || APE&lt;br /&gt;
|-&lt;br /&gt;
| samplerate || 44100 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| MD5 || Contains an MD5 hash || APE&lt;br /&gt;
|-&lt;br /&gt;
| mp3_accurate_length || Returns yes or no || MP3&lt;br /&gt;
|-&lt;br /&gt;
| mp3_stereo_mode || stereo, joint stereo || MP3&lt;br /&gt;
|-&lt;br /&gt;
| tagtype || Returns a &amp;lt;nowiki&amp;gt;&amp;quot;|&amp;quot; delimited list of tags on the track. Eg: id3v2|id3v1|apev2&amp;lt;/nowiki&amp;gt; || APE, MP3&lt;br /&gt;
|-&lt;br /&gt;
| tool || the encoder used to create the file. Eg: reference libFLAC 1.1.0 20030126 || FLAC, Vorbis&lt;br /&gt;
|-&lt;br /&gt;
| version || similar to &#039;&#039;&#039;tool&#039;&#039;&#039;, the version of Monkey&#039;s Audio that encoded || APE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11545</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11545"/>
		<updated>2006-05-20T08:04:36Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Other information */ added more stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
! %codec%&lt;br /&gt;
| Defined as &#039;&#039;$codec()&#039;&#039;.&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %playback_time%&lt;br /&gt;
%_time_elapsed%&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;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_ex%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds.milliseconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_seconds%&lt;br /&gt;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Other information ===&lt;br /&gt;
This is an expansion of names for $info(name). Check the &amp;quot;Other info&amp;quot; box of &#039;&#039;&#039;Properties...&#039;&#039;&#039; for the exact same information. Don&#039;t expect all of these to work for every track&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
! &#039;&#039;name&#039;&#039;&lt;br /&gt;
! What &#039;&#039;$info(name)&#039;&#039; returns&lt;br /&gt;
! CODEC&lt;br /&gt;
|-&lt;br /&gt;
! bitrate&lt;br /&gt;
| Returns the bitrate of the track. Eg: 271&lt;br /&gt;
| &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! bitrate_nominal&lt;br /&gt;
| 192&lt;br /&gt;
| Vorbis&lt;br /&gt;
|-&lt;br /&gt;
! bitspersample&lt;br /&gt;
| Eg: 16&lt;br /&gt;
| FLAC&lt;br /&gt;
|-&lt;br /&gt;
! codec&lt;br /&gt;
| Returns the codec. Eg: Monkey&#039;s Audio, MP3, FLAC&lt;br /&gt;
| &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| codec_profile || Possible Values: Normal,Fast || APE&lt;br /&gt;
|-&lt;br /&gt;
! enc_delay&lt;br /&gt;
| Has to do with accurate length. Eg: 576&lt;br /&gt;
| MP3&lt;br /&gt;
|-&lt;br /&gt;
! enc_padding&lt;br /&gt;
| Has to do with accurate length. Eg: 1536&lt;br /&gt;
| MP3&lt;br /&gt;
|-&lt;br /&gt;
! encoding&lt;br /&gt;
| Possible values: lossy or lossless&lt;br /&gt;
| &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! channels&lt;br /&gt;
| Possible values: 1, 2, ...&lt;br /&gt;
| &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! cue_embedded&lt;br /&gt;
| Returns &#039;&#039;&#039;yes&#039;&#039;&#039; or &#039;&#039;&#039;no&#039;&#039;&#039;&lt;br /&gt;
| APE, FLAC&lt;br /&gt;
|-&lt;br /&gt;
| flags || Eg: 0 or 22 || APE&lt;br /&gt;
|-&lt;br /&gt;
| samplerate || 44100 || &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| MD5 || Contains an MD5 hash || APE&lt;br /&gt;
|-&lt;br /&gt;
| mp3_accurate_length || Returns yes or no || MP3&lt;br /&gt;
|-&lt;br /&gt;
| mp3_stereo_mode || stereo, joint stereo || MP3&lt;br /&gt;
|-&lt;br /&gt;
! tagtype&lt;br /&gt;
| Returns a &amp;lt;nowiki&amp;gt;&amp;quot;|&amp;quot; delimited list of tags on the track. Eg: id3v2|id3v1|apev2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| APE, MP3&lt;br /&gt;
|-&lt;br /&gt;
| tool || the encoder used to create the file. Eg: reference libFLAC 1.1.0 20030126 || FLAC, Vorbis&lt;br /&gt;
|-&lt;br /&gt;
| version || similar to &#039;&#039;&#039;tool&#039;&#039;&#039;, the version of Monkey&#039;s Audio that encoded || APE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11544</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11544"/>
		<updated>2006-05-20T07:52:27Z</updated>

		<summary type="html">&lt;p&gt;Reglib: added Other info section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
! %codec%&lt;br /&gt;
| Defined as &#039;&#039;$codec()&#039;&#039;.&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %playback_time%&lt;br /&gt;
%_time_elapsed%&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;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_ex%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds.milliseconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_seconds%&lt;br /&gt;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Other information ===&lt;br /&gt;
This is an expansion of names for $info(name). Check the &amp;quot;Other info&amp;quot; box of &#039;&#039;&#039;Properties...&#039;&#039;&#039; for the exact same information. Don&#039;t expect all of these to work for every track&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=3&lt;br /&gt;
! name&lt;br /&gt;
! Returns value of technical information field called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
! CODEC&lt;br /&gt;
|-&lt;br /&gt;
! bitrate&lt;br /&gt;
| Returns the bitrate of the track. Eg: 128 271 320&lt;br /&gt;
| &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! bitrate_nominal&lt;br /&gt;
| 192&lt;br /&gt;
| Vorbis&lt;br /&gt;
|-&lt;br /&gt;
! bitspersample&lt;br /&gt;
| Eg: 16&lt;br /&gt;
| FLAC&lt;br /&gt;
|-&lt;br /&gt;
! codec&lt;br /&gt;
| Returns the codec. Eg: MP3, FLAC&lt;br /&gt;
| &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! encoding&lt;br /&gt;
| Possible values: lossy or lossless&lt;br /&gt;
| &#039;&#039;all&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! channels&lt;br /&gt;
| Possible values: 1, 2, ...&lt;br /&gt;
|-&lt;br /&gt;
! cue_embedded&lt;br /&gt;
| Returns &#039;&#039;&#039;yes&#039;&#039;&#039; or &#039;&#039;&#039;no&#039;&#039;&#039;&lt;br /&gt;
| FLAC&lt;br /&gt;
|-&lt;br /&gt;
! samplerate&lt;br /&gt;
| 44100&lt;br /&gt;
|-&lt;br /&gt;
! mp3_stereo_mode&lt;br /&gt;
| stereo&lt;br /&gt;
| MP3&lt;br /&gt;
|-&lt;br /&gt;
! tagtype&lt;br /&gt;
| Returns a &amp;quot;|&amp;quot; delimited list of tags on the track. Eg: id3v2|id3v1|apev2&lt;br /&gt;
| MP3&lt;br /&gt;
|-&lt;br /&gt;
! tool&lt;br /&gt;
| the encoder used to create the file. Eg: reference libFLAC 1.1.0 20030126&lt;br /&gt;
| FLAC, Vorbis&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11542</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11542"/>
		<updated>2006-05-20T07:28:18Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Technical information */ alphabetical orderized&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
! %codec%&lt;br /&gt;
| Defined as &#039;&#039;$codec()&#039;&#039;.&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %playback_time%&lt;br /&gt;
%_time_elapsed%&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;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_ex%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds.milliseconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_seconds%&lt;br /&gt;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11541</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11541"/>
		<updated>2006-05-20T06:39:32Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Wishlist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
That&#039;s based on the Navigator fcs for Columns UI. some changes I&#039;ve made are:&lt;br /&gt;
* updating the general layout&lt;br /&gt;
* uses official playback component&lt;br /&gt;
* condensed play count/time column&lt;br /&gt;
* dimmed zero-padding&lt;br /&gt;
* entries with missing metadata are hilighted&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* Less obtrusive warning window&lt;br /&gt;
* infinite loop detection/termination&lt;br /&gt;
* ability to count the number of selected items&lt;br /&gt;
** 2006-05-15 20h57 norz: you can see that in the properties box, or you could write a lua script (with foo_lua) that would output the number in the console, when invoked (eg: via a keyboard shortcut), but I guess, you&#039;d like to see it in the status bar next to the total playing time... don&#039;t know how to do that, sorry.&lt;br /&gt;
** yeah... in the status bar, right next to selected total time is what i&#039;m thinking - [[User:Reglib|Reglib]] 04:41, 16 May 2006 (CDT)&lt;br /&gt;
* 0.9beta style &amp;quot;playback follows cursor&amp;quot; for when nothing is selected. Here&#039;s the situation, I have an autoplaylist that contains only unrated songs and playback mode to random. If &#039;&#039;playback follows cursor&#039;&#039; is enabled, after i rate a song, foobar *thinks* the Nth track is still selected, and plays it next.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:0.9_Continuator_(foo_dsp_continuator)&amp;diff=11540</id>
		<title>Foobar2000 Talk:0.9 Continuator (foo dsp continuator)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:0.9_Continuator_(foo_dsp_continuator)&amp;diff=11540"/>
		<updated>2006-05-20T02:39:00Z</updated>

		<summary type="html">&lt;p&gt;Reglib: CONTINUATOR-tag syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What is the syntax for CONTINUATOR metadata?&lt;br /&gt;
&lt;br /&gt;
Something like this:&lt;br /&gt;
Tag Name: CONTINUATOR&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tag value                         | description&lt;br /&gt;
----------------------------------|-----------------------------------------------------&lt;br /&gt;
overlap                           | uses default preference-settings&lt;br /&gt;
overlap,threshold                 | uses default fade-lengths&lt;br /&gt;
overlap,threshold,fadelen         | sets fadelength for both&lt;br /&gt;
                                  |  fadeout and fadein - both will have the same value&lt;br /&gt;
overlap,threshold,fadeout,fadein  |&lt;br /&gt;
                                  |&lt;br /&gt;
crossfade                         | uses default preference-settings&lt;br /&gt;
crossfade,fadelen                 | sets fadelength for both fadeout&lt;br /&gt;
                                  |  and fadein - both will have the same value&lt;br /&gt;
crossfade,fadeout,fadein          |&lt;br /&gt;
                                  |&lt;br /&gt;
gapkill                           | alias for &amp;quot;overlap,60&amp;quot;&lt;br /&gt;
                                  |&lt;br /&gt;
off                               | disable continuator for this trackchange&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* threshold is in decibels (dB)&lt;br /&gt;
* all fade lengths are in milliseconds (ms)&lt;br /&gt;
http://www.hydrogenaudio.org/forums/index.php?act=ST&amp;amp;f=33&amp;amp;t=18703&amp;amp;hl=continuator-tag&amp;amp;view=findpost&amp;amp;p=381454&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tag value      | description&lt;br /&gt;
---------------|------------------------------------------------------------------&lt;br /&gt;
overlap[,n]    | track overlapping dependant on volume,&lt;br /&gt;
               | optional parameter n: threshold, rms drop in dB (range 0-100)&lt;br /&gt;
               |&lt;br /&gt;
crossfade[,t]  | track crossfading,&lt;br /&gt;
               | optional parameter t: time in ms (range 0-&#039;Maximum overlap length&#039;)&lt;br /&gt;
               |&lt;br /&gt;
off            | do nothing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
http://www.hydrogenaudio.org/forums/index.php?act=ST&amp;amp;f=33&amp;amp;t=18703&amp;amp;hl=continuator-tag&amp;amp;view=findpost&amp;amp;p=304514&lt;br /&gt;
&lt;br /&gt;
can anyone confirm that it still works?&lt;br /&gt;
&lt;br /&gt;
and I assume if you have songs, A, B, C, and this tag were on song B, the action would occur on the B-&amp;gt;C transition&lt;br /&gt;
&lt;br /&gt;
--[[User:Reglib|Reglib]] 21:39, 19 May 2006 (CDT)&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Foobar2000&amp;diff=11539</id>
		<title>Foobar2000 Talk:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Foobar2000&amp;diff=11539"/>
		<updated>2006-05-20T02:23:07Z</updated>

		<summary type="html">&lt;p&gt;Reglib: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;snip&amp;gt;&amp;gt; Removed long dead conversations from 2005 Use &#039;&#039;&#039;history&#039;&#039;&#039; to view --[[User:Reglib|Reglib]] 21:23, 19 May 2006 (CDT)&lt;br /&gt;
----&lt;br /&gt;
You do realize that somebody responsible for hydrogenaudio is blocking entire ISP&#039;s IP-address ranges? It makes your software (foobar2000) look kind of raunchy at best. I stopped looking further right there, when I was pointed to your forum on &amp;quot;hydrogenaudio.org&amp;quot; it said that I could not view that.&lt;br /&gt;
Apparently this wiki is not blocking the IP-ranges, but that&#039;s besides the point.&lt;br /&gt;
What I also dislike about the foobar2000 &#039;official&#039; page, is that it is way too anonymous and scary. WHO created it? Is it a human being, a company? Is there a contact or about page anywhere to look at? If it is on that hydrogen domain, we can&#039;t see it. Just so you know. I wouldn&#039;t put my info in their hands for a second if I were you. [[User:Kjhgkjg|Kjhgkjg]] 18:10, 3 February 2006 (CST)&lt;br /&gt;
----&lt;br /&gt;
I&#039;m thinking about reorganizing this page to be friendier for people looking to learn more about Foobar2000 while maintaining it as quick reference for veterans.&lt;br /&gt;
* Pretty colors, probably using tables, to further delineate sections&lt;br /&gt;
* Using keywords people are more used to such as: download, screenshots, support&lt;br /&gt;
* Pictures that don&#039;t mean anything but look pretty&lt;br /&gt;
&lt;br /&gt;
I hope you all like pink and unicorns! j/k&lt;br /&gt;
&lt;br /&gt;
--[[User:Reglib|Reglib]] 21:23, 19 May 2006 (CDT)&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11538</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11538"/>
		<updated>2006-05-19T22:34:42Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* My Foobar2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
That&#039;s based on the Navigator fcs for Columns UI. some changes I&#039;ve made are:&lt;br /&gt;
* updating the general layout&lt;br /&gt;
* uses official playback component&lt;br /&gt;
* condensed play count/time column&lt;br /&gt;
* dimmed zero-padding&lt;br /&gt;
* entries with missing metadata are hilighted&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* ability to count the number of selected items&lt;br /&gt;
** 2006-05-15 20h57 norz: you can see that in the properties box, or you could write a lua script (with foo_lua) that would output the number in the console, when invoked (eg: via a keyboard shortcut), but I guess, you&#039;d like to see it in the status bar next to the total playing time... don&#039;t know how to do that, sorry.&lt;br /&gt;
** yeah... in the status bar, right next to selected total time is what i&#039;m thinking - [[User:Reglib|Reglib]] 04:41, 16 May 2006 (CDT)&lt;br /&gt;
* 0.9beta style &amp;quot;playback follows cursor&amp;quot; for when nothing is selected. Here&#039;s the situation, I have an autoplaylist that contains only unrated songs and playback mode to random. If &#039;&#039;playback follows cursor&#039;&#039; is enabled, after i rate a song, foobar *thinks* the Nth track is still selected, and plays it next.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11537</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11537"/>
		<updated>2006-05-19T22:28:35Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Now playing info */ fixed stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %playback_time%&lt;br /&gt;
%_time_elapsed%&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;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_ex%&lt;br /&gt;
| Returns the length of the track formatted as [hours:]minutes:seconds.milliseconds&lt;br /&gt;
|-&lt;br /&gt;
! %length_seconds%&lt;br /&gt;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11534</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11534"/>
		<updated>2006-05-19T19:28:49Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Playlist info */ %_playlist_number% is not zero padded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
:The answer is &amp;quot;no&amp;quot;, klang, but this question belongs in the forum. -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
:It&#039;s a reference, not a tutorial, but table-formatting sounds intriguing. ;) -- [[User:Canar|Canar]] 23:37, 15 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
%_time_elapsed%&lt;br /&gt;
| Returns elapsed time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as hours, minutes, and seconds.&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;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %_playlist_number% &lt;br /&gt;
| Returns a the playlist index of specified item with no padding. The first item is at index 1.&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=11434</id>
		<title>Foobar2000:Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=11434"/>
		<updated>2006-05-17T10:02:08Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Input */ added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Components for Foobar2000 v0.9.x=&lt;br /&gt;
This page contains most Foobar2000 v0.9.x components available at time of last update. Descriptions where available. More information on these plugins can be found by searching the [http://www.hydrogenaudio.org/forums/index.php?showforum=28 foobar2000 forums].&lt;br /&gt;
&lt;br /&gt;
Much of the information here came from [http://www.hydrogenaudio.org/forums/index.php?showtopic=42730&amp;amp;st=0 this thread] which may be more up to date, and also shows a list of components not yet updated from earlier versions of foobar2000.&lt;br /&gt;
&lt;br /&gt;
==Columns UI==&lt;br /&gt;
[http://music.morbo.org/components.php Columns UI] is a very popular alternate interface for foobar2000 based on a columns and panel layout. It has a separated wiki that is located [http://music.morbo.org/wiki/columns_ui:columns_ui here].&lt;br /&gt;
&lt;br /&gt;
Columns UI has its own plugin system and these plugins extend the user interface:&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html Album Art Panel (foo_uie_albumart)] ([[Foobar2000:0.9 Album Art Panel (foo_uie_albumart)|&#039;&#039;more info&#039;&#039;]]) Panel to display album art&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ Album Art Panel for matroska (foo_uie_albumart_mka)] Albumart mod to read matroska covers.&lt;br /&gt;
* [http://music.morbo.org/components.php Album List Panel (foo_uie_albumlist)] Displays the database in a treeview using customizable sorting methods (by genre, artist, directory, ..)&lt;br /&gt;
* [http://ku.myftp.org/goods/ Explorer Panel (foo_uie_explorer)] Displays a treeview of selected disks/folders.&lt;br /&gt;
* [http://foobar.s53.xrea.com/up/ Lyrics Panel (foo_uie_lyrics_panel)] Display lyrics stored in file tags. &lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000 Music Browser (foo_browser)] Panels for Browsing Library, Similar to iTunes&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44703 Playlist Dropdown (foo_uie_playlists_dropdown)] Displays the playlist in a dropdown menu.&lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000#foo_playlist_tree Playlist Tree (foo_playlist_tree)] Tree based media library with many available customizations.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html Track Info Panel (foo_uie_trackinfo)] ([[Foobar2000:0.9 Track Info Panel (foo_uie_trackinfo)|&#039;&#039;more info&#039;&#039;]]) Uses TAGZ to display information about a selected track&lt;br /&gt;
&lt;br /&gt;
==DSP==&lt;br /&gt;
* [http://www.andrewlabs.com/downloads/downloads.php ATSurround Processor (foo_dsp_atsurround)] ([[Foobar2000:0.9 ATSurround Processor (foo_dsp_atsurround)|&#039;&#039;more info&#039;&#039;]]) Reproduces surround sound information present in many stereo audio material and more.&lt;br /&gt;
* [http://bs2b.sourceforge.net/ BS2D (foo_dsp_bs2p)] ([[Foobar2000:0.9 BS2D (foo_dsp_bs2p)|&#039;&#039;more info&#039;&#039;]]) Improves headphone listening of regular hi-fi stereo records.&lt;br /&gt;
* [http://www.skipyrich.com/foobar/foo_channel_mixer.ptml Channel Mixer (foo_channel_mixer)] ([[Foobar2000:0.9 Channel Mixer (foo_channel_mixer)|&#039;&#039;more info&#039;&#039;]]) Up/down mix to/from 1-6 channels&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#continuator Continuator (foo_dsp_continuator)] ([[Foobar2000:0.9 Continuator (foo_dsp_continuator)|&#039;&#039;more info&#039;&#039;]]) Allows for advanced crossfading between tracks&lt;br /&gt;
* [http://www.foobar2000.org/components/index.html Convolve (foo_convolve)] ([[Foobar2000:0.9 Convolve (foo_convolve)|&#039;&#039;more info&#039;&#039;]]) Takes impulse response and does a fast convolution of the sound data with that impulse response.&lt;br /&gt;
* [http://www.naivesoftware.com/software.html Crossfeed (foo_dsp_crossfeed)] Filters the music to help reduce fatigue caused by listening to music with headphones&lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/dsp.php#132 Dolby Headphone Wrapper (foo_dsp_dolbyhp)] ([[Foobar2000:0.9 Dolby Headphone Wrapper (foo_dsp_dolbyhp)|&#039;&#039;more info&#039;&#039;]]) Dolby Headphone engine DLL.&lt;br /&gt;
* [http://www.stud.uni-karlsruhe.de/~uybc/foo_dsp_delta.zip LPCM &amp;lt;--&amp;gt; Delta-PCM Converter (foo_dsp_delta)] Noise sharpening filter&lt;br /&gt;
* [http://www.oss3d.com/index.html OSS/3D (foo_dsp_oss3ddsp)] Audio enhancement (SHAREWARE)&lt;br /&gt;
* [http://www.acc.umu.se/~zao/foobar2000/#foo_dsp_silence Post-track Silence (foo_dsp_silence)] Inserts a configurable amount of silence after each track to help external devices like MiniDisc players to sync track changes.&lt;br /&gt;
* [http://otachan.com/foo_dsp_ssrc.html SSRC (foo_dsp_ssrc)] ([[Foobar2000:0.9 SSRC (foo_dsp_ssrc)|&#039;&#039;more info&#039;&#039;]]) Sample rate converter.&lt;br /&gt;
* [http://www.skipyrich.com/foobar/foo_dsp_tube.ptml Tube Sound (foo_dsp_tube)] ([[Foobar2000:0.9 Tube Sound (foo_dsp_tube)|&#039;&#039;more info&#039;&#039;]]) Emulate tube sound.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=22057&amp;amp;view=findpost&amp;amp;p=374256 VLevel (foo_dsp_vlevel)] ([[Foobar2000:0.9 VLevel (foo_dsp_vlevel)|&#039;&#039;more info&#039;&#039;]]) Dynamic compressor which amplifies the quiet parts of music.&lt;br /&gt;
* [http://xover.sourceforge.net/ XOver (foo_dsp_xover)] ([[Foobar2000:0.9 XOver (foo_dsp_xover)|&#039;&#039;more info&#039;&#039;]]) Implements this digital crossover to achieve active multi-amplification.&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
* [http://kode54.foobar2000.org/ AC3 Decoder (foo_ac3)] Plays Dolby Digital lossy audio compression technologies format.&lt;br /&gt;
* [http://dl.matroska.org/downloads/foobar2000/ AC3 Packet Decoder (foo_packet_decoder_ac3)] Needed for [[AC3]] in [[Matroska]].&lt;br /&gt;
* [http://kode54.foobar2000.org/ ADPCM Decoder (foo_adpcm)] Plays GameCube ADPCM audio data and some. (DSP, ADP, GCM, HPS, STM, AST...)&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html ALAC Decoder (foo_input_alac)] Apple Lossless (ALAC) decoder (has known stability issues: random crashes during decoding).&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43766 Another Slight Atari Player (foo_asap)] [http://asap.sourceforge.net/ ASAP] is a player/converter of Atari 8-bit music for modern computers. It provides high-quality, identical to the popular Atari800 emulator, emulation of the POKEY sound chip and the 6502 processor.&lt;br /&gt;
* [http://kode54.foobar2000.org/ DUMB Module Decoder (foo_dumb)] Plays your favorite module files, and then some. (MOD, S3M, XM, IT, 669, PTM, PSM, MTM, UMX)&lt;br /&gt;
* [http://shexec32.serveftp.net/products.aspx?id=foo_game Game Audio Decoder (foo_game)] Plays Westwood&#039;s audio (.aud), Sierra&#039;s sounds (.sfx/.aud), Core design&#039;s cd audio (cdaudio.wad), Funcom&#039;s music (.iss), Rome Total War&#039;s IDX (.idx/.dat), Timegate&#039;s format (.rwd), EA&#039;s Pathfinder audio (.mus) and Ben Gerard&#039;s music (.sc68).&lt;br /&gt;
* [http://kode54.foobar2000.org/ Game Emu Player (foo_gep)] Plays several emulation formats. (GBS, NSF, SPC, GYM, HES, VGM)&lt;br /&gt;
* [http://kode54.foobar2000.org/ Lunar 2 PCM Decoder (foo_lunar2)] Plays the RP*.PCM files found on the original Lunar: Eternal Blue CD.&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ Matroska Plugin (unofficial) (foo_input_matroska)] [[Matroska]] decoder.&lt;br /&gt;
* [http://shexec32.serveftp.net/products.aspx?id=foo_m1 M1 Decoder (foo_m1)] ([[Foobar2000:0.9 M1 (foo_m1)|More info]]) Plays arcade/pinball game sound.&lt;br /&gt;
* [http://kode54.foobar2000.org/ MIDI Synthesizer Host (foo_midi)] &lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Monkey&#039;s Audio Decoder (foo_input_monkey)] [[Monkey&#039;s Audio]] (APE) decoder (this component has known unresolved stability issues with 0.9)&lt;br /&gt;
* [http://kode54.foobar2000.org/ PSF Decoder (foo_psf)] Plays PSF files.&lt;br /&gt;
* [http://kode54.foobar2000.org/ SID Player 2 (foo_sid)] Sound chip of Commodore&#039;s CBM-II, Commodore 64 and Commodore 128 home computers.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Shorten Decoder (foo_input_shorten)] Shorten (SHN) is a file format used to losslessly compress CD-quality audio files.&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ TTA Audio Decoder (unofficial) (foo_input_tta)] [[TTA]] (True Audio) Free Lossless Audio Codec&lt;br /&gt;
&lt;br /&gt;
==Output==&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html ASIO Output (foo_out_asio)] Adds ASIO output support.&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Kernel Streaming Output (foo_out_ks)] Allows bit-exact playback bypassing Windows kernel mixer.&lt;br /&gt;
&lt;br /&gt;
==Visualisation==&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#projectM ProjectM Visualisation (foo_vis_projectM)] Based on the ProjectM project, which is a reimplementation of Milkdrop under OpenGL.&lt;br /&gt;
* [http://www.rabidhamster.org/R4/ R4 Visualisation] ([[Foobar2000:R4 Visualisation|&#039;&#039;more info&#039;&#039;]]) Stand alone visualisation, uses &amp;quot;What You Hear&amp;quot; sound as input&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
===Library tools===&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Audio CD Writer (foo_burninate)] CD burning support (requires Nero to be installed on your system.)&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Autoplaylist Manager (foo_autoplaylist)] Presents a Media Library query in a dynamically-generated playlist (under development).&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44656 Bin Pack (foo_binpack)] Creates playlists from a list with a maximum length.&lt;br /&gt;
* [http://tmp.reharmonize.net/foobar/ Cuesheet Creator (foo_cuesheet_creator)] Cuesheet creator.&lt;br /&gt;
* [http://wiki.bowron.us/index.php/Foobar2000#foo_cwb_hooks Cwbowron&#039;s Title formating  (foo_cwb_hooks)] ([[Foobar2000:0.9 CwBowron&#039;s Title formating (foo_cwb_hooks)|&#039;&#039;more info&#039;&#039;]]) Special title formating.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Database Search (foo_dbsearch)] ([[Foobar2000:0.9 Database Search (foo_dbsearch)|&#039;&#039;more info&#039;&#039;]]) Database search.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Freedb Tagger (foo_freedb2)] Freedb tagger.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43012 History (foo_history)] Very basic song history.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Live Show Tagger (foo_tradersfriend)] ([[Foobar2000:0.9 Live Show Tagger (foo_tradersfriend)|&#039;&#039;more info&#039;&#039;]]) Live show tagger.&lt;br /&gt;
* [http://eludevisibility.org/music/ MeowDB (foo_meowdb)] ([[Foobar2000:0.9 MeowDB (foo_meowdb)|&#039;&#039;more info&#039;&#039;]]) Takes the Media Library and outputs the results to a form and uploads it to your server using the cURL library.&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Play Count (official) (foo_playcount)] ([[Foobar2000:0.9 Play Count (official) (foo_playcount)|&#039;&#039;more info&#039;&#039;]]) Collects statistics about tracks from your Media Library being played.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#playcount Play Count (foo_playcount)] ([[Foobar2000:0.9 Play Count (foo_playcount)|&#039;&#039;more info&#039;&#039;]]) Keeps track of the amount of times, the last time, and the first time a track has been played.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Playback Queue Viewer (foo_pqview)] Playback queue viewer.&lt;br /&gt;
* [http://www.skipyrich.com/foobar/foo_playlist_bind.ptml Playlist Bind (foo_playlist_bind)] Synchronize playlist with contents of specific directory.&lt;br /&gt;
* [http://otachan.com/foo_playlistclear.html Playlist Clear (foo_playlistclear)] All playlists are cleared at startup.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Playlist Manager (foo_playlist_manager)] Playlist manager.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43522 Playlist Name Enhenced (foo_playlist_name_enhanced)] ([[Foobar2000:0.9 Playlist Name Enhenced (foo_playlist_name_enhanced)|&#039;&#039;more info&#039;&#039;]]) Appends automatically playlist info (&amp;quot;items / length&amp;quot;) to all playlist names.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Playlist Tools (foo_utils)] ([[Foobar2000:0.9 Playlist Tools (foo_utils)|&#039;&#039;more info&#039;&#039;]]) Provides various general commands.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Randomized Playlist Entry (foo_random)] Randomized playlist entry.&lt;br /&gt;
* [http://gro.clinux.org/frs/?group_id=737&amp;amp;release_id=1095 Special File Info Box (foo_infobox)] ([[Foobar2000:0.9 Special File Info Box (foo_infobox)|&#039;&#039;more info&#039;&#039;]]) A replacement of the built-in file info box.&lt;br /&gt;
&lt;br /&gt;
===Notifier===&lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/general.php#40 AMIP Wrapper (foo_amipwrapper)] Complete now-playing plug-in for mIRC, PIRCH, Klient, Bersirc, other IRC and Mail clients, supporting full player control from mIRC, playlist search, clipboard integration, HTTP, dynamic image signatures, etc.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#msn MSN Now Playing (alt) (foo_msnalt)] ([[Foobar2000:0.9 MSN Now Playing (alt) (foo_msnalt)|&#039;&#039;more info&#039;&#039;]]) Show the current song as &amp;quot;Now Playing&amp;quot; in MSN and MS Live messenger.&lt;br /&gt;
* [http://kode54.foobar2000.org/ On-Screen Display (foo_osd)] ([[Foobar2000:0.9 On-Screen Display (foo_osd)|&#039;&#039;more info&#039;&#039;]]) On screen display of track information and volume bar.&lt;br /&gt;
* [http://kode54.foobar2000.org/ On-Screen Display GDI+ (foo_osd_gdiplus)] ([[Foobar2000:0.9 On-Screen Display (foo_osd)|&#039;&#039;more info&#039;&#039;]]) Same as foo_osd but uses GDI+ for osd drawing.&lt;br /&gt;
* [http://www.maroonspoon.com/foo_prettypop/ Pretty Popup (foo_prettypop)] ([[Foobar2000:0.9 Pretty Popup (foo_prettypop)|&#039;&#039;more info&#039;&#039;]]) Display a moderately sized popup of song information when a new song plays.&lt;br /&gt;
&lt;br /&gt;
===Online database===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44320&amp;amp;st=0 Audioscrobbler (foo_audioscrobbler)] Audioscrobbler will send the name of every song you play on your computer to Last.fm. This effortlessly populates your profile to play radio you like and make personalized recommendations.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Foosic Music Database (foo_sic)] Sends track information to the [http://www.foosic.org/ foosic online database]. You can currently view your top artist, album and track statistics with foosic.&lt;br /&gt;
&lt;br /&gt;
===Remote control===&lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/general.php#138 Advanced Controls (foo_advancedcontrols)] ([[Foobar2000:0.9 Advanced Controls (foo_advancedcontrols)|&#039;&#039;more info&#039;&#039;]]) Control all the playback functions from icons in the Taskbar Notification Area (play, pause, next, previous, open)&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ COM Automation Server (foo_comserver)] Allows controlling foobar2000 through COM Automation&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=38114 Control Server (foo_controlserver)] Acts as a server to control Foobar2000. Connect with a telnet client and control it using ASCII commands.&lt;br /&gt;
* [http://otachan.com/foo_ddecontrol.html DDE Control (foo_ddecontrol)] Control foobar remotelly with DDE interprocess communication (interface in japanese only).&lt;br /&gt;
* [http://foobar.daychanged.com/ HTTP Writer (foo_write_http)] It&#039;s TCP/IP server that listens on a specified port for incoming requests such as play, stop, etc.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=19252&amp;amp;view=findpost&amp;amp;p=391028 WinLIRC Client (foo_lirc)] ([[Foobar2000:0.9 WinLIRC Client (foo_lirc)|&#039;&#039;more info&#039;&#039;]]) Control Foobar from a remote control.&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Binary Comparator (foo_bitcompare)] Performs binary comparison between two or more tracks and reports differences.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/#channelusage Channel Usage Visualisation (foo_vis_channelusage)] Channel Usage Visualisation.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Common Services (foo_common)] Common services.&lt;br /&gt;
* [http://www.foobar2000.com/components/index.html Decoding Speed Test (foo_benchmark)] ([[Foobar2000:0.9 Decoding Speed Test (foo_benchmark)|&#039;&#039;more info&#039;&#039;]]) Measures decoding speed of audio files.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=37204 Fullscreen (foo_fullscreen)] Enable fullscreen mode.&lt;br /&gt;
* [http://lyrics.mirkforce.net/ LyricsDB (foo_lyricsdb)] ([[Foobar2000:0.9 LyricsDB (foo_lyricsdb)|&#039;&#039;more info&#039;&#039;]]) Search lyrics basing on song&#039;s artist title and sometimes album.&lt;br /&gt;
* [http://www.crintsoft.com/minilyrics.htm Mini Lyrics (foo_ui_minilyrics)] ([[Foobar2000:0.9 Mini Lyrics (foo_ui_minilyrics)|&#039;&#039;more info&#039;&#039;]]) Lyrics viewer for synchronizing and displaying lyrics of the currently playing song.&lt;br /&gt;
* [http://kode54.foobar2000.org/ Pause On Lock (foo_lock)] Pauses/unpauses foobar2000 on workstation lock/unlock.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=42736&amp;amp;hl=foo_sendtodevice Send To Device (foo_sendtodevice)] Add &amp;quot;Send to Device&amp;quot; feature.&lt;br /&gt;
* [http://foosion.foobar2000.org/0.9/ Shell Link Resolver (foo_lnk)] Shell link resolver.&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html#notaskbar Taskbar Button Remover (foo_notaskbar)] Hides Foobar2000 from the taskbar, even when the window is normally visible.&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=42941 Winamp API Emulator (foo_winamp_spam)] Designed to create a fake Winamp 1.x window which will act as a wrapper between applications written to use the Winamp API and foobar2000.&lt;br /&gt;
* [http://www.maroonspoon.com/foo_xm/ XM Radio Online Player (foo_xm)] Allow you to listen to XM Radio channels over the Internet by using XM Radio Online.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
* [http://www.foobar2000.org/components/index.html Official components site] &lt;br /&gt;
* [http://pelit.koillismaa.fi/plugins/ Official third-party components site]&lt;br /&gt;
* [http://music.morbo.org/components.php musicmusic&#039;s components] including Columns UI&lt;br /&gt;
* [http://stephan.kochen.nl/proj/foobar2000.html Several popular components ported to 0.9]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=21105 Most Sought-After Plugins] (forum thread, foobar v0.8.3 only)&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=28647 Columns UI thread]: first post contains links to many Columns UI panel extensions&lt;br /&gt;
&lt;br /&gt;
[[Category: foobar2000]]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11430</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11430"/>
		<updated>2006-05-16T09:41:54Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Wishlist */ formatting, old style playback follows cursor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* ability to count the number of selected items&lt;br /&gt;
** 2006-05-15 20h57 norz: you can see that in the properties box, or you could write a lua script (with foo_lua) that would output the number in the console, when invoked (eg: via a keyboard shortcut), but I guess, you&#039;d like to see it in the status bar next to the total playing time... don&#039;t know how to do that, sorry.&lt;br /&gt;
** yeah... in the status bar, right next to selected total time is what i&#039;m thinking - [[User:Reglib|Reglib]] 04:41, 16 May 2006 (CDT)&lt;br /&gt;
* 0.9beta style &amp;quot;playback follows cursor&amp;quot; for when nothing is selected. Here&#039;s the situation, I have an autoplaylist that contains only unrated songs and playback mode to random. If &#039;&#039;playback follows cursor&#039;&#039; is enabled, after i rate a song, foobar *thinks* the Nth track is still selected, and plays it next.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Talk:Bitrate&amp;diff=11419</id>
		<title>Talk:Bitrate</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Talk:Bitrate&amp;diff=11419"/>
		<updated>2006-05-16T01:09:00Z</updated>

		<summary type="html">&lt;p&gt;Reglib: possible references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I wasn&#039;t sure about some of the facts presented in the article so here&#039;s some relavent Wikipedia links:&lt;br /&gt;
* http://en.wikipedia.org/wiki/Binary_prefix#Specific_units_of_IEC_60027-2_A.2&lt;br /&gt;
* http://en.wikipedia.org/wiki/Bit_rate&lt;br /&gt;
&lt;br /&gt;
Also, I&#039;m not sure how technical this article should be. I&#039;m thinking about the blurb about baud rate. I learned it as a symbol rate, but then we&#039;d have to define what a symbol is. Personally I&#039;d just remove it.&lt;br /&gt;
--[[User:Reglib|Reglib]] 20:09, 15 May 2006 (CDT)&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11409</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11409"/>
		<updated>2006-05-15T09:17:06Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* My Foobar2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Global Hotkeys: ===&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
* toggle buttons in toolbar could indicate state (Follow Cursor, Follow Playback, Stop after Current, etc.)&lt;br /&gt;
* One-click RePlay Gain&lt;br /&gt;
* ability to count the number of selected items&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=11408</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=11408"/>
		<updated>2006-05-15T08:49:16Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Related articles */&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;
&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;
=== $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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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;
= 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>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11407</id>
		<title>User:Reglib</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=User:Reglib&amp;diff=11407"/>
		<updated>2006-05-15T08:32:02Z</updated>

		<summary type="html">&lt;p&gt;Reglib: added screencap of my foob&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I used to be an electrical engineer, focusing on solid state crap, but now I&#039;m in the movie business. I focus on a lot of aspects, but I ironically stay away from sound (I just give that stuff to friends). I do have knowledge from signal processing courses and the field, but I just don&#039;t enjoy it as much as video.&lt;br /&gt;
&lt;br /&gt;
Apart from a maintaining a personal wiki, I contribute to the Unofficial Konfabulator (yahoo! widget engine) wiki.&lt;br /&gt;
&lt;br /&gt;
I&#039;m fairly new to Foobar2000. I like to keep things simple.&lt;br /&gt;
&lt;br /&gt;
== My Foobar2000 ==&lt;br /&gt;
[http://img163.imageshack.us/my.php?image=myfb2k3ek.jpg http://img163.imageshack.us/img163/2756/myfb2k3ek.th.jpg] Low Compression&lt;br /&gt;
&lt;br /&gt;
Global Hotkeys:&lt;br /&gt;
* masstagger rating scripts Ctrl+1 through Ctrl+5&lt;br /&gt;
* mm keys mapped, except mm(stop) -&amp;gt; activate/hide&lt;br /&gt;
* pause = activate pretty pop(fast)&lt;br /&gt;
* CTRL+` = open folder&lt;br /&gt;
&lt;br /&gt;
ColumnsUI based on Navigator. Switched from an old Azreal. Unfortunately I keep modifying it, so upgrading will be difficult. My current IDE (HTML-Kit) oddly doesn&#039;t support unicode. So I&#039;ll probably find another and use syntax hilighting.&lt;br /&gt;
&lt;br /&gt;
I maintain two foobar2000 setups. one &#039;&#039;&#039;stable&#039;&#039;&#039; and the other *gasp* &#039;&#039;&#039;unstable&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=11405</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=11405"/>
		<updated>2006-05-15T07:33:06Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Specific Guides */ added &amp;quot;Increasing Performance&amp;quot; page / more formal wording / consistency&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Foobar2000 is a freeware audio player, and more. It can not only play, it can also make a library, transcode files, rip CDs, ... the list goes on and on. A very powerful tool.&lt;br /&gt;
&lt;br /&gt;
Check it out to explore its full power.&lt;br /&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 on Windows NT&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;
==Audio Formats Supported==&lt;br /&gt;
&lt;br /&gt;
Native Support (&amp;quot;out-of-the-box&amp;quot;):&lt;br /&gt;
* [[MP3]], [[Ogg Vorbis]], [[MP2]], [[AAC]], [[WAV]], [[AIFF]], [[Musepack]], [[VOC]], [[SND]]&lt;br /&gt;
&lt;br /&gt;
Supported through plug-ins:&lt;br /&gt;
* [[TTA]], [[FLAC]], [[Monkey&#039;s Audio]], [[WavPack]], [[Speex]], [[Mod]], [[SPC]], [[TFMX]], [[Shorten]], [[OptimFROG]], [[LPAC]], [[WMA]], [[AC3]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]]&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play music directly from compressed RAR, ZIP and 7-Zip 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 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.8|foobar2000 0.8.x Components]]&lt;br /&gt;
* [[foobar2000:components 0.9|foobar2000 0.9.x Components]]&lt;br /&gt;
* [[foobar2000:Directories|foobar2000 Directories]]&lt;br /&gt;
* [[foobar2000:FAQ|foobar2000 FAQ]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&lt;br /&gt;
* [[foobar2000:Tips &amp;amp; Tricks|foobar2000 Tips &amp;amp; Tricks]]&lt;br /&gt;
&lt;br /&gt;
===General Guides===&lt;br /&gt;
&lt;br /&gt;
* [[foobar2000:Newbie User Guide|Newbie User Guide]]&lt;br /&gt;
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]&lt;br /&gt;
* [[foobar2000:Advanced User Guide|Advanced User Guide]]&lt;br /&gt;
&lt;br /&gt;
===Specific Guides===&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;
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;
&lt;br /&gt;
===External Guides===&lt;br /&gt;
&lt;br /&gt;
* [http://eolindel.free.fr/foobar0.9/accueil.shtml Bachi-Bouzouk&#039;s guide] about 0.9.X version&lt;br /&gt;
* [http://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide]&lt;br /&gt;
* [http://www.dizwell.com/html/foobar.htm 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 Foobar 2000&amp;quot;]&lt;br /&gt;
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk&#039;s guide] about 0.8.3 version&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://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar.prv.pl/ Polish-language forum]&lt;br /&gt;
* [http://foobar2000.fo.funpic.de/ German Support Forum]&lt;br /&gt;
&lt;br /&gt;
===Appearance===&lt;br /&gt;
&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&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread&lt;br /&gt;
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready&lt;br /&gt;
* [http://foobar.nub4life.net/columns/ Columns UI configs]: .fcs file format&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30281 foo_ui_gfx (alpha)]: skin support for foobar 0.8.x&lt;br /&gt;
* [http://tagz.brother-john.net/ Brother John&#039;s Foobar2000 Scripting Tutorial]&lt;br /&gt;
&lt;br /&gt;
==Thanks==&lt;br /&gt;
&lt;br /&gt;
picmixer: ReplayGain tutorial&lt;br /&gt;
&lt;br /&gt;
[[Category: foobar2000]]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11397</id>
		<title>Foobar2000 Talk:Title Formatting Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000_Talk:Title_Formatting_Reference&amp;diff=11397"/>
		<updated>2006-05-15T04:56:58Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* Metadata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;is there a way to change the field remappings? for instance, i want to make use of the MB-supplied ORIGYEAR field when possible for the %DATE% field.. --[[User:Herr klang|Herr klang]] 15:33, 12 Jun 2005 (CDT)&lt;br /&gt;
&lt;br /&gt;
IMO, this page is too complicated and too long. Suggest a table formatted version. See titleformat_help.html in your foobar program directory. Perhaps this page should exist as an expanded version to be consistent? --[[User:Reglib|Reglib]] 02:01, 3 May 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
= Generic Fields =&lt;br /&gt;
== Metadata ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
%discnumber%&lt;br /&gt;
| Returns the disc number. The disc number 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;
! %subsong% &lt;br /&gt;
| &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;
|-&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 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;
! %track%&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;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
&lt;br /&gt;
= Context-specific fields =&lt;br /&gt;
== Now playing info ==&lt;br /&gt;
The following functions and fields are only usable for scripts used with the currently playing item, ie: the status bar, the main window title, and the copy command script.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
%_time_elapsed%&lt;br /&gt;
| Returns elapsed time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining%&lt;br /&gt;
%_time_remaining%&lt;br /&gt;
| Returns remaining time until track ends, formatted as [HH:]MM:SS.&lt;br /&gt;
|-&lt;br /&gt;
! %playback_time_remaining_seconds%&lt;br /&gt;
%_time_remaining_seconds%&lt;br /&gt;
| Returns remaining time in seconds.&lt;br /&gt;
|-&lt;br /&gt;
! %length%&lt;br /&gt;
%_time_total%&lt;br /&gt;
| Returns the length of the track formatted as hours, minutes, and seconds.&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;
%_time_total_seconds%&lt;br /&gt;
| Returns the length of the track in seconds.&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;
&lt;br /&gt;
== Playlist info ==&lt;br /&gt;
The following functions and fields are usable for playlist scripts such as masstagger.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! %isplaying%&lt;br /&gt;
%_isplaying%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if file is currently playing and empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %ispaused%&lt;br /&gt;
%_ispaused%&lt;br /&gt;
| Returns &amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
|-&lt;br /&gt;
! %list_index%&lt;br /&gt;
%playlist_number%&lt;br /&gt;
%_playlist_number%&lt;br /&gt;
| Defined as &#039;&#039;$num(%_playlist_number%,$len(%_playlist_total%))&#039;&#039;. Returns a zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! %list_total%&lt;br /&gt;
%_playlist_total%&lt;br /&gt;
| Returns number of items in the playlist.&lt;br /&gt;
|-&lt;br /&gt;
! %playlist_name%&lt;br /&gt;
%_playlist_name%&lt;br /&gt;
| Returns the name of the playlist containing the specified item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
== Control flow ==&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;&amp;quot;&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;
| 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;
| 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;
| 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;
| 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;
! $ifgreater(n1,n2,then,else)&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;
| 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;
| 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;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $add(a,b)&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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Boolean functions ==&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $and(...)&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;
| 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;
| 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;
| 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;
&lt;br /&gt;
&lt;br /&gt;
== Color functions ==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
!$blend(color1,color2,part,total)&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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $hsl(h,s,l)&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;
| 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;
| Resets the text color to the default color.&lt;br /&gt;
|-&lt;br /&gt;
! $rgb(r,g,b)&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;
| 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;
|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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
! $abbr(x) &lt;br /&gt;
| Returns abbreviation of &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $abbr(x,len) &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;
| 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;
| 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;
| 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;
| 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;
| Inserts Unicode character with code &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $crc32(a) &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;
| 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;
| 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;
| Extracts directory name from the file path &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $directory(x,n) &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;
| 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;
| Extracts file name from full path.&lt;br /&gt;
|-&lt;br /&gt;
! $fix_eol(x) &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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in hexadecimal notation.&lt;br /&gt;
|-&lt;br /&gt;
! $hex(n,len) &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;
| 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;
| 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;
| Returns length of string &#039;&#039;a&#039;&#039; in characters.&lt;br /&gt;
|-&lt;br /&gt;
! $len2(a) &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;
| 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;
| Converts &#039;&#039;a&#039;&#039; to lowercase.&lt;br /&gt;
|-&lt;br /&gt;
! $longest(a,...) &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Formats the integer number &#039;&#039;n&#039;&#039; in roman notation.&lt;br /&gt;
|-&lt;br /&gt;
! $rot13() &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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| 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;
| Removes leading and trailing spaces from string &#039;&#039;s&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! $tab() &lt;br /&gt;
| Inserts one tabulator character.&lt;br /&gt;
|-&lt;br /&gt;
! $tab(n) &lt;br /&gt;
| Inserts &#039;&#039;n&#039;&#039; tabulator characters.&lt;br /&gt;
|-&lt;br /&gt;
! $upper(s) &lt;br /&gt;
| Converts string &#039;&#039;s&#039;&#039; to uppercase.&lt;br /&gt;
|}&lt;br /&gt;
&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;
{| border=1 cellspacing=0 cellpadding=2&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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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 1, if all given tags exist, undefined 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;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&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;
|-&lt;br /&gt;
! %filename% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename without directory and extension.&lt;br /&gt;
|-&lt;br /&gt;
! %filename_ext% &lt;br /&gt;
| &lt;br /&gt;
Returns the filename with extension, but without the directory.&lt;br /&gt;
|-&lt;br /&gt;
! %directoryname% &lt;br /&gt;
| &lt;br /&gt;
Returns the name of the parent directory only, not the complete path.&lt;br /&gt;
|-&lt;br /&gt;
! %lastmodified% &lt;br /&gt;
| &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;
|-&lt;br /&gt;
! %path% &lt;br /&gt;
| &lt;br /&gt;
Returns the path.&lt;br /&gt;
|-&lt;br /&gt;
! %path_raw% &lt;br /&gt;
| &lt;br /&gt;
Returns the path as URL including the protocol scheme.&lt;br /&gt;
|-&lt;br /&gt;
! $extra(foobar2000_version) &lt;br /&gt;
| &lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=11396</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=11396"/>
		<updated>2006-05-15T04:55:52Z</updated>

		<summary type="html">&lt;p&gt;Reglib: /* $meta_test(...) */&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;
&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;
=== $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 tag called &#039;&#039;name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$meta(artist,2)&#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;
= Related articles =&lt;br /&gt;
&lt;br /&gt;
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]&lt;/div&gt;</summary>
		<author><name>Reglib</name></author>
	</entry>
</feed>