<?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=Db1989</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=Db1989"/>
	<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Special:Contributions/Db1989"/>
	<updated>2026-04-30T02:10:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=TAK&amp;diff=25193</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=TAK&amp;diff=25193"/>
		<updated>2013-06-21T14:42:10Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Frequently Asked Questions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Codec Infobox&lt;br /&gt;
| name = Tom&#039;s lossless Audio Kompressor&lt;br /&gt;
| logo =&lt;br /&gt;
| type = lossless&lt;br /&gt;
| purpose = lossless audio compression.&lt;br /&gt;
| maintainer = Thomas Becker&lt;br /&gt;
| recommended_encoder = TAK encoder&lt;br /&gt;
| recommended_text = TAK v2.3.0&lt;br /&gt;
| website = [http://thbeck.de/Tak/Tak.html ThBeck.de/Tak/Tak.html] &#039;&#039;(german)&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Tom&#039;s lossless Audio Kompressor&#039;&#039;&#039; (&#039;&#039;&#039;TAK&#039;&#039;&#039;) is a lossless audio compressor which promises compression performance similar to [[Monkey&#039;s Audio]] “High” and decompression speed similar to [[Free Lossless Audio Codec|FLAC]].&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* High compression&lt;br /&gt;
* Fast compression and decompression speed&lt;br /&gt;
* Streaming support (necessary headers for decompressing the audio are written to the stream every 2 seconds)&lt;br /&gt;
* Piping support for encoding&lt;br /&gt;
* Error tolerance (single bit error will never affect more than 250 ms)&lt;br /&gt;
* Error detection (each frame protected by a 24-bit checksum (CRC))&lt;br /&gt;
* High-resolution (up to 24-bit/channel) audio support&lt;br /&gt;
* Support for up to 192 Khz Audio&lt;br /&gt;
* Seeking without seek table&lt;br /&gt;
* APEv2 tags supported at end of file&lt;br /&gt;
&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Fast encoding speed (while providing better compression TAK encodes as fast as [[Free Lossless Audio Codec|FLAC]] -8 in TAK&#039;s “Insane” and several times faster in “Turbo” mode)&lt;br /&gt;
* Fast decompression speed (on par with FLAC / [[WavPack]])&lt;br /&gt;
* Good compression levels (on par with [[Monkey&#039;s Audio]] High)&lt;br /&gt;
* Error Robustness&lt;br /&gt;
* Fast Seeking&lt;br /&gt;
&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Closed Source&lt;br /&gt;
* No hardware support&lt;br /&gt;
* Limited software support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Software support ==&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=89610 TAK 2.2.0] (official release which consists of a CLI, a GUI, a [[Winamp]] plugin, the SDK, and the decoding library)&lt;br /&gt;
* [http://www.foobar2000.org/components/view/foo_input_tak TAK Decoder 0.4.7] - plugin for [[foobar2000]] (supports tagging and [[ReplayGain]])&lt;br /&gt;
* [http://www.liviocavallo.altervista.org/ dsfTAKSource 0.0.1.6] - DirectShow source filter to play TAK-files in Windows Media Player, Media Player Classic - Home Cinema, Zoom Player and alike&lt;br /&gt;
* [http://reino.degeelebosch.nl/ DC-Bass Source Mod 1.5.0.0] - DirectShow source filter to play TAK-files, amongst many others, in any DirectShow media player (as mentioned above)&lt;br /&gt;
* [[Mp3tag]] – universal tag editor with support for TAK&lt;br /&gt;
* [http://etree.org/shnutils/shntool/ shntool] (since version 3.0.6)&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* ffmpeg can demux, decode and parse TAK since commit d7a473926504e2acfa6ae3bead0938e1f4e03441:[http://git.videolan.org/?p=ffmpeg.git;a=commit;h=d7a473926504e2acfa6ae3bead0938e1f4e03441]. First official release that supports TAK decoding is 1.1.&lt;br /&gt;
* The GUI program (Tak.exe) and the command-line program (Takc.exe) work with [http://www.winehq.org/ Wine].&lt;br /&gt;
* [http://caudec.outpost.fr caudec] is a command-line tool that can encode and decode TAK files, using the official binary (Takc.exe) with Wine (see: [http://caudec.outpost.fr/documentation/windowscodecs/ installation instructions]). Caudec can also test file integrity and compute (and tag) Replaygain data. While it hasn&#039;t been tested at the time of writing, it is possible that TAK support in caudec works on OS X as well.&lt;br /&gt;
&lt;br /&gt;
== Hardware support ==&lt;br /&gt;
* None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recommended Settings ==&lt;br /&gt;
* Default compression: “-p2” (formerly &#039;&#039;Normal&#039;&#039;) is the most attractive setting, providing an excellent compromise between compression and encoding speed. (At compression levels close to [[Monkey&#039;s Audio]] High (&amp;lt;0.4% difference), it is able to encode more quickly.)&lt;br /&gt;
 takc -e [input file]&lt;br /&gt;
* Highest compression: “-pMax” (same as -p4m) (This will create files which are comparable in size to file created using [[Monkey&#039;s Audio]] High. Decompression speed is comparable to [[WavPack]] Normal.)&lt;br /&gt;
 takc -e -pMax [input file]&lt;br /&gt;
* Fastest compression: “-p0” (This will create files which are comparable in size to [[Monkey&#039;s Audio]] Fast or [[WavPack]] High. Decompression speed is comparable to [[Free Lossless Audio Codec|FLAC]] 0.)&lt;br /&gt;
 takc -e -p0 [input file]&lt;br /&gt;
&lt;br /&gt;
=== TAK Performance Graph ===&lt;br /&gt;
[[Image:TAK_performance_graph_1-0-4.png|frame|center|Graph showing encoding and decoding rate against compression, using data from Synthetic Soul&#039;s test on TAK 1.0.4&amp;lt;br /&amp;gt;(see [[TAK#External Links|External Links]])]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using TAK ==&lt;br /&gt;
=== TAK with [[foobar2000]] ===&lt;br /&gt;
* Copy the takc.exe to your [[foobar2000]] directory&lt;br /&gt;
* Go to File → Preferences → Tools → Converter&lt;br /&gt;
* Set it up as shown:&lt;br /&gt;
[[Image:Tak_foobar_converter.png|frame|center|Screenshot of foobar 0.9.5 Converter settings for TAK 1.0.3]]&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; replace -p2 with the desired compression level.&lt;br /&gt;
&lt;br /&gt;
* TAK introduced encoding from STDIN in version 1.0.3, eliminating the need for a temporary file and greatly improving overall compression time. If you are using an earlier version of TAK use the following command line instead:&lt;br /&gt;
 -e -p2 %s %d&lt;br /&gt;
* Use [[APEv2 specification|APEv2]] tagging (will be used as internal tagging)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TAK with EAC ===&lt;br /&gt;
Please read the [[EAC and TAK|wiki guide]], which details how to create TAK files with [[Exact Audio Copy|EAC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Future Features ==&lt;br /&gt;
* Unicode support&lt;br /&gt;
* MD5 audio checksums for verification and identification&lt;br /&gt;
* A German version&lt;br /&gt;
* Embedded cue sheets&lt;br /&gt;
* Embedded cover art&lt;br /&gt;
* Multichannel audio&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Frequently Asked Questions ==&lt;br /&gt;
; Is the codec safe for use/definitely lossless?&lt;br /&gt;
: Yes, TAK is verified as being lossless, as determined through rigorous testing by the author and satisfied users. To check, convert a WAV to TAK and back and compare the two, for instance using [[Foobar2000:Foobar2000|foobar2000]]&#039;s [[Foobar2000:Components/Binary Comparator (foo_bitcompare)|Binary Comparator]].&lt;br /&gt;
; Why should I use TAK?&lt;br /&gt;
: TAK offers high ratios of compression but also great decoding speeds.&lt;br /&gt;
; What can I compress with TAK?&lt;br /&gt;
: TAK 1.0 can compress any integer-format (up to 24 bits per channel) PCM RIFF WAVE file (.WAV). Piping support is implemented as of v1.0.3, so converting lossless files to WAV first is not necessary: users can simply pipe the decompressed output from their decoder of choice directly into TAK&#039;s encoder.&lt;br /&gt;
; What about hardware support?&lt;br /&gt;
: There is none at the moment. However, &#039;&#039;-p0&#039;&#039;, &#039;&#039;-p1&#039;&#039; and &#039;&#039;-p2&#039;&#039; are the candidates for most suitable settings for hardware.&lt;br /&gt;
; Will the source be opened?&lt;br /&gt;
: The official encoder and decoder are currently closed-source. Thomas has expressed an intention to open the source of the decoder at some point in time, stipulating preconditions of its first being further refined, ported to C or C++, and documented. This may or may not lead to releases of other code. However, as of June of 2013, he feels that “a lot of (not very exciting) work is required” until the decoding source would be ready to be published, and that may or may not happen in the foreseeable future. Such questions generally generate more noise than fruitful discussion, so it is best to wait and see what happens. In any case, there is an independently implemented open source decoder available, bundled with ffmpeg.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://thbeck.de/Tak/Tak.html thbeck.de/Tak/Tak.html] – Official Website &#039;&#039;(german)&#039;&#039;&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=101386 TAK 2.3.0 Discussion Thread on HA] &#039;&#039;(english)&#039;&#039;&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=89610 TAK 2.2.0 Discussion Thread on HA] &#039;&#039;(english)&#039;&#039;&lt;br /&gt;
* [http://synthetic-soul.co.uk/comparison/lossless/ synthetic-soul.co.uk/comparison/lossless] – Comparison with Other Codecs (by Synthetic Soul)&lt;br /&gt;
* [http://flac.sourceforge.net/comparison.html flac.sourceforge.net/comparison.html] – An Updated Comparison (from FLAC Homepage)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless]]&lt;br /&gt;
[[Category:Encoder/Decoder]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LAME_-q_switch&amp;diff=25159</id>
		<title>LAME -q switch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LAME_-q_switch&amp;diff=25159"/>
		<updated>2013-06-03T16:24:25Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Effects */ 1/0 -&amp;gt; Yes/No&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When using [[LAME]] from the command line, the switch &#039;&#039;&#039;-q&#039;&#039;&#039; (quality) can be added in either VBR or CBR mode to alter various parameters used when encoding, which are predicted (at least in theory) to affect the quality of the output MP3 stream.&lt;br /&gt;
&lt;br /&gt;
==Equivalences==&lt;br /&gt;
===CBR===&lt;br /&gt;
Some values of -q seem to produce equivalent files, at least in terms of the audio itself.&lt;br /&gt;
* -q5 and -q6 output identical results. LAME&#039;s header will indicate the different quality parameter, but the files, including the actual audio, are otherwise a perfect match.&lt;br /&gt;
* -q8 is always mapped to -q7 and thus outputs identical files, including the header.&lt;br /&gt;
* -q9 outputs the same file as -q7 and -q8, although the official documentation describes it as a different quality. The LAME header will be different for CBR/ABR and identical for VBR.&lt;br /&gt;
&lt;br /&gt;
===VBR===&lt;br /&gt;
VBR encoding modes take some different code paths and ignore some of the listed values. In particular, the ten values of -q are mapped to a smaller number of actual qualities under VBR:&lt;br /&gt;
* -q7 to -q9 are mapped to -q7. This level uses a psymodel but does not calculate quantisation noise when encoding: it takes a quick guess.&lt;br /&gt;
* -q5 and -q6 include all features of -q7, calculate and consider actual quantisation noise, and additionally enable subblock gain.&lt;br /&gt;
* -q0 to -q4 include all features of higher numbers and additionally use the best search when applying Huffman coding.&lt;br /&gt;
&lt;br /&gt;
==Effects==&lt;br /&gt;
This table documents the parameters that are affected by the value assigned to -q. These are most relevant to CBR for the reasons noted above.&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! -q n !! Huffman coding search !! Use full outer loop for Huffman encoding !! sv_qnt.substep_shaping !! Subblock gain !! Noise-shaping !! Amplification !! Stopping !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Best   || Yes || 2 ||  1 || Yes || 2 || 1 || align=&amp;quot;left&amp;quot; | Use all the best, and slowest, parameters/algorithms that are available.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Best   || No || 2 ||  1 || Yes || 2 || 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Best   || No || 2 ||  1 || Yes || 1 || 1 || align=&amp;quot;left&amp;quot; | Same as -h. Higher quality than the default -q3. -q2 was the default in older versions of LAME.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Best   || No || ? ||  1 || Yes || 1 || 1 || align=&amp;quot;left&amp;quot; | Default value. Good speed, good quality. Lower values of -q may not produce significantly higher quality.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Best   || No || ? ||  1 || Yes || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5-6 || Normal || No || ? ||  1 || Yes || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7-8 || Normal || No || ? || -1 || No || 0 || 0 || align=&amp;quot;left&amp;quot; | Same as -f. Very fast, OK quality. Psychoacoustics are used for pre-echo and mid/side stereo, but no noise-shaping is done.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Normal || No || ? || -1 || No || 0 || 0 || align=&amp;quot;left&amp;quot; | Disables almost all algorithms including psy-model. Poor quality.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LAME&amp;diff=25158</id>
		<title>LAME</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LAME&amp;diff=25158"/>
		<updated>2013-06-03T16:22:16Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Notes and references */ This is mostly historical. Is it relevant to the modern, more general page?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = LAME&lt;br /&gt;
| logo = [[Image:Lamelogo.png|250px|LAME official logo]]&lt;br /&gt;
| screenshot =&lt;br /&gt;
| caption = LAME ain&#039;t an MP3 encoder&lt;br /&gt;
| maintainer = The LAME project&lt;br /&gt;
| stable_release = 3.99&lt;br /&gt;
| preview_release = none&lt;br /&gt;
| operating_system = Windows, Mac OS/X, Linux/BSD&lt;br /&gt;
| use = Encoder/Decoder&lt;br /&gt;
| license = LGPL&lt;br /&gt;
| website = [http://lame.sourceforge.net/ LAME website]&lt;br /&gt;
}}{{featured}}&lt;br /&gt;
&#039;&#039;&#039;LAME&#039;&#039;&#039; (Lame Ain&#039;t an MP3 Encoder) is the [[Hydrogenaudio]] recommended [[MP3]] encoder. It has been developed by the open-source community since 1998, and has become the highest quality MP3 encoder for most purposes.&lt;br /&gt;
&lt;br /&gt;
Some benefits of using LAME:&lt;br /&gt;
* Highly optimised presets&lt;br /&gt;
* Fast encoding&lt;br /&gt;
* [[CBR]], [[ABR]] and quality-optimized [[VBR]] encoding methods&lt;br /&gt;
* [[Gapless]] playback with LAME-header compliant decoders&lt;br /&gt;
* Supported by recommended CD rippers [[Exact Audio Copy]] and [[CDex]]&lt;br /&gt;
* Highly tunable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
LAME development began around mid-1998. Mike Cheng started it as a patch against the 8hz-MP3 encoder sources. After some quality concerns raised by others, he decided to start from scratch based on the dist10 sources.&amp;lt;ref&amp;gt;dist10 is the rudimentary &amp;quot;demonstration&amp;quot; MP3 encoder described in the MPEG-2 standard, ISO/IEC 13818.&amp;lt;/ref&amp;gt; That branch (a patch against the reference sources) became LAME 2.0. By the release of LAME 3.81, all dist10 code was removed, making LAME a completely new program, not a mere patch of an existing encoder.&lt;br /&gt;
&lt;br /&gt;
The project quickly became a team effort. Mike Cheng eventually left leadership and started working on [http://toolame.sourceforge.net/ tooLAME], an [[MP2]] encoder. Mark Taylor became leader and released version 3.0 featuring gpsycho, a new psychoacoustic model developed by him.&lt;br /&gt;
&lt;br /&gt;
Nowadays LAME is considered the best MP3 encoder at mid &amp;amp; high bitrates, and features the best VBR model among MP3 implementations, mostly thanks to the dedicated work of talented developers Takehiro Tominaga, Naoki Shibata, Darin Morrison, Gabriel Bouvigne, Robert Hegemann, and others. Development is ongoing.&lt;br /&gt;
&lt;br /&gt;
Although LAME is generally considered to be an encoder, according to the LAME technical FAQ, it&#039;s technically not an encoder, but rather is officially just &amp;quot;a development project which uses the open source model to improve MP3 technology.&amp;quot; This improved technology is only released in source code form in order to minimize the risk of violating patents. When the source code is compiled and distributed, it &#039;&#039;may&#039;&#039; require a license from Thomson, depending on where and how it&#039;s to be used. The LAME project&#039;s position is &amp;quot;Source code is considered as speech, which may contain descriptions of patented technology. Descriptions of patents are in the public domain.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Recommended encoder compiles and source code==&lt;br /&gt;
&lt;br /&gt;
Unless noted otherwise, the recommended LAME compile for optimal quality is always the &#039;&#039;&#039;latest stable version&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It is suggested that the compiles available here be used with the recommended encoder settings you can find below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Download the latest LAME from these links:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.rarewares.org/mp3.php RareWares MP3 Page] - Compiles for Win32, Mac OS X universal binary, Linux etc.&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=290&amp;amp;package_id=309 LAME source code on SourceForge]&lt;br /&gt;
&lt;br /&gt;
Avoid using alpha versions of LAME. These versions have &amp;quot;a&amp;quot; in their version string. More often than not those are exclusively for testing purposes. Use them only if you want to help developers with feedback.&lt;br /&gt;
&lt;br /&gt;
==Recommended encoder settings==&lt;br /&gt;
This section describes the [[Hydrogenaudio]] recommended settings to be used with LAME for highest quality MP3 encoding. These settings require LAME 3.98 or later (the latest stable version is recommended).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #F0F0F0; color: black; border: 1px solid black; margin: 1em; padding: 1em 2em 1em 2em;&amp;quot;&amp;gt;&lt;br /&gt;
====Maximum quality and archiving====&lt;br /&gt;
&lt;br /&gt;
Maximum quality is achieved when, regardless of listening conditions, you are unable to detect a difference between the MP3 and the original. As demonstrated by blind [[ABX]] tests, LAME-encoded MP3s typically achieve this level of [[transparency]] when encoded with the default settings, at bitrates well below maximum. Encoding with other settings will have no effect on the quality.&lt;br /&gt;
&lt;br /&gt;
For archiving, only [[lossless]] formats like [[WavPack]], [[FLAC]], etc. are ideal; they will preserve the audio with no changes, sample-for-sample, regardless of encoder settings. In contrast, lossy formats like MP3 are designed to save space by changing the audio in subtle, often imperceptible ways, even at the encoder&#039;s maximum settings.&lt;br /&gt;
&lt;br /&gt;
====Very high quality: &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;HiFi, home, or quiet listening, with best file size&amp;lt;/font&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;-V0&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (~245 kbps), &amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;-V1&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (~225 kbps), &amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;-V2&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (~190 kbps) or &amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;-V3&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (~175 kbps) are recommended.&lt;br /&gt;
&lt;br /&gt;
These [[VBR]] settings will normally produce [[transparency|transparent]] results. Audible differences between these presets may exist, but are rare.&lt;br /&gt;
&lt;br /&gt;
====Very high quality: &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;HiFi, home, or quiet listening, with maximum file size&amp;lt;/font&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;-b 320&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; is an alternative to the VBR settings above.&lt;br /&gt;
&lt;br /&gt;
This [[CBR]] mode will maximize the MP3&#039;s bitrate and overall file size. The extra space may allow for some parts of the audio to be compressed with fewer sacrifices, but to date, no one has produced ABX test results demonstrating that perceived quality is ever better than the highest VBR profiles described above.&amp;lt;ref&amp;gt;Prior to version 3.99, CBR and VBR modes were encoded differently by LAME. In some unusual problem samples, these differences were sometimes audible, even at very high bitrates. Current versions of LAME encode CBR and VBR the same way, so such differences shouldn&#039;t arise from normal use.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Portable: &amp;lt;font style=&amp;quot;color:purple&amp;quot;&amp;gt;listening in noisy conditions, lower bitrate, smaller file size&amp;lt;/font&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:purple&amp;quot;&amp;gt;-V4&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (~165 kbps), &amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:purple&amp;quot;&amp;gt;-V5&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (~130 kbps) or &amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:purple&amp;quot;&amp;gt;-V6&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (~115 kbps) are recommended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:purple&amp;quot;&amp;gt;-V6&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; produces an &amp;quot;acceptable&amp;quot; quality, while &amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:purple&amp;quot;&amp;gt;-V4&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; should be close to perceptual [[transparency]].&lt;br /&gt;
&lt;br /&gt;
====Very low bitrate, small sizes: &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;eg. for voice, radio, [[mono]] encoding etc.&amp;lt;/font&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
For very low bitrates, up to 100kbps, [[ABR]] is most often the best solution. &lt;br /&gt;
Use &amp;lt;code&amp;gt;&amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;--abr &amp;lt;bitrate&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt; (e.g. --abr 80).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--preset voice&#039;&#039;&#039; is only available in the command line front-end, and is there for compatibility.&lt;br /&gt;
It is currently mapped to &#039;&#039;&#039;&#039;&#039;--abr 56 -mm&#039;&#039;&#039;&#039;&#039;, so that means that the recommendation would be to encode in mono, and use ABR.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Understanding the bitrate settings==&lt;br /&gt;
MP3s are divided into frames, each frame being a particular size, expressed as a [[bitrate]]. If the bitrate of every frame is the same throughout the file, then the file is considered to be &#039;&#039;constant bit rate&#039;&#039; ([[CBR]]). Otherwise, it is &#039;&#039;variable bit rate&#039;&#039; ([[VBR]]). LAME offers CBR and VBR encoding modes, as well as a special VBR encoding mode called [[ABR]] (&#039;&#039;average bit rate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===VBR (variable bitrate) settings===&lt;br /&gt;
&#039;&#039;&#039;[[VBR]]:&#039;&#039;&#039; &#039;&#039;variable bitrate mode. Use variable bitrate modes when the goal is to achieve a fixed level of quality using the lowest possible bitrate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
VBR is best used to target a specific quality level, instead of a specific bitrate. The final file size of a VBR encode is less predictable than with [[ABR]], but the quality is usually better.&lt;br /&gt;
&lt;br /&gt;
Unlike other MP3 encoders which do VBR encoding based on predictions of output quality, LAME&#039;s default VBR method tests the &#039;&#039;actual&#039;&#039; output quality to ensure the desired quality level is always achieved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; &amp;lt;code&amp;gt;-V&amp;amp;lt;number&amp;gt;&amp;lt;/code&amp;gt; where &amp;amp;lt;number&amp;gt; is 0-9, 0 being highest quality, 9 being the lowest.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; &amp;lt;code&amp;gt;-V2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The switch &amp;lt;code&amp;gt;--vbr-new&amp;lt;/code&amp;gt;, which enabled a superior VBR mode in LAME 3.97 and some previous versions, is no longer needed with LAME 3.98 and higher, as it is now the default VBR mode. However, if you&#039;re still using LAME 3.97 or older, you have to add &amp;lt;code&amp;gt;--vbr-new&amp;lt;/code&amp;gt; to your commandline to use that mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto;&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;Bitrate overview (mostly based on LAME 3.98.2 results)&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Switch&#039;&#039;&#039; || &#039;&#039;&#039;Preset&#039;&#039;&#039; || &#039;&#039;&#039;Target Kbit/s&#039;&#039;&#039; || &#039;&#039;&#039;Bitrate range kbit/s&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -b 320 || --preset insane || 320 || 320 CBR&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 0 || --preset fast extreme || 245 || 220...260&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 1 ||&amp;amp;nbsp;|| 225 || 190...250&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 2 || --preset fast standard || 190 || 170...210&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 3 ||&amp;amp;nbsp;|| 175 || 150...195&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 4 || --preset fast medium  || 165 || 140...185&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 5 ||&amp;amp;nbsp;|| 130 || 120...150&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 6 ||&amp;amp;nbsp;|| 115 || 100...130&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 7 ||&amp;amp;nbsp;|| 100 || 80...120&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 8 ||&amp;amp;nbsp;|| 85 || 70...105&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 9 ||&amp;amp;nbsp;|| 65 || 45...85&lt;br /&gt;
|}&lt;br /&gt;
See also [[#Technical information|Technical details for recommended LAME settings]].&lt;br /&gt;
&lt;br /&gt;
If you need a predictable bitrate (in a streaming application, for example), use ABR or CBR modes, described below.&lt;br /&gt;
&lt;br /&gt;
===ABR (average bitrate) settings===&lt;br /&gt;
&#039;&#039;&#039;[[ABR]]:&#039;&#039;&#039; &#039;&#039;average bitrate mode. A compromise between VBR and CBR modes, ABR encoding varies bits around a specified target bitrate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use ABR when you need to know the final size of the file but still want to allow the encoder some flexibility to decide which passages need more bits. The output is an ordinary VBR file compatible with all MP3 players that support VBR; ABR is not a special type of file, just a LAME-specific strategy for producing VBR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; &amp;lt;code&amp;gt;--preset &amp;amp;lt;bitrate&amp;gt;&amp;lt;/code&amp;gt; where &amp;amp;lt;bitrate&amp;gt; (desired averaged bitrate in kbit/s) is a value between 8 and 320.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; &amp;lt;code&amp;gt;--preset 200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; &#039;&#039;ABR setting is tuned from 320 kbit/s down to 80 kbit/s.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===CBR (constant bitrate) settings===&lt;br /&gt;
&#039;&#039;&#039;[[CBR]]:&#039;&#039;&#039; &#039;&#039;constant bitrate mode. CBR encoding is not efficient. Whereas VBR and ABR modes can supply more bits to complex music passages and save bits on simpler ones, CBR encodes every frame at the same bitrate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
CBR is only recommended for usage in streaming situations where the upper bitrate must be strictly enforced. There is still some variability in bitrate behind the scenes, through LAME&#039;s use of the [[bit reservoir]] feature of the MP3 format, but it is much less flexible than actual VBR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage:&#039;&#039;&#039; &amp;lt;code&amp;gt;-b &amp;lt;bitrate&amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;bitrate&amp;gt; (bitrate in kbit/s) must be chosen from the following values: 8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 160, 192, 224, 256, or 320.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; &amp;lt;code&amp;gt;-b 192&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; &#039;&#039;CBR setting is tuned from 320 kbit/s down to 80 kbit/s.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Remarks===&lt;br /&gt;
* The rule of thumb when considering encoding options: at a given bitrate, [[VBR]] is higher quality than [[ABR]], which is higher quality than [[CBR]] (VBR &amp;gt; ABR &amp;gt; CBR in terms of quality). However, [[ABX]] tests demonstrate that as bitrate increases, the perceptual differences diminish, with all modes generally reaching [[transparency]] well before their maximum settings; when you can&#039;t tell the difference, the modes are qualitatively the same.&lt;br /&gt;
&lt;br /&gt;
* All modes and settings mentioned in this topic belong to the specifications of the MP3 standard, and the resulting MP3s should be playable by every MP3 decoder that conforms with the standard. If your decoder or device does not play MP3s produced by LAME, blame the manufacturer or developer, not LAME.&lt;br /&gt;
&lt;br /&gt;
* Prior to LAME 3.98, the &amp;lt;code&amp;gt;--vbr-new&amp;lt;/code&amp;gt; switch enabled the new VBR mode. This is now the default VBR mode, with the old mode being available via &amp;lt;code&amp;gt;--vbr-old&amp;lt;/code&amp;gt;. In terms of quality, the new mode appears to be better than the old, but reports of artifacts when using the new mode do exist. Despite these possible issues, the new mode is currently recommended due to both the speed and quality increases afforded by the new algorithm.&lt;br /&gt;
&lt;br /&gt;
===Hey! What happened to &amp;quot;--alt-preset&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
The revolutionary &amp;lt;code&amp;gt;--alt-preset&amp;lt;/code&amp;gt; system was introduced in LAME 3.90; it was replaced by the &amp;lt;code&amp;gt;--preset&amp;lt;/code&amp;gt; flags in later versions. Starting with version 3.94, the &amp;lt;code&amp;gt;-Vx&amp;lt;/code&amp;gt; quality system was introduced, which allows finer control over the desired bitrate; the &amp;lt;code&amp;gt;--preset&amp;lt;/code&amp;gt; switches were made into aliases to the corresponding &amp;lt;code&amp;gt;-V&amp;lt;/code&amp;gt; flags for the sake of backwards compatibility. &#039;&#039;&#039;There is no difference between the output you get if you use &amp;lt;code&amp;gt;-V2&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--alt-preset standard&amp;lt;/code&amp;gt;.&#039;&#039;&#039; (Although adding &amp;lt;code&amp;gt;--vbr-new&amp;lt;/code&amp;gt; is recommended for now, see above for details.)&lt;br /&gt;
&lt;br /&gt;
More encoding options are available under the new system, such as &amp;lt;code&amp;gt;-V1&amp;lt;/code&amp;gt;, which provides a level of quality between the old &amp;quot;standard&amp;quot; and &amp;quot;extreme&amp;quot; presets, or &amp;lt;code&amp;gt;-V3&amp;lt;/code&amp;gt;, which is between the old &amp;quot;medium&amp;quot; and &amp;quot;standard&amp;quot; presets.&lt;br /&gt;
&lt;br /&gt;
Recent LAME versions feature more streamlined command-line options, and it&#039;s recommended to stick to one of the values described in the text or shown in the tables above.&lt;br /&gt;
&lt;br /&gt;
For example, the following command-line options will all produce the same output:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--alt-preset insane&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;--preset insane&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-b 320&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;--preset 320&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;--preset cbr 320&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Technical information==&lt;br /&gt;
===Recommended settings details===&lt;br /&gt;
The table below contains technical details about the recommended settings. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto;&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;Technical details of the recommended settings&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Switch&#039;&#039;&#039; || &#039;&#039;&#039;Preset&#039;&#039;&#039; || &#039;&#039;&#039;Target Kbps&#039;&#039;&#039; || &#039;&#039;&#039;[[LAME_Y_SWITCH|Y Switch]]&#039;&#039;&#039; || &#039;&#039;&#039;Lowpass&#039;&#039;&#039; || &#039;&#039;&#039;Resample&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 0 || --preset fast extreme ||  ~245 || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 1 || || ~225 || || 19383 Hz - 19916 Hz ||&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 2 || --preset fast standard || ~190 || || 18671 Hz - 19205 Hz ||&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 3 || || ~175 || Y || 17960 Hz - 18494 Hz ||&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 4 || --preset fast medium || ~165 || Y || 17249 Hz - 17782 Hz ||&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 5 || || ~130 || Y || 16538 Hz - 17071 Hz ||&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 6 || || ~115 || Y || 15115 Hz - 15648 Hz ||&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 7 || || ~100 || Y || 14581 Hz - 14968 Hz || 32000 Hz&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 8 || || ~85 || Y || 12516 Hz - 12903 Hz ||  32000 Hz&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background:white;&amp;quot;&lt;br /&gt;
| -V 9 || || ~65 || Y || 9336 Hz -  9602 Hz || 24000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Fraunhofer decoder incompatibility===&lt;br /&gt;
Differing interpretations of an unclear portion of the MP3 spec led to certain versions of the Fraunhofer IIS MP3 decoder being unable to properly play certain MP3s created with certain versions of LAME.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the problem, the problematic MP3 must have been created with LAME 3.97 or earlier, and must contain a frame with certain parameters and a very large amount of data, such as a 320-kbps frame which makes heavy use of the [[bit reservoir]]. The decoder must be the DirectShow filter &amp;lt;code&amp;gt;l3codecx.ax&amp;lt;/code&amp;gt; version 1.5.0 or lower. That filter is the decoder used by Windows Media Player. The filter was upgraded to 1.6.0 by [http://support.microsoft.com/kb/2115168/en-us an August 2010 security update]; the newer version can play the problematic MP3s.&lt;br /&gt;
&lt;br /&gt;
A workaround was implemented in LAME 3.98.0 beta 1 through LAME 3.98.2, and in LAME 3.99 alpha 1, whereby 320-kbps frames were limited in how much of the bit reservoir they could use. This resulted in wasted space when the bit reservoir would grow beyond the limit. In LAME 3.98.3 and beyond, and in LAME 3.99 alpha 2 and beyond, the method was changed such that the bit reservoir can&#039;t grow beyond the limit.&lt;br /&gt;
&lt;br /&gt;
Related discussion threads:&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=40308 LAME high bitrate files in l3codeca.ax]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=78114 Lame 3.98 wastes bits]&lt;br /&gt;
&lt;br /&gt;
===LAME version string formatting===&lt;br /&gt;
The 9-character LAME short version string, as written in the [[MP3#VBRI, XING, and LAME headers|LAME tag]], has the following format:&lt;br /&gt;
:&amp;quot;&amp;lt;code&amp;gt;LAME&amp;lt;/code&amp;gt;&amp;quot; + major version + &amp;quot;&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&amp;quot; + minor version + flag&lt;br /&gt;
&lt;br /&gt;
When the minor version is &amp;gt; 99, as is expected to happen when LAME 3.100 is released, the &amp;quot;&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&amp;quot; will be omitted:&lt;br /&gt;
:&amp;quot;&amp;lt;code&amp;gt;LAME&amp;lt;/code&amp;gt;&amp;quot; + major version + minor version + flag&lt;br /&gt;
&lt;br /&gt;
If the version string is ever is less than 9 bytes, it is null-padded when written to the LAME tag.&lt;br /&gt;
&lt;br /&gt;
The flag is normally one of the following:&lt;br /&gt;
* &amp;quot;&amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;&amp;quot; for alpha versions&lt;br /&gt;
* &amp;quot;&amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&amp;quot; for beta versions&lt;br /&gt;
* &amp;quot;&amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;&amp;quot; for release versions with patch version &amp;gt; 0, starting with 3.96.1&lt;br /&gt;
* &amp;quot;&amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&amp;quot; (space) for all other release versions with minor version &amp;lt; 100&lt;br /&gt;
* &amp;quot;&amp;quot; (empty string) for release versions with patch version = 0 and minor version &amp;gt; 99&lt;br /&gt;
&lt;br /&gt;
For LAME 3.99.1, the format was changed such that release versions with a patch version &amp;gt; 0 would be identified with the following format:&lt;br /&gt;
:&amp;quot;&amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;&amp;quot; + major version + &amp;quot;&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&amp;quot; + minor version + flag + patch version&lt;br /&gt;
&lt;br /&gt;
However, the new code contained a minor error which resulted in the patch version being omitted, and the change of &amp;quot;&amp;lt;code&amp;gt;LAME&amp;lt;/code&amp;gt;&amp;quot; to &amp;quot;&amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;&amp;quot; proved to be problematic for hardware and software players which failed to recognize the LAME tags as such, adversely affecting [[gapless]] playback and encoder identification, so the new scheme was abandoned for 3.99.2 and up.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* 3.98 = 3.98.0 = &amp;quot;&amp;lt;code&amp;gt;LAME3.98&amp;lt;/code&amp;gt;&amp;quot; followed by a space character (byte 0x20)&lt;br /&gt;
* 3.98.1 through 3.98.4 = &amp;quot;&amp;lt;code&amp;gt;LAME3.98r&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
* 3.99 alpha versions = &amp;quot;&amp;lt;code&amp;gt;LAME3.99a&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
* 3.99 beta versions = &amp;quot;&amp;lt;code&amp;gt;LAME3.99b&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
* 3.99 = 3.99.0 = &amp;quot;&amp;lt;code&amp;gt;LAME3.99&amp;lt;/code&amp;gt;&amp;quot; followed by a space character&lt;br /&gt;
* 3.99.1 = &amp;quot;&amp;lt;code&amp;gt;L3.99r&amp;lt;/code&amp;gt;&amp;quot; followed by three null characters (byte 0x00) &lt;br /&gt;
* 3.99.2 through 3.99.&#039;&#039;n&#039;&#039; = &amp;quot;&amp;lt;code&amp;gt;LAME3.99r&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
* 3.100 alpha versions = &amp;quot;&amp;lt;code&amp;gt;LAME3100a&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Related discussion thread:&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=91372&amp;amp;view=findpost&amp;amp;p=775060 LAME 3.99 is out] (reports and discussion from 9 through 18 Nov 2011).&lt;br /&gt;
&lt;br /&gt;
Related code:&lt;br /&gt;
* [http://lame.cvs.sourceforge.net/viewvc/lame/lame/libmp3lame/version.c?view=log version.c in CVS] (revisions 1.31 through 1.34)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MP3]]&lt;br /&gt;
* [[Exact_Audio_Copy|Exact Audio Copy]]&lt;br /&gt;
* [[EAC_and_Lame | Configuring EAC and LAME]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes and references==&lt;br /&gt;
:Please note that the following apply mostly to previous versions of this page and therefore may refer to outdated features, such as the famous --alt-presets, whose improvements have long since been folded into the main routines and default settings of LAME.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;People who took part in suggesting the different settings:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dibrom, r3mix, ff123, Hans Heijden, kjempen, Benjamin Lebsanft, GeSomeone, Wombat &amp;amp; GuruBoolez for his immense testing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Creation of the alt preset system and related special code level quality enhancements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dibrom, with technical assistance from Robert Hegemann and Naoki Shibata, Gabriel and extensive tuning help and quality verification via listening tests from JohnV and also initial help (--dm-preset era) from Hans Heijden, ff123, Wombat, and others. Test clips, bitrate information, and further listening tests provided by TheBashar, zbutsam, Pio2001, BadDuDeX, r3mix, h, TarX, Hans Heijden, ff123, Wombat, Filburt, Volcano, Garf, MrDrew, TrNSZ, nyaochi, Amadeus93, in no particular order, and many, many others we (Dibrom, user) probably forgot to mention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Idea (also exposing the need for a unified preset system), Original post and list of original settings collected by:&#039;&#039;&#039;&lt;br /&gt;
user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Layout and additional work by:&#039;&#039;&#039; dev0, CiTay, SNYder, Dibrom.&lt;br /&gt;
&lt;br /&gt;
And finally...&lt;br /&gt;
&lt;br /&gt;
Thank you ALL in the community for making it what it is, providing interest and discussion and helping to work towards the most concise, well tuned, and most thought out MP3 quality &amp;quot;paradigm&amp;quot; seen yet! -- Dibrom&lt;br /&gt;
&lt;br /&gt;
===Footnotes===&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Further reading==&lt;br /&gt;
*[[CBR]]&lt;br /&gt;
*[[ABR]]&lt;br /&gt;
*[[VBR]]&lt;br /&gt;
*[[LAME_Y_SWITCH| The -Y switch]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://lame.sourceforge.net LAME official homepage]&lt;br /&gt;
&amp;lt;!--ReallyRarewares and the rest of rjamorim.com is gone. If the content is back online, please restore &amp;amp; update these links.&lt;br /&gt;
*[http://www.rjamorim.com/rrw/lame.html Historical versions of LAME] at ReallyRareWares&lt;br /&gt;
*[http://www.rjamorim.com/test/ Several multiformat listening tests] featuring LAME and other encoders.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*[http://www.rarewares.org/mp3.html RareWares MP3 page]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=478&amp;amp;st=0 Discussion of recommended Lame compiles in the Hydrogenaudio forum]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?act=ST&amp;amp;f=16&amp;amp;t=32288 Forum discussion of the recommended settings]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?act=ST&amp;amp;f=15&amp;amp;t=203 Forum discussion of the recommended settings (older)]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=32288&amp;amp;view=findpost&amp;amp;p=327262 Previous recommendations (outdated)]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Encoder/Decoder]]&lt;br /&gt;
[[Category:MP3]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LAME_q_Switch&amp;diff=25157</id>
		<title>LAME q Switch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LAME_q_Switch&amp;diff=25157"/>
		<updated>2013-06-03T16:17:31Z</updated>

		<summary type="html">&lt;p&gt;Db1989: moved LAME q Switch to LAME -q switch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[LAME -q switch]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LAME_-q_switch&amp;diff=25156</id>
		<title>LAME -q switch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LAME_-q_switch&amp;diff=25156"/>
		<updated>2013-06-03T16:17:31Z</updated>

		<summary type="html">&lt;p&gt;Db1989: moved LAME q Switch to LAME -q switch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When using [[LAME]] from the command line, the switch &#039;&#039;&#039;-q&#039;&#039;&#039; (quality) can be added in either VBR or CBR mode to alter various parameters used when encoding, which are predicted (at least in theory) to affect the quality of the output MP3 stream.&lt;br /&gt;
&lt;br /&gt;
==Equivalences==&lt;br /&gt;
===CBR===&lt;br /&gt;
Some values of -q seem to produce equivalent files, at least in terms of the audio itself.&lt;br /&gt;
* -q5 and -q6 output identical results. LAME&#039;s header will indicate the different quality parameter, but the files, including the actual audio, are otherwise a perfect match.&lt;br /&gt;
* -q8 is always mapped to -q7 and thus outputs identical files, including the header.&lt;br /&gt;
* -q9 outputs the same file as -q7 and -q8, although the official documentation describes it as a different quality. The LAME header will be different for CBR/ABR and identical for VBR.&lt;br /&gt;
&lt;br /&gt;
===VBR===&lt;br /&gt;
VBR encoding modes take some different code paths and ignore some of the listed values. In particular, the ten values of -q are mapped to a smaller number of actual qualities under VBR:&lt;br /&gt;
* -q7 to -q9 are mapped to -q7. This level uses a psymodel but does not calculate quantisation noise when encoding: it takes a quick guess.&lt;br /&gt;
* -q5 and -q6 include all features of -q7, calculate and consider actual quantisation noise, and additionally enable subblock gain.&lt;br /&gt;
* -q0 to -q4 include all features of higher numbers and additionally use the best search when applying Huffman coding.&lt;br /&gt;
&lt;br /&gt;
==Effects==&lt;br /&gt;
This table documents the parameters that are affected by the value assigned to -q. These are most relevant to CBR for the reasons noted above.&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! -q n !! Huffman coding search !! Use full outer loop for Huffman encoding !! sv_qnt.substep_shaping !! Subblock gain !! Noise-shaping !! Amplification !! Stopping !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Best   || Yes || 2 ||  1 || 1 || 2 || 1 || align=&amp;quot;left&amp;quot; | Use all the best, and slowest, parameters/algorithms that are available.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Best   || No || 2 ||  1 || 1 || 2 || 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Best   || No || 2 ||  1 || 1 || 1 || 1 || align=&amp;quot;left&amp;quot; | Same as -h. Higher quality than the default -q3. -q2 was the default in older versions of LAME.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Best   || No || ? ||  1 || 1 || 1 || 1 || align=&amp;quot;left&amp;quot; | Default value. Good speed, good quality. Lower values of -q may not produce significantly higher quality.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Best   || No || ? ||  1 || 1 || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5-6 || Normal || No || ? ||  1 || 1 || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7-8 || Normal || No || ? || -1 || 0 || 0 || 0 || align=&amp;quot;left&amp;quot; | Same as -f. Very fast, OK quality. Psychoacoustics are used for pre-echo and mid/side stereo, but no noise-shaping is done.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Normal || No || ? || -1 || 0 || 0 || 0 || align=&amp;quot;left&amp;quot; | Disables almost all algorithms including psy-model. Poor quality.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LAME_-q_switch&amp;diff=25155</id>
		<title>LAME -q switch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LAME_-q_switch&amp;diff=25155"/>
		<updated>2013-06-03T16:15:46Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When using [[LAME]] from the command line, the switch &#039;&#039;&#039;-q&#039;&#039;&#039; (quality) can be added in either VBR or CBR mode to alter various parameters used when encoding, which are predicted (at least in theory) to affect the quality of the output MP3 stream.&lt;br /&gt;
&lt;br /&gt;
==Equivalences==&lt;br /&gt;
===CBR===&lt;br /&gt;
Some values of -q seem to produce equivalent files, at least in terms of the audio itself.&lt;br /&gt;
* -q5 and -q6 output identical results. LAME&#039;s header will indicate the different quality parameter, but the files, including the actual audio, are otherwise a perfect match.&lt;br /&gt;
* -q8 is always mapped to -q7 and thus outputs identical files, including the header.&lt;br /&gt;
* -q9 outputs the same file as -q7 and -q8, although the official documentation describes it as a different quality. The LAME header will be different for CBR/ABR and identical for VBR.&lt;br /&gt;
&lt;br /&gt;
===VBR===&lt;br /&gt;
VBR encoding modes take some different code paths and ignore some of the listed values. In particular, the ten values of -q are mapped to a smaller number of actual qualities under VBR:&lt;br /&gt;
* -q7 to -q9 are mapped to -q7. This level uses a psymodel but does not calculate quantisation noise when encoding: it takes a quick guess.&lt;br /&gt;
* -q5 and -q6 include all features of -q7, calculate and consider actual quantisation noise, and additionally enable subblock gain.&lt;br /&gt;
* -q0 to -q4 include all features of higher numbers and additionally use the best search when applying Huffman coding.&lt;br /&gt;
&lt;br /&gt;
==Effects==&lt;br /&gt;
This table documents the parameters that are affected by the value assigned to -q. These are most relevant to CBR for the reasons noted above.&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! -q n !! Huffman coding search !! Use full outer loop for Huffman encoding !! sv_qnt.substep_shaping !! Subblock gain !! Noise-shaping !! Amplification !! Stopping !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Best   || Yes || 2 ||  1 || 1 || 2 || 1 || align=&amp;quot;left&amp;quot; | Use all the best, and slowest, parameters/algorithms that are available.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Best   || No || 2 ||  1 || 1 || 2 || 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Best   || No || 2 ||  1 || 1 || 1 || 1 || align=&amp;quot;left&amp;quot; | Same as -h. Higher quality than the default -q3. -q2 was the default in older versions of LAME.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Best   || No || ? ||  1 || 1 || 1 || 1 || align=&amp;quot;left&amp;quot; | Default value. Good speed, good quality. Lower values of -q may not produce significantly higher quality.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Best   || No || ? ||  1 || 1 || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5-6 || Normal || No || ? ||  1 || 1 || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7-8 || Normal || No || ? || -1 || 0 || 0 || 0 || align=&amp;quot;left&amp;quot; | Same as -f. Very fast, OK quality. Psychoacoustics are used for pre-echo and mid/side stereo, but no noise-shaping is done.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Normal || No || ? || -1 || 0 || 0 || 0 || align=&amp;quot;left&amp;quot; | Disables almost all algorithms including psy-model. Poor quality.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25147</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25147"/>
		<updated>2013-06-02T01:02:04Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the syntax that can be used to query for files within the Media Library in [[Foobar2000:Foobar2000|foobar2000]].&lt;br /&gt;
&lt;br /&gt;
For a list of fields and functions that can be used in query syntax, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]].&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
===Formatting===&lt;br /&gt;
Query syntax includes various keywords, also called operators, which invoke specific behaviours. These must be typed in caps, for example DURING.&lt;br /&gt;
&lt;br /&gt;
To aid readability, in the following descriptions and examples, example queries (or fragments thereof) that the user could type into foobar2000 are written in &#039;&#039;italics&#039;&#039;. In addition, operators are written in &#039;&#039;&#039;bold&#039;&#039;&#039;. Such formatting is for readability only and need not/cannot be typed in foobar2000 itself.&lt;br /&gt;
&lt;br /&gt;
===Placeholders===&lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
* Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
The following common placeholders are used throughout this document: &lt;br /&gt;
* &amp;amp;lt;field&amp;amp;gt; – A reference to a field within the tags of files in the Media Library. This can be either a plain field name (e.g. artist) or a title formatting expression (e.g. &amp;quot;%artist%&amp;quot;). See the [[Foobar2000:Query_syntax#Guidelines|Guidelines]] below for details on these two methods of accessing fields.&lt;br /&gt;
* &amp;amp;lt;number&amp;amp;gt; – An integer value (whole number).&lt;br /&gt;
* &amp;amp;lt;string&amp;amp;gt; – A text value, which may be enclosed in double quotation marks. See the Guidelines for details.&lt;br /&gt;
* &amp;amp;lt;time&amp;amp;gt; – A time value or a title-formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] below for details.&lt;br /&gt;
* &amp;amp;lt;expression&amp;amp;gt; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords or functions: it is only used to search for a literal string within the Library.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from the specified string within their metadata and/or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &amp;amp;lt;string&amp;amp;gt; in metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &amp;amp;lt;field&amp;amp;gt; is equal to &amp;amp;lt;string&amp;amp;gt;. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;ALL&#039;&#039;&#039;&#039;&#039; - No operators can be used. This single keyword simply returns all items within the Media Library.&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &amp;amp;lt;field&amp;amp;gt; and a &amp;amp;lt;number&amp;amp;gt;. For example: &#039;&#039;rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039; – Returns only items that have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;BEFORE&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is after &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;AFTER&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is not before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;SINCE&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is a subset of &amp;amp;lt;time2&amp;amp;gt; period. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &amp;amp;lt;time&amp;amp;gt; value is contained in the specified period. &amp;amp;lt;time-unit&amp;amp;gt; can be one of &#039;&#039;&#039;SECONDS&#039;&#039;&#039;, &#039;&#039;&#039;MINUTES&#039;&#039;&#039;, &#039;&#039;&#039;HOURS&#039;&#039;&#039;, &#039;&#039;&#039;DAYS&#039;&#039;&#039;, or &#039;&#039;&#039;WEEKS&#039;&#039;&#039;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; 2 &#039;&#039;&#039;WEEKS&#039;&#039;&#039;&#039;&#039;. If &amp;amp;lt;number&amp;amp;gt; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039; (choose one).&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Combined queries using logical operators===&lt;br /&gt;
Several logical operators are available so that the user can search for items that match (or do not match) various criteria in combination. To create more complex logical queries, parentheses () can be used to enclose parts of the query to ensure that they are evaluated in the correct order (much like parentheses in mathematics).&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt; – Returns only items where both expressions are true. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah &#039;&#039;&#039;AND&#039;&#039;&#039; title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played &#039;&#039;&#039;AFTER&#039;&#039;&#039; first_played&#039;&#039;&lt;br /&gt;
* You can enclose expressions in parentheses to control the order in which logical expressions are evaluated. Example: &#039;&#039;( (artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah) &#039;&#039;&#039;AND&#039;&#039;&#039; (title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah) ) &#039;&#039;&#039;OR&#039;&#039;&#039; (rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3)&#039;&#039;&lt;br /&gt;
* To obtain an exclusive-or (XOR/EOR), which is positive if only one expression is true but not both, you can use this: &#039;&#039;(&amp;lt;expression1&amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;lt;expression2&amp;gt;) &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; (&amp;lt;expression1&amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;lt;expression2&amp;gt;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; operator at the end of your search expression to have the results from the preceding quiery sorted by the specified title-formatting pattern. &lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; / &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;ASCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
====Case-sensitivity====&lt;br /&gt;
*All keywords (for example &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;HAS&#039;&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist &#039;&#039;&#039;HAS&#039;&#039;&#039; name&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field equals &amp;quot;NAME&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;Name&amp;quot;, and all other combinations of capital and small letters.&lt;br /&gt;
*To achieve a case-sensitive comparison between two parameters, use &#039;&#039;&amp;quot;$strcmp(%field%,string)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039; and so on. For more information about how to use title-formatting within query syntax, see the relevant section below.&lt;br /&gt;
&lt;br /&gt;
====Double quotation marks====&lt;br /&gt;
*&amp;amp;lt;field&amp;amp;gt; and &amp;amp;lt;string&amp;amp;gt; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;quot;MY BAND IS CALLED AND NOT&amp;quot; &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; releasetype &#039;&#039;&#039;IS&#039;&#039;&#039; Demo&#039;&#039;&lt;br /&gt;
====Simplified access to metadata fields====&lt;br /&gt;
Accessing metadata fields can be simplified: If &amp;amp;lt;field&amp;amp;gt; in &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, &#039;&#039;&#039;EQUAL&#039;&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications) or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
====Comparing two metadata fields====&lt;br /&gt;
As noted above, operators such as &#039;&#039;&#039;IS&#039;&#039;&#039; compare a field (on the left) to a string (on the right). If the user wishes, instead, to compare one field to another field, this can be done using title-formatting. Example: &#039;&#039;&amp;quot;$strcmp(%field1%,%field2%)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &amp;amp;lt;field&amp;amp;gt; in a (sub-)query using &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, or &#039;&#039;&#039;EQUAL&#039;&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the guidance given above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions that use parentheses. This necessarily includes all functions, for example $meta(field) or $info(codec). Doing this removes ambiguity that might result because parenthesis are used natively by query syntax to specify the order of evaluation of logical expressions, as described under the relevant section above.&lt;br /&gt;
*Using title formatting expressions to access metadata fields (e.g. &amp;quot;$meta(title)&amp;quot;) instead of simple field names (e.g. title) will decrease the speed of queries performed upon large libraries and will break handling of multi-value fields by the operator &#039;&#039;&#039;IS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Summary of operators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AFTER&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AND&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;BEFORE&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &#039;&#039;&#039;SECONDS&#039;&#039;&#039;/&#039;&#039;&#039;MINUTES&#039;&#039;&#039;/&#039;&#039;&#039;HOURS&#039;&#039;&#039;/&#039;&#039;&#039;DAYS&#039;&#039;&#039;/&#039;&#039;&#039;WEEKS&#039;&#039;&#039; &amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EQUAL&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;HAS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt&#039;&#039; or &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| See the main description above for information on the difference between &#039;&#039;&#039;HAS&#039;&#039;&#039; and &#039;&#039;&#039;*HAS&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LESS&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;MISSING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;NOT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt; &#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SINCE&#039;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; or &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039;ing expressions must be located at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25146</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25146"/>
		<updated>2013-06-02T00:53:59Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Case-sensitivity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the syntax that can be used to query for files within the Media Library in [[Foobar2000:Foobar2000|foobar2000]].&lt;br /&gt;
&lt;br /&gt;
For a list of fields and functions that can be used in query syntax, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]].&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
===Formatting===&lt;br /&gt;
Query syntax includes various keywords, also called operators, which invoke specific behaviours. These must be typed in caps, for example DURING.&lt;br /&gt;
&lt;br /&gt;
To aid readability, in the following descriptions and examples, example queries (or fragments thereof) that the user could type into foobar2000 are written in &#039;&#039;italics&#039;&#039;. In addition, operators are written in &#039;&#039;&#039;bold&#039;&#039;&#039;. Such formatting is for readability only and need not/cannot be typed in foobar2000 itself.&lt;br /&gt;
&lt;br /&gt;
===Placeholders===&lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
* Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
The following common placeholders are used throughout this document: &lt;br /&gt;
* &amp;amp;lt;field&amp;amp;gt; – A reference to a field within the tags of files in the Media Library. This can be either a plain field name (e.g. artist) or a title formatting expression (e.g. &amp;quot;%artist%&amp;quot;). See the [[Foobar2000:Query_syntax#Guidelines|Guidelines]] below for details on these two methods of accessing fields.&lt;br /&gt;
* &amp;amp;lt;number&amp;amp;gt; – An integer value (whole number).&lt;br /&gt;
* &amp;amp;lt;string&amp;amp;gt; – A text value, which may be enclosed in double quotation marks. See the Guidelines for details.&lt;br /&gt;
* &amp;amp;lt;time&amp;amp;gt; – A time value or a title-formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] below for details.&lt;br /&gt;
* &amp;amp;lt;expression&amp;amp;gt; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords or functions: it is only used to search for a literal string within the Library.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from the specified string within their metadata and/or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &amp;amp;lt;string&amp;amp;gt; in metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &amp;amp;lt;field&amp;amp;gt; is equal to &amp;amp;lt;string&amp;amp;gt;. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;ALL&#039;&#039;&#039;&#039;&#039; - No operators can be used. This single keyword simply returns all items within the Media Library.&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &amp;amp;lt;field&amp;amp;gt; and a &amp;amp;lt;number&amp;amp;gt;. For example: &#039;&#039;rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039; – Returns only items that have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;BEFORE&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is after &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;AFTER&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is not before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;SINCE&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is a subset of &amp;amp;lt;time2&amp;amp;gt; period. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &amp;amp;lt;time&amp;amp;gt; value is contained in the specified period. &amp;amp;lt;time-unit&amp;amp;gt; can be one of &#039;&#039;&#039;SECONDS&#039;&#039;&#039;, &#039;&#039;&#039;MINUTES&#039;&#039;&#039;, &#039;&#039;&#039;HOURS&#039;&#039;&#039;, &#039;&#039;&#039;DAYS&#039;&#039;&#039;, or &#039;&#039;&#039;WEEKS&#039;&#039;&#039;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; 2 &#039;&#039;&#039;WEEKS&#039;&#039;&#039;&#039;&#039;. If &amp;amp;lt;number&amp;amp;gt; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039; (choose one).&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
Several logical operators are available so that the user can search for items that match various criteria. To create more complex logical queries, parentheses () can be used to enclose parts of the query to ensure that they are evaluated in the correct order (much like parentheses in mathematics). An example is provided as the final item on the list below.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt; – Returns only items where both expressions are true. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah &#039;&#039;&#039;AND&#039;&#039;&#039; title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah) &#039;&#039;&#039;AND&#039;&#039;&#039; (title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah) ) &#039;&#039;&#039;OR&#039;&#039;&#039; (rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played &#039;&#039;&#039;AFTER&#039;&#039;&#039; first_played&#039;&#039;&lt;br /&gt;
* To obtain an exclusive-or (XOR/EOR), which is positive if only one expression is true but not both, you can use this: &#039;&#039;(&amp;lt;expression1&amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;lt;expression2&amp;gt;) &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; (&amp;lt;expression1&amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;lt;expression2&amp;gt;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; operator at the end of your search expression to have the results from the preceding quiery sorted by the specified title-formatting pattern. &lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; / &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;ASCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
====Case-sensitivity====&lt;br /&gt;
*All keywords (for example &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;HAS&#039;&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist &#039;&#039;&#039;HAS&#039;&#039;&#039; name&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field equals &amp;quot;NAME&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;Name&amp;quot;, and all other combinations of capital and small letters.&lt;br /&gt;
*To achieve a case-sensitive comparison between two parameters, use &#039;&#039;&amp;quot;$strcmp(%field%,string)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039; and so on. For more information about how to use title-formatting within query syntax, see the relevant section below.&lt;br /&gt;
&lt;br /&gt;
====Double quotation marks====&lt;br /&gt;
*&amp;amp;lt;field&amp;amp;gt; and &amp;amp;lt;string&amp;amp;gt; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;quot;MY BAND IS CALLED AND NOT&amp;quot; &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; releasetype &#039;&#039;&#039;IS&#039;&#039;&#039; Demo&#039;&#039;&lt;br /&gt;
====Simplified access to metadata fields====&lt;br /&gt;
Accessing metadata fields can be simplified: If &amp;amp;lt;field&amp;amp;gt; in &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, &#039;&#039;&#039;EQUAL&#039;&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications) or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
====Comparing two metadata fields====&lt;br /&gt;
As noted above, operators such as &#039;&#039;&#039;IS&#039;&#039;&#039; compare a field (on the left) to a string (on the right). If the user wishes, instead, to compare one field to another field, this can be done using title-formatting. Example: &#039;&#039;&amp;quot;$strcmp(%field1%,%field2%)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &amp;amp;lt;field&amp;amp;gt; in a (sub-)query using &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, or &#039;&#039;&#039;EQUAL&#039;&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the guidance given above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions that use parentheses, such as $info(codec)&lt;br /&gt;
*Using title formatting expressions to access metadata fields (e.g. &amp;quot;$meta(title)&amp;quot;) instead of simple field names (e.g. title) will decrease the speed of queries performed upon large libraries and will break handling of multi-value fields by the operator &#039;&#039;&#039;IS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Summary of operators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AFTER&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AND&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;BEFORE&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &#039;&#039;&#039;SECONDS&#039;&#039;&#039;/&#039;&#039;&#039;MINUTES&#039;&#039;&#039;/&#039;&#039;&#039;HOURS&#039;&#039;&#039;/&#039;&#039;&#039;DAYS&#039;&#039;&#039;/&#039;&#039;&#039;WEEKS&#039;&#039;&#039; &amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EQUAL&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;HAS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt&#039;&#039; or &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| See the main description above for information on the difference between &#039;&#039;&#039;HAS&#039;&#039;&#039; and &#039;&#039;&#039;*HAS&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LESS&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;MISSING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;NOT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt; &#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SINCE&#039;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; or &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039;ing expressions must be located at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25145</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25145"/>
		<updated>2013-06-02T00:52:59Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Placeholders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the syntax that can be used to query for files within the Media Library in [[Foobar2000:Foobar2000|foobar2000]].&lt;br /&gt;
&lt;br /&gt;
For a list of fields and functions that can be used in query syntax, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]].&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
===Formatting===&lt;br /&gt;
Query syntax includes various keywords, also called operators, which invoke specific behaviours. These must be typed in caps, for example DURING.&lt;br /&gt;
&lt;br /&gt;
To aid readability, in the following descriptions and examples, example queries (or fragments thereof) that the user could type into foobar2000 are written in &#039;&#039;italics&#039;&#039;. In addition, operators are written in &#039;&#039;&#039;bold&#039;&#039;&#039;. Such formatting is for readability only and need not/cannot be typed in foobar2000 itself.&lt;br /&gt;
&lt;br /&gt;
===Placeholders===&lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
* Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
The following common placeholders are used throughout this document: &lt;br /&gt;
* &amp;amp;lt;field&amp;amp;gt; – A reference to a field within the tags of files in the Media Library. This can be either a plain field name (e.g. artist) or a title formatting expression (e.g. &amp;quot;%artist%&amp;quot;). See the [[Foobar2000:Query_syntax#Guidelines|Guidelines]] below for details on these two methods of accessing fields.&lt;br /&gt;
* &amp;amp;lt;number&amp;amp;gt; – An integer value (whole number).&lt;br /&gt;
* &amp;amp;lt;string&amp;amp;gt; – A text value, which may be enclosed in double quotation marks. See the Guidelines for details.&lt;br /&gt;
* &amp;amp;lt;time&amp;amp;gt; – A time value or a title-formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] below for details.&lt;br /&gt;
* &amp;amp;lt;expression&amp;amp;gt; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords or functions: it is only used to search for a literal string within the Library.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from the specified string within their metadata and/or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &amp;amp;lt;string&amp;amp;gt; in metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &amp;amp;lt;field&amp;amp;gt; is equal to &amp;amp;lt;string&amp;amp;gt;. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;ALL&#039;&#039;&#039;&#039;&#039; - No operators can be used. This single keyword simply returns all items within the Media Library.&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &amp;amp;lt;field&amp;amp;gt; and a &amp;amp;lt;number&amp;amp;gt;. For example: &#039;&#039;rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039; – Returns only items that have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;BEFORE&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is after &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;AFTER&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is not before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;SINCE&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is a subset of &amp;amp;lt;time2&amp;amp;gt; period. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &amp;amp;lt;time&amp;amp;gt; value is contained in the specified period. &amp;amp;lt;time-unit&amp;amp;gt; can be one of &#039;&#039;&#039;SECONDS&#039;&#039;&#039;, &#039;&#039;&#039;MINUTES&#039;&#039;&#039;, &#039;&#039;&#039;HOURS&#039;&#039;&#039;, &#039;&#039;&#039;DAYS&#039;&#039;&#039;, or &#039;&#039;&#039;WEEKS&#039;&#039;&#039;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; 2 &#039;&#039;&#039;WEEKS&#039;&#039;&#039;&#039;&#039;. If &amp;amp;lt;number&amp;amp;gt; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039; (choose one).&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
Several logical operators are available so that the user can search for items that match various criteria. To create more complex logical queries, parentheses () can be used to enclose parts of the query to ensure that they are evaluated in the correct order (much like parentheses in mathematics). An example is provided as the final item on the list below.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt; – Returns only items where both expressions are true. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah &#039;&#039;&#039;AND&#039;&#039;&#039; title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah) &#039;&#039;&#039;AND&#039;&#039;&#039; (title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah) ) &#039;&#039;&#039;OR&#039;&#039;&#039; (rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played &#039;&#039;&#039;AFTER&#039;&#039;&#039; first_played&#039;&#039;&lt;br /&gt;
* To obtain an exclusive-or (XOR/EOR), which is positive if only one expression is true but not both, you can use this: &#039;&#039;(&amp;lt;expression1&amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;lt;expression2&amp;gt;) &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; (&amp;lt;expression1&amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;lt;expression2&amp;gt;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; operator at the end of your search expression to have the results from the preceding quiery sorted by the specified title-formatting pattern. &lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; / &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;ASCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
====Case-sensitivity====&lt;br /&gt;
*All keywords (for example &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;HAS&#039;&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist &#039;&#039;&#039;HAS&#039;&#039;&#039; name&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field equals &amp;quot;NAME&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;Name&amp;quot;, and all other combinations of capital and small letters.&lt;br /&gt;
*To achieve a case-sensitive comparison between two parameters, use &#039;&#039;&amp;quot;$strcmp(%field%,string)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039; and so on. For more information on how to mix title-formatting in query syntax, see the relevant section below.&lt;br /&gt;
====Double quotation marks====&lt;br /&gt;
*&amp;amp;lt;field&amp;amp;gt; and &amp;amp;lt;string&amp;amp;gt; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;quot;MY BAND IS CALLED AND NOT&amp;quot; &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; releasetype &#039;&#039;&#039;IS&#039;&#039;&#039; Demo&#039;&#039;&lt;br /&gt;
====Simplified access to metadata fields====&lt;br /&gt;
Accessing metadata fields can be simplified: If &amp;amp;lt;field&amp;amp;gt; in &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, &#039;&#039;&#039;EQUAL&#039;&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications) or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
====Comparing two metadata fields====&lt;br /&gt;
As noted above, operators such as &#039;&#039;&#039;IS&#039;&#039;&#039; compare a field (on the left) to a string (on the right). If the user wishes, instead, to compare one field to another field, this can be done using title-formatting. Example: &#039;&#039;&amp;quot;$strcmp(%field1%,%field2%)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &amp;amp;lt;field&amp;amp;gt; in a (sub-)query using &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, or &#039;&#039;&#039;EQUAL&#039;&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the guidance given above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions that use parentheses, such as $info(codec)&lt;br /&gt;
*Using title formatting expressions to access metadata fields (e.g. &amp;quot;$meta(title)&amp;quot;) instead of simple field names (e.g. title) will decrease the speed of queries performed upon large libraries and will break handling of multi-value fields by the operator &#039;&#039;&#039;IS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Summary of operators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AFTER&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AND&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;BEFORE&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &#039;&#039;&#039;SECONDS&#039;&#039;&#039;/&#039;&#039;&#039;MINUTES&#039;&#039;&#039;/&#039;&#039;&#039;HOURS&#039;&#039;&#039;/&#039;&#039;&#039;DAYS&#039;&#039;&#039;/&#039;&#039;&#039;WEEKS&#039;&#039;&#039; &amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EQUAL&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;HAS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt&#039;&#039; or &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| See the main description above for information on the difference between &#039;&#039;&#039;HAS&#039;&#039;&#039; and &#039;&#039;&#039;*HAS&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LESS&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;MISSING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;NOT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt; &#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SINCE&#039;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; or &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039;ing expressions must be located at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25144</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=25144"/>
		<updated>2013-06-02T00:50:46Z</updated>

		<summary type="html">&lt;p&gt;Db1989: formatting, some more examples, clarifying some points&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the syntax that can be used to query for files within the Media Library in [[Foobar2000:Foobar2000|foobar2000]].&lt;br /&gt;
&lt;br /&gt;
For a list of fields and functions that can be used in query syntax, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]].&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
===Formatting===&lt;br /&gt;
Query syntax includes various keywords, also called operators, which invoke specific behaviours. These must be typed in caps, for example DURING.&lt;br /&gt;
&lt;br /&gt;
To aid readability, in the following descriptions and examples, example queries (or fragments thereof) that the user could type into foobar2000 are written in &#039;&#039;italics&#039;&#039;. In addition, operators are written in &#039;&#039;&#039;bold&#039;&#039;&#039;. Such formatting is for readability only and need not/cannot be typed in foobar2000 itself.&lt;br /&gt;
&lt;br /&gt;
===Placeholders===&lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
* Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
The following common placeholders are used throughout this document: &lt;br /&gt;
* &amp;amp;lt;field&amp;amp;gt; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Guidelines|Guidelines]] below for details.&lt;br /&gt;
* &amp;amp;lt;number&amp;amp;gt; – An integer value (whole number).&lt;br /&gt;
* &amp;amp;lt;string&amp;amp;gt; – A text value, which may be enclosed in double quotation marks. See the Guidelines for details.&lt;br /&gt;
* &amp;amp;lt;time&amp;amp;gt; – A time value or a title-formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] below for details.&lt;br /&gt;
* &amp;amp;lt;expression&amp;amp;gt; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords or functions: it is only used to search for a literal string within the Library.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from the specified string within their metadata and/or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &amp;amp;lt;string&amp;amp;gt; in metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &amp;amp;lt;field&amp;amp;gt; is equal to &amp;amp;lt;string&amp;amp;gt;. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;ALL&#039;&#039;&#039;&#039;&#039; - No operators can be used. This single keyword simply returns all items within the Media Library.&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &amp;amp;lt;field&amp;amp;gt; and a &amp;amp;lt;number&amp;amp;gt;. For example: &#039;&#039;rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039; – Returns only items that have a metadata field named &amp;amp;lt;field&amp;amp;gt;. Example: &#039;&#039;genre &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;BEFORE&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is after &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;AFTER&#039;&#039;&#039; 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is not before &amp;amp;lt;time2&amp;amp;gt;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;SINCE&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &amp;amp;lt;time1&amp;amp;gt; value is a subset of &amp;amp;lt;time2&amp;amp;gt; period. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &amp;amp;lt;time&amp;amp;gt; value is contained in the specified period. &amp;amp;lt;time-unit&amp;amp;gt; can be one of &#039;&#039;&#039;SECONDS&#039;&#039;&#039;, &#039;&#039;&#039;MINUTES&#039;&#039;&#039;, &#039;&#039;&#039;HOURS&#039;&#039;&#039;, &#039;&#039;&#039;DAYS&#039;&#039;&#039;, or &#039;&#039;&#039;WEEKS&#039;&#039;&#039;. Example: &#039;&#039;%last_modified% &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; 2 &#039;&#039;&#039;WEEKS&#039;&#039;&#039;&#039;&#039;. If &amp;amp;lt;number&amp;amp;gt; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039; (choose one).&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
Several logical operators are available so that the user can search for items that match various criteria. To create more complex logical queries, parentheses () can be used to enclose parts of the query to ensure that they are evaluated in the correct order (much like parentheses in mathematics). An example is provided as the final item on the list below.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt; – Returns only items where both expressions are true. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah &#039;&#039;&#039;AND&#039;&#039;&#039; title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist &#039;&#039;&#039;IS&#039;&#039;&#039; blah) &#039;&#039;&#039;AND&#039;&#039;&#039; (title &#039;&#039;&#039;HAS&#039;&#039;&#039; blah) ) &#039;&#039;&#039;OR&#039;&#039;&#039; (rating &#039;&#039;&#039;GREATER&#039;&#039;&#039; 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played &#039;&#039;&#039;AFTER&#039;&#039;&#039; first_played&#039;&#039;&lt;br /&gt;
* To obtain an exclusive-or (XOR/EOR), which is positive if only one expression is true but not both, you can use this: &#039;&#039;(&amp;lt;expression1&amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;lt;expression2&amp;gt;) &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; (&amp;lt;expression1&amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;lt;expression2&amp;gt;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; operator at the end of your search expression to have the results from the preceding quiery sorted by the specified title-formatting pattern. &lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; / &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;ASCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
====Case-sensitivity====&lt;br /&gt;
*All keywords (for example &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;HAS&#039;&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist &#039;&#039;&#039;HAS&#039;&#039;&#039; name&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field equals &amp;quot;NAME&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;Name&amp;quot;, and all other combinations of capital and small letters.&lt;br /&gt;
*To achieve a case-sensitive comparison between two parameters, use &#039;&#039;&amp;quot;$strcmp(%field%,string)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039; and so on. For more information on how to mix title-formatting in query syntax, see the relevant section below.&lt;br /&gt;
====Double quotation marks====&lt;br /&gt;
*&amp;amp;lt;field&amp;amp;gt; and &amp;amp;lt;string&amp;amp;gt; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;quot;MY BAND IS CALLED AND NOT&amp;quot; &#039;&#039;&#039;AND&#039;&#039;&#039; &#039;&#039;&#039;NOT&#039;&#039;&#039; releasetype &#039;&#039;&#039;IS&#039;&#039;&#039; Demo&#039;&#039;&lt;br /&gt;
====Simplified access to metadata fields====&lt;br /&gt;
Accessing metadata fields can be simplified: If &amp;amp;lt;field&amp;amp;gt; in &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, &#039;&#039;&#039;EQUAL&#039;&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist &#039;&#039;&#039;IS&#039;&#039;&#039; Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications) or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
====Comparing two metadata fields====&lt;br /&gt;
As noted above, operators such as &#039;&#039;&#039;IS&#039;&#039;&#039; compare a field (on the left) to a string (on the right). If the user wishes, instead, to compare one field to another field, this can be done using title-formatting. Example: &#039;&#039;&amp;quot;$strcmp(%field1%,%field2%)&amp;quot; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &amp;amp;lt;field&amp;amp;gt; in a (sub-)query using &#039;&#039;&#039;HAS&#039;&#039;&#039;, &#039;&#039;&#039;IS&#039;&#039;&#039;, &#039;&#039;&#039;GREATER&#039;&#039;&#039;, &#039;&#039;&#039;LESS&#039;&#039;&#039;, or &#039;&#039;&#039;EQUAL&#039;&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the guidance given above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions that use parentheses, such as $info(codec)&lt;br /&gt;
*Using title formatting expressions to access metadata fields (e.g. &amp;quot;$meta(title)&amp;quot;) instead of simple field names (e.g. title) will decrease the speed of queries performed upon large libraries and will break handling of multi-value fields by the operator &#039;&#039;&#039;IS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Summary of operators==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AFTER&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;AFTER&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AND&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;AND&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;BEFORE&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;BEFORE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &#039;&#039;&#039;SECONDS&#039;&#039;&#039;/&#039;&#039;&#039;MINUTES&#039;&#039;&#039;/&#039;&#039;&#039;HOURS&#039;&#039;&#039;/&#039;&#039;&#039;DAYS&#039;&#039;&#039;/&#039;&#039;&#039;WEEKS&#039;&#039;&#039; &amp;amp;lt;time&amp;amp;gt; &#039;&#039;&#039;DURING&#039;&#039;&#039; &#039;&#039;&#039;LAST&#039;&#039;&#039; &#039;&#039;&#039;SECOND&#039;&#039;&#039;/&#039;&#039;&#039;MINUTE&#039;&#039;&#039;/&#039;&#039;&#039;HOUR&#039;&#039;&#039;/&#039;&#039;&#039;DAY&#039;&#039;&#039;/&#039;&#039;&#039;WEEK&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EQUAL&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;EQUAL&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;GREATER&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;HAS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt&#039;&#039; or &#039;&#039;&#039;&#039;&#039;*HAS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| See the main description above for information on the difference between &#039;&#039;&#039;HAS&#039;&#039;&#039; and &#039;&#039;&#039;*HAS&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;IS&#039;&#039;&#039; &amp;amp;lt;string&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LESS&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;LESS&#039;&#039;&#039; &amp;amp;lt;number&amp;amp;gt; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;MISSING&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;MISSING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;NOT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;NOT&#039;&#039;&#039; &amp;amp;lt;expression&amp;amp;gt; &#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; &#039;&#039;&#039;OR&#039;&#039;&#039; &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; &#039;&#039;&#039;PRESENT&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SINCE&#039;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; &#039;&#039;&#039;SINCE&#039;&#039;&#039; &amp;amp;lt;time2&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt; or &#039;&#039;&#039;&#039;&#039;SORT&#039;&#039;&#039; &#039;&#039;&#039;DESCENDING&#039;&#039;&#039; &#039;&#039;&#039;BY&#039;&#039;&#039; &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;SORT&#039;&#039;&#039;ing expressions must be located at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23204</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23204"/>
		<updated>2012-06-30T09:21:13Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Time expressions */ Percentage symbols are required around foo_playcount-supplied fields&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[Foobar2000:Foobar2000|foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;rating GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;rating GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;%last_modified% BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;%last_modified% AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;%last_modified% SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;%last_modified% DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;%last_modified% DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (rating GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played AFTER first_played&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
====Case-sensitivity====&lt;br /&gt;
*All keywords (for example &#039;&#039;IS&#039;&#039;, &#039;&#039;HAS&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist HAS NAME&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field is &#039;&#039;NAME&#039;&#039;, &#039;&#039;name&#039;&#039;, &#039;&#039;Name&#039;&#039;, and all other combinations of capital and small letters.&lt;br /&gt;
====Double quotation marks====&lt;br /&gt;
*&#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist IS &amp;quot;CONTRIVED EXAMPLE AND NOT&amp;quot; AND NOT releasetype IS Demo&#039;&#039;&lt;br /&gt;
====Simplified access to metadata fields====&lt;br /&gt;
*Accessing metadata fields can be simplified: If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications); or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, or &#039;&#039;EQUAL&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the third point listed above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions that use parentheses, such as &#039;&#039;$info(codec)&#039;&#039;&lt;br /&gt;
*Using title formatting expressions (e.g. &#039;&#039;&amp;quot;$meta(title)&amp;quot;&#039;&#039;) instead of simple field names (e.g. &#039;&#039;title&#039;&#039;) will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23203</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23203"/>
		<updated>2012-06-30T09:19:46Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Guidelines */ :S&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[Foobar2000:Foobar2000|foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;rating GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;rating GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;last_modified DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;last_modified DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (rating GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played AFTER first_played&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
====Case-sensitivity====&lt;br /&gt;
*All keywords (for example &#039;&#039;IS&#039;&#039;, &#039;&#039;HAS&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist HAS NAME&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field is &#039;&#039;NAME&#039;&#039;, &#039;&#039;name&#039;&#039;, &#039;&#039;Name&#039;&#039;, and all other combinations of capital and small letters.&lt;br /&gt;
====Double quotation marks====&lt;br /&gt;
*&#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist IS &amp;quot;CONTRIVED EXAMPLE AND NOT&amp;quot; AND NOT releasetype IS Demo&#039;&#039;&lt;br /&gt;
====Simplified access to metadata fields====&lt;br /&gt;
*Accessing metadata fields can be simplified: If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications); or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, or &#039;&#039;EQUAL&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the third point listed above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions that use parentheses, such as &#039;&#039;$info(codec)&#039;&#039;&lt;br /&gt;
*Using title formatting expressions (e.g. &#039;&#039;&amp;quot;$meta(title)&amp;quot;&#039;&#039;) instead of simple field names (e.g. &#039;&#039;title&#039;&#039;) will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23202</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23202"/>
		<updated>2012-06-30T09:16:32Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[Foobar2000:Foobar2000|foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;rating GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;rating GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;last_modified DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;last_modified DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (rating GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played AFTER first_played&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
====Case-sensitivity====&lt;br /&gt;
*All keywords (for example &#039;&#039;IS&#039;&#039;, &#039;&#039;HAS&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist HAS NAME&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field is &#039;&#039;NAME&#039;&#039;, &#039;&#039;name&#039;&#039;, &#039;&#039;Name&#039;&#039;, and all other combinations of capital and small letters.&lt;br /&gt;
====Double quotation marks====&lt;br /&gt;
*Any expression that includes one or more of the [[Foobar2000:Title Formatting Introduction|reserved characters such as &#039;&#039;(&#039;&#039;, &#039;&#039;)&#039;&#039;, &#039;&#039;%&#039;&#039;, &#039;&#039;etc.&#039;&#039;]] should be wrapped in double quotation marks in order to have these used literally rather than as shortcuts to commands.&lt;br /&gt;
*&#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist IS &amp;quot;CONTRIVED EXAMPLE AND NOT&amp;quot; AND NOT releasetype IS Demo&#039;&#039;&lt;br /&gt;
====Simplified access to metadata fields====&lt;br /&gt;
*Accessing metadata fields can be simplified: If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications); or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, or &#039;&#039;EQUAL&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the third point listed above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions containing reserved characters, as noted in &#039;&#039;General&#039;&#039; above.&lt;br /&gt;
*Using title formatting expressions (e.g. &#039;&#039;&amp;quot;$meta(title)&amp;quot;&#039;&#039;) instead of simple field names (e.g. &#039;&#039;title&#039;&#039;) will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23201</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23201"/>
		<updated>2012-06-30T09:14:37Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Notes */ Renamed to Guidelines, incorporating important corrections taken from this post: hydrogenaudio.org/forums/index.php?showtopic=95796#entry800685&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[Foobar2000:Foobar2000|foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;rating GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;rating GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;last_modified DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;last_modified DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (rating GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played AFTER first_played&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
===General===&lt;br /&gt;
*All keywords (for example &#039;&#039;IS&#039;&#039;, &#039;&#039;HAS&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist HAS NAME&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field is &#039;&#039;NAME&#039;&#039;, &#039;&#039;name&#039;&#039;, &#039;&#039;Name&#039;&#039;, and all other combinations of capital and small letters.&lt;br /&gt;
*Any expression that includes one or more of the [[Title Formatting Introduction|reserved characters such as &#039;&#039;(&#039;&#039;, &#039;&#039;)&#039;&#039;, &#039;&#039;%&#039;&#039;, &#039;&#039;etc.&#039;&#039;]] should be wrapped in double quotation marks in order to have these used literally rather than as shortcuts to commands.&lt;br /&gt;
*&#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*Accessing metadata fields can be simplified: If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;. However, this simplified method of formatting cannot be used to access/query technical information (such as codec specifications); or component-provided information: for that, the user must use title-formatting, as detailed below.&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist IS &amp;quot;CONTRIVED EXAMPLE AND NOT&amp;quot; AND NOT releasetype IS Demo&#039;&#039;&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, or &#039;&#039;EQUAL&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the third point listed above in General.&lt;br /&gt;
*Double quotation marks should also be included around title-formatting expressions containing reserved characters, as noted in &#039;&#039;General&#039;&#039; above.&lt;br /&gt;
*Using title formatting expressions (e.g. &#039;&#039;&amp;quot;$meta(title)&amp;quot;&#039;&#039;) instead of simple field names (e.g. &#039;&#039;title&#039;&#039;) will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23195</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23195"/>
		<updated>2012-06-25T08:43:56Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Title-formatting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[Foobar2000:Foobar2000|foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;rating GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;rating GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;last_modified DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;last_modified DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (rating GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played AFTER first_played&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
===General===&lt;br /&gt;
*All keywords (for example &#039;&#039;IS&#039;&#039;, &#039;&#039;HAS&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist HAS NAME&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field is &#039;&#039;NAME&#039;&#039;, &#039;&#039;name&#039;&#039;, &#039;&#039;Name&#039;&#039;, and all other combinations of capital and small letters.&lt;br /&gt;
*&#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*Accessing metadata fields can be simplified: If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist IS &amp;quot;CONTRIVED EXAMPLE AND NOT&amp;quot; AND NOT releasetype IS Demo&#039;&#039;&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, or &#039;&#039;EQUAL&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the third point listed above in General.&lt;br /&gt;
*Using title formatting expressions (e.g. &#039;&#039;&amp;quot;$meta(title)&amp;quot;&#039;&#039;) instead of simple field names (e.g. &#039;&#039;title&#039;&#039;) will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
*Title-formatting cannot be used to access/query technical information (such as codec specifications); or component-provided information, besides [[Foobar2000:Components/Playback Statistics v3.x (foo_playcount)#Title formatting fields|the fields added]] by the official [[Foobar2000:Components/Playback Statistics v3.x (foo_playcount)|foo_playcount]].&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23194</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23194"/>
		<updated>2012-06-25T07:42:55Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[Foobar2000:Foobar2000|foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;rating GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;rating GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;last_modified DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;last_modified DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (rating GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played AFTER first_played&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
===General===&lt;br /&gt;
*All keywords (for example &#039;&#039;IS&#039;&#039;, &#039;&#039;HAS&#039;&#039;) must be written in upper-case.&lt;br /&gt;
*All search expressions, on the other hand, are non–case-sensitive. For example, &#039;&#039;artist HAS NAME&#039;&#039; will find tracks whose &#039;&#039;artist&#039;&#039; field is &#039;&#039;NAME&#039;&#039;, &#039;&#039;name&#039;&#039;, &#039;&#039;Name&#039;&#039;, and all other combinations of capital and small letters.&lt;br /&gt;
*&#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my favourite field or string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
*Accessing metadata fields can be simplified: If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;&lt;br /&gt;
*In the rare event of complex syntax in which a search expression contains keywords in a way that could introduce ambiguity, enclose the search expression (and hence its embedded &#039;keywords&#039;) within double quotation marks. For example: &#039;&#039;artist IS &amp;quot;CONTRIVED EXAMPLE AND NOT&amp;quot; AND NOT releasetype IS Demo&#039;&#039;&lt;br /&gt;
===Title-formatting===&lt;br /&gt;
*If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, or &#039;&#039;EQUAL&#039;&#039; includes at least one of the characters #, $, or %, it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the title-formatting expression will be parsed, and its end-result will take its place, before the actual query is carried out.&lt;br /&gt;
*If spaces are likely to occur in the end result, the title-formatting expression should be enclosed within double quotation marks (&amp;quot;), in line with the third point listed above in General.&lt;br /&gt;
*Using title formatting expressions (e.g. &#039;&#039;&amp;quot;$meta(title)&amp;quot;&#039;&#039;) instead of simple field names (e.g. &#039;&#039;title&#039;&#039;) will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
*Title-formatting cannot be used to access/query technical information (such as codec specifications); or component-provided information, besides [[Foobar2000:Components/Playback Statistics v3.x (foo_playcount)#Title formatting fields|the fields added]] by the official [[Foobar2000:Components/Playback Statistics v3.x (foo_playcount)#foo_playcount]].&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=23154</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=23154"/>
		<updated>2012-04-30T19:41:02Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{title|foobar2000}}&lt;br /&gt;
&lt;br /&gt;
{{Software Infobox|&lt;br /&gt;
|name = foobar2000&lt;br /&gt;
|logo = [[Image:foobar2000 Logo.png|48px]]&lt;br /&gt;
|screenshot = [[Image:Foobar2000-1.0-default-ui.png|250px]]&lt;br /&gt;
|caption = Screenshot of foobar2000 v1.0 using the default user interface&lt;br /&gt;
|maintainer = Peter Pawlowski&lt;br /&gt;
|stable_release = 1.1.11&lt;br /&gt;
|preview_release = 1.1.12 beta 4&lt;br /&gt;
|operating_system = Windows&lt;br /&gt;
|use = Media Player&lt;br /&gt;
|license = Proprietary, BSD&lt;br /&gt;
|website = [http://www.foobar2000.org/ www.foobar2000.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;foobar2000&#039;&#039;&#039; is an advanced freeware audio player for the Windows platform. Some of the basic features include full unicode support, ReplayGain support and native support for several popular audio formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest stable version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.11]&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The latest preview version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.12 beta 4]&lt;br /&gt;
&lt;br /&gt;
== Platforms ==&lt;br /&gt;
&lt;br /&gt;
foobar2000 has been written specifically for the Windows platform, and there are no plans to port it to any others.  However, although not officially supported, it is known to run on [http://www.hydrogenaudio.org/forums/index.php?showtopic=54933 Linux] and [http://www.hydrogenaudio.org/forums/index.php?showtopic=77261 Mac OS X] through Wine and WineBottler, respectively.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Powerful open component architecture allowing third-party developers to extend functionality of the player, including the ability to fully replace the user interface.&lt;br /&gt;
* Full Unicode support: File names, user interface, tagging, etc.&lt;br /&gt;
* [[ReplayGain]] support: Both playback and writing ReplayGain information to file tags.&lt;br /&gt;
* [[Gapless playback]].&lt;br /&gt;
* Advanced [[tagging]] capabilities - through built-in [[foobar2000:Properties|Properties dialog]] and various optional tagging-related components.&lt;br /&gt;
* Built-in [[foobar2000:Preferences:Media Library|Media Library]] functionality.&lt;br /&gt;
** Intuitive [[foobar2000:Query syntax|query syntax]] for searching the Media Library.&lt;br /&gt;
** [[foobar2000:Autoplaylist|Autoplaylist]] support: Generate dynamically updating playlists based on queries.&lt;br /&gt;
* [[foobar2000:Preferences:General:Keyboard Shortcuts|Customizable keyboard shortcuts]].&lt;br /&gt;
* Support for transcoding all supported audio formats using the [[Foobar2000:Converter|Converter component]] (requires external command-line encoder executables for different output formats).&lt;br /&gt;
* [[Secure_ripping|Secure]] [[foobar2000:Ripping CDs|CD ripping]].&lt;br /&gt;
* Streaming support.&lt;br /&gt;
* Efficient handling of large playlists.&lt;br /&gt;
* [[foobar2000:Components/Default_user_interface_%28foo_ui_std%29|User interface]] with simple configuration to create even complex layouts quickly and easily.&lt;br /&gt;
* Highly customizable display of track information using [[foobar2000:Titleformat_Introduction|title formatting scripts]].&lt;br /&gt;
&lt;br /&gt;
==Supported audio formats==&lt;br /&gt;
Natively supported (&amp;quot;out-of-the-box&amp;quot;):&lt;br /&gt;
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[Speex]], [[WavPack]], [[WAV]], [[AIFF]], [[AU|AU/SND]], [[CDDA]], [[WMA]], [[Matroska]], [[ALAC]], [[MMS]], [[RSTP]].&lt;br /&gt;
Supported through optional components:&lt;br /&gt;
* [[TTA]], [[Monkey&#039;s Audio]], [[MOD]], [[SPC]], [[Shorten]], [[OptimFROG]], [[AC3]], [[DTS]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[TAK]], [[AMR]], &#039;&#039;etc.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play audio files within ZIP and RAR archives (typically compressed) directly, &#039;&#039;i.e.&#039;&#039; without requiring the user to extract the files first. More archive formats are supported &#039;&#039;via&#039;&#039; additional components: [http://www.foobar2000.org/components/view/foo_unpack_lha LHA/LZH], [http://www.foobar2000.org/components/view/foo_unpack_7z 7-Zip], [http://kode54.foobar2000.org/ JMA]&lt;br /&gt;
&lt;br /&gt;
== Using foobar2000 ==&lt;br /&gt;
&lt;br /&gt;
=== Important pages ===&lt;br /&gt;
* [http://www.foobar2000.org/FAQ foobar2000 FAQ]&lt;br /&gt;
* [[foobar2000:components|foobar2000 Components]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&lt;br /&gt;
* [[foobar2000:FAQ|foobar2000 FAQ (unofficial)]]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Guides foobar2000 Guides (category)]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Preferences foobar2000 Preferences (category)]&lt;br /&gt;
&lt;br /&gt;
=== Specific guides ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preferences&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Preferences|Preferences dialog]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metadata&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Properties|Tag editing: the Properties dialog]]&lt;br /&gt;
* [[foobar2000:Query syntax|Query Syntax]]: details of Syntax for querying metadata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title formatting&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Title Formatting Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* [[foobar2000:Title Formatting Reference|Titleformat Reference]]: reference guide to all fields and functions&lt;br /&gt;
* [[foobar2000:Titleformat Examples|Titleformat Examples]]: user-submitted code for various purposes; submit your own!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Others&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:File operations|File operations dialog]]: move, copy, rename, and delete files from within foobar2000&lt;br /&gt;
* [[foobar2000:Commandline Guide|Commandline usage]]&lt;br /&gt;
&lt;br /&gt;
=== External Guides ===&lt;br /&gt;
* [http://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide].&lt;br /&gt;
* [http://foobar2000.xrea.jp/ fb2k Wiki Page] for Japanese users.&lt;br /&gt;
* [http://winamp2foobar.blogspot.com Winamp To Foobar Guide] with information relevant for general users also.&lt;br /&gt;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
* [[foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]&lt;br /&gt;
* [[foobar2000:Metadata Compatibility|Metadata Compatibility]]: information about compatibility with metadata written by other applications&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
=== Official Site ===&lt;br /&gt;
* [http://www.foobar2000.org foobar2000.org: Homepage]&lt;br /&gt;
* [http://www.foobar2000.org/download foobar2000.org: Download]&lt;br /&gt;
* [http://www.foobar2000.org/components foobar2000.org: Components]&lt;br /&gt;
&lt;br /&gt;
=== Community ===&lt;br /&gt;
* [http://forums.foobar2000.org/ Official foobar2000 forum]&lt;br /&gt;
* [http://foobar-users.de/ German Support Forum]&lt;br /&gt;
* [http://foobar2000.pl/ Polish Support Forum]&lt;br /&gt;
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar2000.ru/forum/ Another Russian-language forum]&lt;br /&gt;
&lt;br /&gt;
=== Appearance ===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=61333 Default UI .fth Thread] Fast way to clone another&#039;s DUI Configuration.&lt;br /&gt;
* [[foobar2000:Preferences:Columns UI/Appearance|Columns UI appearance customization guides]]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31027 Columns UI configurations]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000]]&lt;br /&gt;
[[Category:Media Players|foobar2000]]&lt;br /&gt;
[[Category:CD Rippers]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Tag editors]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=23153</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=23153"/>
		<updated>2012-04-30T19:40:39Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Fixing info on archives (it had lost RAR, saying just “from compressed ZIP and without requiring” / Updating versions / etc.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{title|foobar2000}}&lt;br /&gt;
&lt;br /&gt;
{{Software Infobox|&lt;br /&gt;
|name = foobar2000&lt;br /&gt;
|logo = [[Image:foobar2000 Logo.png|48px]]&lt;br /&gt;
|screenshot = [[Image:Foobar2000-1.0-default-ui.png|250px]]&lt;br /&gt;
|caption = Screenshot of foobar2000 v1.0 using the default user interface&lt;br /&gt;
|maintainer = Peter Pawlowski&lt;br /&gt;
|stable_release = 1.1.11&lt;br /&gt;
|preview_release = 1.1.12 beta 4&lt;br /&gt;
|operating_system = Windows&lt;br /&gt;
|use = Media Player&lt;br /&gt;
|license = Proprietary, BSD&lt;br /&gt;
|website = [http://www.foobar2000.org/ www.foobar2000.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;foobar2000&#039;&#039;&#039; is an advanced freeware audio player for the Windows platform. Some of the basic features include full unicode support, ReplayGain support and native support for several popular audio formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest stable version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.11]&lt;br /&gt;
&#039;&#039;&#039;The latest preview version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.12 beta 4]&lt;br /&gt;
&lt;br /&gt;
== Platforms ==&lt;br /&gt;
&lt;br /&gt;
foobar2000 has been written specifically for the Windows platform, and there are no plans to port it to any others.  However, although not officially supported, it is known to run on [http://www.hydrogenaudio.org/forums/index.php?showtopic=54933 Linux] and [http://www.hydrogenaudio.org/forums/index.php?showtopic=77261 Mac OS X] through Wine and WineBottler, respectively.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Powerful open component architecture allowing third-party developers to extend functionality of the player, including the ability to fully replace the user interface.&lt;br /&gt;
* Full Unicode support: File names, user interface, tagging, etc.&lt;br /&gt;
* [[ReplayGain]] support: Both playback and writing ReplayGain information to file tags.&lt;br /&gt;
* [[Gapless playback]].&lt;br /&gt;
* Advanced [[tagging]] capabilities - through built-in [[foobar2000:Properties|Properties dialog]] and various optional tagging-related components.&lt;br /&gt;
* Built-in [[foobar2000:Preferences:Media Library|Media Library]] functionality.&lt;br /&gt;
** Intuitive [[foobar2000:Query syntax|query syntax]] for searching the Media Library.&lt;br /&gt;
** [[foobar2000:Autoplaylist|Autoplaylist]] support: Generate dynamically updating playlists based on queries.&lt;br /&gt;
* [[foobar2000:Preferences:General:Keyboard Shortcuts|Customizable keyboard shortcuts]].&lt;br /&gt;
* Support for transcoding all supported audio formats using the [[Foobar2000:Converter|Converter component]] (requires external command-line encoder executables for different output formats).&lt;br /&gt;
* [[Secure_ripping|Secure]] [[foobar2000:Ripping CDs|CD ripping]].&lt;br /&gt;
* Streaming support.&lt;br /&gt;
* Efficient handling of large playlists.&lt;br /&gt;
* [[foobar2000:Components/Default_user_interface_%28foo_ui_std%29|User interface]] with simple configuration to create even complex layouts quickly and easily.&lt;br /&gt;
* Highly customizable display of track information using [[foobar2000:Titleformat_Introduction|title formatting scripts]].&lt;br /&gt;
&lt;br /&gt;
==Supported audio formats==&lt;br /&gt;
Natively supported (&amp;quot;out-of-the-box&amp;quot;):&lt;br /&gt;
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[Speex]], [[WavPack]], [[WAV]], [[AIFF]], [[AU|AU/SND]], [[CDDA]], [[WMA]], [[Matroska]], [[ALAC]], [[MMS]], [[RSTP]].&lt;br /&gt;
Supported through optional components:&lt;br /&gt;
* [[TTA]], [[Monkey&#039;s Audio]], [[MOD]], [[SPC]], [[Shorten]], [[OptimFROG]], [[AC3]], [[DTS]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[TAK]], [[AMR]], &#039;&#039;etc.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play audio files within ZIP and RAR archives (typically compressed) directly, &#039;&#039;i.e.&#039;&#039; without requiring the user to extract the files first. More archive formats are supported &#039;&#039;via&#039;&#039; additional components: [http://www.foobar2000.org/components/view/foo_unpack_lha LHA/LZH], [http://www.foobar2000.org/components/view/foo_unpack_7z 7-Zip], [http://kode54.foobar2000.org/ JMA]&lt;br /&gt;
&lt;br /&gt;
== Using foobar2000 ==&lt;br /&gt;
&lt;br /&gt;
=== Important pages ===&lt;br /&gt;
* [http://www.foobar2000.org/FAQ foobar2000 FAQ]&lt;br /&gt;
* [[foobar2000:components|foobar2000 Components]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&lt;br /&gt;
* [[foobar2000:FAQ|foobar2000 FAQ (unofficial)]]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Guides foobar2000 Guides (category)]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Preferences foobar2000 Preferences (category)]&lt;br /&gt;
&lt;br /&gt;
=== Specific guides ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preferences&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Preferences|Preferences dialog]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metadata&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Properties|Tag editing: the Properties dialog]]&lt;br /&gt;
* [[foobar2000:Query syntax|Query Syntax]]: details of Syntax for querying metadata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title formatting&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Title Formatting Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* [[foobar2000:Title Formatting Reference|Titleformat Reference]]: reference guide to all fields and functions&lt;br /&gt;
* [[foobar2000:Titleformat Examples|Titleformat Examples]]: user-submitted code for various purposes; submit your own!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Others&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:File operations|File operations dialog]]: move, copy, rename, and delete files from within foobar2000&lt;br /&gt;
* [[foobar2000:Commandline Guide|Commandline usage]]&lt;br /&gt;
&lt;br /&gt;
=== External Guides ===&lt;br /&gt;
* [http://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide].&lt;br /&gt;
* [http://foobar2000.xrea.jp/ fb2k Wiki Page] for Japanese users.&lt;br /&gt;
* [http://winamp2foobar.blogspot.com Winamp To Foobar Guide] with information relevant for general users also.&lt;br /&gt;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
* [[foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]&lt;br /&gt;
* [[foobar2000:Metadata Compatibility|Metadata Compatibility]]: information about compatibility with metadata written by other applications&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
=== Official Site ===&lt;br /&gt;
* [http://www.foobar2000.org foobar2000.org: Homepage]&lt;br /&gt;
* [http://www.foobar2000.org/download foobar2000.org: Download]&lt;br /&gt;
* [http://www.foobar2000.org/components foobar2000.org: Components]&lt;br /&gt;
&lt;br /&gt;
=== Community ===&lt;br /&gt;
* [http://forums.foobar2000.org/ Official foobar2000 forum]&lt;br /&gt;
* [http://foobar-users.de/ German Support Forum]&lt;br /&gt;
* [http://foobar2000.pl/ Polish Support Forum]&lt;br /&gt;
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar2000.ru/forum/ Another Russian-language forum]&lt;br /&gt;
&lt;br /&gt;
=== Appearance ===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=61333 Default UI .fth Thread] Fast way to clone another&#039;s DUI Configuration.&lt;br /&gt;
* [[foobar2000:Preferences:Columns UI/Appearance|Columns UI appearance customization guides]]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31027 Columns UI configurations]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000]]&lt;br /&gt;
[[Category:Media Players|foobar2000]]&lt;br /&gt;
[[Category:CD Rippers]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Tag editors]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=23108</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=23108"/>
		<updated>2012-02-20T20:57:21Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Color functions */ Adding subsections for clarity, and to reduce the chance of a reader jumping straight to the first function and so missing the caveat about DUI.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k}}&lt;br /&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:Title Formatting Introduction|Title Formatting Introduction]] for a general overview of titleformat 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: [[Foobar2000:Query_syntax|Query Syntax]].&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;
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;
=== %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.&lt;br /&gt;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
&lt;br /&gt;
=== %bitrate% ===&lt;br /&gt;
Bitrate of the track; includes dynamic VBR bitrate display for currently played track.&lt;br /&gt;
&lt;br /&gt;
=== %channels% ===&lt;br /&gt;
Number of channels in the track (mono/stereo/etc). 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;
=== %filesize_natural% ===&lt;br /&gt;
Size of the file, automatically formatted in appropriate units such as megabytes or kilobytes. &lt;br /&gt;
&lt;br /&gt;
=== %samplerate% ===&lt;br /&gt;
Sample rate of the track, in Hz.&lt;br /&gt;
&lt;br /&gt;
=== %codec% ===&lt;br /&gt;
Name of codec used to encode the track. If exact codec name is not available, file extension is used.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&lt;br /&gt;
&lt;br /&gt;
= Control flow =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
&lt;br /&gt;
=== [...] (conditional section) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates the expression between &#039;&#039;[&#039;&#039; and &#039;&#039;]&#039;&#039;. If it has the truth value &#039;&#039;true&#039;&#039;, its string value and the truth value &#039;&#039;true&#039;&#039; are returned. Otherwise an empty string and &#039;&#039;false&#039;&#039; are returned.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;[%artist%]&#039;&#039; returns the value of the artist tag, if it exists. Otherwise it returns nothing, when &#039;&#039;artist&#039;&#039; would return &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then,else) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $if2(a,else) ===&lt;br /&gt;
&lt;br /&gt;
Like &#039;&#039;$if(a,a,else)&#039;&#039; except that &#039;&#039;a&#039;&#039; is only evaluated once.&lt;br /&gt;
&lt;br /&gt;
=== $if3(a1,a2,...,aN,else) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates arguments &#039;&#039;a1&#039;&#039; ... &#039;&#039;aN&#039;&#039;, until one is found that evaluates to &#039;&#039;true&#039;&#039;. If that happens, its value is returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifequal(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is equal to &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifgreater(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is greater than &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $iflonger(s1,s2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the length of the strings &#039;&#039;s1&#039;&#039; and &#039;&#039;s2&#039;&#039;, if &#039;&#039;s1&#039;&#039; is longer than &#039;&#039;s2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $select(n,a1,...,aN) ===&lt;br /&gt;
&lt;br /&gt;
If the value of &#039;&#039;n&#039;&#039; is between 1 and N, &#039;&#039;an&#039;&#039; is evaluated and its value returned. Otherwise &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
= Arithmetic functions =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to perform arithmetic on integer numbers. A string will be automatically converted to a number and vice versa. The conversion to a number uses the longest prefix of the string that can be interpreted as number. Leading whitespace is ignored. Decimal points are not supported. Examples:&lt;br /&gt;
* &amp;quot;c3po&amp;quot; → 0&lt;br /&gt;
* &amp;quot;4.8&amp;quot; → 4&lt;br /&gt;
* -12&amp;quot; → -12&lt;br /&gt;
* &amp;quot;- 12&amp;quot; → 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;
= Color functions =&lt;br /&gt;
&lt;br /&gt;
==For the Default User Interface==&lt;br /&gt;
Starting in version 1.0, the Default UI playlist view doesn&#039;t support color functions. In that location, text color can only be adjusted via angle-bracket syntax: Use &amp;lt; and &amp;gt; characters to make specific text &amp;lt;dimmed&amp;gt; &#039;&#039;vs.&#039;&#039; the default color or &amp;gt;highlight&amp;gt;ed with the highlight color, with up to three levels in each case, &#039;&#039;e.g.&#039;&#039;: &amp;lt;dimmed&amp;gt;, &amp;gt;highlight&amp;lt;, &amp;gt;&amp;gt;more highlight&amp;lt;&amp;lt;, &amp;lt;&amp;lt;&amp;lt;very dim&amp;gt;&amp;gt;&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==For Columns UI==&lt;br /&gt;
&lt;br /&gt;
The playlist in the Columns UI still supports the following 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 display formatting (eg. per-column title formatting patterns).&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;
=== %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;
=== %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;
=== %list_total% ===&lt;br /&gt;
&lt;br /&gt;
Returns number of items in the playlist.&lt;br /&gt;
&lt;br /&gt;
=== %queue_index% ===&lt;br /&gt;
&lt;br /&gt;
Index of the specified item in the playback queue; available in playlist only. 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;
&lt;br /&gt;
List of indexes of the specified item in the playback queue; available in playlist only. Same as %queue_index% unless the item has been queued more than once.&lt;br /&gt;
&lt;br /&gt;
=== %queue_total% ===&lt;br /&gt;
&lt;br /&gt;
Total amount of tracks in playback queue. Available only for queued tracks, for technical reasons. &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;. 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(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;. 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(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 from the left of the string &#039;&#039;a&#039;&#039;. This function is the same as $left(a,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* $cut(&#039;abc123&#039;,3) → abc&lt;br /&gt;
* $cut(&#039;abc123&#039;,0) → (nothing)&lt;br /&gt;
* $cut(&#039;abc123&#039;,-1) → abc123&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;
=== $directory_path(x) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory path from the file path &#039;&#039;x&#039;&#039;.&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 first &#039;&#039;len&#039;&#039; characters from the left of the string &#039;&#039;a&#039;&#039;. This function is the same as $cut(a,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* $left(&#039;abc123&#039;,3) → abc&lt;br /&gt;
* $left(&#039;abc123&#039;,0) → (nothing)&lt;br /&gt;
* $left(&#039;abc123&#039;,-1) → abc123&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; 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;
* $num(123,5) → 00123&lt;br /&gt;
* $num(-123,5) → -0123&lt;br /&gt;
* $num(4.8,5) → 00004&lt;br /&gt;
* $num(A1,5) → 00000&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;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(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;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; → 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; → 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;
=== $stripprefix(x) ===&lt;br /&gt;
&lt;br /&gt;
Removes &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes from x. &lt;br /&gt;
&lt;br /&gt;
=== $stripprefix(x,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Removes the specified prefixes from x. &lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(x) ===&lt;br /&gt;
&lt;br /&gt;
Moves &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes to the end of x. &lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(x,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Moves the specified prefixes to the end of x. &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;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;
== 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;
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;
|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 (&#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 (&#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;|&#039;&#039;&#039;mp3_accurate_length&#039;&#039;&#039; supported (LAME proprietary header)? (&#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;
=== $channels() === &lt;br /&gt;
Returns 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;
&lt;br /&gt;
Returns ReplayGain album gain value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_album_peak% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain album peak value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_track_gain% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain track gain value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_track_peak% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain track peak value.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&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;
==== %last_modified% ====&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;
==== %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;
==== %_foobar2000_version% ====&lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
&lt;br /&gt;
= Time/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;
&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;
&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;
&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;
&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;
&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 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/components/view/foo_playcount 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 usable in the context of the particular component.&lt;br /&gt;
&lt;br /&gt;
== Album list ==&lt;br /&gt;
* [[Foobar2000:Titleformat_Album_List|Album List Title Formatting]]&lt;br /&gt;
* [[Foobar2000:Preferences:Album List|Preferences: Album List]]&lt;br /&gt;
== Playlist Organizer ==&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=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;
* [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: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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Guides|Titleformat Reference]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=23107</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=23107"/>
		<updated>2012-02-20T20:24:46Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Color functions */ The supposed explanation of angle-bracket syntax was pretty hopeless, so I added one taken and edited a bit from the article on SimPlaylist.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k}}&lt;br /&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:Title Formatting Introduction|Title Formatting Introduction]] for a general overview of titleformat 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: [[Foobar2000:Query_syntax|Query Syntax]].&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;
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;
=== %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.&lt;br /&gt;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
&lt;br /&gt;
=== %bitrate% ===&lt;br /&gt;
Bitrate of the track; includes dynamic VBR bitrate display for currently played track.&lt;br /&gt;
&lt;br /&gt;
=== %channels% ===&lt;br /&gt;
Number of channels in the track (mono/stereo/etc). 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;
=== %filesize_natural% ===&lt;br /&gt;
Size of the file, automatically formatted in appropriate units such as megabytes or kilobytes. &lt;br /&gt;
&lt;br /&gt;
=== %samplerate% ===&lt;br /&gt;
Sample rate of the track, in Hz.&lt;br /&gt;
&lt;br /&gt;
=== %codec% ===&lt;br /&gt;
Name of codec used to encode the track. If exact codec name is not available, file extension is used.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&lt;br /&gt;
&lt;br /&gt;
= Control flow =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
&lt;br /&gt;
=== [...] (conditional section) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates the expression between &#039;&#039;[&#039;&#039; and &#039;&#039;]&#039;&#039;. If it has the truth value &#039;&#039;true&#039;&#039;, its string value and the truth value &#039;&#039;true&#039;&#039; are returned. Otherwise an empty string and &#039;&#039;false&#039;&#039; are returned.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;[%artist%]&#039;&#039; returns the value of the artist tag, if it exists. Otherwise it returns nothing, when &#039;&#039;artist&#039;&#039; would return &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then,else) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $if2(a,else) ===&lt;br /&gt;
&lt;br /&gt;
Like &#039;&#039;$if(a,a,else)&#039;&#039; except that &#039;&#039;a&#039;&#039; is only evaluated once.&lt;br /&gt;
&lt;br /&gt;
=== $if3(a1,a2,...,aN,else) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates arguments &#039;&#039;a1&#039;&#039; ... &#039;&#039;aN&#039;&#039;, until one is found that evaluates to &#039;&#039;true&#039;&#039;. If that happens, its value is returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifequal(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is equal to &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifgreater(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is greater than &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $iflonger(s1,s2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the length of the strings &#039;&#039;s1&#039;&#039; and &#039;&#039;s2&#039;&#039;, if &#039;&#039;s1&#039;&#039; is longer than &#039;&#039;s2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $select(n,a1,...,aN) ===&lt;br /&gt;
&lt;br /&gt;
If the value of &#039;&#039;n&#039;&#039; is between 1 and N, &#039;&#039;an&#039;&#039; is evaluated and its value returned. Otherwise &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
= Arithmetic functions =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to perform arithmetic on integer numbers. A string will be automatically converted to a number and vice versa. The conversion to a number uses the longest prefix of the string that can be interpreted as number. Leading whitespace is ignored. Decimal points are not supported. Examples:&lt;br /&gt;
* &amp;quot;c3po&amp;quot; → 0&lt;br /&gt;
* &amp;quot;4.8&amp;quot; → 4&lt;br /&gt;
* -12&amp;quot; → -12&lt;br /&gt;
* &amp;quot;- 12&amp;quot; → 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;
= Color functions =&lt;br /&gt;
&lt;br /&gt;
Starting in version 1.0, the Default UI playlist view doesn&#039;t support color functions. In that location, text color can only be adjusted via angle-bracket syntax: Use &amp;lt; and &amp;gt; characters to make specific text &amp;lt;dimmed&amp;gt; &#039;&#039;vs.&#039;&#039; the default color or &amp;gt;highlight&amp;gt;ed with the highlight color, with up to three levels in each case, &#039;&#039;e.g.&#039;&#039;: &amp;lt;dimmed&amp;gt;, &amp;gt;highlight&amp;lt;, &amp;gt;&amp;gt;more highlight&amp;lt;&amp;lt;, &amp;lt;&amp;lt;&amp;lt;very dim&amp;gt;&amp;gt;&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The playlist in the Columns UI still supports the following 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 display formatting (eg. per-column title formatting patterns).&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;
=== %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;
=== %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;
=== %list_total% ===&lt;br /&gt;
&lt;br /&gt;
Returns number of items in the playlist.&lt;br /&gt;
&lt;br /&gt;
=== %queue_index% ===&lt;br /&gt;
&lt;br /&gt;
Index of the specified item in the playback queue; available in playlist only. 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;
&lt;br /&gt;
List of indexes of the specified item in the playback queue; available in playlist only. Same as %queue_index% unless the item has been queued more than once.&lt;br /&gt;
&lt;br /&gt;
=== %queue_total% ===&lt;br /&gt;
&lt;br /&gt;
Total amount of tracks in playback queue. Available only for queued tracks, for technical reasons. &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;. 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(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;. 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(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 from the left of the string &#039;&#039;a&#039;&#039;. This function is the same as $left(a,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* $cut(&#039;abc123&#039;,3) → abc&lt;br /&gt;
* $cut(&#039;abc123&#039;,0) → (nothing)&lt;br /&gt;
* $cut(&#039;abc123&#039;,-1) → abc123&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;
=== $directory_path(x) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory path from the file path &#039;&#039;x&#039;&#039;.&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 first &#039;&#039;len&#039;&#039; characters from the left of the string &#039;&#039;a&#039;&#039;. This function is the same as $cut(a,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* $left(&#039;abc123&#039;,3) → abc&lt;br /&gt;
* $left(&#039;abc123&#039;,0) → (nothing)&lt;br /&gt;
* $left(&#039;abc123&#039;,-1) → abc123&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; 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;
* $num(123,5) → 00123&lt;br /&gt;
* $num(-123,5) → -0123&lt;br /&gt;
* $num(4.8,5) → 00004&lt;br /&gt;
* $num(A1,5) → 00000&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;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(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;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; → 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; → 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;
=== $stripprefix(x) ===&lt;br /&gt;
&lt;br /&gt;
Removes &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes from x. &lt;br /&gt;
&lt;br /&gt;
=== $stripprefix(x,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Removes the specified prefixes from x. &lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(x) ===&lt;br /&gt;
&lt;br /&gt;
Moves &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes to the end of x. &lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(x,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Moves the specified prefixes to the end of x. &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;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;
== 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;
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;
|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 (&#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 (&#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;|&#039;&#039;&#039;mp3_accurate_length&#039;&#039;&#039; supported (LAME proprietary header)? (&#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;
=== $channels() === &lt;br /&gt;
Returns 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;
&lt;br /&gt;
Returns ReplayGain album gain value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_album_peak% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain album peak value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_track_gain% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain track gain value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_track_peak% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain track peak value.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&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;
==== %last_modified% ====&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;
==== %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;
==== %_foobar2000_version% ====&lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
&lt;br /&gt;
= Time/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;
&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;
&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;
&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;
&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;
&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 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/components/view/foo_playcount 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 usable in the context of the particular component.&lt;br /&gt;
&lt;br /&gt;
== Album list ==&lt;br /&gt;
* [[Foobar2000:Titleformat_Album_List|Album List Title Formatting]]&lt;br /&gt;
* [[Foobar2000:Preferences:Album List|Preferences: Album List]]&lt;br /&gt;
== Playlist Organizer ==&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=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;
* [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: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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Guides|Titleformat Reference]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_Lossless_Backup&amp;diff=23102</id>
		<title>EAC Lossless Backup</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_Lossless_Backup&amp;diff=23102"/>
		<updated>2012-02-17T21:21:29Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Adding important note about change in EAC placeholders and relevant link to the dedicated article about the same.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will walk you through the steps required to produce lossless backups of your CDs using [http://www.exactaudiocopy.de/ Exact Audio Copy].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Beginning with version 1.0b2, EAC switched to a different scheme for passing track info to the chosen command-line encoder. This article was written at the time of a prior version and therefore uses the old scheme. To compare the two sets of placeholders and amend this page’s command-lines accordingly, see the guide and table at [[EAC placeholders]].&lt;br /&gt;
&lt;br /&gt;
=Configuring Exact Audio Copy=&lt;br /&gt;
Open the EAC menu and edit the following options:&lt;br /&gt;
&lt;br /&gt;
==EAC Options==&lt;br /&gt;
&#039;&#039;&#039;Extraction&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Fill up missing offset samples with silence&#039;&#039; : Checked&lt;br /&gt;
* &#039;&#039;No use of null samples for CRC calculations&#039;&#039; : Unchecked (This option isn&#039;t really important and has absolutely no influence on the extraction quality.)&lt;br /&gt;
* &#039;&#039;Synchronize between tracks&#039;&#039; : Checked ([http://wiki.hydrogenaudio.org/index.php?title=Exact_Audio_Copy#Track_synchronization_technology See here])&lt;br /&gt;
* &#039;&#039;Delete leading and trailing silent blocks&#039;&#039; : Unchecked&lt;br /&gt;
* &#039;&#039;Skip track extraction on read or sync errors&#039;&#039; : Your decision.&lt;br /&gt;
* &#039;&#039;Skip track extraction after duration longer than&#039;&#039; : Your decision.&lt;br /&gt;
* &#039;&#039;After each: XX mins of extraction, cool down the drive for YY mins&#039;&#039; : Use only if necessary.&lt;br /&gt;
* &#039;&#039;Lock drive tray during extraction&#039;&#039; : Checked (Prevents accidental opening of drive tray)&lt;br /&gt;
* &#039;&#039;Extraction and compression priority&#039;&#039; : Normal for most situations; Idle for old and slow computers; High for computers with multi-core processors or multiple CPUs.&lt;br /&gt;
* &#039;&#039;Error recovery&#039;&#039; : Medium or High (Depending on the disc, setting this to high can hinder EAC&#039;s ability to report errors and may not improve the odds of getting accurate data.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039; - All options here do not affect the extraction and compression of the CD so choose what you see fit. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Retrieve UPC/ISRC codes in CUE sheet generation&#039;&#039; : Your decision.&lt;br /&gt;
* &#039;&#039;Use CD-Text information in CUE sheet generation&#039;&#039; : Your decision.&lt;br /&gt;
* &#039;&#039;Create &#039;.m3u&#039; playlist on extraction&#039;&#039; : Your decision.&lt;br /&gt;
* &#039;&#039;Automatically write status report after extraction&#039;&#039; : Your decision.&lt;br /&gt;
* &#039;&#039;On extraction, start external compressors queued in the background&#039;&#039; : Checked unless it causes problems. Use only one compressor thread unless your computer has a multi-core processor or multiple CPUs.&lt;br /&gt;
* &#039;&#039;Do not open external compressor window&#039;&#039; : Your decision. (Depending on how the external compressor is configured this feature may not work as expected.)&lt;br /&gt;
* &#039;&#039;Activate beginner mode, disable all advanced features&#039;&#039; : Unchecked (You&#039;re no beginner with this guide.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Normalize&#039;&#039;&#039; - DISABLE normalization; this is supposed to be a lossless backup!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filename&#039;&#039;&#039; - This can be whatever you would like it to be. Here&#039;s an example:&lt;br /&gt;
* &#039;&#039;Naming scheme&#039;&#039; : %A\(%Y) %C\%N - %T&lt;br /&gt;
* &#039;&#039;Various Artist&#039;&#039; : Various\(%Y) %C\%N - %T (%A)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Catalog&#039;&#039;&#039; - Not important&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directories&#039;&#039;&#039; - Up to you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Write&#039;&#039;&#039; - Nothing to do with extraction here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039; - Try the native interface first.  If it doesn&#039;t work, try an external one.  [ftp://ftp6.nero.com/wnaspi32.dll Nero&#039;s ASPI Driver] is the most common, but [http://radified.com/ASPI/forceaspi.htm ForceASPI] may offer better compatibility.&lt;br /&gt;
&lt;br /&gt;
==Drive Options==&lt;br /&gt;
&#039;&#039;&#039;Extraction Method&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select &amp;quot;&#039;&#039;Secure mode with the following drive features (Recommended)&#039;&#039;&amp;quot;&lt;br /&gt;
Place a Audio CD in the drive and run &amp;quot;&#039;&#039;Detect Read Features...&#039;&#039;&amp;quot;&lt;br /&gt;
With the information obtained select:&lt;br /&gt;
* &#039;&#039;Drive has &#039;Accurate Stream&#039; feature&#039;&#039; : Enable if your drive has Accurate Stream. (This setting tells EAC not to perform additional synchronization.)&lt;br /&gt;
* &#039;&#039;Drive caches audio&#039;&#039; : Enable if your drive has Caching. (This will erase the cached data after every read so that the secure mode can actually work. If your drive doesn&#039;t cache then it&#039;s a good thing since this setting cripples your extraction speed.)&lt;br /&gt;
* &#039;&#039;C2 Error Info&#039;&#039; : Enable if your drive provides it and you&#039;re confident it will work correctly; otherwise, disable. (Generally speaking, this feature provides a speed increase at the expense of security.  With many drives, errors can go undetected when this setting is enabled.)  If you&#039;re not getting matching T&amp;amp;C checksums (see the section on [[#Ripping a CD]]), try ripping again with this setting disabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drive&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Drive read command&#039;&#039; : Select Autodetect read command now so that it will not have to figure it out every time your rip a CD.&lt;br /&gt;
* &#039;&#039;&amp;quot;Big Endian&amp;quot; byte order (Motorola)&#039;&#039; : Only select this if extracted tracks consist of noise. Otherwise, leave it disabled.&lt;br /&gt;
* &#039;&#039;Swap channels&#039;&#039; : Only select this if your drive has the stereo channels backwards. Otherwise, leave it disabled.&lt;br /&gt;
* &#039;&#039;Spin up drive before extraction&#039;&#039; : Only select this if your drive has difficulty reading data on spin-up.  Otherwise, leave it disabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Offset / Speed&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Visit the [http://www.accuraterip.com/driveoffsets.htm AccurateRip Drive Offset Database] to find your drive&#039;s read offset correction value. If your drive isn&#039;t in the database you may want to install AccurateRip and let it configure the read sample offset correction for you (you may want to install AccurateRip anyway since it really enhances EAC&#039;s ability to verify your rips).  A more painful alternative in determining your offset correction is to find at least two CDs from [http://www.exactaudiocopy.de/en/index.php/overview/basic-technology/list-of-included-reference-cds/ this list] which give you identical results when running &amp;quot;Detect read sample offset correction...&amp;quot;.  When using this method it is imperative that the number in the right-hand column of the table matches (as closely as possible) the number found along the on inner-ring of your CD.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Use read sample offset correction&#039;&#039; : Enable and enter your drive&#039;s offset value into the field.&lt;br /&gt;
* &#039;&#039;Overread Lead-In and Lead-Out&#039;&#039; : Press the button that says &amp;quot;Detect read sample offset correction&amp;quot;.  Enable this setting if it says your drive can overread from both the Lead-In and Lead-Out or if it says Lead-Out and your offset correction is positive or if it says Lead-In and your offset correction is negative.  Otherwise disable it.&lt;br /&gt;
* &#039;&#039;Speed Selection&#039;&#039; : Actual (You may want to adjust this when ripping discs that produce errors.)&lt;br /&gt;
* &#039;&#039;Allow speed reduction during extraction&#039;&#039; : Enable (Disabling this setting may improve accuracy with some drives.)&lt;br /&gt;
* &#039;&#039;CD-Text Read capable drive&#039;&#039; : Enable if your drive supports it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gap Detection&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Gap/Index retrieval method&#039;&#039; : This will not affect the extraction quality. Choose the method that gives the fastest results (usually method A).&lt;br /&gt;
* &#039;&#039;Detection accuracy&#039;&#039; : Secure (You may have to reduce the level if EAC hangs while detecting gaps.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Writer&#039;&#039;&#039; - Not related to extraction.&lt;br /&gt;
&lt;br /&gt;
==Compression Options==&lt;br /&gt;
[[Image:EACandFLAC.png|thumb|300px|FLAC configured with tagging support]]&lt;br /&gt;
&#039;&#039;&#039;Waveform&#039;&#039;&#039; - Can be ignored because it does not affect compression to any other format besides wav.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;External Compression&#039;&#039;&#039; - You may use many different encoders for this section. See below for most lossless encoder options.&lt;br /&gt;
* &#039;&#039;Use external program for compression&#039;&#039; : Enable&lt;br /&gt;
* &#039;&#039;Parameter passing scheme&#039;&#039; : User Defined Encoder&lt;br /&gt;
* &#039;&#039;Bit rate&#039;&#039; : N/A. This gets ignored when using a user defined encoder and following the additional command line options specified below.&lt;br /&gt;
* &#039;&#039;Delete WAV after compression&#039;&#039; : Enable&lt;br /&gt;
* &#039;&#039;Use CRC check&#039;&#039; : Disable&lt;br /&gt;
* &#039;&#039;Add ID3 tag&#039;&#039; : Disable (encoder does it automatically).&lt;br /&gt;
* &#039;&#039;Check for external programs return code&#039;&#039; : Your decision.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Encoding Options&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The codec you choose is completely up to you; Use the [[lossless comparison]] article to help you decide. Once you have made up your mind, install the following codec using the following links:&lt;br /&gt;
&lt;br /&gt;
[http://flac.sourceforge.net/ Free Lossless Audio Codec (FLAC)] &lt;br /&gt;
* &#039;&#039;Use file extension&#039;&#039; : .flac&lt;br /&gt;
* &#039;&#039;Program, including path, used for compression&#039;&#039; : Browse and locate &#039;flac.exe&#039;.&lt;br /&gt;
* &#039;&#039;Additional command line options&#039;&#039; :&lt;br /&gt;
 &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;&#039;&#039;-8&#039;&#039;&#039;&amp;lt;/font&amp;gt; -T &amp;quot;artist=%a&amp;quot; -T &amp;quot;title=%t&amp;quot; -T &amp;quot;album=%g&amp;quot; -T &amp;quot;date=%y&amp;quot; -T &amp;quot;tracknumber=%n&amp;quot; -T &amp;quot;genre=%m&amp;quot; %s&lt;br /&gt;
&amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The green portion is where you would change the compression level or add settings for the FLAC encoder.  You may want to add -V in order to verify that there were no encoding errors.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apple Lossless using [http://www.hydrogenaudio.org/forums/index.php?showtopic=35242 iTunes CLI Encoder] (iTunes required)&lt;br /&gt;
:Note: If you have &#039;&#039;On extraction, start external compressors queued in the background&#039;&#039; checked in  EAC Options, make sure you have it set to use only &#039;&#039;one&#039;&#039; compressor thread.&lt;br /&gt;
* &#039;&#039;Use file extension&#039;&#039; : .m4a&lt;br /&gt;
* &#039;&#039;Program, including path, used for compression&#039;&#039; : Browse and locate &#039;iTunesEncode.exe&#039;.&lt;br /&gt;
* &#039;&#039;Additional command line options&#039;&#039; :&lt;br /&gt;
 -e &amp;quot;Lossless Encoder&amp;quot; -a &amp;quot;%a&amp;quot; -l &amp;quot;%g&amp;quot; -t &amp;quot;%t&amp;quot; -g &amp;quot;%m&amp;quot; -y %y -n %n -i %s -o %d -d&lt;br /&gt;
&lt;br /&gt;
[http://www.monkeysaudio.com/ Monkey&#039;s Audio] w/ [http://www.synthetic-soul.co.uk/wapet/ Wapet for tagging]&lt;br /&gt;
:Note: Monkey&#039;s Audio doesn&#039;t support tagging command lines so Wapet must be used in conjunction.&lt;br /&gt;
* &#039;&#039;Use file extension&#039;&#039; : .ape&lt;br /&gt;
* &#039;&#039;Program, including path, used for compression&#039;&#039; : Browse and locate &#039;wapet.exe&#039;.&lt;br /&gt;
* &#039;&#039;Additional command line options&#039;&#039; :&lt;br /&gt;
 %d -t &amp;quot;Artist=%a&amp;quot; -t &amp;quot;Title=%t&amp;quot; -t &amp;quot;Album=%g&amp;quot; -t &amp;quot;Year=%y&amp;quot; -t &amp;quot;Track=%n&amp;quot; -t &amp;quot;Genre=%m&amp;quot;&lt;br /&gt;
 &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;&amp;quot;C:\Program Files\Monkey&#039;s Audio\MAC.exe&amp;quot;&amp;lt;/font&amp;gt; %s %d &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;-c2000&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Note 1&#039;&#039;&#039;: This needs to point to where the MAC.exe is located and please ensure that &amp;quot; &amp;quot; is around the full location.&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;&#039;&#039;Note 2&#039;&#039;&#039;: The green portion is where you would change the compression level.&lt;br /&gt;
::Fast = &#039;&#039;-c1000&#039;&#039; ; Normal = &#039;&#039;-c2000&#039;&#039; ; High = &#039;&#039;-c3000&#039;&#039; ; Extra High = &#039;&#039;-c4000&#039;&#039; ; Insane = &#039;&#039;-c5000&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.wavpack.com/ WavPack] (see also: [[EAC and WavPack]])&lt;br /&gt;
* &#039;&#039;Use file extension&#039;&#039; : .wv&lt;br /&gt;
* &#039;&#039;Program, including path, used for compression&#039;&#039; : Browse and locate &#039;wavpack.exe&#039;.&lt;br /&gt;
* &#039;&#039;Additional command line options&#039;&#039; :&lt;br /&gt;
 -h -w &amp;quot;Artist=%a&amp;quot; -w &amp;quot;Title=%t&amp;quot; -w &amp;quot;Album=%g&amp;quot; -w &amp;quot;Year=%y&amp;quot; -w &amp;quot;Track=%n&amp;quot; -w &amp;quot;Genre=%m&amp;quot; %s %d&lt;br /&gt;
&lt;br /&gt;
=Ripping a CD=&lt;br /&gt;
* Insert a CD you would like to rip.&lt;br /&gt;
* freedb should automatically get the CD information, if it doesn&#039;t go back to the &#039;&#039;EAC Options&amp;gt;General&#039;&#039; and enable &amp;quot;&#039;&#039;On unknown CDs&#039;&#039;&amp;quot; and select &amp;quot;&#039;&#039;automatically access online freedb database&#039;&#039;&amp;quot;. Make sure you put an email address in the freedb / Database options or else you cannot get access.&lt;br /&gt;
* Run &#039;&#039;Action&amp;gt;Test and Copy Selected Tracks&amp;gt;Compress...&#039;&#039; (shortcut key combination: Shift+F6)&lt;br /&gt;
* Select &#039;&#039;Action&amp;gt;Create CUE Sheet&amp;gt;Multiple WAV Files With Gaps... (Noncompliant)&#039;&#039;&lt;br /&gt;
* While the program extracts the CD open the cue Sheet that it made with a text editor such as notepad and run &#039;&#039;find/replace&#039;&#039; and replace .wav and WAVE with the files extension you used for compression (ie for FLAC replace it with &amp;quot;.flac&amp;quot; and &amp;quot;FLAC&amp;quot; or for Apple Lossless replace it with &amp;quot;.m4a&amp;quot; and &amp;quot;Apple Lossless&amp;quot;). Also delete all the directory folders using the find/replace feature by leaving the replace field empty (for the recommended file naming scheme, delete ARTIST\(YEAR) ALBUM\). Save the cue sheet and move it into the folder where the music is located (ie ARTIST\(YEAR) ALBUM\). When the CD is done extracting and compressing the CUE can now be used to write a CD using a program that is compatable with EAC&#039;s noncompliant CUE sheets such as [http://www.burrrn.net/?page_id=4 burrrn] (Nero will not work unfortunately).&lt;br /&gt;
* Enjoy your perfectly ripped music.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[FLAC]]&lt;br /&gt;
* [[Monkey&#039;s Audio]]&lt;br /&gt;
* [[Exact Audio Copy]]&lt;br /&gt;
* [[Lossless|Lossless compression]]&lt;br /&gt;
* [[Lossless comparison]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:EAC Guides]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_and_WavPack&amp;diff=23101</id>
		<title>EAC and WavPack</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_and_WavPack&amp;diff=23101"/>
		<updated>2012-02-17T21:21:08Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Adding link to EAC placeholders guide; correcting some typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Important note==&lt;br /&gt;
This guide is in need of an update, because &#039;&#039;&#039;in EAC 1.0 beta 2, the replacement strings changed&#039;&#039;&#039;. For example:&lt;br /&gt;
* &amp;quot;%s&amp;quot; is now &amp;quot;%source%&amp;quot;&lt;br /&gt;
* &amp;quot;%d&amp;quot; is now &amp;quot;%dest%&amp;quot;&lt;br /&gt;
* &amp;quot;%a&amp;quot; is now &amp;quot;%artist%&amp;quot;&lt;br /&gt;
A page has been created to describe the change and convert between the two sets of command-line placeholders at [[EAC placeholders]]. See also the original list in the [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] or in the [http://wiki.hydrogenaudio.org/index.php?title=EAC_Compression_Options#External_Compression EAC Compression Options guide].&lt;br /&gt;
&lt;br /&gt;
=Software needed=&lt;br /&gt;
* [http://www.exactaudiocopy.de/en/index.php/resources/download/ Exact Audio Copy]&lt;br /&gt;
* [http://www.wavpack.com/downloads.html Wavpack]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This guide assumes that EAC is has been configured for secure ripping, if not please follow [[EAC_Drive_Configuration | this]] guide.&lt;br /&gt;
* Unzip Wavpack into the same directory that EAC is in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
* Open EAC and insert a CD into the drive.&lt;br /&gt;
* Click the &#039;&#039;&#039;EAC&#039;&#039;&#039; menu and select &#039;&#039;&#039;Compression Options&#039;&#039;&#039;.&lt;br /&gt;
* Click the &#039;&#039;&#039;External Compression&#039;&#039;&#039; Tab, and put a check box in &#039;&#039;&#039;use external program for compression&#039;&#039;&#039;.&lt;br /&gt;
* Change &#039;&#039;&#039;Parameter Passing Scheme&#039;&#039;&#039; to &#039;&#039;&#039;User Defined Encoder&#039;&#039;&#039;.&lt;br /&gt;
* Change &#039;&#039;&#039;user file extension&#039;&#039;&#039; to &#039;&#039;&#039;.wv&#039;&#039;&#039; if not already that.&lt;br /&gt;
* Click the &#039;&#039;&#039;Browse&#039;&#039;&#039; button and locate the &#039;&#039;&#039;WAVPACK.EXE&#039;&#039;&#039; that you unzipped earlier.&lt;br /&gt;
* Remove the ticks from &#039;&#039;&#039;Use CRC check&#039;&#039;&#039;, &#039;&#039;&#039;Add ID3 tag&#039;&#039;&#039; and &#039;&#039;&#039;check for external programs return code&#039;&#039;&#039;.&lt;br /&gt;
* In the &#039;&#039;&#039;Addtional command line options&#039;&#039;&#039; box, copy and paste the string below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No Tags:&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;&#039;&#039;-h&#039;&#039;&#039;&amp;lt;/font&amp;gt; %s %d&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;APEv2:&#039;&#039;&#039;&lt;br /&gt;
 -w &amp;quot;Artist=%a&amp;quot; -w &amp;quot;Title=%t&amp;quot; -w &amp;quot;Album=%g&amp;quot; -w &amp;quot;Year=%y&amp;quot; -w &amp;quot;Track=%n&amp;quot; -w &amp;quot;Genre=%m&amp;quot; &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;&#039;&#039;-h&#039;&#039;&#039;&amp;lt;/font&amp;gt; %s %d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;If a user wanted to change compression settings on Wavpack the green portion what you would substitute with the new preset.&amp;lt;/font&amp;gt;&lt;br /&gt;
* Do not worry what bit rate is shown in the bit rate drop down box, this will be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:EACandWAVPACK.png|frame|center|Wavpack configured with tagging support]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Hybrid mode=&lt;br /&gt;
If you want to create a correction file while encoding from EAC you will need to adapt your normal command line slightly, to ensure that the correction file (&amp;quot;&amp;lt;name&amp;gt;.wvc&amp;quot;) is named the same as the primary file (&amp;quot;&amp;lt;name&amp;gt;.wv&amp;quot;).  If you do not follow these guidelines your correction file will be named incorrectly, using the temporary filename that EAC uses while processing.&lt;br /&gt;
&lt;br /&gt;
Since Wavpack 4.1 beta you can specify an additional file path when using the -c switch to request a correction file.  This filepath will be used to name the correction file.&lt;br /&gt;
&lt;br /&gt;
The suggested method to implement this feature is to utilise the &#039;&#039;&#039;Use CRC check&#039;&#039;&#039; checkbox on the &#039;&#039;&#039;External Compression&#039;&#039;&#039; dialogue, to specify whether a correction file is required or not.  In conjunction, you must also add the following to the end of your command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;%c-c %o%c&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-w &amp;quot;Artist=%a&amp;quot; -w &amp;quot;Title=%t&amp;quot; -w &amp;quot;Album=%g&amp;quot; -w &amp;quot;Track=%n&amp;quot; -hb320 %s %d %c-c %o%c&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you check &#039;&#039;&#039;Use CRC check&#039;&#039;&#039; the -c switch, and the file path specified by the EAC placeholder %o, will be included in your command line, creating a correction file with the correct file name.  With &#039;&#039;&#039;Use CRC check&#039;&#039;&#039; unchecked no correction file will be created.&lt;br /&gt;
&lt;br /&gt;
If you do not want this configurability, simply add:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-c %o&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All encodes will then include a correction file, which is named correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Embedding the cue-sheet in an audio image file=&lt;br /&gt;
If you prefer to rip to an image file, and want to embed the cuesheet in the image, you can add the following tagging switch to your command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-w &amp;quot;Cuesheet=@*.cue&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This uses two of WavPack&#039;s features.  Firstly, the &#039;@&#039; tells WavPack to set the &#039;Cuesheet&#039; tag from the &#039;&#039;&#039;contents of a file&#039;&#039;&#039;.  Secondly, the wildcard &#039;*&#039; tells WavPack to find the file itself, given the &#039;.cue&#039; restriction (i.e. &amp;quot;find the first &#039;.cue&#039; file you come across&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PLEASE NOTE:&#039;&#039;&#039; This will only work if there is one CUE file in the folder.  WavPack will exit because of this command, if you have an existing cuesheet in the folder before starting.  The easiest way is simply to ensure that you either move your previous rips beforehand, or rip to a new directory each time.&lt;br /&gt;
&lt;br /&gt;
Example command-line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-hm -w &amp;quot;Cuesheet=@*.cue&amp;quot; -w &amp;quot;Artist=%a&amp;quot; -w &amp;quot;Album=%g&amp;quot; -w &amp;quot;Year=%y&amp;quot; -w &amp;quot;Genre=%m&amp;quot; %s %d&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Additional reading=&lt;br /&gt;
* [[Lossless | About Lossless]]&lt;br /&gt;
* [[WavPack]]&lt;br /&gt;
* [[Exact_Audio_Copy | Exact Audio Copy]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:EAC Guides|WavPack &amp;amp; EAC]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Preferences:Default_User_Interface&amp;diff=23100</id>
		<title>Foobar2000:Preferences:Default User Interface</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Preferences:Default_User_Interface&amp;diff=23100"/>
		<updated>2012-02-16T23:50:11Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Main Window Transparency */ Note of its relocation to the Advanced Preferences.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k prefs|Foobar2000-Preferences-default-ui.png|Default User Interface}}&lt;br /&gt;
This page allows you to change many general preferences related to the Default User Interface.&lt;br /&gt;
&lt;br /&gt;
== Theme Management ==&lt;br /&gt;
&lt;br /&gt;
=== Quick Setup ===&lt;br /&gt;
&lt;br /&gt;
Activates the [[foobar2000:Default User Interface:Quick Appearance Setup|Quick Appearance Setup]] dialog.&lt;br /&gt;
&lt;br /&gt;
=== Import Theme ===&lt;br /&gt;
&lt;br /&gt;
Imports current user interface layout from a foobar2000 theme (.fth) file, with preview and choice which parts of the layout to import.&lt;br /&gt;
&lt;br /&gt;
=== Export Theme ===&lt;br /&gt;
&lt;br /&gt;
Exports current user interface layout to a foobar2000 theme (.fth) file.&lt;br /&gt;
&lt;br /&gt;
=== Enable Layout Editing Mode ===&lt;br /&gt;
&lt;br /&gt;
Toggles the [[Foobar2000:Layout Editing Mode|Layout Editing Mode]]. This is the same as the &#039;&#039;View → Layout → Enable Layout Editing Mode&#039;&#039; menu command.&lt;br /&gt;
&lt;br /&gt;
== Main Window Transparency ==&lt;br /&gt;
&lt;br /&gt;
This slider, in recent versions moved to the Advanced Preferences (in the equivalent subcategory), enables the user to choose a level of transparency for the main foobar2000 window. Note that, for reasons of usability, transparency becomes active only when the window is inactive.&lt;br /&gt;
&lt;br /&gt;
== System Notification Area ==&lt;br /&gt;
&lt;br /&gt;
These options allow you to configure foobar2000&#039;s system notification area icon (commonly referred to as &amp;quot;system tray icon&amp;quot;, which is a misnomer).&lt;br /&gt;
&lt;br /&gt;
== Playback State Display Formatting ==&lt;br /&gt;
&lt;br /&gt;
These options allow you to configure (using [[foobar2000:Title Formatting|title formatting]]) how to display information about the currently played track in various places: main window title, status bar, tooltip of the notification area icon.&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23082</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23082"/>
		<updated>2012-01-11T23:05:14Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Considerable clarification on simple field names vs. title-formatting, including replacement of misleading/incorrect examples and adding important info omitted from Notes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[Foobar2000:Foobar2000|foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;rating GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name (e.g. &#039;&#039;artist&#039;&#039;) or a title formatting expression (e.g. &#039;&#039;&amp;quot;%artist%&amp;quot;&#039;&#039;). See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;rating GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;last_modified SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;last_modified DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;last_modified DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (rating GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT last_played AFTER first_played&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
* All search expressions are non-case sensitive. All keywords must be uppercase.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. Example: &#039;&#039;&amp;quot;my string&amp;quot; HAS my&#039;&#039;&lt;br /&gt;
* If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of #$% characters, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;&lt;br /&gt;
* On the other hand, if &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, or &#039;&#039;EQUAL&#039;&#039; includes at least one of these characters—#, $, %—it will be treated as a [[Foobar2000:Title Formatting Reference|title formatting]] expression. That is: the end-result of said expression will take the place of the expression itself, before the actual query is carried out. Therefore, double quotation marks (&amp;quot;) must be included around the expression (i.e. &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;) in cases where spaces are expected in the result. In other words, the user may as well include quotations around all field-names or title-formatting expressions.&lt;br /&gt;
* Using title formatting expressions (e.g. &#039;&#039;&amp;quot;$meta(title)&amp;quot;&#039;&#039;) instead of simple field names (e.g. &#039;&#039;title&#039;&#039;) will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
* The user cannot access technical information (such as codec specifications) or component-provided information ([[Foobar2000:Titleformat Playback Statistics|playback statistics]] and such) through title-formatting.&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23081</id>
		<title>Foobar2000:Query syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Query_syntax&amp;diff=23081"/>
		<updated>2012-01-11T22:43:21Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Changing a couple of curly quotes to neutral ones as that (just) might have been misleading. Ended up doing a few small formatting tweaks too.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Query syntax help=&lt;br /&gt;
&lt;br /&gt;
This page details the syntax that can be used to query for matching files in [[foobar2000:foobar2000]]. For a list of the actual fields that can be queried with this, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]] page.&lt;br /&gt;
&lt;br /&gt;
==Conventions in this document==&lt;br /&gt;
&lt;br /&gt;
Queries are written in &#039;&#039;italics&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;%rating% GREATER 3&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Query examples may contain placeholders which are enclosed in angle brackets. Their name indicates what should they need to be replaced with in a real query. If multiple placeholders of the same type occur in the same query example, a number will be appended to the name.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
The following common types of placeholders are used in the rest of this document: &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; – A reference to a tag field. This can be either a plain field name or a title formatting expression. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; – An integer value.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; – A text value that may be enclosed in double quotation marks. See [[Foobar2000:Query_syntax#Notes|Notes]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; – A time value or a title formatting expression that evaluates to a time value. See [[Foobar2000:Query_syntax#Time Expressions| Time Expressions]] for details.&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.&lt;br /&gt;
&lt;br /&gt;
==Simple search==&lt;br /&gt;
The simple search mode does not use any keywords. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;any string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from specified string in their metadata or file path.&lt;br /&gt;
&lt;br /&gt;
==Advanced search==&lt;br /&gt;
The advanced search allows the construction of more complex queries. It offers several keywords to perform specific types of comparisons and to combine multiple query expressions.&lt;br /&gt;
&lt;br /&gt;
===Text expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items that have all words from &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;title HAS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Returns only items where (at least one) metadata field &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; is equal to &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;artist IS blah&#039;&#039;&lt;br /&gt;
* &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; – Same as simple search, but can be combined using logical operators (see below).&lt;br /&gt;
&lt;br /&gt;
===Numeric expressions===&lt;br /&gt;
Performs integral number comparison between the value of a &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and a &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039;, e.g. &amp;quot;&#039;&#039;%rating% GREATER 3&#039;&#039;&amp;quot;. &lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Metadata expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; – Returns only items that don&amp;amp;#039;t have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre MISSING&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; – Returns only items that have a metadata field named &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;genre PRESENT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Time expressions===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;%last_modified% BEFORE 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is after &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;%last_modified% AFTER 2008&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is not before &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039;. Example: &#039;&#039;%last_modified% SINCE 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; – Returns only items where &#039;&#039;&amp;amp;lt;time1&amp;amp;gt;&#039;&#039; value is a subset of &#039;&#039;&amp;amp;lt;time2&amp;amp;gt;&#039;&#039; period. Example: &#039;&#039;%last_modified% DURING 2007&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; &amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; – Returns items where &#039;&#039;&amp;amp;lt;time&amp;amp;gt;&#039;&#039; value is contained in the specified period. &#039;&#039;&amp;amp;lt;time-unit&amp;amp;gt;&#039;&#039; can be one of &#039;&#039;SECONDS&#039;&#039;, &#039;&#039;MINUTES&#039;&#039;, &#039;&#039;HOURS&#039;&#039;, &#039;&#039;DAYS&#039;&#039;, or &#039;&#039;WEEKS&#039;&#039;. Example: &#039;&#039;%last_modified% DURING LAST 2 WEEKS’’. If &#039;&#039;&amp;amp;lt;number&amp;amp;gt;&#039;&#039; is 1, the expression can be simplified to &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK’’.&lt;br /&gt;
Time values used in these expressions must be in one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD hh, YYYY-MM-DD hh:mm, YYYY-MM-DD hh:mm:ss.&lt;br /&gt;
&lt;br /&gt;
===Composed queries===&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where both expressions are true. Example: &#039;&#039;artist IS blah AND title HAS blah&#039;&#039; – You can also enclose expressions in parentheses to control the evaluation order. Example: &#039;&#039;( (artist IS blah) AND (title HAS blah) ) OR (%rating% GREATER 3)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; – Returns only items where at least one expression is true.&lt;br /&gt;
* &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; – Returns only items where the expression is false. Example: &#039;&#039;NOT %last_played% AFTER %first_played%&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Sorting results==&lt;br /&gt;
You can put a &#039;&#039;SORT BY&#039;&#039; operator at the end of your search expression to produce search results sorted by the specified title formatting pattern. &lt;br /&gt;
* &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039;, &#039;&#039;SORT ASCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in ascending order.&lt;br /&gt;
* &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; – Sort results in descending order.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
* &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; and &#039;&#039;&amp;amp;lt;string&amp;amp;gt;&#039;&#039; in HAS and IS expressions should be enclosed in double quotation marks (&amp;quot;) if they include spaces. – If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; includes at least one of #$% characters, it will be treated as a title formatting string. Example: &#039;&#039;%codec% IS MP3&#039;&#039;&lt;br /&gt;
* Using title formatting strings instead of simple field names will decrease search speed on large libraries and break multiple field value handling in the &#039;&#039;IS&#039;&#039; operator.&lt;br /&gt;
* If &#039;&#039;&amp;amp;lt;field&amp;amp;gt;&#039;&#039; in &#039;&#039;HAS&#039;&#039;, &#039;&#039;IS&#039;&#039;, &#039;&#039;GREATER&#039;&#039;, &#039;&#039;LESS&#039;&#039;, &#039;&#039;EQUAL&#039;&#039; does not include any of #$% characters, it will be treated as a metadata field. Example: &#039;&#039;artist IS Radiohead&#039;&#039;&lt;br /&gt;
* You can&amp;amp;#039;t access technical information (such as codec specifications) or component-provided information (playback statistics and such) this way.&lt;br /&gt;
* All search expressions are non-case sensitive. All keywords must be uppercase.&lt;br /&gt;
&lt;br /&gt;
==Operator summary==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operator &lt;br /&gt;
! Syntax &lt;br /&gt;
! Comment &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AFTER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; AFTER &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AND&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; AND &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;BEFORE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; BEFORE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; DURING &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DURING LAST&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST &amp;amp;lt;number&amp;amp;gt; SECONDS/MINUTES/HOURS/DAYS/WEEKS&#039;&#039; &#039;&#039;&amp;amp;lt;time&amp;amp;gt; DURING LAST SECOND/MINUTE/HOUR/DAY/WEEK&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;EQUAL&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; EQUAL &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;GREATER&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; GREATER &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;HAS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &#039;&#039;*HAS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; IS &amp;amp;lt;string&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;LESS&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; LESS &amp;amp;lt;number&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;MISSING&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; MISSING&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NOT&#039;&#039; &lt;br /&gt;
| &#039;&#039;NOT &amp;amp;lt;expression&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;OR&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;expression1&amp;amp;gt; OR &amp;amp;lt;expression2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;PRESENT&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;field&amp;amp;gt; PRESENT&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SINCE&#039;&#039; &lt;br /&gt;
| &#039;&#039;&amp;amp;lt;time1&amp;amp;gt; SINCE &amp;amp;lt;time2&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SORT BY&#039;&#039; &lt;br /&gt;
| &#039;&#039;SORT BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &#039;&#039;SORT DESCENDING BY &amp;amp;lt;sort-pattern&amp;amp;gt;&#039;&#039; &lt;br /&gt;
| Must be at the end of the query. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23041</id>
		<title>EAC placeholders</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23041"/>
		<updated>2011-11-23T12:23:23Z</updated>

		<summary type="html">&lt;p&gt;Db1989: +category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Exact Audio Copy]]&#039;&#039;&#039; provides numerous &#039;&#039;&#039;placeholders&#039;&#039;&#039; to be used when [[EAC Compression Options#External_compression|invoking a command-line encoder]] and when [[EAC Options#Filename|naming output files]].&lt;br /&gt;
&lt;br /&gt;
Beginning with EAC version 1.0 beta 2, the naming scheme for placeholders was revamped, necessitating that users moving to this new version revise their command lines. Both old and new lists of placeholders and their meanings have long been available in the official [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] and in several of the Hydrogenaudio Knowledgebase’s own [http://wiki.hydrogenaudio.org/index.php?title=Category:Guides Guides]; however, there was no easy way to look up values and to compare them between different versions.&lt;br /&gt;
&lt;br /&gt;
Moreover, confusion can arise from the fact that versions of EAC prior to 1.0b2 used different placeholders for naming the output file compared to those for passing to the external encoder. These two sets of placeholders do not correspond, but they are similar enough to get mixed up.&lt;br /&gt;
&lt;br /&gt;
For these reasons, as well as for general convenience and ease of use, this page intends to simplify the processes of using placeholders, including comparing/substituting them between versions, by collating all of those listed by the [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] into a single table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto;&amp;quot;&lt;br /&gt;
|+ Placeholders used in EAC&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Property&#039;&#039;||&#039;&#039;External Compression placeholders pre-1.0b2&#039;&#039;||&#039;&#039;External Compression placeholders in 1.0b2 and later&#039;&#039;||&#039;&#039;Filename placeholders pre-1.0b2&#039;&#039;||&#039;&#039;Filename placeholders in 1.0b2 and later&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Files&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Source filename||%s||%source%||||&lt;br /&gt;
|-&lt;br /&gt;
|Destination filename||%d||%dest%||||&lt;br /&gt;
|-&lt;br /&gt;
|Original filename (without temporary renaming)||%o||%original%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Quality settings&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “High quality” selected||%h…%h||%ishigh%…%ishigh%||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “Low quality” selected||%l…%l||%islow%…%islow%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Common metadata&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Track artist||%a||%artist%||%A||%artist%&lt;br /&gt;
|-&lt;br /&gt;
|Track title||%t||%title%||%T||%title%&lt;br /&gt;
|-&lt;br /&gt;
|CD artist||%v||%albumartist%||%D||%albumartist%&lt;br /&gt;
|-&lt;br /&gt;
|CD title||%g||%albumtitle%||%C||%albumtitle%&lt;br /&gt;
|-&lt;br /&gt;
|Track composer/performer||||%composer%||||%composer%&lt;br /&gt;
|-&lt;br /&gt;
|CD composer||||%albumcomposer%||||%albumcomposer%&lt;br /&gt;
|-&lt;br /&gt;
|CD performer||||%albuminterpret%||||%albuminterpret%&lt;br /&gt;
|-&lt;br /&gt;
|Year||%y||%year%||%Y||%year%&lt;br /&gt;
|-&lt;br /&gt;
|Track number||%n||%tracknr% (same as %tracknr2%)||%N||&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 1 digit)||||%tracknr1%||||%tracknr1%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 2 digits)||||%tracknr2%||||%tracknr2%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 3 digits)||||%tracknr3%||||%tracknr3%&lt;br /&gt;
|-&lt;br /&gt;
|Total number of CDs in the given CD set||||%totalcds%||||%totalcds%&lt;br /&gt;
|-&lt;br /&gt;
|Number of the CD||||%cdnumber%||||%cdnumber%&lt;br /&gt;
|-&lt;br /&gt;
|Number of tracks on album||%x||%numtracks%||||%numtracks%&lt;br /&gt;
|-&lt;br /&gt;
|MP3 music genre||%m||%genre%||%I||%genre%&lt;br /&gt;
|-&lt;br /&gt;
|freedb music type||||||%B||%cddbtype%&lt;br /&gt;
|-&lt;br /&gt;
|Comment (as selected in EAC)|||%e||%comment%||||%comment%&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Album artwork&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when storing CD cover is enabled||%j…%j||%hascover%…%hascover% (only when storing CD cover is enabled and cover exists)||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of CD cover image||%i||%coverfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Lyrics&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when lyrics exist||||%haslyrics%…%haslyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Lyrics||||%lyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of lyrics text file (ANSI)||||%lyricsfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Other information&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “CRC checksum” selected||%c…%c||%crcenabled%…%crcenabled%||||&lt;br /&gt;
|-&lt;br /&gt;
|CRC of extracted track||%b||%trackcrc%||||&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (minutes part)||||||||%lengthmin%&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (seconds part)||||||||%lengthsec%&lt;br /&gt;
|-&lt;br /&gt;
|Bitrate (“32″..”320″) [set in Compression Options]||%r||%bitrate%||||&lt;br /&gt;
|-&lt;br /&gt;
|freedb ID||%f||%cddbid%||%F||%cddbid%&lt;br /&gt;
|-&lt;br /&gt;
|The ‘%’ character||||%%||||%%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:EAC Guides]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23040</id>
		<title>EAC placeholders</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23040"/>
		<updated>2011-11-23T12:22:18Z</updated>

		<summary type="html">&lt;p&gt;Db1989: removing accidental extra (empty) column at right of table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Exact Audio Copy]]&#039;&#039;&#039; provides numerous &#039;&#039;&#039;placeholders&#039;&#039;&#039; to be used when [[EAC Compression Options#External_compression|invoking a command-line encoder]] and when [[EAC Options#Filename|naming output files]].&lt;br /&gt;
&lt;br /&gt;
Beginning with EAC version 1.0 beta 2, the naming scheme for placeholders was revamped, necessitating that users moving to this new version revise their command lines. Both old and new lists of placeholders and their meanings have long been available in the official [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] and in several of the Hydrogenaudio Knowledgebase’s own [http://wiki.hydrogenaudio.org/index.php?title=Category:Guides Guides]; however, there was no easy way to look up values and to compare them between different versions.&lt;br /&gt;
&lt;br /&gt;
Moreover, confusion can arise from the fact that versions of EAC prior to 1.0b2 used different placeholders for naming the output file compared to those for passing to the external encoder. These two sets of placeholders do not correspond, but they are similar enough to get mixed up.&lt;br /&gt;
&lt;br /&gt;
For these reasons, as well as for general convenience and ease of use, this page intends to simplify the processes of using placeholders, including comparing/substituting them between versions, by collating all of those listed by the [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] into a single table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto;&amp;quot;&lt;br /&gt;
|+ Placeholders used in EAC&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Property&#039;&#039;||&#039;&#039;External Compression placeholders pre-1.0b2&#039;&#039;||&#039;&#039;External Compression placeholders in 1.0b2 and later&#039;&#039;||&#039;&#039;Filename placeholders pre-1.0b2&#039;&#039;||&#039;&#039;Filename placeholders in 1.0b2 and later&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Files&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Source filename||%s||%source%||||&lt;br /&gt;
|-&lt;br /&gt;
|Destination filename||%d||%dest%||||&lt;br /&gt;
|-&lt;br /&gt;
|Original filename (without temporary renaming)||%o||%original%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Quality settings&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “High quality” selected||%h…%h||%ishigh%…%ishigh%||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “Low quality” selected||%l…%l||%islow%…%islow%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Common metadata&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Track artist||%a||%artist%||%A||%artist%&lt;br /&gt;
|-&lt;br /&gt;
|Track title||%t||%title%||%T||%title%&lt;br /&gt;
|-&lt;br /&gt;
|CD artist||%v||%albumartist%||%D||%albumartist%&lt;br /&gt;
|-&lt;br /&gt;
|CD title||%g||%albumtitle%||%C||%albumtitle%&lt;br /&gt;
|-&lt;br /&gt;
|Track composer/performer||||%composer%||||%composer%&lt;br /&gt;
|-&lt;br /&gt;
|CD composer||||%albumcomposer%||||%albumcomposer%&lt;br /&gt;
|-&lt;br /&gt;
|CD performer||||%albuminterpret%||||%albuminterpret%&lt;br /&gt;
|-&lt;br /&gt;
|Year||%y||%year%||%Y||%year%&lt;br /&gt;
|-&lt;br /&gt;
|Track number||%n||%tracknr% (same as %tracknr2%)||%N||&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 1 digit)||||%tracknr1%||||%tracknr1%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 2 digits)||||%tracknr2%||||%tracknr2%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 3 digits)||||%tracknr3%||||%tracknr3%&lt;br /&gt;
|-&lt;br /&gt;
|Total number of CDs in the given CD set||||%totalcds%||||%totalcds%&lt;br /&gt;
|-&lt;br /&gt;
|Number of the CD||||%cdnumber%||||%cdnumber%&lt;br /&gt;
|-&lt;br /&gt;
|Number of tracks on album||%x||%numtracks%||||%numtracks%&lt;br /&gt;
|-&lt;br /&gt;
|MP3 music genre||%m||%genre%||%I||%genre%&lt;br /&gt;
|-&lt;br /&gt;
|freedb music type||||||%B||%cddbtype%&lt;br /&gt;
|-&lt;br /&gt;
|Comment (as selected in EAC)|||%e||%comment%||||%comment%&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Album artwork&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when storing CD cover is enabled||%j…%j||%hascover%…%hascover% (only when storing CD cover is enabled and cover exists)||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of CD cover image||%i||%coverfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Lyrics&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when lyrics exist||||%haslyrics%…%haslyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Lyrics||||%lyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of lyrics text file (ANSI)||||%lyricsfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Other information&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “CRC checksum” selected||%c…%c||%crcenabled%…%crcenabled%||||&lt;br /&gt;
|-&lt;br /&gt;
|CRC of extracted track||%b||%trackcrc%||||&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (minutes part)||||||||%lengthmin%&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (seconds part)||||||||%lengthsec%&lt;br /&gt;
|-&lt;br /&gt;
|Bitrate (“32″..”320″) [set in Compression Options]||%r||%bitrate%||||&lt;br /&gt;
|-&lt;br /&gt;
|freedb ID||%f||%cddbid%||%F||%cddbid%&lt;br /&gt;
|-&lt;br /&gt;
|The ‘%’ character||||%%||||%%&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23039</id>
		<title>EAC placeholders</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23039"/>
		<updated>2011-11-23T12:04:50Z</updated>

		<summary type="html">&lt;p&gt;Db1989: removing a superfluous hyphen that had made the “Low quality” row disappear&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Exact Audio Copy]]&#039;&#039;&#039; provides numerous &#039;&#039;&#039;placeholders&#039;&#039;&#039; to be used when [[EAC Compression Options#External_compression|invoking a command-line encoder]] and when [[EAC Options#Filename|naming output files]].&lt;br /&gt;
&lt;br /&gt;
Beginning with EAC version 1.0 beta 2, the naming scheme for placeholders was revamped, necessitating that users moving to this new version revise their command lines. Both old and new lists of placeholders and their meanings have long been available in the official [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] and in several of the Hydrogenaudio Knowledgebase’s own [http://wiki.hydrogenaudio.org/index.php?title=Category:Guides Guides]; however, there was no easy way to look up values and to compare them between different versions.&lt;br /&gt;
&lt;br /&gt;
Moreover, confusion can arise from the fact that versions of EAC prior to 1.0b2 used different placeholders for naming the output file compared to those for passing to the external encoder. These two sets of placeholders do not correspond, but they are similar enough to get mixed up.&lt;br /&gt;
&lt;br /&gt;
For these reasons, as well as for general convenience and ease of use, this page intends to simplify the process of using (or comparing/substituting) placeholders, by collating all of those listed by the [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] into a single table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto;&amp;quot;&lt;br /&gt;
|+ Placeholders used in EAC&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Property&#039;&#039;||&#039;&#039;External Compression placeholders pre-1.0b2&#039;&#039;||&#039;&#039;External Compression placeholders in 1.0b2 and later&#039;&#039;||&#039;&#039;Filename placeholders pre-1.0b2&#039;&#039;||&#039;&#039;Filename placeholders in 1.0b2 and later&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Files&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Source filename||%s||%source%||||&lt;br /&gt;
|-&lt;br /&gt;
|Destination filename||%d||%dest%||||&lt;br /&gt;
|-&lt;br /&gt;
|Original filename (without temporary renaming)||%o||%original%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Quality settings&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “High quality” selected||%h…%h||%ishigh%…%ishigh%||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “Low quality” selected||%l…%l||%islow%…%islow%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Common metadata&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Track artist||%a||%artist%||%A||%artist%&lt;br /&gt;
|-&lt;br /&gt;
|Track title||%t||%title%||%T||%title%&lt;br /&gt;
|-&lt;br /&gt;
|CD artist||%v||%albumartist%||%D||%albumartist%&lt;br /&gt;
|-&lt;br /&gt;
|CD title||%g||%albumtitle%||%C||%albumtitle%&lt;br /&gt;
|-&lt;br /&gt;
|Track composer/performer||||%composer%||||%composer%||&lt;br /&gt;
|-&lt;br /&gt;
|CD composer||||%albumcomposer%||||%albumcomposer%&lt;br /&gt;
|-&lt;br /&gt;
|CD performer||||%albuminterpret%||||%albuminterpret%&lt;br /&gt;
|-&lt;br /&gt;
|Year||%y||%year%||%Y||%year%&lt;br /&gt;
|-&lt;br /&gt;
|Track number||%n||%tracknr% (same as %tracknr2%)||%N||&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 1 digit)||||%tracknr1%||||%tracknr1%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 2 digits)||||%tracknr2%||||%tracknr2%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 3 digits)||||%tracknr3%||||%tracknr3%&lt;br /&gt;
|-&lt;br /&gt;
|Total number of CDs in the given CD set||||%totalcds%||||%totalcds%&lt;br /&gt;
|-&lt;br /&gt;
|Number of the CD||||%cdnumber%||||%cdnumber%&lt;br /&gt;
|-&lt;br /&gt;
|Number of tracks on album||%x||%numtracks%||||%numtracks%&lt;br /&gt;
|-&lt;br /&gt;
|MP3 music genre||%m||%genre%||%I||%genre%&lt;br /&gt;
|-&lt;br /&gt;
|freedb music type||||||%B||%cddbtype%&lt;br /&gt;
|-&lt;br /&gt;
|Comment (as selected in EAC)|||%e||%comment%||||%comment%&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Album artwork&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when storing CD cover is enabled||%j…%j||%hascover%…%hascover% (only when storing CD cover is enabled and cover exists)||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of CD cover image||%i||%coverfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Lyrics&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when lyrics exist||||%haslyrics%…%haslyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Lyrics||||%lyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of lyrics text file (ANSI)||||%lyricsfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Other information&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “CRC checksum” selected||%c…%c||%crcenabled%…%crcenabled%||||&lt;br /&gt;
|-&lt;br /&gt;
|CRC of extracted track||%b||%trackcrc%||||&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (minutes part)||||||||%lengthmin%&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (seconds part)||||||||%lengthsec%&lt;br /&gt;
|-&lt;br /&gt;
|Bitrate (“32″..”320″) [set in Compression Options]||%r||%bitrate%||||&lt;br /&gt;
|-&lt;br /&gt;
|freedb ID||%f||%cddbid%||%F||%cddbid%&lt;br /&gt;
|-&lt;br /&gt;
|The ‘%’ character||||%%||||%%&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_Options_(Legacy)&amp;diff=23038</id>
		<title>EAC Options (Legacy)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_Options_(Legacy)&amp;diff=23038"/>
		<updated>2011-11-23T11:50:28Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Filename */ Adding link to new page on EAC placeholders and making a few small arrangements in the vicinity.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;EAC options dialog&#039;&#039;&#039; (shortcut: F9) offers several options for configuring [[EAC]] in general without focusing on drive or compression settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;Used EAC version: V0.99 prebeta 5&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Extraction=&lt;br /&gt;
[[Image:EAC_options_Extraction.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Extraction&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab includes settings for the extraction of audio CDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Fill up missing offset samples with silence&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
This option controls whether EAC adds silence to either the beginning of the first track on the disc or the end of the last track on the disc to make it the correct length in the event that the drive is not configured as being able to overread.  Which track is affected depends on the direction of the read offset correction; a positive offset correction means the last track on the disc will be padded, a negative offset correction means the first track on the disc will be padded.&lt;br /&gt;
&lt;br /&gt;
With this option enabled, all missing samples are replaced with silent samples so that the duration of the affected output file will be the same as on the original CD.&lt;br /&gt;
&lt;br /&gt;
If this option is disabled and the drive is not configured as being able to overread, [[AccurateRip]] will not try to verify any tracks ripped. If the use of AccurateRip is desired, it is essential that this option is enabled.  Disabling this option can also affect whether a generated [[cue sheet]] is considered valid by some programs when it results in a track that is not the correct length.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;No use of null samples for CRC calculations&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option enabled, null samples (silence) of a track will not be counted for CRC checksums. It has no effect on AccurateRip checksums. When this option is enabled and a track has silence at the beginning/end, this could lead to the same CRC checksums, even with different (or even wrong) drive offset values (see [[EAC_Drive_Options|EAC drive options]]). In general, this option should be disabled to ensure compatibility with other programs such as [[dBpoweramp]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Synchronize between tracks&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When ripping adjacent tracks of a CD and this option is enabled, EAC synchronizes between these tracks. This is important to avoid pops or gaps between tracks, so this option should be enabled.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Delete leading and trailing silent blocks&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If a track contains one or more complete (588-sample) blocks of silence at the beginning and/or the end, EAC deletes them when this option is enabled. If you&#039;re only interested in the non-silent audio data, this can be useful to enable, but this will produce WAV files which are not identical to the complete, original tracks. Enabling this option will prevent the use of [[AccurateRip]] to see if your rips match other people&#039;s. If your goal is to make exact copies of tracks or entire CDs, silence and all, then you should leave this option disabled.&lt;br /&gt;
&lt;br /&gt;
This option only applies to entire blocks which are silent, so even when it&#039;s enabled, it may leave some silent samples on the ends of blocks which contain non-silence. The wave editor&#039;s silence trimming function will remove all leading and/or trailing silent samples, so it&#039;s more precise than this option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Skip track extraction on read or sync errors&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option enabled, EAC will skip the extraction of the current track if a read or synchronisation error occurs. If there is a read/sync error during extraction, the rip can not be guaranteed to be accurate anymore. This way, you have to decide what is more important for you: If you think that a possibly inaccurate rip is better than no rip at all, then you can leave this option disabled.&lt;br /&gt;
&lt;br /&gt;
On the other hand, if an accurate rip is most important, then this option may be enabled so that EAC skips the track when the first read/sync error occurs. When this happens, the first thing to try is to clean the CD and give it another try. When this does not work either, the only solution would be to get another (scratch free) copy of the CD and try the extraction with this one.&lt;br /&gt;
&lt;br /&gt;
Because EAC reads every frame multiple times to find consistent data, it is still possible that a rip is accurate even though EAC reports read errors. This is because in &#039;&#039;Secure mode&#039;&#039; EAC rereads every frame 16 times and treats a frame as &amp;quot;correct&amp;quot; when 8 reads got the same data (for more details on this, see the &#039;&#039;Error recovery quality&#039;&#039; option further below). It is possible no 8 reads got the same data, so EAC will report a read error, although the most consistent data (e.g. only 6 rereads match) may be correct. Even if the data EAC keeps isn&#039;t correct, sometimes the errors will be so minor that they don&#039;t result in audible artifacts. If you leave this option disabled, then &amp;quot;suspicious&amp;quot; positions where errors occurred will be listed in the ripping summary and log file. You can listen to these positions in the ripped audio to see if you can hear any artifacts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Skip track extraction after duration longer than &#039;&#039;X&#039;&#039; times realtime&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Due to EAC&#039;s advanced reading features, the reading procedure can last very long, especially on scatched CDs (in extreme cases this can last several hours). When this option is enabled and the ripping process takes longer than &#039;&#039;X&#039;&#039; times realtime, the affected track is skipped. It is recommended to leave this option disabled because it is likely that EAC can rip such a track, even if this takes a long time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;X&#039;&#039; is a multiple of the track durations. For example, if you enable this option and set &#039;&#039;X&#039;&#039; to 4, it means you want EAC to abort the extraction of a track if the extraction has already taken more than 4 times the duration of that track. Thus, the extraction of a 2-minute track would be aborted after 8 minutes, and the extraction of a 5-minute track would be aborted after 20 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;After each X mins of extraction, cool down the drive for Y mins&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The extraction of scratched CDs/tracks can last very long. This could possibly stress the drive used for extraction because of a lot of movement of the laser unit. So the whole procedure could also heat up the drive. This may decrease the reading abilities of this drive temporarily. So when you notice that your ripping drive gets unusually hot during difficult and long extraction processes, then it may be a good idea to enable this option. Otherwise you should leave this option disabled, because this will possibly lead to longer extraction times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Lock drive tray during extraction&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option enabled, EAC makes sure that the CD tray is not opened accidentally while ripping. Otherwise this will always result in an aborted extraction process, so leave this option enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Extraction and compression priority&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: Normal, &#039;&#039;&#039;Recommended: High&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This determines the process priority, which correlates with how much time your CPU will devote to extracting audio and (if so configured) running an external compressor during the extraction. Setting this option to &#039;&#039;high&#039;&#039; could result in slightly faster ripping, but if you are multitasking, your other applications won&#039;t get as much CPU time and might seem &amp;quot;choppy&amp;quot;. So if you plan to use other programs during ripping, leave this option as it is (&#039;&#039;normal&#039;&#039;), or even set it to &#039;&#039;low&#039;&#039; if you find they still need more CPU. Otherwise you can set it to &#039;&#039;high&#039;&#039;. What&#039;s right for you will depend on the capabilities of your computer and what other applications you&#039;re running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Error recovery quality&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: Medium, &#039;&#039;&#039;Recommended: High/Medium&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When an error is detected after reading a frame, [http://www.exactaudiocopy.de/en/index.php/overview/basic-technology/extraction-technology/ EAC re-reads the frame] 16 times in an attempt to get at least 8 identical results. The error recovery quality setting determines the maximum number of times EAC will do the 16 re-reads:&lt;br /&gt;
* Low = one batch of 16 re-reads&lt;br /&gt;
* Medium = up to three batches of 16 re-reads (16, 24, or 48, total)&lt;br /&gt;
* High = up to five batches of 16 re-reads (16, 24, 48, 64, or 80, total)&lt;br /&gt;
For each batch of 16 re-reads, there&#039;s a row of red error correction &amp;quot;lights&amp;quot; in the extraction status window. If no batch of 16 re-reads produced 8 identical results, EAC considers whatever data it got to be &amp;quot;suspicious&amp;quot; rather than correct. EAC continues reading the entire batch of 16, even if it has already obtained 8 identical reads.&amp;lt;!--1. Is it correct that it&#039;s looking for 8 identical results within the batch of 16, not across separate batches? 2. If yes, then what happens if the 16 re-reads produce 2 sets of 8 identical reads, but the two sets are different?--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Changing this option to &#039;&#039;high&#039;&#039; lets EAC do more re-reads of bad frames. This could lead to a better error correction, but it also increases the chance that consistent errors slip through undetected. This is because EAC will assume that a frame was read correctly if there were eight matching reads (of 16) on that frame. The more reads that take place, the higher the chance of an error being duplicated on those reads and matching. So to increase the chance that no errors go unreported, this setting could be left at &#039;&#039;medium&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Because of the way EAC behaves, there&#039;s no clear recommendation. You have to choose between better chance of detecting errors (&#039;&#039;medium&#039;&#039;), or chance of better error correction (&#039;&#039;high&#039;&#039;). The &#039;&#039;low&#039;&#039; setting will provide the best error detection but the worst error correction, so it&#039;s not recommended unless you&#039;re also choosing to skip track extraction on read or sync errors.&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
[[Image:EAC_options_General.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;General&#039;&#039;&#039; tab]]&lt;br /&gt;
In this tab, general EAC options are included. These do not affect the quality or the accuracy of the results produced by EAC. So on most options there is no clear recommendation possible. Just adjust these options as you need them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use alternate CD play routines&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option is only important for playing an audio CD using EAC. If it is enabled, EAC sends the audio data to the soundcard digitally, so no cable between the drive and the soundcard is needed. Otherwise, when this option is disabled, only the cable between drive and soundcard is used. Therefore, if such a cable is not installed and this option gets disabled, you will not be able to play a CD using EAC at all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Disable &#039;CD Autostart&#039; for audio and data CDs while EAC running&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this option is enabled, the autostart for all drives is disabled while EAC is running. That means that no popups or media players are started automatically which could disturb EAC while ripping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;On unknown CDs&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When a CD unknown to EAC is inserted in the drive and this setting is enabled, EAC can take the following actions:&lt;br /&gt;
* &#039;&#039;&#039;automatically access online freedb database&#039;&#039;&#039;: EAC tries to find CD information in the [[freedb]] online database automatically. For this option to work, an e-mail address has to be specified in the [[EAC freedb/Database Options|freedb/Database Options]].&lt;br /&gt;
* &#039;&#039;&#039;open CD information dialog&#039;&#039;&#039;: With this option enabled, a pop up is presented to the user where the CD information can be inserted manually.&lt;br /&gt;
It doesn&#039;t matter what setting you use; it&#039;s your choice. If you leave it disabled, you can always enter data manually right in the main window, or get disc info from freedb via a menu selection or keyboard shortcut (Alt-G).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Display times using frames&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option just affects how times are displayed in the main window. A track&#039;s start or length will use the format H:MM:SS.##, where ## depends on how this option is set. If you use frames, then the last two digits are an exact number of frames, in a range of 00 to 74, because there are 75 frames per second. Otherwise, the last two digits are an approximate number of hundredths of seconds, in a range of 00 to 99. Time information in frames is generally more native to CDs, whereas the display of hundredths of seconds is likely to be rounded and not really exact. Therefore, it&#039;s recommended to enable this setting so that the times are displayed in frames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Ask before overwriting files&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
EAC will always ask if existing files should be overwritten. To be sure that no important files are overwritten, this option should be left enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Correct bug of wrong filename order in Windows multiple file dialog&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Windows file selection box sometimes has a strange behavior to exchange the first and last track when multiple files are selected. Leave this option enabled to make sure EAC automatically corrects the file order.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Show status dialog after extraction&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enabling this setting lets EAC show a status dialog after extraction. Because this dialog can give you some important information and the opportunity to hear &amp;amp; attempt repairs of glitches in tracks that didn&#039;t rip cleanly, you should leave this option enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Beep after extraction finished&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If enabled, EAC will beep (PC speaker) when extraction finished. When you do not want to sit in front of your PC while ripping, this option may come in handy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Eject CD after extraction finished&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option enabled, EAC will eject the CD automatically when the extraction finished. When you move away from your PC while ripping, it may be a good idea to leave this option disabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;When using the power down feature&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This setting controls what should happen if you tick the power down feature in the extraction dialog. Two options are available:&lt;br /&gt;
* &#039;&#039;&#039;power down computer&#039;&#039;&#039; &#039;&#039;(Default: enabled)&#039;&#039;: The computer is shut down after extraction has finished.&lt;br /&gt;
* &#039;&#039;&#039;restart computer&#039;&#039;&#039;: The computer gets restarted after extraction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;wait for external compressors&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option specifies if the shutdown or restart process should wait for any active external compressors when the power down feature in the extraction dialog is ticked. You should always leave this option enabled, because otherwise any external compressor can not finish its work before the shutdown/restart process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;EAC language selection&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option controls the language settings of EAC. If there is a language setting available which equals the language of the operating system, this language is automatically selected at the first start of EAC.&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
[[Image:EAC_options_Tools.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Tools&#039;&#039;&#039; tab]]&lt;br /&gt;
Here the generation of [[Cue_sheet|CUE sheets]], playlists and log files is configured. There are also settings available affecting the behaviour of an external compressor.&lt;br /&gt;
&lt;br /&gt;
For more information on EAC and CUE sheets, see [[EAC_and_Cue_Sheets|EAC and CUE sheets]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Retrieve UPC/ISRC codes in CUE sheet generation&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When generating CUE sheets for a CD and this option is enabled, [http://en.wikipedia.org/wiki/Universal_Product_Code UPC] (Universal Product Code = barcode) and [http://en.wikipedia.org/wiki/Isrc ISRC] (International Standard Recording Code) codes are extracted from the CD and added to the CUE file. It can be quite time-consuming extracting this information from a CD, and some CDs do not contain such information at all. But to collect as much information as possible from the CD, such as for archiving, this option should be enabled.&lt;br /&gt;
&lt;br /&gt;
Note that this feature of EAC is reported not to work correctly with some drives. If you plan to let EAC create CUE sheets with UPC/ISRC, you should test this feature with your drive. Just open a generated CUE sheet with a text reader (e.g. Notepad) and check the information stated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use CD-Text information in CUE sheet generation&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will add TITLE and PERFORMER tags to the generated CUE sheet as displayed in EAC&#039;s main window. Although EAC will attempt to extract CD-Text when a disc is loaded (provided your drive is capable and is configured as such), the information in EAC&#039;s main window can also be edited or entered manually or can come from an online database.  As a consequence, this information won&#039;t necessarily reflect what is found on the CD.  Considering that many CDs don&#039;t actually contain CD-Text, purists might consider configuring this setting on a per-disc basis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Create &#039;.m3u&#039; playlist on extraction&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When enabled, EAC will automatically create an .m3u playlist file which contains all selected tracks for this extraction. This comes in handy if you use your PC as primary source where most media players can use these playlist files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Write m3u playlist with extended information&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option is greyed out until you enable the option &#039;&#039;Create &#039;.m3u&#039; playlist on extraction&#039;&#039; (see above). If enabled, EAC adds extended information (length, title and more) to the playlist file. All additional information are added as comments. If your media player can not handle these comments correctly, you should disable this option, otherwise leave it enabled. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Automatically write status report after extraction&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When enabled, EAC automatically writes a log file after extraction in the same directory as the extracted files. To be able to comprehend the extraction process of a certain CD, it may be a good idea to save these log files. However, even if this option is disabled, it is still possible to save a log file from the status dialog after extraction. Of course, then the corresponding option also has to be enabled in the &#039;&#039;General&#039;&#039; tab (&#039;&#039;Show status dialog after extraction&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;On extraction, start external compressors queued in the background&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this setting enabled, EAC starts an external compressor as soon as the first track was extracted and therefore the extraction and compressing processes are running simultaneously. Of course, this could lead to a time saving, but also can lead to some problems: it is more likely that errors during extraction/compressing occur on older PCs. So in general, you should leave this option disabled unless you have a dual/multi-core CPU.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use X simultaneous external compressor thread(s)&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: 1)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option is greyed out until the option above (&#039;&#039;On extraction, start external compressors queued in the background&#039;&#039;) is enabled. It controls the number of simultaneous external compressors used by EAC. The more compressors are used simultaneously, the more likely are the problems mentioned above with parallel extraction and compressing. Again, if you have a dual/multi-core CPU, it is fine to use this option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Do not open external compressor window&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option enabled, EAC does not open an external compressor window. Because this way you are not able to see the status of the external compressor (and maybe error messages), this option should be left disabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Submit drive features after detection (but ask for permission)&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Leaving this option enabled, EAC will ask if it should submit to the AccurateRip database info about your drive&#039;s features (like read offset values) after these were detected, e.g. by the wizard. In order to help other people who are not able to determine their drive&#039;s features, it is recommended to enable this setting. You can cancel the transfer of any data anyway, because EAC will always ask you before sending any data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Activate beginner mode, disable all advanced features&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When in beginner mode, EAC disables &amp;amp; hides the following advanced features:&lt;br /&gt;
* In the Action menu:&lt;br /&gt;
** Catalog Selected Tracks (Alt+F / Alt+Shift+F) [rip previews instead of full tracks]&lt;br /&gt;
** Copy Selected Tracks Index-Based (Alt+X / Alt+Shift+X) [rip to separate files for each track index]&lt;br /&gt;
** Detect Gaps (F4) [find the 00-index portion, if any, of each track]&lt;br /&gt;
** Test Gaps On Silence [estimate how much of a track&#039;s 00-index portion is null bytes]&lt;br /&gt;
** Create CUE Sheet &amp;gt; Current Gap Settings&lt;br /&gt;
** Create CUE Sheet &amp;gt; Multiple WAV Files With Leftout Gaps (Alt+M)&lt;br /&gt;
** Create CUE Sheet &amp;gt; Multiple WAV Files With Corrected Gaps (Alt+O)&lt;br /&gt;
** Leave Out Gaps [disabled until gaps are detected]&lt;br /&gt;
** Append Gaps To Previous Track (default) [disabled until gaps are detected]&lt;br /&gt;
** Append Gaps To Next Track [disabled until gaps are detected]&lt;br /&gt;
* In the EAC Options:&lt;br /&gt;
** The entire Catalog tab (options affecting the Catalog Selected Tracks action)&lt;br /&gt;
* In the Drive Options:&lt;br /&gt;
** In the Offset / Speed tab:&lt;br /&gt;
*** Use read sample offset correction&lt;br /&gt;
*** Use combined read/write sample offset correction&lt;br /&gt;
*** Overread into Lead-In and Lead-Out [to get the very first or last sector(s) of audio when using offset correction]&lt;br /&gt;
&lt;br /&gt;
Most of these features generally aren&#039;t needed, because:&lt;br /&gt;
* &amp;quot;Catalog&amp;quot; generation exists just to support an uncommon archiving strategy;&lt;br /&gt;
* Index-based rips are only useful for ripping the 00-index portions of tracks to separate files - e.g. for a CD with a hidden track you have to rewind from the beginning of the disc to hear, or for a CD with non-silent interludes during the &amp;quot;countdown to zero&amp;quot; time before certain tracks;&lt;br /&gt;
* Gaps will already be detected when that info is required;&lt;br /&gt;
* Gap removal isn&#039;t recommended because 00-index portions of tracks aren&#039;t always silent, and it can interfere with AccurateRip usage;&lt;br /&gt;
* The default CUE sheet formats work with EAC&#039;s CD burning features.&lt;br /&gt;
&lt;br /&gt;
The offset correction options are useful, but will be automatically set for you and greyed out if AccurateRip is enabled and a &amp;quot;Key Disc&amp;quot; has been used for configuration of the offset. Since offset correction without an AccurateRip &amp;quot;Key Disc&amp;quot; needs to be manually configured, it is recommended that Beginner mode be left disabled.&lt;br /&gt;
&lt;br /&gt;
=Normalize=&lt;br /&gt;
[[Image:EAC_options_Normalize.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Normalize&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab contains all settings regarding normalization of extracted music files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Normalize&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Normalizing is the process to change the volume of a track to a given maximum loudness, and is usually used to try to get all tracks of a CD or compilation to approximately the same loudness level. EAC&#039;s normalizer determines loudness based on peak amplitude, which can be close, but doesn&#039;t precisely correlate with perceived loudness. See [[ReplayGain]] (a technology used outside of EAC) for a more sophisticated and accurate way of normalizing volume.&lt;br /&gt;
&lt;br /&gt;
Of course, normalization results in the ripped track data not matching the original on the CD. If your goal is to make an exact copy, make sure that this option stays disabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Normalize to X%&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: 98%)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option is greyed out until the above option (&#039;&#039;Normalize&#039;&#039;) is enabled and represents the level of normalization. 100% would be maximum loudness, but to avoid clipping, you should set it a few percents lower (e.g. 98%).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;But only if peak level is smaller than X% or greater than Y%&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: 85%/99%)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option you can select which tracks will be normalized. All tracks which are out of the range (smaller than X, or greater than Y) are normalized, all others will not be changed.&lt;br /&gt;
&lt;br /&gt;
=Filename=&lt;br /&gt;
[[Image:EAC_options_Filename.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Filename&#039;&#039;&#039; tab]]&lt;br /&gt;
The resulting file names and directory structures can be configured in this tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Naming scheme&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A naming scheme for the resulting files can be specified here. There are many placeholders stated by the option dialog which can be used to build up a naming/directory scheme.&lt;br /&gt;
&lt;br /&gt;
Please note that a new set of placeholders was introduced in EAC version 1.0 beta 2, which is also more logical than that of earlier versions. For a comprehensive overview and by-version comparison of file naming placeholders, as well as those for [[EAC Compression Options#External compression|passing to a command-line encoder]], please see the dedicated page about [[EAC placeholders]].&lt;br /&gt;
&lt;br /&gt;
When naming the output files, you can also create a directory structure (or place them in an existing one): just use the backslash \ to separate the names of folders. The only limitation to this is that no absolute file paths (e.g. &amp;quot;C:\Music\%T&amp;quot;) can be constructed. The reason for this is that, when starting the extraction of a disc, EAC will either ask by a dialog box where the resulting files will be stored, or will use the predefined directory (this depends on what option is enabled as &#039;&#039;Standard directory for extraction&#039;&#039; in the &#039;&#039;Directories&#039;&#039; tab). The directory stated by either method will serve as the top-level folder, into which your files and any additional folders chosen will be placed according to your preferred naming structure.&lt;br /&gt;
&lt;br /&gt;
For example, choosing or specifying as standard the folder &#039;&#039;C:\Music\EAC&#039;&#039; and using the file-naming scheme (1.0b2 onwards) of &#039;&#039;%artist%\%album%\%tracknr2%. %title%&#039;&#039; will create files such as &#039;&#039;C:\Music\EAC\My Favourite Band\Eponymous Debut Album\01. Intro.mp3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use various artist naming scheme&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this option is enabled and the &#039;&#039;Various Artists&#039;&#039; option box is ticked (in the EAC main window), the naming scheme stated below is used. If you want different naming schemes for one/various artist CDs, then you should enable this setting. The placeholders are the same as stated above (&#039;&#039;Naming scheme&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Replace spaces by underscores&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enabling this option will EAC let replace spaces in filenames by underscores.&lt;br /&gt;
&lt;br /&gt;
=Catalog=&lt;br /&gt;
[[Image:EAC_options_Catalog.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Catalog&#039;&#039;&#039; tab]]&lt;br /&gt;
Catalog options which are applied when creating catalog samples (&#039;&#039;Action&#039;&#039; -&amp;gt; &#039;&#039;Catalog Selected Tracks&#039;&#039;) can be configured here. With this function, EAC can produce short samples of each track of a disc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Catalog file length (in seconds)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defines the length of each catalog sample track in seconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Catalog start position in a track (in seconds)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Specifies the start position of the catalog sample in a track in seconds. As many music titles are not very significant from the beginning of a track, it may be a good idea to let the catalog samples start somewhere in the middle of a track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Fade in length (in seconds)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want that the catalog sample tracks are faded in, enter a value greater than 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Fade out length (in seconds)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The same as stated above (&#039;&#039;Fade in length (in seconds)&#039;&#039;), but concerning fade out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Directories=&lt;br /&gt;
[[Image:EAC_options_Directories.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Directories&#039;&#039;&#039; tab]]&lt;br /&gt;
The directory where the extracted music files will be placed can be configured here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Standard directory for extraction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option decides whether the user is asked where to save the resulting files every time an extraction is started, or if a standard directory should be used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ask every time (default showing last used directory)&#039;&#039;&#039; &#039;&#039;(Default: enabled)&#039;&#039;: Any time an extraction starts, a dialog box appears asking for the directory to be used. This directory will be saved and used as default the next time this dialog box appears. &lt;br /&gt;
* &#039;&#039;&#039;Use this directory&#039;&#039;&#039;: When always extracting in the same directory anyway, there is no need of the dialog box stated above. In this case, a predefined directory can be specified here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Write=&lt;br /&gt;
[[Image:EAC_options_Write.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Write&#039;&#039;&#039; tab]]&lt;br /&gt;
Contains all settings for writing audio CDs with EAC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Upper all characters (on writing)&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If this option is enabled, all characters contained in the CD-text are transformed to upper case. On some CD players, this may look a little better than text in upper-/lower case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Include artist in the CD-Text track entry (on writing)&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some CD players will only show the track information of the CD-text. In such a case, the artist information will not be shown. If your CD player acts this way, you should enable this option so that the artist is swapped over into the track information. As an example &amp;quot;Bohemian Rhapsody&amp;quot; will become &amp;quot;Queen - Bohemian Rhapsody&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Disable copy protection flag on adding audio files to the layout editor by default&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When enabled, the copy protection flag will be disabled by default for all added tracks in the write layout editor. Because you can still disable the copy protection flag in the write layout editor when needed (&#039;&#039;Layout&#039;&#039; -&amp;gt; &#039;&#039;Edit selected indices...&#039;&#039; -&amp;gt; untick the &#039;&#039;Copy protected&#039;&#039; checkbox), it is recommended to leave this option disabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use CDRDAO for writing in the EAC layout editor&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When writing CDs with EAC, there are two possibilities: On the one hand, EAC can start an external application called [[CDRDAO]] to write the CD. The general advantage of CDRDAO is the compatibility with many (and even older) CD-R drives. On the other hand, EAC can use its internal writing routines. These are said wo be a bit more stable (as they are internal), but also do not support that many drives.&lt;br /&gt;
&lt;br /&gt;
Since version 0.99 prebeta 4, EAC comes with an installer which lets the user choose if CDRDAO should be installed or not. When it is not installed, this setting will be greyed out and EAC&#039;s internal writing routines will be used in any case. But even if CDRDAO support was installed, you should try to disable this option first and use EAC&#039;s internal writing routines. In most cases this will work properly. Only if you encounter problems with this setting, try to use CDRDAO.&lt;br /&gt;
&lt;br /&gt;
For more information on CDRDAO, see the [http://cdrdao.sourceforge.net/ CDRDAO homepage].&lt;br /&gt;
&lt;br /&gt;
=Interface=&lt;br /&gt;
[[Image:EAC_options_Interface.png|thumb|right|Recommended settings &#039;&#039;&#039;EAC options&#039;&#039;&#039;, &#039;&#039;&#039;Interface&#039;&#039;&#039; tab]]&lt;br /&gt;
In this tab, the interface used for the communication between EAC and the CD drive can be confuigured.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use of SCSI interface&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(&#039;&#039;&#039;Recommended: Native Win32 interface for Win NT/2000/XP&#039;&#039;&#039; (Win NT/2000/XP/Vista) / &#039;&#039;&#039;Installed external ASPI interface&#039;&#039;&#039; (Win 95/98/98SE/Me))&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the communication with the drive, EAC can use different interfaces. First, there is the &#039;&#039;Native Win32 interface for Win NT/2000/XP&#039;&#039;. This is the native interface which comes with every Windows since Windows NT and is sometimes called [[SPTI]] (SCSI Pass-Through Interface). As the name implies, this is the native interface for direct communication with the drive and despite of the name, this interface is also used for non-SCSI peripherals (IDE/ATAPI, USB, Firewire, etc.). Another interface which can be used is [[ASPI]] (Advanced SCSI Programming Interface). This is not a completely different kind of interface, but only an additional layer above SPTI. Thus ASPI only maps the communication commands onto the native interface (SPTI).&lt;br /&gt;
&lt;br /&gt;
If you use Windows NT or newer Windows operating systems, it is recommended that you first try the &#039;&#039;Native Win32 interface for Win NT/2000/XP&#039;&#039;. The reason is that any addition layer (like ASPI) on top of SPTI will increase the likelihood of errors. Only if the native interface does not work (e.g. EAC is not able to recognize your drive), then try to install an external ASPI interface and use this interface instead.&lt;br /&gt;
&lt;br /&gt;
When using an older version of Windows than Windows NT, then an ASPI interface should already be installed and it is recommended to use the option &#039;&#039;Installed external ASPI interface&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When you have to install an ASPI interface on your system because SPTI does not work (on Windows NT/2000/XP/Vista) or you want to use another ASPI driver (on Windows 95/98/98SE/Me), then you can do the following: The ASPI driver always recommended in conjunction with EAC is the [http://wiki.hydrogenaudio.org/index.php?title=Download_page#ASPI Ahead Nero ASPI Driver]. Download the DLL (winaspi32.dll) and copy it into the EAC directory. Then start EAC and a choose the new option (&#039;&#039;Installed external ASPI interface&#039;&#039;) from this option tab.&lt;br /&gt;
&lt;br /&gt;
Another (but not recommended) ASPI driver is the external ASAPI interface from VOB software. For this option to be available, you have to install the [http://wiki.hydrogenaudio.org/index.php?title=Download_page#ASPI ASAPI interface from VOB software] first.&lt;br /&gt;
&lt;br /&gt;
Note that all changes made in this option tab require a restart of EAC to take effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
* [http://www.exactaudiocopy.de/en/index.php/overview/basic-technology/extraction-technology/ Exact Audio Copy: Extraction Technology]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Universal_Product_Code Wikipedia: Universal Product Code]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Isrc Wikipedia: International Standard Recording Code]&lt;br /&gt;
* [http://cdrdao.sourceforge.net/ CDRDAO homepage]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Aspi Wikipedia: ASPI]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:EAC Guides]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_Compression_Options_(Legacy)&amp;diff=23037</id>
		<title>EAC Compression Options (Legacy)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_Compression_Options_(Legacy)&amp;diff=23037"/>
		<updated>2011-11-23T11:41:30Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* External compression */ Adding link to page on EAC placeholders&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[Exact Audio Copy]]’s &#039;&#039;&#039;compression options&#039;&#039;&#039; dialog (keyboard shortcut: F11) are found all options regarding the creating of [http://en.wikipedia.org/wiki/Audio_compression_(data) compressed audio files]. Here the user specifies how EAC is to behave when they press the &#039;&#039;MP3&#039;&#039; Button in the main window or select &#039;&#039;compressed&#039;&#039; items under the &#039;&#039;Action&#039;&#039; menu.&lt;br /&gt;
&lt;br /&gt;
Note: many options are dependent on the codec or external compressor (encoder). So, often no clear recommendation can be given. It is important that the user has a general understanding of what these settings do and how they possibly change the behavior of EAC and/or the [[codec]]/external compressor.&lt;br /&gt;
&lt;br /&gt;
This article was recently updated to reflect changes introduced in EAC v1.0b2; however, the instructions for prior versions were retained for reference.&lt;br /&gt;
&lt;br /&gt;
=Waveform=&lt;br /&gt;
[[Image:EAC_Compression_options_Waveform.png|thumb|right|Example settings &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;Waveform&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab allows you to select and choose the options for an internal [[codec]]. After audio data is read from the CD, EAC will pass it to the codec, and will write the codec&#039;s output to a file. Generally speaking, EAC’s internal codec support is for writing unusual [[WAV]] files (e.g. containing audio in the [[Adaptive Differential Pulse Code Modulation|ADPCM]] format or as a rare way of storing [[MP3]] data), although the options do allow for writing other formats.&lt;br /&gt;
&lt;br /&gt;
An internal codec is a [[Constant Bitrate|CBR]] (constant bit rate) audio converter library managed through the Windows Audio Compression Manager (ACM) legacy interface, and it typically has a filename ending in &amp;lt;code&amp;gt;.acm&amp;lt;/code&amp;gt;. Windows comes with a few such codecs installed already. These aren’t programs you run directly; they’re just converters invoked from within another program, e.g. EAC.&lt;br /&gt;
&lt;br /&gt;
All options are greyed out here if &#039;&#039;Use external program for compression&#039;&#039; in the &#039;&#039;External Compression&#039;&#039; tab is ticked. When using an external compressor, you of course cannot use an internal codec.&lt;br /&gt;
&lt;br /&gt;
Today, most people ripping music CDs don&#039;t use internal codecs; they use an external compressor, which is configured in the &#039;&#039;External Compression&#039;&#039; tab. An external compressor is a separate program that can be run directly from a command shell with various arguments telling it which file to compress, what tags to add, the output filename, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Wave format&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In this drop down box, all codecs installed on your system are listed. When new codecs are installed, they should show up in this list. The codec to choose depends on what should be achieved with the compression (sample format, compression ratio, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Sample format&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
With this option, different combinations of parameters for the compression and output format can be chosen, such as sample rate, resolution, mono/stereo. Which options are available here depends on the codec selected at the &#039;&#039;Wave format&#039;&#039; option (e.g. some codecs only support 4 bit resolution).&lt;br /&gt;
&lt;br /&gt;
If you were to choose &#039;&#039;Microsoft PCM Converter&#039;&#039; as the codec, and &#039;&#039;44,100 Hz, 16 Bit, Stereo&#039;&#039; as the output format, it would be the same as doing an [http://en.wikipedia.org/wiki/Red_Book_(CD_standard) uncompressed CD rip].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Add ID3 tag&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some formats (e.g. [[MP3]]) support [[ID3|ID3 tags]]. When this option is enabled, EAC will add these tags to the compressed files (only if the file format supports ID3 tags).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Do not write WAV header to file&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The codec only converts the audio data. EAC writes it to a file. This parameter determines whether to include a WAV header in the file.&lt;br /&gt;
&lt;br /&gt;
Although it has become a &#039;&#039;de facto&#039;&#039; standard that WAV files contain 16 bit, 44.1 kHz stereo PCM audio data (as on audio CDs), what actually makes an audio file a WAV file is not the format of the audio data itself but the presence of a WAV header at its beginning. The header specifies which data chunk(s) are in the file (normally there&#039;s just a single chunk consisting of all the audio), info about what format it’s in, and possibly some other rudimentary metadata. When such a header is present, EAC will ensure the output filename ends with &amp;lt;code&amp;gt;.wav&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have chosen a codec that outputs PCM data, then you probably &#039;&#039;do&#039;&#039; want a WAV header and filename ending in &amp;lt;code&amp;gt;.wav&amp;lt;/code&amp;gt;, so this option should be enabled. But if you have chosen a codec that outputs MP3 or Ogg Vorbis data, then the WAV header is optional, and in fact is probably not what you want, unless you have a specific need to put the compressed audio into a WAV file.&lt;br /&gt;
&lt;br /&gt;
For example, if you choose an MP3 codec, and you have this option disabled, then you&#039;ll generate an ordinary MP3 file, and therefore you should enter &amp;lt;code&amp;gt;.mp3&amp;lt;/code&amp;gt; in the next box (&#039;&#039;file extension for headerless files&#039;&#039;) to make sure it has a helpful filename. But if you choose an MP3 codec and you have this option enabled, then you&#039;ll generate an MP3 file that begins with a WAV header, and the filename will end in &amp;lt;code&amp;gt;.wav&amp;lt;/code&amp;gt;, and is likely to be confusing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;File extension for header files&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: .raw)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When the &#039;&#039;Do not write WAV header to file&#039;&#039; option is enabled, a filename extension for the output files can be specified here (e.g. &#039;&#039;.mp3&#039;&#039; for MP3 files). If the above option is disabled, this setting gets greyed out automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Quality setting&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: High quality (slow), &#039;&#039;&#039;Recommended: High quality (slow)&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some codecs support a quality setting to choose between a higher quality of the output files or faster encoding speed. If quality is the only matter, leave this option at the default, which is &#039;&#039;High quality (slow)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When using a &#039;&#039;User defined encoder&#039;&#039;, you can demarcate any portion of your custom command line as being for low- (delimit the chosen parameters with &#039;&#039;%l&#039;&#039;) and high-quality (similar but with &#039;&#039;%h&#039;&#039;) modes only and use this option to choose between the two.&lt;br /&gt;
&lt;br /&gt;
Note: EAC offers this choice of quality settings even if the selected codec doesn&#039;t use it.&lt;br /&gt;
&lt;br /&gt;
=External compression=&lt;br /&gt;
[[Image:EAC_Compression_options_External_Compression.png|thumb|right|Recommended settings EAC &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;External Compression&#039;&#039;&#039; tab]]&lt;br /&gt;
In this tab, all options for external compressors can be configured. As all settings are highly dependent on the particular compressor, most settings are only described here in general terms because often no specific recommendations can be given; but see the many [[:Category:EAC Guides|EAC guides]] (also linked below) written by Hydrogenaudio users for in-depth advice on topics including configuring various external encoders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;General recommendation:&#039;&#039;&#039;&#039;&#039; To avoid unwanted side effects and to be able to configure the encoding process in every detail, &#039;&#039;User Defined Encoder&#039;&#039; should be used as &#039;&#039;Parameter passing scheme&#039;&#039; and all options should be specified via the &#039;&#039;Additional command-line options&#039;&#039; only.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Side effects&amp;quot; basically means that it is a little complex what options have which effect when another &#039;&#039;Parameter passing scheme&#039;&#039; is specified (e.g. some settings are ignored completely). These side effects are explained in the following parameters, but specifying &#039;&#039;User Defined Encoder&#039;&#039; and using the command-line options only is a lot more convenient.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, there are also a few articles with details about how to configure EAC to use particular encoders:&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_FLAC EAC and FLAC]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Lame EAC and LAME]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_AAC EAC and Nero AAC] &lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Ogg_Vorbis EAC and OGG Vorbis]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_WavPack EAC and WavPack]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Monkey%27s_Audio EAC and Monkey&#039;s Audio]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Musepack EAC and Musepack]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_TAK EAC and] [[TAK]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use external program for compression&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To use an external compressor, this setting has to be enabled; otherwise, all the options here are greyed out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Parameter passing scheme&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
EAC comes with a few presets concerning external compressors and the required parameter passing scheme; they can be selected with this option (e.g. the &#039;&#039;Bit rate&#039;&#039; box will show all available options after a particular compressor was chosen here). But in general, the capabilities of EAC in passing parameters to external compressors are limited. In order to overcome some of these limitations, you can and should use the &#039;&#039;Additional command-line options&#039;&#039; for to pass parameters. The usual approach is setting the &#039;&#039;Parameter passing scheme&#039;&#039; to &#039;&#039;User Defined Encoder&#039;&#039; and using the &#039;&#039;Additional command-line options&#039;&#039; to specify all the encoding options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use file extension&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When using a &#039;&#039;User Defined Encoder&#039;&#039; as above, a file extension must be specified here. This should be the extension of the encoded file type (e.g. &#039;&#039;.flac&#039;&#039; when using a [[FLAC]] encoder and &#039;&#039;mp3&#039;&#039; when encoding to [[MP3]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Program, including path, used for compression&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The absolute path to the program used for compression. This may be an .exe or a .dll file (e.g. &#039;&#039;C:\Program Files\[[LAME]]\lame.exe&#039;&#039;). By clicking on the &#039;&#039;Browse...&#039;&#039; button, this path can be chosen by a file dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Additional command-line options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here additional parameters for the external compressor can be specified. To configure the additional command-line options, you can use the placeholders listed below (taken from the [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ]. For a comprehensive overview and by-version comparison of command-line placeholders, as well as those for [[EAC Options|Naming the output file]], please see the dedicated page about [[EAC placeholders]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ For EAC 1.0 beta 2 and newer&lt;br /&gt;
|-&lt;br /&gt;
! placeholder&lt;br /&gt;
! meaning&lt;br /&gt;
|-&lt;br /&gt;
| %source% || Source filename&lt;br /&gt;
|-&lt;br /&gt;
| %dest% || Destination filename&lt;br /&gt;
|-&lt;br /&gt;
| %original% || Original filename (without temporary renaming)&lt;br /&gt;
|-&lt;br /&gt;
| %ishigh%…%ishigh% || Text “…” only when “High quality” selected&lt;br /&gt;
|-&lt;br /&gt;
| %islow%…%islow% || Text “…” only when “Low quality” selected&lt;br /&gt;
|-&lt;br /&gt;
| %haslyrics%…%haslyrics% || Text “…” only when lyrics exist&lt;br /&gt;
|-&lt;br /&gt;
| %hascover%…%hascover% || Text “…” only when storing cd cover is enabled and cover exists&lt;br /&gt;
|-&lt;br /&gt;
| %crcenabled%…%crcenabled% || Text “…” only when “CRC checksum” selected&lt;br /&gt;
|-&lt;br /&gt;
| %title% || Track title&lt;br /&gt;
|-&lt;br /&gt;
| %genre% || MP3 music genre&lt;br /&gt;
|-&lt;br /&gt;
| %year% || Year&lt;br /&gt;
|-&lt;br /&gt;
| %cddbid% || freedb ID&lt;br /&gt;
|-&lt;br /&gt;
| %artist% || Track artist&lt;br /&gt;
|-&lt;br /&gt;
| %lyrics% || Lyrics&lt;br /&gt;
|-&lt;br /&gt;
| %lyricsfile% || Filename of lyrics text file (ANSI)&lt;br /&gt;
|-&lt;br /&gt;
| %bitrate% || Bitrate (“32″..”320″)&lt;br /&gt;
|-&lt;br /&gt;
| %comment% || Comment (as selected in EAC)&lt;br /&gt;
|-&lt;br /&gt;
| %tracknr% || Track number&lt;br /&gt;
|-&lt;br /&gt;
| %totalcds% || Total number of CDs in the given CD set&lt;br /&gt;
|-&lt;br /&gt;
| %cdnumber% || Number of the CD&lt;br /&gt;
|-&lt;br /&gt;
| %composer% || Track performer&lt;br /&gt;
|-&lt;br /&gt;
| %trackcrc% || CRC of extracted track&lt;br /&gt;
|-&lt;br /&gt;
| %coverfile% || Filename of CD cover image&lt;br /&gt;
|-&lt;br /&gt;
| %numtracks% || Number of tracks on album&lt;br /&gt;
|-&lt;br /&gt;
| %albumtitle% || CD title&lt;br /&gt;
|-&lt;br /&gt;
| %albumartist% || CD artist&lt;br /&gt;
|-&lt;br /&gt;
| %albumcomposer% || CD composer&lt;br /&gt;
|-&lt;br /&gt;
| %albuminterpret% ||– CD performer&lt;br /&gt;
|-&lt;br /&gt;
| %% || The ‘%’ character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So, an exemplary EAC 1.0b2 or newer command-line for the [[LAME]] MP3 encoder could look like this :&lt;br /&gt;
&amp;lt;pre&amp;gt;-V 0 --vbr-new --ta &amp;quot;%artist%&amp;quot; --tt &amp;quot;%title%&amp;quot; --tl &amp;quot;%albumtitle%&amp;quot; --tg &amp;quot;%genre%&amp;quot; --ty &amp;quot;%year%&amp;quot; --tn &amp;quot;%tracknr%&amp;quot; --tc &amp;quot;%comment%&amp;quot; %source% %dest%&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the command-line options of LAME (e.g. &amp;lt;code&amp;gt;-V 0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--ta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--tt&amp;lt;/code&amp;gt;, etc.) are used in conjunction with the EAC placeholders (e.g. &amp;lt;code&amp;gt;%artist%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%title%&amp;lt;/code&amp;gt;, etc.) to control LAME using this command-line.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ For EAC 1.0 beta 1 and older&lt;br /&gt;
|-&lt;br /&gt;
! placeholder&lt;br /&gt;
! meaning&lt;br /&gt;
|-&lt;br /&gt;
| %s&lt;br /&gt;
| Source filename&lt;br /&gt;
|-&lt;br /&gt;
| %d&lt;br /&gt;
| Destination filename&lt;br /&gt;
|-&lt;br /&gt;
| %h...%h&lt;br /&gt;
| Text &amp;quot;...&amp;quot; only when &#039;&#039;High quality&#039;&#039; selected&lt;br /&gt;
|-&lt;br /&gt;
| %l...%l&lt;br /&gt;
| Text &amp;quot;...&amp;quot; only when &#039;&#039;Low quality&#039;&#039; selected&lt;br /&gt;
|-&lt;br /&gt;
| %c...%c&lt;br /&gt;
| Text &amp;quot;...&amp;quot; only when &#039;&#039;CRC checksum&#039;&#039; selected&lt;br /&gt;
|-&lt;br /&gt;
| %r&lt;br /&gt;
| Bitrate (&amp;quot;32&amp;quot;..&amp;quot;320&amp;quot;) as chosen in the &#039;&#039;Bit rate&#039;&#039; option&lt;br /&gt;
|-&lt;br /&gt;
| %a&lt;br /&gt;
| CD artist&lt;br /&gt;
|-&lt;br /&gt;
| %g&lt;br /&gt;
| CD title&lt;br /&gt;
|-&lt;br /&gt;
| %t&lt;br /&gt;
| Track title&lt;br /&gt;
|-&lt;br /&gt;
| %y&lt;br /&gt;
| Year&lt;br /&gt;
|-&lt;br /&gt;
| %n&lt;br /&gt;
| Track number&lt;br /&gt;
|-&lt;br /&gt;
| %m&lt;br /&gt;
| MP3 music genre&lt;br /&gt;
|-&lt;br /&gt;
| %o&lt;br /&gt;
| Original filename (without temporary renaming)&lt;br /&gt;
|-&lt;br /&gt;
| %e&lt;br /&gt;
| Comment (as selected in EAC)&lt;br /&gt;
|-&lt;br /&gt;
| %b&lt;br /&gt;
| CRC of extracted track&lt;br /&gt;
|-&lt;br /&gt;
| %f&lt;br /&gt;
| freedb ID&lt;br /&gt;
|-&lt;br /&gt;
| %x&lt;br /&gt;
| Number of tracks on album&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So, an exemplary EAC 1.0b1 or earlier command-line for the [[LAME]] MP3 encoder could look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;-V 0 --vbr-new --ta &amp;quot;%a&amp;quot; --tt &amp;quot;%t&amp;quot; --tl &amp;quot;%g&amp;quot; --tg &amp;quot;%m&amp;quot; --ty &amp;quot;%y&amp;quot; --tn &amp;quot;%n&amp;quot; --tc &amp;quot;%e&amp;quot; %s %d&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the command-line options of LAME (e.g. &amp;lt;code&amp;gt;-V 0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--ta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--tt&amp;lt;/code&amp;gt;, etc.) are used in conjunction with the EAC placeholders (e.g. &amp;lt;code&amp;gt;%a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%t&amp;lt;/code&amp;gt;, etc.) to control LAME only by this command-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Bit rate&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
What is shown in this drop-down box depends on the &#039;&#039;Parameter passing scheme&#039;&#039; selected and specifies the bit rate/quality settings of the external compressor.  This setting is also used to calculate the approximate size of the compressed tracks shown in EAC&#039;s main window.&lt;br /&gt;
&lt;br /&gt;
In the case that &#039;&#039;User Defined Encoder&#039;&#039; is selected as the &#039;&#039;Parameter passing scheme&#039;&#039;, this setting does not have an effect unless the &amp;lt;code&amp;gt;%r&amp;lt;/code&amp;gt; parameter is specified in the &#039;&#039;Additional command-line options&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Quality setting&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: High quality, &#039;&#039;&#039;Recommended: High quality&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Many encoders offer the choice between better quality or faster encoding speed. This option is designated to choose between these two settings, but the precise behavior depends on what is selected on the &#039;&#039;Parameter passing scheme&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;User Defined Encoder&#039;&#039; is chosen, this option does not have an effect unless the &amp;lt;code&amp;gt;%h…%h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%l…%l&amp;lt;/code&amp;gt; parameters are used in the &#039;&#039;Additional command-line options&#039;&#039; (see below).&lt;br /&gt;
&lt;br /&gt;
When any other &#039;&#039;Parameter passing scheme&#039;&#039; is used, this setting is reflected on the particular encoder. When using LAME for instance, &#039;&#039;High quality&#039;&#039; corresponds to the &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt; switch, whereas &#039;&#039;Low quality&#039;&#039; uses the &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt; switch (in this case, these switches specify the &amp;quot;Noise shaping and psycho acoustic algorithms&amp;quot;, means choice between quality and encoding speed). This is another reason that it is advisable to use a completely custom &#039;&#039;User defined encoder&#039;&#039;; but if you &#039;&#039;do&#039;&#039; use another scheme, you will probably want to ensure that &#039;&#039;High quality&#039;&#039; is selected.&lt;br /&gt;
&lt;br /&gt;
As already mentioned above, with this setting it is also possible to configure the &#039;&#039;Additional command-line option&#039;&#039; even further: by delimiting chosen portions of your command line with the placeholders &amp;lt;code&amp;gt;%h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%l&amp;lt;/code&amp;gt;, you can specify two alternate settings for the external compressor to use depending on this option. The following example (simplified) shows how to use this feature (again with LAME):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;%h-V0%h%l-V5%l --vbr-new %s %d&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, if the &#039;&#039;High quality&#039;&#039; option is chosen, LAME will encode with &amp;lt;code&amp;gt;-V0&amp;lt;/code&amp;gt;; whereas it will encode at &amp;lt;code&amp;gt;-V5&amp;lt;/code&amp;gt; when &#039;&#039;Low quality&#039;&#039; is selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Delete WAV after compression&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If this setting is enabled, EAC automatically deletes the extracted WAV file after compression. If you do not need these files (of course the compressed files are kept) after extraction/compression, leave this option enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use CRC check&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some encoders have the ability to store a [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC] checksum (cyclic redundancy check) in the resulting (compressed) file. This might be used then to check the consistency of this file during playback. But enabling this CRC check has two major drawbacks: First, this will add 16 bits (the CRC value) on every frame of the encoded file and will possibly increase the file size considerably. Second, many encoders do not support this feature very well because of calculating wrong CRC checksums. So usually players will simply ignore this information. This option also has no effect at all when selected &#039;&#039;User Defined Encoder&#039;&#039; at the &#039;&#039;Parameter passing scheme&#039;&#039;. Thus having more disadvantages, it is generally recommended to disable this option regardless of the encoder used.&lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;User Defined Encoder&#039;&#039; is chosen, this setting allows additional parameters to take effect using the &amp;lt;code&amp;gt;%c...%c&amp;lt;/code&amp;gt; placeholder, otherwise it has no effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Add ID3 tag&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this option is enabled, EAC writes [[ID3]] tags to the compressed files.  Make sure only to use this setting with mp3 files.  Formats such as flac, TAK, WavPack, Monkey&#039;s Audio and Ogg Vorbis were not intended to use ID3 tags and adding such tags may cause problems.&lt;br /&gt;
&lt;br /&gt;
Another possibility to include ID3 tagging is to use the external compressor itself to tag the resulting files. This would be done via the &#039;&#039;Additional command-line options&#039;&#039;. Indeed, it is recommended to use this where available, as seen in the above example command lines for LAME. (If this option is enabled &#039;&#039;and&#039;&#039; tagging instructions are included in the command line, the latter have no effect because EAC immediately overwrites the tags written by the encoder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Check for external programs return code&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this setting is enabled, EAC checks the return code of an external compressor. When the external compressor returns an error code (e.g. because of a wrong command-line parameter was used), EAC shows this error message in a dialog box. So, it’s recommended to enable this option in order to diagnose any errors.&lt;br /&gt;
&lt;br /&gt;
=Offset=&lt;br /&gt;
[[Image:EAC_Compression_options_Offset.png|thumb|right|Recommended settings EAC &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;Offset&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab offers options regarding offset correction during encoding/decoding and the ID3 tag comment field.&lt;br /&gt;
&lt;br /&gt;
Note: The offset mentioned here has nothing to do with a [[Exact Audio Copy#Offset technology|drive offset]] and therefore should not be mistaken for the latter. In addition, most popular encoders now have their own built-in compensation for encoding offsets, and certain decoders can use this to eliminate any unwanted gaps; in such cases, these options are unnecessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use Offset Correction for encoding and decoding&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some encoders will have an offset when encoding. This means that at the beginning of a track they often add some silence, whereas a few samples could be missing at the end. When decoding again, this could result in some unwanted gaps. This options offers now the opportunity to correct this encoding/decoding offset so that the original file can be reconstructed (at least concerning correct beginning/end of a track; with [[Lossy|lossy]] formats the original file can not be reconstructed completely). The point behind this option is that is possible that there is such an offset between the codec which is used for encoding (the actual codec) and the other one used for decoding (default installed codec). An example would be using [[LAME]] for MP3 encoding and the Fraunhofer codec for decoding. In this case, this option would be useful.&lt;br /&gt;
&lt;br /&gt;
So, if you decode your encoded files and experience some unwanted gaps in the decoded files, then you should try to enable this option and configure it accordingly (see below). In all other cases, leave this option disabled—especially when you encode and decode with the same encoder or, as noted above, programs that themselves account for encoding/decoding delay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Sample offset&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: 0)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When enabling the option &#039;&#039;Use Offset Correction for encoding and decoding&#039;&#039;, a sample offset has to be entered here. With a click on the button &#039;&#039;Detect Offset...&#039;&#039; the correct offset can be recognized automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use LAME command-line encoder/decoder for decoding MP3 files&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option is usually greyed out. To make it available, a [[LAME]] executable (lame.exe) has to be placed in the EAC directory. This has to be done manually.&lt;br /&gt;
&lt;br /&gt;
If this option is enabled then, LAME is used automatically to decode MP3 files (&#039;&#039;Tools&#039;&#039; -&amp;gt; &#039;&#039;Decompress...&#039;&#039;). This overrides EAC&#039;s behavior which uses the Fraunhofer codec for MP3 decoding by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Construction of the ID3 tag comment field on extraction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When the option &#039;&#039;Add [[ID3]] tag&#039;&#039; in the &#039;&#039;External Compression&#039;&#039; tab is enabled, this setting specifies what information should be stored in the comment field. When EAC is not used to tag compressed files and tagging is completely done via command-line parameters, this setting specifies the contents of the &amp;quot;%e&amp;quot; placeholder, which can then be included in the command line of each newly encoded file. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Write &amp;quot;Track &amp;lt;tracknumber&amp;gt;&amp;quot; into ID3 tag comment field&#039;&#039;&#039; &#039;&#039;(Default: enabled)&#039;&#039;: track number is written into the comment field.&lt;br /&gt;
* &#039;&#039;&#039;Write CRC checksums into ID3 tag comment field&#039;&#039;&#039;: a [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC checksum] is written into the comment field.&lt;br /&gt;
* &#039;&#039;&#039;Write freedb ID into ID3 tag comment field&#039;&#039;&#039;: a [http://en.wikipedia.org/wiki/Freedb freedb] ID is written into the comment field.&lt;br /&gt;
* &#039;&#039;&#039;Write following text into ID3 tag comment field&#039;&#039;&#039;: text of your own choice is written into the comment field.&lt;br /&gt;
&lt;br /&gt;
=ID3 Tag=&lt;br /&gt;
[[Image:EAC_Compression_options_ID3_Tag.png|thumb|right|Recommended settings EAC &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;ID3 Tag&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab offers some options regarding the [[ID3]] [[tag]]ging capabilities of EAC. Note that the option &#039;&#039;Add ID3 tag&#039;&#039; in the &#039;&#039;External Compression&#039;&#039; tab has to be enabled for all these settings to have an effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use ID3v1.1 tags instead of ID3v1.0 tags&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this option is enabled, [[ID3v1.1]] tags are used instead of [[ID3v1|ID3v1.0]] tags. The only difference between the two is that the former can additionally store a track number. Because most players are capable of reading ID3v1.1 tags, it is recommended to enable this option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Additionally write ID3v2 tags, using a padding of X kB&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled/4, &#039;&#039;&#039;Recommended: enabled/4&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option enabled, EAC writes [[ID3v2]] (ID3v2.3) tags to the encoded files, in addition to the ID3v1 tags. Because ID3v2 tags have a lot advantages over ID3v1 tags (e.g. [http://en.wikipedia.org/wiki/Unicode Unicode]] support) and are supported by most players, it is recommended to enable this option.&lt;br /&gt;
&lt;br /&gt;
As ID3v2 tags are usually placed in front of a file, there may be a problem with altering or adding tags once the file is written. If tags are added or existing tags are becoming bigger, the ID3 chunk in a file will need some more space. In the worst case, the whole audio file has to be rewritten, which may be time consuming.&lt;br /&gt;
&lt;br /&gt;
This is where padding comes into play. When using padding, some additional space is added to the file while encoding to store such added or growing tags. In this case, the file does not have to be rewrittten completely, only this additional padding space is used when tags are added or altered. This makes adding/altering tags a lot more convenient and faster. The only disadvantage of padding is that the encoded files are a little bigger. EAC suggests a padding size of 4 KB. This means that every encoded file will be 4 KB bigger in size compared to a file which does not use padding. So if it is likely that you change or add some tags after the file has been created, then you should leave this option at 4 KB (or fit it your needs). If saving space (e.g. for mobile usage) is more important for you, then you can set this setting to 0 KB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use ID3v2.4.0 tags instead of ID3v2.3.0 tags&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ID3v2.4 is the latest development of this standard and has a few advantages over ID3v2.3 (e.g. allows usage of [http://en.wikipedia.org/wiki/UTF-8 UTF-8] character encoding). However, there was a bug in EAC that no ID3v2.4 can be written: in fact, when this option is enabled, EAC does not write any ID3v2 tags at all, so it is recommended to leave this option disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Is the above still valid for newer versions? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use track format xx/xx in ID3v2 tags (e.g. 01/16)&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ID3v1 is only able to store the track number itself (e.g. &amp;quot;05&amp;quot;). With ID3v2 it is possible to store also the number of total tracks (e.g. &amp;quot;05/15&amp;quot;). If you wish to keep this information with your files, leave this option enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Construction of filenames from ID3 tags&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: %T - %A)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option specifies how file names are constructed from ID3 tags when using the rename feature of EAC (&#039;&#039;Tools&#039;&#039; -&amp;gt; &#039;&#039;Rename From ID3 Tags...&#039;&#039;). You can use placeholder to build up the filename.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
* [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ (placeholders for command-line options)]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cyclic_redundancy_check Wikipedia: &lt;br /&gt;
* [http://www.sonicspot.com/guide/wavefiles.html The Sonic Spot: Wave File Format]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Resource_Interchange_File_Format Wikipedia: Resource Interchange File Format]Cyclic redundancy check]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Id3 Wikipedia: ID3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:EAC Guides]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23036</id>
		<title>EAC placeholders</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23036"/>
		<updated>2011-11-23T11:30:44Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Exact Audio Copy]]&#039;&#039;&#039; provides numerous &#039;&#039;&#039;placeholders&#039;&#039;&#039; to be used when [[EAC Compression Options#External_compression|invoking a command-line encoder]] and when [[EAC Options#Filename|naming output files]].&lt;br /&gt;
&lt;br /&gt;
Beginning with EAC version 1.0 beta 2, the naming scheme for placeholders was revamped, necessitating that users moving to this new version revise their command lines. Both old and new lists of placeholders and their meanings have long been available in the official [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] and in several of the Hydrogenaudio Knowledgebase’s own [http://wiki.hydrogenaudio.org/index.php?title=Category:Guides Guides]; however, there was no easy way to look up values and to compare them between different versions.&lt;br /&gt;
&lt;br /&gt;
Moreover, confusion can arise from the fact that versions of EAC prior to 1.0b2 used different placeholders for naming the output file compared to those for passing to the external encoder. These two sets of placeholders do not correspond, but they are similar enough to get mixed up.&lt;br /&gt;
&lt;br /&gt;
For these reasons, as well as for general convenience and ease of use, this page intends to simplify the process of using (or comparing/substituting) placeholders, by collating all of those listed by the [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] into a single table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto;&amp;quot;&lt;br /&gt;
|+ Placeholders used in EAC&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Property&#039;&#039;||&#039;&#039;External Compression placeholders pre-1.0b2&#039;&#039;||&#039;&#039;External Compression placeholders in 1.0b2 and later&#039;&#039;||&#039;&#039;Filename placeholders pre-1.0b2&#039;&#039;||&#039;&#039;Filename placeholders in 1.0b2 and later&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Files&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Source filename||%s||%source%||||&lt;br /&gt;
|-&lt;br /&gt;
|Destination filename||%d||%dest%||||&lt;br /&gt;
|-&lt;br /&gt;
|Original filename (without temporary renaming)||%o||%original%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Quality settings&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “High quality” selected||%h…%h||%ishigh%…%ishigh%||||&lt;br /&gt;
|-&lt;br /&gt;
|-Text “…” only when “Low quality” selected||%l…%l||%islow%…%islow%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Common metadata&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Track artist||%a||%artist%||%A||%artist%&lt;br /&gt;
|-&lt;br /&gt;
|Track title||%t||%title%||%T||%title%&lt;br /&gt;
|-&lt;br /&gt;
|CD artist||%v||%albumartist%||%D||%albumartist%&lt;br /&gt;
|-&lt;br /&gt;
|CD title||%g||%albumtitle%||%C||%albumtitle%&lt;br /&gt;
|-&lt;br /&gt;
|Track composer/performer||||%composer%||||%composer%||&lt;br /&gt;
|-&lt;br /&gt;
|CD composer||||%albumcomposer%||||%albumcomposer%&lt;br /&gt;
|-&lt;br /&gt;
|CD performer||||%albuminterpret%||||%albuminterpret%&lt;br /&gt;
|-&lt;br /&gt;
|Year||%y||%year%||%Y||%year%&lt;br /&gt;
|-&lt;br /&gt;
|Track number||%n||%tracknr% (same as %tracknr2%)||%N||&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 1 digit)||||%tracknr1%||||%tracknr1%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 2 digits)||||%tracknr2%||||%tracknr2%&lt;br /&gt;
|-&lt;br /&gt;
|Track number (at least 3 digits)||||%tracknr3%||||%tracknr3%&lt;br /&gt;
|-&lt;br /&gt;
|Total number of CDs in the given CD set||||%totalcds%||||%totalcds%&lt;br /&gt;
|-&lt;br /&gt;
|Number of the CD||||%cdnumber%||||%cdnumber%&lt;br /&gt;
|-&lt;br /&gt;
|Number of tracks on album||%x||%numtracks%||||%numtracks%&lt;br /&gt;
|-&lt;br /&gt;
|MP3 music genre||%m||%genre%||%I||%genre%&lt;br /&gt;
|-&lt;br /&gt;
|freedb music type||||||%B||%cddbtype%&lt;br /&gt;
|-&lt;br /&gt;
|Comment (as selected in EAC)|||%e||%comment%||||%comment%&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Album artwork&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when storing CD cover is enabled||%j…%j||%hascover%…%hascover% (only when storing CD cover is enabled and cover exists)||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of CD cover image||%i||%coverfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Lyrics&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when lyrics exist||||%haslyrics%…%haslyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Lyrics||||%lyrics%||||&lt;br /&gt;
|-&lt;br /&gt;
|Filename of lyrics text file (ANSI)||||%lyricsfile%||||&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Other information&#039;&#039;&#039;||||||||&lt;br /&gt;
|-&lt;br /&gt;
|Text “…” only when “CRC checksum” selected||%c…%c||%crcenabled%…%crcenabled%||||&lt;br /&gt;
|-&lt;br /&gt;
|CRC of extracted track||%b||%trackcrc%||||&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (minutes part)||||||||%lengthmin%&lt;br /&gt;
|-&lt;br /&gt;
|Track duration (seconds part)||||||||%lengthsec%&lt;br /&gt;
|-&lt;br /&gt;
|Bitrate (“32″..”320″) [set in Compression Options]||%r||%bitrate%||||&lt;br /&gt;
|-&lt;br /&gt;
|freedb ID||%f||%cddbid%||%F||%cddbid%&lt;br /&gt;
|-&lt;br /&gt;
|The ‘%’ character||||%%||||%%&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23035</id>
		<title>EAC placeholders</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_placeholders&amp;diff=23035"/>
		<updated>2011-11-22T14:40:25Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Exact Audio Copy&amp;#039;&amp;#039;&amp;#039; provides numerous &amp;#039;&amp;#039;&amp;#039;placeholders&amp;#039;&amp;#039;&amp;#039; to be used when invoking a command-line encoder. Beginning with EAC version 1.0 beta 2, the naming scheme for plac…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Exact Audio Copy]]&#039;&#039;&#039; provides numerous &#039;&#039;&#039;placeholders&#039;&#039;&#039; to be used when invoking a command-line encoder. Beginning with EAC version 1.0 beta 2, the naming scheme for placeholders was revamped, necessitating that users moving to this new version revise their command lines. Both old and new lists of placeholders and their meanings are available in the official [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ] and in several of the Hydrogenaudio Knowledgebase’s own [http://wiki.hydrogenaudio.org/index.php?title=Category:Guides Guides]. This page intends to simplify the process of migrating to a new version of EAC by collating the two sets of placeholders into a single table for ease of comparison/substitution.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto;&amp;quot;&lt;br /&gt;
|+ Comparison of placeholders from versions of EAC before and after 1.0 beta 2&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;For versions before 1.0 beta 2&#039;&#039;||&#039;&#039;For versions from 1.0 beta 2 on&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Files&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|%s – Source filename||%source% – Source filename&lt;br /&gt;
|-&lt;br /&gt;
|%d – Destination filename||%dest% – Destination filename&lt;br /&gt;
|-&lt;br /&gt;
|%o – Original filename (without temporary renaming)||%original% – Original filename (without temporary renaming)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Quality settings&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|%h…%h – Text “…” only when “High quality” selected||%ishigh%…%ishigh% – Text “…” only when “High quality” selected&lt;br /&gt;
|-&lt;br /&gt;
|%l…%l -Text “…” only when “Low quality” selected||%islow%…%islow% -Text “…” only when “Low quality” selected&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Common metadata&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|%a – Track artist||%artist% – Track artist&lt;br /&gt;
|-&lt;br /&gt;
|%t – Track title||%title% – Track title&lt;br /&gt;
|-&lt;br /&gt;
|%v – CD artist||%albumartist% – CD artist&lt;br /&gt;
|-&lt;br /&gt;
|%g – CD title||%albumtitle% – CD title			&lt;br /&gt;
|-&lt;br /&gt;
|||%composer% – Track performer&lt;br /&gt;
|-&lt;br /&gt;
|||%albumcomposer% – CD composer&lt;br /&gt;
|-&lt;br /&gt;
|||%albuminterpret% – CD performer&lt;br /&gt;
|-&lt;br /&gt;
|%y – Year||%year% – Year&lt;br /&gt;
|-&lt;br /&gt;
|%n – Track number||%tracknr% – Track number (same as %tracknr2%)&lt;br /&gt;
|-&lt;br /&gt;
|||%tracknr1% – Track number (at least 1 digit)&lt;br /&gt;
|-&lt;br /&gt;
|||%tracknr2% – Track number (at least 2 digits)&lt;br /&gt;
|-&lt;br /&gt;
|||%tracknr3% – Track number (at least 3 digits)&lt;br /&gt;
|-&lt;br /&gt;
|||%totalcds% – Total number of CDs in the given CD set&lt;br /&gt;
|-&lt;br /&gt;
|||%cdnumber% – Number of the CD&lt;br /&gt;
|-&lt;br /&gt;
|%x – Number of tracks on album||%numtracks% – Number of tracks on album&lt;br /&gt;
|-&lt;br /&gt;
|%m – MP3 music genre||%genre% – MP3 music genre&lt;br /&gt;
|-&lt;br /&gt;
|%e – Comment (as selected in EAC)||%comment% – Comment (as selected in EAC)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Album artwork&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|%j…%j – Text “…” only when storing cd cover is enabled||%hascover%…%hascover% – Text “…” only when storing cd cover is enabled and cover exists&lt;br /&gt;
|-&lt;br /&gt;
|%i – Filename of CD cover image||%coverfile% – Filename of CD cover image&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Lyrics&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|||%haslyrics%…%haslyrics% – Text “…” only when lyrics exist&lt;br /&gt;
|-&lt;br /&gt;
|||%lyrics% – Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|||%lyricsfile% – Filename of lyrics text file (ANSI)	&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Other information&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|%c…%c – Text “…” only when “CRC checksum” selected||%crcenabled%…%crcenabled% – Text “…” only when “CRC checksum” selected&lt;br /&gt;
|-&lt;br /&gt;
|%b – CRC of extracted track||%trackcrc% – CRC of extracted track&lt;br /&gt;
|-&lt;br /&gt;
|%f – freedb ID||%cddbid% – freedb ID&lt;br /&gt;
|-&lt;br /&gt;
|%r – Bitrate (“32″..”320″)||%bitrate% – Bitrate (“32″..”320″)&lt;br /&gt;
|-&lt;br /&gt;
|||%% – The ‘%’ character&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Commandline_Guide&amp;diff=23025</id>
		<title>Foobar2000:Commandline Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Commandline_Guide&amp;diff=23025"/>
		<updated>2011-10-24T10:20:08Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k}}&lt;br /&gt;
&lt;br /&gt;
=== General information ===&lt;br /&gt;
Some features of foobar2000 can be accessed through a simple command line interface.&lt;br /&gt;
&lt;br /&gt;
Each command line parameter is either parsed as a command (starting with a slash), or as the name of a file/folder that the user wishes to open or add to a playlist (the behaviour depends on other command line switches and setting under &amp;quot;Preferences &amp;gt; [[Foobar2000:Preferences:Shell_Integration|Shell Integration]]&amp;quot;). Arguments containing spaces can be escaped using double quotes, e.g. »&amp;lt;tt&amp;gt;foobar2000.exe &amp;quot;01 First Track.mp3&amp;quot;&amp;lt;/tt&amp;gt;« or »&amp;lt;tt&amp;gt;foobar2000.exe &amp;quot;/command:Play or pause&amp;quot;&amp;lt;/tt&amp;gt;« or »&amp;lt;tt&amp;gt;foobar2000.exe /command:&amp;quot;Play or pause&amp;quot;&amp;lt;/tt&amp;gt;«.&lt;br /&gt;
&lt;br /&gt;
The set of available command line commands can be extended using additional components.&lt;br /&gt;
&lt;br /&gt;
=== Basic commands ===&lt;br /&gt;
This is what »&amp;lt;tt&amp;gt;foobar2000.exe /?&amp;lt;/tt&amp;gt;« shows as of version 1.1 &amp;amp;ndash; most of the commands are self-explanatory:&lt;br /&gt;
  Available switches:&lt;br /&gt;
    /add &amp;lt;list-of-files&amp;gt; - appends the specified files to the current playlist instead of replacing the playlist content and playing them immediately&lt;br /&gt;
    /immediate - bypasses the &amp;quot;please wait&amp;quot; dialog when adding files&lt;br /&gt;
    /play, /pause, /playpause, /prev, /next, /rand, /stop - playback controls&lt;br /&gt;
    /exit - exits foobar2000&lt;br /&gt;
    /show, /hide - shows or hides the main foobar2000 window&lt;br /&gt;
    /config - opens the Preferences dialog&lt;br /&gt;
    /command:&amp;lt;menu command&amp;gt; - invokes the specified main menu command&lt;br /&gt;
    /playlist_command:&amp;lt;context menu command&amp;gt; - invokes the specified context menu command on current playlist selection&lt;br /&gt;
    /playing_command:&amp;lt;context menu command&amp;gt; - invokes the specified context menu command on currently played track&lt;br /&gt;
    /context_command:&amp;lt;context menu command&amp;gt; &amp;lt;files&amp;gt; - invokes the specified context menu command on the specified files&lt;br /&gt;
&lt;br /&gt;
===== Clarifications =====&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;tt&amp;gt;/add&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;Changes the default behaviour of &amp;quot;opening&amp;quot; (replace active playlist and start playback) files and directories found on the command line.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;tt&amp;gt;/immediate&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;foobar2000 always sorts incoming files using the pattern configured under &amp;quot;Preferences &amp;gt; [[Foobar2000:Preferences:Shell_Integration|Shell Integration]]&amp;quot;. Because there is a possibility that more files belonging to the same batch will be passed to the program, adding the items really to a playlist is postponed until no new file is received for a short while, because only with the full set of incoming files they can be correctly sorted. Use this option to disable this behaviour for the currently added items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;tt&amp;gt;/command:&amp;lt;...&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;lt;tt&amp;gt;/xxx_command:&amp;lt;...&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The command names can be derived e.g. from the &amp;quot;Preferences &amp;gt; [[Foobar2000:Preferences:General:Keyboard_Shortcuts|Keyboard Shortcuts]]&amp;quot; dialog: look in the sub-section &#039;&#039;[main]&#039;&#039; for main menu commands (e.g. &amp;lt;tt&amp;gt;/command:Console&amp;lt;/tt&amp;gt;) or &#039;&#039;[context]&#039;&#039; for the other types (e.g. &amp;lt;tt&amp;gt;/playing_command:Properties&amp;lt;/tt&amp;gt;). Use only the final command name; do not specify the name of the parent menu or any other part of the menu path/group. (Note: this limits the usage of these commands in some cases; look into the [[Foobar2000:Components_0.9/Run_Commands_(foo_runcmd)|foo_runcmd]] component if you need more functionality.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Extensions ===&lt;br /&gt;
Known components which provide additional command line functionality:&lt;br /&gt;
* [[Foobar2000:Components/Masstagger_(foo_masstag)|Masstagger (foo_masstag)]] &amp;amp;ndash; &amp;lt;tt&amp;gt;/tag:xxx&amp;lt;/tt&amp;gt; commands for tag modifications.&lt;br /&gt;
* [[Foobar2000:Components_0.9/Run_Commands_(foo_runcmd)|Run Commands (foo_runcmd)]] &amp;amp;ndash; Family of &amp;lt;tt&amp;gt;/runcmd=...&amp;lt;/tt&amp;gt; commands for advanced execution of main/context menu commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Guides|Commandline Guide]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23010</id>
		<title>LossyWAV</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23010"/>
		<updated>2011-09-19T14:13:51Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Indicative bitrate reduction */ zero renamed to extraportable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = lossyWAV&lt;br /&gt;
| logo =&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| maintainer = [http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick.C]&lt;br /&gt;
| stable_release = 1.3.0&lt;br /&gt;
| preview_release = &amp;lt;none&amp;gt;&lt;br /&gt;
| operating_system = [[Wikipedia:Microsoft Windows|Windows]]&lt;br /&gt;
| use = [[Wikipedia:Digital signal processing|Digital signal processing]]&lt;br /&gt;
| license = [[Wikipedia:GNU General Public License|GNU GPL]]&lt;br /&gt;
| website = [http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 1.3.0 release thread]&amp;lt;br /&amp;gt;[http://www.hydrogenaudio.org/forums/index.php?showtopic=81002 1.3.0 development thread]&lt;br /&gt;
}}&lt;br /&gt;
lossyWAV is a [[Wikipedia:Free software|free]], [[lossy]] pre-processor for [[PCM]] audio contained in the [[RIFF_WAVE|WAV]] file format. Proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson], it reduces [[Wikipedia:Audio bit depth|bit depth]] of the input signal, which, when used in conjunction with certain lossless codecs, reduces the bitrate of the encoded file significantly compared to unpreprocessed compression.&lt;br /&gt;
lossyWAV&#039;s primary goal is to maintain [[transparency]] with a high degree of confidence when processing any audio data.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
lossyWAV is based on the lossyFLAC idea proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson] at Hydrogenaudio, which is a method of carefully reducing the bitdepth of (blocks of) samples which will then allow the FLAC lossless encoder to make use of its wasted bits feature. The aim is to transparently reduce audio bit depth (by making some lower significant bits ([[Wikipedia:Least_significant_bit|lsb]]&#039;s) zero), consequently taking advantage of FLAC&#039;s detection of consistently-zeroed lower significant bits within each single frame and significantly increasing coding efficiency.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498179] In this way the user can enjoy audio encoded using the same codec (which may be all important from a hardware compatibility perspective) at a reduced bitrate compared to the lossless version.&lt;br /&gt;
&lt;br /&gt;
[http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick Currie] ported the original [[Wikipedia:MATLAB|MATLAB]] implementation to [[Wikipedia:Borland Delphi|Delphi]] (Many thanks [[Wikipedia:CodeGear|CodeGear]] for Turbo Explorer!!) with a liberal sprinkling of [[Wikipedia:IA-32|IA-32]] and [[Wikipedia:x87|x87]] Assembly Language for speed.&lt;br /&gt;
&lt;br /&gt;
Subsequently, lossyFLAC proved itself to work with other lossless codecs, so the application name was changed to lossyWAV. &lt;br /&gt;
&lt;br /&gt;
Since then, Nick has heavily developed and built upon lossyWAV, with valuable tuning performed by [http://www.hydrogenaudio.org/forums/index.php?showuser=25015 Horst Albrecht] at Hydrogenaudio. Although the current lossyWAV implementation has built on David&#039;s original method, the method itself still very much belongs to its author.&lt;br /&gt;
&lt;br /&gt;
==Indicative bitrate reduction==&lt;br /&gt;
It must be stressed that lossyWAV is a pure variable bit-depth pre-processor in that the overall sample size remains the same after processing but the number of significant bits used for the samples in a codec-block can change on a block-by-block basis. Bits-to-remove from the audio data are calculated on a block-by-block basis (codec-block length = 512 samples, 11.6msec @ 44.1kHz) using overlapping [[Wikipedia:fast Fourier transform|fast Fourier Transform]] (FFT) analyses of at least two lengths (default quality preset (-q 5) = 32, 64 &amp;amp; 1024 [[Wikipedia:Sampling %28signal processing%29|samples]]). After some manipulation, the results of each FFT analysis for a specific codec-block are then grouped and the minimum value used to determine bits-to-remove for the whole codec-block. Bit removal adds noise to the output, however the level of the added noise associated with the removal of a number of bits has been pre-calculated and the number of bits to remove will depend on the level of the noise floor of the codec-block in question. The added noise is adaptively shaped by default, however the user can select parameters to make the added noise fixed shaped or simply [[Wikipedia:white noise|white noise]]. Each sample in the codec-block is then rounded such that the first &amp;lt;bits-to-remove&amp;gt; lsb&#039;s are zero. In this way the wasted bits feature of [[FLAC]] et al. is exploited.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!lossyWAV Test Set (16 bit / 44.1kHz)&lt;br /&gt;
!Codec&lt;br /&gt;
!lossless&lt;br /&gt;
!--insane&lt;br /&gt;
!--extreme&lt;br /&gt;
!--standard&lt;br /&gt;
!--portable&lt;br /&gt;
!--extraportable&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| TAK&lt;br /&gt;
| 820 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| FLAC&lt;br /&gt;
| 854 kbit/s&lt;br /&gt;
| 627 kbit/s&lt;br /&gt;
| 544 kbit/s&lt;br /&gt;
| 460 kbit/s&lt;br /&gt;
| 376 kbit/s&lt;br /&gt;
| 288 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| Wavpack&lt;br /&gt;
| 852 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File identification==&lt;br /&gt;
lossyWAV-processed WAV files are named with a double filename extension, .lossy.wav, to make them instantly identifiable. e.g. &amp;quot;.lossy.flac&amp;quot; would indicate an audio file which was processed using lossyWAV, and subsequently encoded using FLAC.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498559]&lt;br /&gt;
&lt;br /&gt;
The --correction parameter is used when processing to create a correction file which is named with the .lwcdf.wav double filename extension. When &amp;quot;added&amp;quot; to the corresponding .lossy.wav, using the --merge parameter, the original file will be reconstituted.&lt;br /&gt;
&lt;br /&gt;
Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name. Combination names are listed in the &amp;quot;[[LossyWAV#Known supported codecs|known supported codecs]]&amp;quot; section below.&lt;br /&gt;
&lt;br /&gt;
lossyWAV inserts a variable-length &#039;fact&#039; chunk into the WAV file immediately after the &#039;fmt &#039; chunk. This takes the form:&amp;lt;pre&amp;gt;fact/&amp;lt;size&amp;gt;/lossyWAV x.y.z @ dd/mm/yyyy hh:mm:ss, -q 5&amp;lt;/pre&amp;gt;Where the version, date &amp;amp; time and user settings are copied. Additionally, if a lossyWAV &#039;fact&#039; chunk is found in a file, the processing will be halted (exit code = 16) to prevent re-processing of an already processed file.&lt;br /&gt;
&lt;br /&gt;
The --check parameter can be used to determine whether a file has previously been processed without trying to process it, exit code = 16 if already processed; exit code = 0 if not.&lt;br /&gt;
&lt;br /&gt;
==Quality presets==&lt;br /&gt;
*--quality insane: (-q I or -q 10) Highest quality preset, generally considered to be excessive;&lt;br /&gt;
*--quality extreme: (-q E or -q 7.5) Higher quality preset, disc space-saving alternative to lossless archiving for large audio collections, considered to be suitable for transcoding to other lossy codecs;&lt;br /&gt;
*--quality high: (-q H or -q 5.0) High quality preset, midway between extreme and standard;&lt;br /&gt;
*--quality standard: (-q S or -q 2.5) Default preset, generally accepted to be transparent;&lt;br /&gt;
*--quality economic: (-q C or -q 0.0) Intermediate preset midway between standard and portable;&lt;br /&gt;
*--quality portable: (-q P or -q 2.5) DAP quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
*--quality extraportable: (-q X or -q 5.0) Lowest quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
&lt;br /&gt;
All tuning has been performed on quality preset --standard with higher presets being more conservative. Quality preset --standard is generally accepted to be (and from testing so far is) transparent. If you find a track which --standard fails to achieve transparency after processing, please post a sample (no more than 30 seconds) in the development thread.&lt;br /&gt;
&lt;br /&gt;
The upper frequency limit used in the calculation of minimum signal power varies, dependent on quality preset, in the range 15.159kHz to 16.682kHz&lt;br /&gt;
&lt;br /&gt;
==Supported input formats==&lt;br /&gt;
*[[WAV]]: 9-bit to 32-bit integer; 1 to 8 channels; sample rate &amp;amp;ge; 32kHz [[Pulse Code Modulation|PCM]]. Very high sample rates (&amp;amp;gt;48kHz) have not been extensively tested. Tunings have been focussed on 16-bit, 44.1kHz samples (i.e. [[Wikipedia:Red Book (audio CD standard)|CD]] PCM).&lt;br /&gt;
&lt;br /&gt;
==Codec compatibility==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Codec&lt;br /&gt;
!Supported&lt;br /&gt;
!Encoder parameters&lt;br /&gt;
!Combination name&lt;br /&gt;
|-&lt;br /&gt;
! [[Free Lossless Audio Codec|FLAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;5&#039;&#039;&#039; -&#039;&#039;&#039;b&#039;&#039;&#039; 512 --&#039;&#039;&#039;keep-foreign-metadata&#039;&#039;&#039;&lt;br /&gt;
| lossy&#039;&#039;&#039;FLAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Predictive Audio Compression|LPAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;b&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;LPAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:Audio Lossless Coding|MPEG-4 ALS]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;l&#039;&#039;&#039; -&#039;&#039;&#039;n&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;ALS&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[TAK]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;fsl&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;TAK&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[WavPack]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| --&#039;&#039;&#039;blocksize&#039;&#039;&#039;=512&lt;br /&gt;
| lossy&#039;&#039;&#039;WV&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Windows Media Audio#Windows Media Audio Lossless|WMA Lossless]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| lossy&#039;&#039;&#039;WMALSL&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Apple Lossless]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Audio|LA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Monkey&#039;s Audio]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[OptimFROG]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:TTA (codec)|TTA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also [http://www.hometheaterhifi.com/volume_8_4/dvd-benchmark-part-6-dvd-audio-11-2001.html#Meridian%20Lossless%20Packing%20(MLP)%20in%20a%20Nutshell evidence] &amp;amp;mdash; so-called &amp;quot;Bit Shifting&amp;quot; &amp;amp;mdash; to suggest that lossyWAV may work with [[Wikipedia:Meridian Lossless Packing|MLP]], but this remains untested due to prohibitive prices of encoders.&lt;br /&gt;
&lt;br /&gt;
A comparison of portable media players is [[Wikipedia:Comparison of portable media players#Audio Formats|here]], which shows FLAC and WMA Lossless compatibility among listed players.&lt;br /&gt;
Any player supported by [http://www.rockbox.org Rockbox] can use FLAC or WavPack files after installing Rockbox.&lt;br /&gt;
===Important note===&lt;br /&gt;
&#039;&#039;&#039;NB: when encoding using a lossless codec, please ensure that the block size of the lossless codec matches that of lossyWAV (default = 512 samples). If this is not done then the lossless encoding of the processed WAV file will (almost certainly) be larger than it would otherwise have been. This is achieved by adding the &amp;quot;Encoder Parameters&amp;quot; in the table above to the command line of the lossless codec in question.&#039;&#039;&#039;&lt;br /&gt;
===Bonus feature===&lt;br /&gt;
Another, possibly not obvious, feature of lossyWAV is that the processed output can be &amp;quot;transcoded&amp;quot; from one lossless codec to another lossless codec with absolutely no loss of quality whatsoever. This is solely due to the fact that lossyWAV output is designed to be losslessly encoded - something that lossless codecs do very well indeed.&lt;br /&gt;
&lt;br /&gt;
==Using lossyWAV==&lt;br /&gt;
===Application settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lossyWAV 1.3.0, Copyright (C) 2007-2011 Nick Currie. Copyleft.&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,but WITHOUT ANY&lt;br /&gt;
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A&lt;br /&gt;
PARTICULAR PURPOSE.  See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Process Description:&lt;br /&gt;
&lt;br /&gt;
lossyWAV is a near lossless audio processor which dynamically reduces the &lt;br /&gt;
bitdepth of the signal on a block-by-block basis. Bitdepth reduction adds noise&lt;br /&gt;
to the processed output. The amount of permissible added noise is based on&lt;br /&gt;
analysis of the signal levels in the default frequency range 20Hz to 16kHz.&lt;br /&gt;
&lt;br /&gt;
If signals above the upper limiting frequency are at an even lower level, they&lt;br /&gt;
can be swamped by the added noise. This is usually inaudible, but the behaviour&lt;br /&gt;
can be changed by specifying a different --limit (in the range 10kHz to 20kHz).&lt;br /&gt;
&lt;br /&gt;
For many audio signals there is little content at very high frequencies and&lt;br /&gt;
forcing lossyWAV to keep the added noise level lower than the content at these&lt;br /&gt;
frequencies can increase the bitrate dramatically for no perceptible benefit.&lt;br /&gt;
&lt;br /&gt;
The noise added by the process is shaped using an adaptive method provided by&lt;br /&gt;
Sebastian Gesemann. This method, as implemented in lossyWAV, aims to use the&lt;br /&gt;
signal itself as the basis of the filter used for noise shaping. Adaptive noise&lt;br /&gt;
shaping is enabled by default.&lt;br /&gt;
&lt;br /&gt;
Usage   : lossyWAV &amp;lt;input wav file&amp;gt; &amp;lt;options&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example : lossyWAV musicfile.wav&lt;br /&gt;
&lt;br /&gt;
Quality Options:&lt;br /&gt;
&lt;br /&gt;
-q, --quality &amp;lt;t&amp;gt;    where t is one of the following (default = standard):&lt;br /&gt;
    I, insane        highest quality output, suitable for transcoding;&lt;br /&gt;
    E, extreme       higher quality output, suitable for transcoding;&lt;br /&gt;
    H, high          high quality output, suitable for transcoding;&lt;br /&gt;
    S, standard      default quality output, considered to be transparent;&lt;br /&gt;
    C, economic      intermediate quality output, likely to be transparent;&lt;br /&gt;
    P, portable      good quality output for DAP use, may not be transparent;&lt;br /&gt;
    X, extraportable lowest quality output, not fully transparent.&lt;br /&gt;
&lt;br /&gt;
Standard Options:&lt;br /&gt;
&lt;br /&gt;
-C, --correction     write correction file for processed WAV file; default=off.&lt;br /&gt;
-f, --force          forcibly over-write output file if it exists; default=off.&lt;br /&gt;
-h, --help           display help.&lt;br /&gt;
-L, --longhelp       display extended help.&lt;br /&gt;
-M, --merge          merge existing lossy.wav and lwcdf.wav files.&lt;br /&gt;
-o, --outdir &amp;lt;t&amp;gt;     destination directory for the output file(s).&lt;br /&gt;
-v, --version        display the lossyWAV version number.&lt;br /&gt;
-w, --writetolog     create (or add to) lossyWAV.log in the output directory.&lt;br /&gt;
&lt;br /&gt;
Advanced Options:&lt;br /&gt;
&lt;br /&gt;
-                    take WAV input from STDIN.&lt;br /&gt;
-c, --check          check if WAV file has already been processed; default=off.&lt;br /&gt;
                     errorlevel=16 if already processed, 0 if not.&lt;br /&gt;
-q, --quality &amp;lt;n&amp;gt;    quality preset (-5.0&amp;lt;=n&amp;lt;=10.0); (-5=lowest, 10=highest;&lt;br /&gt;
                     default=2.5; I=10; E=7.5; H=5; S=2.5; C=0; P=-2.5; X=-5).&lt;br /&gt;
--, --stdout         write WAV output to STDOUT.&lt;br /&gt;
    --stdinname &amp;lt;t&amp;gt;  pseudo filename to use when input from STDIN.&lt;br /&gt;
&lt;br /&gt;
Advanced Quality Options:&lt;br /&gt;
&lt;br /&gt;
-A, --adaptive &amp;lt;n/t&amp;gt; modify settings for Sebastian Gesemann&#039;s adaptive noise&lt;br /&gt;
                     shaping method. takes a parameter to set the order of the&lt;br /&gt;
                     FIR filter, (32&amp;lt;=n&amp;lt;=96; default=64; multiple of 8 only);&lt;br /&gt;
                     &amp;quot;OFF&amp;quot; to disable adaptive shaping; &amp;quot;NOWARP&amp;quot; to disable &lt;br /&gt;
                     default frequency warping;&lt;br /&gt;
-a, --analyses &amp;lt;n&amp;gt;   set number of FFT analysis lengths, (2&amp;lt;=n&amp;lt;=6; default=3,&lt;br /&gt;
                     i.e. 32, 64 &amp;amp; 1024 samples. n=2, remove 32 sample FFT;&lt;br /&gt;
                     n&amp;gt;3 add 512; n&amp;gt;4, add 256; n&amp;gt;6, add 128) nb. FFT lengths.&lt;br /&gt;
                     stated are for 44.1/48kHz audio, higher sample rates will&lt;br /&gt;
                     automatically increase all FFT lengths as required.&lt;br /&gt;
-l, --limit &amp;lt;n&amp;gt;      set upper frequency limit to be used in analyses to n Hz;&lt;br /&gt;
                     (10000&amp;lt;=n&amp;lt;=20000; default=16000).&lt;br /&gt;
    --linkchannels   revert to original single bits-to-remove value for all&lt;br /&gt;
                     channels rather than channel dependent bits-to-remove.&lt;br /&gt;
    --maxclips &amp;lt;n&amp;gt;   set max. number of acceptable clips per channel per block;&lt;br /&gt;
                     (0&amp;lt;=n&amp;lt;=16; default=3,3,3,3,3,2,2,2,2,2,1,1,1,0,0,0).&lt;br /&gt;
-m, --midside        analyse 2 channel audio for mid/side content.&lt;br /&gt;
    --nodccorrect    disable DC correction of audio data prior to FFT analysis,&lt;br /&gt;
                     default=on; (DC offset calculated per FFT data set).&lt;br /&gt;
    --scale &amp;lt;n&amp;gt;      factor to scale audio by; (0.0625&amp;lt;n&amp;lt;=8.0; default=1).&lt;br /&gt;
-s, --shaping [n]    enable fixed noise shaping, takes optional parameter [n]&lt;br /&gt;
                     to allow user defined shaping proportion (0.0&amp;lt;=n&amp;lt;=1.0),&lt;br /&gt;
                     otherwise default to quality setting dependent value.&lt;br /&gt;
                     Disables adaptive noise shaping.&lt;br /&gt;
    --static &amp;lt;n&amp;gt;     set minimum-bits-to-keep-static to n bits (default=6;&lt;br /&gt;
                     7&amp;lt;=n&amp;lt;=28, limited to bits-per-sample - 4).&lt;br /&gt;
-U, --underlap &amp;lt;n&amp;gt;   enable underlap mode to increase number of FFT analyses&lt;br /&gt;
                     performed at each FFT length, (n = 2, 4 or 8, default=2).&lt;br /&gt;
&lt;br /&gt;
Output Options:&lt;br /&gt;
&lt;br /&gt;
    --bitdist        show distrubution of bits to remove.&lt;br /&gt;
    --blockdist      show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input codec-blocks and bit-removed codec-blocks.&lt;br /&gt;
-d, --detail         enable per block per channel bits-to-remove data display.&lt;br /&gt;
-F, --freqdist       enable frequency analysis display of input data.&lt;br /&gt;
-H, --histogram      show sample value histogram (input, lossy and correction).&lt;br /&gt;
    --longdist       show long frequency distribution data (input/lossy/lwcdf).&lt;br /&gt;
    --perchannel     show selected distribution data per channel.&lt;br /&gt;
-p, --postanalyse    enable frequency analysis display of output and&lt;br /&gt;
                     correction data in addition to input data.&lt;br /&gt;
    --sampledist     show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input samples and bit-removed samples.&lt;br /&gt;
    --spread [full]  show detailed [more detailed] results from the spreading/&lt;br /&gt;
                     averaging algorithm.&lt;br /&gt;
-W, --width &amp;lt;n&amp;gt;      select width of output options (79&amp;lt;=n&amp;lt;=255).&lt;br /&gt;
&lt;br /&gt;
System Options:&lt;br /&gt;
&lt;br /&gt;
-B, --below          set process priority to below normal.&lt;br /&gt;
    --low            set process priority to low.&lt;br /&gt;
-N, --nowarnings     suppress lossyWAV warnings.&lt;br /&gt;
-Q, --quiet          significantly reduce screen output.&lt;br /&gt;
-S, --silent         no screen output.&lt;br /&gt;
&lt;br /&gt;
Special thanks go to:&lt;br /&gt;
&lt;br /&gt;
David Robinson       for the publication of his lossyFLAC method, guidance, and&lt;br /&gt;
                     the motivation to implement his method as lossyWAV.&lt;br /&gt;
&lt;br /&gt;
Horst Albrecht       for ABX testing, valuable support in tuning the internal&lt;br /&gt;
                     presets, constructive criticism and all the feedback.&lt;br /&gt;
&lt;br /&gt;
Sebastian Gesemann   for the adaptive noise shaping method and the amount of&lt;br /&gt;
                     help received in implementing it and also for the basis of&lt;br /&gt;
                     the fixed noise shaping method.&lt;br /&gt;
&lt;br /&gt;
Matteo Frigo and     for libfftw3-3.dll contained in the FFTW distribution&lt;br /&gt;
Steven G Johnson     (v3.2.1 or v3.2.2).&lt;br /&gt;
&lt;br /&gt;
Mark G Beckett       for the Delphi unit that provides an interface to the&lt;br /&gt;
(Univ. of Edinburgh) relevant fftw routines in libfftw3-3.dll.&lt;br /&gt;
&lt;br /&gt;
Don Cross            for the Complex-FFT algorithm originally used.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example drag &#039;n&#039; drop batch file===&lt;br /&gt;
Simply drag the FLAC files onto this batch file and it will process, recode in FLAC and copy ALL of the tags from the input FLAC file, placing the output lossyFLAC file in the same directory as the input FLAC file. Requires flac.exe and [http://www.synthetic-soul.co.uk/tag/ tag.exe] to be somewhere on the path. &lt;br /&gt;
&amp;lt;pre&amp;gt;@echo off&lt;br /&gt;
:repeat&lt;br /&gt;
if %1.==. goto end&lt;br /&gt;
if exist &amp;quot;%1&amp;quot; flac -d &amp;quot;%1&amp;quot; --stdout --silent|lossywav - --stdout --standard --stdinname &amp;quot;%1&amp;quot;|flac - -b 512 -o &amp;quot;%~dpn1.lossy.flac&amp;quot; --silent &amp;amp;&amp;amp; tag --fromfile &amp;quot;%1&amp;quot; &amp;quot;%~dpn1.lossy.flac&amp;quot;&lt;br /&gt;
shift&lt;br /&gt;
goto repeat&lt;br /&gt;
:end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and FFTW===&lt;br /&gt;
Since version 1.2.0, lossyWAV has been compatible with [[Wikipedia:FFTW|FFTW]] although not dependent on it. Should the user wish to take advantage of the increased processing speed available when using FFTW (from superior FFT implementations), libfftw3-3.dll should be placed in a directory on the host computer which features on the path.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and WINE===&lt;br /&gt;
The cause of lossyWAV&#039;s WINE incompatibility was found and removed during the development of 1.2.0 and retrospectively amended for 1.1.0b in a maintenance release (1.1.0c).&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and [[foobar2000]]===&lt;br /&gt;
Example [[foobar2000]] converter settings:&lt;br /&gt;
&lt;br /&gt;
lossyFLAC settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.flac&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\flac - -b 512 -5 -f -o%d --ignore-chunk-sizes&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyTAK settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension  : lossy.tak&lt;br /&gt;
Parameters : /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
             C:\&amp;quot;Program Files&amp;quot;\bin\takc -e -p2m -fsl512 -ihs - %d&lt;br /&gt;
Format is: lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyWV settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.wv&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\wavpack -hm --blocksize=512 --merge-blocks -i - %d&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enclose the element of the path containing spaces within double quotation marks (&amp;quot;), e.g. C:\&amp;quot;Program Files&amp;quot;\directory_where_executable_is\executable_name. This is a Windows limitation.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and EAC===&lt;br /&gt;
:&#039;&#039;For example settings, see [[EAC and LossyWAV]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Frequently asked questions==&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why is the &amp;quot;.wav&amp;quot; file extension used?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; The &amp;quot;.wav&amp;quot; file extension is used because lossyWAV is a digital signal processor and not a codec. No decoding is required for any program to play a WAV file which has been processed with lossyWAV as it remains compliant with the RIFF WAVE format.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why create a processor which means that I cannot be sure that a lossless file is truly lossless?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; Unless one creates the lossless file personally, one can &#039;&#039;&#039;never&#039;&#039;&#039; be completely sure that the file is indeed lossless. E.g. a lossless file you receive could be transcoded from [[MP3]] without your knowledge. To distinguish a lossyWAV file from lossless files it is recommended to use the extension .lossy.EXT where EXT is the original extension e.g. .lossy.flac&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[Variable Bitrate|VBR]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; Yes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Do I need to re-process to change lossless codecs?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[transparency|transparent]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; At preset --standard, almost certainly.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[lossless]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Will it ever have a [[Constant Bitrate|CBR]] mode?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why should I use this?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039;&lt;br /&gt;
:*high quality&lt;br /&gt;
:*extremely low chance of audible [[artifact]]s&lt;br /&gt;
:*reasonable [[bitrate]]s&lt;br /&gt;
:*usable with unmodified, established lossless formats.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=55522 Original lossyFLAC thread] - Introduction of the concept by David Robinson (Replay Gain developer) and initial development&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=81002 lossyWAV 1.3.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 lossyWAV 1.3.0 release thread] - Release of version 1.3.0 on 06 August 2011&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=65499 lossyWAV 1.2.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=77042 lossyWAV 1.2.0 release thread] - Release of version 1.2.0 on 16 December 2009&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63254 lossyWAV 1.1.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=64617 lossyWAV 1.1.0 release thread] - Release of version 1.1.0 on 12 July 2008&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=56129 lossyWAV Development thread] - Conversion of the original MATLAB script to Delphi and evolution of the method&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63225 lossyWAV 1.0.0 release thread] - Release of version 1.0.0b on 12 May 2008&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23009</id>
		<title>LossyWAV</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23009"/>
		<updated>2011-09-19T13:38:16Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = lossyWAV&lt;br /&gt;
| logo =&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| maintainer = [http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick.C]&lt;br /&gt;
| stable_release = 1.3.0&lt;br /&gt;
| preview_release = &amp;lt;none&amp;gt;&lt;br /&gt;
| operating_system = [[Wikipedia:Microsoft Windows|Windows]]&lt;br /&gt;
| use = [[Wikipedia:Digital signal processing|Digital signal processing]]&lt;br /&gt;
| license = [[Wikipedia:GNU General Public License|GNU GPL]]&lt;br /&gt;
| website = [http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 1.3.0 release thread]&amp;lt;br /&amp;gt;[http://www.hydrogenaudio.org/forums/index.php?showtopic=81002 1.3.0 development thread]&lt;br /&gt;
}}&lt;br /&gt;
lossyWAV is a [[Wikipedia:Free software|free]], [[lossy]] pre-processor for [[PCM]] audio contained in the [[RIFF_WAVE|WAV]] file format. Proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson], it reduces [[Wikipedia:Audio bit depth|bit depth]] of the input signal, which, when used in conjunction with certain lossless codecs, reduces the bitrate of the encoded file significantly compared to unpreprocessed compression.&lt;br /&gt;
lossyWAV&#039;s primary goal is to maintain [[transparency]] with a high degree of confidence when processing any audio data.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
lossyWAV is based on the lossyFLAC idea proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson] at Hydrogenaudio, which is a method of carefully reducing the bitdepth of (blocks of) samples which will then allow the FLAC lossless encoder to make use of its wasted bits feature. The aim is to transparently reduce audio bit depth (by making some lower significant bits ([[Wikipedia:Least_significant_bit|lsb]]&#039;s) zero), consequently taking advantage of FLAC&#039;s detection of consistently-zeroed lower significant bits within each single frame and significantly increasing coding efficiency.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498179] In this way the user can enjoy audio encoded using the same codec (which may be all important from a hardware compatibility perspective) at a reduced bitrate compared to the lossless version.&lt;br /&gt;
&lt;br /&gt;
[http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick Currie] ported the original [[Wikipedia:MATLAB|MATLAB]] implementation to [[Wikipedia:Borland Delphi|Delphi]] (Many thanks [[Wikipedia:CodeGear|CodeGear]] for Turbo Explorer!!) with a liberal sprinkling of [[Wikipedia:IA-32|IA-32]] and [[Wikipedia:x87|x87]] Assembly Language for speed.&lt;br /&gt;
&lt;br /&gt;
Subsequently, lossyFLAC proved itself to work with other lossless codecs, so the application name was changed to lossyWAV. &lt;br /&gt;
&lt;br /&gt;
Since then, Nick has heavily developed and built upon lossyWAV, with valuable tuning performed by [http://www.hydrogenaudio.org/forums/index.php?showuser=25015 Horst Albrecht] at Hydrogenaudio. Although the current lossyWAV implementation has built on David&#039;s original method, the method itself still very much belongs to its author.&lt;br /&gt;
&lt;br /&gt;
==Indicative bitrate reduction==&lt;br /&gt;
It must be stressed that lossyWAV is a pure variable bit-depth pre-processor in that the overall sample size remains the same after processing but the number of significant bits used for the samples in a codec-block can change on a block-by-block basis. Bits-to-remove from the audio data are calculated on a block-by-block basis (codec-block length = 512 samples, 11.6msec @ 44.1kHz) using overlapping [[Wikipedia:fast Fourier transform|fast Fourier Transform]] (FFT) analyses of at least two lengths (default quality preset (-q 5) = 32, 64 &amp;amp; 1024 [[Wikipedia:Sampling %28signal processing%29|samples]]). After some manipulation, the results of each FFT analysis for a specific codec-block are then grouped and the minimum value used to determine bits-to-remove for the whole codec-block. Bit removal adds noise to the output, however the level of the added noise associated with the removal of a number of bits has been pre-calculated and the number of bits to remove will depend on the level of the noise floor of the codec-block in question. The added noise is adaptively shaped by default, however the user can select parameters to make the added noise fixed shaped or simply [[Wikipedia:white noise|white noise]]. Each sample in the codec-block is then rounded such that the first &amp;lt;bits-to-remove&amp;gt; lsb&#039;s are zero. In this way the wasted bits feature of [[FLAC]] et al. is exploited.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!lossyWAV Test Set (16 bit / 44.1kHz)&lt;br /&gt;
!Codec&lt;br /&gt;
!lossless&lt;br /&gt;
!--insane&lt;br /&gt;
!--extreme&lt;br /&gt;
!--standard&lt;br /&gt;
!--portable&lt;br /&gt;
!--zero&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| TAK&lt;br /&gt;
| 820 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| FLAC&lt;br /&gt;
| 854 kbit/s&lt;br /&gt;
| 627 kbit/s&lt;br /&gt;
| 544 kbit/s&lt;br /&gt;
| 460 kbit/s&lt;br /&gt;
| 376 kbit/s&lt;br /&gt;
| 288 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| Wavpack&lt;br /&gt;
| 852 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File identification==&lt;br /&gt;
lossyWAV-processed WAV files are named with a double filename extension, .lossy.wav, to make them instantly identifiable. e.g. &amp;quot;.lossy.flac&amp;quot; would indicate an audio file which was processed using lossyWAV, and subsequently encoded using FLAC.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498559]&lt;br /&gt;
&lt;br /&gt;
The --correction parameter is used when processing to create a correction file which is named with the .lwcdf.wav double filename extension. When &amp;quot;added&amp;quot; to the corresponding .lossy.wav, using the --merge parameter, the original file will be reconstituted.&lt;br /&gt;
&lt;br /&gt;
Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name. Combination names are listed in the &amp;quot;[[LossyWAV#Known supported codecs|known supported codecs]]&amp;quot; section below.&lt;br /&gt;
&lt;br /&gt;
lossyWAV inserts a variable-length &#039;fact&#039; chunk into the WAV file immediately after the &#039;fmt &#039; chunk. This takes the form:&amp;lt;pre&amp;gt;fact/&amp;lt;size&amp;gt;/lossyWAV x.y.z @ dd/mm/yyyy hh:mm:ss, -q 5&amp;lt;/pre&amp;gt;Where the version, date &amp;amp; time and user settings are copied. Additionally, if a lossyWAV &#039;fact&#039; chunk is found in a file, the processing will be halted (exit code = 16) to prevent re-processing of an already processed file.&lt;br /&gt;
&lt;br /&gt;
The --check parameter can be used to determine whether a file has previously been processed without trying to process it, exit code = 16 if already processed; exit code = 0 if not.&lt;br /&gt;
&lt;br /&gt;
==Quality presets==&lt;br /&gt;
*--quality insane: (-q I or -q 10) Highest quality preset, generally considered to be excessive;&lt;br /&gt;
*--quality extreme: (-q E or -q 7.5) Higher quality preset, disc space-saving alternative to lossless archiving for large audio collections, considered to be suitable for transcoding to other lossy codecs;&lt;br /&gt;
*--quality high: (-q H or -q 5.0) High quality preset, midway between extreme and standard;&lt;br /&gt;
*--quality standard: (-q S or -q 2.5) Default preset, generally accepted to be transparent;&lt;br /&gt;
*--quality economic: (-q C or -q 0.0) Intermediate preset midway between standard and portable;&lt;br /&gt;
*--quality portable: (-q P or -q 2.5) DAP quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
*--quality extraportable: (-q X or -q 5.0) Lowest quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
&lt;br /&gt;
All tuning has been performed on quality preset --standard with higher presets being more conservative. Quality preset --standard is generally accepted to be (and from testing so far is) transparent. If you find a track which --standard fails to achieve transparency after processing, please post a sample (no more than 30 seconds) in the development thread.&lt;br /&gt;
&lt;br /&gt;
The upper frequency limit used in the calculation of minimum signal power varies, dependent on quality preset, in the range 15.159kHz to 16.682kHz&lt;br /&gt;
&lt;br /&gt;
==Supported input formats==&lt;br /&gt;
*[[WAV]]: 9-bit to 32-bit integer; 1 to 8 channels; sample rate &amp;amp;ge; 32kHz [[Pulse Code Modulation|PCM]]. Very high sample rates (&amp;amp;gt;48kHz) have not been extensively tested. Tunings have been focussed on 16-bit, 44.1kHz samples (i.e. [[Wikipedia:Red Book (audio CD standard)|CD]] PCM).&lt;br /&gt;
&lt;br /&gt;
==Codec compatibility==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Codec&lt;br /&gt;
!Supported&lt;br /&gt;
!Encoder parameters&lt;br /&gt;
!Combination name&lt;br /&gt;
|-&lt;br /&gt;
! [[Free Lossless Audio Codec|FLAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;5&#039;&#039;&#039; -&#039;&#039;&#039;b&#039;&#039;&#039; 512 --&#039;&#039;&#039;keep-foreign-metadata&#039;&#039;&#039;&lt;br /&gt;
| lossy&#039;&#039;&#039;FLAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Predictive Audio Compression|LPAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;b&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;LPAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:Audio Lossless Coding|MPEG-4 ALS]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;l&#039;&#039;&#039; -&#039;&#039;&#039;n&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;ALS&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[TAK]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;fsl&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;TAK&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[WavPack]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| --&#039;&#039;&#039;blocksize&#039;&#039;&#039;=512&lt;br /&gt;
| lossy&#039;&#039;&#039;WV&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Windows Media Audio#Windows Media Audio Lossless|WMA Lossless]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| lossy&#039;&#039;&#039;WMALSL&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Apple Lossless]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Audio|LA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Monkey&#039;s Audio]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[OptimFROG]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:TTA (codec)|TTA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also [http://www.hometheaterhifi.com/volume_8_4/dvd-benchmark-part-6-dvd-audio-11-2001.html#Meridian%20Lossless%20Packing%20(MLP)%20in%20a%20Nutshell evidence] &amp;amp;mdash; so-called &amp;quot;Bit Shifting&amp;quot; &amp;amp;mdash; to suggest that lossyWAV may work with [[Wikipedia:Meridian Lossless Packing|MLP]], but this remains untested due to prohibitive prices of encoders.&lt;br /&gt;
&lt;br /&gt;
A comparison of portable media players is [[Wikipedia:Comparison of portable media players#Audio Formats|here]], which shows FLAC and WMA Lossless compatibility among listed players.&lt;br /&gt;
Any player supported by [http://www.rockbox.org Rockbox] can use FLAC or WavPack files after installing Rockbox.&lt;br /&gt;
===Important note===&lt;br /&gt;
&#039;&#039;&#039;NB: when encoding using a lossless codec, please ensure that the block size of the lossless codec matches that of lossyWAV (default = 512 samples). If this is not done then the lossless encoding of the processed WAV file will (almost certainly) be larger than it would otherwise have been. This is achieved by adding the &amp;quot;Encoder Parameters&amp;quot; in the table above to the command line of the lossless codec in question.&#039;&#039;&#039;&lt;br /&gt;
===Bonus feature===&lt;br /&gt;
Another, possibly not obvious, feature of lossyWAV is that the processed output can be &amp;quot;transcoded&amp;quot; from one lossless codec to another lossless codec with absolutely no loss of quality whatsoever. This is solely due to the fact that lossyWAV output is designed to be losslessly encoded - something that lossless codecs do very well indeed.&lt;br /&gt;
&lt;br /&gt;
==Using lossyWAV==&lt;br /&gt;
===Application settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lossyWAV 1.3.0, Copyright (C) 2007-2011 Nick Currie. Copyleft.&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,but WITHOUT ANY&lt;br /&gt;
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A&lt;br /&gt;
PARTICULAR PURPOSE.  See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Process Description:&lt;br /&gt;
&lt;br /&gt;
lossyWAV is a near lossless audio processor which dynamically reduces the &lt;br /&gt;
bitdepth of the signal on a block-by-block basis. Bitdepth reduction adds noise&lt;br /&gt;
to the processed output. The amount of permissible added noise is based on&lt;br /&gt;
analysis of the signal levels in the default frequency range 20Hz to 16kHz.&lt;br /&gt;
&lt;br /&gt;
If signals above the upper limiting frequency are at an even lower level, they&lt;br /&gt;
can be swamped by the added noise. This is usually inaudible, but the behaviour&lt;br /&gt;
can be changed by specifying a different --limit (in the range 10kHz to 20kHz).&lt;br /&gt;
&lt;br /&gt;
For many audio signals there is little content at very high frequencies and&lt;br /&gt;
forcing lossyWAV to keep the added noise level lower than the content at these&lt;br /&gt;
frequencies can increase the bitrate dramatically for no perceptible benefit.&lt;br /&gt;
&lt;br /&gt;
The noise added by the process is shaped using an adaptive method provided by&lt;br /&gt;
Sebastian Gesemann. This method, as implemented in lossyWAV, aims to use the&lt;br /&gt;
signal itself as the basis of the filter used for noise shaping. Adaptive noise&lt;br /&gt;
shaping is enabled by default.&lt;br /&gt;
&lt;br /&gt;
Usage   : lossyWAV &amp;lt;input wav file&amp;gt; &amp;lt;options&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example : lossyWAV musicfile.wav&lt;br /&gt;
&lt;br /&gt;
Quality Options:&lt;br /&gt;
&lt;br /&gt;
-q, --quality &amp;lt;t&amp;gt;    where t is one of the following (default = standard):&lt;br /&gt;
    I, insane        highest quality output, suitable for transcoding;&lt;br /&gt;
    E, extreme       higher quality output, suitable for transcoding;&lt;br /&gt;
    H, high          high quality output, suitable for transcoding;&lt;br /&gt;
    S, standard      default quality output, considered to be transparent;&lt;br /&gt;
    C, economic      intermediate quality output, likely to be transparent;&lt;br /&gt;
    P, portable      good quality output for DAP use, may not be transparent;&lt;br /&gt;
    X, extraportable lowest quality output, not fully transparent.&lt;br /&gt;
&lt;br /&gt;
Standard Options:&lt;br /&gt;
&lt;br /&gt;
-C, --correction     write correction file for processed WAV file; default=off.&lt;br /&gt;
-f, --force          forcibly over-write output file if it exists; default=off.&lt;br /&gt;
-h, --help           display help.&lt;br /&gt;
-L, --longhelp       display extended help.&lt;br /&gt;
-M, --merge          merge existing lossy.wav and lwcdf.wav files.&lt;br /&gt;
-o, --outdir &amp;lt;t&amp;gt;     destination directory for the output file(s).&lt;br /&gt;
-v, --version        display the lossyWAV version number.&lt;br /&gt;
-w, --writetolog     create (or add to) lossyWAV.log in the output directory.&lt;br /&gt;
&lt;br /&gt;
Advanced Options:&lt;br /&gt;
&lt;br /&gt;
-                    take WAV input from STDIN.&lt;br /&gt;
-c, --check          check if WAV file has already been processed; default=off.&lt;br /&gt;
                     errorlevel=16 if already processed, 0 if not.&lt;br /&gt;
-q, --quality &amp;lt;n&amp;gt;    quality preset (-5.0&amp;lt;=n&amp;lt;=10.0); (-5=lowest, 10=highest;&lt;br /&gt;
                     default=2.5; I=10; E=7.5; H=5; S=2.5; C=0; P=-2.5; X=-5).&lt;br /&gt;
--, --stdout         write WAV output to STDOUT.&lt;br /&gt;
    --stdinname &amp;lt;t&amp;gt;  pseudo filename to use when input from STDIN.&lt;br /&gt;
&lt;br /&gt;
Advanced Quality Options:&lt;br /&gt;
&lt;br /&gt;
-A, --adaptive &amp;lt;n/t&amp;gt; modify settings for Sebastian Gesemann&#039;s adaptive noise&lt;br /&gt;
                     shaping method. takes a parameter to set the order of the&lt;br /&gt;
                     FIR filter, (32&amp;lt;=n&amp;lt;=96; default=64; multiple of 8 only);&lt;br /&gt;
                     &amp;quot;OFF&amp;quot; to disable adaptive shaping; &amp;quot;NOWARP&amp;quot; to disable &lt;br /&gt;
                     default frequency warping;&lt;br /&gt;
-a, --analyses &amp;lt;n&amp;gt;   set number of FFT analysis lengths, (2&amp;lt;=n&amp;lt;=6; default=3,&lt;br /&gt;
                     i.e. 32, 64 &amp;amp; 1024 samples. n=2, remove 32 sample FFT;&lt;br /&gt;
                     n&amp;gt;3 add 512; n&amp;gt;4, add 256; n&amp;gt;6, add 128) nb. FFT lengths.&lt;br /&gt;
                     stated are for 44.1/48kHz audio, higher sample rates will&lt;br /&gt;
                     automatically increase all FFT lengths as required.&lt;br /&gt;
-l, --limit &amp;lt;n&amp;gt;      set upper frequency limit to be used in analyses to n Hz;&lt;br /&gt;
                     (10000&amp;lt;=n&amp;lt;=20000; default=16000).&lt;br /&gt;
    --linkchannels   revert to original single bits-to-remove value for all&lt;br /&gt;
                     channels rather than channel dependent bits-to-remove.&lt;br /&gt;
    --maxclips &amp;lt;n&amp;gt;   set max. number of acceptable clips per channel per block;&lt;br /&gt;
                     (0&amp;lt;=n&amp;lt;=16; default=3,3,3,3,3,2,2,2,2,2,1,1,1,0,0,0).&lt;br /&gt;
-m, --midside        analyse 2 channel audio for mid/side content.&lt;br /&gt;
    --nodccorrect    disable DC correction of audio data prior to FFT analysis,&lt;br /&gt;
                     default=on; (DC offset calculated per FFT data set).&lt;br /&gt;
    --scale &amp;lt;n&amp;gt;      factor to scale audio by; (0.0625&amp;lt;n&amp;lt;=8.0; default=1).&lt;br /&gt;
-s, --shaping [n]    enable fixed noise shaping, takes optional parameter [n]&lt;br /&gt;
                     to allow user defined shaping proportion (0.0&amp;lt;=n&amp;lt;=1.0),&lt;br /&gt;
                     otherwise default to quality setting dependent value.&lt;br /&gt;
                     Disables adaptive noise shaping.&lt;br /&gt;
    --static &amp;lt;n&amp;gt;     set minimum-bits-to-keep-static to n bits (default=6;&lt;br /&gt;
                     7&amp;lt;=n&amp;lt;=28, limited to bits-per-sample - 4).&lt;br /&gt;
-U, --underlap &amp;lt;n&amp;gt;   enable underlap mode to increase number of FFT analyses&lt;br /&gt;
                     performed at each FFT length, (n = 2, 4 or 8, default=2).&lt;br /&gt;
&lt;br /&gt;
Output Options:&lt;br /&gt;
&lt;br /&gt;
    --bitdist        show distrubution of bits to remove.&lt;br /&gt;
    --blockdist      show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input codec-blocks and bit-removed codec-blocks.&lt;br /&gt;
-d, --detail         enable per block per channel bits-to-remove data display.&lt;br /&gt;
-F, --freqdist       enable frequency analysis display of input data.&lt;br /&gt;
-H, --histogram      show sample value histogram (input, lossy and correction).&lt;br /&gt;
    --longdist       show long frequency distribution data (input/lossy/lwcdf).&lt;br /&gt;
    --perchannel     show selected distribution data per channel.&lt;br /&gt;
-p, --postanalyse    enable frequency analysis display of output and&lt;br /&gt;
                     correction data in addition to input data.&lt;br /&gt;
    --sampledist     show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input samples and bit-removed samples.&lt;br /&gt;
    --spread [full]  show detailed [more detailed] results from the spreading/&lt;br /&gt;
                     averaging algorithm.&lt;br /&gt;
-W, --width &amp;lt;n&amp;gt;      select width of output options (79&amp;lt;=n&amp;lt;=255).&lt;br /&gt;
&lt;br /&gt;
System Options:&lt;br /&gt;
&lt;br /&gt;
-B, --below          set process priority to below normal.&lt;br /&gt;
    --low            set process priority to low.&lt;br /&gt;
-N, --nowarnings     suppress lossyWAV warnings.&lt;br /&gt;
-Q, --quiet          significantly reduce screen output.&lt;br /&gt;
-S, --silent         no screen output.&lt;br /&gt;
&lt;br /&gt;
Special thanks go to:&lt;br /&gt;
&lt;br /&gt;
David Robinson       for the publication of his lossyFLAC method, guidance, and&lt;br /&gt;
                     the motivation to implement his method as lossyWAV.&lt;br /&gt;
&lt;br /&gt;
Horst Albrecht       for ABX testing, valuable support in tuning the internal&lt;br /&gt;
                     presets, constructive criticism and all the feedback.&lt;br /&gt;
&lt;br /&gt;
Sebastian Gesemann   for the adaptive noise shaping method and the amount of&lt;br /&gt;
                     help received in implementing it and also for the basis of&lt;br /&gt;
                     the fixed noise shaping method.&lt;br /&gt;
&lt;br /&gt;
Matteo Frigo and     for libfftw3-3.dll contained in the FFTW distribution&lt;br /&gt;
Steven G Johnson     (v3.2.1 or v3.2.2).&lt;br /&gt;
&lt;br /&gt;
Mark G Beckett       for the Delphi unit that provides an interface to the&lt;br /&gt;
(Univ. of Edinburgh) relevant fftw routines in libfftw3-3.dll.&lt;br /&gt;
&lt;br /&gt;
Don Cross            for the Complex-FFT algorithm originally used.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example drag &#039;n&#039; drop batch file===&lt;br /&gt;
Simply drag the FLAC files onto this batch file and it will process, recode in FLAC and copy ALL of the tags from the input FLAC file, placing the output lossyFLAC file in the same directory as the input FLAC file. Requires flac.exe and [http://www.synthetic-soul.co.uk/tag/ tag.exe] to be somewhere on the path. &lt;br /&gt;
&amp;lt;pre&amp;gt;@echo off&lt;br /&gt;
:repeat&lt;br /&gt;
if %1.==. goto end&lt;br /&gt;
if exist &amp;quot;%1&amp;quot; flac -d &amp;quot;%1&amp;quot; --stdout --silent|lossywav - --stdout --standard --stdinname &amp;quot;%1&amp;quot;|flac - -b 512 -o &amp;quot;%~dpn1.lossy.flac&amp;quot; --silent &amp;amp;&amp;amp; tag --fromfile &amp;quot;%1&amp;quot; &amp;quot;%~dpn1.lossy.flac&amp;quot;&lt;br /&gt;
shift&lt;br /&gt;
goto repeat&lt;br /&gt;
:end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and FFTW===&lt;br /&gt;
Since version 1.2.0, lossyWAV has been compatible with [[Wikipedia:FFTW|FFTW]] although not dependent on it. Should the user wish to take advantage of the increased processing speed available when using FFTW (from superior FFT implementations), libfftw3-3.dll should be placed in a directory on the host computer which features on the path.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and WINE===&lt;br /&gt;
The cause of lossyWAV&#039;s WINE incompatibility was found and removed during the development of 1.2.0 and retrospectively amended for 1.1.0b in a maintenance release (1.1.0c).&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and [[foobar2000]]===&lt;br /&gt;
Example [[foobar2000]] converter settings:&lt;br /&gt;
&lt;br /&gt;
lossyFLAC settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.flac&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\flac - -b 512 -5 -f -o%d --ignore-chunk-sizes&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyTAK settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension  : lossy.tak&lt;br /&gt;
Parameters : /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
             C:\&amp;quot;Program Files&amp;quot;\bin\takc -e -p2m -fsl512 -ihs - %d&lt;br /&gt;
Format is: lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyWV settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.wv&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\wavpack -hm --blocksize=512 --merge-blocks -i - %d&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enclose the element of the path containing spaces within double quotation marks (&amp;quot;), e.g. C:\&amp;quot;Program Files&amp;quot;\directory_where_executable_is\executable_name. This is a Windows limitation.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and EAC===&lt;br /&gt;
:&#039;&#039;For example settings, see [[EAC and LossyWAV]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Frequently asked questions==&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why is the &amp;quot;.wav&amp;quot; file extension used?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; The &amp;quot;.wav&amp;quot; file extension is used because lossyWAV is a digital signal processor and not a codec. No decoding is required for any program to play a WAV file which has been processed with lossyWAV as it remains compliant with the RIFF WAVE format.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why create a processor which means that I cannot be sure that a lossless file is truly lossless?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; Unless one creates the lossless file personally, one can &#039;&#039;&#039;never&#039;&#039;&#039; be completely sure that the file is indeed lossless. E.g. a lossless file you receive could be transcoded from [[MP3]] without your knowledge. To distinguish a lossyWAV file from lossless files it is recommended to use the extension .lossy.EXT where EXT is the original extension e.g. .lossy.flac&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[Variable Bitrate|VBR]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; Yes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Do I need to re-process to change lossless codecs?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[transparency|transparent]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; At preset --standard, almost certainly.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[lossless]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Will it ever have a [[Constant Bitrate|CBR]] mode?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why should I use this?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039;&lt;br /&gt;
:*high quality&lt;br /&gt;
:*extremely low chance of audible [[artifact]]s&lt;br /&gt;
:*reasonable [[bitrate]]s&lt;br /&gt;
:*usable with unmodified, established lossless formats.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=55522 Original lossyFLAC thread] - Introduction of the concept by David Robinson (Replay Gain developer) and initial development&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=81002 lossyWAV 1.3.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 lossyWAV 1.3.0 release thread] - Release of version 1.3.0 on 06 August 2011&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=65499 lossyWAV 1.2.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=77042 lossyWAV 1.2.0 release thread] - Release of version 1.2.0 on 16 December 2009&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63254 lossyWAV 1.1.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=64617 lossyWAV 1.1.0 release thread] - Release of version 1.1.0 on 12 July 2008&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=56129 lossyWAV Development thread] - Conversion of the original MATLAB script to Delphi and evolution of the method&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63225 lossyWAV 1.0.0 release thread] - Release of version 1.0.0b on 12 May 2008&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23008</id>
		<title>LossyWAV</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23008"/>
		<updated>2011-09-19T13:38:02Z</updated>

		<summary type="html">&lt;p&gt;Db1989: link fail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = lossyWAV&lt;br /&gt;
| logo =&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| maintainer = [http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick.C]&lt;br /&gt;
| stable_release = 1.3.0&lt;br /&gt;
| preview_release = &amp;lt;none&amp;gt;&lt;br /&gt;
| operating_system = [[Wikipedia:Microsoft Windows|Windows]]&lt;br /&gt;
| use = [[Wikipedia:Digital signal processing|Digital signal processing]]&lt;br /&gt;
| license = [[Wikipedia:GNU General Public License|GNU GPL]]&lt;br /&gt;
| website = [http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 1.3.0. release thread]&amp;lt;br /&amp;gt;[http://www.hydrogenaudio.org/forums/index.php?showtopic=81002 1.3.0 development thread]&lt;br /&gt;
}}&lt;br /&gt;
lossyWAV is a [[Wikipedia:Free software|free]], [[lossy]] pre-processor for [[PCM]] audio contained in the [[RIFF_WAVE|WAV]] file format. Proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson], it reduces [[Wikipedia:Audio bit depth|bit depth]] of the input signal, which, when used in conjunction with certain lossless codecs, reduces the bitrate of the encoded file significantly compared to unpreprocessed compression.&lt;br /&gt;
lossyWAV&#039;s primary goal is to maintain [[transparency]] with a high degree of confidence when processing any audio data.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
lossyWAV is based on the lossyFLAC idea proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson] at Hydrogenaudio, which is a method of carefully reducing the bitdepth of (blocks of) samples which will then allow the FLAC lossless encoder to make use of its wasted bits feature. The aim is to transparently reduce audio bit depth (by making some lower significant bits ([[Wikipedia:Least_significant_bit|lsb]]&#039;s) zero), consequently taking advantage of FLAC&#039;s detection of consistently-zeroed lower significant bits within each single frame and significantly increasing coding efficiency.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498179] In this way the user can enjoy audio encoded using the same codec (which may be all important from a hardware compatibility perspective) at a reduced bitrate compared to the lossless version.&lt;br /&gt;
&lt;br /&gt;
[http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick Currie] ported the original [[Wikipedia:MATLAB|MATLAB]] implementation to [[Wikipedia:Borland Delphi|Delphi]] (Many thanks [[Wikipedia:CodeGear|CodeGear]] for Turbo Explorer!!) with a liberal sprinkling of [[Wikipedia:IA-32|IA-32]] and [[Wikipedia:x87|x87]] Assembly Language for speed.&lt;br /&gt;
&lt;br /&gt;
Subsequently, lossyFLAC proved itself to work with other lossless codecs, so the application name was changed to lossyWAV. &lt;br /&gt;
&lt;br /&gt;
Since then, Nick has heavily developed and built upon lossyWAV, with valuable tuning performed by [http://www.hydrogenaudio.org/forums/index.php?showuser=25015 Horst Albrecht] at Hydrogenaudio. Although the current lossyWAV implementation has built on David&#039;s original method, the method itself still very much belongs to its author.&lt;br /&gt;
&lt;br /&gt;
==Indicative bitrate reduction==&lt;br /&gt;
It must be stressed that lossyWAV is a pure variable bit-depth pre-processor in that the overall sample size remains the same after processing but the number of significant bits used for the samples in a codec-block can change on a block-by-block basis. Bits-to-remove from the audio data are calculated on a block-by-block basis (codec-block length = 512 samples, 11.6msec @ 44.1kHz) using overlapping [[Wikipedia:fast Fourier transform|fast Fourier Transform]] (FFT) analyses of at least two lengths (default quality preset (-q 5) = 32, 64 &amp;amp; 1024 [[Wikipedia:Sampling %28signal processing%29|samples]]). After some manipulation, the results of each FFT analysis for a specific codec-block are then grouped and the minimum value used to determine bits-to-remove for the whole codec-block. Bit removal adds noise to the output, however the level of the added noise associated with the removal of a number of bits has been pre-calculated and the number of bits to remove will depend on the level of the noise floor of the codec-block in question. The added noise is adaptively shaped by default, however the user can select parameters to make the added noise fixed shaped or simply [[Wikipedia:white noise|white noise]]. Each sample in the codec-block is then rounded such that the first &amp;lt;bits-to-remove&amp;gt; lsb&#039;s are zero. In this way the wasted bits feature of [[FLAC]] et al. is exploited.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!lossyWAV Test Set (16 bit / 44.1kHz)&lt;br /&gt;
!Codec&lt;br /&gt;
!lossless&lt;br /&gt;
!--insane&lt;br /&gt;
!--extreme&lt;br /&gt;
!--standard&lt;br /&gt;
!--portable&lt;br /&gt;
!--zero&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| TAK&lt;br /&gt;
| 820 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| FLAC&lt;br /&gt;
| 854 kbit/s&lt;br /&gt;
| 627 kbit/s&lt;br /&gt;
| 544 kbit/s&lt;br /&gt;
| 460 kbit/s&lt;br /&gt;
| 376 kbit/s&lt;br /&gt;
| 288 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| Wavpack&lt;br /&gt;
| 852 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File identification==&lt;br /&gt;
lossyWAV-processed WAV files are named with a double filename extension, .lossy.wav, to make them instantly identifiable. e.g. &amp;quot;.lossy.flac&amp;quot; would indicate an audio file which was processed using lossyWAV, and subsequently encoded using FLAC.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498559]&lt;br /&gt;
&lt;br /&gt;
The --correction parameter is used when processing to create a correction file which is named with the .lwcdf.wav double filename extension. When &amp;quot;added&amp;quot; to the corresponding .lossy.wav, using the --merge parameter, the original file will be reconstituted.&lt;br /&gt;
&lt;br /&gt;
Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name. Combination names are listed in the &amp;quot;[[LossyWAV#Known supported codecs|known supported codecs]]&amp;quot; section below.&lt;br /&gt;
&lt;br /&gt;
lossyWAV inserts a variable-length &#039;fact&#039; chunk into the WAV file immediately after the &#039;fmt &#039; chunk. This takes the form:&amp;lt;pre&amp;gt;fact/&amp;lt;size&amp;gt;/lossyWAV x.y.z @ dd/mm/yyyy hh:mm:ss, -q 5&amp;lt;/pre&amp;gt;Where the version, date &amp;amp; time and user settings are copied. Additionally, if a lossyWAV &#039;fact&#039; chunk is found in a file, the processing will be halted (exit code = 16) to prevent re-processing of an already processed file.&lt;br /&gt;
&lt;br /&gt;
The --check parameter can be used to determine whether a file has previously been processed without trying to process it, exit code = 16 if already processed; exit code = 0 if not.&lt;br /&gt;
&lt;br /&gt;
==Quality presets==&lt;br /&gt;
*--quality insane: (-q I or -q 10) Highest quality preset, generally considered to be excessive;&lt;br /&gt;
*--quality extreme: (-q E or -q 7.5) Higher quality preset, disc space-saving alternative to lossless archiving for large audio collections, considered to be suitable for transcoding to other lossy codecs;&lt;br /&gt;
*--quality high: (-q H or -q 5.0) High quality preset, midway between extreme and standard;&lt;br /&gt;
*--quality standard: (-q S or -q 2.5) Default preset, generally accepted to be transparent;&lt;br /&gt;
*--quality economic: (-q C or -q 0.0) Intermediate preset midway between standard and portable;&lt;br /&gt;
*--quality portable: (-q P or -q 2.5) DAP quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
*--quality extraportable: (-q X or -q 5.0) Lowest quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
&lt;br /&gt;
All tuning has been performed on quality preset --standard with higher presets being more conservative. Quality preset --standard is generally accepted to be (and from testing so far is) transparent. If you find a track which --standard fails to achieve transparency after processing, please post a sample (no more than 30 seconds) in the development thread.&lt;br /&gt;
&lt;br /&gt;
The upper frequency limit used in the calculation of minimum signal power varies, dependent on quality preset, in the range 15.159kHz to 16.682kHz&lt;br /&gt;
&lt;br /&gt;
==Supported input formats==&lt;br /&gt;
*[[WAV]]: 9-bit to 32-bit integer; 1 to 8 channels; sample rate &amp;amp;ge; 32kHz [[Pulse Code Modulation|PCM]]. Very high sample rates (&amp;amp;gt;48kHz) have not been extensively tested. Tunings have been focussed on 16-bit, 44.1kHz samples (i.e. [[Wikipedia:Red Book (audio CD standard)|CD]] PCM).&lt;br /&gt;
&lt;br /&gt;
==Codec compatibility==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Codec&lt;br /&gt;
!Supported&lt;br /&gt;
!Encoder parameters&lt;br /&gt;
!Combination name&lt;br /&gt;
|-&lt;br /&gt;
! [[Free Lossless Audio Codec|FLAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;5&#039;&#039;&#039; -&#039;&#039;&#039;b&#039;&#039;&#039; 512 --&#039;&#039;&#039;keep-foreign-metadata&#039;&#039;&#039;&lt;br /&gt;
| lossy&#039;&#039;&#039;FLAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Predictive Audio Compression|LPAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;b&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;LPAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:Audio Lossless Coding|MPEG-4 ALS]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;l&#039;&#039;&#039; -&#039;&#039;&#039;n&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;ALS&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[TAK]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;fsl&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;TAK&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[WavPack]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| --&#039;&#039;&#039;blocksize&#039;&#039;&#039;=512&lt;br /&gt;
| lossy&#039;&#039;&#039;WV&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Windows Media Audio#Windows Media Audio Lossless|WMA Lossless]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| lossy&#039;&#039;&#039;WMALSL&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Apple Lossless]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Audio|LA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Monkey&#039;s Audio]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[OptimFROG]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:TTA (codec)|TTA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also [http://www.hometheaterhifi.com/volume_8_4/dvd-benchmark-part-6-dvd-audio-11-2001.html#Meridian%20Lossless%20Packing%20(MLP)%20in%20a%20Nutshell evidence] &amp;amp;mdash; so-called &amp;quot;Bit Shifting&amp;quot; &amp;amp;mdash; to suggest that lossyWAV may work with [[Wikipedia:Meridian Lossless Packing|MLP]], but this remains untested due to prohibitive prices of encoders.&lt;br /&gt;
&lt;br /&gt;
A comparison of portable media players is [[Wikipedia:Comparison of portable media players#Audio Formats|here]], which shows FLAC and WMA Lossless compatibility among listed players.&lt;br /&gt;
Any player supported by [http://www.rockbox.org Rockbox] can use FLAC or WavPack files after installing Rockbox.&lt;br /&gt;
===Important note===&lt;br /&gt;
&#039;&#039;&#039;NB: when encoding using a lossless codec, please ensure that the block size of the lossless codec matches that of lossyWAV (default = 512 samples). If this is not done then the lossless encoding of the processed WAV file will (almost certainly) be larger than it would otherwise have been. This is achieved by adding the &amp;quot;Encoder Parameters&amp;quot; in the table above to the command line of the lossless codec in question.&#039;&#039;&#039;&lt;br /&gt;
===Bonus feature===&lt;br /&gt;
Another, possibly not obvious, feature of lossyWAV is that the processed output can be &amp;quot;transcoded&amp;quot; from one lossless codec to another lossless codec with absolutely no loss of quality whatsoever. This is solely due to the fact that lossyWAV output is designed to be losslessly encoded - something that lossless codecs do very well indeed.&lt;br /&gt;
&lt;br /&gt;
==Using lossyWAV==&lt;br /&gt;
===Application settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lossyWAV 1.3.0, Copyright (C) 2007-2011 Nick Currie. Copyleft.&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,but WITHOUT ANY&lt;br /&gt;
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A&lt;br /&gt;
PARTICULAR PURPOSE.  See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Process Description:&lt;br /&gt;
&lt;br /&gt;
lossyWAV is a near lossless audio processor which dynamically reduces the &lt;br /&gt;
bitdepth of the signal on a block-by-block basis. Bitdepth reduction adds noise&lt;br /&gt;
to the processed output. The amount of permissible added noise is based on&lt;br /&gt;
analysis of the signal levels in the default frequency range 20Hz to 16kHz.&lt;br /&gt;
&lt;br /&gt;
If signals above the upper limiting frequency are at an even lower level, they&lt;br /&gt;
can be swamped by the added noise. This is usually inaudible, but the behaviour&lt;br /&gt;
can be changed by specifying a different --limit (in the range 10kHz to 20kHz).&lt;br /&gt;
&lt;br /&gt;
For many audio signals there is little content at very high frequencies and&lt;br /&gt;
forcing lossyWAV to keep the added noise level lower than the content at these&lt;br /&gt;
frequencies can increase the bitrate dramatically for no perceptible benefit.&lt;br /&gt;
&lt;br /&gt;
The noise added by the process is shaped using an adaptive method provided by&lt;br /&gt;
Sebastian Gesemann. This method, as implemented in lossyWAV, aims to use the&lt;br /&gt;
signal itself as the basis of the filter used for noise shaping. Adaptive noise&lt;br /&gt;
shaping is enabled by default.&lt;br /&gt;
&lt;br /&gt;
Usage   : lossyWAV &amp;lt;input wav file&amp;gt; &amp;lt;options&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example : lossyWAV musicfile.wav&lt;br /&gt;
&lt;br /&gt;
Quality Options:&lt;br /&gt;
&lt;br /&gt;
-q, --quality &amp;lt;t&amp;gt;    where t is one of the following (default = standard):&lt;br /&gt;
    I, insane        highest quality output, suitable for transcoding;&lt;br /&gt;
    E, extreme       higher quality output, suitable for transcoding;&lt;br /&gt;
    H, high          high quality output, suitable for transcoding;&lt;br /&gt;
    S, standard      default quality output, considered to be transparent;&lt;br /&gt;
    C, economic      intermediate quality output, likely to be transparent;&lt;br /&gt;
    P, portable      good quality output for DAP use, may not be transparent;&lt;br /&gt;
    X, extraportable lowest quality output, not fully transparent.&lt;br /&gt;
&lt;br /&gt;
Standard Options:&lt;br /&gt;
&lt;br /&gt;
-C, --correction     write correction file for processed WAV file; default=off.&lt;br /&gt;
-f, --force          forcibly over-write output file if it exists; default=off.&lt;br /&gt;
-h, --help           display help.&lt;br /&gt;
-L, --longhelp       display extended help.&lt;br /&gt;
-M, --merge          merge existing lossy.wav and lwcdf.wav files.&lt;br /&gt;
-o, --outdir &amp;lt;t&amp;gt;     destination directory for the output file(s).&lt;br /&gt;
-v, --version        display the lossyWAV version number.&lt;br /&gt;
-w, --writetolog     create (or add to) lossyWAV.log in the output directory.&lt;br /&gt;
&lt;br /&gt;
Advanced Options:&lt;br /&gt;
&lt;br /&gt;
-                    take WAV input from STDIN.&lt;br /&gt;
-c, --check          check if WAV file has already been processed; default=off.&lt;br /&gt;
                     errorlevel=16 if already processed, 0 if not.&lt;br /&gt;
-q, --quality &amp;lt;n&amp;gt;    quality preset (-5.0&amp;lt;=n&amp;lt;=10.0); (-5=lowest, 10=highest;&lt;br /&gt;
                     default=2.5; I=10; E=7.5; H=5; S=2.5; C=0; P=-2.5; X=-5).&lt;br /&gt;
--, --stdout         write WAV output to STDOUT.&lt;br /&gt;
    --stdinname &amp;lt;t&amp;gt;  pseudo filename to use when input from STDIN.&lt;br /&gt;
&lt;br /&gt;
Advanced Quality Options:&lt;br /&gt;
&lt;br /&gt;
-A, --adaptive &amp;lt;n/t&amp;gt; modify settings for Sebastian Gesemann&#039;s adaptive noise&lt;br /&gt;
                     shaping method. takes a parameter to set the order of the&lt;br /&gt;
                     FIR filter, (32&amp;lt;=n&amp;lt;=96; default=64; multiple of 8 only);&lt;br /&gt;
                     &amp;quot;OFF&amp;quot; to disable adaptive shaping; &amp;quot;NOWARP&amp;quot; to disable &lt;br /&gt;
                     default frequency warping;&lt;br /&gt;
-a, --analyses &amp;lt;n&amp;gt;   set number of FFT analysis lengths, (2&amp;lt;=n&amp;lt;=6; default=3,&lt;br /&gt;
                     i.e. 32, 64 &amp;amp; 1024 samples. n=2, remove 32 sample FFT;&lt;br /&gt;
                     n&amp;gt;3 add 512; n&amp;gt;4, add 256; n&amp;gt;6, add 128) nb. FFT lengths.&lt;br /&gt;
                     stated are for 44.1/48kHz audio, higher sample rates will&lt;br /&gt;
                     automatically increase all FFT lengths as required.&lt;br /&gt;
-l, --limit &amp;lt;n&amp;gt;      set upper frequency limit to be used in analyses to n Hz;&lt;br /&gt;
                     (10000&amp;lt;=n&amp;lt;=20000; default=16000).&lt;br /&gt;
    --linkchannels   revert to original single bits-to-remove value for all&lt;br /&gt;
                     channels rather than channel dependent bits-to-remove.&lt;br /&gt;
    --maxclips &amp;lt;n&amp;gt;   set max. number of acceptable clips per channel per block;&lt;br /&gt;
                     (0&amp;lt;=n&amp;lt;=16; default=3,3,3,3,3,2,2,2,2,2,1,1,1,0,0,0).&lt;br /&gt;
-m, --midside        analyse 2 channel audio for mid/side content.&lt;br /&gt;
    --nodccorrect    disable DC correction of audio data prior to FFT analysis,&lt;br /&gt;
                     default=on; (DC offset calculated per FFT data set).&lt;br /&gt;
    --scale &amp;lt;n&amp;gt;      factor to scale audio by; (0.0625&amp;lt;n&amp;lt;=8.0; default=1).&lt;br /&gt;
-s, --shaping [n]    enable fixed noise shaping, takes optional parameter [n]&lt;br /&gt;
                     to allow user defined shaping proportion (0.0&amp;lt;=n&amp;lt;=1.0),&lt;br /&gt;
                     otherwise default to quality setting dependent value.&lt;br /&gt;
                     Disables adaptive noise shaping.&lt;br /&gt;
    --static &amp;lt;n&amp;gt;     set minimum-bits-to-keep-static to n bits (default=6;&lt;br /&gt;
                     7&amp;lt;=n&amp;lt;=28, limited to bits-per-sample - 4).&lt;br /&gt;
-U, --underlap &amp;lt;n&amp;gt;   enable underlap mode to increase number of FFT analyses&lt;br /&gt;
                     performed at each FFT length, (n = 2, 4 or 8, default=2).&lt;br /&gt;
&lt;br /&gt;
Output Options:&lt;br /&gt;
&lt;br /&gt;
    --bitdist        show distrubution of bits to remove.&lt;br /&gt;
    --blockdist      show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input codec-blocks and bit-removed codec-blocks.&lt;br /&gt;
-d, --detail         enable per block per channel bits-to-remove data display.&lt;br /&gt;
-F, --freqdist       enable frequency analysis display of input data.&lt;br /&gt;
-H, --histogram      show sample value histogram (input, lossy and correction).&lt;br /&gt;
    --longdist       show long frequency distribution data (input/lossy/lwcdf).&lt;br /&gt;
    --perchannel     show selected distribution data per channel.&lt;br /&gt;
-p, --postanalyse    enable frequency analysis display of output and&lt;br /&gt;
                     correction data in addition to input data.&lt;br /&gt;
    --sampledist     show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input samples and bit-removed samples.&lt;br /&gt;
    --spread [full]  show detailed [more detailed] results from the spreading/&lt;br /&gt;
                     averaging algorithm.&lt;br /&gt;
-W, --width &amp;lt;n&amp;gt;      select width of output options (79&amp;lt;=n&amp;lt;=255).&lt;br /&gt;
&lt;br /&gt;
System Options:&lt;br /&gt;
&lt;br /&gt;
-B, --below          set process priority to below normal.&lt;br /&gt;
    --low            set process priority to low.&lt;br /&gt;
-N, --nowarnings     suppress lossyWAV warnings.&lt;br /&gt;
-Q, --quiet          significantly reduce screen output.&lt;br /&gt;
-S, --silent         no screen output.&lt;br /&gt;
&lt;br /&gt;
Special thanks go to:&lt;br /&gt;
&lt;br /&gt;
David Robinson       for the publication of his lossyFLAC method, guidance, and&lt;br /&gt;
                     the motivation to implement his method as lossyWAV.&lt;br /&gt;
&lt;br /&gt;
Horst Albrecht       for ABX testing, valuable support in tuning the internal&lt;br /&gt;
                     presets, constructive criticism and all the feedback.&lt;br /&gt;
&lt;br /&gt;
Sebastian Gesemann   for the adaptive noise shaping method and the amount of&lt;br /&gt;
                     help received in implementing it and also for the basis of&lt;br /&gt;
                     the fixed noise shaping method.&lt;br /&gt;
&lt;br /&gt;
Matteo Frigo and     for libfftw3-3.dll contained in the FFTW distribution&lt;br /&gt;
Steven G Johnson     (v3.2.1 or v3.2.2).&lt;br /&gt;
&lt;br /&gt;
Mark G Beckett       for the Delphi unit that provides an interface to the&lt;br /&gt;
(Univ. of Edinburgh) relevant fftw routines in libfftw3-3.dll.&lt;br /&gt;
&lt;br /&gt;
Don Cross            for the Complex-FFT algorithm originally used.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example drag &#039;n&#039; drop batch file===&lt;br /&gt;
Simply drag the FLAC files onto this batch file and it will process, recode in FLAC and copy ALL of the tags from the input FLAC file, placing the output lossyFLAC file in the same directory as the input FLAC file. Requires flac.exe and [http://www.synthetic-soul.co.uk/tag/ tag.exe] to be somewhere on the path. &lt;br /&gt;
&amp;lt;pre&amp;gt;@echo off&lt;br /&gt;
:repeat&lt;br /&gt;
if %1.==. goto end&lt;br /&gt;
if exist &amp;quot;%1&amp;quot; flac -d &amp;quot;%1&amp;quot; --stdout --silent|lossywav - --stdout --standard --stdinname &amp;quot;%1&amp;quot;|flac - -b 512 -o &amp;quot;%~dpn1.lossy.flac&amp;quot; --silent &amp;amp;&amp;amp; tag --fromfile &amp;quot;%1&amp;quot; &amp;quot;%~dpn1.lossy.flac&amp;quot;&lt;br /&gt;
shift&lt;br /&gt;
goto repeat&lt;br /&gt;
:end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and FFTW===&lt;br /&gt;
Since version 1.2.0, lossyWAV has been compatible with [[Wikipedia:FFTW|FFTW]] although not dependent on it. Should the user wish to take advantage of the increased processing speed available when using FFTW (from superior FFT implementations), libfftw3-3.dll should be placed in a directory on the host computer which features on the path.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and WINE===&lt;br /&gt;
The cause of lossyWAV&#039;s WINE incompatibility was found and removed during the development of 1.2.0 and retrospectively amended for 1.1.0b in a maintenance release (1.1.0c).&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and [[foobar2000]]===&lt;br /&gt;
Example [[foobar2000]] converter settings:&lt;br /&gt;
&lt;br /&gt;
lossyFLAC settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.flac&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\flac - -b 512 -5 -f -o%d --ignore-chunk-sizes&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyTAK settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension  : lossy.tak&lt;br /&gt;
Parameters : /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
             C:\&amp;quot;Program Files&amp;quot;\bin\takc -e -p2m -fsl512 -ihs - %d&lt;br /&gt;
Format is: lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyWV settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.wv&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\wavpack -hm --blocksize=512 --merge-blocks -i - %d&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enclose the element of the path containing spaces within double quotation marks (&amp;quot;), e.g. C:\&amp;quot;Program Files&amp;quot;\directory_where_executable_is\executable_name. This is a Windows limitation.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and EAC===&lt;br /&gt;
:&#039;&#039;For example settings, see [[EAC and LossyWAV]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Frequently asked questions==&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why is the &amp;quot;.wav&amp;quot; file extension used?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; The &amp;quot;.wav&amp;quot; file extension is used because lossyWAV is a digital signal processor and not a codec. No decoding is required for any program to play a WAV file which has been processed with lossyWAV as it remains compliant with the RIFF WAVE format.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why create a processor which means that I cannot be sure that a lossless file is truly lossless?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; Unless one creates the lossless file personally, one can &#039;&#039;&#039;never&#039;&#039;&#039; be completely sure that the file is indeed lossless. E.g. a lossless file you receive could be transcoded from [[MP3]] without your knowledge. To distinguish a lossyWAV file from lossless files it is recommended to use the extension .lossy.EXT where EXT is the original extension e.g. .lossy.flac&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[Variable Bitrate|VBR]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; Yes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Do I need to re-process to change lossless codecs?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[transparency|transparent]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; At preset --standard, almost certainly.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[lossless]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Will it ever have a [[Constant Bitrate|CBR]] mode?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why should I use this?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039;&lt;br /&gt;
:*high quality&lt;br /&gt;
:*extremely low chance of audible [[artifact]]s&lt;br /&gt;
:*reasonable [[bitrate]]s&lt;br /&gt;
:*usable with unmodified, established lossless formats.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=55522 Original lossyFLAC thread] - Introduction of the concept by David Robinson (Replay Gain developer) and initial development&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=81002 lossyWAV 1.3.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 lossyWAV 1.3.0 release thread] - Release of version 1.3.0 on 06 August 2011&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=65499 lossyWAV 1.2.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=77042 lossyWAV 1.2.0 release thread] - Release of version 1.2.0 on 16 December 2009&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63254 lossyWAV 1.1.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=64617 lossyWAV 1.1.0 release thread] - Release of version 1.1.0 on 12 July 2008&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=56129 lossyWAV Development thread] - Conversion of the original MATLAB script to Delphi and evolution of the method&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63225 lossyWAV 1.0.0 release thread] - Release of version 1.0.0b on 12 May 2008&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23007</id>
		<title>LossyWAV</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=LossyWAV&amp;diff=23007"/>
		<updated>2011-09-19T13:37:03Z</updated>

		<summary type="html">&lt;p&gt;Db1989: updating website link from 1.1.0 thread to 1.3.0 release and dev threads&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = lossyWAV&lt;br /&gt;
| logo =&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| maintainer = [http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick.C]&lt;br /&gt;
| stable_release = 1.3.0&lt;br /&gt;
| preview_release = &amp;lt;none&amp;gt;&lt;br /&gt;
| operating_system = [[Wikipedia:Microsoft Windows|Windows]]&lt;br /&gt;
| use = [[Wikipedia:Digital signal processing|Digital signal processing]]&lt;br /&gt;
| license = [[Wikipedia:GNU General Public License|GNU GPL]]&lt;br /&gt;
| website = [http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 1.3.0. release thread]&amp;lt;br /&amp;gt;[1.3.0 development thread]&lt;br /&gt;
}}&lt;br /&gt;
lossyWAV is a [[Wikipedia:Free software|free]], [[lossy]] pre-processor for [[PCM]] audio contained in the [[RIFF_WAVE|WAV]] file format. Proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson], it reduces [[Wikipedia:Audio bit depth|bit depth]] of the input signal, which, when used in conjunction with certain lossless codecs, reduces the bitrate of the encoded file significantly compared to unpreprocessed compression.&lt;br /&gt;
lossyWAV&#039;s primary goal is to maintain [[transparency]] with a high degree of confidence when processing any audio data.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
lossyWAV is based on the lossyFLAC idea proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson] at Hydrogenaudio, which is a method of carefully reducing the bitdepth of (blocks of) samples which will then allow the FLAC lossless encoder to make use of its wasted bits feature. The aim is to transparently reduce audio bit depth (by making some lower significant bits ([[Wikipedia:Least_significant_bit|lsb]]&#039;s) zero), consequently taking advantage of FLAC&#039;s detection of consistently-zeroed lower significant bits within each single frame and significantly increasing coding efficiency.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498179] In this way the user can enjoy audio encoded using the same codec (which may be all important from a hardware compatibility perspective) at a reduced bitrate compared to the lossless version.&lt;br /&gt;
&lt;br /&gt;
[http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick Currie] ported the original [[Wikipedia:MATLAB|MATLAB]] implementation to [[Wikipedia:Borland Delphi|Delphi]] (Many thanks [[Wikipedia:CodeGear|CodeGear]] for Turbo Explorer!!) with a liberal sprinkling of [[Wikipedia:IA-32|IA-32]] and [[Wikipedia:x87|x87]] Assembly Language for speed.&lt;br /&gt;
&lt;br /&gt;
Subsequently, lossyFLAC proved itself to work with other lossless codecs, so the application name was changed to lossyWAV. &lt;br /&gt;
&lt;br /&gt;
Since then, Nick has heavily developed and built upon lossyWAV, with valuable tuning performed by [http://www.hydrogenaudio.org/forums/index.php?showuser=25015 Horst Albrecht] at Hydrogenaudio. Although the current lossyWAV implementation has built on David&#039;s original method, the method itself still very much belongs to its author.&lt;br /&gt;
&lt;br /&gt;
==Indicative bitrate reduction==&lt;br /&gt;
It must be stressed that lossyWAV is a pure variable bit-depth pre-processor in that the overall sample size remains the same after processing but the number of significant bits used for the samples in a codec-block can change on a block-by-block basis. Bits-to-remove from the audio data are calculated on a block-by-block basis (codec-block length = 512 samples, 11.6msec @ 44.1kHz) using overlapping [[Wikipedia:fast Fourier transform|fast Fourier Transform]] (FFT) analyses of at least two lengths (default quality preset (-q 5) = 32, 64 &amp;amp; 1024 [[Wikipedia:Sampling %28signal processing%29|samples]]). After some manipulation, the results of each FFT analysis for a specific codec-block are then grouped and the minimum value used to determine bits-to-remove for the whole codec-block. Bit removal adds noise to the output, however the level of the added noise associated with the removal of a number of bits has been pre-calculated and the number of bits to remove will depend on the level of the noise floor of the codec-block in question. The added noise is adaptively shaped by default, however the user can select parameters to make the added noise fixed shaped or simply [[Wikipedia:white noise|white noise]]. Each sample in the codec-block is then rounded such that the first &amp;lt;bits-to-remove&amp;gt; lsb&#039;s are zero. In this way the wasted bits feature of [[FLAC]] et al. is exploited.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!lossyWAV Test Set (16 bit / 44.1kHz)&lt;br /&gt;
!Codec&lt;br /&gt;
!lossless&lt;br /&gt;
!--insane&lt;br /&gt;
!--extreme&lt;br /&gt;
!--standard&lt;br /&gt;
!--portable&lt;br /&gt;
!--zero&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| TAK&lt;br /&gt;
| 820 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| FLAC&lt;br /&gt;
| 854 kbit/s&lt;br /&gt;
| 627 kbit/s&lt;br /&gt;
| 544 kbit/s&lt;br /&gt;
| 460 kbit/s&lt;br /&gt;
| 376 kbit/s&lt;br /&gt;
| 288 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
!10 Album Test Set&lt;br /&gt;
| Wavpack&lt;br /&gt;
| 852 kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
| ??? kbit/s&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File identification==&lt;br /&gt;
lossyWAV-processed WAV files are named with a double filename extension, .lossy.wav, to make them instantly identifiable. e.g. &amp;quot;.lossy.flac&amp;quot; would indicate an audio file which was processed using lossyWAV, and subsequently encoded using FLAC.[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=55522&amp;amp;view=findpost&amp;amp;p=498559]&lt;br /&gt;
&lt;br /&gt;
The --correction parameter is used when processing to create a correction file which is named with the .lwcdf.wav double filename extension. When &amp;quot;added&amp;quot; to the corresponding .lossy.wav, using the --merge parameter, the original file will be reconstituted.&lt;br /&gt;
&lt;br /&gt;
Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name. Combination names are listed in the &amp;quot;[[LossyWAV#Known supported codecs|known supported codecs]]&amp;quot; section below.&lt;br /&gt;
&lt;br /&gt;
lossyWAV inserts a variable-length &#039;fact&#039; chunk into the WAV file immediately after the &#039;fmt &#039; chunk. This takes the form:&amp;lt;pre&amp;gt;fact/&amp;lt;size&amp;gt;/lossyWAV x.y.z @ dd/mm/yyyy hh:mm:ss, -q 5&amp;lt;/pre&amp;gt;Where the version, date &amp;amp; time and user settings are copied. Additionally, if a lossyWAV &#039;fact&#039; chunk is found in a file, the processing will be halted (exit code = 16) to prevent re-processing of an already processed file.&lt;br /&gt;
&lt;br /&gt;
The --check parameter can be used to determine whether a file has previously been processed without trying to process it, exit code = 16 if already processed; exit code = 0 if not.&lt;br /&gt;
&lt;br /&gt;
==Quality presets==&lt;br /&gt;
*--quality insane: (-q I or -q 10) Highest quality preset, generally considered to be excessive;&lt;br /&gt;
*--quality extreme: (-q E or -q 7.5) Higher quality preset, disc space-saving alternative to lossless archiving for large audio collections, considered to be suitable for transcoding to other lossy codecs;&lt;br /&gt;
*--quality high: (-q H or -q 5.0) High quality preset, midway between extreme and standard;&lt;br /&gt;
*--quality standard: (-q S or -q 2.5) Default preset, generally accepted to be transparent;&lt;br /&gt;
*--quality economic: (-q C or -q 0.0) Intermediate preset midway between standard and portable;&lt;br /&gt;
*--quality portable: (-q P or -q 2.5) DAP quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
*--quality extraportable: (-q X or -q 5.0) Lowest quality preset for use on a compatible [[Wikipedia:Digital audio player|DAP]].[http://www.hydrogenaudio.org/forums/index.php?s=&amp;amp;showtopic=56129&amp;amp;view=findpost&amp;amp;p=531316]&lt;br /&gt;
&lt;br /&gt;
All tuning has been performed on quality preset --standard with higher presets being more conservative. Quality preset --standard is generally accepted to be (and from testing so far is) transparent. If you find a track which --standard fails to achieve transparency after processing, please post a sample (no more than 30 seconds) in the development thread.&lt;br /&gt;
&lt;br /&gt;
The upper frequency limit used in the calculation of minimum signal power varies, dependent on quality preset, in the range 15.159kHz to 16.682kHz&lt;br /&gt;
&lt;br /&gt;
==Supported input formats==&lt;br /&gt;
*[[WAV]]: 9-bit to 32-bit integer; 1 to 8 channels; sample rate &amp;amp;ge; 32kHz [[Pulse Code Modulation|PCM]]. Very high sample rates (&amp;amp;gt;48kHz) have not been extensively tested. Tunings have been focussed on 16-bit, 44.1kHz samples (i.e. [[Wikipedia:Red Book (audio CD standard)|CD]] PCM).&lt;br /&gt;
&lt;br /&gt;
==Codec compatibility==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Codec&lt;br /&gt;
!Supported&lt;br /&gt;
!Encoder parameters&lt;br /&gt;
!Combination name&lt;br /&gt;
|-&lt;br /&gt;
! [[Free Lossless Audio Codec|FLAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;5&#039;&#039;&#039; -&#039;&#039;&#039;b&#039;&#039;&#039; 512 --&#039;&#039;&#039;keep-foreign-metadata&#039;&#039;&#039;&lt;br /&gt;
| lossy&#039;&#039;&#039;FLAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Predictive Audio Compression|LPAC]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;b&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;LPAC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:Audio Lossless Coding|MPEG-4 ALS]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;l&#039;&#039;&#039; -&#039;&#039;&#039;n&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;ALS&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[TAK]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| -&#039;&#039;&#039;fsl&#039;&#039;&#039;512&lt;br /&gt;
| lossy&#039;&#039;&#039;TAK&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[WavPack]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| --&#039;&#039;&#039;blocksize&#039;&#039;&#039;=512&lt;br /&gt;
| lossy&#039;&#039;&#039;WV&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Windows Media Audio#Windows Media Audio Lossless|WMA Lossless]]&lt;br /&gt;
| &#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| lossy&#039;&#039;&#039;WMALSL&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! [[Apple Lossless]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Lossless Audio|LA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Monkey&#039;s Audio]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[OptimFROG]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:TTA (codec)|TTA]]&lt;br /&gt;
| No&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
| &amp;amp;mdash;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Combinations of lossyWAV with each specific encoder are referred to as lossy&#039;&#039;&#039;X&#039;&#039;&#039;, where &#039;&#039;&#039;X&#039;&#039;&#039; is an abbreviation of the lossless codec name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also [http://www.hometheaterhifi.com/volume_8_4/dvd-benchmark-part-6-dvd-audio-11-2001.html#Meridian%20Lossless%20Packing%20(MLP)%20in%20a%20Nutshell evidence] &amp;amp;mdash; so-called &amp;quot;Bit Shifting&amp;quot; &amp;amp;mdash; to suggest that lossyWAV may work with [[Wikipedia:Meridian Lossless Packing|MLP]], but this remains untested due to prohibitive prices of encoders.&lt;br /&gt;
&lt;br /&gt;
A comparison of portable media players is [[Wikipedia:Comparison of portable media players#Audio Formats|here]], which shows FLAC and WMA Lossless compatibility among listed players.&lt;br /&gt;
Any player supported by [http://www.rockbox.org Rockbox] can use FLAC or WavPack files after installing Rockbox.&lt;br /&gt;
===Important note===&lt;br /&gt;
&#039;&#039;&#039;NB: when encoding using a lossless codec, please ensure that the block size of the lossless codec matches that of lossyWAV (default = 512 samples). If this is not done then the lossless encoding of the processed WAV file will (almost certainly) be larger than it would otherwise have been. This is achieved by adding the &amp;quot;Encoder Parameters&amp;quot; in the table above to the command line of the lossless codec in question.&#039;&#039;&#039;&lt;br /&gt;
===Bonus feature===&lt;br /&gt;
Another, possibly not obvious, feature of lossyWAV is that the processed output can be &amp;quot;transcoded&amp;quot; from one lossless codec to another lossless codec with absolutely no loss of quality whatsoever. This is solely due to the fact that lossyWAV output is designed to be losslessly encoded - something that lossless codecs do very well indeed.&lt;br /&gt;
&lt;br /&gt;
==Using lossyWAV==&lt;br /&gt;
===Application settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lossyWAV 1.3.0, Copyright (C) 2007-2011 Nick Currie. Copyleft.&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,but WITHOUT ANY&lt;br /&gt;
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A&lt;br /&gt;
PARTICULAR PURPOSE.  See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Process Description:&lt;br /&gt;
&lt;br /&gt;
lossyWAV is a near lossless audio processor which dynamically reduces the &lt;br /&gt;
bitdepth of the signal on a block-by-block basis. Bitdepth reduction adds noise&lt;br /&gt;
to the processed output. The amount of permissible added noise is based on&lt;br /&gt;
analysis of the signal levels in the default frequency range 20Hz to 16kHz.&lt;br /&gt;
&lt;br /&gt;
If signals above the upper limiting frequency are at an even lower level, they&lt;br /&gt;
can be swamped by the added noise. This is usually inaudible, but the behaviour&lt;br /&gt;
can be changed by specifying a different --limit (in the range 10kHz to 20kHz).&lt;br /&gt;
&lt;br /&gt;
For many audio signals there is little content at very high frequencies and&lt;br /&gt;
forcing lossyWAV to keep the added noise level lower than the content at these&lt;br /&gt;
frequencies can increase the bitrate dramatically for no perceptible benefit.&lt;br /&gt;
&lt;br /&gt;
The noise added by the process is shaped using an adaptive method provided by&lt;br /&gt;
Sebastian Gesemann. This method, as implemented in lossyWAV, aims to use the&lt;br /&gt;
signal itself as the basis of the filter used for noise shaping. Adaptive noise&lt;br /&gt;
shaping is enabled by default.&lt;br /&gt;
&lt;br /&gt;
Usage   : lossyWAV &amp;lt;input wav file&amp;gt; &amp;lt;options&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example : lossyWAV musicfile.wav&lt;br /&gt;
&lt;br /&gt;
Quality Options:&lt;br /&gt;
&lt;br /&gt;
-q, --quality &amp;lt;t&amp;gt;    where t is one of the following (default = standard):&lt;br /&gt;
    I, insane        highest quality output, suitable for transcoding;&lt;br /&gt;
    E, extreme       higher quality output, suitable for transcoding;&lt;br /&gt;
    H, high          high quality output, suitable for transcoding;&lt;br /&gt;
    S, standard      default quality output, considered to be transparent;&lt;br /&gt;
    C, economic      intermediate quality output, likely to be transparent;&lt;br /&gt;
    P, portable      good quality output for DAP use, may not be transparent;&lt;br /&gt;
    X, extraportable lowest quality output, not fully transparent.&lt;br /&gt;
&lt;br /&gt;
Standard Options:&lt;br /&gt;
&lt;br /&gt;
-C, --correction     write correction file for processed WAV file; default=off.&lt;br /&gt;
-f, --force          forcibly over-write output file if it exists; default=off.&lt;br /&gt;
-h, --help           display help.&lt;br /&gt;
-L, --longhelp       display extended help.&lt;br /&gt;
-M, --merge          merge existing lossy.wav and lwcdf.wav files.&lt;br /&gt;
-o, --outdir &amp;lt;t&amp;gt;     destination directory for the output file(s).&lt;br /&gt;
-v, --version        display the lossyWAV version number.&lt;br /&gt;
-w, --writetolog     create (or add to) lossyWAV.log in the output directory.&lt;br /&gt;
&lt;br /&gt;
Advanced Options:&lt;br /&gt;
&lt;br /&gt;
-                    take WAV input from STDIN.&lt;br /&gt;
-c, --check          check if WAV file has already been processed; default=off.&lt;br /&gt;
                     errorlevel=16 if already processed, 0 if not.&lt;br /&gt;
-q, --quality &amp;lt;n&amp;gt;    quality preset (-5.0&amp;lt;=n&amp;lt;=10.0); (-5=lowest, 10=highest;&lt;br /&gt;
                     default=2.5; I=10; E=7.5; H=5; S=2.5; C=0; P=-2.5; X=-5).&lt;br /&gt;
--, --stdout         write WAV output to STDOUT.&lt;br /&gt;
    --stdinname &amp;lt;t&amp;gt;  pseudo filename to use when input from STDIN.&lt;br /&gt;
&lt;br /&gt;
Advanced Quality Options:&lt;br /&gt;
&lt;br /&gt;
-A, --adaptive &amp;lt;n/t&amp;gt; modify settings for Sebastian Gesemann&#039;s adaptive noise&lt;br /&gt;
                     shaping method. takes a parameter to set the order of the&lt;br /&gt;
                     FIR filter, (32&amp;lt;=n&amp;lt;=96; default=64; multiple of 8 only);&lt;br /&gt;
                     &amp;quot;OFF&amp;quot; to disable adaptive shaping; &amp;quot;NOWARP&amp;quot; to disable &lt;br /&gt;
                     default frequency warping;&lt;br /&gt;
-a, --analyses &amp;lt;n&amp;gt;   set number of FFT analysis lengths, (2&amp;lt;=n&amp;lt;=6; default=3,&lt;br /&gt;
                     i.e. 32, 64 &amp;amp; 1024 samples. n=2, remove 32 sample FFT;&lt;br /&gt;
                     n&amp;gt;3 add 512; n&amp;gt;4, add 256; n&amp;gt;6, add 128) nb. FFT lengths.&lt;br /&gt;
                     stated are for 44.1/48kHz audio, higher sample rates will&lt;br /&gt;
                     automatically increase all FFT lengths as required.&lt;br /&gt;
-l, --limit &amp;lt;n&amp;gt;      set upper frequency limit to be used in analyses to n Hz;&lt;br /&gt;
                     (10000&amp;lt;=n&amp;lt;=20000; default=16000).&lt;br /&gt;
    --linkchannels   revert to original single bits-to-remove value for all&lt;br /&gt;
                     channels rather than channel dependent bits-to-remove.&lt;br /&gt;
    --maxclips &amp;lt;n&amp;gt;   set max. number of acceptable clips per channel per block;&lt;br /&gt;
                     (0&amp;lt;=n&amp;lt;=16; default=3,3,3,3,3,2,2,2,2,2,1,1,1,0,0,0).&lt;br /&gt;
-m, --midside        analyse 2 channel audio for mid/side content.&lt;br /&gt;
    --nodccorrect    disable DC correction of audio data prior to FFT analysis,&lt;br /&gt;
                     default=on; (DC offset calculated per FFT data set).&lt;br /&gt;
    --scale &amp;lt;n&amp;gt;      factor to scale audio by; (0.0625&amp;lt;n&amp;lt;=8.0; default=1).&lt;br /&gt;
-s, --shaping [n]    enable fixed noise shaping, takes optional parameter [n]&lt;br /&gt;
                     to allow user defined shaping proportion (0.0&amp;lt;=n&amp;lt;=1.0),&lt;br /&gt;
                     otherwise default to quality setting dependent value.&lt;br /&gt;
                     Disables adaptive noise shaping.&lt;br /&gt;
    --static &amp;lt;n&amp;gt;     set minimum-bits-to-keep-static to n bits (default=6;&lt;br /&gt;
                     7&amp;lt;=n&amp;lt;=28, limited to bits-per-sample - 4).&lt;br /&gt;
-U, --underlap &amp;lt;n&amp;gt;   enable underlap mode to increase number of FFT analyses&lt;br /&gt;
                     performed at each FFT length, (n = 2, 4 or 8, default=2).&lt;br /&gt;
&lt;br /&gt;
Output Options:&lt;br /&gt;
&lt;br /&gt;
    --bitdist        show distrubution of bits to remove.&lt;br /&gt;
    --blockdist      show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input codec-blocks and bit-removed codec-blocks.&lt;br /&gt;
-d, --detail         enable per block per channel bits-to-remove data display.&lt;br /&gt;
-F, --freqdist       enable frequency analysis display of input data.&lt;br /&gt;
-H, --histogram      show sample value histogram (input, lossy and correction).&lt;br /&gt;
    --longdist       show long frequency distribution data (input/lossy/lwcdf).&lt;br /&gt;
    --perchannel     show selected distribution data per channel.&lt;br /&gt;
-p, --postanalyse    enable frequency analysis display of output and&lt;br /&gt;
                     correction data in addition to input data.&lt;br /&gt;
    --sampledist     show distribution of lowest / highest significant bit of&lt;br /&gt;
                     input samples and bit-removed samples.&lt;br /&gt;
    --spread [full]  show detailed [more detailed] results from the spreading/&lt;br /&gt;
                     averaging algorithm.&lt;br /&gt;
-W, --width &amp;lt;n&amp;gt;      select width of output options (79&amp;lt;=n&amp;lt;=255).&lt;br /&gt;
&lt;br /&gt;
System Options:&lt;br /&gt;
&lt;br /&gt;
-B, --below          set process priority to below normal.&lt;br /&gt;
    --low            set process priority to low.&lt;br /&gt;
-N, --nowarnings     suppress lossyWAV warnings.&lt;br /&gt;
-Q, --quiet          significantly reduce screen output.&lt;br /&gt;
-S, --silent         no screen output.&lt;br /&gt;
&lt;br /&gt;
Special thanks go to:&lt;br /&gt;
&lt;br /&gt;
David Robinson       for the publication of his lossyFLAC method, guidance, and&lt;br /&gt;
                     the motivation to implement his method as lossyWAV.&lt;br /&gt;
&lt;br /&gt;
Horst Albrecht       for ABX testing, valuable support in tuning the internal&lt;br /&gt;
                     presets, constructive criticism and all the feedback.&lt;br /&gt;
&lt;br /&gt;
Sebastian Gesemann   for the adaptive noise shaping method and the amount of&lt;br /&gt;
                     help received in implementing it and also for the basis of&lt;br /&gt;
                     the fixed noise shaping method.&lt;br /&gt;
&lt;br /&gt;
Matteo Frigo and     for libfftw3-3.dll contained in the FFTW distribution&lt;br /&gt;
Steven G Johnson     (v3.2.1 or v3.2.2).&lt;br /&gt;
&lt;br /&gt;
Mark G Beckett       for the Delphi unit that provides an interface to the&lt;br /&gt;
(Univ. of Edinburgh) relevant fftw routines in libfftw3-3.dll.&lt;br /&gt;
&lt;br /&gt;
Don Cross            for the Complex-FFT algorithm originally used.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example drag &#039;n&#039; drop batch file===&lt;br /&gt;
Simply drag the FLAC files onto this batch file and it will process, recode in FLAC and copy ALL of the tags from the input FLAC file, placing the output lossyFLAC file in the same directory as the input FLAC file. Requires flac.exe and [http://www.synthetic-soul.co.uk/tag/ tag.exe] to be somewhere on the path. &lt;br /&gt;
&amp;lt;pre&amp;gt;@echo off&lt;br /&gt;
:repeat&lt;br /&gt;
if %1.==. goto end&lt;br /&gt;
if exist &amp;quot;%1&amp;quot; flac -d &amp;quot;%1&amp;quot; --stdout --silent|lossywav - --stdout --standard --stdinname &amp;quot;%1&amp;quot;|flac - -b 512 -o &amp;quot;%~dpn1.lossy.flac&amp;quot; --silent &amp;amp;&amp;amp; tag --fromfile &amp;quot;%1&amp;quot; &amp;quot;%~dpn1.lossy.flac&amp;quot;&lt;br /&gt;
shift&lt;br /&gt;
goto repeat&lt;br /&gt;
:end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and FFTW===&lt;br /&gt;
Since version 1.2.0, lossyWAV has been compatible with [[Wikipedia:FFTW|FFTW]] although not dependent on it. Should the user wish to take advantage of the increased processing speed available when using FFTW (from superior FFT implementations), libfftw3-3.dll should be placed in a directory on the host computer which features on the path.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and WINE===&lt;br /&gt;
The cause of lossyWAV&#039;s WINE incompatibility was found and removed during the development of 1.2.0 and retrospectively amended for 1.1.0b in a maintenance release (1.1.0c).&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and [[foobar2000]]===&lt;br /&gt;
Example [[foobar2000]] converter settings:&lt;br /&gt;
&lt;br /&gt;
lossyFLAC settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.flac&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\flac - -b 512 -5 -f -o%d --ignore-chunk-sizes&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyTAK settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension  : lossy.tak&lt;br /&gt;
Parameters : /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
             C:\&amp;quot;Program Files&amp;quot;\bin\takc -e -p2m -fsl512 -ihs - %d&lt;br /&gt;
Format is: lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lossyWV settings:&amp;lt;pre&amp;gt;Encoder: C:\Windows\System32\cmd.exe&lt;br /&gt;
Extension : lossy.wv&lt;br /&gt;
Parameters: /d /c C:\&amp;quot;Program Files&amp;quot;\bin\lossywav - --quality standard --silent --stdout|&lt;br /&gt;
            C:\&amp;quot;Program Files&amp;quot;\bin\wavpack -hm --blocksize=512 --merge-blocks -i - %d&lt;br /&gt;
Format is : lossless or hybrid&lt;br /&gt;
Highest BPS mode supported: 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enclose the element of the path containing spaces within double quotation marks (&amp;quot;), e.g. C:\&amp;quot;Program Files&amp;quot;\directory_where_executable_is\executable_name. This is a Windows limitation.&lt;br /&gt;
&lt;br /&gt;
===lossyWAV and EAC===&lt;br /&gt;
:&#039;&#039;For example settings, see [[EAC and LossyWAV]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Frequently asked questions==&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why is the &amp;quot;.wav&amp;quot; file extension used?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; The &amp;quot;.wav&amp;quot; file extension is used because lossyWAV is a digital signal processor and not a codec. No decoding is required for any program to play a WAV file which has been processed with lossyWAV as it remains compliant with the RIFF WAVE format.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why create a processor which means that I cannot be sure that a lossless file is truly lossless?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039; Unless one creates the lossless file personally, one can &#039;&#039;&#039;never&#039;&#039;&#039; be completely sure that the file is indeed lossless. E.g. a lossless file you receive could be transcoded from [[MP3]] without your knowledge. To distinguish a lossyWAV file from lossless files it is recommended to use the extension .lossy.EXT where EXT is the original extension e.g. .lossy.flac&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[Variable Bitrate|VBR]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; Yes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Do I need to re-process to change lossless codecs?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[transparency|transparent]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; At preset --standard, almost certainly.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Is it [[lossless]]?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Will it ever have a [[Constant Bitrate|CBR]] mode?&lt;br /&gt;
*&#039;&#039;&#039;Short answer:&#039;&#039;&#039; No.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Question:&#039;&#039;&#039; Why should I use this?&lt;br /&gt;
*&#039;&#039;&#039;Answer:&#039;&#039;&#039;&lt;br /&gt;
:*high quality&lt;br /&gt;
:*extremely low chance of audible [[artifact]]s&lt;br /&gt;
:*reasonable [[bitrate]]s&lt;br /&gt;
:*usable with unmodified, established lossless formats.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=55522 Original lossyFLAC thread] - Introduction of the concept by David Robinson (Replay Gain developer) and initial development&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=81002 lossyWAV 1.3.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=90104 lossyWAV 1.3.0 release thread] - Release of version 1.3.0 on 06 August 2011&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=65499 lossyWAV 1.2.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=77042 lossyWAV 1.2.0 release thread] - Release of version 1.2.0 on 16 December 2009&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63254 lossyWAV 1.1.0 development thread]&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=64617 lossyWAV 1.1.0 release thread] - Release of version 1.1.0 on 12 July 2008&lt;br /&gt;
----&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=56129 lossyWAV Development thread] - Conversion of the original MATLAB script to Delphi and evolution of the method&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=63225 lossyWAV 1.0.0 release thread] - Release of version 1.0.0b on 12 May 2008&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=22966</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=22966"/>
		<updated>2011-09-03T13:31:09Z</updated>

		<summary type="html">&lt;p&gt;Db1989: beta 3 is now beta 6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{title|foobar2000}}&lt;br /&gt;
&lt;br /&gt;
{{Software Infobox|&lt;br /&gt;
|name = foobar2000&lt;br /&gt;
|logo = [[Image:foobar2000 Logo.png|48px]]&lt;br /&gt;
|screenshot = [[Image:Foobar2000-1.0-default-ui.png|250px]]&lt;br /&gt;
|caption = Screenshot of foobar2000 v1.0 using the default user interface&lt;br /&gt;
|maintainer = Peter Pawlowski&lt;br /&gt;
|stable_release = 1.1.7&lt;br /&gt;
|preview_release = 1.1.8 beta 6&lt;br /&gt;
|operating_system = Windows&lt;br /&gt;
|use = Media Player&lt;br /&gt;
|license = Proprietary, BSD&lt;br /&gt;
|website = [http://www.foobar2000.org/ www.foobar2000.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;foobar2000&#039;&#039;&#039; is an advanced freeware audio player for the Windows platform. Some of the basic features include full unicode support, ReplayGain support and native support for several popular audio formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest stable version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest beta version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.8 beta 6]&lt;br /&gt;
&lt;br /&gt;
== Platforms ==&lt;br /&gt;
&lt;br /&gt;
foobar2000 has been written specifically for the Windows platform and there are no plans to port it to any others.  However, while not officially supported, it is known to run on [http://www.hydrogenaudio.org/forums/index.php?showtopic=54933 Linux] and [http://www.hydrogenaudio.org/forums/index.php?showtopic=77261 Mac OS X] through Wine and WineBottler, respectively.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Powerful open component architecture allowing third-party developers to extend functionality of the player, including the ability to fully replace the user interface.&lt;br /&gt;
* Full Unicode support: File names, user interface, tagging, etc.&lt;br /&gt;
* [[ReplayGain]] support: Both playback and writing ReplayGain information to file tags.&lt;br /&gt;
* [[Gapless playback]].&lt;br /&gt;
* Advanced [[tagging]] capabilities - through built-in [[foobar2000:Properties|Properties dialog]] and various optional tagging-related components.&lt;br /&gt;
* Built-in [[foobar2000:Preferences:Media Library|Media Library]] functionality.&lt;br /&gt;
** Intuitive [[foobar2000:Query syntax|query syntax]] for searching the Media Library.&lt;br /&gt;
** [[foobar2000:Autoplaylist|Autoplaylist]] support: Generate dynamically updating playlists based on queries.&lt;br /&gt;
* [[foobar2000:Preferences:General:Keyboard Shortcuts|Customizable keyboard shortcuts]].&lt;br /&gt;
* Support for transcoding all supported audio formats using the [[Foobar2000:Converter|Converter component]] (requires external command-line encoder executables for different output formats).&lt;br /&gt;
* [[Secure_ripping|Secure]] [[foobar2000:Ripping CDs|CD ripping]].&lt;br /&gt;
* Streaming support.&lt;br /&gt;
* Efficient handling of large playlists.&lt;br /&gt;
* [[foobar2000:Components/Default_user_interface_%28foo_ui_std%29|User interface]] with simple configuration to create even complex layouts quickly and easily.&lt;br /&gt;
* Highly customizable display of track information using [[foobar2000:Titleformat_Introduction|title formatting scripts]].&lt;br /&gt;
&lt;br /&gt;
== Supported Audio Formats ==&lt;br /&gt;
Native Support (&amp;quot;out-of-the-box&amp;quot;):&lt;br /&gt;
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[Speex]], [[WavPack]], [[WAV]], [[AIFF]], [[AU|AU/SND]], [[CDDA]], [[WMA]], [[Matroska]].&lt;br /&gt;
&lt;br /&gt;
Supported through optional components:&lt;br /&gt;
* [[TTA]], [[Monkey&#039;s Audio]], [[ALAC]], [[MOD]], [[SPC]], [[Shorten]], [[OptimFROG]], [[AC3]], [[DTS]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[MMS]], [[RSTP]], [[TAK]], [[AMR]], etc.&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play music directly from compressed ZIP and without requiring the user to extract the files prior to playing. More archive formats supported through additional components: [http://kode54.foobar2000.org/ JMA], [http://kode54.foobar2000.org/ LHA].&lt;br /&gt;
&lt;br /&gt;
== Using foobar2000 ==&lt;br /&gt;
&lt;br /&gt;
=== Important pages ===&lt;br /&gt;
* [http://www.foobar2000.org/FAQ foobar2000 FAQ]&lt;br /&gt;
* [[foobar2000:components|foobar2000 Components]]&lt;br /&gt;
* [[foobar2000:Directories|foobar2000 Directories]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&lt;br /&gt;
* [[foobar2000:FAQ|foobar2000 FAQ (unofficial)]]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Guides foobar2000 Guides (category)]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Preferences foobar2000 Preferences (category)]&lt;br /&gt;
&lt;br /&gt;
=== Specific guides ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preferences&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Preferences|Preferences dialog]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metadata&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Properties|Tag editing: the Properties dialog]]&lt;br /&gt;
* [[foobar2000:Query syntax|Query Syntax]]: details of Syntax for querying metadata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title formatting&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Title Formatting Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* [[foobar2000:Title Formatting Reference|Titleformat Reference]]: reference guide to all fields and functions&lt;br /&gt;
* [[foobar2000:Titleformat Examples|Titleformat Examples]]: user-submitted code for various purposes; submit your own!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Others&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:File operations|File operations dialog]]: move, copy, rename, and delete files from within foobar2000&lt;br /&gt;
* [[foobar2000:Commandline Guide|Commandline usage]]&lt;br /&gt;
&lt;br /&gt;
=== External Guides ===&lt;br /&gt;
* [http://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide].&lt;br /&gt;
* [http://foobar2000.xrea.jp/ fb2k Wiki Page] for Japanese users.&lt;br /&gt;
* [http://winamp2foobar.blogspot.com Winamp To Foobar Guide] with information relevant for general users also.&lt;br /&gt;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
* [[foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]&lt;br /&gt;
* [[foobar2000:Metadata Compatibility|Metadata Compatibility]]: information about compatibility with metadata written by other applications&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
=== Official Site ===&lt;br /&gt;
* [http://www.foobar2000.org foobar2000.org: Homepage]&lt;br /&gt;
* [http://www.foobar2000.org/download foobar2000.org: Download]&lt;br /&gt;
* [http://www.foobar2000.org/components foobar2000.org: Components]&lt;br /&gt;
&lt;br /&gt;
=== Community ===&lt;br /&gt;
* [http://forums.foobar2000.org/ Official foobar2000 forum]&lt;br /&gt;
* [http://foobar-users.de/ German Support Forum]&lt;br /&gt;
* [http://foobar2000.pl/ Polish Support Forum]&lt;br /&gt;
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar2000.ru/forum/ Another Russian-language forum]&lt;br /&gt;
&lt;br /&gt;
=== Appearance ===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=61333 Default UI .fth Thread] Fast way to clone another&#039;s DUI Configuration.&lt;br /&gt;
* [[foobar2000:Preferences:Columns UI/Appearance|Columns UI appearance customization guides]]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31027 Columns UI configurations]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000]]&lt;br /&gt;
[[Category:Media Players|foobar2000]]&lt;br /&gt;
[[Category:CD Rippers]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Tag editors]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=22907</id>
		<title>Foobar2000:Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components&amp;diff=22907"/>
		<updated>2011-08-14T13:31:17Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* General */ Adding foo_seek&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{title|foobar2000 Components}}&lt;br /&gt;
&lt;br /&gt;
{{fb2k}}&lt;br /&gt;
This page contains most foobar2000 components available at time of history last update.&lt;br /&gt;
=Offical 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;
*Archive Reader (foo_unpack) Adds support for playing files directly from ZIP RAR and GZIP archives&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;
*[[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;
*ReplayGain Scanner (foo_rgscan) advanced solution for volume matching&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;
&lt;br /&gt;
===Additional Components===&lt;br /&gt;
These components are provided as separate downloads, found on the [http://www.foobar2000.org/components/author/Peter Additional Components page]. &lt;br /&gt;
*[[Foobar2000:Components_0.9/ABX_Comparator(foo_abx)|ABX comparator (foo_abx)]] component for double blind listening tests&lt;br /&gt;
*[[Foobar2000:Components 0.9/ALAC Decoder (foo_input_alac)|ALAC Decoder (foo_input_alac)]] Apple Lossless ([[ALAC]]) decoder&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/Audio CD Writer (foo_burninate)|Audio CD Writer (foo_burninate)]] CD burning support&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/Decoding Speed Test (foo_benchmark)|Decoding Speed Test (foo_benchmark)]] Measures decoding speed of audio files.&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/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/Masstagger (foo_masstag)|Masstagger (foo_masstag)]] Automates various tag editing operations.&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/Playback Statistics v3.x (foo playcount)|Playback Statistics (foo playcount)]] Collects playback statistics for your Media Library content.&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/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 and Windows 7 systems.&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;
== 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/Facets (foo_facets)|Facets (foo_facets)]] Flexible media library viewer based on linked lists.&lt;br /&gt;
* [[Foobar2000:Components/Playlist_Organizer_(foo_plorg)|Playlist Organizer (foo_plorg)]] Advanced playlist manager to organize playlists in a treeview.&lt;br /&gt;
* [[Foobar2000:Components/Queue Contents Editor (foo queuecontents)|Queue Contents Editor (foo_queuecontents)]] Edit and view queue contents using an UI Element.&lt;br /&gt;
* [[Foobar2000:Components/Quicksearch UI Element (foo quicksearch)|Quicksearch UI Element (foo_quicksearch)]] Search toolbar that sends results to a playlist.&lt;br /&gt;
* [[Foobar2000:Components/SimPlaylist (foo_simplaylist)|SimPlaylist (foo_simplaylist)]] Playlist view with album art.&lt;br /&gt;
* [[Foobar2000:Components/SimPlaylist Manager (foo_simplaylist_manager)|SimPlaylist Manager (foo_simplaylist_manager)]] Playlist manager replacement with additional columns.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Text Display (foo_textdisplay)|Text Display (foo_textdisplay)]] Displays information about the playing or selected track.&lt;br /&gt;
* [[Foobar2000:Components/Waveform Seekbar (foo_wave_seekbar)|Waveform Seekbar (foo_wave_seekbar)]] Element for DUI with seekbar functionality on top of the waveform of the playing song.&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels extend the functionality of Columns 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 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/ELplaylist panel (foo uie elplaylist)|ELplaylist panel (foo uie elplaylist)]] Playlist panel replacement with extensive customization options.&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/Graphical Browser (foo uie graphical browser) |Graphical Browser (foo uie graphical browser)]] A panel that allows to browse media library by graphical or text tiles &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. No longer updated. Most have better success CUI&#039;s in-built [[Foobar2000:Components_0.9/Columns_UI_%28foo_ui_columns%29#Playlist_filters|filters]].&lt;br /&gt;
* [[Foobar2000:Components 0.9/Panel Stack Splitter (foo uie panel splitter) | Panel Stack Splitter (foo_uie_panel_splitter)]] Allows you to place objects freely within the foobar2000 window, including panels, text, and images&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/Queue Contents Editor (foo queuecontents)|Queue Contents Editor (foo_queuecontents)]] Edit and view queue contents using an UI Element.&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/Shpeck (foo_vis_shpeck)|Shpeck (foo_vis_shpeck)]] Winamp visualisation plugins wrapper.&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/Typefind (foo_typefind)|Typefind (foo_typefind)]] Provides some in-line search facilities.&lt;br /&gt;
* [[Foobar2000:Components/Waveform Seekbar (foo_wave_seekbar)|Waveform Seekbar (foo_wave_seekbar)]] Panel for CUI with seekbar functionality on top of the waveform of the playing song.&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;
===Multichannel audio===&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/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/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/Surround Pan (foo_dsp_span)|Surround Pan (foo_dsp_span)]] WYSIWYG Surround panning.&lt;br /&gt;
===Headphones===&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/BS2D (foo_dsp_bs2p)|BS2D (foo_dsp_bs2p)]] Improves headphone listening of regular hi-fi stereo records.&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;
===Utilities===&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/Voice Cut Filter (foo_dsp_centercut)|Voice Cut Filter (foo_dsp_centercut)]] Voice cut filter.&lt;br /&gt;
* [[Foobar2000:Components/Equalizer split (foo_dsp_eqsplit)|Equalizer split (foo_dsp_eqsplit)]] A meta-DSP that feeds each channel into a separate equalizer instance.&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;
===Effects===&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/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;
===Converters===&lt;br /&gt;
* [[Foobar2000:Components/HDCD Decoder (foo_dsp_hdcd)|HDCD Decoder (foo_dsp_hdcd)]] This DSP component will decode HDCD data in any 16-bit PCM stream passed through it, resulting in 20-bit PCM.&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/SSRC (foo_dsp_ssrc)|SSRC (foo_dsp_ssrc)]] Sample rate converter.&lt;br /&gt;
&lt;br /&gt;
===Multi-purpose===&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/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/Winamp DSP Bridge (foo_dsp_winamp)|Winamp DSP Bridge (foo_dsp_winamp)]] Allows the use of Winamp DSPs.&lt;br /&gt;
* [[Foobar2000:Components/VST adapter|VST 2.4 adapter (foo_vst)]] Allows Foobar2000 users to use VST 2.4 plug-ins equally with “native” ones.&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/VST Host (foo_dsp_vst)|VST Host (foo_dsp_vst)]] Adds support to Virtual Studio Technology audio interface.&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
===Music Decoders===&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/DTS Decoder (foo_dts)|DTS Decoder (foo_dts)]] Decodes Digital Theater Systems ([[DTS]]) audio format.&lt;br /&gt;
* [[Foobar2000:Components 0.9/MIDI Synthesizer Host (foo_midi)|MIDI Synthesizer Host (foo_midi)]] Adds decoding support for General MIDI files (.MID) and RIFF MIDI files (.RMI) as well as several proprietary MIDI formats (.MIDS, .GMF, .HMI, .HMP, .MUS, .XMI).&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/TAK Decoder (foo_input_tak)|TAK Decoder (foo_input_tak)]] Adds support for decoding and tagging [[TAK]] files as well as reading embedded album art.&lt;br /&gt;
* [[Foobar2000:Components/TTA Audio Decoder (foo_input_tta)|TTA Audio Decoder (foo_input_tta)]] Decodes True Audio ([[TTA]]) audio format.&lt;br /&gt;
* [[Foobar2000:Components/DVD Audio Decoder (foo_input_dvda)|DVD Audio Decoder (foo_input_dvda)]] Decodes DVD Audio ([[DVD Audio]]) Disks.&lt;br /&gt;
&lt;br /&gt;
===Other Decoders===&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/AdPlug decoder (foo_input_adplug)|AdPlug decoder (foo_input_adplug)]] Adds decoding support for all Adlib FM chip formats supported by the AdPlug library.&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/AviSynth decoder (foo_input_avs)|AviSynth decoder (foo_input_avs)]] Adds decoding support for AviSynth scripts (.AVS), audio only.&lt;br /&gt;
* [[Foobar2000:Components/DSDIFF Decoder (foo_input_dsdiff)|DSDIFF Decoder (foo_input_dsdiff)]] Adds decoding support for DSDIFF files (.DFF).&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 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/Hively Tracker Decoder (foo_input_hvl)|Hively Tracker Decoder (foo_input_hvl)]] Adds decoding support for Hively Tracker files (.HVL) as well as Abyss&#039; Highest eXperience files (.AHX).&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/QSF decoder (foo_input_qsf)|QSF decoder (foo_input_qsf)]] Adds decoding support for Capcom QSound Sound Format files (.QSF/.MINIQSF).&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/Automatic BPM Analyser (foo_bpm)|Automatic BPM Analyser (foo_bpm)]] Automatically calculate the BPM of songs. Manual BPM calculation also available.&lt;br /&gt;
* [[Foobar2000:Components 0.9/Autosave &amp;amp; Autobackup (foo_jesus)|Autosave &amp;amp; Autobackup (foo_jesus)]] Allows periodic automatic saving of configuration and other data in foobar2000 and keeping backup copies of such data.&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/EXTM3U Playlist Creator (foo_extm3u)|EXTM3U Playlist Creator (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/Infospect (foo_infospect)|Infospect (foo_infospect)]] Displays low level playback information.&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;
* [[Foobar2000:Components 0.9/Logitech LCD Display &amp;amp; Visualization (foo_logitech_lcd)|Logitech LCD Display &amp;amp; Visualization (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/Seek (foo_seek)|Seek (foo_seek)]] offers different ways of seeking inside one or more tracks: preview, rewind/fast-forward, loop, and repeat A–B.&lt;br /&gt;
* [[Foobar2000:Components/Seekbox (foo_seek_box)|Seekbox (foo_seek_box)]] Main menu item that pops up a box for seeking to a particular hh:mm:ss time in the current track. &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/Unix archive support (foo_unpack_unix)|Unix archive support (foo_unpack_unix)]] Adds support for reading from Unix Tape Archives (.TAR), gzip files (.GZ), and bzip2 files (.BZ2).&lt;br /&gt;
* [[Foobar2000:Components 0.9/Unpacker for 7-Zip archive (foo_unpack_7z) |Unpacker for 7-Zip archive (foo_unpack_7z)]]&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/UPnP/DLNA Renderer, Server, Control Point (foo_upnp)|UPnP/DLNA Renderer, Server, Control Point (foo_upnp)]]&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/Lyrics Show 2(foo_uie_lyrics2)|Lyrics Show 2(foo_uie_lyrics2)]] Downloads and displays lyrics, with LRC/timestamp support.&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/foo_lyricsgrabber2|Lyrics Grabber 2 (foo_lyricsgrabber2)]] Downloads lyrics and stores them in tags.&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 Windows Live messenger.&lt;br /&gt;
* [[Foobar2000:Components_0.9/WLM_Notifier_(foo_wlm)|Windows Live Notifier (foo_wlm)]] Shows current song as &amp;quot;Now Playing&amp;quot; in in MSN Messenger and Windows Live messenger (WLM). Supports unicode.&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;
&lt;br /&gt;
===Online radio===&lt;br /&gt;
* [[Foobar2000:Components/Podcatcher (foo_podcatcher)|Podcatcher (foo_podcatcher)]] A podcatcher component for subscribing to, downloading, and playing RSS and Atom podcast feeds in foobar2000.&lt;br /&gt;
* [[Foobar2000:Components/Vorbis Streamer (foo_vorbisstream)|Vorbis Streamer (foo_vorbisstream)]] Streams Vorbis and associated metadata to Icecast2 and Shoutcast servers.&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/Playlist History (foo playlisthistory)|Playlist History (foo playlisthistory)]] Enables playlist history in foobar2000, similar to page history in browsers.&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/Soft Playlists (foo_softplaylists)|Soft Playlists (foo_softplaylists)]] Can create different Last.fm related playlists, love tracks on Last.fm and save and load XSPF playlists (make playlists without hard paths).&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/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/Chacon (foo_chacon)|Chacon (foo_chacon)]] Chacon is a simple tool for fixing tags by converting them between different character sets.&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;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://www.foobar2000.org/components 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>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Seek_(foo_seek)&amp;diff=22893</id>
		<title>Foobar2000:Components/Seek (foo seek)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Seek_(foo_seek)&amp;diff=22893"/>
		<updated>2011-07-29T19:03:41Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Features */ fixing link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Seek (foo_seek)&#039;&#039;&#039;, developed by Hydrogenaudio user &#039;&#039;grimes&#039;&#039;, is a component that offers different ways of seeking inside one or more tracks.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
The component provides three features:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preview&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Seek lets the user play their tracks as previews, whose length can be chosen in the options from several lengths (in seconds); there is also a default length defined in the preferences. Therefore, in contrast to [[Foobar2000:Components/Preview (foo preview)|foo_preview]], the user can quickly change the preview length on-the-fly whilst listening to the previews. Furthermore, the user has the option to begin the preview from a given point where s/he has clicked or dragged the seekbar, rather than from a fixed point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fast Forward/Rewind&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
This feature imitates the behaviour of seeking inside an analogue tape: a part of the track is played, then the playback jumps to a position further ahead or behind to play another part, and so on. The periods for both playback time and moving forward/backward are definable in Seek’s preferences.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Loop&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Here the user can create a loop, whose length is again selectable in foo_seek’s preferences. Also, s/he can change the looped part of a track simply by dragging the seekbar. The preferences offer the option to start the loop in the next track either on a fixed point, or from a point where the user has clicked or dropped the seekbar. In the latter case, the user is able to compare the same part of a piece of music between different versions: by simply pressing the Next button, the loop repeats between the same time-points as for the previous track. Last but not least, there is a mode that offers a &#039;&#039;&#039;Repeat A–B&#039;&#039;&#039; functionality.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=88654 foo_seek.dll] at Hydrogenaudio forums&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=89964 q_stankovic’s topic], upon which this article is based&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Seek_(foo_seek)&amp;diff=22892</id>
		<title>Foobar2000:Components/Seek (foo seek)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Seek_(foo_seek)&amp;diff=22892"/>
		<updated>2011-07-29T19:03:24Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Created out of boredom by editing the text from q_stankovic’s topic (see the external links)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Seek (foo_seek)&#039;&#039;&#039;, developed by Hydrogenaudio user &#039;&#039;grimes&#039;&#039;, is a component that offers different ways of seeking inside one or more tracks.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
The component provides three features:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preview&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Seek lets the user play their tracks as previews, whose length can be chosen in the options from several lengths (in seconds); there is also a default length defined in the preferences. Therefore, in contrast to [[Foobar2000:Components/Preview (foo preview)&lt;br /&gt;
|foo_preview]], the user can quickly change the preview length on-the-fly whilst listening to the previews. Furthermore, the user has the option to begin the preview from a given point where s/he has clicked or dragged the seekbar, rather than from a fixed point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fast Forward/Rewind&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
This feature imitates the behaviour of seeking inside an analogue tape: a part of the track is played, then the playback jumps to a position further ahead or behind to play another part, and so on. The periods for both playback time and moving forward/backward are definable in Seek’s preferences.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Loop&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Here the user can create a loop, whose length is again selectable in foo_seek’s preferences. Also, s/he can change the looped part of a track simply by dragging the seekbar. The preferences offer the option to start the loop in the next track either on a fixed point, or from a point where the user has clicked or dropped the seekbar. In the latter case, the user is able to compare the same part of a piece of music between different versions: by simply pressing the Next button, the loop repeats between the same time-points as for the previous track. Last but not least, there is a mode that offers a &#039;&#039;&#039;Repeat A–B&#039;&#039;&#039; functionality.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=88654 foo_seek.dll] at Hydrogenaudio forums&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=89964 q_stankovic’s topic], upon which this article is based&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=22891</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=22891"/>
		<updated>2011-07-29T18:51:59Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Using foobar2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{title|foobar2000}}&lt;br /&gt;
&lt;br /&gt;
{{Software Infobox|&lt;br /&gt;
|name = foobar2000&lt;br /&gt;
|logo = [[Image:foobar2000 Logo.png|48px]]&lt;br /&gt;
|screenshot = [[Image:Foobar2000-1.0-default-ui.png|250px]]&lt;br /&gt;
|caption = Screenshot of foobar2000 v1.0 using the default user interface&lt;br /&gt;
|maintainer = Peter Pawlowski&lt;br /&gt;
|stable_release = 1.1.7&lt;br /&gt;
|preview_release = 1.1.8 beta 2&lt;br /&gt;
|operating_system = Windows&lt;br /&gt;
|use = Media Player&lt;br /&gt;
|license = Proprietary, BSD&lt;br /&gt;
|website = [http://www.foobar2000.org/ www.foobar2000.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;foobar2000&#039;&#039;&#039; is an advanced freeware audio player for the Windows platform. Some of the basic features include full unicode support, ReplayGain support and native support for several popular audio formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest stable version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest beta version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.8 beta 2]&lt;br /&gt;
&lt;br /&gt;
== Platforms ==&lt;br /&gt;
&lt;br /&gt;
foobar2000 has been written specifically for the Windows platform and there are no plans to port it to any others.  However, while not officially supported, it is known to run on [http://www.hydrogenaudio.org/forums/index.php?showtopic=54933 Linux] and [http://www.hydrogenaudio.org/forums/index.php?showtopic=77261 Mac OS X] through Wine and WineBottler, respectively.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Powerful open component architecture allowing third-party developers to extend functionality of the player, including the ability to fully replace the user interface.&lt;br /&gt;
* Full Unicode support: File names, user interface, tagging, etc.&lt;br /&gt;
* [[ReplayGain]] support: Both playback and writing ReplayGain information to file tags.&lt;br /&gt;
* [[Gapless playback]].&lt;br /&gt;
* Advanced [[tagging]] capabilities - through built-in [[foobar2000:Properties|Properties dialog]] and various optional tagging-related components.&lt;br /&gt;
* Built-in [[foobar2000:Preferences:Media Library|Media Library]] functionality.&lt;br /&gt;
** Intuitive [[foobar2000:Query syntax|query syntax]] for searching the Media Library.&lt;br /&gt;
** [[foobar2000:Autoplaylist|Autoplaylist]] support: Generate dynamically updating playlists based on queries.&lt;br /&gt;
* [[foobar2000:Preferences:General:Keyboard Shortcuts|Customizable keyboard shortcuts]].&lt;br /&gt;
* Support for transcoding all supported audio formats using the [[Foobar2000:Converter|Converter component]] (requires external command-line encoder executables for different output formats).&lt;br /&gt;
* [[Secure_ripping|Secure]] [[foobar2000:Ripping CDs|CD ripping]].&lt;br /&gt;
* Streaming support.&lt;br /&gt;
* Efficient handling of large playlists.&lt;br /&gt;
* [[foobar2000:Components/Default_user_interface_%28foo_ui_std%29|User interface]] with simple configuration to create even complex layouts quickly and easily.&lt;br /&gt;
* Highly customizable display of track information using [[foobar2000:Titleformat_Introduction|title formatting scripts]].&lt;br /&gt;
&lt;br /&gt;
== Supported Audio Formats ==&lt;br /&gt;
Native Support (&amp;quot;out-of-the-box&amp;quot;):&lt;br /&gt;
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[Speex]], [[WavPack]], [[WAV]], [[AIFF]], [[AU|AU/SND]], [[CDDA]], [[WMA]], [[Matroska]].&lt;br /&gt;
&lt;br /&gt;
Supported through optional components:&lt;br /&gt;
* [[TTA]], [[Monkey&#039;s Audio]], [[ALAC]], [[MOD]], [[SPC]], [[Shorten]], [[OptimFROG]], [[AC3]], [[DTS]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[MMS]], [[RSTP]], [[TAK]], [[AMR]], etc.&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play music directly from compressed ZIP and without requiring the user to extract the files prior to playing. More archive formats supported through additional components: [http://kode54.foobar2000.org/ JMA], [http://kode54.foobar2000.org/ LHA].&lt;br /&gt;
&lt;br /&gt;
== Using foobar2000 ==&lt;br /&gt;
&lt;br /&gt;
=== Important pages ===&lt;br /&gt;
* [http://www.foobar2000.org/FAQ foobar2000 FAQ]&lt;br /&gt;
* [[foobar2000:components|foobar2000 Components]]&lt;br /&gt;
* [[foobar2000:Directories|foobar2000 Directories]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&lt;br /&gt;
* [[foobar2000:FAQ|foobar2000 FAQ (unofficial)]]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Guides foobar2000 Guides (category)]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Preferences foobar2000 Preferences (category)]&lt;br /&gt;
&lt;br /&gt;
=== Specific guides ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preferences&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Preferences|Preferences dialog]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metadata&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Properties|Tag editing: the Properties dialog]]&lt;br /&gt;
* [[foobar2000:Query syntax|Query Syntax]]: details of Syntax for querying metadata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title formatting&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Title Formatting Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* [[foobar2000:Title Formatting Reference|Titleformat Reference]]: reference guide to all fields and functions&lt;br /&gt;
* [[foobar2000:Titleformat Examples|Titleformat Examples]]: user-submitted code for various purposes; submit your own!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Others&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:File operations|File operations dialog]]: move, copy, rename, and delete files from within foobar2000&lt;br /&gt;
* [[foobar2000:Commandline Guide|Commandline usage]]&lt;br /&gt;
&lt;br /&gt;
=== External Guides ===&lt;br /&gt;
* [http://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide].&lt;br /&gt;
* [http://foobar2000.xrea.jp/ fb2k Wiki Page] for Japanese users.&lt;br /&gt;
* [http://winamp2foobar.blogspot.com Winamp To Foobar Guide] with information relevant for general users also.&lt;br /&gt;
&lt;br /&gt;
=== Technical information ===&lt;br /&gt;
* [[foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]&lt;br /&gt;
* [[foobar2000:Metadata Compatibility|Metadata Compatibility]]: information about compatibility with metadata written by other applications&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
=== Official Site ===&lt;br /&gt;
* [http://www.foobar2000.org foobar2000.org: Homepage]&lt;br /&gt;
* [http://www.foobar2000.org/download foobar2000.org: Download]&lt;br /&gt;
* [http://www.foobar2000.org/components foobar2000.org: Components]&lt;br /&gt;
&lt;br /&gt;
=== Community ===&lt;br /&gt;
* [http://forums.foobar2000.org/ Official foobar2000 forum]&lt;br /&gt;
* [http://foobar-users.de/ German Support Forum]&lt;br /&gt;
* [http://foobar2000.pl/ Polish Support Forum]&lt;br /&gt;
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar2000.ru/forum/ Another Russian-language forum]&lt;br /&gt;
&lt;br /&gt;
=== Appearance ===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=61333 Default UI .fth Thread] Fast way to clone another&#039;s DUI Configuration.&lt;br /&gt;
* [[foobar2000:Preferences:Columns UI/Appearance|Columns UI appearance customization guides]]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31027 Columns UI configurations]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000]]&lt;br /&gt;
[[Category:Media Players|foobar2000]]&lt;br /&gt;
[[Category:CD Rippers]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Tag editors]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference&amp;diff=22857</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=22857"/>
		<updated>2011-07-22T13:06:57Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k}}&lt;br /&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:Title Formatting Introduction|Title Formatting Introduction]] for a general overview of titleformat 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: [[Foobar2000:Query_syntax|Query Syntax]].&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;
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;
=== %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.&lt;br /&gt;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
&lt;br /&gt;
=== %bitrate% ===&lt;br /&gt;
Bitrate of the track; includes dynamic VBR bitrate display for currently played track.&lt;br /&gt;
&lt;br /&gt;
=== %channels% ===&lt;br /&gt;
Number of channels in the track (mono/stereo/etc). 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;
=== %filesize_natural% ===&lt;br /&gt;
Size of the file, automatically formatted in appropriate units such as megabytes or kilobytes. &lt;br /&gt;
&lt;br /&gt;
=== %samplerate% ===&lt;br /&gt;
Sample rate of the track, in Hz.&lt;br /&gt;
&lt;br /&gt;
=== %codec% ===&lt;br /&gt;
Name of codec used to encode the track. If exact codec name is not available, file extension is used.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&lt;br /&gt;
&lt;br /&gt;
= Control flow =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to conditionally execute statements.&lt;br /&gt;
&lt;br /&gt;
=== [...] (conditional section) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates the expression between &#039;&#039;[&#039;&#039; and &#039;&#039;]&#039;&#039;. If it has the truth value &#039;&#039;true&#039;&#039;, its string value and the truth value &#039;&#039;true&#039;&#039; are returned. Otherwise an empty string and &#039;&#039;false&#039;&#039; are returned.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;&#039;[%artist%]&#039;&#039; returns the value of the artist tag, if it exists. Otherwise it returns nothing, when &#039;&#039;artist&#039;&#039; would return &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
=== $if(cond,then,else) ===&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;cond&#039;&#039; evaluates to &#039;&#039;true&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise, the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $if2(a,else) ===&lt;br /&gt;
&lt;br /&gt;
Like &#039;&#039;$if(a,a,else)&#039;&#039; except that &#039;&#039;a&#039;&#039; is only evaluated once.&lt;br /&gt;
&lt;br /&gt;
=== $if3(a1,a2,...,aN,else) ===&lt;br /&gt;
&lt;br /&gt;
Evaluates arguments &#039;&#039;a1&#039;&#039; ... &#039;&#039;aN&#039;&#039;, until one is found that evaluates to &#039;&#039;true&#039;&#039;. If that happens, its value is returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifequal(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is equal to &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $ifgreater(n1,n2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the integer numbers &#039;&#039;n1&#039;&#039; and &#039;&#039;n2&#039;&#039;, if &#039;&#039;n1&#039;&#039; is greater than &#039;&#039;n2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $iflonger(s1,s2,then,else) ===&lt;br /&gt;
&lt;br /&gt;
Compares the length of the strings &#039;&#039;s1&#039;&#039; and &#039;&#039;s2&#039;&#039;, if &#039;&#039;s1&#039;&#039; is longer than &#039;&#039;s2&#039;&#039;, the &#039;&#039;then&#039;&#039; part is evaluated and its value returned. Otherwise the &#039;&#039;else&#039;&#039; part is evaluated and its value returned.&lt;br /&gt;
&lt;br /&gt;
=== $select(n,a1,...,aN) ===&lt;br /&gt;
&lt;br /&gt;
If the value of &#039;&#039;n&#039;&#039; is between 1 and N, &#039;&#039;an&#039;&#039; is evaluated and its value returned. Otherwise &#039;&#039;false&#039;&#039; is returned.&lt;br /&gt;
&lt;br /&gt;
= Arithmetic functions =&lt;br /&gt;
&lt;br /&gt;
The functions in this section can be used to perform arithmetic on integer numbers. A string will be automatically converted to a number and vice versa. The conversion to a number uses the longest prefix of the string that can be interpreted as number. Leading whitespace is ignored. Decimal points are not supported. Examples:&lt;br /&gt;
* &amp;quot;c3po&amp;quot; → 0&lt;br /&gt;
* &amp;quot;4.8&amp;quot; → 4&lt;br /&gt;
* -12&amp;quot; → -12&lt;br /&gt;
* &amp;quot;- 12&amp;quot; → 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;
= Color functions =&lt;br /&gt;
&lt;br /&gt;
Starting in version 1.0, the Default UI playlist view doesn&#039;t support color functions. However, text color can only be adjusted via angle-bracket syntax:&lt;br /&gt;
&lt;br /&gt;
* dim (default text color, but darker): &#039;&#039;&#039;&amp;amp;lt;&#039;&#039;&#039;&#039;&#039;string&#039;&#039;&#039;&#039;&#039;&amp;amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* highlight (highlight color, but lighter): &#039;&#039;&#039;&amp;amp;lt;&#039;&#039;&#039;&#039;&#039;string&#039;&#039;&#039;&#039;&#039;&amp;amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* extra highlight (highlight color): &#039;&#039;&#039;&amp;amp;lt;&#039;&#039;&#039;&#039;&#039;string&#039;&#039;&#039;&#039;&#039;&amp;amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The playlist in the Columns UI still supports the following 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 display formatting (eg. per-column title formatting patterns).&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;
=== %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;
=== %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;
=== %list_total% ===&lt;br /&gt;
&lt;br /&gt;
Returns number of items in the playlist.&lt;br /&gt;
&lt;br /&gt;
=== %queue_index% ===&lt;br /&gt;
&lt;br /&gt;
Index of the specified item in the playback queue; available in playlist only. 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;
&lt;br /&gt;
List of indexes of the specified item in the playback queue; available in playlist only. Same as %queue_index% unless the item has been queued more than once.&lt;br /&gt;
&lt;br /&gt;
=== %queue_total% ===&lt;br /&gt;
&lt;br /&gt;
Total amount of tracks in playback queue. Available only for queued tracks, for technical reasons. &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;. 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(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;. 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(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 from the left of the string &#039;&#039;a&#039;&#039;. This function is the same as $left(a,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* $cut(&#039;abc123&#039;,3) → abc&lt;br /&gt;
* $cut(&#039;abc123&#039;,0) → (nothing)&lt;br /&gt;
* $cut(&#039;abc123&#039;,-1) → abc123&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;
=== $directory_path(x) ===&lt;br /&gt;
&lt;br /&gt;
Extracts directory path from the file path &#039;&#039;x&#039;&#039;.&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 first &#039;&#039;len&#039;&#039; characters from the left of the string &#039;&#039;a&#039;&#039;. This function is the same as $cut(a,len). Negative numbers produce the entire string. Examples:&lt;br /&gt;
* $left(&#039;abc123&#039;,3) → abc&lt;br /&gt;
* $left(&#039;abc123&#039;,0) → (nothing)&lt;br /&gt;
* $left(&#039;abc123&#039;,-1) → abc123&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; 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;
* $num(123,5) → 00123&lt;br /&gt;
* $num(-123,5) → -0123&lt;br /&gt;
* $num(4.8,5) → 00004&lt;br /&gt;
* $num(A1,5) → 00000&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;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(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;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; → 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; → 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;
=== $stripprefix(x) ===&lt;br /&gt;
&lt;br /&gt;
Removes &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes from x. &lt;br /&gt;
&lt;br /&gt;
=== $stripprefix(x,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Removes the specified prefixes from x. &lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(x) ===&lt;br /&gt;
&lt;br /&gt;
Moves &#039;&#039;A&#039;&#039; and &#039;&#039;The&#039;&#039; prefixes to the end of x. &lt;br /&gt;
&lt;br /&gt;
=== $swapprefix(x,prefix1,prefix2,...) ===&lt;br /&gt;
&lt;br /&gt;
Moves the specified prefixes to the end of x. &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;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;
== 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;
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;
|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 (&#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 (&#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;|&#039;&#039;&#039;mp3_accurate_length&#039;&#039;&#039; supported (LAME proprietary header)? (&#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;
=== $channels() === &lt;br /&gt;
Returns 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;
&lt;br /&gt;
Returns ReplayGain album gain value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_album_peak% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain album peak value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_track_gain% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain track gain value.&lt;br /&gt;
&lt;br /&gt;
=== %replaygain_track_peak% ===&lt;br /&gt;
&lt;br /&gt;
Returns ReplayGain track peak value.&lt;br /&gt;
&lt;br /&gt;
== Special fields ==&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;
==== %last_modified% ====&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;
==== %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;
==== %_foobar2000_version% ====&lt;br /&gt;
Returns a string representing the version of foobar2000.&lt;br /&gt;
&lt;br /&gt;
= Time/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;
&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;
&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;
&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;
&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;
&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 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/components/view/foo_playcount 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 usable in the context of the particular component.&lt;br /&gt;
&lt;br /&gt;
== Album list ==&lt;br /&gt;
* [[Foobar2000:Titleformat_Album_List|Album List Title Formatting]]&lt;br /&gt;
* [[Foobar2000:Preferences:Album List|Preferences: Album List]]&lt;br /&gt;
== Playlist Organizer ==&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=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;
* [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: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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Guides|Titleformat Reference]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Introduction&amp;diff=22856</id>
		<title>Foobar2000:Title Formatting Introduction</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Introduction&amp;diff=22856"/>
		<updated>2011-07-22T13:06:12Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;foobar2000 uses title formatting scripts in several places. This article will give you a basic introduction to title formatting patterns. A full list of available title formatting commands is maintained at [[foobar2000:Title Formatting Reference|Title Formatting Reference]], and users can view examples from others and submit their own at [[foobar2000:Titleformat Examples|Titleformat Examples]].&lt;br /&gt;
&lt;br /&gt;
== Just text ==&lt;br /&gt;
&lt;br /&gt;
For example, you can customize the format of the playlist or the statusbar. The simplest thing you can do, is display some static text:&lt;br /&gt;
&lt;br /&gt;
  This text will be displayed as-is.&lt;br /&gt;
&lt;br /&gt;
Admittedly, this is pretty boring and you probably will not want to use this on its own. There is one more thing worth noting before we move on to more interesting things. Title formatting code uses some special characters which cannot be used in plain text, but you can use them inside single quotes:&lt;br /&gt;
&lt;br /&gt;
  &#039;These characters normally have special meaning: ( ) , [ ] $ %&#039;&lt;br /&gt;
&lt;br /&gt;
Single quotes, percent signs and ampersand can be included in the output, by doubling them outside single quotes.&lt;br /&gt;
&lt;br /&gt;
Note that linebreaks will not appear in the output, unless they occur within single quotes:&lt;br /&gt;
&lt;br /&gt;
  This is the&lt;br /&gt;
  first line.&lt;br /&gt;
  &#039;This will stretch&lt;br /&gt;
  to the second line.&#039;&lt;br /&gt;
&lt;br /&gt;
Note that multiline scripts cannot be used everywhere; in the default components, they can be used for the text on the icon in the system notification area (&amp;quot;systray&amp;quot;) and in the copy command script. The playlist and other singleline displays will truncate strings with line breaks, and would display the above example like this:&lt;br /&gt;
&lt;br /&gt;
  This is the first line. This will stretch (...)&lt;br /&gt;
&lt;br /&gt;
Comments are achieved by placing &#039;//&#039; at the start of a new line of code.  That entire line will be commented out, eg.&lt;br /&gt;
  //This is commented and will not appear// this is also commented due to the &#039;//&#039; at the start of the line&lt;br /&gt;
  This is not commented and will appear// this and the &#039;//&#039; preceding it will also appear, because there is no &#039;//&#039; at the start of the line&lt;br /&gt;
&lt;br /&gt;
== Song information ==&lt;br /&gt;
&lt;br /&gt;
Title formatting scripts would be quite useless, if you could not display information about songs. To access the value of the &amp;quot;title&amp;quot; tag, you would write &amp;quot;title&amp;quot; in percent signs:&lt;br /&gt;
&lt;br /&gt;
  %title%&lt;br /&gt;
&lt;br /&gt;
Actually, the above is a little smarter than just using: looking at the &amp;quot;title&amp;quot; tag. If the title tag is missing, it will use the filename instead. There are several of this field remappings that are intended to make your life a little easier; among them are &amp;lt;code&amp;gt;%artist%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%tracknumber%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%list_index%&amp;lt;/code&amp;gt; and of course &amp;lt;code&amp;gt;%title%&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A name written inside percent signs will generally try to look up the tag of the same name, unless it is one of the aforementioned remapped fields. Even in this case you can use the unaltered value of the tag:&lt;br /&gt;
&lt;br /&gt;
  $meta(title)&lt;br /&gt;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
&lt;br /&gt;
Technical information can be accessed in similar way as tags, either using &amp;lt;code&amp;gt;%__name%&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$info(name)&amp;lt;/code&amp;gt; where the name is one of those that can be seen in the &amp;quot;Other info&amp;quot; part of the properties window in foobar2000. There are some field remappings for technical information as well, for example &amp;lt;code&amp;gt;%bitrate%&amp;lt;/code&amp;gt; gives you the average bitrate of a song or the current dynamic bitrate, if the song is playing, provided that the format supports reporting the dynamic bitrate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Reading==&lt;br /&gt;
&lt;br /&gt;
* [[foobar2000:Titleformat Reference|Title Formatting Reference page]]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Guides|Titleformat Introduction]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=22855</id>
		<title>Foobar2000:Foobar2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Foobar2000&amp;diff=22855"/>
		<updated>2011-07-22T13:03:42Z</updated>

		<summary type="html">&lt;p&gt;Db1989: /* Specific Guides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{title|foobar2000}}&lt;br /&gt;
&lt;br /&gt;
{{Software Infobox|&lt;br /&gt;
|name = foobar2000&lt;br /&gt;
|logo = [[Image:foobar2000 Logo.png|48px]]&lt;br /&gt;
|screenshot = [[Image:Foobar2000-1.0-default-ui.png|250px]]&lt;br /&gt;
|caption = Screenshot of foobar2000 v1.0 using the default user interface&lt;br /&gt;
|maintainer = Peter Pawlowski&lt;br /&gt;
|stable_release = 1.1.7&lt;br /&gt;
|preview_release = 1.1.8 beta 2&lt;br /&gt;
|operating_system = Windows&lt;br /&gt;
|use = Media Player&lt;br /&gt;
|license = Proprietary, BSD&lt;br /&gt;
|website = [http://www.foobar2000.org/ www.foobar2000.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;foobar2000&#039;&#039;&#039; is an advanced freeware audio player for the Windows platform. Some of the basic features include full unicode support, ReplayGain support and native support for several popular audio formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest stable version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The latest beta version is:&#039;&#039;&#039; [http://www.foobar2000.org/download v1.1.8 beta 2]&lt;br /&gt;
&lt;br /&gt;
== Platforms ==&lt;br /&gt;
&lt;br /&gt;
foobar2000 has been written specifically for the Windows platform and there are no plans to port it to any others.  However, while not officially supported, it is known to run on [http://www.hydrogenaudio.org/forums/index.php?showtopic=54933 Linux] and [http://www.hydrogenaudio.org/forums/index.php?showtopic=77261 Mac OS X] through Wine and WineBottler, respectively.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Powerful open component architecture allowing third-party developers to extend functionality of the player, including the ability to fully replace the user interface.&lt;br /&gt;
* Full Unicode support: File names, user interface, tagging, etc.&lt;br /&gt;
* [[Replay Gain]] support: Both playback and writing ReplayGain information to file tags.&lt;br /&gt;
* [[Gapless playback]].&lt;br /&gt;
* Advanced [[tagging]] capabilities - through built-in [[foobar2000:Properties|Properties dialog]] and various optional tagging-related components.&lt;br /&gt;
* Built-in [[foobar2000:Preferences:Media Library|Media Library]] functionality.&lt;br /&gt;
** Intuitive [[foobar2000:Query syntax|query syntax]] for searching the Media Library.&lt;br /&gt;
** [[foobar2000:Autoplaylist|Autoplaylist]] support: Generate dynamically updating playlists based on queries.&lt;br /&gt;
* [[foobar2000:Preferences:General:Keyboard Shortcuts|Customizable keyboard shortcuts]].&lt;br /&gt;
* Support for transcoding all supported audio formats using the [[Foobar2000:Converter|Converter component]] (requires external command-line encoder executables for different output formats).&lt;br /&gt;
* [[Secure_ripping|Secure]] [[foobar2000:Ripping CDs|CD ripping]].&lt;br /&gt;
* Streaming support.&lt;br /&gt;
* Efficient handling of large playlists.&lt;br /&gt;
* [[foobar2000:Components/Default_user_interface_%28foo_ui_std%29|User interface]] with simple configuration to create even complex layouts quickly and easily.&lt;br /&gt;
* Highly customizable display of track information using [[foobar2000:Titleformat_Introduction|title formatting scripts]].&lt;br /&gt;
&lt;br /&gt;
== Supported Audio Formats ==&lt;br /&gt;
Native Support (&amp;quot;out-of-the-box&amp;quot;):&lt;br /&gt;
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[Speex]], [[WavPack]], [[WAV]], [[AIFF]], [[AU|AU/SND]], [[CDDA]], [[WMA]], [[Matroska]].&lt;br /&gt;
&lt;br /&gt;
Supported through optional components:&lt;br /&gt;
* [[TTA]], [[Monkey&#039;s Audio]], [[ALAC]], [[MOD]], [[SPC]], [[Shorten]], [[OptimFROG]], [[AC3]], [[DTS]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[MMS]], [[RSTP]], [[TAK]], [[AMR]], etc.&lt;br /&gt;
&lt;br /&gt;
In addition, foobar2000 can also play music directly from compressed ZIP and without requiring the user to extract the files prior to playing. More archive formats supported through additional components: [http://kode54.foobar2000.org/ JMA], [http://kode54.foobar2000.org/ LHA].&lt;br /&gt;
&lt;br /&gt;
== Using foobar2000 ==&lt;br /&gt;
* [http://www.foobar2000.org/FAQ foobar2000 FAQ]&lt;br /&gt;
* [[foobar2000:components|foobar2000 Components]]&lt;br /&gt;
* [[foobar2000:Directories|foobar2000 Directories]]&lt;br /&gt;
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]&lt;br /&gt;
* [[foobar2000:FAQ|foobar2000 FAQ (unofficial)]]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Guides foobar2000 Guides (category)]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Preferences foobar2000 Preferences (category)]&lt;br /&gt;
=== Technical Information ===&lt;br /&gt;
* [[foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]&lt;br /&gt;
&lt;br /&gt;
=== Specific Guides ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preferences&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Preferences|Preferences Dialog]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metadata&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Properties|Tag editing: the Properties dialog]]&lt;br /&gt;
* [[foobar2000:Query syntax|Query Syntax]]: details of Syntax for querying metadata.&lt;br /&gt;
* [[foobar2000:Metadata Compatibility|Metadata Compatibility]]: information about compatibility with metadata written by other applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title formatting&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:Title Formatting Introduction|Introduction to titleformat scripts]]&lt;br /&gt;
* [[foobar2000:Title Formatting Reference|Titleformat Reference]]: reference guide to all fields and functions&lt;br /&gt;
* [[foobar2000:Titleformat Examples|Titleformat Examples]]: user-submitted code for various purposes; submit your own!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Others&#039;&#039;&#039;&lt;br /&gt;
* [[foobar2000:File operations|File operations dialog]]: move, copy, rename, and delete files from within foobar2000&lt;br /&gt;
* [[foobar2000:Commandline Guide|Commandline Usage]]&lt;br /&gt;
&lt;br /&gt;
=== External Guides ===&lt;br /&gt;
* [http://foobar2000.audiohq.de/ Frank Bicking&#039;s German-language guide].&lt;br /&gt;
* [http://foobar2000.xrea.jp/ fb2k Wiki Page] for Japanese users.&lt;br /&gt;
* [http://winamp2foobar.blogspot.com Winamp To Foobar Guide] with information relevant for general users also.&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
=== Official Site ===&lt;br /&gt;
* [http://www.foobar2000.org foobar2000.org: Homepage]&lt;br /&gt;
* [http://www.foobar2000.org/download foobar2000.org: Download]&lt;br /&gt;
* [http://www.foobar2000.org/components foobar2000.org: Components]&lt;br /&gt;
&lt;br /&gt;
=== Community ===&lt;br /&gt;
* [http://forums.foobar2000.org/ Official foobar2000 forum]&lt;br /&gt;
* [http://foobar-users.de/ German Support Forum]&lt;br /&gt;
* [http://foobar2000.pl/ Polish Support Forum]&lt;br /&gt;
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]&lt;br /&gt;
* [http://www.foobar2000.ru/forum/ Another Russian-language forum]&lt;br /&gt;
&lt;br /&gt;
=== Appearance ===&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=61333 Default UI .fth Thread] Fast way to clone another&#039;s DUI Configuration.&lt;br /&gt;
* [[foobar2000:Preferences:Columns UI/Appearance|Columns UI appearance customization guides]]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31027 Columns UI configurations]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000]]&lt;br /&gt;
[[Category:Media Players|foobar2000]]&lt;br /&gt;
[[Category:CD Rippers]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Tag editors]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Introduction&amp;diff=22854</id>
		<title>Foobar2000:Title Formatting Introduction</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Introduction&amp;diff=22854"/>
		<updated>2011-07-22T13:02:44Z</updated>

		<summary type="html">&lt;p&gt;Db1989: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;foobar2000 uses title formatting scripts in several places. This article will give you a basic introduction to title formatting patterns. A full list of available title formatting commands is maintained at [[foobar2000:Title Formatting Reference|Title Formatting Reference]], and users can view examples from others and submit their own at [[foobar2000:Titleformat Examples]].&lt;br /&gt;
&lt;br /&gt;
== Just text ==&lt;br /&gt;
&lt;br /&gt;
For example, you can customize the format of the playlist or the statusbar. The simplest thing you can do, is display some static text:&lt;br /&gt;
&lt;br /&gt;
  This text will be displayed as-is.&lt;br /&gt;
&lt;br /&gt;
Admittedly, this is pretty boring and you probably will not want to use this on its own. There is one more thing worth noting before we move on to more interesting things. Title formatting code uses some special characters which cannot be used in plain text, but you can use them inside single quotes:&lt;br /&gt;
&lt;br /&gt;
  &#039;These characters normally have special meaning: ( ) , [ ] $ %&#039;&lt;br /&gt;
&lt;br /&gt;
Single quotes, percent signs and ampersand can be included in the output, by doubling them outside single quotes.&lt;br /&gt;
&lt;br /&gt;
Note that linebreaks will not appear in the output, unless they occur within single quotes:&lt;br /&gt;
&lt;br /&gt;
  This is the&lt;br /&gt;
  first line.&lt;br /&gt;
  &#039;This will stretch&lt;br /&gt;
  to the second line.&#039;&lt;br /&gt;
&lt;br /&gt;
Note that multiline scripts cannot be used everywhere; in the default components, they can be used for the text on the icon in the system notification area (&amp;quot;systray&amp;quot;) and in the copy command script. The playlist and other singleline displays will truncate strings with line breaks, and would display the above example like this:&lt;br /&gt;
&lt;br /&gt;
  This is the first line. This will stretch (...)&lt;br /&gt;
&lt;br /&gt;
Comments are achieved by placing &#039;//&#039; at the start of a new line of code.  That entire line will be commented out, eg.&lt;br /&gt;
  //This is commented and will not appear// this is also commented due to the &#039;//&#039; at the start of the line&lt;br /&gt;
  This is not commented and will appear// this and the &#039;//&#039; preceding it will also appear, because there is no &#039;//&#039; at the start of the line&lt;br /&gt;
&lt;br /&gt;
== Song information ==&lt;br /&gt;
&lt;br /&gt;
Title formatting scripts would be quite useless, if you could not display information about songs. To access the value of the &amp;quot;title&amp;quot; tag, you would write &amp;quot;title&amp;quot; in percent signs:&lt;br /&gt;
&lt;br /&gt;
  %title%&lt;br /&gt;
&lt;br /&gt;
Actually, the above is a little smarter than just using: looking at the &amp;quot;title&amp;quot; tag. If the title tag is missing, it will use the filename instead. There are several of this field remappings that are intended to make your life a little easier; among them are &amp;lt;code&amp;gt;%artist%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%tracknumber%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%list_index%&amp;lt;/code&amp;gt; and of course &amp;lt;code&amp;gt;%title%&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A name written inside percent signs will generally try to look up the tag of the same name, unless it is one of the aforementioned remapped fields. Even in this case you can use the unaltered value of the tag:&lt;br /&gt;
&lt;br /&gt;
  $meta(title)&lt;br /&gt;
&lt;br /&gt;
== Technical information ==&lt;br /&gt;
&lt;br /&gt;
Technical information can be accessed in similar way as tags, either using &amp;lt;code&amp;gt;%__name%&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$info(name)&amp;lt;/code&amp;gt; where the name is one of those that can be seen in the &amp;quot;Other info&amp;quot; part of the properties window in foobar2000. There are some field remappings for technical information as well, for example &amp;lt;code&amp;gt;%bitrate%&amp;lt;/code&amp;gt; gives you the average bitrate of a song or the current dynamic bitrate, if the song is playing, provided that the format supports reporting the dynamic bitrate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Reading==&lt;br /&gt;
&lt;br /&gt;
* [[foobar2000:Titleformat Reference|Title Formatting Reference page]]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Guides|Titleformat Introduction]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=CUETools&amp;diff=22836</id>
		<title>CUETools</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=CUETools&amp;diff=22836"/>
		<updated>2011-07-06T19:39:50Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Updating link to Gregory’s site, and righting the huge omission of it from the “External links”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Software Infobox&lt;br /&gt;
| name = CUETools&lt;br /&gt;
| logo =&lt;br /&gt;
| screenshot = [[Image:CUETools 2.0.9.png|250px|CUETools 2.0.8]]&lt;br /&gt;
| caption = &lt;br /&gt;
| maintainer = [http://www.hydrogenaudio.org/forums/index.php?showuser=2227 Moitah],[http://www.hydrogenaudio.org/forums/index.php?showuser=59035 Gregory S. Chudov]&lt;br /&gt;
| stable_release = 2.0.9&lt;br /&gt;
| preview_release = &#039;&#039;none&#039;&#039;&lt;br /&gt;
| operating_system = [[Wikipedia:Microsoft Windows|Windows]] via native [[Wikipedia:.NET Framework| .NET]], [[Wikipedia:Cross-platform|Cross-platform]] via [[Wikipedia:Mono (software)|Mono]]&lt;br /&gt;
| use = Audio CD rip conversion and verification, multi-codec encoder and decoder&lt;br /&gt;
| license = [[Wikipedia:GNU General Public License|GNU GPL]]&lt;br /&gt;
| website = [http://www.hydrogenaudio.org/forums/index.php?showtopic=66233 Discussion topic at Hydrogenaudio], [http://www.cuetools.net/wiki/Main_Page Gregory S. Chudov’s official CUETools site]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CUETools&#039;&#039;&#039; is a tool for [[lossless|lossless audio]]/[[Cue sheet|CUE sheet]] format conversion. The goal is to make sure the album image is preserved accurately. Lossless disc image must be lossless not only in preserving contents of the audio tracks, but also in preserving gaps and CUE sheet contents. Many applications lose vital information upon conversion, and don&#039;t support all possible CUE sheet styles. For example, [[foobar2000]] loses disc pre-gap information when converting an album image, and doesn&#039;t support gaps appended (noncompliant) CUE sheets.&lt;br /&gt;
&lt;br /&gt;
==Supported formats==&lt;br /&gt;
Supports [[WAV]], [[FLAC]], [[APE]], [[LossyWAV]], [[WavPack]] and [[ALAC]] audio input/output.&lt;br /&gt;
Audio must be 16-bit, 44.1kHz samples stereo (i.e. [[Wikipedia:Red Book (audio CD standard)|CD]] PCM).&lt;br /&gt;
Supports every imaginable [[Cue sheet|CUE sheet]] style (embedded, single file, gaps appended/prepended/left out).&lt;br /&gt;
It is also possible to process a set of audio files in a directory without a CUE sheet, or use a RAR archive as an&lt;br /&gt;
input without unpacking it.&lt;br /&gt;
&lt;br /&gt;
==Use cases==&lt;br /&gt;
* Convert a single file album image with CUE sheet to a file-per-track album image&lt;br /&gt;
* Convert a file-per-track album image with CUE sheet to a single file album image&lt;br /&gt;
* Convert a file-per-track album image without a CUE sheet to a single file album image with simple CUE sheet&lt;br /&gt;
* Convert an album image from one lossless codec to another, preserving CUE sheet structure&lt;br /&gt;
* Verify a (possibly non offset-corrected) album image against AccurateRip database&lt;br /&gt;
* Apply offset correction to a rip made without offset correction&lt;br /&gt;
* Prepare an album image for burning with software, which does not handle drive write offsets, by applying offset&lt;br /&gt;
* Extract an album image directly from a RAR archive without unpacking it, and save it in a different format&lt;br /&gt;
* Fix filenames in a CUE sheet, if the files were renamed or converted to a different format.&lt;br /&gt;
* Compress to [[LossyWAV]], creating a lossy output + correction file.&lt;br /&gt;
* Convert a [[HDCD]] image to 24-bit / 20-bit / [[lossyWAV]] 16-bit audio files (irreversible).&lt;br /&gt;
&lt;br /&gt;
==AccurateRip support==&lt;br /&gt;
Since version 1.9.2, CUETools can verify album images using [[AccurateRip]] database. ARCue and TripleFLAC were an inspiration. The unique feature of CUETools AccurateRip verification is offset detection. Rip that was made without offset correction can still be verified against the database, offset can be found and corrected.&lt;br /&gt;
&lt;br /&gt;
Sample log:&lt;br /&gt;
&lt;br /&gt;
 [Disc ID: 000d44e3-005781a4-6b09df03]&lt;br /&gt;
 Track [ CRC ] Status&lt;br /&gt;
 01 [4a3fc0dd] (00/118) No matches&lt;br /&gt;
 02 [a9382641] (00/118) No matches&lt;br /&gt;
 03 [ebf74add] (00/116) No matches&lt;br /&gt;
 Offsetted by -738:&lt;br /&gt;
 01 [fd79d20e] (08/118) Accurately ripped as in pressing(s) #1&lt;br /&gt;
 02 [a0b20dcc] (08/118) Accurately ripped as in pressing(s) #1&lt;br /&gt;
 03 [44bacfd7] (08/116) Accurately ripped as in pressing(s) #1&lt;br /&gt;
 Offsetted by -265:&lt;br /&gt;
 01 [b5d7e187] (05/118) Accurately ripped as in pressing(s) #4&lt;br /&gt;
 02 [29867165] (05/118) Accurately ripped as in pressing(s) #4&lt;br /&gt;
 03 [380c013d] (05/116) Accurately ripped as in pressing(s) #4&lt;br /&gt;
&lt;br /&gt;
==What&#039;s wrong if I&#039;m sure the CD is present in the database, but CUETools doesn&#039;t find it?==&lt;br /&gt;
CDs in the AccurateRip database are identified by the track lengths. Pregap and data track included. If you rip to separate tracks without a .cue sheet, this information is lost. If the CD had a pregap and/or data track, you won&#039;t find it in the database without a .cue sheet (or using dummy .cue sheet, or using Foobar2k-generated .cue sheet). Sometimes you will find a wrong set, e.g. if the disc was released in two versions - with and without data track. You rip a version with data track, and verify it without a .cue sheet, and your files look like the version without a data track. Or you rip a CD which has a pregap, and try verify it without a .cue sheet, your files look like a CD-R which someone made from such a rip, and then ripped it.&lt;br /&gt;
&lt;br /&gt;
So make sure you have original .cue sheet and EAC .log available. Keeping the original .cue ensures that you don&#039;t lose the pregap length.&lt;br /&gt;
Data track length is not stored in .cue sheet, but if you have an EAC log made by the recent versions of EAC, CUETools can find the data track length from it. For this to work, the .log file should have the same filename as the .cue file, aside from the extension. If you don&#039;t have a .log file, but your .cue sheet contains original DISCID (like all .cue sheets made by recent EAC versions), CUETools can detect that the datatrack was present and hint for a possible data track length range. You can try to enter 75 different values in that range manually to find an exact length.&lt;br /&gt;
&lt;br /&gt;
==Command line options==&lt;br /&gt;
* CUETools.exe /verify &amp;lt;filename&amp;gt; - verify an image using AccurateRip database.&lt;br /&gt;
* CUETools.exe /convert &amp;lt;filename&amp;gt; - convert an image to the default output format.&lt;br /&gt;
* CUETools.exe &amp;lt;filename&amp;gt; - open CUETools dialog, with input file set to &amp;lt;filename&amp;gt;.&lt;br /&gt;
* ArCueDotNet.exe &amp;lt;filename&amp;gt; - console version of AccurateRip verification.&lt;br /&gt;
* LossyWAVSharp.exe &amp;lt;filename&amp;gt; - console lossyWAV compression utility&lt;br /&gt;
&lt;br /&gt;
==Supported platforms==&lt;br /&gt;
CUETools is a [[Wikipedia:.NET_Framework|.NET]] application, written in [[Wikipedia:C Sharp (programming language)|C#]]. Binaries are available for 32 bit (x86) and 64 bit (x64) Windows versions. .NET Framework 2.0 and Visual C++ 2005 SP1 runtime are required.&lt;br /&gt;
Users report they have been able to use it under GNU/Linux, using [[Wikipedia:Mono (software)|Mono]], but in this scenario only WAV audio is supported, as other codecs are not yet ported to C#.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://www.cuetools.net/wiki/Main_Page Gregory S. Chudov’s official CUETools site] - by the current developer of CUETools&lt;br /&gt;
*[http://moitah.net/ Moitah&#039;s website] - Currently hosts stable (outdated) version 1.9.1;&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=50113 Original thread] - Original discussion;&lt;br /&gt;
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=66233 1.9.5 Development Thread] - Latest development version;&lt;br /&gt;
*[http://cuetoolsnet.svn.sourceforge.net/viewvc/cuetoolsnet/ SVN repository]&lt;br /&gt;
*[http://sourceforge.net/projects/cuetoolsnet Sourceforge project page]&lt;br /&gt;
*[http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;amp;displaylang=en .NET Framework 2.0 (x86) download]&lt;br /&gt;
*[http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&amp;amp;displaylang=en Visual C++ 2005 SP1 runtime (x86) download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Encoder/Decoder]]&lt;br /&gt;
[[Category:CD Rippers]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Titleformat_Examples&amp;diff=22833</id>
		<title>Foobar2000:Titleformat Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Titleformat_Examples&amp;diff=22833"/>
		<updated>2011-07-04T02:37:12Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Much-improved formatting, etc. and adding a new example by herojoker.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fb2k}}&lt;br /&gt;
These are some examples of general title format usage contributed by users. They may be of utility to others using Masstagger or other components. Feel free to sign up and contribute your own examples!&lt;br /&gt;
&lt;br /&gt;
Please make sure that you rejoin scripts that have been split into multiple lines before pasting them into the masstagger window. The reason that they are split is to keep this page&#039;s formatting readable in your browser.&lt;br /&gt;
&lt;br /&gt;
==Shorter examples==&lt;br /&gt;
&lt;br /&gt;
===Return corresponding tag field===&lt;br /&gt;
 %tag%&lt;br /&gt;
* Example: If artist field is &#039;&#039;blah&#039;&#039;, %artist% will return &#039;&#039;blah&#039;&#039;.&lt;br /&gt;
* Note: You can insert any character (or space) in between two tags, in front or after; so, if %artist% is &#039;&#039;blah&#039;&#039; and %title% is &#039;&#039;bleh&#039;&#039;: &#039;&#039;%artist%X%title%&#039;&#039; returns &#039;&#039;blahXbleh&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Trunctuate %tag% to a length of X characters===&lt;br /&gt;
 $cut(%tag%,X)&lt;br /&gt;
* Example: If artist field is &#039;&#039;blah&#039;&#039;, $cut(%artist%,3) returns &#039;&#039;bla&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Truncate %tag% by X characters, and add ... at the end of the cut===&lt;br /&gt;
 $cut(%tag%,X)...&lt;br /&gt;
* Example: If artist field is &#039;&#039;blah&#039;&#039;, &#039;&#039;$cut(%artist%,3)...&#039;&#039; returns &#039;&#039;bla...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Return numerical value of %tag%, and pad with 0s to X characters===&lt;br /&gt;
 $num(%tag%,X)&lt;br /&gt;
* Example: If %tracknumber% field is &#039;&#039;3&#039;&#039;, &#039;&#039;$num(%tracknumber%,2)&#039;&#039; will return &#039;&#039;03&#039;&#039;. If &#039;&#039;13&#039;&#039;, it will return &#039;&#039;13&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Return first two characters of a filename, and display as number (if present) padded with 0s to X characters===&lt;br /&gt;
 $num($left(%_filename%),2)&lt;br /&gt;
* Example: A filename of &#039;&#039;03_artist_title.mpc&#039;&#039; will return &#039;&#039;03&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Find first occurrence of character X in %tag%, and return everything in front of X===&lt;br /&gt;
 $puts(spacer,$strchr(%tag%,X))&lt;br /&gt;
 $trim($left(%tag%,$sub($get(spacer),1)))&lt;br /&gt;
* Example: &#039;&#039;blah X bleh&#039;&#039; or &#039;&#039;blah X bleh X bluh&#039;&#039; returns &#039;&#039;blah&#039;&#039; (ie.: artist_album_title -----&amp;gt; title, in case X is _ )&lt;br /&gt;
&lt;br /&gt;
==Longer examples==&lt;br /&gt;
&lt;br /&gt;
In the next few strings, I have decided to make it possible to define the %tag% that should be edited and the character or string that is used to determine where to trunctuate; these can be defined as variables in the beginning of the string as $puts(tag,%tag%), $puts(char,X), etc. Basically the reason I have done this is to make it simpler to edit these strings, to what you want them to do at that exact moment, in the rather narrow masstager input field. That way it is possible to enter the needed tags and characters only once in the beginning of the line. Again, simply replace %tag% and X by the desired values. Also all of these strings will trim off the trailing and leading spaces of the output (in case there are any).&lt;br /&gt;
&lt;br /&gt;
===Find first occurence of character X in %tag%, and return everything in front of X===&lt;br /&gt;
 $puts(char,X)$puts(tag,%tag%)$puts(spacer,$strchr($get(tag),$get(char)))&lt;br /&gt;
 $trim($left($get(tag),$sub($get(spacer),1)))&lt;br /&gt;
* Example: &#039;&#039;blah X bleh&#039;&#039; or &#039;&#039;blah X bleh X bluh&#039;&#039; returns &#039;&#039;blah&#039;&#039; (ie.: artist_album_title -----&amp;gt; title, in case X is _ )&lt;br /&gt;
* Note: this does exactly the same as the last string mentioned above, except for the introdution of the two variables in the front, meant for easy editing (see explanation above).&lt;br /&gt;
&lt;br /&gt;
===Find last occurence of character X in %tag%, and return everything in front of X===&lt;br /&gt;
 $puts(char,X)$puts(tag,%tag%)$puts(spacer,$strrchr($get(tag),$get(char)))&lt;br /&gt;
 $trim($left($get(tag),$sub($get(spacer),1)))&lt;br /&gt;
* Example: &#039;&#039;blah X bleh&#039;&#039; returns &#039;&#039;blah&#039;&#039;, and &#039;&#039;blah X bleh X bluh&#039;&#039; returns &#039;&#039;blah X bleh&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Find first occurence of character X in %tag% field, and return everything after X===&lt;br /&gt;
 $puts(char,X)$puts(tag,%tag%)$puts(spacer,$strchr($get(tag),$get(char)))&lt;br /&gt;
 $trim($right($get(tag),&lt;br /&gt;
 $sub($len($get(tag)),$get(spacer))))&lt;br /&gt;
* Example: &#039;&#039;blah X bleh&#039;&#039; returns &#039;&#039;bleh&#039;&#039;, and &#039;&#039;blah X bleh X bluh&#039;&#039; returns &#039;&#039;bleh X bluh&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Find last occurence of character X in %tag% field, and return everything after X===&lt;br /&gt;
 $puts(char,X)$puts(tag,%tag%)$puts(spacer,$strrchr($get(tag),$get(char)))&lt;br /&gt;
 $trim($right($get(tag),&lt;br /&gt;
 $sub($len($get(tag)),$get(spacer))))&lt;br /&gt;
* Example: &#039;&#039;blah X bleh&#039;&#039; returns &#039;&#039;bleh&#039;&#039;, and &#039;&#039;blah X bleh X bluh&#039;&#039; returns &#039;&#039;bluh&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Find first occurence of character X and last occurence of character Y, and return everything in-between===&lt;br /&gt;
 $puts(char1,X)$puts(char2,Y)$puts(tag,%tag%)&lt;br /&gt;
 $puts(spacer1,$strchr($get(tag),$get(char1)))&lt;br /&gt;
 $puts(spacer2,$strrchr($get(tag),$get(char2)))&lt;br /&gt;
 $trim($substr($get(tag),$add($get(spacer1),1),$sub($get(spacer2),1)))&lt;br /&gt;
* Example: &#039;&#039;blah X bleh Y bluh&#039;&#039; returns &#039;&#039;bleh&#039;&#039;&lt;br /&gt;
* Note: In most cases, &#039;&#039;X&#039;&#039; will probably be equal to &#039;&#039;y&#039;&#039; here.&lt;br /&gt;
&lt;br /&gt;
===Find first occurence of string XYZ, and return everything in front of string XYZ===&lt;br /&gt;
 $puts(string,XYZ)$puts(tag,%tag%)$puts(spacer,$strstr($get(tag),&lt;br /&gt;
 $get(string)))&lt;br /&gt;
 $trim($left($get(tag),$sub($get(spacer),1)))&lt;br /&gt;
* Example: &#039;&#039;blah XYZ bleh&#039;&#039; returns &#039;&#039;blah&#039;&#039;&lt;br /&gt;
* Note: String &#039;&#039;XYZ&#039;&#039; can basically be any combination of characters or words.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Find first occurence of string XYZ in %tag% field, and return everything after XYZ:===&lt;br /&gt;
 $puts(string,XYZ)$puts(tag,%tag%)&lt;br /&gt;
 $puts(spacer,$strstr($get(tag),$get(string)))&lt;br /&gt;
 $trim($right($get(tag),$sub($len($get(tag)),&lt;br /&gt;
 $add($get(spacer),$len($get(string))))))&lt;br /&gt;
* Example: &#039;&#039;blah XYZ bleh&#039;&#039; returns &#039;&#039;bleh&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Get everything between two strings of your choice===&lt;br /&gt;
&amp;lt;!-- Credit: herojoker in hydrogenaudio.org/forums/index.php?showtopic=89453 --&amp;gt;&lt;br /&gt;
Assuming a text accessible via %someTag% contains the strings &#039;&#039;&amp;lt;coolTag&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;blaTag&amp;gt;&#039;&#039;, in that order, you can get everything between them (e.g. &#039;&#039;xyz&#039;&#039; from &#039;&#039;&amp;lt;coolTag&amp;gt;xyz&amp;lt;blaTag&amp;gt;&#039;&#039;) using this code:&lt;br /&gt;
 $substr(%someTag%,$add($strstr(%someTag%,&amp;lt;coolTag&amp;gt;),$len(&amp;lt;coolTag&amp;gt;)),$sub($strstr(%someTag%,&amp;lt;blaTag&amp;gt;),1))&lt;br /&gt;
What does it do, and how?&lt;br /&gt;
* &#039;&#039;$substr(%someTag%,X,Y)&#039;&#039; yields everything of %someTag% from the Xth character to the Yth character. In this case we have:&lt;br /&gt;
* X = &#039;&#039;$add($strstr(%someTag%,&amp;lt;coolTag&amp;gt;),$len(&amp;lt;coolTag&amp;gt;))&#039;&#039;,&lt;br /&gt;
: i.e. the position of &#039;&#039;&amp;lt;coolTag&amp;gt;&#039;&#039; in %someTag% plus the length of the word &#039;&#039;&amp;lt;coolTag&amp;gt;&#039;&#039;&lt;br /&gt;
* Y = &#039;&#039;$sub($strstr(%someTag%,&amp;lt;blaTag&amp;gt;),1)&#039;&#039;&lt;br /&gt;
: i.e. the position of &#039;&#039;&amp;lt;blaTag&amp;gt;&#039;&#039; in %someTag% minus one; the subtraction is performed because otherwise the code would yield &#039;&#039;&amp;lt;&#039;&#039; (the first character of &#039;&#039;&amp;lt;blaTag&amp;gt;&#039;&#039;) as the last character of the output string.&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Advanced_Controls_(foo_advancedcontrols)&amp;diff=22824</id>
		<title>Foobar2000:Components/Advanced Controls (foo advancedcontrols)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Advanced_Controls_(foo_advancedcontrols)&amp;diff=22824"/>
		<updated>2011-06-25T12:59:00Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Correcting the download link to the foobar2000 rather than Winamp version and uncapitalising the former’s name…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Foobar2000_Advanced_Controls.png|thumb|Taskbar - main features of the component]]&lt;br /&gt;
[[Image:Foobar2000_Advanced_Controls_Preferences.png|thumb|Preferences dialog]]&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;foobar2000 Advanced Controls&#039;&#039;&#039; is a component for [[foobar2000]] (or [http://en.wikipedia.org/wiki/Winamp Winamp]) that enables the user to control all the playback functions of their chosen audio player using icons in the Windows Taskbar/notification area.&lt;br /&gt;
&lt;br /&gt;
In a very small space (2 icons), the user can access all the standard playback functions (Play/Pause, Stop, Load, Previous, Next) and a seek or volume bar. Right-clicking the icons brings up a context menu with all these functions, direct access to preferences, as well as a &#039;&#039;Delete current track&#039;&#039; command that sends the currently playing file to the Recycle Bin if possible and then skips to the next track of the playlist.&lt;br /&gt;
&lt;br /&gt;
The component also provides a pop-up balloon when a new song starts, displaying relevant [[metadata]] information from the audio file. The format of the pop-up balloon and the duration of time for which it is displayed are fully configurable.&lt;br /&gt;
&lt;br /&gt;
Advanced Controls adds a few hotkey possibilities to the foobar2000 interface: &#039;&#039;Show current song info&#039;&#039; (display the pop-up balloon), &#039;&#039;Delete current song&#039;&#039;, &#039;&#039;Reset icons&#039;&#039;, and an option to toggle the displayed control between volume and a seek slider.&lt;br /&gt;
&lt;br /&gt;
It also provide an option to automatically pause the music when the computer&#039;s screen saver starts.&lt;br /&gt;
&lt;br /&gt;
The tray icons can be skinned and a few different icon set are available for download.&lt;br /&gt;
&lt;br /&gt;
Thanks to the help of several contributors, the component is available in 20 languages (as of September 2010), all built in the same library. The language can be selected from the installer, or in the preferences dialog. The component text can thus be displayed in English, French, German, Spanish, Italian, Simplified Chinese, Russian, Czech, Danish, Estonian, Greek, Macedonian, Hungarian, Dutch, Polish, Brazilian Portuguese, Romanian, Slovak, Swedish, and Turkish.&lt;br /&gt;
&lt;br /&gt;
foobar2000 Advanced Controls had been tested on Windows XP, Windows Vista and Windows 7. The component behavior is slightly different on Windows 7 due major changes in the Windows Taskbar interaction possibilities, such as the drag &amp;amp; drop reordering of notification icons.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
* [http://www.niversoft.com/products/fac Official website]&lt;br /&gt;
* [http://www.niversoft.com/downloads/AdvancedControls-foo.zip Download foobar2000 component]&lt;br /&gt;
* [http://www.niversoft.com/downloads/?p=wsk Skins]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51089 Discussion thread on Hydrogenaudio]&lt;br /&gt;
&lt;br /&gt;
[[Category:foobar2000 Other Components|Advanced Controls]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
	<entry>
		<id>https://wiki.hydrogenaudio.org/index.php?title=EAC_Compression_Options_(Legacy)&amp;diff=22823</id>
		<title>EAC Compression Options (Legacy)</title>
		<link rel="alternate" type="text/html" href="https://wiki.hydrogenaudio.org/index.php?title=EAC_Compression_Options_(Legacy)&amp;diff=22823"/>
		<updated>2011-06-25T12:52:12Z</updated>

		<summary type="html">&lt;p&gt;Db1989: Correcting 1.0b2 command-line parameter; a few small edits that I hope improve clarity; adding some useful links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[Exact Audio Copy]]’s &#039;&#039;&#039;compression options&#039;&#039;&#039; dialog (keyboard shortcut: F11) are found all options regarding the creating of [http://en.wikipedia.org/wiki/Audio_compression_(data) compressed audio files]. Here the user specifies how EAC is to behave when they press the &#039;&#039;MP3&#039;&#039; Button in the main window or select &#039;&#039;compressed&#039;&#039; items under the &#039;&#039;Action&#039;&#039; menu.&lt;br /&gt;
&lt;br /&gt;
Note: many options are dependent on the codec or external compressor (encoder). So, often no clear recommendation can be given. It is important that the user has a general understanding of what these settings do and how they possibly change the behavior of EAC and/or the [[codec]]/external compressor.&lt;br /&gt;
&lt;br /&gt;
This article was recently updated to reflect changes introduced in EAC v1.0b2; however, the instructions for prior versions were retained for reference.&lt;br /&gt;
&lt;br /&gt;
=Waveform=&lt;br /&gt;
[[Image:EAC_Compression_options_Waveform.png|thumb|right|Example settings &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;Waveform&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab allows you to select and choose the options for an internal [[codec]]. After audio data is read from the CD, EAC will pass it to the codec, and will write the codec&#039;s output to a file. Generally speaking, EAC’s internal codec support is for writing unusual [[WAV]] files (e.g. containing audio in the [[Adaptive Differential Pulse Code Modulation|ADPCM]] format or as a rare way of storing [[MP3]] data), although the options do allow for writing other formats.&lt;br /&gt;
&lt;br /&gt;
An internal codec is a [[Constant Bitrate|CBR]] (constant bit rate) audio converter library managed through the Windows Audio Compression Manager (ACM) legacy interface, and it typically has a filename ending in &amp;lt;code&amp;gt;.acm&amp;lt;/code&amp;gt;. Windows comes with a few such codecs installed already. These aren’t programs you run directly; they’re just converters invoked from within another program, e.g. EAC.&lt;br /&gt;
&lt;br /&gt;
All options are greyed out here if &#039;&#039;Use external program for compression&#039;&#039; in the &#039;&#039;External Compression&#039;&#039; tab is ticked. When using an external compressor, you of course cannot use an internal codec.&lt;br /&gt;
&lt;br /&gt;
Today, most people ripping music CDs don&#039;t use internal codecs; they use an external compressor, which is configured in the &#039;&#039;External Compression&#039;&#039; tab. An external compressor is a separate program that can be run directly from a command shell with various arguments telling it which file to compress, what tags to add, the output filename, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Wave format&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In this drop down box, all codecs installed on your system are listed. When new codecs are installed, they should show up in this list. The codec to choose depends on what should be achieved with the compression (sample format, compression ratio, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Sample format&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
With this option, different combinations of parameters for the compression and output format can be chosen, such as sample rate, resolution, mono/stereo. Which options are available here depends on the codec selected at the &#039;&#039;Wave format&#039;&#039; option (e.g. some codecs only support 4 bit resolution).&lt;br /&gt;
&lt;br /&gt;
If you were to choose &#039;&#039;Microsoft PCM Converter&#039;&#039; as the codec, and &#039;&#039;44,100 Hz, 16 Bit, Stereo&#039;&#039; as the output format, it would be the same as doing an [http://en.wikipedia.org/wiki/Red_Book_(CD_standard) uncompressed CD rip].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Add ID3 tag&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some formats (e.g. [[MP3]]) support [[ID3|ID3 tags]]. When this option is enabled, EAC will add these tags to the compressed files (only if the file format supports ID3 tags).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Do not write WAV header to file&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The codec only converts the audio data. EAC writes it to a file. This parameter determines whether to include a WAV header in the file.&lt;br /&gt;
&lt;br /&gt;
Although it has become a &#039;&#039;de facto&#039;&#039; standard that WAV files contain 16 bit, 44.1 kHz stereo PCM audio data (as on audio CDs), what actually makes an audio file a WAV file is not the format of the audio data itself but the presence of a WAV header at its beginning. The header specifies which data chunk(s) are in the file (normally there&#039;s just a single chunk consisting of all the audio), info about what format it’s in, and possibly some other rudimentary metadata. When such a header is present, EAC will ensure the output filename ends with &amp;lt;code&amp;gt;.wav&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have chosen a codec that outputs PCM data, then you probably &#039;&#039;do&#039;&#039; want a WAV header and filename ending in &amp;lt;code&amp;gt;.wav&amp;lt;/code&amp;gt;, so this option should be enabled. But if you have chosen a codec that outputs MP3 or Ogg Vorbis data, then the WAV header is optional, and in fact is probably not what you want, unless you have a specific need to put the compressed audio into a WAV file.&lt;br /&gt;
&lt;br /&gt;
For example, if you choose an MP3 codec, and you have this option disabled, then you&#039;ll generate an ordinary MP3 file, and therefore you should enter &amp;lt;code&amp;gt;.mp3&amp;lt;/code&amp;gt; in the next box (&#039;&#039;file extension for headerless files&#039;&#039;) to make sure it has a helpful filename. But if you choose an MP3 codec and you have this option enabled, then you&#039;ll generate an MP3 file that begins with a WAV header, and the filename will end in &amp;lt;code&amp;gt;.wav&amp;lt;/code&amp;gt;, and is likely to be confusing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;File extension for header files&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: .raw)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When the &#039;&#039;Do not write WAV header to file&#039;&#039; option is enabled, a filename extension for the output files can be specified here (e.g. &#039;&#039;.mp3&#039;&#039; for MP3 files). If the above option is disabled, this setting gets greyed out automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Quality setting&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: High quality (slow), &#039;&#039;&#039;Recommended: High quality (slow)&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some codecs support a quality setting to choose between a higher quality of the output files or faster encoding speed. If quality is the only matter, leave this option at the default, which is &#039;&#039;High quality (slow)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When using a &#039;&#039;User defined encoder&#039;&#039;, you can demarcate any portion of your custom command line as being for low- (delimit the chosen parameters with &#039;&#039;%l&#039;&#039;) and high-quality (similar but with &#039;&#039;%h&#039;&#039;) modes only and use this option to choose between the two.&lt;br /&gt;
&lt;br /&gt;
Note: EAC offers this choice of quality settings even if the selected codec doesn&#039;t use it.&lt;br /&gt;
&lt;br /&gt;
=External compression=&lt;br /&gt;
[[Image:EAC_Compression_options_External_Compression.png|thumb|right|Recommended settings EAC &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;External Compression&#039;&#039;&#039; tab]]&lt;br /&gt;
In this tab, all options for external compressors can be configured. As all settings are highly dependent on the particular compressor, most settings are only described here in general terms because often no specific recommendations can be given; but see the many [[:Category:EAC Guides|EAC guides]] (also linked below) written by Hydrogenaudio users for in-depth advice on topics including configuring various external encoders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;General recommendation:&#039;&#039;&#039;&#039;&#039; To avoid unwanted side effects and to be able to configure the encoding process in every detail, &#039;&#039;User Defined Encoder&#039;&#039; should be used as &#039;&#039;Parameter passing scheme&#039;&#039; and all options should be specified via the &#039;&#039;Additional command-line options&#039;&#039; only.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Side effects&amp;quot; basically means that it is a little complex what options have which effect when another &#039;&#039;Parameter passing scheme&#039;&#039; is specified (e.g. some settings are ignored completely). These side effects are explained in the following parameters, but specifying &#039;&#039;User Defined Encoder&#039;&#039; and using the command-line options only is a lot more convenient.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, there are also a few articles with details about how to configure EAC to use particular encoders:&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_FLAC EAC and FLAC]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Lame EAC and LAME]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_AAC EAC and Nero AAC] &lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Ogg_Vorbis EAC and OGG Vorbis]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_WavPack EAC and WavPack]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Monkey%27s_Audio EAC and Monkey&#039;s Audio]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_Musepack EAC and Musepack]&lt;br /&gt;
* [http://wiki.hydrogenaudio.org/index.php?title=EAC_and_TAK EAC and] [[TAK]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use external program for compression&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To use an external compressor, this setting has to be enabled; otherwise, all the options here are greyed out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Parameter passing scheme&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
EAC comes with a few presets concerning external compressors and the required parameter passing scheme; they can be selected with this option (e.g. the &#039;&#039;Bit rate&#039;&#039; box will show all available options after a particular compressor was chosen here). But in general, the capabilities of EAC in passing parameters to external compressors are limited. In order to overcome some of these limitations, you can and should use the &#039;&#039;Additional command-line options&#039;&#039; for to pass parameters. The usual approach is setting the &#039;&#039;Parameter passing scheme&#039;&#039; to &#039;&#039;User Defined Encoder&#039;&#039; and using the &#039;&#039;Additional command-line options&#039;&#039; to specify all the encoding options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use file extension&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When using a &#039;&#039;User Defined Encoder&#039;&#039; as above, a file extension must be specified here. This should be the extension of the encoded file type (e.g. &#039;&#039;.flac&#039;&#039; when using a [[FLAC]] encoder and &#039;&#039;mp3&#039;&#039; when encoding to [[MP3]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Program, including path, used for compression&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The absolute path to the program used for compression. This may be an .exe or a .dll file (e.g. &#039;&#039;C:\Program Files\[[LAME]]\lame.exe&#039;&#039;). By clicking on the &#039;&#039;Browse...&#039;&#039; button, this path can be chosen by a file dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Additional command-line options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here additional parameters for the external compressor can be specified. To configure the additional command-line options, you can use the following placeholders (taken from the [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ]):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ For EAC 1.0 beta 2 and newer&lt;br /&gt;
|-&lt;br /&gt;
! placeholder&lt;br /&gt;
! meaning&lt;br /&gt;
|-&lt;br /&gt;
| %source% || Source filename&lt;br /&gt;
|-&lt;br /&gt;
| %dest% || Destination filename&lt;br /&gt;
|-&lt;br /&gt;
| %original% || Original filename (without temporary renaming)&lt;br /&gt;
|-&lt;br /&gt;
| %ishigh%…%ishigh% || Text “…” only when “High quality” selected&lt;br /&gt;
|-&lt;br /&gt;
| %islow%…%islow% || Text “…” only when “Low quality” selected&lt;br /&gt;
|-&lt;br /&gt;
| %haslyrics%…%haslyrics% || Text “…” only when lyrics exist&lt;br /&gt;
|-&lt;br /&gt;
| %hascover%…%hascover% || Text “…” only when storing cd cover is enabled and cover exists&lt;br /&gt;
|-&lt;br /&gt;
| %crcenabled%…%crcenabled% || Text “…” only when “CRC checksum” selected&lt;br /&gt;
|-&lt;br /&gt;
| %title% || Track title&lt;br /&gt;
|-&lt;br /&gt;
| %genre% || MP3 music genre&lt;br /&gt;
|-&lt;br /&gt;
| %year% || Year&lt;br /&gt;
|-&lt;br /&gt;
| %cddbid% || freedb ID&lt;br /&gt;
|-&lt;br /&gt;
| %artist% || Track artist&lt;br /&gt;
|-&lt;br /&gt;
| %lyrics% || Lyrics&lt;br /&gt;
|-&lt;br /&gt;
| %lyricsfile% || Filename of lyrics text file (ANSI)&lt;br /&gt;
|-&lt;br /&gt;
| %bitrate% || Bitrate (“32″..”320″)&lt;br /&gt;
|-&lt;br /&gt;
| %comment% || Comment (as selected in EAC)&lt;br /&gt;
|-&lt;br /&gt;
| %tracknr% || Track number&lt;br /&gt;
|-&lt;br /&gt;
| %totalcds% || Total number of CDs in the given CD set&lt;br /&gt;
|-&lt;br /&gt;
| %cdnumber% || Number of the CD&lt;br /&gt;
|-&lt;br /&gt;
| %composer% || Track performer&lt;br /&gt;
|-&lt;br /&gt;
| %trackcrc% || CRC of extracted track&lt;br /&gt;
|-&lt;br /&gt;
| %coverfile% || Filename of CD cover image&lt;br /&gt;
|-&lt;br /&gt;
| %numtracks% || Number of tracks on album&lt;br /&gt;
|-&lt;br /&gt;
| %albumtitle% || CD title&lt;br /&gt;
|-&lt;br /&gt;
| %albumartist% || CD artist&lt;br /&gt;
|-&lt;br /&gt;
| %albumcomposer% || CD composer&lt;br /&gt;
|-&lt;br /&gt;
| %albuminterpret% ||– CD performer&lt;br /&gt;
|-&lt;br /&gt;
| %% || The ‘%’ character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So, an exemplary EAC 1.0b2 or newer command-line for the [[LAME]] MP3 encoder could look like this :&lt;br /&gt;
&amp;lt;pre&amp;gt;-V 0 --vbr-new --ta &amp;quot;%artist%&amp;quot; --tt &amp;quot;%title%&amp;quot; --tl &amp;quot;%albumtitle%&amp;quot; --tg &amp;quot;%genre%&amp;quot; --ty &amp;quot;%year%&amp;quot; --tn &amp;quot;%tracknr%&amp;quot; --tc &amp;quot;%comment%&amp;quot; %source% %dest%&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the command-line options of LAME (e.g. &amp;lt;code&amp;gt;-V 0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--ta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--tt&amp;lt;/code&amp;gt;, etc.) are used in conjunction with the EAC placeholders (e.g. &amp;lt;code&amp;gt;%artist%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%title%&amp;lt;/code&amp;gt;, etc.) to control LAME using this command-line.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ For EAC 1.0 beta 1 and older&lt;br /&gt;
|-&lt;br /&gt;
! placeholder&lt;br /&gt;
! meaning&lt;br /&gt;
|-&lt;br /&gt;
| %s&lt;br /&gt;
| Source filename&lt;br /&gt;
|-&lt;br /&gt;
| %d&lt;br /&gt;
| Destination filename&lt;br /&gt;
|-&lt;br /&gt;
| %h...%h&lt;br /&gt;
| Text &amp;quot;...&amp;quot; only when &#039;&#039;High quality&#039;&#039; selected&lt;br /&gt;
|-&lt;br /&gt;
| %l...%l&lt;br /&gt;
| Text &amp;quot;...&amp;quot; only when &#039;&#039;Low quality&#039;&#039; selected&lt;br /&gt;
|-&lt;br /&gt;
| %c...%c&lt;br /&gt;
| Text &amp;quot;...&amp;quot; only when &#039;&#039;CRC checksum&#039;&#039; selected&lt;br /&gt;
|-&lt;br /&gt;
| %r&lt;br /&gt;
| Bitrate (&amp;quot;32&amp;quot;..&amp;quot;320&amp;quot;) as chosen in the &#039;&#039;Bit rate&#039;&#039; option&lt;br /&gt;
|-&lt;br /&gt;
| %a&lt;br /&gt;
| CD artist&lt;br /&gt;
|-&lt;br /&gt;
| %g&lt;br /&gt;
| CD title&lt;br /&gt;
|-&lt;br /&gt;
| %t&lt;br /&gt;
| Track title&lt;br /&gt;
|-&lt;br /&gt;
| %y&lt;br /&gt;
| Year&lt;br /&gt;
|-&lt;br /&gt;
| %n&lt;br /&gt;
| Track number&lt;br /&gt;
|-&lt;br /&gt;
| %m&lt;br /&gt;
| MP3 music genre&lt;br /&gt;
|-&lt;br /&gt;
| %o&lt;br /&gt;
| Original filename (without temporary renaming)&lt;br /&gt;
|-&lt;br /&gt;
| %e&lt;br /&gt;
| Comment (as selected in EAC)&lt;br /&gt;
|-&lt;br /&gt;
| %b&lt;br /&gt;
| CRC of extracted track&lt;br /&gt;
|-&lt;br /&gt;
| %f&lt;br /&gt;
| freedb ID&lt;br /&gt;
|-&lt;br /&gt;
| %x&lt;br /&gt;
| Number of tracks on album&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So, an exemplary EAC 1.0b1 or earlier command-line for the [[LAME]] MP3 encoder could look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;-V 0 --vbr-new --ta &amp;quot;%a&amp;quot; --tt &amp;quot;%t&amp;quot; --tl &amp;quot;%g&amp;quot; --tg &amp;quot;%m&amp;quot; --ty &amp;quot;%y&amp;quot; --tn &amp;quot;%n&amp;quot; --tc &amp;quot;%e&amp;quot; %s %d&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the command-line options of LAME (e.g. &amp;lt;code&amp;gt;-V 0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--ta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--tt&amp;lt;/code&amp;gt;, etc.) are used in conjunction with the EAC placeholders (e.g. &amp;lt;code&amp;gt;%a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%t&amp;lt;/code&amp;gt;, etc.) to control LAME only by this command-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Bit rate&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
What is shown in this drop-down box depends on the &#039;&#039;Parameter passing scheme&#039;&#039; selected and specifies the bit rate/quality settings of the external compressor.  This setting is also used to calculate the approximate size of the compressed tracks shown in EAC&#039;s main window.&lt;br /&gt;
&lt;br /&gt;
In the case that &#039;&#039;User Defined Encoder&#039;&#039; is selected as the &#039;&#039;Parameter passing scheme&#039;&#039;, this setting does not have an effect unless the &amp;lt;code&amp;gt;%r&amp;lt;/code&amp;gt; parameter is specified in the &#039;&#039;Additional command-line options&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Quality setting&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: High quality, &#039;&#039;&#039;Recommended: High quality&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Many encoders offer the choice between better quality or faster encoding speed. This option is designated to choose between these two settings, but the precise behavior depends on what is selected on the &#039;&#039;Parameter passing scheme&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;User Defined Encoder&#039;&#039; is chosen, this option does not have an effect unless the &amp;lt;code&amp;gt;%h…%h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%l…%l&amp;lt;/code&amp;gt; parameters are used in the &#039;&#039;Additional command-line options&#039;&#039; (see below).&lt;br /&gt;
&lt;br /&gt;
When any other &#039;&#039;Parameter passing scheme&#039;&#039; is used, this setting is reflected on the particular encoder. When using LAME for instance, &#039;&#039;High quality&#039;&#039; corresponds to the &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt; switch, whereas &#039;&#039;Low quality&#039;&#039; uses the &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt; switch (in this case, these switches specify the &amp;quot;Noise shaping and psycho acoustic algorithms&amp;quot;, means choice between quality and encoding speed). This is another reason that it is advisable to use a completely custom &#039;&#039;User defined encoder&#039;&#039;; but if you &#039;&#039;do&#039;&#039; use another scheme, you will probably want to ensure that &#039;&#039;High quality&#039;&#039; is selected.&lt;br /&gt;
&lt;br /&gt;
As already mentioned above, with this setting it is also possible to configure the &#039;&#039;Additional command-line option&#039;&#039; even further: by delimiting chosen portions of your command line with the placeholders &amp;lt;code&amp;gt;%h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%l&amp;lt;/code&amp;gt;, you can specify two alternate settings for the external compressor to use depending on this option. The following example (simplified) shows how to use this feature (again with LAME):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;%h-V0%h%l-V5%l --vbr-new %s %d&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, if the &#039;&#039;High quality&#039;&#039; option is chosen, LAME will encode with &amp;lt;code&amp;gt;-V0&amp;lt;/code&amp;gt;; whereas it will encode at &amp;lt;code&amp;gt;-V5&amp;lt;/code&amp;gt; when &#039;&#039;Low quality&#039;&#039; is selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Delete WAV after compression&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If this setting is enabled, EAC automatically deletes the extracted WAV file after compression. If you do not need these files (of course the compressed files are kept) after extraction/compression, leave this option enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use CRC check&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some encoders have the ability to store a [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC] checksum (cyclic redundancy check) in the resulting (compressed) file. This might be used then to check the consistency of this file during playback. But enabling this CRC check has two major drawbacks: First, this will add 16 bits (the CRC value) on every frame of the encoded file and will possibly increase the file size considerably. Second, many encoders do not support this feature very well because of calculating wrong CRC checksums. So usually players will simply ignore this information. This option also has no effect at all when selected &#039;&#039;User Defined Encoder&#039;&#039; at the &#039;&#039;Parameter passing scheme&#039;&#039;. Thus having more disadvantages, it is generally recommended to disable this option regardless of the encoder used.&lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;User Defined Encoder&#039;&#039; is chosen, this setting allows additional parameters to take effect using the &amp;lt;code&amp;gt;%c...%c&amp;lt;/code&amp;gt; placeholder, otherwise it has no effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Add ID3 tag&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this option is enabled, EAC writes [[ID3]] tags to the compressed files.  Make sure only to use this setting with mp3 files.  Formats such as flac, TAK, WavPack, Monkey&#039;s Audio and Ogg Vorbis were not intended to use ID3 tags and adding such tags may cause problems.&lt;br /&gt;
&lt;br /&gt;
Another possibility to include ID3 tagging is to use the external compressor itself to tag the resulting files. This would be done via the &#039;&#039;Additional command-line options&#039;&#039;. Indeed, it is recommended to use this where available, as seen in the above example command lines for LAME. (If this option is enabled &#039;&#039;and&#039;&#039; tagging instructions are included in the command line, the latter have no effect because EAC immediately overwrites the tags written by the encoder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Check for external programs return code&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this setting is enabled, EAC checks the return code of an external compressor. When the external compressor returns an error code (e.g. because of a wrong command-line parameter was used), EAC shows this error message in a dialog box. So, it’s recommended to enable this option in order to diagnose any errors.&lt;br /&gt;
&lt;br /&gt;
=Offset=&lt;br /&gt;
[[Image:EAC_Compression_options_Offset.png|thumb|right|Recommended settings EAC &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;Offset&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab offers options regarding offset correction during encoding/decoding and the ID3 tag comment field.&lt;br /&gt;
&lt;br /&gt;
Note: The offset mentioned here has nothing to do with a [[Exact Audio Copy#Offset technology|drive offset]] and therefore should not be mistaken for the latter. In addition, most popular encoders now have their own built-in compensation for encoding offsets, and certain decoders can use this to eliminate any unwanted gaps; in such cases, these options are unnecessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use Offset Correction for encoding and decoding&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some encoders will have an offset when encoding. This means that at the beginning of a track they often add some silence, whereas a few samples could be missing at the end. When decoding again, this could result in some unwanted gaps. This options offers now the opportunity to correct this encoding/decoding offset so that the original file can be reconstructed (at least concerning correct beginning/end of a track; with [[Lossy|lossy]] formats the original file can not be reconstructed completely). The point behind this option is that is possible that there is such an offset between the codec which is used for encoding (the actual codec) and the other one used for decoding (default installed codec). An example would be using [[LAME]] for MP3 encoding and the Fraunhofer codec for decoding. In this case, this option would be useful.&lt;br /&gt;
&lt;br /&gt;
So, if you decode your encoded files and experience some unwanted gaps in the decoded files, then you should try to enable this option and configure it accordingly (see below). In all other cases, leave this option disabled—especially when you encode and decode with the same encoder or, as noted above, programs that themselves account for encoding/decoding delay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Sample offset&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: 0)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When enabling the option &#039;&#039;Use Offset Correction for encoding and decoding&#039;&#039;, a sample offset has to be entered here. With a click on the button &#039;&#039;Detect Offset...&#039;&#039; the correct offset can be recognized automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use LAME command-line encoder/decoder for decoding MP3 files&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option is usually greyed out. To make it available, a [[LAME]] executable (lame.exe) has to be placed in the EAC directory. This has to be done manually.&lt;br /&gt;
&lt;br /&gt;
If this option is enabled then, LAME is used automatically to decode MP3 files (&#039;&#039;Tools&#039;&#039; -&amp;gt; &#039;&#039;Decompress...&#039;&#039;). This overrides EAC&#039;s behavior which uses the Fraunhofer codec for MP3 decoding by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Construction of the ID3 tag comment field on extraction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When the option &#039;&#039;Add [[ID3]] tag&#039;&#039; in the &#039;&#039;External Compression&#039;&#039; tab is enabled, this setting specifies what information should be stored in the comment field. When EAC is not used to tag compressed files and tagging is completely done via command-line parameters, this setting specifies the contents of the &amp;quot;%e&amp;quot; placeholder, which can then be included in the command line of each newly encoded file. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Write &amp;quot;Track &amp;lt;tracknumber&amp;gt;&amp;quot; into ID3 tag comment field&#039;&#039;&#039; &#039;&#039;(Default: enabled)&#039;&#039;: track number is written into the comment field.&lt;br /&gt;
* &#039;&#039;&#039;Write CRC checksums into ID3 tag comment field&#039;&#039;&#039;: a [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC checksum] is written into the comment field.&lt;br /&gt;
* &#039;&#039;&#039;Write freedb ID into ID3 tag comment field&#039;&#039;&#039;: a [http://en.wikipedia.org/wiki/Freedb freedb] ID is written into the comment field.&lt;br /&gt;
* &#039;&#039;&#039;Write following text into ID3 tag comment field&#039;&#039;&#039;: text of your own choice is written into the comment field.&lt;br /&gt;
&lt;br /&gt;
=ID3 Tag=&lt;br /&gt;
[[Image:EAC_Compression_options_ID3_Tag.png|thumb|right|Recommended settings EAC &#039;&#039;&#039;compression options&#039;&#039;&#039;, &#039;&#039;&#039;ID3 Tag&#039;&#039;&#039; tab]]&lt;br /&gt;
This tab offers some options regarding the [[ID3]] [[tag]]ging capabilities of EAC. Note that the option &#039;&#039;Add ID3 tag&#039;&#039; in the &#039;&#039;External Compression&#039;&#039; tab has to be enabled for all these settings to have an effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use ID3v1.1 tags instead of ID3v1.0 tags&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When this option is enabled, [[ID3v1.1]] tags are used instead of [[ID3v1|ID3v1.0]] tags. The only difference between the two is that the former can additionally store a track number. Because most players are capable of reading ID3v1.1 tags, it is recommended to enable this option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Additionally write ID3v2 tags, using a padding of X kB&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled/4, &#039;&#039;&#039;Recommended: enabled/4&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With this option enabled, EAC writes [[ID3v2]] (ID3v2.3) tags to the encoded files, in addition to the ID3v1 tags. Because ID3v2 tags have a lot advantages over ID3v1 tags (e.g. [http://en.wikipedia.org/wiki/Unicode Unicode]] support) and are supported by most players, it is recommended to enable this option.&lt;br /&gt;
&lt;br /&gt;
As ID3v2 tags are usually placed in front of a file, there may be a problem with altering or adding tags once the file is written. If tags are added or existing tags are becoming bigger, the ID3 chunk in a file will need some more space. In the worst case, the whole audio file has to be rewritten, which may be time consuming.&lt;br /&gt;
&lt;br /&gt;
This is where padding comes into play. When using padding, some additional space is added to the file while encoding to store such added or growing tags. In this case, the file does not have to be rewrittten completely, only this additional padding space is used when tags are added or altered. This makes adding/altering tags a lot more convenient and faster. The only disadvantage of padding is that the encoded files are a little bigger. EAC suggests a padding size of 4 KB. This means that every encoded file will be 4 KB bigger in size compared to a file which does not use padding. So if it is likely that you change or add some tags after the file has been created, then you should leave this option at 4 KB (or fit it your needs). If saving space (e.g. for mobile usage) is more important for you, then you can set this setting to 0 KB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use ID3v2.4.0 tags instead of ID3v2.3.0 tags&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: disabled, &#039;&#039;&#039;Recommended: disabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ID3v2.4 is the latest development of this standard and has a few advantages over ID3v2.3 (e.g. allows usage of [http://en.wikipedia.org/wiki/UTF-8 UTF-8] character encoding). However, there was a bug in EAC that no ID3v2.4 can be written: in fact, when this option is enabled, EAC does not write any ID3v2 tags at all, so it is recommended to leave this option disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Is the above still valid for newer versions? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Use track format xx/xx in ID3v2 tags (e.g. 01/16)&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: enabled, &#039;&#039;&#039;Recommended: enabled&#039;&#039;&#039;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ID3v1 is only able to store the track number itself (e.g. &amp;quot;05&amp;quot;). With ID3v2 it is possible to store also the number of total tracks (e.g. &amp;quot;05/15&amp;quot;). If you wish to keep this information with your files, leave this option enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Construction of filenames from ID3 tags&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;(Default: %T - %A)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This option specifies how file names are constructed from ID3 tags when using the rename feature of EAC (&#039;&#039;Tools&#039;&#039; -&amp;gt; &#039;&#039;Rename From ID3 Tags...&#039;&#039;). You can use placeholder to build up the filename.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
* [http://www.exactaudiocopy.de/en/index.php/support/faq/ EAC FAQ (placeholders for command-line options)]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cyclic_redundancy_check Wikipedia: &lt;br /&gt;
* [http://www.sonicspot.com/guide/wavefiles.html The Sonic Spot: Wave File Format]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Resource_Interchange_File_Format Wikipedia: Resource Interchange File Format]Cyclic redundancy check]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Id3 Wikipedia: ID3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:EAC Guides]]&lt;/div&gt;</summary>
		<author><name>Db1989</name></author>
	</entry>
</feed>