<?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=82.246.177.235</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=82.246.177.235"/>
	<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Special:Contributions/82.246.177.235"/>
	<updated>2026-04-29T11:45:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Monkey%27s_Audio&amp;diff=27104</id>
		<title>Monkey&#039;s Audio</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Monkey%27s_Audio&amp;diff=27104"/>
		<updated>2016-12-15T02:52:17Z</updated>

		<summary type="html">&lt;p&gt;82.246.177.235: more precise category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Monkey&#039;s Audio (APE) is a freeware [[lossless]] audio compression format with a highly competitive compression algorithm, and is used primarily by Windows users. Although software is available for Linux, Monkey&#039;s Audio is not as popular among this operating system&#039;s users. Monkey&#039;s Audio suffers from slow decompression speeds as compared to other lossless audio codecs.&lt;br /&gt;
&lt;br /&gt;
Monkey&#039;s Audio uses a combination of traditional lossless compression tactics ([[linear prediction]] and [[channel coupling]]) and a simple [[Neural network]]. To store the output values of its prediction step it uses [[Range coding]], modified to work well with more or less continuous values.&lt;br /&gt;
&lt;br /&gt;
Monkey&#039;s Audio&#039;s main competitor is [[FLAC]], which has more features than Monkey&#039;s Audio (streaming support, for example) and hardware support to its advantage, though its efficiency in compression is not as great.&lt;br /&gt;
&lt;br /&gt;
Monkey&#039;s Audio is released under a &amp;quot;custom&amp;quot; license that allows you to do pretty much anything with the source code, on the provision that you ask the author for permission.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Lossless_comparison|Lossless Codec Comparison]] by Rjamorim&lt;br /&gt;
* [[EAC_and_Monkeys_Audio | Configuring EAC and Monkey&#039;s Audio]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.monkeysaudio.com/ Monkey&#039;s Audio: Homepage] Latest Version: 4.17 (June 8, 2016)  &lt;br /&gt;
* &amp;lt;s&amp;gt; Monkey&#039;s Audio Package for BeOS &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless]]&lt;/div&gt;</summary>
		<author><name>82.246.177.235</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Lossy&amp;diff=27103</id>
		<title>Lossy</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Lossy&amp;diff=27103"/>
		<updated>2016-12-15T02:48:21Z</updated>

		<summary type="html">&lt;p&gt;82.246.177.235: sort at the top of :Category:Codecs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lossy&#039;&#039;&#039; compression is a form of compression that significantly reduce multimedia file size by throwing away information imperceptible to humans.&lt;br /&gt;
&lt;br /&gt;
Human audio perception is not perfect. Lossy compression takes advantage of this characteristic. By selective discarding, much unnecessary information is thrown away. The amount of information discarded is usually adjustable, giving a compromise between smaller size with less quality and larger size with higher quality.&lt;br /&gt;
&lt;br /&gt;
The downside to this is that waveform reconstructed from compressed information will never exactly match the original waveform.&lt;br /&gt;
&lt;br /&gt;
== Does Lossy Encoding Preserve Surround Information? ==&lt;br /&gt;
Depending on the encoder and settings, degradation of surround imaging may happen. Use higher [[bitrate]] to prevent this from happening. Mid/Side stereo of [[LAME]] or [[Advanced Audio Coding|AAC]] does not destroy surround information. Also [[Musepack|MPC]] preserves surround information with standard settings reasonably well. The lower the [[bitrate]], the worse you can expect the surround imaging become.&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?act=ST&amp;amp;f=15&amp;amp;t=4639 More discussion]&lt;br /&gt;
&lt;br /&gt;
== List of common lossy formats ==&lt;br /&gt;
* [[Advanced Audio Coding]] (AAC, also improperly known as [[MP4]] or [[M4A]])&lt;br /&gt;
* [[AC3]]&lt;br /&gt;
* [[ATRAC3]]&lt;br /&gt;
* [[DTS]]&lt;br /&gt;
* [[MP2]]&lt;br /&gt;
* [[MP3]]&lt;br /&gt;
* [[Musepack]] (also known as MPC, formerly known as MPEGplus or MP+)&lt;br /&gt;
* [[Opus]]&lt;br /&gt;
* (Ogg) [[Vorbis]]&lt;br /&gt;
* [[QDesign]]&lt;br /&gt;
* [[Speex]] (speech only)&lt;br /&gt;
* [[VQF]]&lt;br /&gt;
* [[Windows Media Audio]] (WMA)&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Choosing the best codec]]&lt;br /&gt;
* [[Lossless]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Codecs|*]]&lt;/div&gt;</summary>
		<author><name>82.246.177.235</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Lossless&amp;diff=27102</id>
		<title>Lossless</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Lossless&amp;diff=27102"/>
		<updated>2016-12-15T02:48:14Z</updated>

		<summary type="html">&lt;p&gt;82.246.177.235: sort at the top of :Category:Codecs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compression is &#039;&#039;&#039;lossless&#039;&#039;&#039; when decoding the compressed data gives a result which is identical bit-by-bit to the uncompressed original.&lt;br /&gt;
&lt;br /&gt;
Generic file compression formats, like ZIP or RAR, are lossless. However, trying to compress raw audio with those generally results in files which are only slightly- if at all- smaller than the originals. Lossless audio formats take advantage of knowledge about real-world audio data to provide compression ratios averaging around 50% on most music.&lt;br /&gt;
&lt;br /&gt;
[[Lossy]] encoders only attempt to approximate the sound of the original waveform rather than preserving all the information present in it. Losslessly compressed audio will therefore unavoidably be larger than audio compressed with any reasonable [[lossy]] encoder. However, this disadvantage is offset by lossless files&#039; ability to be [[transcoding|transcoded]] to other lossless formats without any quality degradation.&lt;br /&gt;
&lt;br /&gt;
== Popular lossless formats ==&lt;br /&gt;
* [[Apple Lossless]] ([[ALAC]])&lt;br /&gt;
* [[Free Lossless Audio Codec]] (FLAC)&lt;br /&gt;
* [[Lossless Audio]] (LA)&lt;br /&gt;
* [[Lossless Predictive Audio Compression]] (LPAC)&lt;br /&gt;
* [[Meridian Lossless Packing]] (MLP)&lt;br /&gt;
* [[Monkey&#039;s Audio]] (APE)&lt;br /&gt;
* [[OptimFROG]]&lt;br /&gt;
* [[RK Audio]] (RKAU)&lt;br /&gt;
* [[Shorten]] (SHN)&lt;br /&gt;
* [[TAK]]&lt;br /&gt;
* [[TTA]]&lt;br /&gt;
* [[WavPack]]&lt;br /&gt;
* [[Windows Media Audio|WMA lossless]]&lt;br /&gt;
&lt;br /&gt;
== Oddball Formats ==&lt;br /&gt;
There are several old lossless formats that aren&#039;t really deserving of having an article all for themselves. Reasons are: lack of widespread support, lack of features, bad efficiency and, most importantly, it seems no one is really interested in them.&lt;br /&gt;
&lt;br /&gt;
Most of those would have disappeared by now, but they are being preserved for posterity at [[User:Rjamorim|rjamorim]]&#039;s  &lt;br /&gt;
&lt;br /&gt;
* Advanced Digital Audio (ADA)&lt;br /&gt;
* Marian&#039;s a-Pac&lt;br /&gt;
* AudioZip&lt;br /&gt;
* Dakx WAV&lt;br /&gt;
* Entis Lab MIO&lt;br /&gt;
* LiteWave&lt;br /&gt;
* Pegasus SPS&lt;br /&gt;
* RKaudio&lt;br /&gt;
* Split2000&lt;br /&gt;
* Sonarc&lt;br /&gt;
* VocPack&lt;br /&gt;
* WavArc&lt;br /&gt;
* WaveZip/MUSICompress&lt;br /&gt;
 &lt;br /&gt;
Note that currently &#039;&#039;&#039;no single format can be considered best for all applications&#039;&#039;&#039;. Rather, the best format depends on the &#039;&#039;intended use&#039;&#039;, as well as a number of other factors (such as licensing and file structure). For example, Shorten and FLAC are widely used for sharing live music because of their cross-platform support and speed. Monkey&#039;s Audio is popular among Windows users for its superior compression ratio.&lt;br /&gt;
&lt;br /&gt;
== Comparisons ==&lt;br /&gt;
&#039;&#039;Note the specific assumptions and limitations of each comparison; in particular, results are sensitive to the music selected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; [[Lossless comparison]] : A comparision focusing more on codec features and less on absolute encoding efficiency. Also features a table comparing most popular codecs based on their features.&lt;br /&gt;
&lt;br /&gt;
* Lossless audio formats [http://www.bobulous.org.uk/misc/lossless_audio_2006.html here] - A comparison of the rip-and-encode speed and album file size of six different lossless formats: [[WAV|uncompressed Wave]], [[FLAC]], [[WavPack]], [[SHN|Shorten]], [[APE|Monkey&#039;s Audio]], and [[OptimFROG]]. First published on 22nd May 2006.&lt;br /&gt;
&lt;br /&gt;
[[Category:Codecs|*]]&lt;/div&gt;</summary>
		<author><name>82.246.177.235</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Template:Codec_Infobox&amp;diff=27101</id>
		<title>Template:Codec Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Template:Codec_Infobox&amp;diff=27101"/>
		<updated>2016-12-15T02:36:22Z</updated>

		<summary type="html">&lt;p&gt;82.246.177.235: :Category:Lossless codecs and :Category:Lossy codecs have been removed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot; style=&amp;quot;padding-left: 15px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; style=&amp;quot;width: 24em; font-size: 90%; text-align: left; border:1px solid; background: rgb(250,250,255);&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;font-size: 130%; font-weight: bold;&amp;quot; | {{{name}}}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center; font-size: 80%; font-weight: normal;&amp;quot; | {{{logo}}}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center; font-size: 80%; font-weight: normal;&amp;quot; | {{{purpose}}}&lt;br /&gt;
|- style=&amp;quot;text-align:left; font-weight:bold;&amp;quot;&lt;br /&gt;
| Type: || [[{{{type}}}]]&lt;br /&gt;
|- style=&amp;quot;text-align:left; font-weight:bold;&amp;quot;&lt;br /&gt;
| Developer: || {{{maintainer}}}&lt;br /&gt;
|- style=&amp;quot;text-align:left; font-weight:bold;&amp;quot;&lt;br /&gt;
| Recommended encoder: || [[{{{recommended_encoder}}}|{{{recommended_text|{{{recommended_encoder}}}}}}]]&lt;br /&gt;
|- style=&amp;quot;text-align:left; font-weight:bold;&amp;quot;&lt;br /&gt;
| Website: || {{{website}}}&lt;br /&gt;
|}&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
{| style=&amp;quot;background: transparent;&amp;quot;&lt;br /&gt;
|&amp;lt;pre&amp;gt;{{Codec Infobox&lt;br /&gt;
| name = &lt;br /&gt;
| logo = &lt;br /&gt;
| type = &lt;br /&gt;
| purpose = &lt;br /&gt;
| maintainer = &lt;br /&gt;
| recommended_encoder = &lt;br /&gt;
| recommended_text =&lt;br /&gt;
| website = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;website&#039;&#039;&#039; field: If the URL is too long, enclose it in the WikiLink syntax, i.e. &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&amp;lt;font style=&amp;quot;color:#ccccff;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;http://www.somewhere.net/&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt; Click Here]&amp;lt;/code&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; field: Either &amp;quot;Lossy&amp;quot; or &amp;quot;Lossless&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;recommended_text&#039;&#039;&#039; field: optional, display name for recommended codec&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>82.246.177.235</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Vorbis_Comment&amp;diff=27093</id>
		<title>Vorbis Comment</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Vorbis_Comment&amp;diff=27093"/>
		<updated>2016-12-03T10:26:28Z</updated>

		<summary type="html">&lt;p&gt;82.246.177.235: add &amp;quot;DATE&amp;quot; because this one is important to keep in mind, it has to be used instead of &amp;quot;YEAR&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorbis Comment&#039;&#039;&#039; is a [[metadata]] format, similar to [[ID3]] and [[APE tags]], specified by Xiph.org for use with (Ogg) [[Vorbis]] and [[Free Lossless Audio Codec|FLAC]].&lt;br /&gt;
&lt;br /&gt;
It is a relatively simple format that allows the user to specify arbitrary fieldname/value pairs, using &#039;&#039;&#039;UTF-8&#039;&#039;&#039; Unicode as the character encoding.&lt;br /&gt;
&lt;br /&gt;
To avoid incompatibilities between tags some standard fieldnames are suggested by the Vorbis Comment specification (TITLE, VERSION, ALBUM, ARTIST, TRACKNUMBER, DATE, etc.). Every fieldname is allowed and there is no obligatory format for values. One Fieldnames can be used several times. In contrast to [[ID3]] it is a it&#039;s quite free of regulations.&lt;br /&gt;
&lt;br /&gt;
Several unofficial efforts have been made as proposals and recommendations for Vorbis Comment specification. These documents are available on Web, first one is called [http://web.archive.org/web/20040401200215/reactor-core.org/ogg-tag-recommendations.html Ogg Vorbis Comment Field Recommendations] and second one is called:[http://web.archive.org/web/20101021085402/http://reallylongword.org/vorbiscomment/ Proposals for extending Ogg Vorbis comments].&lt;br /&gt;
&lt;br /&gt;
== Used by ==&lt;br /&gt;
* (Ogg) [[Vorbis]]&lt;br /&gt;
* [[Free Lossless Audio Codec]] (FLAC)&lt;br /&gt;
* [[Speex]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.xiph.org/vorbis/doc/v-comment.html official specifications]&lt;br /&gt;
&lt;br /&gt;
[[Category:Metadata]]&lt;/div&gt;</summary>
		<author><name>82.246.177.235</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=WavPack&amp;diff=27092</id>
		<title>WavPack</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=WavPack&amp;diff=27092"/>
		<updated>2016-12-03T02:56:31Z</updated>

		<summary type="html">&lt;p&gt;82.246.177.235: /* History */ &amp;quot;recently&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = WavPack&lt;br /&gt;
| logo = [[Image:Wavpacklogo.png|280px|Official WavPack logo]]&lt;br /&gt;
| screenshot =&lt;br /&gt;
| caption = Hybrid Lossless Audio Compression&lt;br /&gt;
| maintainer = David Bryant&lt;br /&gt;
| stable_release = 4.80.0 (28. March 2016)&lt;br /&gt;
| preview_release = [https://hydrogenaud.io/index.php/topic,111822.0.html 5.0.0] (4. May 2016)&lt;br /&gt;
| operating_system = Windows, Mac OS/X, Linux/BSD/Unix&lt;br /&gt;
| use = Encoder/Decoder&lt;br /&gt;
| license = BSD license&lt;br /&gt;
| website = http://www.wavpack.com/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WavPack&#039;&#039;&#039; is a royalty-free, open source and [[lossless]] or high-quality lossy (in &amp;quot;hybrid&amp;quot; mode) audio compression format developed by David Bryant.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
WavPack (pronounced &amp;quot;wave-pack&amp;quot;) allows users to compress (and restore) all [[PCM]] audio formats including 8, 16, and 24-bit ints; 32-bit floats; [[mono]], [[stereo]], and [[multichannel]]; [[sampling rate]]s from 6 to 192 kHz. Like other lossless compression schemes the data reduction varies with the source, but it is generally between 25 % and 50 % for typical popular music and somewhat better than that for classical music and other sources with greater dynamic range.&lt;br /&gt;
&lt;br /&gt;
WavPack also incorporates a unique &amp;quot;hybrid&amp;quot; mode that provides all the advantages of lossless compression with an additional bonus. Instead of creating a single file, this mode creates both a relatively small, high-quality lossy file that can be used all by itself, and a &amp;quot;correction&amp;quot; file that (when combined with the lossy file) provides full lossless restoration. For some users this means never having to choose between lossless and lossy compression!&lt;br /&gt;
&lt;br /&gt;
== Feature Summary ==&lt;br /&gt;
* Fast and efficient encoding and decoding&lt;br /&gt;
* [[Open source]], released under a BSDish license&lt;br /&gt;
* Multiplatform&lt;br /&gt;
* Hardware support&lt;br /&gt;
* Error robustness&lt;br /&gt;
* Streaming support&lt;br /&gt;
* Supports multichannel audio and high resolutions&lt;br /&gt;
* Hybrid/lossy mode&lt;br /&gt;
* Tagging support ([[ID3v1]], [[APE tags]])&lt;br /&gt;
* Supports [[RIFF]] chunks&lt;br /&gt;
* Supports embedded CUE sheets&lt;br /&gt;
* Includes MD5 hashes for quick integrity checking&lt;br /&gt;
* Ability to create self extracting files for Win32 platform&lt;br /&gt;
* [[ReplayGain]] compatible&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
David Bryant started development on WavPack in mid-1998, with the release of version 1.0. This first version compressed and decompressed audio losslessly, nothing else, but by then it already featured one of the best efficiency versus speed ratio among lossless encoders.&lt;br /&gt;
&lt;br /&gt;
Very soon after the release of version 1.0, Bryant released v. 2.0, which featured lossy encoding (using only quantization for data reduction – no psychoacoustic process was applied to the stream).&lt;br /&gt;
&lt;br /&gt;
In 1999, the developer released version 3.0, which featured novelties such as a fast mode (with reduced compression ratio), compression of RAW files and error detection using CRC checksums.&lt;br /&gt;
&lt;br /&gt;
WavPack development is still going on, and a major feature added in late 3.x versions is the hybrid mode, where the encoder generates a lossy file + a correction file, so that both can be decompressed back to the original PCM stream.&lt;br /&gt;
&lt;br /&gt;
WavPack 4 has been released in 2004. It included important changes, such as fast seeking, multichannel support, high resolution audio support, etc. turning it into one of the most full featured and modern lossless audio compressors.&lt;br /&gt;
&lt;br /&gt;
== Software support ==&lt;br /&gt;
=== Players ===&lt;br /&gt;
* NullSoft [[Winamp]] (plugin with ReplayGain &amp;amp; Media Library support) and Winamp-compatible players&lt;br /&gt;
* [[foobar2000]] Advanced Audio Player (official encoding/decoding addon, with ReplayGain &amp;amp; Cuesheets support)&lt;br /&gt;
* [http://www.vuplayer.com/vuplayer.php VUPlayer] (official plugin, supports encoding)&lt;br /&gt;
* [[Windows Media Player]] and other directshow-based players (MPC, TCMP, RadLight) (with [http://www.hydrogenaudio.org/forums/index.php?showtopic=103693 CoreWavPack] directshow filter)&lt;br /&gt;
* [http://www.un4seen.com/xmplay.html XMplay] (official plugin)&lt;br /&gt;
* [http://cogosx.sourceforge.net/ Cog] Audio player for MacOS X.&lt;br /&gt;
* [[XMMS]] (with Kuniklo&#039;s plugin)&lt;br /&gt;
* [http://fondriest.frederic.free.fr/realisations/lamip/ LAMIP] (official plugin)&lt;br /&gt;
* [http://mpxplay.sourceforge.net/ MPXplay] for DOS!&lt;br /&gt;
* [http://aqualung.sourceforge.net/ Aqualung] for GNU/Linux&lt;br /&gt;
* [http://www.videolan.org/vlc/download-windows.html VLC Player]&lt;br /&gt;
* Cowon [http://www.jetaudio.com/ JetAudio Player]&lt;br /&gt;
&lt;br /&gt;
=== Frontends ===&lt;br /&gt;
* Custom Windows [http://www.wavpack.com/WavPack_frontend.zip WavPack frontend] (by Speekenbrink)&lt;br /&gt;
&lt;br /&gt;
=== Converters ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;Several players, like Cowon JetAudio, foobar2000 and VUplayer, can also convert from other formats to WavPack!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.dbpoweramp.com/ dBpowerAMP] Music Converter / Audio Player / CD Writer (official addon)&lt;br /&gt;
* [http://www.easeaudioconverter.com/wavpack.htm Ease Audio Converter] (Shareware / NOT Freeware)&lt;br /&gt;
* [http://media.io/ Online Audio Converter]&lt;br /&gt;
&lt;br /&gt;
=== Editors ===&lt;br /&gt;
* [[Adobe Audition]] and Cool Edit (filter with 32-bit floats &amp;amp; extra info save support)&lt;br /&gt;
&lt;br /&gt;
=== CD writers/rippers ===&lt;br /&gt;
* [http://www.nero.com/eng/ Nero]&lt;br /&gt;
* [[Exact Audio Copy]] CD Ripper&lt;br /&gt;
* [http://cdexos.sourceforge.net CDex] CD ripper&lt;br /&gt;
* Cowon [http://www.jetaudio.com/ JetAudio Player]&lt;br /&gt;
&lt;br /&gt;
=== Taggers ===&lt;br /&gt;
* [http://www.mp3tag.de/en/index.html Mp3tag] Universal Tag Editor&lt;br /&gt;
* [http://www.jtclipper.eu/thegodfather/ The GodFather] Tagger / Music manager&lt;br /&gt;
* [[Tag.exe|Case&#039;s Tag]] command line tagger&lt;br /&gt;
&lt;br /&gt;
=== Other tools ===&lt;br /&gt;
* [http://mr-questionman.en.uptodown.com/windows Mr. QuestionMan]&lt;br /&gt;
* [http://www.bunkus.org/videotools/mkvtoolnix/ mkvtoolnix] – tool to multiplex WavPack streams inside the Matroska container&lt;br /&gt;
&#039;&#039;It&#039;s worth mentioning the [[Matroska]] guys decided to concentrate on WavPack as the lossless compressor of choice for their container. Quite an honor... :-)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt;[http://www.wavpack.com/#Software WavPack Software Section]&lt;br /&gt;
&lt;br /&gt;
== Hardware Support ==&lt;br /&gt;
* iRiver iHP-120/iHP-140 with the open source [http://www.rockbox.org Rockbox firmware]&lt;br /&gt;
* Roku PhotoBridge HD (with [http://www.wavpack.com/downloads.html#binaries plugin])&lt;br /&gt;
-&amp;gt;[http://www.wavpack.com/index.html#Hardware WavPack Hardware Section]&lt;br /&gt;
&lt;br /&gt;
== Technology description ==&lt;br /&gt;
To ensure high-speed operation, WavPack uses a very simple predictor that is implemented entirely in integer math. In its &amp;quot;fast&amp;quot; mode the prediction is simply the arithmetic extrapolation of the previous two samples. For example, if the previous two samples were -10 and 20, then the prediction would be 50. For the default mode a simple adaptive factor is added to weigh the influence of the earlier sample on the prediction. In our example the resulting prediction could then vary between 20 for no influence to 50 for full influence. This weight factor is constantly updated based on the audio data&#039;s changing spectral characteristics, which is why it is called &amp;quot;adaptive&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The prediction generated is then subtracted from the actual sample to be encoded to generate the error value. In mono mode this value is sent directly to the coder. However, stereo signals tend to have some correlation between the two channels that can be further exploited. Therefore, two error values are calculated that represent the difference and average of the left and right error values. In the &amp;quot;fast&amp;quot; mode of operation these two new values are simply sent to the coder instead of the left and right values. In the default mode, the difference value is always sent to the coder along with one of the other three values (average, left, or right). An adaptive algorithm continuously determines the most efficient of the three to send based on the changing balance of the channels.&lt;br /&gt;
&lt;br /&gt;
The developer has developed a unique data encoder for WavPack that he believes is better than Rice coding in two different areas. It is impossible to encode more efficiently than Rice coding because it represents the optimal bit coding (sometimes known as the Huffman code) for this type of data. WavPack&#039;s encoder is slightly less efficient than this, but only by about 0.15 bits/sample (or less than 1% for 16-bit data). The first advantage of WavPack&#039;s coder is that it does not require the data to be buffered ahead of encoding, instead it converts each sample directly to bitcodes. This is more computationally efficient and it is better in some applications where coding delay is critical. The second advantage is that it is easily adaptable to lossy encoding because all significant bits (except the implied &amp;quot;one&amp;quot; MSB) are transmitted directly. In this way it is possible to only transmit, for example, the 3 most significant bits (with sign) of each sample. In fact, it is possible to transmit only the sign and implied MSB for each sample with an average of only 3.65 bits/sample.&lt;br /&gt;
&lt;br /&gt;
This coding scheme is used to implement the &amp;quot;lossy&amp;quot; mode of WavPack. In the &amp;quot;fast&amp;quot; mode the output of the non-adaptive decorrelator is simply rounded to the nearest codable value for the specified number of bits. In the default mode the adaptive decorrelator is used (which reduces the average noise about 1 dB) and also both the current and the next sample are considered in choosing the better of the two available codes (which reduces noise another 1 dB).&lt;br /&gt;
&lt;br /&gt;
The developer has decided to not use any floating-point arithmetic in WavPack&#039;s data path because he believes that integer operations are less susceptible to subtle chip to chip variations that could corrupt the lossless nature of the compression, the Pentium floating point bug being a blatant example of this. It is possible that a lossless compressor that used floating-point math could generate different output when running on that faulty Pentium. Even disregarding actual bugs, floating-point math is complicated enough that there could be subtle differences between &amp;quot;correct&amp;quot; implementations that could cause trouble for this type of application. To further ensure confidence in the integrity of WavPack&#039;s compression, the encoder includes a 32-bit error detection code to the generated streams.&lt;br /&gt;
&lt;br /&gt;
WavPack source code is very portable. It has been compiled on several Unices (Linux, Mac OS X, Solaris, FreeBSD, OpenBSD, NetBSD, Compaq Tru64, HP-UX...) as well as Windows, DOS and OpenVMS. It works on architectures such as x86, ARM, PowerPC, SPARC, DEC Alpha, PA-RISC, MIPS, Motorola 68k...&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.wavpack.com/ Official website]&lt;br /&gt;
* [http://www.rarewares.org/lossless.html Unofficial multiplatform versions] at RareWares&lt;br /&gt;
* [[Lossless_comparison|Lossless Codec Comparison]]&lt;br /&gt;
* [[EAC_and_WavPack | Configuring EAC and WavPack]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Codecs]]&lt;br /&gt;
[[Category:Lossless]]&lt;/div&gt;</summary>
		<author><name>82.246.177.235</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=27057</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=27057"/>
		<updated>2016-09-29T20:27:09Z</updated>

		<summary type="html">&lt;p&gt;82.246.177.235: /* String functions */ fix sorting of $substr()&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k}}&lt;br /&gt;
This article contains information about built-in title formatting functions and field references, plus additional documentation about fields and functions which can only be used in specific components or which are provided by specific components.&lt;br /&gt;
&lt;br /&gt;
Please see [[Foobar2000:Title Formatting Introduction|Title Formatting Introduction]] for a general overview of title format syntax and its basic rules. The article [[foobar2000:Titleformat Examples|Titleformat Examples]] offers user-submitted examples of code for specific purposes; feel free to add your own if you think it can be of use to others.&lt;br /&gt;
&lt;br /&gt;
For details of the query syntax, which uses some of these fields to find files for playlists, etc., see the [[Foobar2000:Query_syntax|Query Syntax]] article.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
A title formatting script consists of any combination of literal text, field references, function calls, comments, and line break characters. The script always outputs a text string (which can be empty).&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;comment&#039;&#039;&#039; is a line starting with two slashes, e.g. &#039;&#039;// this is a comment&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;field reference&#039;&#039;&#039; is a field name enclosed in percent signs, for example &#039;&#039;%artist%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;function call&#039;&#039;&#039; 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 commas, for example &#039;&#039;$abbr(%artist%)&#039;&#039;. A parameter can be literal text, a field reference, or another function call. 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;
Any other text is &#039;&#039;&#039;literal text&#039;&#039;&#039;. In literal text, the character &#039;&#039;%&#039;&#039;, &#039;&#039;$&#039;&#039;, &#039;&#039;[&#039;&#039;, &#039;&#039;]&#039;&#039;, or &#039;&#039;&amp;amp;apos;&#039;&#039; (apostrophe/single quote) must be escaped by enclosing it in &#039;&#039;&amp;amp;apos;&#039;&#039; (apostrophe/single quote) characters. For example, &#039;&#039;&amp;amp;apos;[&amp;amp;apos;&#039;&#039; (a left bracket in single quotes) results in a literal &#039;&#039;[&#039;&#039; (left bracket). As a special case, &#039;&#039;&amp;amp;apos;&amp;amp;apos;&#039;&#039; (two single quotes in a row) results in one single quote. In the playlist, &#039;&#039;&amp;amp;lt;&#039;&#039; and &#039;&#039;&amp;gt;&#039;&#039; are also special; see [[#Dimmed and highlighted text]].&lt;br /&gt;
&lt;br /&gt;
When the script is evaluated, the output string is assembled by evaluating the function parameters, function calls, and field references. Comments and line break characters (CR and LF/newline) are ignored; to output a line break, use &#039;&#039;$crlf()&#039;&#039;. Each field reference becomes the field&#039;s value, as a string. Each function becomes a string or number, and/or a truth value (not output) which can be used by another function.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: the interface for entering custom columns and grouping schemes for the Default UI playlist does not support line breaks; scripts must be written all on one line, without comments.&#039;&#039;&#039;&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. Decimal points are not supported. Examples:&lt;br /&gt;
* &#039;&#039;c3po&#039;&#039; → 0&lt;br /&gt;
* &#039;&#039;4.8&#039;&#039; → 4&lt;br /&gt;
* &#039;&#039;-12&#039;&#039; → -12&lt;br /&gt;
* &#039;&#039;- 12&#039;&#039; → 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; by &#039;&#039;b&#039;&#039; and rounds down to an integer. 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. Available only in sort-related contexts, such as the &#039;&#039;Edit → Sort → Sort by ...&#039;&#039; menu command.&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;
== Control flow functions ==&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(expr,else) ===&lt;br /&gt;
&lt;br /&gt;
Like &#039;&#039;$if(expr,expr,else)&#039;&#039; except that &#039;&#039;expr&#039;&#039; is only evaluated once. In other words, if expression &#039;&#039;expr&#039;&#039; is true, &#039;&#039;expr&#039;&#039; is returned, otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $if3(a1,a2,...,aN,else) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates arguments &#039;&#039;a1&#039;&#039; ... &#039;&#039;aN&#039;&#039;, until one is found that evaluates to &#039;&#039;true&#039;&#039;. If that happens, its value is returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifequal(int1,int2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;int1&#039;&#039; and &#039;&#039;int2&#039;&#039;, if &#039;&#039;int1&#039;&#039; is equal to &#039;&#039;int2&#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(int1,int2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;int1&#039;&#039; and &#039;&#039;int2&#039;&#039;, if &#039;&#039;int1&#039;&#039; is greater than &#039;&#039;int2&#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(str,n,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the length of the string &#039;&#039;str&#039;&#039; to the number &#039;&#039;n&#039;&#039;, if &#039;&#039;str&#039;&#039; is longer than &#039;&#039;n&#039;&#039; characters, 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;
== 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(str) ===&lt;br /&gt;
&lt;br /&gt;
Returns abbreviation of string &#039;&#039;str&#039;&#039;. Words which begin with an alphanumeric character are shortened to the first character. Spaces and parentheses are stripped. Example:&lt;br /&gt;
* $abbr(&#039;This is a Long Title (12-inch version) [needs tags]&#039;) → TiaLT1v[needst&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(str) ===&lt;br /&gt;
&lt;br /&gt;
Converts string &#039;&#039;str&#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(str) ===&lt;br /&gt;
&lt;br /&gt;
Converts string &#039;&#039;str&#039;&#039; to ASCII. Any characters that are not present in ASCII will be removed / replaced.&lt;br /&gt;
&lt;br /&gt;
=== $caps(str) ===&lt;br /&gt;
&lt;br /&gt;
Converts first letter in every word of string &#039;&#039;str&#039;&#039; to uppercase, and all other letters to lowercase.&lt;br /&gt;
&lt;br /&gt;
=== $caps2(str) ===&lt;br /&gt;
&lt;br /&gt;
Converts first letter in every word of string &#039;&#039;str&#039;&#039; to uppercase, and leaves all other letters as they are.&lt;br /&gt;
&lt;br /&gt;
=== $char(x) ===&lt;br /&gt;
&lt;br /&gt;
Returns Unicode character of &#039;&#039;x&#039;&#039;. You can search for characters and find the matching decimal number on this [http://www.fileformat.info/info/unicode/char/search.htm site].&lt;br /&gt;
&lt;br /&gt;
=== $crc32(str) ===&lt;br /&gt;
&lt;br /&gt;
Computes the CRC32 of the string &#039;&#039;str&#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(str,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns first &#039;&#039;len&#039;&#039; characters from the left of the string &#039;&#039;str&#039;&#039;. This function is the same as $left(a,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* &#039;&#039;$cut(&#039;abc123&#039;,3)&#039;&#039; → abc&lt;br /&gt;
* &#039;&#039;$cut(&#039;abc123&#039;,0)&#039;&#039; → (nothing)&lt;br /&gt;
* &#039;&#039;$cut(&#039;abc123&#039;,-1)&#039;&#039; → abc123&lt;br /&gt;
&lt;br /&gt;
=== $directory(path) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory name from the file &#039;&#039;path&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $directory(path,n) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory name from the file &#039;&#039;path&#039;&#039;; goes up by &#039;&#039;n&#039;&#039; levels.&lt;br /&gt;
&lt;br /&gt;
=== $directory_path(path) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory path from the file &#039;&#039;path&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $ext(path) ===&lt;br /&gt;
&lt;br /&gt;
Extracts file extension from string &#039;&#039;path&#039;&#039;; a file name or full path.&lt;br /&gt;
&lt;br /&gt;
=== $filename(path) ===&lt;br /&gt;
&lt;br /&gt;
Extracts file name from full &#039;&#039;path&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $fix_eol(str) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;str&#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;str&#039;&#039; is returned unaltered.&lt;br /&gt;
&lt;br /&gt;
=== $fix_eol(str,indicator) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;str&#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;str&#039;&#039; is returned unaltered.&lt;br /&gt;
&lt;br /&gt;
=== $hex(int) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;int&#039;&#039; in hexadecimal notation.&lt;br /&gt;
&lt;br /&gt;
=== $hex(int,len) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;int&#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(str,insert,n) ===&lt;br /&gt;
&lt;br /&gt;
Inserts &#039;&#039;insert&#039;&#039; into &#039;&#039;str&#039;&#039; after &#039;&#039;n&#039;&#039; characters.&lt;br /&gt;
&lt;br /&gt;
=== $left(str,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns first &#039;&#039;len&#039;&#039; characters from the left of the string &#039;&#039;str&#039;&#039;. This function is the same as $cut(str,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* &#039;&#039;$left(&#039;abc123&#039;,3)&#039;&#039; → abc&lt;br /&gt;
* &#039;&#039;$left(&#039;abc123&#039;,0)&#039;&#039; → (nothing)&lt;br /&gt;
* &#039;&#039;$left(&#039;abc123&#039;,-1)&#039;&#039; → abc123&lt;br /&gt;
&lt;br /&gt;
=== $len(str) ===&lt;br /&gt;
&lt;br /&gt;
Returns length of string &#039;&#039;str&#039;&#039; in characters.&lt;br /&gt;
&lt;br /&gt;
=== $len2(str) ===&lt;br /&gt;
&lt;br /&gt;
Returns length of string &#039;&#039;str&#039;&#039; in characters, respecting double-width character rules (double-width characters will be counted as two).&lt;br /&gt;
&lt;br /&gt;
=== $longer(str1,str2) ===&lt;br /&gt;
&lt;br /&gt;
Returns &#039;&#039;true&#039;&#039;, if string &#039;&#039;str1&#039;&#039; is longer than string &#039;&#039;str2&#039;&#039;, false otherwise.&lt;br /&gt;
&lt;br /&gt;
=== $lower(str) ===&lt;br /&gt;
&lt;br /&gt;
Converts string &#039;&#039;str&#039;&#039; to lowercase.&lt;br /&gt;
&lt;br /&gt;
=== $longest(arg,...) ===&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(int,len) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;int&#039;&#039; in decimal notation with &#039;&#039;len&#039;&#039; characters. Pads with zeros from the left if necessary. &#039;&#039;len&#039;&#039; includes the dash when the number is negative. If &#039;&#039;n&#039;&#039; is not numeric, it is treated as zero. Examples:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;$num(123,5)&#039;&#039; → 00123&lt;br /&gt;
* &#039;&#039;$num(-123,5)&#039;&#039; → -0123&lt;br /&gt;
* &#039;&#039;$num(4.8,5)&#039;&#039; → 00004&lt;br /&gt;
* &#039;&#039;$num(A1,5)&#039;&#039; → 00000&lt;br /&gt;
&lt;br /&gt;
=== $pad(str,len) ===&lt;br /&gt;
&lt;br /&gt;
Creates a left-aligned version of the string &#039;&#039;str&#039;&#039;. If &#039;&#039;x&#039;&#039; is shorter than &#039;&#039;len&#039;&#039; characters, the function adds spaces to the right of &#039;&#039;str&#039;&#039; to make the result &#039;&#039;len&#039;&#039; characters long. Otherwise the function returns &#039;&#039;str&#039;&#039; unchanged.&lt;br /&gt;
&lt;br /&gt;
=== $pad_right(str,len) ===&lt;br /&gt;
&lt;br /&gt;
Creates a right-aligned version of the string &#039;&#039;str&#039;&#039;. If &#039;&#039;str&#039;&#039; is shorter than &#039;&#039;len&#039;&#039; characters, the function adds spaces to the left of &#039;&#039;str&#039;&#039; to make the result &#039;&#039;len&#039;&#039; characters long. Otherwise the function returns &#039;&#039;str&#039;&#039; unchanged.&lt;br /&gt;
&lt;br /&gt;
=== $pad(str,len,char) ===&lt;br /&gt;
&lt;br /&gt;
Creates a left-aligned version of the string &#039;&#039;str&#039;&#039;. If &#039;&#039;str&#039;&#039; is shorter than &#039;&#039;len&#039;&#039; characters, the function adds &#039;&#039;char&#039;&#039; to the right of &#039;&#039;str&#039;&#039; to make the result &#039;&#039;len&#039;&#039; characters long. Otherwise the function returns &#039;&#039;str&#039;&#039; unchanged.&lt;br /&gt;
&lt;br /&gt;
=== $pad_right(str,len,char) ===&lt;br /&gt;
&lt;br /&gt;
Creates a right-aligned version of the string &#039;&#039;str&#039;&#039;. If &#039;&#039;str&#039;&#039; is shorter than &#039;&#039;len&#039;&#039; characters, the function adds &#039;&#039;char&#039;&#039; to the left of &#039;&#039;str&#039;&#039; to make the result &#039;&#039;len&#039;&#039; characters long. Otherwise the function returns &#039;&#039;str&#039;&#039; unchanged.&lt;br /&gt;
&lt;br /&gt;
=== $padcut(str,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns first &#039;&#039;len&#039;&#039; characters from the left of &#039;&#039;str&#039;&#039;, if &#039;&#039;str&#039;&#039; is longer than &#039;&#039;len&#039;&#039; characters. Otherwise adds spaces to the right of &#039;&#039;str&#039;&#039; to make the result &#039;&#039;len&#039;&#039; characters long.&lt;br /&gt;
&lt;br /&gt;
=== $padcut_right(str,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns first &#039;&#039;len&#039;&#039; characters from the left of &#039;&#039;str&#039;&#039;, if &#039;&#039;str&#039;&#039; is longer than &#039;&#039;len&#039;&#039; characters. Otherwise adds spaces to the left of &#039;&#039;str&#039;&#039; to make the result &#039;&#039;len&#039;&#039; characters long.&lt;br /&gt;
&lt;br /&gt;
=== $progress(pos,range,len,char1,char2) ===&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;char1&#039;&#039; and &#039;&#039;char2&#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,char1,char2) ===&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;char1&#039;&#039; and &#039;&#039;char2&#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(expr,count) ===&lt;br /&gt;
&lt;br /&gt;
Returns &#039;&#039;count&#039;&#039; copies of &#039;&#039;expr&#039;&#039;. Note that &#039;&#039;expr&#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(str,search,replace) ===&lt;br /&gt;
&lt;br /&gt;
Replaces all occurrences of string &#039;&#039;search&#039;&#039; in string &#039;&#039;str&#039;&#039; with string &#039;&#039;replace&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Can also be used with an arbitrary number of arguments. Note that &#039;&#039;$replace(str,search1,replace1,search2,replace2)&#039;&#039; is generally not the same as &#039;&#039;$replace($replace(srt,search1,replace1),search2,replace2)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$replace(ab,a,b,b,c)&#039;&#039; → &amp;quot;bc&amp;quot;, &#039;&#039;$replace($replace(ab,a,b),b,c)&#039;&#039; → &amp;quot;cc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== $right(str,len) ===&lt;br /&gt;
&lt;br /&gt;
Returns the first &#039;&#039;len&#039;&#039; characters from the right of string &#039;&#039;str&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $roman(int) ===&lt;br /&gt;
&lt;br /&gt;
Formats the integer number &#039;&#039;int&#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;quot;sbbone2000&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== $shortest(str,...strN) ===&lt;br /&gt;
&lt;br /&gt;
Returns the first shortest element of its arguments. Can be used with an arbitrary number of strings.&lt;br /&gt;
&lt;br /&gt;
=== $strchr(str,char) ===&lt;br /&gt;
&lt;br /&gt;
Finds first occurence of character &#039;&#039;char&#039;&#039; in string &#039;&#039;str&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$strchr(abca,a)&#039;&#039; → 1&lt;br /&gt;
&lt;br /&gt;
=== $strrchr(str,char) ===&lt;br /&gt;
&lt;br /&gt;
Finds last occurence of character &#039;&#039;char&#039;&#039; in string &#039;&#039;str&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$strrchr(abca,a)&#039;&#039; → 4&lt;br /&gt;
&lt;br /&gt;
=== $strstr(str1,str2) ===&lt;br /&gt;
&lt;br /&gt;
Finds first occurence of string &#039;&#039;str2&#039;&#039; in string &#039;&#039;srt1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $strcmp(str1,str2) ===&lt;br /&gt;
&lt;br /&gt;
Performs a case-sensitive comparison of the strings &#039;&#039;str1&#039;&#039; and &#039;&#039;srt2&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $stricmp(str1,str2) ===&lt;br /&gt;
&lt;br /&gt;
Performs a case-insensitive comparison of the strings &#039;&#039;str1&#039;&#039; and &#039;&#039;str2&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== $stripprefix(str) ===&lt;br /&gt;
&lt;br /&gt;
Removes &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes from string &#039;&#039;str&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=== $stripprefix(str,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Removes the specified prefixes from string &#039;&#039;str&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=== $substr(str,from,to) ===&lt;br /&gt;
&lt;br /&gt;
Returns substring of string &#039;&#039;str&#039;&#039;, starting from &#039;&#039;FROM&#039;&#039;-th character and ending at &#039;&#039;TO&#039;&#039;-th character.&lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(str) ===&lt;br /&gt;
&lt;br /&gt;
Moves &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes to the end of string &#039;&#039;str&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(str,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Moves the specified prefixes to the end of string &#039;&#039;str&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=== $trim(str) ===&lt;br /&gt;
&lt;br /&gt;
Removes leading and trailing spaces from string &#039;&#039;str&#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(count) ===&lt;br /&gt;
&lt;br /&gt;
Inserts &#039;&#039;count&#039;&#039; tabulator characters.&lt;br /&gt;
&lt;br /&gt;
=== $upper(str) ===&lt;br /&gt;
&lt;br /&gt;
Converts string &#039;&#039;str&#039;&#039; to uppercase.&lt;br /&gt;
&lt;br /&gt;
== Track info fields and functions ==&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 fields and functions ===&lt;br /&gt;
&lt;br /&gt;
Generally, metadata from the files (whether in tags or a cue sheet) is mapped directly to a field which can be referenced case-insensitively. For example, the first tag named &#039;&#039;URL&#039;&#039; can be referenced as &#039;&#039;%url%&#039;&#039;, and the first standard comment tag can be referenced as &#039;&#039;%comment%&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The following functions are also available for accessing 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;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;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;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;$meta_sep(artist,&#039;, &#039;,&#039;, and &#039;)&#039;&#039; → &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; → 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; → 3&lt;br /&gt;
&lt;br /&gt;
=== Remapped metadata fields ===&lt;br /&gt;
&lt;br /&gt;
The following fields have special remapped values to make writing title format scripts more convenient:&lt;br /&gt;
&lt;br /&gt;
==== %album artist% ====&lt;br /&gt;
Name of the artist of the album specified track belongs to. Checks following metadata fields, in this order: &amp;quot;album artist&amp;quot;, &amp;quot;artist&amp;quot;, &amp;quot;composer&amp;quot;, &amp;quot;performer&amp;quot;. The difference between this and &#039;&#039;%artist%&#039;&#039; is that &#039;&#039;%album artist%&#039;&#039; is intended for use where consistent value across entire album is needed even when per-track artists values vary.&lt;br /&gt;
&lt;br /&gt;
==== %album% ====&lt;br /&gt;
Name of the album specified track belongs to. Checks following metadata fields, in this order: &amp;quot;album&amp;quot;, &amp;quot;venue&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== %artist% ====&lt;br /&gt;
Name of the artist of the track. Checks following metadata fields, in this order: &amp;quot;artist&amp;quot;, &amp;quot;album artist&amp;quot;, &amp;quot;composer&amp;quot;, &amp;quot;performer&amp;quot;. For a SHOUTcast stream which contains metadata, it is the StreamTitle up to the first &amp;quot;-&amp;quot; character.&lt;br /&gt;
&lt;br /&gt;
==== %discnumber% ====&lt;br /&gt;
Index of disc specified track belongs to, within the album. Available only when &amp;quot;discnumber&amp;quot;/&amp;quot;disc&amp;quot; field is present in track’s metadata.&lt;br /&gt;
&lt;br /&gt;
==== %totaldiscs% ====&lt;br /&gt;
Index of total discs specified tracks belong to, within the album. Available only when &amp;quot;discnumber&amp;quot;/&amp;quot;disc&amp;quot; field is present in track’s metadata.&lt;br /&gt;
&lt;br /&gt;
==== %track artist% ====&lt;br /&gt;
Name of the artist of the track; present only if &#039;&#039;%album artist%&#039;&#039; is different than &#039;&#039;%artist%&#039;&#039; for specific track. Intended for use together with &#039;&#039;%album artist%&#039;&#039;, to indicate track-specific artist info, e.g. &amp;quot;%album artist% - %title%[ &#039;//&#039; %track artist%]&amp;quot;. In this case, the last part will be displayed only when track-specific artist info is present.&lt;br /&gt;
&lt;br /&gt;
==== %title% ====&lt;br /&gt;
Title of the track. If &amp;quot;title&amp;quot; metadata field is missing, file name is used instead. For a SHOUTcast stream which contains metadata, it is the StreamTitle after the first &amp;quot;-&amp;quot; character.&lt;br /&gt;
&lt;br /&gt;
==== %tracknumber% ====&lt;br /&gt;
Two-digit index of specified track within the album. Available only when &amp;quot;tracknumber&amp;quot; field is present in track’s metadata. An extra &#039;0&#039; is placed in front of single digit track numbers (5 becomes 05).&lt;br /&gt;
&lt;br /&gt;
==== %track number% ====&lt;br /&gt;
Similar to %tracknumber%, however single digit track numbers are not reformatted to have an extra 0.&lt;br /&gt;
&lt;br /&gt;
=== Technical information fields ===&lt;br /&gt;
&lt;br /&gt;
==== %bitrate% ====&lt;br /&gt;
Bitrate of the track in kilobits per second. VBR files will show a dynamic display for currently played track (outside of the playlist).&lt;br /&gt;
&lt;br /&gt;
==== %channels% ====&lt;br /&gt;
Number of channels in the track, as text; either &amp;quot;mono&amp;quot;, &amp;quot;stereo&amp;quot; for 1 or 2 channels, respectively, otherwise a number followed by &amp;quot;ch&amp;quot;, e.g. &amp;quot;6ch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== %codec% ====&lt;br /&gt;
Name of codec used to encode the track, e.g. PCM, FLAC, MP3, or AAC. If exact codec name is not available, file extension is used. The Default UI&#039;s standard Codec column displays the same info, but sometimes adds details, e.g. &amp;quot;MP3 / VBR V2&amp;quot; or &amp;quot;AAC / LC&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== %filesize% ====&lt;br /&gt;
The exact file size in bytes.&lt;br /&gt;
Old version: &amp;lt;code&amp;gt;%_filesize%&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== %filesize_natural% ====&lt;br /&gt;
The approximate file size, automatically formatted in appropriate units such as megabytes or kilobytes, e.g. &amp;quot;8.49 MB&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== %length% ====&lt;br /&gt;
The length of the track formatted as hours, minutes, and seconds, rounded to the nearest second.&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;
The length of the track formatted as hours, minutes, seconds, and milliseconds, rounded to the nearest millisecond.&lt;br /&gt;
&lt;br /&gt;
==== %length_seconds% ====&lt;br /&gt;
The length of the track in seconds, rounded to the nearest second.&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;
The length of the track in seconds as a floating point number.&lt;br /&gt;
&lt;br /&gt;
==== %length_samples% ====&lt;br /&gt;
The length of the track in samples.&lt;br /&gt;
&lt;br /&gt;
==== %samplerate% ====&lt;br /&gt;
Sample rate of the track, in Hz.&lt;br /&gt;
&lt;br /&gt;
=== Technical information functions ===&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;
For convenience, the &#039;&#039;&#039;%__name%&#039;&#039;&#039; alias is also available.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$info(channels)&#039;&#039; → 2&lt;br /&gt;
&lt;br /&gt;
Here is an &#039;&#039;&#039;informative&#039;&#039;&#039; list of recognized fields. Some of these depend on the media file type being queried.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! field name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#CCF&amp;quot;|&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|codec&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Codec&#039;&#039;&#039; (&#039;&#039;e.g.&#039;&#039; MP3)&lt;br /&gt;
|-&lt;br /&gt;
|codec_profile&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Codec Profile&#039;&#039;&#039; (&#039;&#039;e.g.&#039;&#039; CBR)&lt;br /&gt;
|-&lt;br /&gt;
|samplerate&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Sample Rate&#039;&#039;&#039;, in hertz (&#039;&#039;e.g.&#039;&#039; 44100)&lt;br /&gt;
|-&lt;br /&gt;
|bitrate&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Bitrate&#039;&#039;&#039;, in kilobits per second (&#039;&#039;e.g.&#039;&#039; 320)&lt;br /&gt;
|-&lt;br /&gt;
|tool&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Tool&#039;&#039;&#039; used to produce the file, possibly guessed (&#039;&#039;e.g.&#039;&#039; LAME3.97)&lt;br /&gt;
|-&lt;br /&gt;
|encoding&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Encoding&#039;&#039;&#039; lossiness (&#039;&#039;e.g.&#039;&#039; lossy)&lt;br /&gt;
|-&lt;br /&gt;
|channels&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Channels&#039;&#039;&#039; count (&#039;&#039;e.g.&#039;&#039; 2 &amp;lt;nowiki&amp;gt;[for stereo]&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|channel_mode&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Channel Mode&#039;&#039;&#039;, description of channels (&#039;&#039;e.g.&#039;&#039; 3 front, 2 rear surround channels + LFE)&lt;br /&gt;
|-&lt;br /&gt;
|__bitspersample&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Bits Per Sample&#039;&#039;&#039; (&#039;&#039;e.g.&#039;&#039; 16)&lt;br /&gt;
|-&lt;br /&gt;
|tagtype&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Tag Type&#039;&#039;&#039;, comma-separated list of tag formats (&#039;&#039;e.g.&#039;&#039; id3v2|apev2)&lt;br /&gt;
|-&lt;br /&gt;
|cue_embedded&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Embedded Cuesheet&#039;&#039;&#039; presence (&#039;&#039;e.g.&#039;&#039; no &amp;lt;nowiki&amp;gt;[may be empty!]&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|md5&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Audio MD5&#039;&#039;&#039; hash, if container defines it (&#039;&#039;e.g.&#039;&#039; 1E24A910D91EF09A8CF403C9B6963961)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#CCF&amp;quot;|&#039;&#039;&#039;Other&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|ENC_DELAY&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|LAME proprietary MP3 &#039;&#039;&#039;enc_delay&#039;&#039;&#039; value for gapless playback (&#039;&#039;e.g.&#039;&#039; 576)&lt;br /&gt;
|-&lt;br /&gt;
|ENC_PADDING&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|LAME proprietary MP3 &#039;&#039;&#039;enc_padding&#039;&#039;&#039; value for gapless playback (&#039;&#039;e.g.&#039;&#039; 1536)&lt;br /&gt;
|-&lt;br /&gt;
|MP3_ACCURATE_LENGTH&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|MP3 duration (%length% etc.) takes into account LAME or iTunes gapless playback info (&#039;&#039;e.g.&#039;&#039; yes)*&lt;br /&gt;
|-&lt;br /&gt;
|MP3_STEREO_MODE&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|Stereo mode used in MP3 file (&#039;&#039;e.g.&#039;&#039; mono, stereo, joint stereo, etc.)&lt;br /&gt;
|-&lt;br /&gt;
|VERSION&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Version&#039;&#039;&#039; of tool (&#039;&#039;e.g.&#039;&#039; 3.99)&lt;br /&gt;
|-&lt;br /&gt;
|FLAGS&lt;br /&gt;
| style=&amp;quot;background-color:#EEF&amp;quot;|&#039;&#039;&#039;Flags&#039;&#039;&#039; of tool (&#039;&#039;e.g.&#039;&#039; 22)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 90%&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &#039;&#039;MP3_ACCURATE_LENGTH won&#039;t exist if gapless playback info isn&#039;t present or the file is not an MP3. The info can be in a LAME tag in the VBR header, or in an iTunSMPB ID3v2 comment tag. Gapless playback info is taken into account in .m4a files, but there&#039;s no special field to say so.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== $channels() ====&lt;br /&gt;
The number of channels in text format.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;$channels()&#039;&#039; → &amp;quot;stereo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== %replaygain_album_gain% ====&lt;br /&gt;
The ReplayGain album gain value.&lt;br /&gt;
&lt;br /&gt;
==== %replaygain_album_peak% ====&lt;br /&gt;
The ReplayGain album peak value.&lt;br /&gt;
&lt;br /&gt;
==== %replaygain_track_gain% ====&lt;br /&gt;
The ReplayGain track gain value.&lt;br /&gt;
&lt;br /&gt;
==== %replaygain_track_peak% ====&lt;br /&gt;
The ReplayGain track peak value.&lt;br /&gt;
&lt;br /&gt;
=== Special fields ===&lt;br /&gt;
&lt;br /&gt;
==== %filename% ====&lt;br /&gt;
The filename without directory and extension.&lt;br /&gt;
&lt;br /&gt;
==== %filename_ext% ====&lt;br /&gt;
The filename with extension, but without the directory.&lt;br /&gt;
&lt;br /&gt;
==== %directoryname% ====&lt;br /&gt;
The name of the parent directory only, not the complete path.&lt;br /&gt;
&lt;br /&gt;
==== %last_modified% ====&lt;br /&gt;
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;
The complete path, including the filename and extension.&lt;br /&gt;
&lt;br /&gt;
==== %_path_raw% ====&lt;br /&gt;
The path as URL including the protocol scheme.&lt;br /&gt;
&lt;br /&gt;
==== %subsong% ====&lt;br /&gt;
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;
==== %_foobar2000_version% ====&lt;br /&gt;
A string representing the version of foobar2000.&lt;br /&gt;
&lt;br /&gt;
== Time and date functions ==&lt;br /&gt;
&lt;br /&gt;
These functions are used to manipulate time/date strings, notably (but not limited to), [[Foobar2000:Titleformat_Playback_Statistics|those gathered]] by the [[Foobar2000:Components/Playback Statistics v3.x (foo playcount)|Playback Statistics component]].&lt;br /&gt;
&lt;br /&gt;
=== $year(time) ===&lt;br /&gt;
Retrieves the year part (formatted as four digits) from a time/date string.&lt;br /&gt;
&lt;br /&gt;
=== $month(time) ===&lt;br /&gt;
Retrieves the month part (formatted as two digits) from a time/date string.&lt;br /&gt;
&lt;br /&gt;
=== $day_of_month(time) ===&lt;br /&gt;
Retrieves the day of month part (formatted as two digits) from a time/date string.&lt;br /&gt;
&lt;br /&gt;
=== $date(time) ===&lt;br /&gt;
Retrieves the date part (formatted as YYYY-MM-DD) from a time/date string.&lt;br /&gt;
&lt;br /&gt;
=== $time(time) ===&lt;br /&gt;
Retrieves the time part (formatted as HH:MM:SS or HH:MM) from a date/time string.&lt;br /&gt;
&lt;br /&gt;
== Variable operations ==&lt;br /&gt;
&lt;br /&gt;
Variables can be used to store strings and numbers. 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;
&lt;br /&gt;
=== $get(name) ===&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;
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;
Stores &#039;&#039;value&#039;&#039; in the variable &#039;&#039;name&#039;&#039; and returns nothing.&lt;br /&gt;
&lt;br /&gt;
== Component-specific fields and functions ==&lt;br /&gt;
&lt;br /&gt;
This section lists fields and functions which are specific to certain components. Unless otherwise stated, the fields and functions are only usable in the context of those components.&lt;br /&gt;
&lt;br /&gt;
=== Now playing info ===&lt;br /&gt;
&lt;br /&gt;
The following fields related to the currently playing item are only usable in certain locations outside of the playlist, e.g. in the status bar, the main window title and the copy command script.&lt;br /&gt;
&lt;br /&gt;
==== %playback_time% ====&lt;br /&gt;
The elapsed time formatted as [HH:]MM:SS.&lt;br /&gt;
&lt;br /&gt;
==== %playback_time_seconds% ====&lt;br /&gt;
The 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;
The time remaining until the 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;
The time remaining until the track ends, 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;
=== Playlist-only fields ===&lt;br /&gt;
&lt;br /&gt;
The following fields are only usable in playlist display formatting (i.e., the column title formatting patterns).&lt;br /&gt;
&lt;br /&gt;
==== %isplaying% ====&lt;br /&gt;
&amp;quot;1&amp;quot; if file is currently playing, empty string otherwise.&lt;br /&gt;
&lt;br /&gt;
==== %ispaused% ====&lt;br /&gt;
&amp;quot;1&amp;quot; if playback is paused, empty string otherwise.&lt;br /&gt;
&lt;br /&gt;
==== %list_index% ====&lt;br /&gt;
A zero-padded playlist index of specified item. The first item is at index 1.&lt;br /&gt;
&lt;br /&gt;
==== %list_total% ====&lt;br /&gt;
The number of items in the playlist.&lt;br /&gt;
&lt;br /&gt;
==== %queue_index% ====&lt;br /&gt;
Index of the specified item in the playback queue. If the item has been queued multiple times, %queue_index% evaluates to the first index.&lt;br /&gt;
&lt;br /&gt;
==== %queue_indexes% ====&lt;br /&gt;
List of indexes of the specified item in the playback queue. Same as %queue_index% unless the item has been queued more than once.&lt;br /&gt;
&lt;br /&gt;
==== %queue_total% ====&lt;br /&gt;
Total amount of tracks in playback queue. Available only for queued tracks, for technical reasons. &lt;br /&gt;
&lt;br /&gt;
=== Playlist text color ===&lt;br /&gt;
&lt;br /&gt;
==== Dimmed and highlighted text ====&lt;br /&gt;
&lt;br /&gt;
In the Default UI playlist, text color can be adjusted by enclosing it in angle-brackets. The only options are to make the text dimmer (mixing the default color with black) or brighter (mixing the default color with the highlight color):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;text&amp;gt;&#039;&#039; – dim &#039;&#039;text&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;&amp;amp;lt;text&amp;gt;&amp;gt;&#039;&#039; – dimmer &#039;&#039;text&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;&amp;amp;lt;&amp;amp;lt;text&amp;gt;&amp;gt;&amp;gt;&#039;&#039; – dimmest &#039;&#039;text&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;gt;text&amp;amp;lt;&#039;&#039; – bright &#039;&#039;text&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;gt;&amp;gt;text&amp;amp;lt;&amp;amp;lt;&#039;&#039; – brighter &#039;&#039;text&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;gt;&amp;gt;&amp;gt;text&amp;amp;lt;&amp;amp;lt;&amp;amp;lt;&#039;&#039; – brightest &#039;&#039;text&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Historical and Columns UI color functions ====&lt;br /&gt;
&lt;br /&gt;
Prior to version 1.0, the default UI playlist supported the following color functions, which are still available in the Columns UI playlist:&lt;br /&gt;
&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;
=== Album List ===&lt;br /&gt;
&lt;br /&gt;
* [[Foobar2000:Titleformat_Album_List|Album List Title Formatting]]&lt;br /&gt;
* [[Foobar2000:Preferences:Album List|Preferences: Album List]]&lt;br /&gt;
&lt;br /&gt;
=== Playback Statistics ===&lt;br /&gt;
&lt;br /&gt;
The foo_playcount component adds a number of fields for playback statistics and ratings. The fields can be used anywhere track info can be displayed. See the documentation for details:&lt;br /&gt;
* [http://www.foobar2000.org/components/view/foo_playcount Playback statistics homepage]&lt;br /&gt;
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]&lt;br /&gt;
&lt;br /&gt;
=== Playlist Organizer ===&lt;br /&gt;
&lt;br /&gt;
This component adds a number of fields to control the display of a list of playlists. See the documentation for details:&lt;br /&gt;
* [[Foobar2000:Components/Playlist Organizer (foo_plorg)#Nodes|Playlist Organizer: Nodes Title Formatting]]&lt;br /&gt;
&lt;br /&gt;
=== Columns UI ===&lt;br /&gt;
&lt;br /&gt;
This component replaces the Default UI framework, including the playlist. See the documentation for details:&lt;br /&gt;
* [http://yuo.be/columns.php Columns UI homepage]&lt;br /&gt;
* [http://yuo.be/wiki/columns_ui:config:global_variables Global variables reference]&lt;br /&gt;
* [http://yuo.be/wiki/columns_ui:config:colour_string Playlist colors reference]&lt;br /&gt;
* [http://yuo.be/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:Title Formatting Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* The file &#039;&#039;&#039;titleformat_help.html&#039;&#039;&#039; in your Foobar2000 directory, e.g. file:///C:/Program%20Files%20(x86)/foobar2000/titleformat_help.html&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Guides|Titleformat Reference]]&lt;/div&gt;</summary>
		<author><name>82.246.177.235</name></author>
	</entry>
</feed>