https://wiki.hydrogenaud.io/api.php?action=feedcontributions&user=Foosion&feedformat=atomHydrogenaudio Knowledgebase - User contributions [en]2024-03-28T11:03:17ZUser contributionsMediaWiki 1.22.7https://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-31T23:32:45Z<p>Foosion: Added Examples section for custom grouping schemes.</p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to manage custom columns and grouping schemes for the Playlist View of the Default User Interface.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page [[Foobar2000:Preferences:Default User Interface:Colors and Fonts|Colors and Fonts]] for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Text with markup || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >weakly highlighted< || style="background: #ffffff; color: #000055;" | weakly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <weakly dimmed> || style="background: #ffffff; color: #404040;" | weakly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
=== Examples ===<br />
<br />
==== Duration with Milliseconds ====<br />
<br />
A custom column to display the duration. This is just like the built-in "Duration" column but displays milliseconds as well.<br />
; Name : Duration (ms)<br />
; Pattern : <code>%length_ex</code><br />
; Alignment : right<br />
<br />
==== Disc and Track Number ====<br />
<br />
A custom column to display the track number, with disc number (if available), and an indicator of whether the track is currently playing. The spaces in the pattern are important. The musical note character (&#x266b;) is only supported in some fonts. If you don't want to change your font you could replace it with a large bullet (•).<br />
; Name : Track no (extended)<br />
; Pattern : <code>$if(%isplaying%,$char(9835) )[%discnumber% | ][%tracknumber%]</code><br />
; Alignment : right<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
Custom grouping schemes are user-configured grouping schemes which can be used in the Playlist View of the Default User Interface in addition to the built-in grouping schemes. A grouping scheme defines how ttracks in the playlist are grouped together and what the names of the groups are. The table in the lower part of the preferences page contains the configured grouping schemes. Each row represents a grouping scheme which is defined by two properties.<br />
<br />
;Name<br />
: The name of the grouping scheme is displayed in the context menu of the Playlist View header. A custom grouping scheme can have the same name as a built-in grouping scheme or as another custom grouping scheme. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the name of the groups. This expression is evaluated for each track in the playlist. Neighboring tracks with the same result will be displayed as a single group. The result is displayed as the group header. Note that dimming and highlighting is not available for group headers. They are always displayed in the highlight color. Also note that the pattern can only access information from the tracks themselves. The special fields <code>%list_total%</code> and <code>%list_index%</code> are undefined when used in a custom grouping scheme.<br />
<br />
The built-in grouping schemes are hard-coded in the Default User Interface and cannot be changed.<br />
<br />
=== Editing Custom Grouping Schemes ===<br />
<br />
The following editing functions are available for custom custum grouping schemes. Some functions can be accessed through the context menu of the custom grouping schemes table or through keyboard shortcuts when the custom grouping schemes table has the focus.<br />
<br />
; Add a custom grouping scheme<br />
: Click the "Add New" button above the custom grouping scheme table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added grouping scheme.<br />
; Remove a custom colum<br />
: Click the "Remove" button above the custom grouping scheme table to remove the selected custom grouping scheme. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
; Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
; Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
<br />
=== Examples ===<br />
<br />
==== Albums, single tracks and streams ====<br />
A grouping scheme to have separate groups for Internet streams, songs with album tags, and songs without album tags.<br />
; Pattern : <code>$if($stricmp($left(%path%,7),'http&#58;//'),Internet streams,$if2(%album artist%,Non-album tracks)[ – %album%])</code><br />
<br />
== Links ==<br />
<br />
* [[Foobar2000:Title Formatting Reference]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-31T23:14:48Z<p>Foosion: Added Examples section for custom columns.</p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to manage custom columns and grouping schemes for the Playlist View of the Default User Interface.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page [[Foobar2000:Preferences:Default User Interface:Colors and Fonts|Colors and Fonts]] for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Text with markup || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >weakly highlighted< || style="background: #ffffff; color: #000055;" | weakly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <weakly dimmed> || style="background: #ffffff; color: #404040;" | weakly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
=== Examples ===<br />
<br />
==== Duration with Milliseconds ====<br />
<br />
A custom column to display the duration. This is just like the built-in "Duration" column but displays milliseconds as well.<br />
; Name : Duration (ms)<br />
; Pattern : <code>%length_ex</code><br />
; Alignment : right<br />
<br />
==== Disc and Track Number ====<br />
<br />
A custom column to display the track number, with disc number (if available), and an indicator of whether the track is currently playing. The spaces in the pattern are important. The musical note character (&#x266b;) is only supported in some fonts. If you don't want to change your font you could replace it with a large bullet (•).<br />
; Name : Track no (extended)<br />
; Pattern : <code>$if(%isplaying%,$char(9835) )[%discnumber% | ][%tracknumber%]</code><br />
; Alignment : right<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
Custom grouping schemes are user-configured grouping schemes which can be used in the Playlist View of the Default User Interface in addition to the built-in grouping schemes. A grouping scheme defines how ttracks in the playlist are grouped together and what the names of the groups are. The table in the lower part of the preferences page contains the configured grouping schemes. Each row represents a grouping scheme which is defined by two properties.<br />
<br />
;Name<br />
: The name of the grouping scheme is displayed in the context menu of the Playlist View header. A custom grouping scheme can have the same name as a built-in grouping scheme or as another custom grouping scheme. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the name of the groups. This expression is evaluated for each track in the playlist. Neighboring tracks with the same result will be displayed as a single group. The result is displayed as the group header. Note that dimming and highlighting is not available for group headers. They are always displayed in the highlight color. Also note that the pattern can only access information from the tracks themselves. The special fields <code>%list_total%</code> and <code>%list_index%</code> are undefined when used in a custom grouping scheme.<br />
<br />
The built-in grouping schemes are hard-coded in the Default User Interface and cannot be changed.<br />
<br />
=== Editing Custom Grouping Schemes ===<br />
<br />
The following editing functions are available for custom custum grouping schemes. Some functions can be accessed through the context menu of the custom grouping schemes table or through keyboard shortcuts when the custom grouping schemes table has the focus.<br />
<br />
; Add a custom grouping scheme<br />
: Click the "Add New" button above the custom grouping scheme table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added grouping scheme.<br />
; Remove a custom colum<br />
: Click the "Remove" button above the custom grouping scheme table to remove the selected custom grouping scheme. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
; Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
; Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
<br />
== Links ==<br />
<br />
* [[Foobar2000:Title Formatting Reference]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-31T22:52:46Z<p>Foosion: Removed obsolete sections.</p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to manage custom columns and grouping schemes for the Playlist View of the Default User Interface.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page [[Foobar2000:Preferences:Default User Interface:Colors and Fonts|Colors and Fonts]] for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Text with markup || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >weakly highlighted< || style="background: #ffffff; color: #000055;" | weakly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <weakly dimmed> || style="background: #ffffff; color: #404040;" | weakly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
Custom grouping schemes are user-configured grouping schemes which can be used in the Playlist View of the Default User Interface in addition to the built-in grouping schemes. A grouping scheme defines how ttracks in the playlist are grouped together and what the names of the groups are. The table in the lower part of the preferences page contains the configured grouping schemes. Each row represents a grouping scheme which is defined by two properties.<br />
<br />
;Name<br />
: The name of the grouping scheme is displayed in the context menu of the Playlist View header. A custom grouping scheme can have the same name as a built-in grouping scheme or as another custom grouping scheme. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the name of the groups. This expression is evaluated for each track in the playlist. Neighboring tracks with the same result will be displayed as a single group. The result is displayed as the group header. Note that dimming and highlighting is not available for group headers. They are always displayed in the highlight color. Also note that the pattern can only access information from the tracks themselves. The special fields <code>%list_total%</code> and <code>%list_index%</code> are undefined when used in a custom grouping scheme.<br />
<br />
The built-in grouping schemes are hard-coded in the Default User Interface and cannot be changed.<br />
<br />
=== Editing Custom Grouping Schemes ===<br />
<br />
The following editing functions are available for custom custum grouping schemes. Some functions can be accessed through the context menu of the custom grouping schemes table or through keyboard shortcuts when the custom grouping schemes table has the focus.<br />
<br />
; Add a custom grouping scheme<br />
: Click the "Add New" button above the custom grouping scheme table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added grouping scheme.<br />
; Remove a custom colum<br />
: Click the "Remove" button above the custom grouping scheme table to remove the selected custom grouping scheme. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
; Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
; Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
<br />
== Links ==<br />
<br />
* [[Foobar2000:Title Formatting Reference]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Query_syntaxFoobar2000:Query syntax2014-05-31T22:39:49Z<p>Foosion: /* Summary of operators */ Word order.</p>
<hr />
<div>This page details the syntax that can be used to query for files within the Media Library in [[Foobar2000:Foobar2000|foobar2000]].<br />
<br />
For a list of fields and functions that can be used in query syntax, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]].<br />
<br />
==Conventions in this document==<br />
<br />
===Formatting===<br />
Query syntax includes various keywords, also called operators, which invoke specific behaviours. These must be typed in caps, for example DURING.<br />
<br />
To aid readability, in the following descriptions and examples, example queries (or fragments thereof) that the user could type into foobar2000 are written in ''italics''. In addition, operators are written in '''bold'''. Such formatting is for readability only and need not/cannot be typed in foobar2000 itself.<br />
<br />
===Placeholders===<br />
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.<br />
* Example: ''&lt;field&gt; '''GREATER''' &lt;number&gt;''<br />
<br />
The following common placeholders are used throughout this document: <br />
* &lt;field&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. "%artist%"). See the [[Foobar2000:Query_syntax#Guidelines|Guidelines]] below for details on these two methods of accessing fields.<br />
* &lt;number&gt; – An integer value (whole number).<br />
* &lt;string&gt; – A text value, which may be enclosed in double quotation marks. See the Guidelines for details.<br />
* &lt;time&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.<br />
* &lt;expression&gt; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.<br />
<br />
==Simple search==<br />
The simple search mode does not use any keywords or functions: it is only used to search for a literal string within the Library.<br />
* ''&lt;any string&gt;'' – Returns only items that have all words from the specified string within their metadata and/or file path.<br />
<br />
==Advanced search==<br />
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.<br />
<br />
===Text expressions===<br />
* ''&lt;field&gt; '''HAS''' &lt;string&gt;'' – Returns only items that have all words from &lt;string&gt; in metadata field named &lt;field&gt;. Example: ''title '''HAS''' blah''<br />
* ''&lt;field&gt; '''IS''' &lt;string&gt;'' – Returns only items where (at least one) metadata field &lt;field&gt; is equal to &lt;string&gt;. Example: ''artist '''IS''' blah''<br />
* '''''*HAS''' &lt;string&gt; – Same as simple search, but can be combined using logical operators (see below).<br />
* '''''ALL''''' - No operators can be used. This single keyword simply returns all items within the Media Library.<br />
<br />
===Numeric expressions===<br />
Performs integral number comparison between the value of a &lt;field&gt; and a &lt;number&gt;. For example: ''rating '''GREATER''' 3''<br />
* ''&lt;field&gt; '''GREATER''' &lt;number&gt;''<br />
* ''&lt;field&gt; '''LESS''' &lt;number&gt;''<br />
* ''&lt;field&gt; '''EQUAL''' &lt;number&gt;''<br />
<br />
===Metadata expressions===<br />
* ''&lt;field&gt; '''MISSING''''' – Returns only items that don&#039;t have a metadata field named &lt;field&gt;. Example: ''genre '''MISSING'''''<br />
* ''&lt;field&gt; '''PRESENT''''' – Returns only items that have a metadata field named &lt;field&gt;. Example: ''genre '''PRESENT'''''<br />
<br />
===Time expressions===<br />
* ''&lt;time1&gt; '''BEFORE''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is before &lt;time2&gt;. Example: ''%last_modified% '''BEFORE''' 2008''<br />
* ''&lt;time1&gt; '''AFTER''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is after &lt;time2&gt;. Example: ''%last_modified% '''AFTER''' 2008''<br />
* ''&lt;time1&gt; '''SINCE''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is not before &lt;time2&gt;. Example: ''%last_modified% '''SINCE''' 2007''<br />
* ''&lt;time1&gt; '''DURING''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is a subset of &lt;time2&gt; period. Example: ''%last_modified% '''DURING''' 2007''<br />
* ''&lt;time&gt; '''DURING''' '''LAST''' &lt;number&gt; &lt;time-unit&gt;'' – Returns items where &lt;time&gt; value is contained in the specified period. &lt;time-unit&gt; can be one of '''SECONDS''', '''MINUTES''', '''HOURS''', '''DAYS''', or '''WEEKS'''. Example: ''%last_modified% '''DURING''' '''LAST''' 2 '''WEEKS'''''. If &lt;number&gt; is 1, the expression can be simplified to ''&lt;time&gt; '''DURING''' '''LAST''' '''SECOND'''/'''MINUTE'''/'''HOUR'''/'''DAY'''/'''WEEK''''' (choose one).<br />
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.<br />
<br />
===Combined queries using logical operators===<br />
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).<br />
* ''&lt;expression1&gt; '''AND''' &lt;expression2&gt; – Returns only items where both expressions are true. Example: ''artist '''IS''' blah '''AND''' title '''HAS''' blah''<br />
* ''&lt;expression1&gt; '''OR''' &lt;expression2&gt;'' – Returns only items where at least one expression is true.<br />
* '''''NOT''' &lt;expression&gt;'' – Returns only items where the expression is false. Example: ''NOT last_played '''AFTER''' first_played''<br />
* You can enclose expressions in parentheses to control the order in which logical expressions are evaluated. Example: ''( (artist '''IS''' blah) '''AND''' (title '''HAS''' blah) ) '''OR''' (rating '''GREATER''' 3)''<br />
* To obtain an exclusive-or (XOR/EOR), which is positive if only one expression is true but not both, you can use this: ''(<expression1> '''OR''' <expression2>) '''AND''' '''NOT''' (<expression1> '''AND''' <expression2>)''<br />
<br />
==Sorting results==<br />
You can put a '''SORT''' '''BY''' operator at the end of your search expression to have the results from the preceding quiery sorted by the specified title-formatting pattern. <br />
* '''''SORT''' '''BY''' &lt;sort-pattern&gt; / '''''SORT''' '''ASCENDING''' '''BY''' &lt;sort-pattern&gt; – Sort results in ascending order.<br />
* '''''SORT''' '''DESCENDING''' '''BY''' &lt;sort-pattern&gt;'' – Sort results in descending order.<br />
<br />
==Guidelines==<br />
===General===<br />
====Case-sensitivity====<br />
*All keywords (for example '''IS''', '''HAS''') must be written in upper-case.<br />
*All search expressions, on the other hand, are non–case-sensitive. For example, ''artist '''HAS''' name'' will find tracks whose ''artist'' field equals "NAME", "name", "Name", and all other combinations of capital and small letters.<br />
*To achieve a case-sensitive comparison between two parameters, use ''"$strcmp(%field%,string)" '''EQUAL''' 1'' and so on. For more information about how to use title-formatting within query syntax, see the relevant section below.<br />
<br />
====Double quotation marks====<br />
*&lt;field&gt; and &lt;string&gt; in HAS and IS expressions should be enclosed in double quotation marks (") if they include spaces. Example: ''"my favourite field or string" HAS my''<br />
*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 'keywords') within double quotation marks. For example: ''artist '''IS''' "MY BAND IS CALLED AND NOT" '''AND''' '''NOT''' releasetype '''IS''' Demo''<br />
====Simplified access to metadata fields====<br />
Accessing metadata fields can be simplified: If &lt;field&gt; in '''HAS''', '''IS''', '''GREATER''', '''LESS''', '''EQUAL''' does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: ''artist '''IS''' Radiohead''. 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.<br />
====Comparing two metadata fields====<br />
As noted above, operators such as '''IS''' 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: ''"$strcmp(%field1%,%field2%)" '''EQUAL''' 1''<br />
<br />
===Title-formatting===<br />
*If &lt;field&gt; in a (sub-)query using '''HAS''', '''IS''', '''GREATER''', '''LESS''', or '''EQUAL''' 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.<br />
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks ("), in line with the guidance given above in General.<br />
*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.<br />
*Using title formatting expressions to access metadata fields (e.g. "$meta(title)") 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 '''IS'''.<br />
<br />
==Summary of operators==<br />
{| border="1"<br />
|-<br />
! Operator <br />
! Syntax <br />
! Comment <br />
|-<br />
| '''AFTER'''<br />
| ''&lt;time1&gt; '''AFTER''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''AND''' <br />
| ''&lt;expression1&gt; '''AND''' &lt;expression2&gt;''<br />
| <br />
|-<br />
| '''BEFORE'''<br />
| ''&lt;time1&gt; '''BEFORE''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''DURING'''<br />
| ''&lt;time1&gt; '''DURING''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''DURING''' '''LAST'''<br />
| ''&lt;time&gt; '''DURING''' '''LAST''' &lt;number&gt; '''SECONDS'''/'''MINUTES'''/'''HOURS'''/'''DAYS'''/'''WEEKS''' ''<br />
''&lt;time&gt; '''DURING''' '''LAST''' '''SECOND'''/'''MINUTE'''/'''HOUR'''/'''DAY'''/'''WEEK''' ''<br />
| <br />
|-<br />
| '''EQUAL'''<br />
| ''&lt;field&gt; '''EQUAL''' &lt;number&gt;''<br />
| <br />
|-<br />
| '''GREATER'''<br />
| ''&lt;field&gt; '''GREATER''' &lt;number&gt;''<br />
| <br />
|-<br />
| '''HAS'''<br />
| ''&lt;field&gt; '''HAS''' &lt;string&gt;''<br />
'' '''* HAS''' &lt;string&gt;''<br />
| See the main description above for information on the difference between using a field and the * wildcard.<br />
|-<br />
| '''IS'''<br />
| ''&lt;field&gt; '''IS''' &lt;string&gt;''<br />
| <br />
|-<br />
| '''LESS'''<br />
| ''&lt;field&gt; '''LESS''' &lt;number&gt;''<br />
| <br />
|-<br />
| '''MISSING'''<br />
| ''&lt;field&gt; '''MISSING'''''<br />
| <br />
|-<br />
| '''NOT'''<br />
| '''''NOT''' &lt;expression&gt; ''<br />
| <br />
|-<br />
| '''OR'''<br />
| ''&lt;expression1&gt; '''OR''' &lt;expression2&gt;''<br />
| <br />
|-<br />
| '''PRESENT'''<br />
| ''&lt;field&gt; '''PRESENT'''''<br />
| <br />
|-<br />
| '''SINCE'''<br />
| ''&lt;time1&gt; '''SINCE''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''SORT''' '''BY''' <br />
| '''''SORT''' '''BY''' &lt;sort-pattern&gt;<br />
'''''SORT''' '''DESCENDING''' '''BY''' &lt;sort-pattern&gt;''<br />
| '''SORT'''ing expressions must be located at the end of the query. <br />
|}</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Query_syntaxFoobar2000:Query syntax2014-05-31T22:39:21Z<p>Foosion: /* Summary of operators */ Fixed inconsistent formatting</p>
<hr />
<div>This page details the syntax that can be used to query for files within the Media Library in [[Foobar2000:Foobar2000|foobar2000]].<br />
<br />
For a list of fields and functions that can be used in query syntax, see the [[Foobar2000:Title_Formatting_Reference|title-formatting reference]].<br />
<br />
==Conventions in this document==<br />
<br />
===Formatting===<br />
Query syntax includes various keywords, also called operators, which invoke specific behaviours. These must be typed in caps, for example DURING.<br />
<br />
To aid readability, in the following descriptions and examples, example queries (or fragments thereof) that the user could type into foobar2000 are written in ''italics''. In addition, operators are written in '''bold'''. Such formatting is for readability only and need not/cannot be typed in foobar2000 itself.<br />
<br />
===Placeholders===<br />
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.<br />
* Example: ''&lt;field&gt; '''GREATER''' &lt;number&gt;''<br />
<br />
The following common placeholders are used throughout this document: <br />
* &lt;field&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. "%artist%"). See the [[Foobar2000:Query_syntax#Guidelines|Guidelines]] below for details on these two methods of accessing fields.<br />
* &lt;number&gt; – An integer value (whole number).<br />
* &lt;string&gt; – A text value, which may be enclosed in double quotation marks. See the Guidelines for details.<br />
* &lt;time&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.<br />
* &lt;expression&gt; – A query expression in a composed query. This has to follow the rules described under [[Foobar2000:Query_syntax#Advanced Search|Advanced Search]] below.<br />
<br />
==Simple search==<br />
The simple search mode does not use any keywords or functions: it is only used to search for a literal string within the Library.<br />
* ''&lt;any string&gt;'' – Returns only items that have all words from the specified string within their metadata and/or file path.<br />
<br />
==Advanced search==<br />
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.<br />
<br />
===Text expressions===<br />
* ''&lt;field&gt; '''HAS''' &lt;string&gt;'' – Returns only items that have all words from &lt;string&gt; in metadata field named &lt;field&gt;. Example: ''title '''HAS''' blah''<br />
* ''&lt;field&gt; '''IS''' &lt;string&gt;'' – Returns only items where (at least one) metadata field &lt;field&gt; is equal to &lt;string&gt;. Example: ''artist '''IS''' blah''<br />
* '''''*HAS''' &lt;string&gt; – Same as simple search, but can be combined using logical operators (see below).<br />
* '''''ALL''''' - No operators can be used. This single keyword simply returns all items within the Media Library.<br />
<br />
===Numeric expressions===<br />
Performs integral number comparison between the value of a &lt;field&gt; and a &lt;number&gt;. For example: ''rating '''GREATER''' 3''<br />
* ''&lt;field&gt; '''GREATER''' &lt;number&gt;''<br />
* ''&lt;field&gt; '''LESS''' &lt;number&gt;''<br />
* ''&lt;field&gt; '''EQUAL''' &lt;number&gt;''<br />
<br />
===Metadata expressions===<br />
* ''&lt;field&gt; '''MISSING''''' – Returns only items that don&#039;t have a metadata field named &lt;field&gt;. Example: ''genre '''MISSING'''''<br />
* ''&lt;field&gt; '''PRESENT''''' – Returns only items that have a metadata field named &lt;field&gt;. Example: ''genre '''PRESENT'''''<br />
<br />
===Time expressions===<br />
* ''&lt;time1&gt; '''BEFORE''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is before &lt;time2&gt;. Example: ''%last_modified% '''BEFORE''' 2008''<br />
* ''&lt;time1&gt; '''AFTER''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is after &lt;time2&gt;. Example: ''%last_modified% '''AFTER''' 2008''<br />
* ''&lt;time1&gt; '''SINCE''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is not before &lt;time2&gt;. Example: ''%last_modified% '''SINCE''' 2007''<br />
* ''&lt;time1&gt; '''DURING''' &lt;time2&gt;'' – Returns only items where &lt;time1&gt; value is a subset of &lt;time2&gt; period. Example: ''%last_modified% '''DURING''' 2007''<br />
* ''&lt;time&gt; '''DURING''' '''LAST''' &lt;number&gt; &lt;time-unit&gt;'' – Returns items where &lt;time&gt; value is contained in the specified period. &lt;time-unit&gt; can be one of '''SECONDS''', '''MINUTES''', '''HOURS''', '''DAYS''', or '''WEEKS'''. Example: ''%last_modified% '''DURING''' '''LAST''' 2 '''WEEKS'''''. If &lt;number&gt; is 1, the expression can be simplified to ''&lt;time&gt; '''DURING''' '''LAST''' '''SECOND'''/'''MINUTE'''/'''HOUR'''/'''DAY'''/'''WEEK''''' (choose one).<br />
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.<br />
<br />
===Combined queries using logical operators===<br />
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).<br />
* ''&lt;expression1&gt; '''AND''' &lt;expression2&gt; – Returns only items where both expressions are true. Example: ''artist '''IS''' blah '''AND''' title '''HAS''' blah''<br />
* ''&lt;expression1&gt; '''OR''' &lt;expression2&gt;'' – Returns only items where at least one expression is true.<br />
* '''''NOT''' &lt;expression&gt;'' – Returns only items where the expression is false. Example: ''NOT last_played '''AFTER''' first_played''<br />
* You can enclose expressions in parentheses to control the order in which logical expressions are evaluated. Example: ''( (artist '''IS''' blah) '''AND''' (title '''HAS''' blah) ) '''OR''' (rating '''GREATER''' 3)''<br />
* To obtain an exclusive-or (XOR/EOR), which is positive if only one expression is true but not both, you can use this: ''(<expression1> '''OR''' <expression2>) '''AND''' '''NOT''' (<expression1> '''AND''' <expression2>)''<br />
<br />
==Sorting results==<br />
You can put a '''SORT''' '''BY''' operator at the end of your search expression to have the results from the preceding quiery sorted by the specified title-formatting pattern. <br />
* '''''SORT''' '''BY''' &lt;sort-pattern&gt; / '''''SORT''' '''ASCENDING''' '''BY''' &lt;sort-pattern&gt; – Sort results in ascending order.<br />
* '''''SORT''' '''DESCENDING''' '''BY''' &lt;sort-pattern&gt;'' – Sort results in descending order.<br />
<br />
==Guidelines==<br />
===General===<br />
====Case-sensitivity====<br />
*All keywords (for example '''IS''', '''HAS''') must be written in upper-case.<br />
*All search expressions, on the other hand, are non–case-sensitive. For example, ''artist '''HAS''' name'' will find tracks whose ''artist'' field equals "NAME", "name", "Name", and all other combinations of capital and small letters.<br />
*To achieve a case-sensitive comparison between two parameters, use ''"$strcmp(%field%,string)" '''EQUAL''' 1'' and so on. For more information about how to use title-formatting within query syntax, see the relevant section below.<br />
<br />
====Double quotation marks====<br />
*&lt;field&gt; and &lt;string&gt; in HAS and IS expressions should be enclosed in double quotation marks (") if they include spaces. Example: ''"my favourite field or string" HAS my''<br />
*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 'keywords') within double quotation marks. For example: ''artist '''IS''' "MY BAND IS CALLED AND NOT" '''AND''' '''NOT''' releasetype '''IS''' Demo''<br />
====Simplified access to metadata fields====<br />
Accessing metadata fields can be simplified: If &lt;field&gt; in '''HAS''', '''IS''', '''GREATER''', '''LESS''', '''EQUAL''' does not include any of the characters #, $, or %, it will be treated as a metadata field. Example: ''artist '''IS''' Radiohead''. 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.<br />
====Comparing two metadata fields====<br />
As noted above, operators such as '''IS''' 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: ''"$strcmp(%field1%,%field2%)" '''EQUAL''' 1''<br />
<br />
===Title-formatting===<br />
*If &lt;field&gt; in a (sub-)query using '''HAS''', '''IS''', '''GREATER''', '''LESS''', or '''EQUAL''' 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.<br />
*If spaces are likely to occur in the result, the title-formatting expression should be enclosed within double quotation marks ("), in line with the guidance given above in General.<br />
*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.<br />
*Using title formatting expressions to access metadata fields (e.g. "$meta(title)") 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 '''IS'''.<br />
<br />
==Summary of operators==<br />
{| border="1"<br />
|-<br />
! Operator <br />
! Syntax <br />
! Comment <br />
|-<br />
| '''AFTER'''<br />
| ''&lt;time1&gt; '''AFTER''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''AND''' <br />
| ''&lt;expression1&gt; '''AND''' &lt;expression2&gt;''<br />
| <br />
|-<br />
| '''BEFORE'''<br />
| ''&lt;time1&gt; '''BEFORE''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''DURING'''<br />
| ''&lt;time1&gt; '''DURING''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''DURING''' '''LAST'''<br />
| ''&lt;time&gt; '''DURING''' '''LAST''' &lt;number&gt; '''SECONDS'''/'''MINUTES'''/'''HOURS'''/'''DAYS'''/'''WEEKS''' ''<br />
''&lt;time&gt; '''DURING''' '''LAST''' '''SECOND'''/'''MINUTE'''/'''HOUR'''/'''DAY'''/'''WEEK''' ''<br />
| <br />
|-<br />
| '''EQUAL'''<br />
| ''&lt;field&gt; '''EQUAL''' &lt;number&gt;''<br />
| <br />
|-<br />
| '''GREATER'''<br />
| ''&lt;field&gt; '''GREATER''' &lt;number&gt;''<br />
| <br />
|-<br />
| '''HAS'''<br />
| ''&lt;field&gt; '''HAS''' &lt;string&gt;''<br />
'' '''* HAS''' &lt;string&gt;''<br />
| See the main description above for information on the difference between using a field and the wildcard *.<br />
|-<br />
| '''IS'''<br />
| ''&lt;field&gt; '''IS''' &lt;string&gt;''<br />
| <br />
|-<br />
| '''LESS'''<br />
| ''&lt;field&gt; '''LESS''' &lt;number&gt;''<br />
| <br />
|-<br />
| '''MISSING'''<br />
| ''&lt;field&gt; '''MISSING'''''<br />
| <br />
|-<br />
| '''NOT'''<br />
| '''''NOT''' &lt;expression&gt; ''<br />
| <br />
|-<br />
| '''OR'''<br />
| ''&lt;expression1&gt; '''OR''' &lt;expression2&gt;''<br />
| <br />
|-<br />
| '''PRESENT'''<br />
| ''&lt;field&gt; '''PRESENT'''''<br />
| <br />
|-<br />
| '''SINCE'''<br />
| ''&lt;time1&gt; '''SINCE''' &lt;time2&gt;''<br />
| <br />
|-<br />
| '''SORT''' '''BY''' <br />
| '''''SORT''' '''BY''' &lt;sort-pattern&gt;<br />
'''''SORT''' '''DESCENDING''' '''BY''' &lt;sort-pattern&gt;''<br />
| '''SORT'''ing expressions must be located at the end of the query. <br />
|}</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-31T22:27:23Z<p>Foosion: /* Custom Grouping Schemes */ Rewrote section on custom grouping schemes.</p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to manage custom columns and grouping schemes for the Playlist View of the Default User Interface.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page [[Foobar2000:Preferences:Default User Interface:Colors and Fonts|Colors and Fonts]] for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Text with markup || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >weakly highlighted< || style="background: #ffffff; color: #000055;" | weakly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <weakly dimmed> || style="background: #ffffff; color: #404040;" | weakly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
Custom grouping schemes are user-configured grouping schemes which can be used in the Playlist View of the Default User Interface in addition to the built-in grouping schemes. A grouping scheme defines how ttracks in the playlist are grouped together and what the names of the groups are. The table in the lower part of the preferences page contains the configured grouping schemes. Each row represents a grouping scheme which is defined by two properties.<br />
<br />
;Name<br />
: The name of the grouping scheme is displayed in the context menu of the Playlist View header. A custom grouping scheme can have the same name as a built-in grouping scheme or as another custom grouping scheme. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the name of the groups. This expression is evaluated for each track in the playlist. Neighboring tracks with the same result will be displayed as a single group. The result is displayed as the group header. Note that dimming and highlighting is not available for group headers. They are always displayed in the highlight color. Also note that the pattern can only access information from the tracks themselves. The special fields <code>%list_total%</code> and <code>%list_index%</code> are undefined when used in a custom grouping scheme.<br />
<br />
The built-in grouping schemes are hard-coded in the Default User Interface and cannot be changed.<br />
<br />
=== Editing Custom Grouping Schemes ===<br />
<br />
The following editing functions are available for custom custum grouping schemes. Some functions can be accessed through the context menu of the custom grouping schemes table or through keyboard shortcuts when the custom grouping schemes table has the focus.<br />
<br />
; Add a custom grouping scheme<br />
: Click the "Add New" button above the custom grouping scheme table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added grouping scheme.<br />
; Remove a custom colum<br />
: Click the "Remove" button above the custom grouping scheme table to remove the selected custom grouping scheme. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
; Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
; Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
<br />
== Format ==<br />
<br />
The custom columns and grouping schemes tables have editable fields. To create a new entry, just double-click on what you want to edit. Once created and saved, the custom column or grouping scheme is available for use.<br />
<br />
* '''Name''' is any name you want to give the column or grouping scheme so you can toggle it from the right-click menu for the playlist column header. For columns, it is also the name that will actually appear in the header row.<br />
* '''Pattern''' is a pattern in the [[Foobar2000:Title Formatting Reference|title formatting syntax]].<br />
<br />
For a column, the pattern will produce the actual text that appears in that column, for each entry in the playlist.<br />
<br />
For a grouping scheme, the pattern won't produce visible text, because a grouping scheme is like a invisible column that's only used for pre-sorting playlist items. The text produced by the pattern will be used internally as a unique key for each group. It should be crafted to produce an identical text string for every item you want to be in the same group.<br />
<br />
When crafting a new grouping scheme pattern, it can be helpful to create a temporary column with the same pattern in it, so you know what string is being produced.<br />
<br />
== Examples ==<br />
The names don't matter.<br />
<br />
Custom column pattern to display the duration, to 3 decimal places of precision:<br />
* <code>%length_ex%</code><br />
<br />
Custom column pattern to display the track number, with disc number (if available), and an indicator of whether the track is currently playing:<br />
* <code>$if(%isplaying%,♫ )$if(%discnumber%,%discnumber% | ,)[%tracknumber%]</code><br />
The spaces are important. The musical note character (♫) is only visible in some fonts; perhaps replace it with a large bullet (•) if you don't want to change fonts.<br />
<br />
Custom grouping scheme pattern to have separate groups for Internet streams, songs with album tags, and songs without album tags:<br />
* <code>$if($stricmp($left(%path%,7),'http&#58;//'),&lt;Internet streams>,$if($meta_test(band),%band%,$if($meta_test(albumartist),%albumartist%,$if(%album artist%,%album artist%,$if2(%artist%,&lt;non-album tracks>))))[ – %album%])</code></div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-29T18:57:42Z<p>Foosion: </p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to manage custom columns and grouping schemes for the Playlist View of the Default User Interface.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page [[Foobar2000:Preferences:Default User Interface:Colors and Fonts|Colors and Fonts]] for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Text with markup || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >weakly highlighted< || style="background: #ffffff; color: #000055;" | weakly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <weakly dimmed> || style="background: #ffffff; color: #404040;" | weakly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
This list lets you configure custom grouping schemes, available in the Default User Interface Playlist View apart from the standard grouping schemes.<br />
<br />
== Format ==<br />
<br />
The custom columns and grouping schemes tables have editable fields. To create a new entry, just double-click on what you want to edit. Once created and saved, the custom column or grouping scheme is available for use.<br />
<br />
* '''Name''' is any name you want to give the column or grouping scheme so you can toggle it from the right-click menu for the playlist column header. For columns, it is also the name that will actually appear in the header row.<br />
* '''Pattern''' is a pattern in the [[Foobar2000:Title Formatting Reference|title formatting syntax]].<br />
<br />
For a column, the pattern will produce the actual text that appears in that column, for each entry in the playlist.<br />
<br />
For a grouping scheme, the pattern won't produce visible text, because a grouping scheme is like a invisible column that's only used for pre-sorting playlist items. The text produced by the pattern will be used internally as a unique key for each group. It should be crafted to produce an identical text string for every item you want to be in the same group.<br />
<br />
When crafting a new grouping scheme pattern, it can be helpful to create a temporary column with the same pattern in it, so you know what string is being produced.<br />
<br />
== Examples ==<br />
The names don't matter.<br />
<br />
Custom column pattern to display the duration, to 3 decimal places of precision:<br />
* <code>%length_ex%</code><br />
<br />
Custom column pattern to display the track number, with disc number (if available), and an indicator of whether the track is currently playing:<br />
* <code>$if(%isplaying%,♫ )$if(%discnumber%,%discnumber% | ,)[%tracknumber%]</code><br />
The spaces are important. The musical note character (♫) is only visible in some fonts; perhaps replace it with a large bullet (•) if you don't want to change fonts.<br />
<br />
Custom grouping scheme pattern to have separate groups for Internet streams, songs with album tags, and songs without album tags:<br />
* <code>$if($stricmp($left(%path%,7),'http&#58;//'),&lt;Internet streams>,$if($meta_test(band),%band%,$if($meta_test(albumartist),%albumartist%,$if(%album artist%,%album artist%,$if2(%artist%,&lt;non-album tracks>))))[ – %album%])</code></div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-29T00:05:00Z<p>Foosion: /* Dimming and Highlighting Text */ weakly -> strongly, "lightly highlighted" looked strange</p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to create and edit custom columns for the Default User Interface's default playlist view.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page [[Foobar2000:Preferences:Default User Interface:Colors and Fonts|Colors and Fonts]] for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Text with markup || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >weakly highlighted< || style="background: #ffffff; color: #000055;" | weakly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <weakly dimmed> || style="background: #ffffff; color: #404040;" | weakly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
This list lets you configure custom grouping schemes, available in the Default User Interface Playlist View apart from the standard grouping schemes.<br />
<br />
== Format ==<br />
<br />
The custom columns and grouping schemes tables have editable fields. To create a new entry, just double-click on what you want to edit. Once created and saved, the custom column or grouping scheme is available for use.<br />
<br />
* '''Name''' is any name you want to give the column or grouping scheme so you can toggle it from the right-click menu for the playlist column header. For columns, it is also the name that will actually appear in the header row.<br />
* '''Pattern''' is a pattern in the [[Foobar2000:Title Formatting Reference|title formatting syntax]].<br />
<br />
For a column, the pattern will produce the actual text that appears in that column, for each entry in the playlist.<br />
<br />
For a grouping scheme, the pattern won't produce visible text, because a grouping scheme is like a invisible column that's only used for pre-sorting playlist items. The text produced by the pattern will be used internally as a unique key for each group. It should be crafted to produce an identical text string for every item you want to be in the same group.<br />
<br />
When crafting a new grouping scheme pattern, it can be helpful to create a temporary column with the same pattern in it, so you know what string is being produced.<br />
<br />
== Examples ==<br />
The names don't matter.<br />
<br />
Custom column pattern to display the duration, to 3 decimal places of precision:<br />
* <code>%length_ex%</code><br />
<br />
Custom column pattern to display the track number, with disc number (if available), and an indicator of whether the track is currently playing:<br />
* <code>$if(%isplaying%,♫ )$if(%discnumber%,%discnumber% | ,)[%tracknumber%]</code><br />
The spaces are important. The musical note character (♫) is only visible in some fonts; perhaps replace it with a large bullet (•) if you don't want to change fonts.<br />
<br />
Custom grouping scheme pattern to have separate groups for Internet streams, songs with album tags, and songs without album tags:<br />
* <code>$if($stricmp($left(%path%,7),'http&#58;//'),&lt;Internet streams>,$if($meta_test(band),%band%,$if($meta_test(albumartist),%albumartist%,$if(%album artist%,%album artist%,$if2(%artist%,&lt;non-album tracks>))))[ – %album%])</code></div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-28T23:55:09Z<p>Foosion: /* Dimming and Highlighting Text */ Added link to "Colors and Fonts" page</p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to create and edit custom columns for the Default User Interface's default playlist view.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page [[Foobar2000:Preferences:Default User Interface:Colors and Fonts|Colors and Fonts]] for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Text with markup || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >lightly highlighted< || style="background: #ffffff; color: #000055;" | lightly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <lightly dimmed> || style="background: #ffffff; color: #404040;" | lightly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
This list lets you configure custom grouping schemes, available in the Default User Interface Playlist View apart from the standard grouping schemes.<br />
<br />
== Format ==<br />
<br />
The custom columns and grouping schemes tables have editable fields. To create a new entry, just double-click on what you want to edit. Once created and saved, the custom column or grouping scheme is available for use.<br />
<br />
* '''Name''' is any name you want to give the column or grouping scheme so you can toggle it from the right-click menu for the playlist column header. For columns, it is also the name that will actually appear in the header row.<br />
* '''Pattern''' is a pattern in the [[Foobar2000:Title Formatting Reference|title formatting syntax]].<br />
<br />
For a column, the pattern will produce the actual text that appears in that column, for each entry in the playlist.<br />
<br />
For a grouping scheme, the pattern won't produce visible text, because a grouping scheme is like a invisible column that's only used for pre-sorting playlist items. The text produced by the pattern will be used internally as a unique key for each group. It should be crafted to produce an identical text string for every item you want to be in the same group.<br />
<br />
When crafting a new grouping scheme pattern, it can be helpful to create a temporary column with the same pattern in it, so you know what string is being produced.<br />
<br />
== Examples ==<br />
The names don't matter.<br />
<br />
Custom column pattern to display the duration, to 3 decimal places of precision:<br />
* <code>%length_ex%</code><br />
<br />
Custom column pattern to display the track number, with disc number (if available), and an indicator of whether the track is currently playing:<br />
* <code>$if(%isplaying%,♫ )$if(%discnumber%,%discnumber% | ,)[%tracknumber%]</code><br />
The spaces are important. The musical note character (♫) is only visible in some fonts; perhaps replace it with a large bullet (•) if you don't want to change fonts.<br />
<br />
Custom grouping scheme pattern to have separate groups for Internet streams, songs with album tags, and songs without album tags:<br />
* <code>$if($stricmp($left(%path%,7),'http&#58;//'),&lt;Internet streams>,$if($meta_test(band),%band%,$if($meta_test(albumartist),%albumartist%,$if(%album artist%,%album artist%,$if2(%artist%,&lt;non-album tracks>))))[ – %album%])</code></div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Default_User_Interface:Playlist_ViewFoobar2000:Preferences:Default User Interface:Playlist View2014-05-28T23:52:09Z<p>Foosion: /* Custom Columns */ Rewrote section and custom columns</p>
<hr />
<div>{{fb2k prefs|Foobar2000-Preferences-default-ui-playlistview.png|Playlist View}}<br />
This preferences page allows you to create and edit custom columns for the Default User Interface's default playlist view.<br />
== Custom Columns ==<br />
<br />
Custom columns are user-configured columns which can be displayed in the Playlist View of the Default User Interface in addition to the built-in columns. The table in upper part of the preferences page contains the configured custom columns. Each row represents on custom column which is defined by three properties.<br />
<br />
;Name<br />
: The name of the column is displayed in header of the column in the playlist view. A custom column can have the same name as a built-in column or as another custom column. However this might be confusing.<br />
;Pattern<br />
: The title formatting expression which defines the content of the column. This expression is evaluated for each track in the playlist. The result is displayed in the playlist view. The expression may contain a limited form of markup to dim or highlight parts of the test. See the section "Dimming and Highlighting Text" below for details.<br />
;Alignment<br />
: The horizontal alignment of the column determines whether the column is displayed left-aligned, right-aligned or centered.<br />
<br />
The built-in columns are hard-coded in the Default User Interface and cannot be changed. They also support features like icons in the "Playing" column which are not available for custom columns.<br />
<br />
=== Editing Custom Columns ===<br />
<br />
The following editing functions are available for custom columns. Some functions can be accessed through the context menu of the custom columns table or through keyboard shortcuts when the custom column table has the focus.<br />
<br />
;Add a custom column<br />
: Click the "Add New" button above the custom column table. Alternatively, press Ctrl+N or choose "Add New Entry" from the context menu. Double-clicking an empty entry also works. You can immediately edit the pattern of the added column.<br />
;Remove a custom colum<br />
: Click the "Remove" button above the custom column table to remove the selected custom column. Alternatively, press Del or choose "Delete Entry" from the context menu.<br />
;Change name<br />
: Click the name field of the entry. Alternatively, press Shift+F2 or choose "Edit Name" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change format<br />
: Click the format field of the entry. Alternatively, press F2 or choose "Edit Pattern" from the context menu. Press Return or Enter to confirm your changes or press Esc to discard them.<br />
;Change alignment<br />
: Click the alignment field of the entry and choose the desired alignment. Alternatively, choose the desired alignment from the "Alignment" submenu of the context menu.<br />
<br />
=== Dimming and Highlighting Text ===<br />
<br />
Parts of the displayed text in a custom column can be dimmed or highlighted using the characters < and >. Dimming and highlighting are both available in three levels. The color of dimmed text will be a blend of the text color and the background color. The color of highlighted text will be a blend of the text color and the highlight color. See the preferences page "Colors and Fonts" for details.<br />
<br />
The following table shows examples for the available markups. The examples assume that the text color is black, the background color is white and the highlight color is blue.<br />
<br />
{| border="1" cellpadding="5" cellspacing="3"<br />
| Source text || Displayed text<br />
|-<br />
| >>>strongly highlighted<<< || style="background: #ffffff; color: #0000ff;" | strongly highlighted<br />
|-<br />
| >>highlighted<< || style="background: #ffffff; color: #0000aa;" | highlighted<br />
|-<br />
| >lightly highlighted< || style="background: #ffffff; color: #000055;" | lightly highlighted<br />
|-<br />
| normal || style="background: #ffffff; color: #000000;" | normal<br />
|-<br />
| <lightly dimmed> || style="background: #ffffff; color: #404040;" | lightly dimmed<br />
|-<br />
| <<dimmed>> || style="background: #ffffff; color: #808080;" | dimmed<br />
|-<br />
| <<<strongly dimmed>>> || style="background: #ffffff; color: #c0c0c0;" | strongly dimmed<br />
|}<br />
<br />
== Custom Grouping Schemes ==<br />
<br />
This list lets you configure custom grouping schemes, available in the Default User Interface Playlist View apart from the standard grouping schemes.<br />
<br />
== Format ==<br />
<br />
The custom columns and grouping schemes tables have editable fields. To create a new entry, just double-click on what you want to edit. Once created and saved, the custom column or grouping scheme is available for use.<br />
<br />
* '''Name''' is any name you want to give the column or grouping scheme so you can toggle it from the right-click menu for the playlist column header. For columns, it is also the name that will actually appear in the header row.<br />
* '''Pattern''' is a pattern in the [[Foobar2000:Title Formatting Reference|title formatting syntax]].<br />
<br />
For a column, the pattern will produce the actual text that appears in that column, for each entry in the playlist.<br />
<br />
For a grouping scheme, the pattern won't produce visible text, because a grouping scheme is like a invisible column that's only used for pre-sorting playlist items. The text produced by the pattern will be used internally as a unique key for each group. It should be crafted to produce an identical text string for every item you want to be in the same group.<br />
<br />
When crafting a new grouping scheme pattern, it can be helpful to create a temporary column with the same pattern in it, so you know what string is being produced.<br />
<br />
== Examples ==<br />
The names don't matter.<br />
<br />
Custom column pattern to display the duration, to 3 decimal places of precision:<br />
* <code>%length_ex%</code><br />
<br />
Custom column pattern to display the track number, with disc number (if available), and an indicator of whether the track is currently playing:<br />
* <code>$if(%isplaying%,♫ )$if(%discnumber%,%discnumber% | ,)[%tracknumber%]</code><br />
The spaces are important. The musical note character (♫) is only visible in some fonts; perhaps replace it with a large bullet (•) if you don't want to change fonts.<br />
<br />
Custom grouping scheme pattern to have separate groups for Internet streams, songs with album tags, and songs without album tags:<br />
* <code>$if($stricmp($left(%path%,7),'http&#58;//'),&lt;Internet streams>,$if($meta_test(band),%band%,$if($meta_test(albumartist),%albumartist%,$if(%album artist%,%album artist%,$if2(%artist%,&lt;non-album tracks>))))[ – %album%])</code></div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:ComponentsFoobar2000:Components2014-02-24T08:21:47Z<p>Foosion: Undo revision 25712 by Baratumz (talk) (SPAM)</p>
<hr />
<div>{{title|foobar2000 Components}}<br />
<br />
{{fb2k}}<br />
This page contains most foobar2000 components available at time of history last update.<br />
=Official Components= <br />
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]<br />
===Included in Installer===<br />
[[Image:Optional_features.png|thumb|The Optional Features screen of the fb2k Installer]]<br />
In addition to foobar2000's core functionality, the following components can be installed as needed, in the Optional Features section of the installer.<br />
*Audio CD Support (foo_cdda) Adds Support for [[CD|Audio CD]] Playback<br />
*Album List (foo_albumlist) Gives quick access to Media Library Content with customizable tree view<br />
*Archive Reader (foo_unpack) Adds support for playing files directly from ZIP RAR and GZIP archives<br />
*[[Foobar2000:Converter|Converter (foo_converter)]] Converts files to WAV or any other formats using command line encoders<br />
*[[Foobar2000:File_operations|File Operations (foo_fileops)]] Renames, moves, or copies files according to specified patterns<br />
*[[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)<br />
*ReplayGain Scanner (foo_rgscan) advanced solution for volume matching<br />
*Standard DSPs (foo_dsp_std) Equalizer, resampler, advanced limiter, hard limiter, stereo to 4 channel upmixer and a couple other effects<br />
<br />
===Additional Components===<br />
These components are provided as separate downloads, found on the [http://www.foobar2000.org/components/author/Peter Additional Components page]. <br />
*[[Foobar2000:Components_0.9/ABX_Comparator(foo_abx)|ABX comparator (foo_abx)]] component for double blind listening tests<br />
*[[Foobar2000:Components 0.9/ALAC Decoder (foo_input_alac)|ALAC Decoder (foo_input_alac)]] Apple Lossless ([[ALAC]]) decoder<br />
* [[Foobar2000:Components 0.9/ASIO Output (foo_out_asio)|ASIO output support (foo_out_asio)]] Adds ASIO output support.<br />
* [[Foobar2000:Components 0.9/Audio CD Writer (foo_burninate)|Audio CD Writer (foo_burninate)]] CD burning support<br />
*[[Foobar2000:Components 0.9/Binary Comparator (foo_bitcompare)|Binary Comparator (foo_bitcompare)]] Performs binary comparison between two or more tracks and reports differences.<br />
* [[Foobar2000:Components 0.9/Decoding Speed Test (foo_benchmark)|Decoding Speed Test (foo_benchmark)]] Measures decoding speed of audio files.<br />
* [[Foobar2000:Components 0.9/File Integrity Verifier (foo_verifier)|File Integrity Verifier (foo_verifier)]] Checks specified media files for decoding errors.<br />
* [[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])<br />
* [[Foobar2000:Components 0.9/Kernel Streaming Output (foo_out_ks)|Kernel Streaming support (foo_out_ks)]] Allows bit-exact playback bypassing Windows kernel mixer.<br />
* [[Foobar2000:Components 0.9/Masstagger (foo_masstag)|Masstagger (foo_masstag)]] Automates various tag editing operations.<br />
* [[Foobar2000:Components 0.9/Monkey's Audio Decoder (foo_input_monkey)|Monkey's Audio Decoder (foo_input_monkey)]] Adds decoding support for Monkey's Audio files (.[[APE]]) as well as APE Link files (.[[APL]]).<br />
*[[Foobar2000:Components/Playback Statistics v3.x (foo playcount)|Playback Statistics (foo playcount)]] Collects playback statistics for your Media Library content.<br />
* [[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<br />
* [[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. <br />
* [[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.<br />
<br />
=3rd Party Components=<br />
The following components are created and maintained by 3rd-party authors, using foobar2000'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's thread is usually preferred.<br />
== User Interfaces ==<br />
<br />
=== Columns UI ===<br />
[[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.<br />
<br />
Columns UI introduced components with [[#Panels|panel]] capability which extend the user interface.<br />
<br />
== User Interface Addons ==<br />
=== UI Elements ===<br />
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):<br />
* [[Foobar2000:Components/Facets (foo_facets)|Facets (foo_facets)]] Flexible media library viewer based on linked lists.<br />
* [[Foobar2000:Components/Playlist_Organizer_(foo_plorg)|Playlist Organizer (foo_plorg)]] Advanced playlist manager to organize playlists in a treeview.<br />
* [[Foobar2000:Components/Queue Contents Editor (foo queuecontents)|Queue Contents Editor (foo_queuecontents)]] Edit and view queue contents using an UI Element.<br />
* [[Foobar2000:Components/Quicksearch UI Element (foo quicksearch)|Quicksearch UI Element (foo_quicksearch)]] Search toolbar that sends results to a playlist.<br />
* [[Foobar2000:Components/SimPlaylist (foo_simplaylist)|SimPlaylist (foo_simplaylist)]] Playlist view with album art.<br />
* [[Foobar2000:Components/SimPlaylist Manager (foo_simplaylist_manager)|SimPlaylist Manager (foo_simplaylist_manager)]] Playlist manager replacement with additional columns.<br />
* [[Foobar2000:Components 0.9/Text Display (foo_textdisplay)|Text Display (foo_textdisplay)]] Displays information about the playing or selected track.<br />
* [[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.<br />
<br />
=== Panels ===<br />
Panels extend the functionality of Columns UI components.<br />
* [[Foobar2000:Components 0.9/Album Art Panel (foo_uie_albumart)|Album Art Panel (foo_uie_albumart)]] Panel to display album art.<br />
* [[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.)<br />
* [[Foobar2000:Components 0.9/Bookmarks (foo_uie_bookmarks)|Bookmarks (foo_uie_bookmarks)]] Help you remember positions in songs.<br />
* [[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.<br />
* [[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.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Egoh Spectrum Analyser (foo_uie_vis_egoh)|Egoh Spectrum Analyser (foo_uie_vis_egoh)]] Similar to the default spectrum analyser.<br />
* [[Foobar2000:Components 0.9/ELplaylist panel (foo uie elplaylist)|ELplaylist panel (foo uie elplaylist)]] Playlist panel replacement with extensive customization options.<br />
* [[Foobar2000:Components 0.9/Explorer Panel (foo_uie_explorer)|Explorer Panel (foo_uie_explorer)]] Displays a treeview of selected disks/folders.<br />
* [[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 <br />
* [[Foobar2000:Components 0.9/Lyrics Panel (foo_uie_lyrics_panel)|Lyrics Panel (foo_uie_lyrics_panel)]] Display lyrics stored in file tags. <br />
* [[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's in-built [[Foobar2000:Components_0.9/Columns_UI_%28foo_ui_columns%29#Playlist_filters|filters]].<br />
* [[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<br />
* [[Foobar2000:Components 0.9/Playlist Dropdown (foo_uie_playlists_dropdown)|Playlist Dropdown (foo_uie_playlists_dropdown)]] Displays the playlist in a dropdown menu.<br />
* [[Foobar2000:Components 0.9/Playlist Tree (foo_playlist_tree)|Playlist Tree (foo_playlist_tree)]] Tree based media library with many available customizations.<br />
* [[Foobar2000:Components 0.9/Power Panels (foo_uie_powerpanels)|Power Panels (foo_uie_powerpanels)]] Seekbar and volume transparent version panels. Useful for theming.<br />
* [[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.<br />
* [[Foobar2000:Components/Queue Contents Editor (foo queuecontents)|Queue Contents Editor (foo_queuecontents)]] Edit and view queue contents using an UI Element.<br />
* [[Foobar2000:Components 0.9/Queue Manager (foo_uie_queuemanager)|Queue Manager (foo_uie_queuemanager)]] It provides a window that shows the queue's contents and allows you to delete parts of them or clear the whole queue.<br />
* [[Foobar2000:Components 0.9/Shpeck (foo_vis_shpeck)|Shpeck (foo_vis_shpeck)]] Winamp visualisation plugins wrapper.<br />
* [[Foobar2000:Components 0.9/Tabs (foo_uie_tabs)|Tabs (foo_uie_tabs)]] Tabs allows you to break Pauli's Exclusion principle by placing multiple panels in the same position at the same time.<br />
* [[Foobar2000:Components 0.9/Typefind (foo_typefind)|Typefind (foo_typefind)]] Provides some in-line search facilities.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/WmpVis (foo_uie_wmpvis)|<span id="wmpvis">WmpVis (foo_uie_wmpvis)</span>]] Uses the visualizations from WMP.<br />
* [[Foobar2000:Components 0.9/WSH panel (foo_uie_wsh_panel)|WSH panel (foo_uie_wsh_panel)]] Windows script host panel.<br />
<br />
==DSP==<br />
===Multichannel audio===<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Channel Mixer (foo_channel_mixer)|Channel Mixer (foo_channel_mixer)]] Up/down mix to/from 1-6 channels.<br />
* [[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).<br />
* [[Foobar2000:Components 0.9/Downmix (foo_dsp_downmix)|Downmix (foo_dsp_downmix)]] Downmix [[AC3]], [[DTS]], etc. to stereo.<br />
* [[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. <br />
* [[Foobar2000:Components 0.9/Surround Pan (foo_dsp_span)|Surround Pan (foo_dsp_span)]] WYSIWYG Surround panning.<br />
===Headphones===<br />
* [[Foobar2000:Components 0.9/4Front Headphones (foo_dsp_headphones9)|4Front Headphones (foo_dsp_headphones9)]] Effects for headphone users.<br />
* [[Foobar2000:Components 0.9/BS2D (foo_dsp_bs2p)|BS2D (foo_dsp_bs2p)]] Improves headphone listening of regular hi-fi stereo records.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Dolby Headphone Wrapper (foo_dsp_dolbyhp)|Dolby Headphone Wrapper (foo_dsp_dolbyhp)]] Dolby Headphone engine DLL.<br />
===Utilities===<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Voice Cut Filter (foo_dsp_centercut)|Voice Cut Filter (foo_dsp_centercut)]] Voice cut filter.<br />
* [[Foobar2000:Components/Equalizer split (foo_dsp_eqsplit)|Equalizer split (foo_dsp_eqsplit)]] A meta-DSP that feeds each channel into a separate equalizer instance.<br />
* [[Foobar2000:Components 0.9/XOver (foo_dsp_xover)|XOver (foo_dsp_xover)]] Implements this digital crossover to achieve active multi-amplification.<br />
===Effects===<br />
* [[Foobar2000:Components 0.9/Soundtouch (foo_dsp_soundtouch)|Soundtouch (foo_dsp_soundtouch)]] Adjust pitch, tempo and rate.<br />
* [[Foobar2000:Components 0.9/Tube Sound (foo_dsp_tube)|Tube Sound (foo_dsp_tube)]] Emulate tube sound.<br />
* [[Foobar2000:Components 0.9/VLevel (foo_dsp_vlevel)|VLevel (foo_dsp_vlevel)]] Dynamic compressor which amplifies the quiet parts of music.<br />
<br />
===Converters===<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/LPCM - Delta-PCM Converter (foo_dsp_delta)|LPCM - Delta-PCM Converter (foo_dsp_delta)]] Noise sharpening filter.<br />
* [[Foobar2000:Components 0.9/SSRC (foo_dsp_ssrc)|SSRC (foo_dsp_ssrc)]] Sample rate converter.<br />
<br />
===Multi-purpose===<br />
* [[Foobar2000:Components 0.9/OSS/3D (foo_dsp_oss3ddsp)|OSS/3D (foo_dsp_oss3ddsp)]] Audio enhancement. SHAREWARE.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Winamp DSP Bridge (foo_dsp_winamp)|Winamp DSP Bridge (foo_dsp_winamp)]] Allows the use of Winamp DSPs.<br />
* [[Foobar2000:Components/VST adapter|VST 2.4 adapter (foo_vst)]] Allows Foobar2000 users to use VST 2.4 plug-ins equally with “native” ones.<br />
* [[Foobar2000:Components 0.9/George Yohng's VST Wrapper (foo_dsp_vstwrap)|George Yohng's VST Wrapper (foo_dsp_vstwrapper)]] Enables VST plug-ins.<br />
* [[Foobar2000:Components 0.9/VST Host (foo_dsp_vst)|VST Host (foo_dsp_vst)]] Adds support to Virtual Studio Technology audio interface.<br />
<br />
==Input==<br />
===Music Decoders===<br />
* [[Foobar2000:Components 0.9/AC3 Decoder (foo_ac3)|AC3 Decoder (foo_ac3)]] Decodes Dolby Digital lossy audio compression technologies format ([[AC3]]).<br />
* [[Foobar2000:Components 0.9/DTS Decoder (foo_dts)|DTS Decoder (foo_dts)]] Decodes Digital Theater Systems ([[DTS]]) audio format.<br />
* [[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).<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Shorten Decoder (foo_input_shorten)|Shorten Decoder (foo_input_shorten)]] Decodes Shorten ([[SHN]]) audio format.<br />
* [[Foobar2000:Components 0.9/SPDIF Passthrough (foo_spdif)|SPDIF Passthrough (foo_spdif)]] SPDIF passthrough for [[AC3]] and [[DTS]] files.<br />
* [[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.<br />
* [[Foobar2000:Components/TTA Audio Decoder (foo_input_tta)|TTA Audio Decoder (foo_input_tta)]] Decodes True Audio ([[TTA]]) audio format.<br />
* [[Foobar2000:Components/DVD Audio Decoder (foo_input_dvda)|DVD Audio Decoder (foo_input_dvda)]] Decodes DVD Audio ([[DVD Audio]]) Disks.<br />
<br />
===Other Decoders===<br />
* [[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.)<br />
* [[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.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/AviSynth decoder (foo_input_avs)|AviSynth decoder (foo_input_avs)]] Adds decoding support for AviSynth scripts (.AVS), audio only.<br />
* [[Foobar2000:Components/DSDIFF Decoder (foo_input_dsdiff)|DSDIFF Decoder (foo_input_dsdiff)]] Adds decoding support for DSDIFF files (.DFF).<br />
* [[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)<br />
* [[Foobar2000:Components 0.9/Game Emu Player (foo_gep)|Game Emu Player (foo_gep)]] Plays several emulation formats. (GBS, NSF, SPC, GYM, HES, VGM)<br />
* [[Foobar2000:Components 0.9/Ganbatte! (foo_ganbatte)|Ganbatte! (foo_ganbatte)]] Plays compressed Edlib (.d00, .d01) files.<br />
* [[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' Highest eXperience files (.AHX).<br />
* [[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).<br />
* [[Foobar2000:Components 0.9/M1 Decoder (foo_m1)|M1 Decoder (foo_m1)]] Plays arcade/pinball game sound.<br />
* [[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's FM synthesizer.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/PSF Decoder (foo_psf)|PSF Decoder (foo_psf)]] Plays PlayStation Sound Format (PSF) files.<br />
* [[Foobar2000:Components/QSF decoder (foo_input_qsf)|QSF decoder (foo_input_qsf)]] Adds decoding support for Capcom QSound Sound Format files (.QSF/.MINIQSF).<br />
* [[Foobar2000:Components 0.9/Reverse (foo_input_reverse)|Reverse (foo_input_reverse)]] Play music in reverse.<br />
* [[Foobar2000:Components 0.9/SID Player 2 (foo_sid)|SID Player 2 (foo_sid)]] Sound chip of Commodore's CBM-II, Commodore 64 and Commodore 128 home computers.<br />
* [[Foobar2000:Components 0.9/S98 Decoder (foo_input_s98)|S98 Decoder (foo_input_s98)]] Sound format for the NEC PC-98 microcomputer.<br />
* [[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.<br />
<br />
==Visualisation==<br />
* [[Foobar2000:Components/Musical Spectrum (foo_musical_spectrum)|Musical Spectrum (foo_musical_spectrum)]] Displays frequencies corresponding to musical notes. Compatible with default UI and Columns UI.<br />
* [[Foobar2000:Components 0.9/Peakmeter (foo uie peakmeter)|Peakmeter for Columns UI (foo_uie_peakmeter)]] Displays the level for each channel in dB.<br />
* [[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.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Shpeck (foo_vis_shpeck)|Shpeck (foo_vis_shpeck)]] Winamp visualisation plugins wrapper.<br />
* [[#wmpvis|WmpVis (foo_uie_wmpvis)]] Uses the visualizations from WMP. ''Panel version only''.<br />
<br />
==Other==<br />
===General===<br />
* [[Foobar2000:Components 0.9/Alarm (foo_alarm)|Alarm (foo_alarm)]] Starts playback at the specified period of time.<br />
* [[Foobar2000:Components/Automatic BPM Analyser (foo_bpm)|Automatic BPM Analyser (foo_bpm)]] Automatically calculate the BPM of songs. Manual BPM calculation also available.<br />
* [[Foobar2000:Components 0.9/Autosave & Autobackup (foo_jesus)|Autosave & Autobackup (foo_jesus)]] Allows periodic automatic saving of configuration and other data in foobar2000 and keeping backup copies of such data.<br />
* [[Foobar2000:Components 0.9/Channel Usage Visualisation (foo_vis_channelusage)|Channel Usage Visualisation (foo_vis_channelusage)]] Channel Usage Visualisation.<br />
* [[Foobar2000:Components 0.9/EXTM3U Playlist Creator (foo_extm3u)|EXTM3U Playlist Creator (foo_extm3u)]] Allow to save current playlist in the EXTM3U format.<br />
* [[Foobar2000:Components 0.9/Feature Watcher (foo_whatsnew)|Feature Watcher (foo_whatsnew)]] Watches for added or removed features.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/HyperIM (foo_2hyperim)|HyperIM (foo_2hyperim)]] Provides 19 media macros.<br />
* [[Foobar2000:Components 0.9/Infospect (foo_infospect)|Infospect (foo_infospect)]] Displays low level playback information.<br />
* [[Foobar2000:Components 0.9/iPod Manager (foo_dop)|iPod Manager (foo_dop)]] Experimental iPod plugin for foobar2000 0.9.2+, currently in alpha version.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Logitech LCD Display & Visualization (foo_logitech_lcd)|Logitech LCD Display & Visualization (foo_logitech_lcd)]] Customizable visualizations and track info on the LCD panel on a Logitech G15/G19/Z-10.<br />
* [[Foobar2000:Components 0.9/Menu Addons (foo_menu_addons)|Menu Addons (foo_menu_addons)]] Adds a few shortcuts in menu.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Pause On Lock (foo_lock)|Pause On Lock (foo_lock)]] Pauses/unpauses foobar2000 on workstation lock/unlock.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Preview (foo_preview)|Preview (foo_preview)]] Play only part of each track in the playlist.<br />
* [[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.)<br />
* [[Foobar2000:Components 0.9/Run (foo_run)|Run (foo_run)]] Able you to run a external program with the foobar syntax.<br />
* [[Foobar2000:Components 0.9/Run Commands (foo_runcmd)|Run Commands (foo_runcmd)]] Search and execute menu commands.<br />
* [[Foobar2000:Components 0.9/Scheduler (foo_scheduler)|Scheduler (foo_scheduler)]] Plugin for scheduling actions like play, stop, system shutdown/wake up and many more.<br />
* [[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.<br />
* [[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. <br />
* [[Foobar2000:Components 0.9/Send To Device (foo_sendtodevice)|Send To Device (foo_sendtodevice)]] Add "Send to Device" feature.<br />
* [[Foobar2000:Components 0.9/Shell Link Resolver (foo_lnk)|Shell Link Resolver (foo_lnk)]] Shell link resolver.<br />
* [[Foobar2000:Components 0.9/Timebomb (foo_timebomb)|Timebomb (foo_timebomb)]] Stop playback / exit program after a specified time.<br />
* [[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).<br />
* [[Foobar2000:Components 0.9/Unpacker for 7-Zip archive (foo_unpack_7z) |Unpacker for 7-Zip archive (foo_unpack_7z)]]<br />
* [[Foobar2000:Components 0.9/Unpacker for JMA archive (foo_unpack_jma)|Unpacker for JMA archive (foo_unpack_jma)]]<br />
* [[Foobar2000:Components 0.9/Unpacker for LHA archive (foo_unpack_lha)|Unpacker for LHA archive (foo_unpack_lha)]]<br />
* [[Foobar2000:Components/UPnP/DLNA Renderer, Server, Control Point (foo_upnp)|UPnP/DLNA Renderer, Server, Control Point (foo_upnp)]]<br />
* [[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.<br />
<br />
===Lyrics===<br />
* [[Foobar2000:Components 0.9/Gasazip Lyrics (foo_gasazip)|Gasazip Lyrics (foo_gasazip)]] Search for lyrics and displays it in external window.<br />
* [[Foobar2000:Components 0.9/Lyrics Show 2(foo_uie_lyrics2)|Lyrics Show 2 (foo_uie_lyrics2)]] Downloads and displays lyrics, with LRC/timestamp support.<br />
*Lyrics Show 3 (foo_uie_lyrics3) An update of foo_uie_lyrics2 ([http://www.hydrogenaudio.org/forums/index.php?showtopic=90338 More Info])<br />
* [[Foobar2000:Components 0.9/LyricsDB (foo_lyricsdb)|LyricsDB (foo_lyricsdb)]] Search lyrics basing on song's artist title and sometimes album.<br />
* [[Foobar2000:Components 0.9/foo_lyricsgrabber2|Lyrics Grabber 2 (foo_lyricsgrabber2)]] Downloads lyrics and stores them in tags.<br />
* [[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.<br />
* [[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.<br />
<br />
===Notifier===<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Listening To (foo_listeningto)|Listening To (foo_listeningto)]] Sends NowPlaying information to Miranda IM.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/MSN avatar changer (foo_uie_albumart_msn)|MSN avatar changer (foo_uie_albumart_msn)]] Set currently playing song's album art as avatar.<br />
* [[Foobar2000:Components 0.9/MSN Now Playing (alt) (foo_msnalt)|MSN Now Playing (alt) (foo_msnalt)]] Show the current song as "Now Playing" in MSN and Windows Live messenger.<br />
* [[Foobar2000:Components_0.9/WLM_Notifier_(foo_wlm)|Windows Live Notifier (foo_wlm)]] Shows current song as "Now Playing" in in MSN Messenger and Windows Live messenger (WLM). Supports unicode.<br />
* [[Foobar2000:Components 0.9/On-Screen Display (foo_osd)|On-Screen Display (foo_osd)]] On screen display of track information and volume bar.<br />
* [[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.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Windows 7 Shell Integration (foo_w7shell)|Windows 7 Shell Integration (foo_w7shell)]] Integrates certain features into the Windows 7 Taskbar; seekbar, control buttons, etc.<br />
<br />
===Online database===<br />
* [[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.<br />
<br />
===Online radio===<br />
* [[Foobar2000:Components/Podcatcher (foo_podcatcher)|Podcatcher (foo_podcatcher)]] A podcatcher component for subscribing to, downloading, and playing RSS and Atom podcast feeds in foobar2000.<br />
* [[Foobar2000:Components/Vorbis Streamer (foo_vorbisstream)|Vorbis Streamer (foo_vorbisstream)]] Streams Vorbis and associated metadata to Icecast2 and Shoutcast servers.<br />
* [[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.<br />
<br />
===Playlist tools===<br />
* [[Foobar2000:Components 0.9/Audioscrobble Charts (foo_scrobblecharts)|Audioscrobble Charts (foo_scrobblecharts)]] Generate a playlist from an artist's Last.fm chart. It also allows you to sort a selection in the playlist by the artist's charts.<br />
* [[Foobar2000:Components 0.9/Bin Pack (foo_binpack)|Bin Pack (foo_binpack)]] Creates playlists from a list with a maximum length.<br />
* [[Foobar2000:Components 0.9/Command Playlist (foo_cmd_playlist)|Command Playlist (foo_cmd_playlist)]] Add /playlist-activate:"Name" to the foobar command line to activate the named playlist.<br />
* [[Foobar2000:Components 0.9/Cuesheet Creator (foo_cuesheet_creator)|Cuesheet Creator (foo_cuesheet_creator)]] Cuesheet creator.<br />
* [[Foobar2000:Components 0.9/Database Search (foo_dbsearch)|Database Search (foo_dbsearch)]] Database search.<br />
* [[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.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Highlight Playing (foo_highlightplaying)|Highlight Playing (foo_highlightplaying)]] Highlights actual now playing item even when the playlist has been broken.<br />
* [[Foobar2000:Components 0.9/History (foo_history)|History (foo_history)]] Very basic song history.<br />
* [[Foobar2000:Components 0.9/Inactive Tracks (foo_skip)|Inactive Tracks (foo_skip)]] Skips tracks that are marked via a tag as inactive.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Navigator (foo_navigator)|Navigator (foo_navigator)]] Advanced history component.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Playback Queue Viewer (foo_pqview)|Playback Queue Viewer (foo_pqview)]] Playback queue viewer.<br />
* [[Foobar2000:Components 0.9/Playlist Bind (foo_playlist_bind)|Playlist Bind (foo_playlist_bind)]] Synchronize playlist with contents of specific directory.<br />
* [[Foobar2000:Components 0.9/Playlist Clear (foo_playlistclear)|Playlist Clear (foo_playlistclear)]] All playlists are cleared at startup.<br />
* [[Foobar2000:Components/Playlist History (foo playlisthistory)|Playlist History (foo playlisthistory)]] Enables playlist history in foobar2000, similar to page history in browsers.<br />
* [[Foobar2000:Components 0.9/Playlist Manager (foo_playlist_manager)|Playlist Manager (foo_playlist_manager)]] Playlist manager.<br />
* [[Foobar2000:Components 0.9/Playlist Name Enhenced (foo_playlist_name_enhanced)|Playlist Name Enhenced (foo_playlist_name_enhanced)]] Appends automatically playlist info ("items / length") to all playlist names.<br />
* [[Foobar2000:Components 0.9/Playlist Tools (foo_utils)|Playlist Tools (foo_utils)]] Provides various general commands.<br />
* [[Foobar2000:Components 0.9/Playlist Tools for Matroska (foo_utils_mka)|Playlist Tools for Matroska (foo_utils_mka)]] Provides various general commands.<br />
* [[Foobar2000:Components 0.9/Queue Manager (foo_queuemanager)|Queue Manager (foo_queuemanager)]] It provides a window that shows the queue's contents and allows you to delete parts of them or clear the whole queue. ''Non-ColumnUI obsolete version, try panel version instead.''<br />
* [[Foobar2000:Components 0.9/Randomized Playlist Entry (foo_random)|Randomized Playlist Entry (foo_random)]] Randomized playlist entry.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Remove Played (foo_removeplayed)|Remove Played (foo_removeplayed)]] It removes tracks from the playlist once they've been played.<br />
* [[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).<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Track Position (foo_trackpos)|Track Position (foo_trackpos)]] Provides a new context menu item "place after current playing", that allows you to place any tracks after the current playing one in the playing playlist.<br />
* [[Foobar2000:Components 0.9/XSPF (foo_xspf)|XSPF (foo_xspf)]] Adds XSPF support. XSPF is an open, XML based playlist format.<br />
<br />
===Playback Statistics===<br />
* [[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.<br />
* [[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.<br />
<br />
===Remote control===<br />
* [[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)<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/COM Automation Server (foo_comserver2)|COM Automation Server (foo_comserver2)]] Allows controlling foobar2000 through COM Automation<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/DDE Control (foo_ddecontrol)|DDE Control (foo_ddecontrol)]] Control foobar remotelly with DDE interprocess communication (interface in japanese only).<br />
* [[Foobar2000:Components 0.9/HTTP Writer (foo_write_http)|HTTP Writer (foo_write_http)]] It's TCP/IP server that listens on a specified port for incoming requests such as play, stop, etc.<br />
* [[Foobar2000:Components 0.9/Joystick Control (foo_joystick_control)|Joystick Control (foo_joystick_control)]] Control foobar2000 from a joystick/gamepad.<br />
* [[Foobar2000:Components 0.9/Minibar2k (foo_Minibar2k)|Minibar2k (foo_Minibar2k)]] Control Foobar2k from your PDA (PocketPC based).<br />
* [[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.)<br />
* [[Foobar2000:Components 0.9/RM-1800 (foo_mr1800)|RM-1800 (foo_mr1800)]] Adds support of Creative X-Fi's remote (RM-1800).<br />
* [[Foobar2000:Components 0.9/RM-X Media Edition (foo_rmx)|RM-X Media Edition (foo_rmx)]] Yet another plugin for remote control. SHAREWARE.<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/WinLIRC Client (foo_lirc)|WinLIRC Client (foo_lirc)]] Control Foobar from a remote control.<br />
<br />
===Tagging===<br />
* [[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.<br />
* [[Foobar2000:Components 0.9/Custom Info (foo_custominfo)|Custom Info (foo_custominfo)]] Allows you to set info fields for files without modifying them. <br />
* [[Foobar2000:Components 0.9/Discogs (foo_discogs)|Discogs (foo_discogs)]] Retrieve info and album art from Discogs.com database.<br />
* [[Foobar2000:Components 0.9/Freedb Tagger (foo_freedb2)|Freedb Tagger (foo_freedb2)]] Freedb.org tagger. Now included with official foobar2000 installers.<br />
* [[Foobar2000:Components 0.9/Live Show Tagger (foo_tradersfriend)|Live Show Tagger (foo_tradersfriend)]] Live show tagger.<br />
* [[Foobar2000:Components 1.0/m-TAGS component (foo_tags)|m-TAGS component (foo_tags)]] Support for m-TAGS metadata separation (tags are kept in separate files)<br />
<br />
==Links==<br />
* [http://www.foobar2000.org/components Official third-party components site]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=42730&st=0 List of components] from earlier versions not yet ported to 0.9.x.<br />
<br />
* [[foobar2000:foobar2000|Go back to Main Page]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Title_Formatting_ReferenceFoobar2000:Title Formatting Reference2013-08-17T12:26:55Z<p>Foosion: /* $iflonger(s1,s2,then,else) */</p>
<hr />
<div>{{fb2k}}<br />
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.<br />
<br />
A field reference is a field name enclosed in percent signs, for example ''%artist%''. 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 ''()'' - or contain one or more parameters separated by commata, for example ''$abbr(%artist%)''. 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.<br />
<br />
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.<br />
<br />
For details of the query syntax, which uses some of these fields to find files for playlists, etc., see: [[Foobar2000:Query_syntax|Query Syntax]].<br />
<br />
= Field remappings =<br />
<br />
Some of the fields accessible through ''%name%'' are remapped to other values to make writing titleformat scripts more convenient.<br />
<br />
== Metadata ==<br />
<br />
=== %album artist% ===<br />
Name of the artist of the album specified track belongs to. Checks following metadata fields, in this order: "album artist", "artist", "composer", "performer". The difference between this and ''%artist%'' is that ''%album artist%'' is intended for use where consistent value across entire album is needed even when per-track artists values vary.<br />
<br />
=== %album% ===<br />
Name of the album specified track belongs to. Checks following metadata fields, in this order: "album", "venue".<br />
<br />
=== %artist% ===<br />
Name of the artist of the track. Checks following metadata fields, in this order: "artist", "album artist", "composer", "performer". For a SHOUTcast stream which contains metadata, it is the StreamTitle up to the first "-" character.<br />
<br />
=== %discnumber% ===<br />
Index of disc specified track belongs to, within the album. Available only when "discnumber"/"disc" field is present in track’s metadata.<br />
<br />
=== %track artist% ===<br />
Name of the artist of the track; present only if ''%album artist%'' is different than ''%artist%'' for specific track. Intended for use together with ''%album artist%'', to indicate track-specific artist info, e.g. "%album artist% - %title%[ '//' %track artist%]". In this case, the last part will be displayed only when track-specific artist info is present.<br />
<br />
=== %title% ===<br />
Title of the track. If "title" metadata field is missing, file name is used instead. For a SHOUTcast stream which contains metadata, it is the StreamTitle after the first "-" character.<br />
<br />
=== %tracknumber% ===<br />
Two-digit index of specified track within the album. Available only when "tracknumber" field is present in track’s metadata. An extra '0' is placed in front of single digit track numbers (5 becomes 05).<br />
<br />
=== %track number% ===<br />
Similar to %tracknumber%, however single digit track numbers are not reformatted to have an extra 0.<br />
<br />
== Technical information ==<br />
<br />
=== %bitrate% ===<br />
Bitrate of the track; includes dynamic VBR bitrate display for currently played track.<br />
<br />
=== %channels% ===<br />
Number of channels in the track (mono/stereo/etc). Returns the number of channels in text form; returns "mono" and "stereo" instead of "1" and "2".<br />
<br />
=== %filesize% ===<br />
Defined as ''%_filesize%''. Returns the filesize in bytes.<br />
<br />
=== %filesize_natural% ===<br />
Size of the file, automatically formatted in appropriate units such as megabytes or kilobytes. <br />
<br />
=== %samplerate% ===<br />
Sample rate of the track, in Hz.<br />
<br />
=== %codec% ===<br />
Name of codec used to encode the track. If exact codec name is not available, file extension is used.<br />
<br />
== Special fields ==<br />
<br />
= Control flow =<br />
<br />
The functions in this section can be used to conditionally execute statements.<br />
<br />
=== [...] (conditional section) ===<br />
<br />
Evaluates the expression between ''['' and '']''. If it has the truth value ''true'', its string value and the truth value ''true'' are returned. Otherwise an empty string and ''false'' are returned.<br />
<br />
Example: ''[%artist%]'' returns the value of the artist tag, if it exists. Otherwise it returns nothing, when ''artist'' would return "?".<br />
<br />
=== $if(cond,then) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, ''false'' is returned.<br />
<br />
=== $if(cond,then,else) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, the ''else'' part is evaluated and its value returned.<br />
<br />
=== $if2(a,else) ===<br />
<br />
Like ''$if(a,a,else)'' except that ''a'' is only evaluated once.<br />
<br />
=== $if3(a1,a2,...,aN,else) ===<br />
<br />
Evaluates arguments ''a1'' ... ''aN'', until one is found that evaluates to ''true''. If that happens, its value is returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifequal(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is equal to ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifgreater(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is greater than ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $iflonger(s,n,then,else) ===<br />
<br />
Compares the length of the string ''s'' to the number ''n'', if ''s'' is longer than ''n'' characters, the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $select(n,a1,...,aN) ===<br />
<br />
If the value of ''n'' is between 1 and N, ''an'' is evaluated and its value returned. Otherwise ''false'' is returned.<br />
<br />
= Arithmetic functions =<br />
<br />
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:<br />
* "c3po" → 0<br />
* "4.8" → 4<br />
* "-12" → -12<br />
* "- 12" → 0<br />
<br />
=== $add(a,b) ===<br />
<br />
Adds ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$add(a,b,...)'' is the same as ''$add($add(a,b),...)''.<br />
<br />
=== $div(a,b) ===<br />
<br />
Divides ''a'' by ''b'' and rounds down to an integer. If ''b'' evaluates to zero, it returns ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$div(a,b,...)'' is the same as ''$div($div(a,b),...)''.<br />
<br />
=== $greater(a,b) ===<br />
<br />
Returns true, if ''a'' is greater than ''b'', otherwise false.<br />
<br />
=== $max(a,b) ===<br />
<br />
Returns the maximum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$max(a,b,...)'' is the same as ''$max($max(a,b),...)''.<br />
<br />
=== $min(a,b) ===<br />
<br />
Returns the minimum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$min(a,b,...)'' is the same as ''$min($min(a,b),...)''.<br />
<br />
=== $mod(a,b) ===<br />
<br />
Computes the remainder of dividing ''a'' through ''b''. The result has the same sign as ''a''. If ''b'' evaluates to zero, the result is ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mod(a,b,...)'' is the same as ''$mod($mod(a,b),...)''.<br />
<br />
=== $mul(a,b) ===<br />
<br />
Multiplies ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mul(a,b,...)'' is the same as ''$mul($mul(a,b),...)''.<br />
<br />
=== $muldiv(a,b,c) ===<br />
<br />
Multiplies ''a'' and ''b'', then divides by ''c''. The result is rounded to the nearest integer.<br />
<br />
=== $rand() ===<br />
<br />
Generates a random number in the range from 0 to 2<sup>32</sup>-1. Available only in sort-related contexts, such as the ''Edit → Sort → Sort by ...'' menu command.<br />
<br />
=== $sub(a,b) ===<br />
<br />
Subtracts ''b'' from ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$sub(a,b,...)'' is the same as ''$sub($sub(a,b),...)''.<br />
<br />
= Boolean functions =<br />
<br />
The functions in this section can be used to work with truth values (''true'' and ''false''), 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 ''$if'' and related functions.<br />
<br />
=== $and(...) ===<br />
<br />
Logical And of an arbitrary number of arguments. Returns ''true'', if and only if all arguments evaluate to ''true''.<br />
<br />
Special case: ''$and(x,y)'' is ''true'', if both ''x'' and ''y'' are ''true''. Otherwise it is ''false''.<br />
<br />
=== $or(...) ===<br />
<br />
Logical Or of an arbitrary number of arguments. Returns ''true'', if at least one argument evaluates to ''true''.<br />
<br />
Special case: ''$or(x,y)'' is ''true'', if ''x'' or ''y'' is ''true'', or if both are ''true''. Otherwise it is ''false''.<br />
<br />
=== $not(x) ===<br />
<br />
Logical Not. Returns ''false'', if ''x'' is ''true'', otherwise it returns ''true''.<br />
<br />
=== $xor(...) ===<br />
<br />
Logical Exclusive-or of an arbitrary number of arguments. Returns ''true'', if an odd number of arguments evaluate to ''true''.<br />
<br />
Special case: ''$xor(x,y)'' is ''true'', if one of ''x'' and ''y'' is ''true'', but not both. Otherwise it is ''false''.<br />
<br />
= Color functions =<br />
<br />
==For the Default User Interface==<br />
Starting in version 1.0, the Default UI playlist view doesn't support color functions. In that location, text color can only be adjusted via angle-bracket syntax: Use < and > characters to make specific text <dimmed> ''vs.'' the default color or >highlight>ed with the highlight color, with up to three levels in each case, ''e.g.'': <dimmed>, >highlight<, >>more highlight<<, <<<very dim>>>.<br />
<br />
==For Columns UI==<br />
<br />
The playlist in the Columns UI still supports the following functions:<br />
<br />
=== $blend(color1,color2,part,total) ===<br />
<br />
Returns a color that is a blend between ''color1'' and ''color2''. If ''part'' is smaller than or equal to zero, ''color1'' is returned. If ''part'' is greater than or equal to ''total'', ''color2'' is returned. Otherwise a blended color is returned that is ''part'' parts ''color1'' and ''total''-''part'' parts ''color2''. The blending is performed in the RGB color space.<br />
<br />
=== $hsl() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $hsl(h,s,l) ===<br />
<br />
Sets the color for text in the HSL color space. ''h'', ''s'' and ''l'' are the hue, saturation, and lightness of the color for unselected text. The color for selected text is set to the inverse color.<br />
The ranges of ''h'', ''s'', and ''l'' are from 0 to 240; the function is designed to interpret those values in the same way as the standard Windows color dialog.<br />
<br />
=== $hsl(h1,s1,l1,h2,s2,l2) ===<br />
<br />
Sets the color for text in the HSL color space. ''h1'', ''s1'' and ''l1'' are the hue, saturation, and lightness of the color for unselected text. ''h2'', ''s2'' and ''l2'' are the hue, saturation, and lightness of the color for selected text.<br />
<br />
=== $rgb() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $rgb(r,g,b) ===<br />
<br />
Sets the color for text. ''r'', ''g'' and ''b'' are the red, green and blue component of the color for unselected text. The color for selected text is set to the inverse color.<br />
<br />
=== $rgb(r1,g1,b1,r2,g2,b2) ===<br />
<br />
Sets the color for text. ''r1'', ''g1'' and ''b1'' are the red, green and blue component of the color for unselected text. ''r2'', ''g2'' and ''b2'' are the red, green and blue component of the color for selected text.<br />
<br />
=== $transition(string,color1,color2) ===<br />
<br />
Inserts color codes into ''string'', so that the first character has ''color1'', the last character has ''color2'', 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 ''$transition''.<br />
<br />
= Now playing info =<br />
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.<br />
<br />
== Special fields ==<br />
<br />
=== %playback_time% ===<br />
Returns the elapsed time formatted as [HH:]MM:SS.<br />
<br />
=== %playback_time_seconds% ===<br />
Returns elapsed time in seconds.<br />
Old version: <code>%_time_elapsed%</code><br />
<br />
=== %playback_time_remaining% ===<br />
Returns remaining time until track ends, formatted as [HH:]MM:SS.<br />
Old version: <code>%_time_remaining%</code><br />
<br />
=== %playback_time_remaining_seconds% ===<br />
Returns remaining time in seconds.<br />
Old version: <code>%_time_remaining_seconds%</code><br />
<br />
=== %length% ===<br />
Returns the length of the track formatted as hours, minutes, and seconds.<br />
Old version: <code>%_time_total%</code><br />
<br />
=== %length_ex% ===<br />
Returns the length of the track formatted as hours, minutes, seconds, and milliseconds.<br />
<br />
=== %length_seconds% ===<br />
Returns the length of the track in seconds.<br />
Old version: <code>%_time_total_seconds%</code><br />
<br />
=== %length_seconds_fp% ===<br />
Returns the length of the track in seconds as floating point number.<br />
<br />
=== %length_samples% ===<br />
Returns the length of the track in samples.<br />
<br />
= Playlist info =<br />
The following functions and fields are usable for playlist display formatting (eg. per-column title formatting patterns).<br />
<br />
== Special fields ==<br />
<br />
=== %isplaying% ===<br />
<br />
Returns "1" if file is currently playing and empty string otherwise.<br />
<br />
=== %ispaused% ===<br />
<br />
Returns "1" if playback is paused, empty string otherwise.<br />
<br />
=== %list_index% ===<br />
<br />
Returns a zero-padded playlist index of specified item. The first item is at index 1.<br />
<br />
=== %list_total% ===<br />
<br />
Returns number of items in the playlist.<br />
<br />
=== %queue_index% ===<br />
<br />
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.<br />
<br />
=== %queue_indexes% ===<br />
<br />
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.<br />
<br />
=== %queue_total% ===<br />
<br />
Total amount of tracks in playback queue. Available only for queued tracks, for technical reasons. <br />
<br />
= String functions =<br />
<br />
The functions in this section can be used to manipulate character strings.<br />
<br />
=== $abbr(x) ===<br />
<br />
Returns abbreviation of ''x''. Words which begin with an alphanumeric character are shortened to the first character. Spaces and parentheses are stripped. Example:<br />
* $abbr('This is a Long Title (12-inch version) [needs tags]') → TiaLT1v[needst<br />
<br />
=== $abbr(x,len) ===<br />
<br />
Returns abbreviation of ''x'', if ''x'' is longer than ''len'' characters, otherwise returns ''x''.<br />
<br />
=== $ansi(x) ===<br />
<br />
Converts ''x'' 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.<br />
<br />
=== $ascii(x) ===<br />
<br />
Converts ''x'' to ASCII. Any characters that are not present in ASCII will be removed / replaced.<br />
<br />
=== $caps(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and all other letters to lowercase.<br />
<br />
=== $caps2(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and leaves all other letters as they are.<br />
<br />
=== $char(x) ===<br />
<br />
Inserts Unicode character with code ''x''. You can search for characters and find the matching decimal number on this [http://www.fileformat.info/info/unicode/char/search.htm site].<br />
<br />
=== $crc32(a) ===<br />
<br />
Computes the CRC32 of the string ''a'' as a number. Intended for use in coloring scripts.<br />
<br />
Example: $rgb($mod($crc32(%album%),256),128,128)<br />
<br />
=== $crlf() ===<br />
<br />
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 ("systray") icon.<br />
<br />
=== $cut(a,len) ===<br />
<br />
Returns first ''len'' characters from the left of the string ''a''. This function is the same as $left(a,len). Negative numbers produce the entire string. Examples:<br />
* $cut('abc123',3) → abc<br />
* $cut('abc123',0) → (nothing)<br />
* $cut('abc123',-1) → abc123<br />
<br />
=== $directory(x) ===<br />
<br />
Extracts directory name from the file path ''x''.<br />
<br />
=== $directory(x,n) ===<br />
<br />
Extracts directory name from the file path ''x''; goes up by ''n'' levels.<br />
<br />
=== $directory_path(x) ===<br />
<br />
Extracts directory path from the file path ''x''.<br />
<br />
=== $ext(x) ===<br />
<br />
Extracts file extension from ''x'' which must be a file name or path.<br />
<br />
=== $filename(x) ===<br />
<br />
Extracts file name from full path.<br />
<br />
=== $fix_eol(x) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by " (...)". Otherwise ''x'' is returned unaltered.<br />
<br />
=== $fix_eol(x,indicator) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by ''indicator''. Otherwise ''x'' is returned unaltered.<br />
<br />
=== $hex(n) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation.<br />
<br />
=== $hex(n,len) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $insert(a,b,n) ===<br />
<br />
Inserts ''b'' into ''a'' after ''n'' characters.<br />
<br />
=== $left(a,len) ===<br />
<br />
Returns first ''len'' characters from the left of the string ''a''. This function is the same as $cut(a,len). Negative numbers produce the entire string. Examples:<br />
* $left('abc123',3) → abc<br />
* $left('abc123',0) → (nothing)<br />
* $left('abc123',-1) → abc123<br />
<br />
=== $len(a) ===<br />
<br />
Returns length of string ''a'' in characters.<br />
<br />
=== $len2(a) ===<br />
<br />
Returns length of string x in characters, respecting double-width character rules (double-width characters will be counted as two).<br />
<br />
=== $longer(a,b) ===<br />
<br />
Returns ''true'', if string ''a'' is longer than string ''b'', false otherwise.<br />
<br />
=== $lower(a) ===<br />
<br />
Converts ''a'' to lowercase.<br />
<br />
=== $longest(a,...) ===<br />
<br />
Returns the longest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $num(n,len) ===<br />
<br />
Formats the integer number ''n'' in decimal notation with ''len'' characters. Pads with zeros from the left if necessary. ''len'' includes the dash when the number is negative. If ''n'' is not numeric, it is treated as zero. Examples:<br />
<br />
* $num(123,5) → 00123<br />
* $num(-123,5) → -0123<br />
* $num(4.8,5) → 00004<br />
* $num(A1,5) → 00000<br />
<br />
=== $pad(x,len) ===<br />
<br />
Pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $pad_right(x,len) ===<br />
<br />
Pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $pad(x,len,char) ===<br />
<br />
Pads ''x'' from the left with ''char'' to ''len'' characters.<br />
<br />
=== $pad_right(x,len,char) ===<br />
<br />
Pads ''x'' from the right with ''char'' to ''len'' characters.<br />
<br />
=== $padcut(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $padcut_right(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $progress(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with.<br />
<br />
Example:''$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=')'' produces "====#===============", the # character is moving with playback position.<br />
<br />
=== $progress2(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with. Produces different appearance than ''$progress''.<br />
<br />
=== $repeat(a,n) ===<br />
<br />
Returns ''n'' copies of ''a''. Note that ''a'' is evaluated once before its value is used, so ''$repeat'' cannot be used for loops.<br />
<br />
=== $replace(a,b,c) ===<br />
<br />
Replaces all occurrences of string ''b'' in string ''a'' with string ''c''.<br />
<br />
Can also be used with an arbitrary number of arguments. Note that ''$replace(a,b1,c1,b2,c2)'' is generally not the same as ''$replace($replace(a,b1,c1),b2,c2)''.<br />
<br />
Example: ''$replace(ab,a,b,b,c)'' → "bc", ''$replace($replace(ab,a,b),b,c)'' → "cc"<br />
<br />
=== $right(a,len) ===<br />
<br />
Returns the first ''len'' characters from the right of ''a''.<br />
<br />
=== $roman(n) ===<br />
<br />
Formats the integer number ''n'' in roman notation.<br />
<br />
=== $rot13() ===<br />
<br />
Performs [http://en.wikipedia.org/wiki/ROT13 ROT13] transformation to given string.<br />
<br />
Example: ''$rot13('foobar2000')'' → "sbbone2000".<br />
<br />
=== $shortest ===<br />
<br />
Returns the shortest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $strchr(s,c) ===<br />
<br />
Finds first occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strchr(abca,a)'' → 1<br />
<br />
=== $strrchr(s,c) ===<br />
<br />
Finds last occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strrchr(abca,a)'' → 4<br />
<br />
=== $strstr(s1,s2) ===<br />
<br />
Finds first occurence of string ''s2'' in string ''s1''.<br />
<br />
=== $strcmp(s1,s2) ===<br />
<br />
Performs a case-sensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $stricmp(s1,s2) ===<br />
<br />
Performs a case-insensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $substr(s,m,n) ===<br />
<br />
Returns substring of string ''s'', starting from ''m''-th character and ending at ''n''-th character.<br />
<br />
=== $stripprefix(x) ===<br />
<br />
Removes ''A'' and ''The'' prefixes from x. <br />
<br />
=== $stripprefix(x,prefix1,prefix2,...) ===<br />
<br />
Removes the specified prefixes from x. <br />
<br />
=== $swapprefix(x) ===<br />
<br />
Moves ''A'' and ''The'' prefixes to the end of x. <br />
<br />
=== $swapprefix(x,prefix1,prefix2,...) ===<br />
<br />
Moves the specified prefixes to the end of x. <br />
<br />
=== $trim(s) ===<br />
<br />
Removes leading and trailing spaces from string ''s''.<br />
<br />
=== $tab() ===<br />
<br />
Inserts one tabulator character.<br />
<br />
=== $tab(n) ===<br />
<br />
Inserts ''n'' tabulator characters.<br />
<br />
=== $upper(s) ===<br />
<br />
Converts string ''s'' to uppercase.<br />
<br />
= Track info =<br />
<br />
The functions and fields in this section can be used to access information about tracks.<br />
<br />
== Metadata ==<br />
<br />
=== $meta(name) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ", " as separator.<br />
<br />
Example: ''$meta(artist)'' → "He, She, It"<br />
<br />
=== $meta(name,n) ===<br />
Returns value of ''n''-th (0,1,2 and so on) tag called ''name''.<br />
<br />
Example: ''$meta(artist,1)'' → "She"<br />
<br />
=== $meta_sep(name,sep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator.<br />
<br />
Example: ''$meta_sep(artist,' + ')'' → "He + She + It"<br />
<br />
=== $meta_sep(name,sep,lastsep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator between all but the last two values which are concatenated with ''lastsep''.<br />
<br />
Example: ''$meta_sep(artist,', ',', and ')'' → "He, She, and It"<br />
<br />
=== $meta_test(...) === <br />
Returns ''1'', if all given tags exist, ''undefined'' otherwise.<br />
<br />
Example: ''$meta_test(artist,title)'' → true<br />
<br />
=== $meta_num(name) ===<br />
Returns the number of values for the tag called ''name''.<br />
<br />
Example: ''$meta_num(artist)'' → 3<br />
<br />
== Technical information ==<br />
<br />
=== $info(name) ===<br />
Returns value of technical information field called ''name''.<br />
<br />
For convenience, the '''%__name%''' alias is also available.<br />
<br />
Example: ''$info(channels)'' → 2<br />
<br />
Here is an '''informative''' list of recognized fields. Some of these depend on the media file type being queried.<br />
<br />
{| border="0" cellspacing="0" cellpadding="2"<br />
! field name<br />
! Description<br />
|-<br />
| colspan="2" style="background-color:#CCF"|'''General'''<br />
|-<br />
|codec<br />
| style="background-color:#EEF"|'''Codec''' (''e.g.'' MP3)<br />
|-<br />
|codec_profile<br />
| style="background-color:#EEF"|'''Codec Profile''' (''e.g.'' CBR)<br />
|-<br />
|samplerate<br />
| style="background-color:#EEF"|'''Sample Rate''', in hertz (''e.g.'' 44100)<br />
|-<br />
|bitrate<br />
| style="background-color:#EEF"|'''Bitrate''', in kilobits per second (''e.g.'' 320)<br />
|-<br />
|tool<br />
| style="background-color:#EEF"|'''Tool''' used to produce the file, possibly guessed (''e.g.'' LAME3.97)<br />
|-<br />
|encoding<br />
| style="background-color:#EEF"|'''Encoding''' lossiness (''e.g.'' lossy)<br />
|-<br />
|channels<br />
| style="background-color:#EEF"|'''Channels''' count (''e.g.'' 2 <nowiki>[for stereo]</nowiki>)<br />
|-<br />
|channel_mode<br />
| style="background-color:#EEF"|'''Channel Mode''', description of channels (''e.g.'' 3 front, 2 rear surround channels + LFE)<br />
|-<br />
|bitspersample<br />
| style="background-color:#EEF"|'''Bits Per Sample''' (''e.g.'' 16)<br />
|-<br />
|tagtype<br />
| style="background-color:#EEF"|'''Tag Type''', comma-separated list of tag formats (''e.g.'' id3v2|apev2)<br />
|-<br />
|cue_embedded<br />
| style="background-color:#EEF"|'''Embedded Cuesheet''' presence (''e.g.'' no <nowiki>[may be empty!]</nowiki>)<br />
|-<br />
|md5<br />
| style="background-color:#EEF"|'''Audio MD5''' hash, if container defines it (''e.g.'' 1E24A910D91EF09A8CF403C9B6963961)<br />
|-<br />
| colspan="2" style="background-color:#CCF"|'''Other'''<br />
|-<br />
|ENC_DELAY<br />
| style="background-color:#EEF"|LAME proprietary MP3 '''enc_delay''' value (''e.g.'' 576)<br />
|-<br />
|ENC_PADDING<br />
| style="background-color:#EEF"|LAME proprietary MP3 '''enc_padding''' value (''e.g.'' 1536)<br />
|-<br />
|MP3_ACCURATE_LENGTH<br />
| style="background-color:#EEF"|'''mp3_accurate_length''' supported (LAME proprietary header)? (''e.g.'' yes)<br />
|-<br />
|MP3_STEREO_MODE<br />
| style="background-color:#EEF"|Stereo mode used in MP3 file (''e.g.'' mono, stereo, joint stereo, etc.)<br />
|-<br />
|VERSION<br />
| style="background-color:#EEF"|'''Version''' of tool (''e.g.'' 3.99)<br />
|-<br />
|FLAGS<br />
| style="background-color:#EEF"|'''Flags''' of tool (''e.g.'' 22)<br />
|}<br />
<br />
=== $channels() === <br />
Returns number of channels in text format.<br />
<br />
Example: ''$channels()'' → "stereo"<br />
<br />
=== %replaygain_album_gain% ===<br />
<br />
Returns ReplayGain album gain value.<br />
<br />
=== %replaygain_album_peak% ===<br />
<br />
Returns ReplayGain album peak value.<br />
<br />
=== %replaygain_track_gain% ===<br />
<br />
Returns ReplayGain track gain value.<br />
<br />
=== %replaygain_track_peak% ===<br />
<br />
Returns ReplayGain track peak value.<br />
<br />
== Special fields ==<br />
<br />
==== %filename% ====<br />
<br />
Returns the filename without directory and extension.<br />
<br />
==== %filename_ext% ====<br />
<br />
Returns the filename with extension, but without the directory.<br />
<br />
==== %directoryname% ====<br />
<br />
Returns the name of the parent directory only, not the complete path.<br />
<br />
==== %last_modified% ====<br />
<br />
Returns the date and time the file was last modified. Eg: ''2005-12-22 00:04:10''<br />
<br />
==== %path% ====<br />
<br />
Returns the path.<br />
<br />
==== %_path_raw% ====<br />
<br />
Returns the path as URL including the protocol scheme.<br />
<br />
==== %subsong% ====<br />
<br />
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.<br />
<br />
==== %_foobar2000_version% ====<br />
Returns a string representing the version of foobar2000.<br />
<br />
= Time/Date Functions =<br />
<br />
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]].<br />
<br />
=== $year(time) ===<br />
<br />
Retrieves the year part (formatted as four digits) from a time/date string.<br />
<br />
=== $month(time) ===<br />
<br />
Retrieves the month part (formatted as two digits) from a time/date string.<br />
<br />
=== $day_of_month(time) ===<br />
<br />
Retrieves the day of month part (formatted as two digits) from a time/date string.<br />
<br />
=== $date(time) ===<br />
<br />
Retrieves the date part (formatted as YYYY-MM-DD) from a time/date string.<br />
<br />
=== $time(time) ===<br />
<br />
Retrieves the time part (formatted as HH:MM:SS or HH:MM) from a date/time string.<br />
<br />
= Variable operations =<br />
<br />
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.<br />
<br />
For example:<br />
{| border="0" cellspacing="0" cellpadding="2"<br />
! code<br />
! output<br />
|-<br />
|<pre>$put(foo,bar)$char(10)<br />
$get(foo)$char(10)<br />
$get(Foo)$char(10)<br />
$puts(foo,2000)$char(10)<br />
$get(foo)$char(10)</pre><br />
| style="background-color:#EEF" |<pre>bar<br />
bar<br />
bar<br />
<br />
2000</pre><br />
|}<br />
=== $get(name) ===<br />
<br />
Returns the value that was last stored in the variable ''name'', if the variable was not defined (yet), it returns nothing. The truth value returned by ''$get'' indicates if the variable ''name'' was defined<br />
<br />
=== $put(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns ''value'' unaltered<br />
<br />
=== $puts(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns nothing<br />
<br />
= Component-provided fields and functions on tracks =<br />
<br />
This section lists components that provide additional fields and functions that are useable in the context of any track.<br />
<br />
== Playback statistics ==<br />
<br />
* [http://www.foobar2000.org/components/view/foo_playcount Playback statistics homepage]<br />
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]<br />
<br />
= Component-specific fields and functions =<br />
<br />
This section lists components that provide additional fields and functions that are only usable in the context of the particular component.<br />
<br />
== Album list ==<br />
* [[Foobar2000:Titleformat_Album_List|Album List Title Formatting]]<br />
* [[Foobar2000:Preferences:Album List|Preferences: Album List]]<br />
== Playlist Organizer ==<br />
* [http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components/Playlist_Organizer_(foo_plorg)#Nodes Playlist Organizer: Nodes Title Formatting]<br />
<br />
== Columns UI ==<br />
<br />
* [http://yuo.be/columns.php Columns UI homepage]<br />
* [http://yuo.be/wiki/columns_ui:config:global_variables Global variables reference]<br />
* [http://yuo.be/wiki/columns_ui:config:colour_string Playlist colors reference]<br />
* [http://yuo.be/wiki/columns_ui:config:playlist_switcher_titleformatting Playlist switcher reference]<br />
<br />
= Additional Reading =<br />
<br />
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]<br />
* '''titleformat_help.html''' in your Foobar2000 directory (ie C:\Program Files\foobar2000\titleformat_help.html) file:///C:/Program%20Files/foobar2000/titleformat_help.html<br />
<br />
<br />
[[Category:foobar2000 Guides|Titleformat Reference]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:ConverterFoobar2000:Converter2013-07-12T19:24:12Z<p>Foosion: /* Converter Setup dialog */ Added details about Destination sub-page. Unified spelling of subpage.</p>
<hr />
<div>{{fb2k}}<br />
''This page contains information specific to the new Converter included with foobar2000 versions 1.1 and newer.''<br />
<br />
The Converter component is included with foobar2000 installers. It allows you to convert your audio files to other file formats.<br />
<br />
Note that the Converter component is required for [[foobar2000:Ripping CDs|ripping CDs with foobar2000]].<br />
<br />
= Supported file formats=<br />
==Source file formats==<br />
The converter supports any formats playable by your foobar2000 configuration, natively or through optional input components.<br />
<br />
==Output file formats==<br />
* [[WAV]] - natively<br />
* [[Wave64]] - natively<br />
* [[AIFF]] - natively<br />
* [[AU|AU/SND]] - natively<br />
* [[FLAC]] - command-line encoder executable (FLAC.exe) required<br />
* [[MP3]] - using [[LAME]] - command-line encoder executable (LAME.exe) required<br />
* [[AAC|AAC/MP4]] - using [[Nero AAC]] encoder - command-line encoder executable (neroAacEnc.exe) required<br />
* [[Ogg Vorbis]] - command-line encoder executable (OggEnc.exe) required<br />
* [[WavPack]] - command-line encoder executable (wavpack.exe) required<br />
* [[Musepack]] - command-line encoder executable (mpcenc.exe) required<br />
<br />
More output file formats can be added using [[Foobar2000:Preferences:converter:custom presets|"custom" encoder mode]] with other command-line encoders. Archives containing converter executables can be found at http://rarewares.org (Rarewares).<br />
<br />
= Converter Setup dialog =<br />
<br />
[[Image:Foobar2000_11_Converter_Setup.png|thumb]]<br />
<br />
The Converter Setup dialog consists of:<br />
* An overview page summarizing current settings and allowing you to easily manage presets.<br />
* Subpages that deal with specific aspects of conversion:<br />
** Output file format selection<br />
** Conversion destination - target folder, file splitting and file name formatting<br />
** Processing - ReplayGain, DSP, and processing offered by optional components for things like DTS, HDCD, and [[pre-emphasis]]<br />
** Other - optional preview generation, actions to perform after the conversion.<br />
<br />
== Destination subpage ==<br />
<br />
[[Image:Foobar2000_128_Converter_Setup_Destination.png|thumb]]<br />
<br />
The Destination subpage defines how and where the converter generates the output files.<br />
<br />
* Output path: This section defines the root folder where output files are generated.<br />
* If the file already exists: This section defines how the converter handles file name conflicts with existing files. It can either overwrite the existing file or skip the file. If "Ask" is selected the converter will display a dialog window each time a file name conflict occurs during conversion. If "Skip" or "Overwrite" is selected it will always skip or overwrite files.<br />
* Output style and file name formatting: This section defines whether each track is converted to a separate file or multiple tracks are put into one file. The name format for both the single-track and the multi-track options allows the use of / (forward slash) or \ (backward slash) to generate subfolders inside the chosen root folder.<br />
** Convert each track to an individual file: Like the name of the option suggests the converter will generate one output file for each selected tracks.<br />
** Generate multi-track files: All tracks with the same formatted name will be put into the same file. If the output format has native support for multiple tracks in one file (e.g. Ogg and MP4 containers), the converter will use this. Otherwise the converter will generate an accompanying cue sheet file (.cue) for each multi-track file.<br />
** Merge all tracks into one output file: A single file is generated for all selected tracks. The converter will display a dialog window to choose the destination file name when conversion is started. The generated file contains a single track. No cue sheet file is generated.<br />
<br />
== Usage tips ==<br />
You can navigate between the overview page and the most recently viewed subpage using browse forward/back buttons on your mouse.<br />
<br />
You can also navigate through all the subpages with Ctrl+Tab / Shift+Ctrl+Tab.<br />
<br />
= See Also =<br />
[[Foobar2000:Ripping CDs|Ripping CDs with foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=File:Foobar2000_128_Converter_Setup_Destination.pngFile:Foobar2000 128 Converter Setup Destination.png2013-07-12T18:59:46Z<p>Foosion: The "Destination" page of the Converter Setup dialog (foobar2000 1.2.8/Converter 1.5)</p>
<hr />
<div>The "Destination" page of the Converter Setup dialog (foobar2000 1.2.8/Converter 1.5)</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Album_ListFoobar2000:Preferences:Album List2010-01-09T00:01:17Z<p>Foosion: Spelling</p>
<hr />
<div>[[Category:foobar2000 Preferences|Album List]]<br />
= Album List =<br />
<br />
[[Image:Foobar2000-Preferences-albumlist.png|Screenshot]]<br />
<br />
Album List is a [[Foobar2000:Preferences:Media Library|Media Library]] viewer that presents Media Library contents in a tree-like view.<br />
<br />
== Views ==<br />
<br />
List of views available in your Album List window. Each view's pattern is a [[Foobar2000:Title Formatting|title formatting]] string defining how the tree structure is built, with parts generating different branch levels separated with | characters.<br />
<br />
Some of views use the %<field>% syntax - specific to the Album List component - that allows a single item to be present in more than one branch when the referenced field has more than one value. For an example: a track with two genre values: "rock" and "progressive" will be placed in a "rock, progressive" branch with %genre%, but in both "rock" and "progressive" branches instead with %<genre>%.<br />
<br />
Album List contains some other [[Foobar2000:Titleformat_Album_List|specific title formatting syntax]], not common to title formatting's use in other parts of foobar2000.<br />
<br />
== Events ==<br />
<br />
This section lets you override certain default tree view behaviors with custom ones.<br />
<br />
== Playlist Interaction ==<br />
<br />
This section lets you customize how Album List's playlist interaction commands work. <br />
<br />
See also: right-click menu commands on each Album List item.<br />
<br />
=Related pages=<br />
<br />
* [[Foobar2000:Foobar2000 | Foobar2000]]<br />
* [[Foobar2000:Preferences:Media Library | Preferences: Media Library]]<br />
* [[Foobar2000:Preferences | Preferences]]<br />
* [[Foobar2000:Titleformat_Album_List | Album List specific title formatting]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Quick_TaggerFoobar2000:Preferences:Quick Tagger2008-05-25T16:14:41Z<p>Foosion: New page: Quick Tagger = Preferences: Quick Tagger = == Quick Tagger Fields == Use the buttons above the list to edit the entries of the list. Alternatively, you...</p>
<hr />
<div>[[Category:foobar2000 Preferences|Quick Tagger]]<br />
= Preferences: Quick Tagger =<br />
<br />
== Quick Tagger Fields ==<br />
Use the buttons above the list to edit the entries of the list. Alternatively, you can use the context menu on the list itself. Enter the name of the tag field in the "Field Name" column. Enter a list of values in the "Values" column. Use a semicolon (";") to separate individual values. Note that the values will be used as-is, title formatting is not applied.<br />
<br />
= See also =<br />
* [http://www.foobar2000.org/components/ Homepage/Download]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=58234&hl=Quick+tagger Official forum thread]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000redirect:3C13DE32-DCEF-40B9-915B-87BFF37D406BFoobar2000redirect:3C13DE32-DCEF-40B9-915B-87BFF37D406B2008-05-25T15:56:43Z<p>Foosion: Redirecting to Foobar2000:Preferences:Quick Tagger</p>
<hr />
<div>#redirect [[Foobar2000:Preferences:Quick Tagger]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Display:TitleformattingFoobar2000:Preferences:Display:Titleformatting2008-03-22T22:22:27Z<p>Foosion: Described differences between 0.9.5 and older versions</p>
<hr />
<div>[[Category:foobar2000 Preferences|Titleformatting]]<br />
In versions prior to foobar2000 0.9.5, this page allows customization of some global titleformatting scripts. It is specifically applicable to the Default User Interface, and may be applicable to alternative user interfaces as well.<br />
<br />
Starting with foobar2000 0.9.5, this preferences page no longer exists. All title formatting options for the Default User Interface have been moved to the components own preferences pages. For compatibility with old components, the global title formatting options are still available on the Advanced preferences page in the Display branch as "Legacy title formatting options".<br />
<br />
The rest of this page describes the preferences page as it exists in versions prior to 0.9.5.<br />
<br />
Previous: [[Foobar2000|Foobar2000:]][[Foobar2000:Preferences|Preferences:]][[Foobar2000:Preferences:Display|Display:]]<br />
<br />
=Titleformatting=<br />
<br />
This page allows customization of some global titleformatting scripts. Note that the playlist script is used by the Default User Interface, but not necessarily by other user interfaces; for example, Columns UI uses columns based configuration for the playlist display.<br />
<br />
[[Image:Display_Titleformatting.png|Titleformatting]]<br />
<br />
=Options=<br />
<br />
TODO: Describe options.<br />
<br />
=Subpages=<br />
<br />
This page has no subpages.<br />
<br />
=Related information=<br />
<br />
* [[Foobar2000:Titleformat_Introduction|Introduction to writing titleformat scripts]]<br />
* [[Foobar2000:Titleformat_Reference|Reference of fields and functions in titleformat scripts]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:DisplayFoobar2000:Preferences:Display2008-03-22T22:15:32Z<p>Foosion: /* Subpages */</p>
<hr />
<div>[[Category:foobar2000 Preferences|Display]]<br />
[[Image:Preferences-Display.png|thumb|Display page]]<br />
The Display page and its subpage contain options to change the appearance of foobar2000.<br />
<br />
Previous: [[Foobar2000|Foobar2000:]][[Foobar2000:Preferences|Preferences:]]<br><br />
Related subpages:<br><br />
*[[Foobar2000:Preferences:Display:Context menu|Context menu]]<br />
*[[Foobar2000:Preferences:Display:Titleformatting|Titleformatting]]<br />
*[[Foobar2000:Preferences:Display:Default User Interface|Default User Interface]]<br />
*[[Foobar2000:Preferences:Display:Columns UI|Columns UI]]<br />
**[[Foobar2000:Preferences:Display:Columns UI:Playlist switcher|Playlist switcher]]<br />
**[[Foobar2000:Preferences:Display:Columns UI:Playlist view|Playlist view]]<br />
== Options ==<br />
<br />
=== User interface module ===<br />
<br />
The most important option on the Display page itself is the user interface selection. This option selects the active user interface. Only the Default User Interface is installed by default. foobar2000 has to be restarted before changes in this option take effect.<br />
<br />
=== Misc. settings ===<br />
==== VBR bitrate updates per second ====<br />
<br />
This option affects how often the dynamic bitrate for variable bitrate formats is updated. Not all input components support reporting dynamic bitrate, but this will surely work for [[MP3]], [[Musepack]], [[Vorbis]] and [[AAC]].<br />
<br />
==== Show keyboard shortcuts in menus ====<br />
<br />
This option determines if keyboard shortcuts are shown in the main and context menus. This works for Default User Interface and Columns UI.<br />
<br />
=== Double-width characters in title formatting ===<br />
<br />
This option determines how double-width characters are treated in titleformatting scripts: whether to ignore them or to count as two regular characters.<br />
<br />
== Subpages ==<br />
<br />
The following subpages are present at all times:<br />
<br />
* [[Foobar2000:Preferences:Context menu|Context menu]]<br />
* [[Foobar2000:Preferences:Display:Titleformatting|Titleformatting]] (pre-0.9.5 only)<br />
<br />
The following subpages are present if you have Default User Interface (foo_ui_std) installed. As it's name implies, Default User Interface is installed by default.<br />
<br />
* [[Foobar2000:Preferences:Default User Interface|Default User Interface]]<br />
<br />
The following subpages are present if you have Columns UI (foo_ui_columns) installed. Columns UI is a third party component.<br />
<br />
* [[Foobar2000:Preferences:Display:Columns UI|Columns UI]]<br />
** [[Foobar2000:Preferences:Display:Columns UI:Playlist switcher|Playlist switcher]]<br />
** [[Foobar2000:Preferences:Display:Columns UI:Playlist view|Playlist view]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Download_pageDownload page2007-09-26T18:54:26Z<p>Foosion: /* Musepack (MPC) */</p>
<hr />
<div>All programs mentioned anywhere in the wiki can be downloaded here.<br />
<br />
'''Note:''' Linux downloads have been migrated here. The older Download Linux page will not be maintained anymore.<br />
<br />
See also the [[:Category:Software|Software Category]] article for more software not listed here. <br />
<br />
=CD Rippers=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:150px;" | Name<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:300px;" | Description<br />
|-<br />
! align="left" | [[CDex]]<br />
| GPL<br />
| [http://cdexos.sourceforge.net/ here]<br />
| align="left" | An open-source ripper for Windows that uses cdparanoia functionality<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[DBpowerAMP with AccurateRip|DBpowerAMP]]<br />
| Free <br />
| [http://www.dbpoweramp.com/ here]<br />
| align="left" | A secure ripper for Windows that includes Accurate Stream functionality<br />
|-<br />
! align="left" | Deep Ripper<br />
| GPL<br />
| [http://www.deepburner.com/ here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[EAC]]<br />
| Free<br />
| [http://www.exactaudiocopy.de/ here]<br />
| align="left" | A secure ripper for Windows, C2 error pointers, Accurate Stream, etc.<br />
|-<br />
! align="left" | [[BonkEnc]]<br />
| GPL<br />
| [http://www.bonkenc.org/ here]<br />
| align="left" | Ripper with [[Cdparanoia]] support. It's an open-source projekt.<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:150px;" | Name<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:350px;" | Description<br />
|-<br />
! align="left" | [[Max]]<br />
| GPL<br />
| [http://sbooth.org/Max/ here]<br />
| align="left" | A secure ripper for OS/X that uses additional cdparanoia functionality<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:150px;" | Name<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:320px;" | Description<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | abcde <br />
| GPL <br />
|[http://www.hispalinux.es/~data/abcde.php here] <br />
| align="left" | A command-line based ripper with cdparanoia functionality<br />
|- <br />
! align="left" | [[cdparanoia]]<br />
| BSD, GPL<br />
| [http://www.xiph.org/paranoia/ here]<br />
| align="left" | One of the first secure standalone rippers for the Linux platform<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | [[Grip]] <br />
| GPL <br />
| [http://www.nostatic.org/grip here] <br />
| align="left" | An open-source Gnome interface ripper that uses cdparanoia functionality <br />
|- <br />
! align="left" | [[Rubyripper]] <br />
| GPL <br />
| [http://www.rubyforge.org/ here] <br />
| align="left" | A secure ripper for the Linux that uses additional cdparanoia functionality<br />
|}<br />
<br />
=CD/DVD Writers=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:185px;" | Name<br />
! style="width:80px;" | Unicode<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | BurnAtOnce<br />
| N<br />
| Free<br />
| [http://www.burnatonce.com/ here]<br />
| align="left" | CD writing application based upon CDRDAO <br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[Burrrn]] (CDA only)<br />
| N<br />
| Free<br />
| [http://www.burrrn.net/ here]<br />
|<br />
|-<br />
! align="left" | CDBurnerXP Pro<br />
| <br />
| Free<br />
| [http://www.cdburnerxp.se/ here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | DeepBurner Free<br />
| N<br />
| GPL<br />
| [http://www.deepburner.com/ here]<br />
|<br />
|-<br />
! align="left" | DeepBurner Pro<br />
| <br />
| Shareware<br />
| [http://www.deepburner.com/ here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Express Burn<br />
| N<br />
| Free<br />
| [http://nch.com.au/burn/index.html here]<br />
|<br />
|-<br />
! align="left" | Express Burn Plus<br />
| <br />
| Shareware<br />
| [http://nch.com.au/burn/index.html here]<br />
|<br />
|-style="background-color: #eeeeee;"<br />
! align="left" | Infra Recorder<br />
| N<br />
| GPL <br />
| [http://infrarecorder.sourceforge.net/ here]<br />
| <br />
|-<br />
! align="left" | [[Nero]]<br />
| N<br />
| Shareware<br />
| [http://www.nero.com/ here]<br />
| align="left" |<br />
|-style="background-color: #eeeeee;"<br />
! align="left" | SilentNight Micro-CD Burner<br />
| N<br />
| Free<br />
| [http://www.silentnight2004.com/Download.html here]<br />
|<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:130px;" | Name<br />
! style="width:80px;" | Unicode<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:310px;" | Description<br />
|- <br />
! align="left" | [[DVD-Audio Tools]]<br />
| Y <br />
| GPL <br />
| [http://dvd-audio.sourceforge.net/ here] <br />
| align="left" | Open-source DVD-Audio authoring application <br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[FireStarter FX]] <br />
| N <br />
| Free<br />
| [http://www.projectomega.org/subcat.php?lg=en&php=products_firestarter here] <br />
| align="left" | Free OS/X Cocoa CD writing application<br />
|- <br />
! align="left" | [[X-CD-Roast]] <br />
| N <br />
| Free <br />
| [http://www.xcdroast.org/xcdr098/xcdrosX.html here] <br />
| align="left" | New OS/X port of this Linux CD writing application<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:130px;" | Name<br />
! style="width:80px;" | Unicode<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! align="center" style="width:260px;" | Description<br />
|-<br />
! align="left" | CDRDAO <br />
| N <br />
| GPL <br />
| [http://www.cdrdao.org/ here] <br />
| align="left" | Cdrdao records audio or data CD-Rs in disk-at-once (DAO) mode<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | DVD-Audio Tools <br />
| Y <br />
| GPL <br />
| [http://dvd-audio.sourceforge.net/ here] <br />
| align="left" | Open-source DVD-Audio authoring application<br />
|-<br />
! align="left" | [[Gnome Baker]] <br />
| N<br />
| GPL <br />
| [http://www.gnomefiles.org/app.php?soft_id=291 here] <br />
| align="left" | Popular open-source Gnome interface CD/DVD writing application<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | [[K3b]]<br />
| N<br />
| GPL<br />
| [http://www.k3b.org/ here]<br />
| align="left" | Popular open-source KDE CD writing application for Linux platform <br />
|- <br />
! align="left" | [[X-CD-Roast]] <br />
| Y <br />
| GPL <br />
| [http://www.xcdroast.org here] <br />
| align="left" | New open-source Gnome interface CD/DVD writing application<br />
|}<br />
<br />
=Multimedia Players=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:120px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! align="center" style="width:220px;" | Description<br />
|-<br />
! align="left" | [[Foobar2000]]<br />
| Free, BSD<br />
| [http://www.foobar2000.org/ here]<br />
| align="left" | Advanced tagging, plugin capabilities, and kernel streaming support<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[MediaMonkey]]<br />
| Free, Shareware<br />
| [http://www.mediamonkey.com/ here]<br />
| align="left" | Supports many Winamp plugins<br />
|-<br />
! align="left" | MusikCube<br />
| BSD<br />
| [http://www.musikcube.com/ here]<br />
| align="left" | Supports dynamic playlists and advanced SQL capabilities <br />
|- style="background-color: #eeeeee;"<br />
! align="left" | VUplayer<br />
| Free<br />
| [http://www.vuplayer.com/ here]<br />
| align="left" | Supports many popular digital audio codecs and MOD tracker formats <br />
|-<br />
! align="left" | [[Winamp]]<br />
| Free, Shareware<br />
| [http://www.winamp.com/ here]<br />
| align="left" | Popular audio player for Windows<br />
| align="left" |<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[wxMusik]]<br />
| GPL<br />
| [http://musik.berlios.de/ here]<br />
| align="left" |A cross-platform open-source audio player<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:120px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:220px;" | Description<br />
|-<br />
! align="left" | Cog<br />
| GPL<br />
| [http://cogosx.sourceforge.net/ here]<br />
| align="left" | An open-source digital audio player for OS/X.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[wxMusik]]<br />
| GPL<br />
| [http://musik.berlios.de/ here]<br />
| align="left" |A cross-platform open-source audio player<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:120px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:220px;" | Description<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[Amarok]] <br />
| GPL <br />
| [http://amarok.kde.org/ here] <br />
| align="left" | Popular open-source KDE audio player similiar to Foobar2000<br />
|- <br />
! align="left" | [[wxMusik]]<br />
| GPL<br />
| [http://musik.berlios.de/ here]<br />
| align="left" |A cross-platform open-source audio player<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[XMMS]] <br />
| GPL <br />
| [http://www.xmms.org/ here] <br />
| align="left" | Popular open-source audio player similiar to Winamp <br />
|}<br />
<br />
==PocketPC==<br />
''These players may not play all your media files. Check their websites for the format support.''<br />
* GSPlayer: http://hp.vector.co.jp/authors/VA032810/<br />
* MortPlayer: http://www.sto-helit.de/<br />
* TCPMP: http://tcpmp.corecodec.org/about<br />
<br />
=Tagging Utilities=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:150px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | Abander TagControl<br />
| Shareware<br />
| [http://www.softartstudio.com/tagcontrol/ here]<br />
| <br />
|- style="background-color: #eeeeee;"<br />
! align="left" | AudioShell<br />
| Free<br />
| [http://www.softpointer.com/AudioShell.htm here]<br />
| align="left" | Integrates with Windows Explorer<br />
|- <br />
! align="left" | Frontah<br />
| Free<br />
| [http://home.vxu.se/mdati00/frontah/ here]<br />
| align="left" | Transcode and tag editor for ID3v1.x, ID3v2.x, Lyrics3, Vorbis Comment, APEv1 & APEv2 tags. Supports ANSI, UTF8 and UTF16 text encoding depends on tag type.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Magic MP3 Tagger<br />
| Shareware<br />
| [http://www.magic-tagger.com here]<br />
| align="left" | Optimized for automatic music identification<br />
|- <br />
! align="left" | [[MediaMonkey]]<br />
| Free, Shareware<br />
| [http://www.mediamonkey.com/ here]<br />
| align="left" | Also a Media Player & Library<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | MetatOGGer<br />
| Free<br />
| [http://fireblast.free.fr/ here]<br />
| align="left" | Tags MP3 ([[ID3]]) and Ogg files (Vorbis comment, including Ogg FLAC and Speex)<br />
|-<br />
! align="left" | MP3 Book Helper<br />
| Free<br />
| [http://mp3bookhelper.sourceforge.net/ here]<br />
| align="left" | Tags [[ID3v1]], ID3v2.3, and Vorbis comments. Features: FreeDB, unicode, guessing and matching, and supporting PAR, SFV, SV, and NFO generation.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[MP3tag]]<br />
| Free<br />
| [http://www.mp3tag.de/ here]<br />
| align="left" | Tags all files supporting [[ID3]], [[APEv2]], and [[Vorbis_Comment|Vorbis Comments]], not only MP3s<br />
|-<br />
! align="left" | [http://www.mp3-tag.com/ MP3 Tag Editor]<br />
| Shareware<br />
| [http://www.mp3-tag.com/ here]<br />
| align="left" | Software to edit tags in audio files of [[MP3]], [[WMA]], [[OGG]], [[ASF]], and other music format.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Mp3/Tag Studio<br />
| Shareware<br />
| [http://www.magnusbrading.com/mp3ts/ here]<br />
| align="left" | Supports ID3v1 & v2 '''only'''. Powerful matching and fancy filters<br />
|-<br />
! align="left" | [[Tag.exe]]<br />
| GPL<br />
| [http://www.synthetic-soul.co.uk/tag/ here]<br />
| align="left" | Command-line universal tagger for Windows<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Tag &amp; Rename<br />
| Shareware<br />
| [http://www.softpointer.com/tr.htm here]<br />
|<br />
|-<br />
! align="left" | TagScanner<br />
| Free/Donate<br />
| [http://xdev.narod.ru/tagscan_e.htm here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | The GodFather<br />
| Card/Donate<br />
| [http://users.otenet.gr/~jtcliper/tgf/ here]<br />
|<br />
|-<br />
! align="left" | [http://wmptagext.sourceforge.net/download.html WMPTSE]<br />
| Free/Donate<br />
| [http://wmptagext.sourceforge.net here]<br />
| align="left" | Software to integrate other tag format than [[ID3]] into Microsoft Windows Media Player.<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:150px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | Tag<br />
| GPL<br />
| [http://sbooth.org/Tag/ here]<br />
| align="left" | An open-source tagging application for OS/X<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:150px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | EasyTAG<br />
| GPL<br />
| [http://easytag.sourceforge.net/ here]<br />
| align="left" | Gnome tagging utility<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | <br />
|}<br />
<br />
=Encoders, Decoders, Etc.=<br />
All basic tools needed to make use of the audio formats supported here.<br />
<br />
==[[MP3]]==<br />
* [[LAME]] encoder/decoder: [http://www.rarewares.org/mp3.html download pre-compiled binaries here]. Also check the [[Lame Compiles|Latest recommended version]] page.<br />
* [[MP3Gain]], a Replay Gain-like utility: [http://mp3gain.sourceforge.net/download.php download here]<br />
<br />
<br />
== (Ogg) [[Vorbis]] ==<br />
Currently, all recommended Ogg Vorbis utilities are available at the [http://www.rarewares.org/ogg.html Rarewares Ogg Vorbis page]. The following tools are important:<br />
<br />
* '''OggEnc2''': A command-line Ogg Vorbis encoder that can be used with most CD rippers. <br />
<br />
* '''OggDec''': Command-line decoder.<br />
<br />
* '''[[OggDropXPd]]''': An easy to use, drag'n'drop encoder/decoder with support for automatic tagging, renaming and playlist creation on encoding.<br />
<br />
* ''Encoding DLLs'': For encoding within CDex or WinLame.<br />
<br />
* '''VorbisGain''': The [[Replay Gain]] utility for (Ogg) Vorbis.<br />
<br />
In addition, the [[Lancer]] suite — a highly SSE-optimized suite of utilities and libraries — are available at [http://homepage3.nifty.com/blacksword/ this page] ''(in Japanese)''. See [[Lancer#Platform-specific Builds|this section]] for information about the different builds.<br />
<br />
==[[Musepack]] (MPC)==<br />
* [http://www.musepack.net/index.php?pg=win Download MPC for Windows]<br />
* [http://www.musepack.net/index.php?pg=lin Download MPC for Linux]<br />
* [http://www.musepack.net/index.php?pg=osx Download MPC for Mac OS X]<br />
* [http://www.musepack.net/index.php?pg=src Download MPC source code]<br />
<br />
* [http://forum.musepack.net/showthread.php?t=395 Forum announcement of SV8 release]<br />
<br />
==[[FLAC]]==<br />
* CoolEdit / Adobe Audition Filter supporting FLAC: [http://www.vuplayer.com/other.php download here]<br />
* Various FLAC-related utilities (incl. Replay Gain utility): [http://flac.sourceforge.net/download.html FLAC's SourceForge Download page]<br />
<br />
==Transcoders==<br />
''Note: Although these tools may convert from one encoding to another, please remember that [[transcoding]] to any [[lossy]] encoding <u>will</u> result in a degraded quality.''<br />
* BeSweet: http://besweet.notrace.dk/<br />
* BonkEnc<br />
* dBpowerAMP Music Converter (dMC): http://www.dbpoweramp.com/dmc.htm<br />
* foobar2000 (needs 3rd party encoders)<br />
* MediaCoder: http://www.rarewares.org/mediacoder/<br />
* Omni Encoder: http://omniencoder.autobotcity.net/<br />
* Winamp<br />
* WinLAME: http://winlame.sourceforge.net/<br />
<br />
=Drivers=<br />
==ASPI==<br />
* Ahead Nero ASPI Driver: [http://www.nero.com/nero6/eng/ASPI_Driver.html official website]<br />
* Adaptec Windows ASPI Package: [http://www.adaptec.com/worldwide/support/suppdetail.jsp?sess=no&prodkey=ASPI-4.70 official website]<br />
* ASPI4all [http://www.3a.net/main.php?id=20 "official" website]<br />
* FrogAspi [http://www.frogaspi.org/ official website]<br />
* VOB ASAPI Driver 1.3: [http://www.rarewares.org/files/ASAPI.exe download]<br />
<br />
== Sound ==<br />
* ALSA Project [http://www.alsa-project.org/ official website]<br />
* kX Project [http://kxproject.lugosoft.com/ official website]<br />
* ZonaISIS [http://www.hispasonic.com/zonaisis/index.htm unofficial]<br />
* I have a dream ... [http://members.aol.com/cridi/ unofficial]<br />
<br />
=Links=<br />
* [http://www.reactos.org/wiki/index.php/Untested_%28open_source%29_software_list Open source softwares @ ReactOS wiki]<br />
* [http://www.rarewares.org/ RareWares]<br />
<br />
<br />
[[Category:Software]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Download_pageDownload page2007-09-26T18:52:57Z<p>Foosion: /* Musepack (MPC) */ updated links</p>
<hr />
<div>All programs mentioned anywhere in the wiki can be downloaded here.<br />
<br />
'''Note:''' Linux downloads have been migrated here. The older Download Linux page will not be maintained anymore.<br />
<br />
See also the [[:Category:Software|Software Category]] article for more software not listed here. <br />
<br />
=CD Rippers=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:150px;" | Name<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:300px;" | Description<br />
|-<br />
! align="left" | [[CDex]]<br />
| GPL<br />
| [http://cdexos.sourceforge.net/ here]<br />
| align="left" | An open-source ripper for Windows that uses cdparanoia functionality<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[DBpowerAMP with AccurateRip|DBpowerAMP]]<br />
| Free <br />
| [http://www.dbpoweramp.com/ here]<br />
| align="left" | A secure ripper for Windows that includes Accurate Stream functionality<br />
|-<br />
! align="left" | Deep Ripper<br />
| GPL<br />
| [http://www.deepburner.com/ here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[EAC]]<br />
| Free<br />
| [http://www.exactaudiocopy.de/ here]<br />
| align="left" | A secure ripper for Windows, C2 error pointers, Accurate Stream, etc.<br />
|-<br />
! align="left" | [[BonkEnc]]<br />
| GPL<br />
| [http://www.bonkenc.org/ here]<br />
| align="left" | Ripper with [[Cdparanoia]] support. It's an open-source projekt.<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:150px;" | Name<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:350px;" | Description<br />
|-<br />
! align="left" | [[Max]]<br />
| GPL<br />
| [http://sbooth.org/Max/ here]<br />
| align="left" | A secure ripper for OS/X that uses additional cdparanoia functionality<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:150px;" | Name<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:320px;" | Description<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | abcde <br />
| GPL <br />
|[http://www.hispalinux.es/~data/abcde.php here] <br />
| align="left" | A command-line based ripper with cdparanoia functionality<br />
|- <br />
! align="left" | [[cdparanoia]]<br />
| BSD, GPL<br />
| [http://www.xiph.org/paranoia/ here]<br />
| align="left" | One of the first secure standalone rippers for the Linux platform<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | [[Grip]] <br />
| GPL <br />
| [http://www.nostatic.org/grip here] <br />
| align="left" | An open-source Gnome interface ripper that uses cdparanoia functionality <br />
|- <br />
! align="left" | [[Rubyripper]] <br />
| GPL <br />
| [http://www.rubyforge.org/ here] <br />
| align="left" | A secure ripper for the Linux that uses additional cdparanoia functionality<br />
|}<br />
<br />
=CD/DVD Writers=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:185px;" | Name<br />
! style="width:80px;" | Unicode<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | BurnAtOnce<br />
| N<br />
| Free<br />
| [http://www.burnatonce.com/ here]<br />
| align="left" | CD writing application based upon CDRDAO <br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[Burrrn]] (CDA only)<br />
| N<br />
| Free<br />
| [http://www.burrrn.net/ here]<br />
|<br />
|-<br />
! align="left" | CDBurnerXP Pro<br />
| <br />
| Free<br />
| [http://www.cdburnerxp.se/ here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | DeepBurner Free<br />
| N<br />
| GPL<br />
| [http://www.deepburner.com/ here]<br />
|<br />
|-<br />
! align="left" | DeepBurner Pro<br />
| <br />
| Shareware<br />
| [http://www.deepburner.com/ here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Express Burn<br />
| N<br />
| Free<br />
| [http://nch.com.au/burn/index.html here]<br />
|<br />
|-<br />
! align="left" | Express Burn Plus<br />
| <br />
| Shareware<br />
| [http://nch.com.au/burn/index.html here]<br />
|<br />
|-style="background-color: #eeeeee;"<br />
! align="left" | Infra Recorder<br />
| N<br />
| GPL <br />
| [http://infrarecorder.sourceforge.net/ here]<br />
| <br />
|-<br />
! align="left" | [[Nero]]<br />
| N<br />
| Shareware<br />
| [http://www.nero.com/ here]<br />
| align="left" |<br />
|-style="background-color: #eeeeee;"<br />
! align="left" | SilentNight Micro-CD Burner<br />
| N<br />
| Free<br />
| [http://www.silentnight2004.com/Download.html here]<br />
|<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:130px;" | Name<br />
! style="width:80px;" | Unicode<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:310px;" | Description<br />
|- <br />
! align="left" | [[DVD-Audio Tools]]<br />
| Y <br />
| GPL <br />
| [http://dvd-audio.sourceforge.net/ here] <br />
| align="left" | Open-source DVD-Audio authoring application <br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[FireStarter FX]] <br />
| N <br />
| Free<br />
| [http://www.projectomega.org/subcat.php?lg=en&php=products_firestarter here] <br />
| align="left" | Free OS/X Cocoa CD writing application<br />
|- <br />
! align="left" | [[X-CD-Roast]] <br />
| N <br />
| Free <br />
| [http://www.xcdroast.org/xcdr098/xcdrosX.html here] <br />
| align="left" | New OS/X port of this Linux CD writing application<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:130px;" | Name<br />
! style="width:80px;" | Unicode<br />
! style="width:90px;" | License<br />
! style="width:100px;" | Website<br />
! align="center" style="width:260px;" | Description<br />
|-<br />
! align="left" | CDRDAO <br />
| N <br />
| GPL <br />
| [http://www.cdrdao.org/ here] <br />
| align="left" | Cdrdao records audio or data CD-Rs in disk-at-once (DAO) mode<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | DVD-Audio Tools <br />
| Y <br />
| GPL <br />
| [http://dvd-audio.sourceforge.net/ here] <br />
| align="left" | Open-source DVD-Audio authoring application<br />
|-<br />
! align="left" | [[Gnome Baker]] <br />
| N<br />
| GPL <br />
| [http://www.gnomefiles.org/app.php?soft_id=291 here] <br />
| align="left" | Popular open-source Gnome interface CD/DVD writing application<br />
|- style="background-color:#eeeeee;"<br />
! align="left" | [[K3b]]<br />
| N<br />
| GPL<br />
| [http://www.k3b.org/ here]<br />
| align="left" | Popular open-source KDE CD writing application for Linux platform <br />
|- <br />
! align="left" | [[X-CD-Roast]] <br />
| Y <br />
| GPL <br />
| [http://www.xcdroast.org here] <br />
| align="left" | New open-source Gnome interface CD/DVD writing application<br />
|}<br />
<br />
=Multimedia Players=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:120px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! align="center" style="width:220px;" | Description<br />
|-<br />
! align="left" | [[Foobar2000]]<br />
| Free, BSD<br />
| [http://www.foobar2000.org/ here]<br />
| align="left" | Advanced tagging, plugin capabilities, and kernel streaming support<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[MediaMonkey]]<br />
| Free, Shareware<br />
| [http://www.mediamonkey.com/ here]<br />
| align="left" | Supports many Winamp plugins<br />
|-<br />
! align="left" | MusikCube<br />
| BSD<br />
| [http://www.musikcube.com/ here]<br />
| align="left" | Supports dynamic playlists and advanced SQL capabilities <br />
|- style="background-color: #eeeeee;"<br />
! align="left" | VUplayer<br />
| Free<br />
| [http://www.vuplayer.com/ here]<br />
| align="left" | Supports many popular digital audio codecs and MOD tracker formats <br />
|-<br />
! align="left" | [[Winamp]]<br />
| Free, Shareware<br />
| [http://www.winamp.com/ here]<br />
| align="left" | Popular audio player for Windows<br />
| align="left" |<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[wxMusik]]<br />
| GPL<br />
| [http://musik.berlios.de/ here]<br />
| align="left" |A cross-platform open-source audio player<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:120px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:220px;" | Description<br />
|-<br />
! align="left" | Cog<br />
| GPL<br />
| [http://cogosx.sourceforge.net/ here]<br />
| align="left" | An open-source digital audio player for OS/X.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[wxMusik]]<br />
| GPL<br />
| [http://musik.berlios.de/ here]<br />
| align="left" |A cross-platform open-source audio player<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:120px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:220px;" | Description<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[Amarok]] <br />
| GPL <br />
| [http://amarok.kde.org/ here] <br />
| align="left" | Popular open-source KDE audio player similiar to Foobar2000<br />
|- <br />
! align="left" | [[wxMusik]]<br />
| GPL<br />
| [http://musik.berlios.de/ here]<br />
| align="left" |A cross-platform open-source audio player<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[XMMS]] <br />
| GPL <br />
| [http://www.xmms.org/ here] <br />
| align="left" | Popular open-source audio player similiar to Winamp <br />
|}<br />
<br />
==PocketPC==<br />
''These players may not play all your media files. Check their websites for the format support.''<br />
* GSPlayer: http://hp.vector.co.jp/authors/VA032810/<br />
* MortPlayer: http://www.sto-helit.de/<br />
* TCPMP: http://tcpmp.corecodec.org/about<br />
<br />
=Tagging Utilities=<br />
==Windows==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ccccff;"<br />
|- style="background:#ccccff"<br />
! style="width:150px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | Abander TagControl<br />
| Shareware<br />
| [http://www.softartstudio.com/tagcontrol/ here]<br />
| <br />
|- style="background-color: #eeeeee;"<br />
! align="left" | AudioShell<br />
| Free<br />
| [http://www.softpointer.com/AudioShell.htm here]<br />
| align="left" | Integrates with Windows Explorer<br />
|- <br />
! align="left" | Frontah<br />
| Free<br />
| [http://home.vxu.se/mdati00/frontah/ here]<br />
| align="left" | Transcode and tag editor for ID3v1.x, ID3v2.x, Lyrics3, Vorbis Comment, APEv1 & APEv2 tags. Supports ANSI, UTF8 and UTF16 text encoding depends on tag type.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Magic MP3 Tagger<br />
| Shareware<br />
| [http://www.magic-tagger.com here]<br />
| align="left" | Optimized for automatic music identification<br />
|- <br />
! align="left" | [[MediaMonkey]]<br />
| Free, Shareware<br />
| [http://www.mediamonkey.com/ here]<br />
| align="left" | Also a Media Player & Library<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | MetatOGGer<br />
| Free<br />
| [http://fireblast.free.fr/ here]<br />
| align="left" | Tags MP3 ([[ID3]]) and Ogg files (Vorbis comment, including Ogg FLAC and Speex)<br />
|-<br />
! align="left" | MP3 Book Helper<br />
| Free<br />
| [http://mp3bookhelper.sourceforge.net/ here]<br />
| align="left" | Tags [[ID3v1]], ID3v2.3, and Vorbis comments. Features: FreeDB, unicode, guessing and matching, and supporting PAR, SFV, SV, and NFO generation.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | [[MP3tag]]<br />
| Free<br />
| [http://www.mp3tag.de/ here]<br />
| align="left" | Tags all files supporting [[ID3]], [[APEv2]], and [[Vorbis_Comment|Vorbis Comments]], not only MP3s<br />
|-<br />
! align="left" | [http://www.mp3-tag.com/ MP3 Tag Editor]<br />
| Shareware<br />
| [http://www.mp3-tag.com/ here]<br />
| align="left" | Software to edit tags in audio files of [[MP3]], [[WMA]], [[OGG]], [[ASF]], and other music format.<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Mp3/Tag Studio<br />
| Shareware<br />
| [http://www.magnusbrading.com/mp3ts/ here]<br />
| align="left" | Supports ID3v1 & v2 '''only'''. Powerful matching and fancy filters<br />
|-<br />
! align="left" | [[Tag.exe]]<br />
| GPL<br />
| [http://www.synthetic-soul.co.uk/tag/ here]<br />
| align="left" | Command-line universal tagger for Windows<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | Tag &amp; Rename<br />
| Shareware<br />
| [http://www.softpointer.com/tr.htm here]<br />
|<br />
|-<br />
! align="left" | TagScanner<br />
| Free/Donate<br />
| [http://xdev.narod.ru/tagscan_e.htm here]<br />
|<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | The GodFather<br />
| Card/Donate<br />
| [http://users.otenet.gr/~jtcliper/tgf/ here]<br />
|<br />
|-<br />
! align="left" | [http://wmptagext.sourceforge.net/download.html WMPTSE]<br />
| Free/Donate<br />
| [http://wmptagext.sourceforge.net here]<br />
| align="left" | Software to integrate other tag format than [[ID3]] into Microsoft Windows Media Player.<br />
|}<br />
<br />
==Mac OS/X==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #bbffbb;"<br />
|- style="background:#bbffbb;"<br />
! style="width:150px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | Tag<br />
| GPL<br />
| [http://sbooth.org/Tag/ here]<br />
| align="left" | An open-source tagging application for OS/X<br />
|}<br />
<br />
==Linux==<br />
{| border="0" cellpadding="0" cellspacing="1" style="text-align:center; border:2px solid #ffcccc;"<br />
|- style="background:#ffcccc;"<br />
! style="width:150px;" | Name<br />
! style="width:100px;" | License<br />
! style="width:100px;" | Website<br />
! style="width:270px;" | Description<br />
|-<br />
! align="left" | EasyTAG<br />
| GPL<br />
| [http://easytag.sourceforge.net/ here]<br />
| align="left" | Gnome tagging utility<br />
|- style="background-color: #eeeeee;"<br />
! align="left" | <br />
|}<br />
<br />
=Encoders, Decoders, Etc.=<br />
All basic tools needed to make use of the audio formats supported here.<br />
<br />
==[[MP3]]==<br />
* [[LAME]] encoder/decoder: [http://www.rarewares.org/mp3.html download pre-compiled binaries here]. Also check the [[Lame Compiles|Latest recommended version]] page.<br />
* [[MP3Gain]], a Replay Gain-like utility: [http://mp3gain.sourceforge.net/download.php download here]<br />
<br />
<br />
== (Ogg) [[Vorbis]] ==<br />
Currently, all recommended Ogg Vorbis utilities are available at the [http://www.rarewares.org/ogg.html Rarewares Ogg Vorbis page]. The following tools are important:<br />
<br />
* '''OggEnc2''': A command-line Ogg Vorbis encoder that can be used with most CD rippers. <br />
<br />
* '''OggDec''': Command-line decoder.<br />
<br />
* '''[[OggDropXPd]]''': An easy to use, drag'n'drop encoder/decoder with support for automatic tagging, renaming and playlist creation on encoding.<br />
<br />
* ''Encoding DLLs'': For encoding within CDex or WinLame.<br />
<br />
* '''VorbisGain''': The [[Replay Gain]] utility for (Ogg) Vorbis.<br />
<br />
In addition, the [[Lancer]] suite — a highly SSE-optimized suite of utilities and libraries — are available at [http://homepage3.nifty.com/blacksword/ this page] ''(in Japanese)''. See [[Lancer#Platform-specific Builds|this section]] for information about the different builds.<br />
<br />
==[[Musepack]] (MPC)==<br />
* [http://www.musepack.net/index.php?pg=win Download MPC for Windows]<br />
* [http://www.musepack.net/index.php?pg=lin Download MPC for Linux]<br />
* [http://www.musepack.net/index.php?pg=osx Download MPC for Mac OS X]<br />
* [http://forum.musepack.net/showthread.php?t=395 Forum announcement of SV8 release]<br />
<br />
==[[FLAC]]==<br />
* CoolEdit / Adobe Audition Filter supporting FLAC: [http://www.vuplayer.com/other.php download here]<br />
* Various FLAC-related utilities (incl. Replay Gain utility): [http://flac.sourceforge.net/download.html FLAC's SourceForge Download page]<br />
<br />
==Transcoders==<br />
''Note: Although these tools may convert from one encoding to another, please remember that [[transcoding]] to any [[lossy]] encoding <u>will</u> result in a degraded quality.''<br />
* BeSweet: http://besweet.notrace.dk/<br />
* BonkEnc<br />
* dBpowerAMP Music Converter (dMC): http://www.dbpoweramp.com/dmc.htm<br />
* foobar2000 (needs 3rd party encoders)<br />
* MediaCoder: http://www.rarewares.org/mediacoder/<br />
* Omni Encoder: http://omniencoder.autobotcity.net/<br />
* Winamp<br />
* WinLAME: http://winlame.sourceforge.net/<br />
<br />
=Drivers=<br />
==ASPI==<br />
* Ahead Nero ASPI Driver: [http://www.nero.com/nero6/eng/ASPI_Driver.html official website]<br />
* Adaptec Windows ASPI Package: [http://www.adaptec.com/worldwide/support/suppdetail.jsp?sess=no&prodkey=ASPI-4.70 official website]<br />
* ASPI4all [http://www.3a.net/main.php?id=20 "official" website]<br />
* FrogAspi [http://www.frogaspi.org/ official website]<br />
* VOB ASAPI Driver 1.3: [http://www.rarewares.org/files/ASAPI.exe download]<br />
<br />
== Sound ==<br />
* ALSA Project [http://www.alsa-project.org/ official website]<br />
* kX Project [http://kxproject.lugosoft.com/ official website]<br />
* ZonaISIS [http://www.hispasonic.com/zonaisis/index.htm unofficial]<br />
* I have a dream ... [http://members.aol.com/cridi/ unofficial]<br />
<br />
=Links=<br />
* [http://www.reactos.org/wiki/index.php/Untested_%28open_source%29_software_list Open source softwares @ ReactOS wiki]<br />
* [http://www.rarewares.org/ RareWares]<br />
<br />
<br />
[[Category:Software]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Replay_GainReplay Gain2007-09-22T11:34:55Z<p>Foosion: /* Musepack Replay Gain */ Changed link to point at musepack.net</p>
<hr />
<div>'''Replay Gain''' is the name of a technique invented to achieve the same playback volume of audio files. It specifies the reference level of 89dB and an algorithm to measure the '''perceived''' loudness of audio data.<br />
<br />
Replay Gain is different from [[Normalization|peak normalization]]. In peak normalization, you merely ensure that the peak amplitude reaches a certain level. This does not ensure equal loudness. The Replay Gain technique measures the ''effective power'' (i.e. taking RMS after an ''Equal Loudness contour'') of the waveform, and amplifies the waveform accordingly. The result is that Replay Gained waveforms are usually more uniformly amplified that peak-normalized waveforms.<br />
<br />
== Implementations ==<br />
There are different Replay Gain implementations, each with its own uses and strength. Most of them use [[metadata]] to indicate the level of the volume change (Volume is adjusted on playback; needs player/decoder support) others modify the audio data itself. Generally it is recommended to use an implementation which uses the metadata and does not touch the audio itself.<br />
<br />
In a metadata based solution, information on both types of Replay Gain can be stored, and the desired playback effect can be switched back and forth in the appropriate player. However, if the audio data is permanently modified, only one type of Replay Gain can be chosen. Furthermore, if the audio data is modified, you may not be able to restore the original data, especially if the Replay Gain technique produces a negative amplification.<br />
<br />
Replay Gain has significant advantages over normalizing. It allows the loudness of a song to be consistant over an entire collection of audio, similar to (but more accurate than) RMS normalizing (this is called 'Track Gain', or 'Radio Gain' in earlier parlance). However, it also allows the loudness of an album to be consistant over a entire music collection, allowing the dynamics of album to remain (This is called 'Album Gain', or 'Audiophile Gain' in earlier parlance). This is usually very important in classical CDs, as there may be quiet segments and loud segments written into different tracks.<br />
<br />
=== MP3Gain ===<br />
[[MP3Gain]] is an implementation of Replay Gain. It either modifies target data reversibly, or attaches metadata.<br />
<br />
* Format: [[MP3]]<br />
* Method: Audio / Meta<br />
* Limitations: Limited to 1.5dB steps mode, may become irreversible<br />
* http://mp3gain.sourceforge.net/<br />
<br />
=== [[LAME]] ===<br />
* Method: Header ([http://gabriel.mp3-tech.org/mp3infotag.html mp3infotag])<br />
* Notes:<br />
** Tags added during encoding; not supported by any player yet; Track Gain only<br />
** Replay Gaining MP3's are usually done using MP3Gain (see [[Replay Gain#MP3Gain|above]]) or [[Replay Gain#foobar2000 Replay Gain scanner|foobar2000]]<br />
* http://lame.sourceforge.net/<br />
<br />
=== [[Musepack]] Replay Gain ===<br />
* Method: Header (similar to Meta data method)<br />
* Notes: Replay Gain values are stored in the header and Replay Gain is part of the Musepack specifications; therefore any Musepack decoder that does not support Replay Gain can be considered broken.<br />
* http://www.musepack.net/<br />
<br />
=== VorbisGain ===<br />
* Format: (Ogg) [[Vorbis]]<br />
* Method: Meta (in [[Vorbis comment]])<br />
* http://www.sjeng.org/vorbisgain.html<br />
** new compiles of VorbisGain at [http://www.rarewares.org/ogg.html www.rarewares.org]<br />
:'''''Note:''' Andavari has provided a very useful script to integrate VorbisGain, which is a CLI tool, into Windows Explorer. Please (Ogg) [[Vorbis#Replay Gain|check this section]].<br />
<br />
=== FLAC / METAFLAC ===<br />
* Format: [[Free Lossless Audio Codec|FLAC]]<br />
* Method: Meta (in [[Vorbis comment]])<br />
* http://flac.sf.net<br />
<br />
=== WavPack / WVGAIN ===<br />
* Format: [[WavPack]]<br />
* Method: Meta (in [[APEv2]] tag)<br />
* http://www.wavpack.com<br />
<br />
=== Wavegain ===<br />
* Format: waveform<br />
* Method: Audio<br />
* Limitations: Irreversible<br />
* http://www.rarewares.org/files/others/wavegain.zip<br />
<br />
=== [[foobar2000]] Replay Gain scanner ===<br />
* Format:<br />
** [[MP3]]: Values written to [[APEv2]] or [[ID3v2]] tags.<br />
** [[Musepack]]: Values written to header.<br />
** (Ogg) [[Vorbis]]: Values written to [[Vorbis comment]].<br />
** [[WavPack]]: Values written to [[APEv2]] tags.<br />
** [[AAC]]: Values written to [[APEv2]] tags.<br />
** [[MP4]]: Uses its own iTunes-compatible tagging system (though iTunes does not support Replay Gain).<br />
** [[Free Lossless Audio Codec|FLAC]]: Values written to [[Vorbis comment]].<br />
** [[APE]]: Values written to [[APEv2]] tags.<br />
** Modules ([[MOD]] etc.): Optionally saved into [[APEv2]] tags; otherwise the foobar2000 database is used.<br />
** All other formats are supported but the Replay Gain values are saved to the foobar2000 database.<br />
<br />
* You can also choose to only have the Replay Gain values saved in the foobar2000 database and leave the files untouched.<br />
<br />
* http://foobar2000.org<br />
<br />
=== [[MediaMonkey]] ===<br />
* Format:<br />
** [[MP3]]: Values written to [[APEv2]] or [[ID3v2]] tags.<br />
** (Ogg) [[Vorbis]]: Values written to [[Vorbis comment]].<br />
** [[WMA]]: Values stored in MediaMonkey's MDB database.<br />
** [[Free Lossless Audio Codec|FLAC]]: Values written to [[Vorbis comment]].<br />
** [[APE]]: Values written to [[APEv2]] tags.<br />
** [[WAV]]: Values stored in MediaMonkey's MDB database.<br />
* In addition to tags, all Replay Gain values are also stored in MediaMonkey's MDB database<br />
* Does not support Album/Audiophile Replay Gain<br />
* Also capable of (irreversibly) changing the volume of MP3 tracks, similar to [[MP3Gain]]<br />
* http://www.mediamonkey.com<br />
<br />
=== [[Winamp]] Replay Gain scanner===<br />
* Format:<br />
** [[MP3]]: Values written to [[ID3v2]] tags.<br />
** (Ogg) [[Vorbis]]: Values written to [[Vorbis comment]].<br />
** [[WMA]]: Values stored in Windows Media Audio tags.<br />
** [[Free Lossless Audio Codec|FLAC]]: Values written to [[Vorbis comment]].<br />
** [[APE]]: Values written to [[APEv2]] tags.<br />
** [[AAC]]: Values written to [[APEv2]] tags.<br />
** [[MP4]]<br />
** [[TAK]]: Values written to [[APEv2]] tags.<br />
* Support Album/Track Gain<br />
<br />
== Players support ==<br />
Replay Gain being present in the specs of FLAC, Musepack, and APE formats, any player that support those formats usually support Replay Gain.<br />
<br />
The situation with MP3 is rather different, as it was not part of the MP3 specs. The APEv2 tags metadata implementation is somewhat becoming the de-facto standard.<br />
<br />
=== Windows ===<br />
* [[Foobar2000]] supports Replay Gain in all possible aspects.<br />
* [[Winamp]] supports Replay Gain in album or track mode.<br />
* [[MediaMonkey]] supports track Replay Gain only<br />
* [[XMPlay]] recently implemented Replay Gain<br />
<br />
''...and probably others.''<br />
<br />
=== Linux ===<br />
* [[XMMS]]. Reads Replay Gain from [[Free Lossless Audio Codec|FLAC]], [[Musepack]], (Ogg) [[Vorbis]] ..<br />
:For [[MP3]], use the CVS version of the [http://xmms-mad.sourceforge.net/ xmms-mad] mp3 plugin (it's not yet released as binary, furthermore not available in distribs' versions for now. Meanwhile binaries are available here: [http://perso.crans.org/~krempp/xmms-mad/ custom binaries])<br />
* [[amarok]]. By using the amarok-script [http://kde-apps.org/content/show.php?content=26073 Replay Gain]<br />
:And possibly others, since [http://developer.kde.org/~wheeler/taglib.html TagLib] added support for [[APEv2]] tags in [[MP3]] files, players using this library (like [[amaroK]] and [[JuK]]) might support that kind of Replay Gain tags in the near future.<br />
* [http://www.sacredchao.net/quodlibet Quod Libet] reads Replay Gain from (Ogg) [[Vorbis]], [[MP3]], [[Free Lossless Audio Codec|FLAC]], and [[Musepack]].<br />
:Requires support to be enabled (via the appropriate python bindings and libraries) for the above formats. Does not support Replay Gain values stored in [[APEv2]] tags in [[MP3]]s. Replay Gain values are stored in RVA2 id3v2.4 frames. See the [http://www.sacredchao.net/quodlibet/wiki/Development/ID3Notes Quod Libet RVA2 / Replay Gain notes].<br />
* [http://www.musicpd.org/ Music Player Daemon] (MPD) reads Replay Gain from (Ogg) [[Vorbis]], [[Free Lossless Audio Codec|FLAC]], and [[Musepack]].<br />
:Foobar2000 style TXXX frames in [[MP3]]s are also supported in the latest development releases.<br />
* [http://www.mplayerhq.hu/ MPlayer]. Mplayer support for Replay Gain is codec dependent.<br />
:Codecs that are known to support Replay Gain: vorbis<br />
:Because of this, you need to prioritize the codecs that support it, or choose it individually on the command line. To add it to the command line, add an -ac [codec] option after each file that you want to choose the codec for, or at the beginning to make it apply to all files listed. To prioritize the codecs by default, list them in a line in mplayer.conf:<br />
ac=[codec],[othercodec],vorbis,mad,<br />
<br />
=== Portable devices ===<br />
Current development builds of [http://www.rockbox.org/ Rockbox] support Replay Gain for some encoder formats. This is a rapidly evolving feature. Rockbox runs on a variety of portable players, including iRiver H100, H300 and H10 series; iPod 3rd gen, 4th gen (grayscale and color), 5th/5.5th gen video, 1st gen Nano and Mini 1st/2nd gen (Nano 2nd gen is not supported); Cowon iAudio X5 (including X5V and X5L)and M5 (including M5L); Toshiba Gigabeat X and F series (the S model is not supported); and SanDisk: Sansa E200 series (the R models are not supported).<br />
<br />
There are no other portable players known to support Replay Gain.<br />
<br />
The iPod features ''Soundcheck'', which seems to produce roughly the same normalization gains as Replay Gain, but doesn't provide an Album Gain.<br />
<br />
=== Hi-Fi ===<br />
Slim Devices a company owened by Logitech Inc, supports Replay Gain on both of their hi-end audiophile players, known as the [[Slim Devices Transporter|Transporter]] and the [[Slim Devices Squeezebox|Squeezebox]].<br />
<br />
== External links ==<br />
* [http://replaygain.hydrogenaudio.org Original Replay Gain website]<br />
* [http://en.wikipedia.org/wiki/Replay_Gain Replay Gain] at Wikipedia<br />
* [http://www.bobulous.org.uk/misc/Replay-Gain.html Replay Gain using Foobar 2000] (how-to).<br />
<br />
<br />
[[Category:Technical]]<br />
[[Category:Metadata]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Title_Formatting_ReferenceFoobar2000:Title Formatting Reference2007-09-06T15:31:56Z<p>Foosion: /* Field remappings */ Synchronized descriptions with titleformat_help.html bundled with foobar2000</p>
<hr />
<div>{{fb2k}}<br />
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.<br />
<br />
A field reference is a field name enclosed in percent signs, for example ''%artist%''. 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 ''()'' - or contain one or more parameters separated by commata, for example ''$abbr(%artist%)''. 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.<br />
<br />
Please see [[Foobar2000:Titleformat_Introduction|Titleformat Introduction]] for a presentation of titleformat syntax in general.<br />
<br />
= Field remappings =<br />
<br />
Some of the fields accessible through ''%name%'' are remapped to other values to make writing titleformat scripts more convenient.<br />
<br />
== Metadata ==<br />
<br />
=== %album artist% ===<br />
Name of the artist of the album specified track belongs to. Checks following metadata fields, in this order: "album artist", "artist", "composer", "performer". The difference between this and ''%artist%'' is that ''%album artist%'' is intended for use where consistent value across entire album is needed even when per-track artists values vary.<br />
<br />
=== %album% ===<br />
Name of the album specified track belongs to. Checks following metadata fields, in this order: "album", "venue".<br />
<br />
=== %artist% ===<br />
Name of the artist of the track. Checks following metadata fields, in this order: "artist", "album artist", "composer", "performer".<br />
<br />
=== %disc% ===<br />
Index of disc specified track belongs to, within the album. Available only when "discnumber"/"disc" field is present in track’s metadata.<br />
<br />
This remapping exists only for compatibility with old scripts. It is recommended to use %discnumber% instead.<br />
<br />
=== %discnumber% ===<br />
Index of disc specified track belongs to, within the album. Available only when "discnumber"/"disc" field is present in track’s metadata.<br />
<br />
=== %track artist% ===<br />
Name of the artist of the track; present only if ''%album artist%'' is different than ''%artist%'' for specific track. Intended for use together with ''%album artist%'', to indicate track-specific artist info, e.g. "%album artist% - %title%[ '//' %track artist%]". In this case, the last part will be displayed only when track-specific artist info is present.<br />
<br />
=== %title% ===<br />
Title of the track. If "title" metadata field is missing, file name is used instead.<br />
<br />
=== %track% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This remapping exists only for compatibility with old scripts. It is recommended to use %tracknumber% instead.<br />
<br />
=== %tracknumber% ===<br />
Two-digit index of specified track within the album. Available only when "tracknumber" field is present in track’s metadata.<br />
<br />
== Technical information ==<br />
<br />
=== %bitrate% ===<br />
Bitrate of the track; includes dynamic VBR bitrate display for currently played track.<br />
<br />
=== %channels% ===<br />
Number of channels in the track (mono/stereo/etc). Returns the number of channels in text form; returns "mono" and "stereo" instead of "1" and "2".<br />
<br />
=== %filesize% ===<br />
Defined as ''%_filesize%''. Returns the filesize in bytes.<br />
<br />
=== %samplerate% ===<br />
Sample rate of the track, in Hz.<br />
<br />
=== %codec% ===<br />
Name of codec used to encode the track. If exact codec name is not available, file extension is used.<br />
<br />
== Special fields ==<br />
<br />
=== %playlist_number% ===<br />
Defined as ''$num(%_playlist_number%,$len(%_playlist_total%))''. Returns the position of the track as index into the playlist. The first track has index 1. The index is padded from the left with zeroes to the same number of digits as the last track.<br />
<br />
= Control flow =<br />
<br />
The functions in this section can be used to conditionally execute statements.<br />
<br />
=== [...] (conditional section) ===<br />
<br />
Evaluates the expression between ''['' and '']''. If it has the truth value ''true'', its string value and the truth value ''true'' are returned. Otherwise an empty string and ''false'' are returned.<br />
<br />
Example: ''[%artist%]'' returns the value of the artist tag, if it exists. Otherwise it returns nothing, when ''artist'' would return "?".<br />
<br />
=== $if(cond,then) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, ''false'' is returned.<br />
<br />
=== $if(cond,then,else) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, the ''else'' part is evaluated and its value returned.<br />
<br />
=== $if2(a,else) ===<br />
<br />
Like ''$if(a,a,else)'' except that ''a'' is only evaluated once.<br />
<br />
=== $if3(a1,a2,...,aN,else) ===<br />
<br />
Evaluates arguments ''a1'' ... ''aN'', until one is found that evaluates to ''true''. If that happens, its value is returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifequal(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is equal to ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifgreater(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is greater than ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $iflonger(s1,s2,then,else) ===<br />
<br />
Compares the length of the strings ''s1'' and ''s2'', if ''s1'' is longer than ''s2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $select(n,a1,...,aN) ===<br />
<br />
If the value of ''n'' is between 1 and N, ''an'' is evaluated and its value returned. Otherwise ''false'' is returned.<br />
<br />
= Arithmetic functions =<br />
<br />
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.<br />
<br />
Example: "c3po" → 0, " -12" → -12, but "- 12" → 0<br />
<br />
=== $add(a,b) ===<br />
<br />
Adds ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$add(a,b,...)'' is the same as ''$add($add(a,b),...)''.<br />
<br />
=== $div(a,b) ===<br />
<br />
Divides ''a'' through ''b''. If ''b'' evaluates to zero, it returns ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$div(a,b,...)'' is the same as ''$div($div(a,b),...)''.<br />
<br />
=== $greater(a,b) ===<br />
<br />
Returns true, if ''a'' is greater than ''b'', otherwise false.<br />
<br />
=== $max(a,b) ===<br />
<br />
Returns the maximum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$max(a,b,...)'' is the same as ''$max($max(a,b),...)''.<br />
<br />
=== $min(a,b) ===<br />
<br />
Returns the minimum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$min(a,b,...)'' is the same as ''$min($min(a,b),...)''.<br />
<br />
=== $mod(a,b) ===<br />
<br />
Computes the remainder of dividing ''a'' through ''b''. The result has the same sign as ''a''. If ''b'' evaluates to zero, the result is ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mod(a,b,...)'' is the same as ''$mod($mod(a,b),...)''.<br />
<br />
=== $mul(a,b) ===<br />
<br />
Multiplies ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mul(a,b,...)'' is the same as ''$mul($mul(a,b),...)''.<br />
<br />
=== $muldiv(a,b,c) ===<br />
<br />
Multiplies ''a'' and ''b'', then divides by ''c''. The result is rounded to the nearest integer.<br />
<br />
=== $rand() ===<br />
<br />
Generates a random number in the range from 0 to 2<sup>32</sup>-1.<br />
<br />
=== $sub(a,b) ===<br />
<br />
Subtracts ''b'' from ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$sub(a,b,...)'' is the same as ''$sub($sub(a,b),...)''.<br />
<br />
= Boolean functions =<br />
<br />
The functions in this section can be used to work with truth values (''true'' and ''false''), 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 ''$if'' and related functions.<br />
<br />
=== $and(...) ===<br />
<br />
Logical And of an arbitrary number of arguments. Returns ''true'', if and only if all arguments evaluate to ''true''.<br />
<br />
Special case: ''$and(x,y)'' is ''true'', if both ''x'' and ''y'' are ''true''. Otherwise it is ''false''.<br />
<br />
=== $or(...) ===<br />
<br />
Logical Or of an arbitrary number of arguments. Returns ''true'', if at least one argument evaluates to ''true''.<br />
<br />
Special case: ''$or(x,y)'' is ''true'', if ''x'' or ''y'' is ''true'', or if both are ''true''. Otherwise it is ''false''.<br />
<br />
=== $not(x) ===<br />
<br />
Logical Not. Returns ''false'', if ''x'' is ''true'', otherwise it returns ''true''.<br />
<br />
=== $xor(...) ===<br />
<br />
Logical Exclusive-or of an arbitrary number of arguments. Returns ''true'', if an odd number of arguments evaluate to ''true''.<br />
<br />
Special case: ''$xor(x,y)'' is ''true'', if one of ''x'' and ''y'' is ''true'', but not both. Otherwise it is ''false''.<br />
<br />
= Color functions =<br />
<br />
=== $blend(color1,color2,part,total) ===<br />
<br />
Returns a color that is a blend between ''color1'' and ''color2''. If ''part'' is smaller than or equal to zero, ''color1'' is returned. If ''part'' is greater than or equal to ''total'', ''color2'' is returned. Otherwise a blended color is returned that is ''part'' parts ''color1'' and ''total''-''part'' parts ''color2''. The blending is performed in the RGB color space.<br />
<br />
=== $hsl() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $hsl(h,s,l) ===<br />
<br />
Sets the color for text in the HSL color space. ''h'', ''s'' and ''l'' are the hue, saturation, and lightness of the color for unselected text. The color for selected text is set to the inverse color.<br />
The ranges of ''h'', ''s'', and ''l'' are from 0 to 240; the function is designed to interpret those values in the same way as the standard Windows color dialog.<br />
<br />
=== $hsl(h1,s1,l1,h2,s2,l2) ===<br />
<br />
Sets the color for text in the HSL color space. ''h1'', ''s1'' and ''l1'' are the hue, saturation, and lightness of the color for unselected text. ''h2'', ''s2'' and ''l2'' are the hue, saturation, and lightness of the color for selected text.<br />
<br />
=== $rgb() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $rgb(r,g,b) ===<br />
<br />
Sets the color for text. ''r'', ''g'' and ''b'' are the red, green and blue component of the color for unselected text. The color for selected text is set to the inverse color.<br />
<br />
=== $rgb(r1,g1,b1,r2,g2,b2) ===<br />
<br />
Sets the color for text. ''r1'', ''g1'' and ''b1'' are the red, green and blue component of the color for unselected text. ''r2'', ''g2'' and ''b2'' are the red, green and blue component of the color for selected text.<br />
<br />
=== $transition(string,color1,color2) ===<br />
<br />
Inserts color codes into ''string'', so that the first character has ''color1'', the last character has ''color2'', 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 ''$transition''.<br />
<br />
= Now playing info =<br />
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.<br />
<br />
== Special fields ==<br />
<br />
=== %playback_time% ===<br />
Returns the elapsed time formatted as [HH:]MM:SS.<br />
<br />
=== %playback_time_seconds% ===<br />
Returns elapsed time in seconds.<br />
Old version: <code>%_time_elapsed%</code><br />
<br />
=== %playback_time_remaining% ===<br />
Returns remaining time until track ends, formatted as [HH:]MM:SS.<br />
Old version: <code>%_time_remaining%</code><br />
<br />
=== %playback_time_remaining_seconds% ===<br />
Returns remaining time in seconds.<br />
Old version: <code>%_time_remaining_seconds%</code><br />
<br />
=== %length% ===<br />
Returns the length of the track formatted as hours, minutes, and seconds.<br />
Old version: <code>%_time_total%</code><br />
<br />
=== %length_ex% ===<br />
Returns the length of the track formatted as hours, minutes, seconds, and milliseconds.<br />
<br />
=== %length_seconds% ===<br />
Returns the length of the track in seconds.<br />
Old version: <code>%_time_total_seconds%</code><br />
<br />
=== %length_seconds_fp% ===<br />
Returns the length of the track in seconds as floating point number.<br />
<br />
=== %length_samples% ===<br />
Returns the length of the track in samples.<br />
<br />
= Playlist info =<br />
The following functions and fields are usable for playlist scripts such as masstagger.<br />
<br />
== Special fields ==<br />
<br />
=== %isplaying% ===<br />
<br />
Returns "1" if file is currently playing and empty string otherwise.<br />
<br />
The old version <code>%_isplaying%</code> still works.<br />
<br />
=== %ispaused% ===<br />
<br />
Returns "1" if playback is paused, empty string otherwise.<br />
<br />
The old version <code>%_ispaused%</code> still works.<br />
<br />
=== %list_index% ===<br />
<br />
Returns a zero-padded playlist index of specified item. The first item is at index 1.<br />
<br />
Also see [[Foobar2000:Titleformat Reference#%playlist_number%|%playlist_number%]].<br />
<br />
The old version <code>%_playlist_number%</code> still works.<br />
<br />
=== %list_total% ===<br />
<br />
Returns number of items in the playlist.<br />
<br />
The old version <code>%_playlist_total%</code> still works.<br />
<br />
=== %playlist_name% ===<br />
<br />
Returns the name of the playlist containing the specified item.<br />
<br />
The old version <code>%_playlist_name%</code> still works.<br />
<br />
= String functions =<br />
<br />
The functions in this section can be used to manipulate character strings.<br />
<br />
=== $abbr(x) ===<br />
<br />
Returns abbreviation of ''x''.<br />
<br />
=== $abbr(x,len) ===<br />
<br />
Returns abbreviation of ''x'', if ''x'' is longer than ''len'' characters, otherwise returns ''x''.<br />
<br />
=== $ansi(x) ===<br />
<br />
Converts ''x'' 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.<br />
<br />
=== $ascii(x) ===<br />
<br />
Converts ''x'' to ASCII. Any characters that are not present in ASCII will be removed / replaced.<br />
<br />
=== $caps(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and all other letters to lowercase.<br />
<br />
=== $caps2(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and leaves all other letters as they are.<br />
<br />
=== $char(x) ===<br />
<br />
Inserts Unicode character with code ''x''.<br />
<br />
=== $crc32(a) ===<br />
<br />
Computes the CRC32 of the string ''a'' as a number. Intended for use in coloring scripts.<br />
<br />
Example: $rgb($mod($crc32(%album%),256),128,128)<br />
<br />
=== $crlf() ===<br />
<br />
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 ("systray") icon.<br />
<br />
=== $cut(a,len) ===<br />
<br />
Returns first ''len'' characters on the left of ''a''.<br />
<br />
=== $directory(x) ===<br />
<br />
Extracts directory name from the file path ''x''.<br />
<br />
=== $directory(x,n) ===<br />
<br />
Extracts directory name from the file path ''x''; goes up by ''n'' levels.<br />
<br />
=== $ext(x) ===<br />
<br />
Extracts file extension from ''x'' which must be a file name or path.<br />
<br />
=== $filename(x) ===<br />
<br />
Extracts file name from full path.<br />
<br />
=== $fix_eol(x) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by " (...)". Otherwise ''x'' is returned unaltered.<br />
<br />
=== $fix_eol(x,indicator) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by ''indicator''. Otherwise ''x'' is returned unaltered.<br />
<br />
=== $hex(n) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation.<br />
<br />
=== $hex(n,len) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $insert(a,b,n) ===<br />
<br />
Inserts ''b'' into ''a'' after ''n'' characters.<br />
<br />
=== $left(a,len) ===<br />
<br />
Returns the first ''len'' characters from the left of ''a''.<br />
<br />
=== $len(a) ===<br />
<br />
Returns length of string ''a'' in characters.<br />
<br />
=== $len2(a) ===<br />
<br />
Returns length of string x in characters, respecting double-width character rules (double-width characters will be counted as two).<br />
<br />
=== $longer(a,b) ===<br />
<br />
Returns ''true'', if string ''a'' is longer than string ''b'', false otherwise.<br />
<br />
=== $lower(a) ===<br />
<br />
Converts ''a'' to lowercase.<br />
<br />
=== $longest(a,...) ===<br />
<br />
Returns the longest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $num(n,len) ===<br />
<br />
Formats the integer number ''n'' in decimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $pad(x,len) ===<br />
<br />
Pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $pad_right(x,y) ===<br />
<br />
Pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $pad(x,len,char) ===<br />
<br />
Pads ''x'' from the left with ''char'' to ''len'' characters.<br />
<br />
=== $pad_right(x,len,char) ===<br />
<br />
Pads ''x'' from the right with ''char'' to ''len'' characters.<br />
<br />
=== $padcut(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $padcut_right(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $progress(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with.<br />
<br />
Example:''$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=')'' produces "====#===============", the # character is moving with playback position.<br />
<br />
=== $progress2(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with. Produces different appearance than ''$progress''.<br />
<br />
=== $repeat(a,n) ===<br />
<br />
Returns ''n'' copies of ''a''. Note that ''a'' is evaluated once before its value is used, so ''$repeat'' cannot be used for loops.<br />
<br />
=== $replace(a,b,c) ===<br />
<br />
Replaces all occurrences of string ''b'' in string ''a'' with string ''c''.<br />
<br />
Can also be used with an arbitrary number of arguments. Note that ''$replace(a,b1,c1,b2,c2)'' is generally not the same as ''$replace($replace(a,b1,c1),b2,c2)''.<br />
<br />
Example: ''$replace(ab,a,b,b,c)'' → "bc", ''$replace($replace(ab,a,b),b,c)'' → "cc"<br />
<br />
=== $right(a,len) ===<br />
<br />
Returns the first ''len'' characters from the right of ''a''.<br />
<br />
=== $roman(n) ===<br />
<br />
Formats the integer number ''n'' in roman notation.<br />
<br />
=== $rot13() ===<br />
<br />
Performs [http://en.wikipedia.org/wiki/ROT13 ROT13] transformation to given string.<br />
<br />
Example: ''$rot13('foobar2000')'' → "sbbone2000".<br />
<br />
=== $shortest ===<br />
<br />
Returns the shortest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $strchr(s,c) ===<br />
<br />
Finds first occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strchr(abca,a)'' → 1<br />
<br />
=== $strrchr(s,c) ===<br />
<br />
Finds last occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strrchr(abca,a)'' → 4<br />
<br />
=== $strstr(s1,s2) ===<br />
<br />
Finds first occurence of string ''s2'' in string ''s1''.<br />
<br />
=== $strcmp(s1,s2) ===<br />
<br />
Performs a case-sensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $stricmp(s1,s2) ===<br />
<br />
Performs a case-insensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $substr(s,m,n) ===<br />
<br />
Returns substring of string ''s'', starting from ''m''-th character and ending at ''n''-th character.<br />
<br />
=== $trim(s) ===<br />
<br />
Removes leading and trailing spaces from string ''s''.<br />
<br />
=== $tab() ===<br />
<br />
Inserts one tabulator character.<br />
<br />
=== $tab(n) ===<br />
<br />
Inserts ''n'' tabulator characters.<br />
<br />
=== $upper(s) ===<br />
<br />
Converts string ''s'' to uppercase.<br />
<br />
= Track info =<br />
<br />
The functions and fields in this section can be used to access information about tracks. See [[Foobar2000:0.9 Track Info Panel Mod (foo uie trackinfo mod)|this]] for more info about Track info mod.<br />
<br />
== Metadata ==<br />
<br />
=== $meta(name) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ", " as separator.<br />
<br />
Example: ''$meta(artist)'' → "He, She, It"<br />
<br />
=== $meta(name,n) ===<br />
Returns value of ''n''-th (0,1,2 and so on) tag called ''name''.<br />
<br />
Example: ''$meta(artist,1)'' → "She"<br />
<br />
=== $meta_sep(name,sep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator.<br />
<br />
Example: ''$meta_sep(artist,' + ')'' → "He + She + It"<br />
<br />
=== $meta_sep(name,sep,lastsep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator between all but the last two values which are concatenated with ''lastsep''.<br />
<br />
Example: ''$meta_sep(artist,', ',', and ')'' → "He, She, and It"<br />
<br />
=== $meta_test(...) === <br />
Returns ''1'', if all given tags exist, ''undefined'' otherwise.<br />
<br />
Example: ''$meta_test(artist,title)'' → true<br />
<br />
=== $meta_num(name) ===<br />
Returns the number of values for the tag called ''name''.<br />
<br />
Example: ''$meta_num(artist)'' → 3<br />
<br />
=== $tracknumber() ===<br />
Returns the tracknumber padded to 2 digits with zeroes.<br />
<br />
=== $tracknumber(n) ===<br />
Returns the tracknumber padded to ''n'' digits with zeros.<br />
<br />
== Technical information ==<br />
<br />
=== $info(name) ===<br />
Returns value of technical information field called ''name''.<br />
<br />
For convenience, the '''%__name%''' alias is also available.<br />
<br />
Example: ''$info(channels)'' → 2<br />
<br />
Here is an '''informative''' list of recognized fields. Some of these depend on the media file type being queried.<br />
<br />
(→See also: [[Foobar2000_Talk:Titleformat_Reference#Other_information|Talk page]])<br />
<br />
{| border="0" cellspacing="0" cellpadding="2"<br />
! field name<br />
! Description<br />
|-<br />
| colspan="2" style="background-color:#CCF"|'''General'''<br />
|-<br />
|codec<br />
| style="background-color:#EEF"|'''Codec''' (''e.g.'' MP3)<br />
|-<br />
|codec_profile<br />
| style="background-color:#EEF"|'''Codec Profile''' (''e.g.'' CBR)<br />
|-<br />
|samplerate<br />
| style="background-color:#EEF"|'''Sample Rate''', in hertz (''e.g.'' 44100)<br />
|-<br />
|bitrate<br />
| style="background-color:#EEF"|'''Bitrate''', in kilobits per second (''e.g.'' 320)<br />
|-<br />
|tool<br />
| style="background-color:#EEF"|'''Tool''' used to produce the file, possibly guessed (''e.g.'' LAME3.97)<br />
|-<br />
|encoding<br />
| style="background-color:#EEF"|'''Encoding''' lossiness (''e.g.'' lossy)<br />
|-<br />
|channels<br />
| style="background-color:#EEF"|'''Channels''' count (''e.g.'' 2 <nowiki>[for stereo]</nowiki>)<br />
|-<br />
|bitspersample<br />
| style="background-color:#EEF"|'''Bits Per Sample''' (''e.g.'' 16)<br />
|-<br />
|tagtype<br />
| style="background-color:#EEF"|'''Tag Type''', comma-separated list of tag formats (''e.g.'' id3v2|apev2)<br />
|-<br />
|cue_embedded<br />
| style="background-color:#EEF"|'''Embedded Cuesheet''' presence (''e.g.'' no <nowiki>[may be empty!]</nowiki>)<br />
|-<br />
|md5<br />
| style="background-color:#EEF"|'''Audio MD5''' hash, if container defines it (''e.g.'' 1E24A910D91EF09A8CF403C9B6963961)<br />
|-<br />
| colspan="2" style="background-color:#CCF"|'''Other'''<br />
|-<br />
|ENC_DELAY<br />
| style="background-color:#EEF"|LAME proprietary MP3 '''enc_delay''' value (''e.g.'' 576)<br />
|-<br />
|ENC_PADDING<br />
| style="background-color:#EEF"|LAME proprietary MP3 '''enc_padding''' value (''e.g.'' 1536)<br />
|-<br />
|MP3_ACCURATE_LENGTH<br />
| style="background-color:#EEF"|'''mp3_accurate_length''' supported (LAME proprietary header)? (''e.g.'' yes)<br />
|-<br />
|MP3_STEREO_MODE<br />
| style="background-color:#EEF"|Stereo mode used in MP3 file (''e.g.'' mono, stereo, joint stereo, etc.)<br />
|-<br />
|VERSION<br />
| style="background-color:#EEF"|'''Version''' of tool (''e.g.'' 3.99)<br />
|-<br />
|FLAGS<br />
| style="background-color:#EEF"|'''Flags''' of tool (''e.g.'' 22)<br />
|}<br />
<br />
=== $codec() ===<br />
Returns codec of track. If no codec field is present, it the uses file extension.<br />
<br />
Example: ''$codec()'' → "WavPack"<br />
<br />
=== $channels() === <br />
Returns number of channels in text format.<br />
<br />
Example: ''$channels()'' → "stereo"<br />
<br />
=== %__replaygain_album_gain% ===<br />
Returns ReplayGain album gain value. //Not available through// ''$info(replaygain_album_gain)''.<br />
<br />
=== %__replaygain_album_peak% ===<br />
Returns ReplayGain album peak value. //Not available through// ''$info(replaygain_album_peak)''.<br />
<br />
=== %__replaygain_track_gain% ===<br />
Returns ReplayGain track gain value. //Not available through// ''$info(replaygain_track_gain)''.<br />
<br />
=== %__replaygain_track_peak% ===<br />
Returns ReplayGain track peak value. //Not available through// ''$info(replaygain_track_peak)''.<br />
<br />
== Special fields ==<br />
<br />
=== $extra(name) ===<br />
Returns the value of the special field called ''name''. These fields can also be accessed as ''%_name%''; note the additional underscore. This syntax is from an older version of Foobar2000 {{Foobar2000v08}}. The following fields can be used normally.<br />
==== %filename% ====<br />
Returns the filename without directory and extension.<br />
==== %filename_ext% ====<br />
Returns the filename with extension, but without the directory.<br />
==== %directoryname% ====<br />
Returns the name of the parent directory only, not the complete path.<br />
==== %lastmodified% ====<br />
Returns the date and time the file was last modified. Eg: ''2005-12-22 00:04:10''<br />
==== %path% ====<br />
Returns the path.<br />
==== %path_raw% ====<br />
Returns the path as URL including the protocol scheme.<br />
==== %subsong% ====<br />
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.<br />
==== $extra(foobar2000_version) ====<br />
Returns a string representing the version of foobar2000.<br />
<br />
= Variable operations =<br />
<br />
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.<br />
<br />
For example:<br />
{| border="0" cellspacing="0" cellpadding="2"<br />
! code<br />
! output<br />
|-<br />
|<pre>$put(foo,bar)$char(10)<br />
$get(foo)$char(10)<br />
$get(Foo)$char(10)<br />
$puts(foo,2000)$char(10)<br />
$get(foo)$char(10)</pre><br />
| style="background-color:#EEF" |<pre>bar<br />
bar<br />
bar<br />
<br />
2000</pre><br />
|}<br />
=== $get(name) ===<br />
<br />
Returns the value that was last stored in the variable ''name'', if the variable was not defined (yet), it returns nothing. The truth value returned by ''$get'' indicates if the variable ''name'' was defined<br />
<br />
=== $put(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns ''value'' unaltered<br />
<br />
=== $puts(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns nothing<br />
<br />
= Component-provided fields and functions on tracks =<br />
<br />
This section lists components that provide additional fields and functions that are useable in the context of any track.<br />
<br />
== Playback statistics ==<br />
<br />
* [http://www.foobar2000.org/beta/components.html Playback statistics homepage]<br />
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]<br />
<br />
= Component-specific fields and functions =<br />
<br />
This section lists components that provide additional fields and functions that are only usable in the context of the particular component.<br />
<br />
== Album list ==<br />
<br />
The official album list component supports creating multiple tree entries using special commands.<br />
<br />
* [http://www.foobar2000.org/ Album list homepage]<br />
* [[Foobar2000:Titleformat Album List|Album list titleformat reference]]<br />
<br />
== Columns UI ==<br />
<br />
* [http://music.morbo.org/wiki/columns_ui:manual Columns UI homepage]<br />
* [http://music.morbo.org/wiki/columns_ui:config:global_variables Global variables reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:colour_string Playlist colors reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:playlist_switcher_titleformatting Playlist switcher reference]<br />
<br />
== Cwbowron's titleformatting (foo_cwb_hooks) ==<br />
<br />
Cwbowron's titleformatting, <tt>foo_cwb_hooks</tt>, adds various functions and variables to global titleformatting.<br />
<br />
* [[Foobar2000:Components 0.9/Cwbowron's Title formating (foo cwb hooks)|foo_cwb_hooks titleformat reference]]<br />
<br />
== Panels UI ==<br />
<br />
* [[Foobar2000:Components 0.9/Panels UI (foo ui panels)|Panels UI]]<br />
* [[Foobar2000:Components 0.9/Panels UI (foo ui panels)/Commands|Panels UI titleformat reference]]<br />
<br />
= Additional Reading =<br />
<br />
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]<br />
* '''titleformat_help.html''' in your Foobar2000 directory (ie C:\Program Files\foobar2000\titleformat_help.html) file:///C:/Program%20Files/foobar2000/titleformat_help.html<br />
<br />
<br />
[[Category:foobar2000 Guides|Titleformat Reference]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Title_Formatting_ReferenceFoobar2000:Title Formatting Reference2007-09-06T15:15:51Z<p>Foosion: /* %track artist% */ Clarification</p>
<hr />
<div>{{fb2k}}<br />
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.<br />
<br />
A field reference is a field name enclosed in percent signs, for example ''%artist%''. 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 ''()'' - or contain one or more parameters separated by commata, for example ''$abbr(%artist%)''. 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.<br />
<br />
Please see [[Foobar2000:Titleformat_Introduction|Titleformat Introduction]] for a presentation of titleformat syntax in general.<br />
<br />
= Field remappings =<br />
<br />
Some of the fields accessible through ''%name%'' are remapped to other values to make writing titleformat scripts more convenient.<br />
<br />
== Metadata ==<br />
<br />
=== %album artist% ===<br />
Defined as ''$if3($meta(album artist),$meta(artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %album% ===<br />
Defined as ''$if3($meta(album),$meta(venue))''.<br />
<br />
=== %artist% ===<br />
Defined as ''$if3($meta(artist),$meta(album artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %disc% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %discnumber% remapping.<br />
<br />
=== %discnumber% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %disc% remapping.<br />
<br />
=== %track artist% ===<br />
If ''$meta(artist)'' and ''$meta(album artist)'' are both nonempty and different, the value of this field is ''$meta(artist)'', otherwise this field is empty.<br />
<br />
=== %title% ===<br />
Defined as ''$if2($meta(title),%_filename%)''. Returns the ''title'' tag if available, otherwise it returns the filename excluding the extension.<br />
<br />
=== %track% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %tracknumber% remapping.<br />
<br />
=== %tracknumber% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %track% remapping.<br />
<br />
== Technical information ==<br />
<br />
=== %bitrate% ===<br />
Defined as ''$if2($info(bitrate_dynamic),$info(bitrate))''. Returns the current bitrate, if available, otherwise it returns the average bitrate. If neither is available, nothing is returned.<br />
<br />
=== %channels% ===<br />
Defined as ''$channels()''. Returns the number of channels in text form; returns "mono" and "stereo" instead of "1" and "2".<br />
<br />
=== %filesize% ===<br />
Defined as ''%_filesize%''. Returns the filesize in bytes.<br />
<br />
=== %samplerate% ===<br />
Defined as ''$info(samplerate)''. Returns the samplerate in Hz.<br />
<br />
=== %codec% ===<br />
Defined as ''$codec()''.<br />
<br />
== Special fields ==<br />
<br />
=== %playlist_number% ===<br />
Defined as ''$num(%_playlist_number%,$len(%_playlist_total%))''. Returns the position of the track as index into the playlist. The first track has index 1. The index is padded from the left with zeroes to the same number of digits as the last track.<br />
<br />
= Control flow =<br />
<br />
The functions in this section can be used to conditionally execute statements.<br />
<br />
=== [...] (conditional section) ===<br />
<br />
Evaluates the expression between ''['' and '']''. If it has the truth value ''true'', its string value and the truth value ''true'' are returned. Otherwise an empty string and ''false'' are returned.<br />
<br />
Example: ''[%artist%]'' returns the value of the artist tag, if it exists. Otherwise it returns nothing, when ''artist'' would return "?".<br />
<br />
=== $if(cond,then) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, ''false'' is returned.<br />
<br />
=== $if(cond,then,else) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, the ''else'' part is evaluated and its value returned.<br />
<br />
=== $if2(a,else) ===<br />
<br />
Like ''$if(a,a,else)'' except that ''a'' is only evaluated once.<br />
<br />
=== $if3(a1,a2,...,aN,else) ===<br />
<br />
Evaluates arguments ''a1'' ... ''aN'', until one is found that evaluates to ''true''. If that happens, its value is returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifequal(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is equal to ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifgreater(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is greater than ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $iflonger(s1,s2,then,else) ===<br />
<br />
Compares the length of the strings ''s1'' and ''s2'', if ''s1'' is longer than ''s2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $select(n,a1,...,aN) ===<br />
<br />
If the value of ''n'' is between 1 and N, ''an'' is evaluated and its value returned. Otherwise ''false'' is returned.<br />
<br />
= Arithmetic functions =<br />
<br />
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.<br />
<br />
Example: "c3po" → 0, " -12" → -12, but "- 12" → 0<br />
<br />
=== $add(a,b) ===<br />
<br />
Adds ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$add(a,b,...)'' is the same as ''$add($add(a,b),...)''.<br />
<br />
=== $div(a,b) ===<br />
<br />
Divides ''a'' through ''b''. If ''b'' evaluates to zero, it returns ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$div(a,b,...)'' is the same as ''$div($div(a,b),...)''.<br />
<br />
=== $greater(a,b) ===<br />
<br />
Returns true, if ''a'' is greater than ''b'', otherwise false.<br />
<br />
=== $max(a,b) ===<br />
<br />
Returns the maximum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$max(a,b,...)'' is the same as ''$max($max(a,b),...)''.<br />
<br />
=== $min(a,b) ===<br />
<br />
Returns the minimum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$min(a,b,...)'' is the same as ''$min($min(a,b),...)''.<br />
<br />
=== $mod(a,b) ===<br />
<br />
Computes the remainder of dividing ''a'' through ''b''. The result has the same sign as ''a''. If ''b'' evaluates to zero, the result is ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mod(a,b,...)'' is the same as ''$mod($mod(a,b),...)''.<br />
<br />
=== $mul(a,b) ===<br />
<br />
Multiplies ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mul(a,b,...)'' is the same as ''$mul($mul(a,b),...)''.<br />
<br />
=== $muldiv(a,b,c) ===<br />
<br />
Multiplies ''a'' and ''b'', then divides by ''c''. The result is rounded to the nearest integer.<br />
<br />
=== $rand() ===<br />
<br />
Generates a random number in the range from 0 to 2<sup>32</sup>-1.<br />
<br />
=== $sub(a,b) ===<br />
<br />
Subtracts ''b'' from ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$sub(a,b,...)'' is the same as ''$sub($sub(a,b),...)''.<br />
<br />
= Boolean functions =<br />
<br />
The functions in this section can be used to work with truth values (''true'' and ''false''), 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 ''$if'' and related functions.<br />
<br />
=== $and(...) ===<br />
<br />
Logical And of an arbitrary number of arguments. Returns ''true'', if and only if all arguments evaluate to ''true''.<br />
<br />
Special case: ''$and(x,y)'' is ''true'', if both ''x'' and ''y'' are ''true''. Otherwise it is ''false''.<br />
<br />
=== $or(...) ===<br />
<br />
Logical Or of an arbitrary number of arguments. Returns ''true'', if at least one argument evaluates to ''true''.<br />
<br />
Special case: ''$or(x,y)'' is ''true'', if ''x'' or ''y'' is ''true'', or if both are ''true''. Otherwise it is ''false''.<br />
<br />
=== $not(x) ===<br />
<br />
Logical Not. Returns ''false'', if ''x'' is ''true'', otherwise it returns ''true''.<br />
<br />
=== $xor(...) ===<br />
<br />
Logical Exclusive-or of an arbitrary number of arguments. Returns ''true'', if an odd number of arguments evaluate to ''true''.<br />
<br />
Special case: ''$xor(x,y)'' is ''true'', if one of ''x'' and ''y'' is ''true'', but not both. Otherwise it is ''false''.<br />
<br />
= Color functions =<br />
<br />
=== $blend(color1,color2,part,total) ===<br />
<br />
Returns a color that is a blend between ''color1'' and ''color2''. If ''part'' is smaller than or equal to zero, ''color1'' is returned. If ''part'' is greater than or equal to ''total'', ''color2'' is returned. Otherwise a blended color is returned that is ''part'' parts ''color1'' and ''total''-''part'' parts ''color2''. The blending is performed in the RGB color space.<br />
<br />
=== $hsl() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $hsl(h,s,l) ===<br />
<br />
Sets the color for text in the HSL color space. ''h'', ''s'' and ''l'' are the hue, saturation, and lightness of the color for unselected text. The color for selected text is set to the inverse color.<br />
The ranges of ''h'', ''s'', and ''l'' are from 0 to 240; the function is designed to interpret those values in the same way as the standard Windows color dialog.<br />
<br />
=== $hsl(h1,s1,l1,h2,s2,l2) ===<br />
<br />
Sets the color for text in the HSL color space. ''h1'', ''s1'' and ''l1'' are the hue, saturation, and lightness of the color for unselected text. ''h2'', ''s2'' and ''l2'' are the hue, saturation, and lightness of the color for selected text.<br />
<br />
=== $rgb() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $rgb(r,g,b) ===<br />
<br />
Sets the color for text. ''r'', ''g'' and ''b'' are the red, green and blue component of the color for unselected text. The color for selected text is set to the inverse color.<br />
<br />
=== $rgb(r1,g1,b1,r2,g2,b2) ===<br />
<br />
Sets the color for text. ''r1'', ''g1'' and ''b1'' are the red, green and blue component of the color for unselected text. ''r2'', ''g2'' and ''b2'' are the red, green and blue component of the color for selected text.<br />
<br />
=== $transition(string,color1,color2) ===<br />
<br />
Inserts color codes into ''string'', so that the first character has ''color1'', the last character has ''color2'', 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 ''$transition''.<br />
<br />
= Now playing info =<br />
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.<br />
<br />
== Special fields ==<br />
<br />
=== %playback_time% ===<br />
Returns the elapsed time formatted as [HH:]MM:SS.<br />
<br />
=== %playback_time_seconds% ===<br />
Returns elapsed time in seconds.<br />
Old version: <code>%_time_elapsed%</code><br />
<br />
=== %playback_time_remaining% ===<br />
Returns remaining time until track ends, formatted as [HH:]MM:SS.<br />
Old version: <code>%_time_remaining%</code><br />
<br />
=== %playback_time_remaining_seconds% ===<br />
Returns remaining time in seconds.<br />
Old version: <code>%_time_remaining_seconds%</code><br />
<br />
=== %length% ===<br />
Returns the length of the track formatted as hours, minutes, and seconds.<br />
Old version: <code>%_time_total%</code><br />
<br />
=== %length_ex% ===<br />
Returns the length of the track formatted as hours, minutes, seconds, and milliseconds.<br />
<br />
=== %length_seconds% ===<br />
Returns the length of the track in seconds.<br />
Old version: <code>%_time_total_seconds%</code><br />
<br />
=== %length_seconds_fp% ===<br />
Returns the length of the track in seconds as floating point number.<br />
<br />
=== %length_samples% ===<br />
Returns the length of the track in samples.<br />
<br />
= Playlist info =<br />
The following functions and fields are usable for playlist scripts such as masstagger.<br />
<br />
== Special fields ==<br />
<br />
=== %isplaying% ===<br />
<br />
Returns "1" if file is currently playing and empty string otherwise.<br />
<br />
The old version <code>%_isplaying%</code> still works.<br />
<br />
=== %ispaused% ===<br />
<br />
Returns "1" if playback is paused, empty string otherwise.<br />
<br />
The old version <code>%_ispaused%</code> still works.<br />
<br />
=== %list_index% ===<br />
<br />
Returns a zero-padded playlist index of specified item. The first item is at index 1.<br />
<br />
Also see [[Foobar2000:Titleformat Reference#%playlist_number%|%playlist_number%]].<br />
<br />
The old version <code>%_playlist_number%</code> still works.<br />
<br />
=== %list_total% ===<br />
<br />
Returns number of items in the playlist.<br />
<br />
The old version <code>%_playlist_total%</code> still works.<br />
<br />
=== %playlist_name% ===<br />
<br />
Returns the name of the playlist containing the specified item.<br />
<br />
The old version <code>%_playlist_name%</code> still works.<br />
<br />
= String functions =<br />
<br />
The functions in this section can be used to manipulate character strings.<br />
<br />
=== $abbr(x) ===<br />
<br />
Returns abbreviation of ''x''.<br />
<br />
=== $abbr(x,len) ===<br />
<br />
Returns abbreviation of ''x'', if ''x'' is longer than ''len'' characters, otherwise returns ''x''.<br />
<br />
=== $ansi(x) ===<br />
<br />
Converts ''x'' 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.<br />
<br />
=== $ascii(x) ===<br />
<br />
Converts ''x'' to ASCII. Any characters that are not present in ASCII will be removed / replaced.<br />
<br />
=== $caps(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and all other letters to lowercase.<br />
<br />
=== $caps2(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and leaves all other letters as they are.<br />
<br />
=== $char(x) ===<br />
<br />
Inserts Unicode character with code ''x''.<br />
<br />
=== $crc32(a) ===<br />
<br />
Computes the CRC32 of the string ''a'' as a number. Intended for use in coloring scripts.<br />
<br />
Example: $rgb($mod($crc32(%album%),256),128,128)<br />
<br />
=== $crlf() ===<br />
<br />
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 ("systray") icon.<br />
<br />
=== $cut(a,len) ===<br />
<br />
Returns first ''len'' characters on the left of ''a''.<br />
<br />
=== $directory(x) ===<br />
<br />
Extracts directory name from the file path ''x''.<br />
<br />
=== $directory(x,n) ===<br />
<br />
Extracts directory name from the file path ''x''; goes up by ''n'' levels.<br />
<br />
=== $ext(x) ===<br />
<br />
Extracts file extension from ''x'' which must be a file name or path.<br />
<br />
=== $filename(x) ===<br />
<br />
Extracts file name from full path.<br />
<br />
=== $fix_eol(x) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by " (...)". Otherwise ''x'' is returned unaltered.<br />
<br />
=== $fix_eol(x,indicator) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by ''indicator''. Otherwise ''x'' is returned unaltered.<br />
<br />
=== $hex(n) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation.<br />
<br />
=== $hex(n,len) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $insert(a,b,n) ===<br />
<br />
Inserts ''b'' into ''a'' after ''n'' characters.<br />
<br />
=== $left(a,len) ===<br />
<br />
Returns the first ''len'' characters from the left of ''a''.<br />
<br />
=== $len(a) ===<br />
<br />
Returns length of string ''a'' in characters.<br />
<br />
=== $len2(a) ===<br />
<br />
Returns length of string x in characters, respecting double-width character rules (double-width characters will be counted as two).<br />
<br />
=== $longer(a,b) ===<br />
<br />
Returns ''true'', if string ''a'' is longer than string ''b'', false otherwise.<br />
<br />
=== $lower(a) ===<br />
<br />
Converts ''a'' to lowercase.<br />
<br />
=== $longest(a,...) ===<br />
<br />
Returns the longest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $num(n,len) ===<br />
<br />
Formats the integer number ''n'' in decimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $pad(x,len) ===<br />
<br />
Pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $pad_right(x,y) ===<br />
<br />
Pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $pad(x,len,char) ===<br />
<br />
Pads ''x'' from the left with ''char'' to ''len'' characters.<br />
<br />
=== $pad_right(x,len,char) ===<br />
<br />
Pads ''x'' from the right with ''char'' to ''len'' characters.<br />
<br />
=== $padcut(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $padcut_right(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $progress(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with.<br />
<br />
Example:''$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=')'' produces "====#===============", the # character is moving with playback position.<br />
<br />
=== $progress2(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with. Produces different appearance than ''$progress''.<br />
<br />
=== $repeat(a,n) ===<br />
<br />
Returns ''n'' copies of ''a''. Note that ''a'' is evaluated once before its value is used, so ''$repeat'' cannot be used for loops.<br />
<br />
=== $replace(a,b,c) ===<br />
<br />
Replaces all occurrences of string ''b'' in string ''a'' with string ''c''.<br />
<br />
Can also be used with an arbitrary number of arguments. Note that ''$replace(a,b1,c1,b2,c2)'' is generally not the same as ''$replace($replace(a,b1,c1),b2,c2)''.<br />
<br />
Example: ''$replace(ab,a,b,b,c)'' → "bc", ''$replace($replace(ab,a,b),b,c)'' → "cc"<br />
<br />
=== $right(a,len) ===<br />
<br />
Returns the first ''len'' characters from the right of ''a''.<br />
<br />
=== $roman(n) ===<br />
<br />
Formats the integer number ''n'' in roman notation.<br />
<br />
=== $rot13() ===<br />
<br />
Performs [http://en.wikipedia.org/wiki/ROT13 ROT13] transformation to given string.<br />
<br />
Example: ''$rot13('foobar2000')'' → "sbbone2000".<br />
<br />
=== $shortest ===<br />
<br />
Returns the shortest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $strchr(s,c) ===<br />
<br />
Finds first occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strchr(abca,a)'' → 1<br />
<br />
=== $strrchr(s,c) ===<br />
<br />
Finds last occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strrchr(abca,a)'' → 4<br />
<br />
=== $strstr(s1,s2) ===<br />
<br />
Finds first occurence of string ''s2'' in string ''s1''.<br />
<br />
=== $strcmp(s1,s2) ===<br />
<br />
Performs a case-sensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $stricmp(s1,s2) ===<br />
<br />
Performs a case-insensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $substr(s,m,n) ===<br />
<br />
Returns substring of string ''s'', starting from ''m''-th character and ending at ''n''-th character.<br />
<br />
=== $trim(s) ===<br />
<br />
Removes leading and trailing spaces from string ''s''.<br />
<br />
=== $tab() ===<br />
<br />
Inserts one tabulator character.<br />
<br />
=== $tab(n) ===<br />
<br />
Inserts ''n'' tabulator characters.<br />
<br />
=== $upper(s) ===<br />
<br />
Converts string ''s'' to uppercase.<br />
<br />
= Track info =<br />
<br />
The functions and fields in this section can be used to access information about tracks. See [[Foobar2000:0.9 Track Info Panel Mod (foo uie trackinfo mod)|this]] for more info about Track info mod.<br />
<br />
== Metadata ==<br />
<br />
=== $meta(name) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ", " as separator.<br />
<br />
Example: ''$meta(artist)'' → "He, She, It"<br />
<br />
=== $meta(name,n) ===<br />
Returns value of ''n''-th (0,1,2 and so on) tag called ''name''.<br />
<br />
Example: ''$meta(artist,1)'' → "She"<br />
<br />
=== $meta_sep(name,sep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator.<br />
<br />
Example: ''$meta_sep(artist,' + ')'' → "He + She + It"<br />
<br />
=== $meta_sep(name,sep,lastsep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator between all but the last two values which are concatenated with ''lastsep''.<br />
<br />
Example: ''$meta_sep(artist,', ',', and ')'' → "He, She, and It"<br />
<br />
=== $meta_test(...) === <br />
Returns ''1'', if all given tags exist, ''undefined'' otherwise.<br />
<br />
Example: ''$meta_test(artist,title)'' → true<br />
<br />
=== $meta_num(name) ===<br />
Returns the number of values for the tag called ''name''.<br />
<br />
Example: ''$meta_num(artist)'' → 3<br />
<br />
=== $tracknumber() ===<br />
Returns the tracknumber padded to 2 digits with zeroes.<br />
<br />
=== $tracknumber(n) ===<br />
Returns the tracknumber padded to ''n'' digits with zeros.<br />
<br />
== Technical information ==<br />
<br />
=== $info(name) ===<br />
Returns value of technical information field called ''name''.<br />
<br />
For convenience, the '''%__name%''' alias is also available.<br />
<br />
Example: ''$info(channels)'' → 2<br />
<br />
Here is an '''informative''' list of recognized fields. Some of these depend on the media file type being queried.<br />
<br />
(→See also: [[Foobar2000_Talk:Titleformat_Reference#Other_information|Talk page]])<br />
<br />
{| border="0" cellspacing="0" cellpadding="2"<br />
! field name<br />
! Description<br />
|-<br />
| colspan="2" style="background-color:#CCF"|'''General'''<br />
|-<br />
|codec<br />
| style="background-color:#EEF"|'''Codec''' (''e.g.'' MP3)<br />
|-<br />
|codec_profile<br />
| style="background-color:#EEF"|'''Codec Profile''' (''e.g.'' CBR)<br />
|-<br />
|samplerate<br />
| style="background-color:#EEF"|'''Sample Rate''', in hertz (''e.g.'' 44100)<br />
|-<br />
|bitrate<br />
| style="background-color:#EEF"|'''Bitrate''', in kilobits per second (''e.g.'' 320)<br />
|-<br />
|tool<br />
| style="background-color:#EEF"|'''Tool''' used to produce the file, possibly guessed (''e.g.'' LAME3.97)<br />
|-<br />
|encoding<br />
| style="background-color:#EEF"|'''Encoding''' lossiness (''e.g.'' lossy)<br />
|-<br />
|channels<br />
| style="background-color:#EEF"|'''Channels''' count (''e.g.'' 2 <nowiki>[for stereo]</nowiki>)<br />
|-<br />
|bitspersample<br />
| style="background-color:#EEF"|'''Bits Per Sample''' (''e.g.'' 16)<br />
|-<br />
|tagtype<br />
| style="background-color:#EEF"|'''Tag Type''', comma-separated list of tag formats (''e.g.'' id3v2|apev2)<br />
|-<br />
|cue_embedded<br />
| style="background-color:#EEF"|'''Embedded Cuesheet''' presence (''e.g.'' no <nowiki>[may be empty!]</nowiki>)<br />
|-<br />
|md5<br />
| style="background-color:#EEF"|'''Audio MD5''' hash, if container defines it (''e.g.'' 1E24A910D91EF09A8CF403C9B6963961)<br />
|-<br />
| colspan="2" style="background-color:#CCF"|'''Other'''<br />
|-<br />
|ENC_DELAY<br />
| style="background-color:#EEF"|LAME proprietary MP3 '''enc_delay''' value (''e.g.'' 576)<br />
|-<br />
|ENC_PADDING<br />
| style="background-color:#EEF"|LAME proprietary MP3 '''enc_padding''' value (''e.g.'' 1536)<br />
|-<br />
|MP3_ACCURATE_LENGTH<br />
| style="background-color:#EEF"|'''mp3_accurate_length''' supported (LAME proprietary header)? (''e.g.'' yes)<br />
|-<br />
|MP3_STEREO_MODE<br />
| style="background-color:#EEF"|Stereo mode used in MP3 file (''e.g.'' mono, stereo, joint stereo, etc.)<br />
|-<br />
|VERSION<br />
| style="background-color:#EEF"|'''Version''' of tool (''e.g.'' 3.99)<br />
|-<br />
|FLAGS<br />
| style="background-color:#EEF"|'''Flags''' of tool (''e.g.'' 22)<br />
|}<br />
<br />
=== $codec() ===<br />
Returns codec of track. If no codec field is present, it the uses file extension.<br />
<br />
Example: ''$codec()'' → "WavPack"<br />
<br />
=== $channels() === <br />
Returns number of channels in text format.<br />
<br />
Example: ''$channels()'' → "stereo"<br />
<br />
=== %__replaygain_album_gain% ===<br />
Returns ReplayGain album gain value. //Not available through// ''$info(replaygain_album_gain)''.<br />
<br />
=== %__replaygain_album_peak% ===<br />
Returns ReplayGain album peak value. //Not available through// ''$info(replaygain_album_peak)''.<br />
<br />
=== %__replaygain_track_gain% ===<br />
Returns ReplayGain track gain value. //Not available through// ''$info(replaygain_track_gain)''.<br />
<br />
=== %__replaygain_track_peak% ===<br />
Returns ReplayGain track peak value. //Not available through// ''$info(replaygain_track_peak)''.<br />
<br />
== Special fields ==<br />
<br />
=== $extra(name) ===<br />
Returns the value of the special field called ''name''. These fields can also be accessed as ''%_name%''; note the additional underscore. This syntax is from an older version of Foobar2000 {{Foobar2000v08}}. The following fields can be used normally.<br />
==== %filename% ====<br />
Returns the filename without directory and extension.<br />
==== %filename_ext% ====<br />
Returns the filename with extension, but without the directory.<br />
==== %directoryname% ====<br />
Returns the name of the parent directory only, not the complete path.<br />
==== %lastmodified% ====<br />
Returns the date and time the file was last modified. Eg: ''2005-12-22 00:04:10''<br />
==== %path% ====<br />
Returns the path.<br />
==== %path_raw% ====<br />
Returns the path as URL including the protocol scheme.<br />
==== %subsong% ====<br />
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.<br />
==== $extra(foobar2000_version) ====<br />
Returns a string representing the version of foobar2000.<br />
<br />
= Variable operations =<br />
<br />
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.<br />
<br />
For example:<br />
{| border="0" cellspacing="0" cellpadding="2"<br />
! code<br />
! output<br />
|-<br />
|<pre>$put(foo,bar)$char(10)<br />
$get(foo)$char(10)<br />
$get(Foo)$char(10)<br />
$puts(foo,2000)$char(10)<br />
$get(foo)$char(10)</pre><br />
| style="background-color:#EEF" |<pre>bar<br />
bar<br />
bar<br />
<br />
2000</pre><br />
|}<br />
=== $get(name) ===<br />
<br />
Returns the value that was last stored in the variable ''name'', if the variable was not defined (yet), it returns nothing. The truth value returned by ''$get'' indicates if the variable ''name'' was defined<br />
<br />
=== $put(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns ''value'' unaltered<br />
<br />
=== $puts(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns nothing<br />
<br />
= Component-provided fields and functions on tracks =<br />
<br />
This section lists components that provide additional fields and functions that are useable in the context of any track.<br />
<br />
== Playback statistics ==<br />
<br />
* [http://www.foobar2000.org/beta/components.html Playback statistics homepage]<br />
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]<br />
<br />
= Component-specific fields and functions =<br />
<br />
This section lists components that provide additional fields and functions that are only usable in the context of the particular component.<br />
<br />
== Album list ==<br />
<br />
The official album list component supports creating multiple tree entries using special commands.<br />
<br />
* [http://www.foobar2000.org/ Album list homepage]<br />
* [[Foobar2000:Titleformat Album List|Album list titleformat reference]]<br />
<br />
== Columns UI ==<br />
<br />
* [http://music.morbo.org/wiki/columns_ui:manual Columns UI homepage]<br />
* [http://music.morbo.org/wiki/columns_ui:config:global_variables Global variables reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:colour_string Playlist colors reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:playlist_switcher_titleformatting Playlist switcher reference]<br />
<br />
== Cwbowron's titleformatting (foo_cwb_hooks) ==<br />
<br />
Cwbowron's titleformatting, <tt>foo_cwb_hooks</tt>, adds various functions and variables to global titleformatting.<br />
<br />
* [[Foobar2000:Components 0.9/Cwbowron's Title formating (foo cwb hooks)|foo_cwb_hooks titleformat reference]]<br />
<br />
== Panels UI ==<br />
<br />
* [[Foobar2000:Components 0.9/Panels UI (foo ui panels)|Panels UI]]<br />
* [[Foobar2000:Components 0.9/Panels UI (foo ui panels)/Commands|Panels UI titleformat reference]]<br />
<br />
= Additional Reading =<br />
<br />
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]<br />
* '''titleformat_help.html''' in your Foobar2000 directory (ie C:\Program Files\foobar2000\titleformat_help.html) file:///C:/Program%20Files/foobar2000/titleformat_help.html<br />
<br />
<br />
[[Category:foobar2000 Guides|Titleformat Reference]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Freedb_masstagger_(foo_freedb)Foobar2000:Freedb masstagger (foo freedb)2007-07-16T08:57:22Z<p>Foosion: added note which component this page describes</p>
<hr />
<div><nowiki></nowiki><br />
<br />
''Note: This page describes only the foo_freedb component for foobar2000 0.8.x by Dariusz Sieradzki. The information herein does not apply to the foo_freedb2 component for foobar2000 0.9.x by Holger Stenger.''<br />
<br />
<br />
<center><h1>Freedb</h1></center><br />
<blockquote><br />
You have some old files encoded with no tags and now that you have thousand of tags to enter, you are desparated? This page should help you a bit to have all the work achieved in only several minutes. Foobar offers you the ability to link information to numerous files without any waste of time to do it. You are able to tag your files thanks to the internet or the filenames themselves. It also allows you to add new tag fields to enlarge the abilities of foobar ( for example you can rate your files (with quicktag), know if there are various artists on the album etc.. you could also sort your files by genre, period, year, composer, performer etc...). Foobar not only fully supports APEv2, ID3v2, MP4, WMA, Vorbis_comment, but it also allows you to create and edit fastly your tags, remove some ones, duplicate tags from a file to another etc.. thanks to the different masstaggers. The system is based on the [http://www.saunalahti.fi/cse/foobar2000.php Case utility called TAG] which is based on commandline and has enormous possibilities.<br />
</blockquote><br />
<h2>Freedb </h2><br />
<blockquote><br />
This component, which was developed by Dariusz Sieradzki (alias messer), allows users to give information related to their albums thanks to an external database (freedb). The gain of time using this component is enormous as you don't have to enter manually any tag. <br><br />
<br><br />
<b>The selected songs must be into the commercial order of the album or it won't work</b>. <br><br />
<br><br />
Masstagging functions are avaible from the contextual menu:<br><br />
<center>http://eolindel.free.fr/foobar/freedb3.gif</center><br><br />
<br />
</blockquote><br />
<blockquote><br />
<h2>Configure</h2><br />
<blockquote><br />
<center>http://eolindel.free.fr/foobar/freedb4.gif</center><br><br />
<h3>Freedb configuration</h3><br />
<ul type="disc"><br />
<li><b><i>freedb server</i></b>: You can choose your freedb server. If your servers seems to work no more, just click on <b><i>retrieve freedb servers list </i></b> to have other adresses<br />
<li><b><i>your email address</i></b>: specifies an email adress which will be transmitted at the freedb serveur. Joe@foo.bar is perfect..<br />
<li><b><i>don’t try to compute discID</i></b>: the freedb query is based on a number calcuted with the number and length of the files. It may be fruitless even if the information is entered in the database. Using this option, you will forbid to the component to use the identifier to search in the database<br />
</ul><br />
<h3>preview</h3><br />
<ul type="disc"><br />
<li><b><i>before tagging allow me to select and preview freedb query results</i></b>: even if only one disc matches the criterion entered, the component will ask you to validate it. Not using this option, the component will always choose the first entry, it is faster but you can't be sure to get the most important amount of information.<br />
<li><b><i>But show preview dialog only if multiple matches were found </i></b>: when there are several albums matching the album selected, you will have to choose one to tag your files, if there is only one album in the database matching the selected one, it will automatically be used to tag your files<br />
<li><b><i>Automatically load all previews</i></b>: downloads automatically all the information corresponding to the results found, the user will still have to choose which result he will use to tag his files.<br />
</ul><br />
<h3>auto CDDA tagging</h3><br />
<ul type="disc"><br />
<li><b><i>when CD is added to Playlist, automatically retrieve titles</i></b>: will automatically try to search in the freedb a matching result to the CD added<br />
<li><b><i>show preview dialog before tagging CD</i></b>: foobar will display the preview window before getting information about the CD<br />
<li><b><i>use only foobar’s database to store CD tag</i></b>: saves the information collected in the database if it is enabled<br />
</ul><br />
<h3>freedb proxy config</h3><br />
<ul type="disc"><br />
<li>you will be able to enter your proxy parameters if you are using one<br />
</ul><br />
<br />
</blockquote><br />
<br />
<h2>Get tags</h2><br />
<blockquote><br />
<center>http://eolindel.free.fr/foobar/freedb5.gif</center><br><br />
Clicking on get tags, the search will start, it only takes couples of seconds generally. Then this window will pop up. The user is able to choose the fields to write, consequently you are able to save the information already entered without overwriting them with this component. You can also choose how your files will be tracknumbered.<br />
The interface is really clear. If you have several matches, just choose one and then I advice you to preview the selected album and choose the one with information corresponding to your wantings.. <br><br />
<br>Then just click on tag files to tag them or cancel if you have changed your mind. Then, your files will be updated.<br><br />
<br><br />
Using <b><i>Get tags (multiple albums)</i></b> will only repeat this process for each album.<br />
</blockquote><br />
<br />
<h2>Manual query</h2><br />
<blockquote><br />
<center>http://eolindel.free.fr/foobar/freedb6.gif</center><br><br />
If the automatic way doesn't work, the user can enter manually the values corresponding to his album. You wil have to enter the genre and the discID. As you are not wizards, the only way to know the TWO values is going on the [http://www.freedb.org/freedb_search.php freedb website] and do a search there.<br><br />
<center>http://eolindel.free.fr/foobar/freedb8.gif</center><br />
<b>Take care of the genre fields</b>, it must be the one entered in the freedb which rarely corresponds to the real genre of the album (for example an album of Mozart could be with the Rock genre !!).<br />
</blockquote><br />
<br />
<br />
<h2>Search</h2><br />
<blockquote><br />
<center>http://eolindel.free.fr/foobar/freedb7.gif</center><br><br />
Here, you will do a search on the freedb server. The criterion are various and could filter the results, use them to avoid hundreds of answers (or thousands..).<br><br />
<br><br />
<ul type="disc"><br />
<li><b><i>Keyword</i></b>: enter the keywords for your search<br />
<li><b><i>Search genres</i></b>: as the genre value rarely means anythings and is rarely really linked to the real genre of the album, Do not change it. (You coud miss your album of Beatle with the "genre" classical)<br />
<li><b><i>Search fields</i></b>: choose the fields where the search will be done<br />
<li><b><i>Show only entries matching</i></b>: Use it to filter your search to only one album and/or artist. It is really useful, do not neglect these values. As common words like "love" could give you endless answers without any filter..<br />
</ul><br />
<br />
</blockquote><br />
If those methods do not work, just try to do your search on other database as [http://www.gracenote.com/ gracenote]..<br />
</blockquote><br />
<br />
<br />
<br />
<br />
<br />
== GO back to [[Foobar2000:Advanced User Guide]]==</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Components/Playback_Statistics_(foo_playcount)Foobar2000:Components/Playback Statistics (foo playcount)2007-05-30T21:05:16Z<p>Foosion: Spelling corrections</p>
<hr />
<div>=Description=<br />
*Collects statistics about tracks from your Media Library being played. <br />
*Statistics can be displayed using '''%last_played%''' and '''%play_count%''', or using a [[Foobar2000:Commandline_Guide#Context_Menu_Items|context menu command]].<br />
<br />
=See also=<br />
* [[Foobar2000:Encouraged_Tag_Standards#FIRST_PLAYED_and_LAST_PLAYED|Additional information about standardization]].<br />
* [[Foobar2000:Tips_%26_Tricks#Standardize_my_PLAY_DATE_and_PLAY_TIME_fields|How to standardize my PLAY_DATE and PLAY_TIME fields]].<br />
<br />
=Link=<br />
* [http://www.foobar2000.com/components/index.html Official Website]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=20719 Discussion thread]<br />
* [http://www.foobar2000.com/components/foo_playcount.zip Download link]<br />
<br />
[[Category:foobar2000 Other Components|Playcount (official)]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Foobar2000Foobar2000:Foobar20002007-04-20T22:12:49Z<p>Foosion: </p>
<hr />
<div>{{notitle}}<div style="position: relative; top: -45px; z-index: 100;"><br />
{|cellspacing="0" style="border-collapse: collapse;"|<br />
|style="border: 1px solid #777777; padding: 10px; border-bottom: 0px;" colspan="2"|<br />
<div style="font-size: 24px; border: 0px; font-weight: normal; padding-left: 5px; margin: 0px;">[[Image:foobar2000 Logo.png]] the foobar2000 wiki</div><br />
|-<br />
|style="border: 1px solid #777777; padding: 10px; border-right: 0px;"|<br />
'''foobar2000''' is a freeware audio player, and more. Apart from audio playback, it also supports media libraries, file conversion, CD ripping, and many more powerful features.<br />
<div style="border: 1px solid #CCCCCC; padding: 5px 10px;"><br />
'''The latest stable version is:''' [http://www.foobar2000.org/foobar2000_0.9.4.3.exe v0.9.4.3]<br /><br />
</div><br />
==Features==<br />
<br />
* Open component architecture allowing third-party developers to extend functionality of the player<br />
* Full Unicode support<br />
* [[Replaygain]] support<br />
* Low memory footprint, efficient handling of really large playlists<br />
* Advanced file info processing capabilities (generic file info box and masstagger)<br />
* Highly customizable playlist display<br />
* Customizable keyboard shortcuts<br />
* Gapless playback<br />
* Multiple playlists<br />
* Music library<br />
* Streaming Support<br />
* Freeware<br />
<br />
==Supported Audio Formats==<br />
<br />
Native Support ("out-of-the-box"):<br />
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[Speex]], [[WavPack]], [[WAV]], [[AIFF]], [[AU]], [[SND]], [[CDDA]], [[WMA]].<br />
<br />
Supported through plug-ins:<br />
* [[TTA]], [[Monkey's Audio]], [[ALAC]], [[MOD]], [[SPC]], [[TFMX]], [[Shorten]], [[OptimFROG]], [[LPAC]], [[AC3]], [[DTS]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]], [[MMS]], [[RSTP]], etc.<br />
<br />
In addition, foobar2000 can also play music directly from compressed RAR, ZIP, [http://kode54.foobar2000.org/foo_unpack_jma.zip JMA] & [http://kode54.foobar2000.org/foo_unpack_lha.zip LHA] archives without requiring the user to extract the files prior to playing.<br />
<br />
Foobar2000 has been coded exclusively for the Windows platform with an English interface. The author does not intend to provide alternate language versions nor alternate platform versions. However, several people have had success [http://www.hydrogenaudio.org/forums/index.php?act=ST&f=24&t=6349&hl=wine running foobar2000 on x86 Linux systems] by using [http://www.winehq.org/ Wine], although the Columns UI plugin is known to be problematic.<br />
<br />
==Using foobar2000==<br />
* [[foobar2000:components 0.9|foobar2000 0.9.x Components]]<br />
* [[foobar2000:Directories|foobar2000 Directories]]<br />
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]<br />
* [[foobar2000:FAQ|foobar2000 FAQ]]<br />
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Guides foobar2000 Guides (category)]<br />
* [http://wiki.hydrogenaudio.org/index.php?title=Category:Foobar2000_Preferences foobar2000 Preferences (category)]<br />
* [[foobar2000:Tips & Tricks|foobar2000 Tips & Tricks]]<br />
<br />
===Technical Information===<br />
* [[Foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]<br />
<br />
===General Guides===<br />
''Note'' All '''general''' guides were written for 0.8.3 version and could contain outdated information. For 0.9 version, check out the External Guides below.<br />
* [[foobar2000:Newbie User Guide|Newbie User Guide]]<br />
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]<br />
<br />
===Specific Guides===<br />
<br />
'''0.9.x'''<br />
<br />
* [[foobar2000:Preferences|Preferences Dialog]]<br />
* [[foobar2000:Titleformat Introduction|Introduction to titleformat scripts]]<br />
* [[foobar2000:Titleformat Reference|Titleformat Reference]] - Quick-Reference for fields and functions<br />
* [[foobar2000:Masstaggers User Guide|Masstagger]]<br />
* [[foobar2000:Commandline Guide|Commandline Usage]]<br />
* [[foobar2000:Increasing Performance|Increasing Performance]] - Tips<br />
<br />
'''0.8.x'''<br />
<br />
The following articles contain outdated information that does not apply to Foobar2000 v0.9:<br />
* [[foobar2000:Tagz|Tagz (Simple Syntax)]]<br />
* [[foobar2000:Tagscript|Tagscript (Script-like Syntax)]]<br />
* [[foobar2000:Autoplaylist|Autoplaylist]] Guide and Cookbook<br />
<br />
===External Guides===<br />
<br />
'''0.9.x'''<br />
* [http://fooblog2000.com/ Fooblog2000] News blog with the latest configuration/component tips and guides.<br />
* [http://eolindel.free.fr/foobar0.9/ Bachi-Bouzouk's English/French guide] Complete manual about foobar2000, Replaygain, the masstagger (with a tutorial) and common plugins. Two rather extensive FAQ for UI columns and overall use. Step by step guide to help new users.<br />
* [http://foobar.s53.xrea.com/index.html fb2k Wiki Page] for Japanese users.<br />
* [http://foobar2000.audiohq.de/ Frank Bicking's German-language guide].<br />
* [http://www.bobulous.org.uk/misc/Replay-Gain.html Replay Gain] focusing on Foobar2000. (But the other articles on this site contain misleading information)<br />
<br />
'''0.8.x'''<br />
<br />
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk's guide]<br />
* [http://www.dizwell.com/prod/node/44 Howard Rogers' Beginners' Configuration Guide]<br />
* [http://shsc.info/foobar2000#titelanker2 SH/SC New user guide]<br />
* [http://www.techspot.com/tweaks/foobar/ TechSpot's "complete guide to Foobar2000"]<br />
<br />
==== Scripting Tutorials ====<br />
<br />
'''0.9.x'''<br />
<br />
* [http://eolindel.free.fr/foobar0.9/tutorial.php Bachi-Bouzouk's Scripting Tutorial] Color schemes detailed. Main functions explained, basic and complex code for your columns. Several .fcs explained, detailed FAQ.<br />
* [http://tagz.brother-john.net/ Brother John's Foobar2000 Scripting Tutorial]<br />
<br />
==Important Links==<br />
<br />
===Official Site===<br />
<br />
* [http://www.foobar2000.org foobar2000.org: Homepage]<br />
* [http://www.foobar2000.org foobar2000.org: Download]<br />
* [http://www.foobar2000.org/requirements.html foobar2000.org: Requirements]<br />
<br />
===Community===<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showforum=28 Official foobar2000 forum]<br />
* [http://foobar2000.fo.funpic.de/ German Support Forum]<br />
* [http://www.foobar.prv.pl/ Polish-language forum]<br />
* [http://www.foobar2000.tk Portuguese forum]<br />
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]<br />
* [http://www.foobar2000.ru/forum/ Another Russian-language forum]<br />
<br />
===Appearance===<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=49783 Configuration Distribution Thread] Fast Way To Clone Another's Advanced Configuration {{foobar2000v09}}.<br />
* [[Foobar2000:Preferences:Columns UI/Appearance|Appearance]] Guides to customizing the look of your Foobar2000<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43077 Foobar Gallery 0.9]: screenshot thread {{foobar2000v09}}<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread {{foobar2000v08}}<br />
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31027 Columns UI configs]: .fcs file format<br />
|style="border: 1px solid #777777; padding: 10px;" valign="top"|<br />
{{Software Infobox|<br />
|name = foobar2000<br />
|screenshot = [[Image:Foobar2000v0.9.png|250px]]<br />
|caption = Screenshot of foobar2000 v0.9 using the default user interface<br />
|maintainer = Peter Pawlowski<br />
|stable_release = 0.9.4.3<br />
|preview_release = None<br />
|operating_system = Windows<br />
|use = Media Player<br />
|license = Proprietary, BSD<br />
|website = [http://www.foobar2000.org/ www.foobar2000.org]<br />
}}<br clear="both" /><br />
<div style="margin-left: 17px;">__TOC__</div><br />
|}<br />
[[Category:foobar2000]]<br />
[[Category:Media Players|foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000_Talk:ComponentsFoobar2000 Talk:Components2007-03-12T12:13:24Z<p>Foosion: /* Page Discussion */</p>
<hr />
<div>{{talkheader}}<br />
<br />
==Page Discussion==<br />
<br />
The formatting of this page rather sucks; shouldn't the first link connect to a wikipage here, then from that wikipage links to the external page?<br />
That would solve the problem of adding non-uniform (more info) links... --[[User:Pepoluan|pepoluan]] 11:49, 6 September 2006 (CDT)<br />
<br />
I agree. Seemingly you'd want to link primarily to the wiki pages and link to the forums from those pages. --[[User:Wolfsong|Wolfsong]] 16:37, 5 November 2006 (CST)<br />
<br />
There is already a components site available what might render this page useless IMO. There is no new info here, but rather links to external pages only. To me this page is not needed if it is easy enough to search for said components in the official components page.--[[User:Beto|Beto]] <small>'''([[User_talk:Beto|talk]] | [[Special:Contributions/Beto|contribs]])'''</small> 13:53, 6 November 2006 (CST)<br />
<br />
What exactly is the difference between Audio Codecs and Other Codecs in the Input section? --[[User:Foosion|foosion]] 07:13, 12 March 2007 (CDT)</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:ID3_Tag_MappingFoobar2000:ID3 Tag Mapping2006-07-13T21:34:15Z<p>Foosion: /* References */</p>
<hr />
<div>This page lists all ID3v2.4 tag frames natively supported by foobar2000 as of version 0.9.0. The 'Field Name' column indicates the name to be used in the foobar2000 'Properties' or 'Masstagger' window. The 'ID3v2.4 Frame' column indicates in which ID3v2.4 frame the value will be stored.<br />
<br />
Note that foobar2000 0.9 does not ''write'' ID3v2.3 tags; the ID3v2.3 Frame column indicates how foobar2000 ''reads'' this version of the standard.<br />
<br />
<br />
{| class="wikitable"<br />
|+Native ID3 Frames<br />
|-<br />
! Field Name<sup>1</sup> !! ID3v2.3 Frame !! ID3v2.4 Frame !! Description !! Comments<br />
|-<br />
| ALBUM || TALB || TALB || Album/Movie/Show title ||<br />
|-<br />
| ARTIST || TPE1 || TPE1 || Lead performer(s)/Soloist(s) ||<br />
|-<br />
| ARTIST WEBPAGE URL || WOAR || WOAR || Official artist/performer webpage ||<br />
|-<br />
| BAND || TPE2 || TPE2 || Band/orchestra/accompaniment ||<br />
|-<br />
| BPM || TBPM || TBPM || BPM (beats per minute) ||<br />
|-<br />
| COMMENT || COMM || COMM || Comments ||<br />
|-<br />
| COMMERCIAL INFORMATION URL || WCOM || WCOM || Commercial information ||<br />
|-<br />
| COMPOSER || TCOM || TCOM || Composer ||<br />
|-<br />
| CONDUCTOR || TPE3 || TPE3 || Conductor/performer refinement ||<br />
|-<br />
| CONTENT GROUP || TIT1 || TIT1 || Content group description ||<br />
|-<br />
| COPYRIGHT || TCOP || TCOP || Copyright message ||<br />
|-<br />
| DATE || || TDRC || Recording time || The TDRC frame is officially to be used for the ''recording time'', TDRL is for the ''release time'' but TDRC is generally used by most programs. <br />
|-<br />
| DATE || TYER || || Year ||<br />
|-<br />
| DISCNUMBER || TPOS || TPOS || Part of a set ||<br />
|-<br />
| ENCODED BY || TENC || TENC || Encoded by ||<br />
|-<br />
| ENCODING SETTINGS || TSSE || TSSE || Software/Hardware and settings used for encoding ||<br />
|-<br />
| FILE WEBPAGE URL || WOAF || WOAF || Official audio file webpage ||<br />
|-<br />
| GENRE || TCON || TCON || Content type ||<br />
|-<br />
| INTERNET RADIO WEBPAGE URL || WORS || WORS || Official Internet radio station homepage ||<br />
|-<br />
| ISRC || TSRC || TSRC || ISRC (international standard recording code) ||<br />
|-<br />
| ORIGINAL ALBUM || TOAL || TOAL || Original album/movie/show title ||<br />
|-<br />
| ORIGINAL ARTIST || TOPE || TOPE || Original artist(s)/performer(s) ||<br />
|-<br />
| ORIGINAL RELEASE DATE || || TDOR || Original release time ||<br />
|-<br />
| ORIGINAL RELEASE DATE || TORY || || Original release year ||<br />
|-<br />
| OWNER || TOWN || TOWN || File owner/licensee ||<br />
|-<br />
| PAYMEMT URL || WPAY || WPAY || Payment ||<br />
|-<br />
| PUBLISHER || TPUB || TPUB || Publisher ||<br />
|-<br />
| PUBLISHER URL || WPUB || WPUB || Publishers official webpage ||<br />
|-<br />
| RADIO STATION || TRSN || TRSN || Internet radio station name ||<br />
|-<br />
| REMIXED BY || TPE4 || TPE4 || Interpreted, remixed, or otherwise modified by ||<br />
|-<br />
| SOURCE WEBPAGE URL || WOAS || WOAS || Official audio source webpage ||<br />
|-<br />
| SUBTITLE || TIT3 || TIT3 || Subtitle/Description refinement ||<br />
|-<br />
| TITLE || TIT2 || TIT2 || Title/songname/content description ||<br />
|-<br />
| TRACKNUMBER || TRCK || TRCK || Track number/Position in set ||<br />
|-<br />
| TOTALDISCS || TPOS || TPOS || Part of a set || Stored in the same frame with DISCNUMBER, separated by '/': e.g. '1/2'. Stored in TXXX if DISCNUMBER does not exist.<br />
|-<br />
| TOTALTRACKS || TRCK || TRCK || Total tracks || Stored in the same frame with TRACKNUMBER, separated by '/': e.g. '4/9'. Stored in TXXX if TRACKNUMBER doesn't exist.<br />
|-<br />
| UNSYNCED LYRICS || USLT || USLT || Unsynchronised lyric/text transcription ||<br />
|-<br />
| WRITER || TEXT || TEXT || Lyricist/Text writer ||<br />
|}<br />
<br />
:Notes:<br />
:# All non-native supported field names will be stored in the TXXX (User defined text information) frame except for field names starting with "WWW" which will be stored in WXXX (User defined URL link frame) frames.<br />
<br />
<br />
=References=<br />
* [http://www.id3.org/id3v2.4.0-frames.txt ID3v2.4.0 Native Frames]<br />
* [http://www.id3.org/id3v2.3.0.txt ID3v2.3.0 Informal standard]<br />
<br />
=Related Pages=<br />
* [[Foobar2000:Foobar2000 | Foobar2000 Main Page]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Foobar2000Foobar2000:Foobar20002006-07-13T21:32:22Z<p>Foosion: /* Using foobar2000 */ added link to ID3 tag mapping page</p>
<hr />
<div>==Introduction==<br />
<br />
Foobar2000 is a freeware audio player, and more. It can not only play, it can also make a library, transcode files, rip CDs, ... the list goes on and on. A very powerful tool.<br />
<br />
Check it out to explore its full power.<br />
<br />
==Features==<br />
<br />
* Open component architecture allowing third-party developers to extend functionality of the player<br />
* Full Unicode support on Windows NT<br />
* ReplayGain support<br />
* Low memory footprint, efficient handling of really large playlists<br />
* Advanced file info processing capabilities (generic file info box and masstagger)<br />
* Highly customizable playlist display<br />
* Customizable keyboard shortcuts<br />
* Gapless playback<br />
* Multiple playlists<br />
* Music library<br />
* Streaming Support<br />
* Freeware<br />
<br />
==Supported Audio Formats==<br />
<br />
Native Support ("out-of-the-box"):<br />
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[WavPack]], [[WAV]], [[AIFF]], [[AU]], [[SND]], [[CDDA]], [[WMA]]<br />
<br />
Supported through plug-ins:<br />
* [[TTA]], [[Monkey's Audio]], [[ALAC]], [[Mod]], [[SPC]], [[TFMX]], [[Shorten]], [[OptimFROG]], [[LPAC]], [[AC3]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]]<br />
<br />
In addition, foobar2000 can also play music directly from compressed RAR, ZIP and 7-Zip archives without requiring the user to extract the files prior to playing.<br />
<br />
Foobar2000 has been coded exclusively for the Windows platform with an English interface. The author does not intend to provide alternate language versions nor alternate platform versions. However, several people have had success running foobar2000 on x86 Linux systems by using [http://www.winehq.org/ Wine], although the Columns UI plugin is known to be problematic.<br />
<br />
==Using foobar2000==<br />
* [[foobar2000:components 0.8|foobar2000 0.8.x Components]]<br />
* [[foobar2000:components 0.9|foobar2000 0.9.x Components]]<br />
* [[foobar2000:Directories|foobar2000 Directories]]<br />
* [[foobar2000:FAQ|foobar2000 FAQ]]<br />
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]<br />
* [[foobar2000:Tips & Tricks|foobar2000 Tips & Tricks]]<br />
<br />
===Technical Information===<br />
* [[Foobar2000:ID3 Tag Mapping|ID3 Tag Mapping]]<br />
<br />
===General Guides===<br />
<br />
* [[foobar2000:Newbie User Guide|Newbie User Guide]]<br />
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]<br />
* [[foobar2000:Advanced User Guide|Advanced User Guide]]<br />
<br />
===Specific Guides===<br />
<br />
* [[foobar2000:Preferences|Preferences Dialog]]<br />
* [[foobar2000:Titleformat Introduction|Introduction to titleformat scripts]]<br />
* [[foobar2000:Titleformat Reference|Titleformat Reference]] - Quick-Reference for fields and functions<br />
* [[foobar2000:Masstaggers User Guide|Masstagger]]<br />
* [[foobar2000:Commandline Guide|Commandline Usage]]<br />
* [[foobar2000:Increasing Performance|Increasing Performance]] - Tips<br />
<br />
The following articles contain outdated information that does not apply to Foobar2000 v0.9:<br />
* [[foobar2000:Tagz|Tagz (Simple Syntax)]]<br />
* [[foobar2000:Tagscript|Tagscript (Script-like Syntax)]]<br />
<br />
===External Guides===<br />
<br />
* [http://eolindel.free.fr/foobar0.9/accueil.shtml Bachi-Bouzouk's guide] Complete manual about foobar2000 (version 0.9.X), Replaygain, the masstagger (with a tutorial) and common plugins.Two rather extensive FAQ for UI columns and overall use. Step by step guide to help new users.<br />
* [http://foobar2000.audiohq.de/ Frank Bicking's German-language guide]<br />
* [http://www.dizwell.com/html/foobar.htm Howard Rogers' Beginners' Configuration Guide]<br />
* [http://shsc.info/foobar2000#titelanker2 SH/SC New user guide]<br />
* [http://www.techspot.com/tweaks/foobar/ TechSpot's "complete guide to Foobar 2000"]<br />
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk's guide] about 0.8.3 version<br />
<br />
==== Scripting Tutorials ====<br />
<br />
* [http://eolindel.free.fr/foobar0.9/tutorial.shtml Bachi-Bouzouk's Scripting Tutorial] Color schemes detailed. Main functions explained, basic and complex code for your columns. Several .fcs explained, detailed FAQ.<br />
* [http://tagz.brother-john.net/ Brother John's Foobar2000 Scripting Tutorial]<br />
<br />
==Important Links==<br />
<br />
===Official Site===<br />
<br />
* [http://www.foobar2000.org foobar2000.org: Homepage]<br />
* [http://www.foobar2000.org foobar2000.org: Download]<br />
* [http://www.foobar2000.org/requirements.html foobar2000.org: Requirements]<br />
<br />
===Community===<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showforum=28 Official foobar2000 forum]<br />
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]<br />
* [http://www.foobar.prv.pl/ Polish-language forum]<br />
* [http://foobar2000.fo.funpic.de/ German Support Forum]<br />
* [http://www.foobar2000.tk Portuguese forum]<br />
<br />
===Appearance===<br />
<br />
* [[Foobar2000:Preferences:Columns UI/Appearance|Appearance]] Guides to customizing the look of your Foobar2000<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43077 Foobar Gallery 0.9]: screenshot thread<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread<br />
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready<br />
* [http://foobar.nub4life.net/columns/ Columns UI configs]: .fcs file format<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30281 foo_ui_gfx (alpha)]: skin support for foobar 0.8.x<br />
<br />
==Thanks==<br />
<br />
picmixer: ReplayGain tutorial<br />
<br />
[[Category: foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Foobar2000Foobar2000:Foobar20002006-07-13T21:30:26Z<p>Foosion: /* Audio Formats Supported */ updated for foobar2000 0.9.3</p>
<hr />
<div>==Introduction==<br />
<br />
Foobar2000 is a freeware audio player, and more. It can not only play, it can also make a library, transcode files, rip CDs, ... the list goes on and on. A very powerful tool.<br />
<br />
Check it out to explore its full power.<br />
<br />
==Features==<br />
<br />
* Open component architecture allowing third-party developers to extend functionality of the player<br />
* Full Unicode support on Windows NT<br />
* ReplayGain support<br />
* Low memory footprint, efficient handling of really large playlists<br />
* Advanced file info processing capabilities (generic file info box and masstagger)<br />
* Highly customizable playlist display<br />
* Customizable keyboard shortcuts<br />
* Gapless playback<br />
* Multiple playlists<br />
* Music library<br />
* Streaming Support<br />
* Freeware<br />
<br />
==Supported Audio Formats==<br />
<br />
Native Support ("out-of-the-box"):<br />
* [[MP1]], [[MP2]], [[MP3]], [[MP4]], [[Musepack]], [[AAC]], [[Ogg Vorbis]], [[FLAC]] / Ogg FLAC, [[WavPack]], [[WAV]], [[AIFF]], [[AU]], [[SND]], [[CDDA]], [[WMA]]<br />
<br />
Supported through plug-ins:<br />
* [[TTA]], [[Monkey's Audio]], [[ALAC]], [[Mod]], [[SPC]], [[TFMX]], [[Shorten]], [[OptimFROG]], [[LPAC]], [[AC3]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]]<br />
<br />
In addition, foobar2000 can also play music directly from compressed RAR, ZIP and 7-Zip archives without requiring the user to extract the files prior to playing.<br />
<br />
Foobar2000 has been coded exclusively for the Windows platform with an English interface. The author does not intend to provide alternate language versions nor alternate platform versions. However, several people have had success running foobar2000 on x86 Linux systems by using [http://www.winehq.org/ Wine], although the Columns UI plugin is known to be problematic.<br />
<br />
==Using foobar2000==<br />
* [[foobar2000:components 0.8|foobar2000 0.8.x Components]]<br />
* [[foobar2000:components 0.9|foobar2000 0.9.x Components]]<br />
* [[foobar2000:Directories|foobar2000 Directories]]<br />
* [[foobar2000:FAQ|foobar2000 FAQ]]<br />
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]<br />
* [[foobar2000:Tips & Tricks|foobar2000 Tips & Tricks]]<br />
<br />
===General Guides===<br />
<br />
* [[foobar2000:Newbie User Guide|Newbie User Guide]]<br />
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]<br />
* [[foobar2000:Advanced User Guide|Advanced User Guide]]<br />
<br />
===Specific Guides===<br />
<br />
* [[foobar2000:Preferences|Preferences Dialog]]<br />
* [[foobar2000:Titleformat Introduction|Introduction to titleformat scripts]]<br />
* [[foobar2000:Titleformat Reference|Titleformat Reference]] - Quick-Reference for fields and functions<br />
* [[foobar2000:Masstaggers User Guide|Masstagger]]<br />
* [[foobar2000:Commandline Guide|Commandline Usage]]<br />
* [[foobar2000:Increasing Performance|Increasing Performance]] - Tips<br />
<br />
The following articles contain outdated information that does not apply to Foobar2000 v0.9:<br />
* [[foobar2000:Tagz|Tagz (Simple Syntax)]]<br />
* [[foobar2000:Tagscript|Tagscript (Script-like Syntax)]]<br />
<br />
===External Guides===<br />
<br />
* [http://eolindel.free.fr/foobar0.9/accueil.shtml Bachi-Bouzouk's guide] Complete manual about foobar2000 (version 0.9.X), Replaygain, the masstagger (with a tutorial) and common plugins.Two rather extensive FAQ for UI columns and overall use. Step by step guide to help new users.<br />
* [http://foobar2000.audiohq.de/ Frank Bicking's German-language guide]<br />
* [http://www.dizwell.com/html/foobar.htm Howard Rogers' Beginners' Configuration Guide]<br />
* [http://shsc.info/foobar2000#titelanker2 SH/SC New user guide]<br />
* [http://www.techspot.com/tweaks/foobar/ TechSpot's "complete guide to Foobar 2000"]<br />
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk's guide] about 0.8.3 version<br />
<br />
==== Scripting Tutorials ====<br />
<br />
* [http://eolindel.free.fr/foobar0.9/tutorial.shtml Bachi-Bouzouk's Scripting Tutorial] Color schemes detailed. Main functions explained, basic and complex code for your columns. Several .fcs explained, detailed FAQ.<br />
* [http://tagz.brother-john.net/ Brother John's Foobar2000 Scripting Tutorial]<br />
<br />
==Important Links==<br />
<br />
===Official Site===<br />
<br />
* [http://www.foobar2000.org foobar2000.org: Homepage]<br />
* [http://www.foobar2000.org foobar2000.org: Download]<br />
* [http://www.foobar2000.org/requirements.html foobar2000.org: Requirements]<br />
<br />
===Community===<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showforum=28 Official foobar2000 forum]<br />
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]<br />
* [http://www.foobar.prv.pl/ Polish-language forum]<br />
* [http://foobar2000.fo.funpic.de/ German Support Forum]<br />
* [http://www.foobar2000.tk Portuguese forum]<br />
<br />
===Appearance===<br />
<br />
* [[Foobar2000:Preferences:Columns UI/Appearance|Appearance]] Guides to customizing the look of your Foobar2000<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43077 Foobar Gallery 0.9]: screenshot thread<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread<br />
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready<br />
* [http://foobar.nub4life.net/columns/ Columns UI configs]: .fcs file format<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30281 foo_ui_gfx (alpha)]: skin support for foobar 0.8.x<br />
<br />
==Thanks==<br />
<br />
picmixer: ReplayGain tutorial<br />
<br />
[[Category: foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Album_ListFoobar2000:Preferences:Album List2006-07-13T16:46:28Z<p>Foosion: added link to titleformatting extensions</p>
<hr />
<div>=Album List=<br />
<br />
=Options on this page=<br />
''To do''<br />
<br />
=Related pages=<br />
* [[Foobar2000:Foobar2000 | Foobar2000 Wiki Page]]<br />
* [[Foobar2000:Preferences | Preferences]]<br />
* [[Foobar2000:Titleformat_Album_List | Album List Titleformatting Extensions]]<br />
<br />
==Subpages==<br />
This page has no known subpages.</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Foobar2000Foobar2000:Foobar20002006-06-08T12:32:33Z<p>Foosion: Moved scripting tutorials to external guides</p>
<hr />
<div>==Introduction==<br />
<br />
Foobar2000 is a freeware audio player, and more. It can not only play, it can also make a library, transcode files, rip CDs, ... the list goes on and on. A very powerful tool.<br />
<br />
Check it out to explore its full power.<br />
<br />
==Features==<br />
<br />
* Open component architecture allowing third-party developers to extend functionality of the player<br />
* Full Unicode support on Windows NT<br />
* ReplayGain support<br />
* Low memory footprint, efficient handling of really large playlists<br />
* Advanced file info processing capabilities (generic file info box and masstagger)<br />
* Highly customizable playlist display<br />
* Customizable keyboard shortcuts<br />
* Gapless playback<br />
* Multiple playlists<br />
* Music library<br />
* Streaming Support<br />
* Freeware<br />
<br />
==Audio Formats Supported==<br />
<br />
Native Support ("out-of-the-box"):<br />
* [[MP3]], [[Ogg Vorbis]], [[MP2]], [[AAC]], [[WAV]], [[AIFF]], [[Musepack]], [[VOC]], [[SND]]<br />
<br />
Supported through plug-ins:<br />
* [[TTA]], [[FLAC]], [[Monkey's Audio]], [[WavPack]], [[Speex]], [[ALAC]], [[Mod]], [[SPC]], [[TFMX]], [[Shorten]], [[OptimFROG]], [[LPAC]], [[WMA]], [[AC3]], [[PSF]], [[NSF]], [[XID]], [[XA]], [[Matroska]]<br />
<br />
In addition, foobar2000 can also play music directly from compressed RAR, ZIP and 7-Zip archives without requiring the user to extract the files prior to playing.<br />
<br />
Foobar2000 has been coded exclusively for the Windows platform with an English interface. The author does not intend to provide alternate language versions nor alternate platform versions. However, several people have had success running foobar2000 on x86 Linux systems by using [http://www.winehq.org/ Wine], although the Columns UI plugin is known to be problematic.<br />
<br />
==Using foobar2000==<br />
* [[foobar2000:components 0.8|foobar2000 0.8.x Components]]<br />
* [[foobar2000:components 0.9|foobar2000 0.9.x Components]]<br />
* [[foobar2000:Directories|foobar2000 Directories]]<br />
* [[foobar2000:FAQ|foobar2000 FAQ]]<br />
* [[foobar2000:Encouraged Tag Standards|foobar2000 Encouraged Tag Standards]]<br />
* [[foobar2000:Tips & Tricks|foobar2000 Tips & Tricks]]<br />
<br />
===General Guides===<br />
<br />
* [[foobar2000:Newbie User Guide|Newbie User Guide]]<br />
* [[foobar2000:Intermediate User Guide|Intermediate User Guide]]<br />
* [[foobar2000:Advanced User Guide|Advanced User Guide]]<br />
<br />
===Specific Guides===<br />
<br />
* [[foobar2000:Preferences|Preferences Dialog]]<br />
* [[foobar2000:Titleformat Introduction|Introduction to titleformat scripts]]<br />
* [[foobar2000:Titleformat Reference|Titleformat Reference]] - Quick-Reference for fields and functions<br />
* [[foobar2000:Masstaggers User Guide|Masstagger]]<br />
* [[foobar2000:Commandline Guide|Commandline Usage]]<br />
* [[foobar2000:Increasing Performance|Increasing Performance]] - Tips<br />
<br />
The following articles contain outdated information that does not apply to Foobar2000 v0.9:<br />
* [[foobar2000:Tagz|Tagz (Simple Syntax)]]<br />
* [[foobar2000:Tagscript|Tagscript (Script-like Syntax)]]<br />
<br />
===External Guides===<br />
<br />
* [http://eolindel.free.fr/foobar0.9/accueil.shtml Bachi-Bouzouk's guide] about 0.9.X version<br />
* [http://foobar2000.audiohq.de/ Frank Bicking's German-language guide]<br />
* [http://www.dizwell.com/html/foobar.htm Howard Rogers' Beginners' Configuration Guide]<br />
* [http://shsc.info/foobar2000#titelanker2 SH/SC New user guide]<br />
* [http://www.techspot.com/tweaks/foobar/ TechSpot's "complete guide to Foobar 2000"]<br />
* [http://eolindel.free.fr/foobar/ Bachi-Bouzouk's guide] about 0.8.3 version<br />
<br />
==== Scripting Tutorials ====<br />
<br />
* [http://eolindel.free.fr/foobar0.9/tutorial.shtml Bachi-Bouzouk Scripting Tutorial]Color schemes detailed. Main functions explained, basic and complex code for your columns. Several .fcs explained, detailed FAQ.<br />
* [http://tagz.brother-john.net/ Brother John's Foobar2000 Scripting Tutorial]<br />
<br />
<br />
==Important Links==<br />
<br />
===Official Site===<br />
<br />
* [http://www.foobar2000.org foobar2000.org: Homepage]<br />
* [http://www.foobar2000.org foobar2000.org: Download]<br />
* [http://www.foobar2000.org/requirements.html foobar2000.org: Requirements]<br />
<br />
===Community===<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showforum=28 Official foobar2000 forum]<br />
* [http://www.fforum.ru/index.php?showforum=59 Russian-language forum]<br />
* [http://www.foobar.prv.pl/ Polish-language forum]<br />
* [http://foobar2000.fo.funpic.de/ German Support Forum]<br />
<br />
===Appearance===<br />
<br />
* [[Foobar2000:Preferences:Columns UI/Appearance|Appearance]] Guides to customizing the look of your Foobar2000<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=43077 Foobar Gallery 0.9]: screenshot thread<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery 0.8]: screenshot thread<br />
* [http://pelit.koillismaa.fi/fb2k/index.php Default UI formatting strings]: cut-n-paste ready<br />
* [http://foobar.nub4life.net/columns/ Columns UI configs]: .fcs file format<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30281 foo_ui_gfx (alpha)]: skin support for foobar 0.8.x<br />
<br />
==Thanks==<br />
<br />
picmixer: ReplayGain tutorial<br />
<br />
[[Category: foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Album_ListFoobar2000:Preferences:Album List2006-06-07T17:44:28Z<p>Foosion: created stub page</p>
<hr />
<div>=Album List=<br />
<br />
=Options on this page=<br />
''To do''<br />
<br />
=Related pages=<br />
* [[Foobar2000:Foobar2000 | Foobar2000 Wiki Page]]<br />
* [[Foobar2000:Preferences | Preferences]]<br />
<br />
==Subpages==<br />
This page has no known subpages.</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000redirect:0B426606-7C90-48CA-BBC4-0F0B89566E6EFoobar2000redirect:0B426606-7C90-48CA-BBC4-0F0B89566E6E2006-06-07T17:41:54Z<p>Foosion: </p>
<hr />
<div>#REDIRECT [[Foobar2000:Preferences:Album_List]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000redirect:2D269FA9-6F78-4CEC-9F1F-0A176EFCE77AFoobar2000redirect:2D269FA9-6F78-4CEC-9F1F-0A176EFCE77A2006-06-07T17:40:22Z<p>Foosion: </p>
<hr />
<div>#REDIRECT [[Foobar2000:Preferences:Media_Library]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Media_Library_(0.9_-_0.9.5.6)Foobar2000:Preferences:Media Library (0.9 - 0.9.5.6)2006-06-07T17:40:05Z<p>Foosion: created stub page</p>
<hr />
<div>=Media Library=<br />
=Related Pages=<br />
* [[Foobar2000:Foobar2000 | Foobar2000 Wiki Page]]<br />
* [[Foobar2000:Preferences | Preferences]]<br />
==Subpages==<br />
* [[Foobar2000:Preferences:Album_List | Album List Preferences]]: Requires foo_albumlist to be installed. foo_albumlist is included in the official installer.</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Title_Formatting_ReferenceFoobar2000:Title Formatting Reference2006-05-21T20:40:49Z<p>Foosion: /* Control flow */ added $ifequal documentation</p>
<hr />
<div>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.<br />
<br />
A field reference is a field name enclosed in percent signs, for example ''%artist%''. 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 ''()'' - or contain one or more parameters separated by commata, for example ''$abbr(%artist%)''. 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.<br />
<br />
Please see [[Foobar2000:Titleformat_Introduction|Titleformat Introduction]] for a presentation of titleformat syntax in general.<br />
<br />
= Field remappings =<br />
<br />
Some of the fields accessible through ''%name%'' are remapped to other values to make writing titleformat scripts more convenient.<br />
<br />
== Metadata ==<br />
<br />
=== %album artist% ===<br />
Defined as ''$if3($meta(album artist),$meta(artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %album% ===<br />
Defined as ''$if3($meta(album),$meta(venue))''.<br />
<br />
=== %artist% ===<br />
Defined as ''$if3($meta(artist),$meta(album artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %disc% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %discnumber% remapping.<br />
<br />
=== %discnumber% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %disc% remapping.<br />
<br />
=== %track artist% ===<br />
Defined as ''$meta(artist)'', if ''$meta(album artist)'' is different than ''$meta(artist)'', otherwise this field is empty.<br />
<br />
=== %title% ===<br />
Defined as ''$if2($meta(title),%_filename%)''. Returns the ''title'' tag if available, otherwise it returns the filename excluding the extension.<br />
<br />
=== %track% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %tracknumber% remapping.<br />
<br />
=== %tracknumber% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %track% remapping.<br />
<br />
== Technical information ==<br />
<br />
=== %bitrate% ===<br />
Defined as ''$if2($info(bitrate_dynamic),$info(bitrate))''. Returns the current bitrate, if available, otherwise it returns the average bitrate. If neither is available, nothing is returned.<br />
<br />
=== %channels% ===<br />
Defined as ''$channels()''. Returns the number of channels in text form; returns "mono" and "stereo" instead of "1" and "2".<br />
<br />
=== %filesize% ===<br />
Defined as ''%_filesize%''. Returns the filesize in bytes.<br />
<br />
=== %samplerate% ===<br />
Defined as ''$info(samplerate)''. Returns the samplerate in Hz.<br />
<br />
=== %codec% ===<br />
Defined as ''$codec()''.<br />
<br />
== Special fields ==<br />
<br />
=== %playlist_number% ===<br />
Defined as ''$num(%_playlist_number%,$len(%_playlist_total%))''. Returns the position of the track as index into the playlist. The first track has index 1. The index is padded from the left with zeroes to the same number of digits as the last track.<br />
<br />
= Control flow =<br />
<br />
The functions in this section can be used to conditionally execute statements.<br />
<br />
=== [...] (conditional section) ===<br />
<br />
Evaluates the expression between ''['' and '']''. If it has the truth value ''true'', its string value and the truth value ''true'' are returned. Otherwise an empty string and ''false'' are returned.<br />
<br />
Example: ''[%artist%]'' returns the value of the artist tag, if it exists. Otherwise it returns nothing, when ''artist'' would return "?".<br />
<br />
=== $if(cond,then) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, ''false'' is returned.<br />
<br />
=== $if(cond,then,else) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, the ''else'' part is evaluated and its value returned.<br />
<br />
=== $if2(a,else) ===<br />
<br />
Like ''$if(a,a,else)'' except that ''a'' is only evaluated once.<br />
<br />
=== $if3(a1,a2,...,aN,else) ===<br />
<br />
Evaluates arguments ''a1'' ... ''aN'', until one is found that evaluates to ''true''. If that happens, its value is returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifequal(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is equal to ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifgreater(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is greater than ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $iflonger(s1,s2,then,else) ===<br />
<br />
Compares the length of the strings ''s1'' and ''s2'', if ''s1'' is longer than ''s2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $select(n,a1,...,aN) ===<br />
<br />
If the value of ''n'' is between 1 and N, ''an'' is evaluated and its value returned. Otherwise ''false'' is returned.<br />
<br />
= Arithmetic functions =<br />
<br />
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.<br />
<br />
Example: "c3po" -> 0, " -12" -> -12, but "- 12" -> 0<br />
<br />
=== $add(a,b) ===<br />
<br />
Adds ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$add(a,b,...)'' is the same as ''$add($add(a,b),...)''.<br />
<br />
=== $div(a,b) ===<br />
<br />
Divides ''a'' through ''b''. If ''b'' evaluates to zero, it returns ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$div(a,b,...)'' is the same as ''$div($div(a,b),...)''.<br />
<br />
=== $greater(a,b) ===<br />
<br />
Returns true, if ''a'' is greater than ''b'', otherwise false.<br />
<br />
=== $max(a,b) ===<br />
<br />
Returns the maximum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$max(a,b,...)'' is the same as ''$max($max(a,b),...)''.<br />
<br />
=== $min(a,b) ===<br />
<br />
Returns the minimum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$min(a,b,...)'' is the same as ''$min($min(a,b),...)''.<br />
<br />
=== $mod(a,b) ===<br />
<br />
Computes the remainder of dividing ''a'' through ''b''. The result has the same sign as ''a''. If ''b'' evaluates to zero, the result is ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mod(a,b,...)'' is the same as ''$mod($mod(a,b),...)''.<br />
<br />
=== $mul(a,b) ===<br />
<br />
Multiplies ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mul(a,b,...)'' is the same as ''$mul($mul(a,b),...)''.<br />
<br />
=== $muldiv(a,b,c) ===<br />
<br />
Multiplies ''a'' and ''b'', then divides by ''c''. The result is rounded to the nearest integer.<br />
<br />
=== $rand() ===<br />
<br />
Generates a random number in the range from 0 to 2<sup>32</sup>-1.<br />
<br />
=== $sub(a,b) ===<br />
<br />
Subtracts ''b'' from ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$sub(a,b,...)'' is the same as ''$sub($sub(a,b),...)''.<br />
<br />
= Boolean functions =<br />
<br />
The functions in this section can be used to work with truth values (''true'' and ''false''), 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 ''$if'' and related functions.<br />
<br />
=== $and(...) ===<br />
<br />
Logical And of an arbitrary number of arguments. Returns ''true'', if and only if all arguments evaluate to ''true''.<br />
<br />
Special case: ''$and(x,y)'' is ''true'', if both ''x'' and ''y'' are ''true''. Otherwise it is ''false''.<br />
<br />
=== $or(...) ===<br />
<br />
Logical Or of an arbitrary number of arguments. Returns ''true'', if at least one argument evaluates to ''true''.<br />
<br />
Special case: ''$or(x,y)'' is ''true'', if ''x'' or ''y'' is ''true'', or if both are ''true''. Otherwise it is ''false''.<br />
<br />
=== $not(x) ===<br />
<br />
Logical Not. Returns ''false'', if ''x'' is ''true'', otherwise it returns ''true''.<br />
<br />
=== $xor(...) ===<br />
<br />
Logical Exclusive-or of an arbitrary number of arguments. Returns ''true'', if an odd number of arguments evaluate to ''true''.<br />
<br />
Special case: ''$xor(x,y)'' is ''true'', if one of ''x'' and ''y'' is ''true'', but not both. Otherwise it is ''false''.<br />
<br />
= Color functions =<br />
<br />
=== $blend(color1,color2,part,total) ===<br />
<br />
Returns a color that is a blend between ''color1'' and ''color2''. If ''part'' is smaller than or equal to zero, ''color1'' is returned. If ''part'' is greater than or equal to ''total'', ''color2'' is returned. Otherwise a blended color is returned that is ''part'' parts ''color1'' and ''total''-''part'' parts ''color2''. The blending is performed in the RGB color space.<br />
<br />
=== $hsl() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $hsl(h,s,l) ===<br />
<br />
Sets the color for text in the HSL color space. ''h'', ''s'' and ''l'' are the hue, saturation, and lightness of the color for unselected text. The color for selected text is set to the inverse color.<br />
The ranges of ''h'', ''s'', and ''l'' are from 0 to 240; the function is designed to interpret those values in the same way as the standard Windows color dialog.<br />
<br />
=== $hsl(h1,s1,l1,h2,s2,l2) ===<br />
<br />
Sets the color for text in the HSL color space. ''h1'', ''s1'' and ''l1'' are the hue, saturation, and lightness of the color for unselected text. ''h2'', ''s2'' and ''l2'' are the hue, saturation, and lightness of the color for selected text.<br />
<br />
=== $rgb() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $rgb(r,g,b) ===<br />
<br />
Sets the color for text. ''r'', ''g'' and ''b'' are the red, green and blue component of the color for unselected text. The color for selected text is set to the inverse color.<br />
<br />
=== $rgb(r1,g1,b1,r2,g2,b2) ===<br />
<br />
Sets the color for text. ''r1'', ''g1'' and ''b1'' are the red, green and blue component of the color for unselected text. ''r2'', ''g2'' and ''b2'' are the red, green and blue component of the color for selected text.<br />
<br />
=== $transition(string,color1,color2) ===<br />
<br />
Inserts color codes into ''string'', so that the first character has ''color1'', the last character has ''color2'', 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 ''$transition''.<br />
<br />
= Now playing info =<br />
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.<br />
<br />
== Special fields ==<br />
<br />
=== %playback_time% ===<br />
Returns the elapsed time formatted as [HH:]MM:SS.<br />
<br />
=== %playback_time_seconds% ===<br />
Returns elapsed time in seconds.<br />
Old version: <code>%_time_elapsed%</code><br />
<br />
=== %playback_time_remaining% ===<br />
Returns remaining time until track ends, formatted as [HH:]MM:SS.<br />
Old version: <code>%_time_remaining%</code><br />
<br />
=== %playback_time_remaining_seconds% ===<br />
Returns remaining time in seconds.<br />
Old version: <code>%_time_remaining_seconds%</code><br />
<br />
=== %length% ===<br />
Returns the length of the track formatted as hours, minutes, and seconds.<br />
Old version: <code>%_time_total%</code><br />
<br />
=== %length_ex% ===<br />
Returns the length of the track formatted as hours, minutes, seconds, and milliseconds.<br />
<br />
=== %length_seconds% ===<br />
Returns the length of the track in seconds.<br />
Old version: <code>%_time_total_seconds%</code><br />
<br />
=== %length_seconds_fp% ===<br />
Returns the length of the track in seconds as floating point number.<br />
<br />
=== %length_samples% ===<br />
Returns the length of the track in samples.<br />
<br />
= Playlist info =<br />
The following functions and fields are usable for playlist scripts such as masstagger.<br />
<br />
== Special fields ==<br />
<br />
=== %isplaying% ===<br />
<br />
Returns "1" if file is currently playing and empty string otherwise.<br />
<br />
The old version <code>%_isplaying%</code> still works.<br />
<br />
=== %ispaused% ===<br />
<br />
Returns "1" if playback is paused, empty string otherwise.<br />
<br />
The old version <code>%_ispaused%</code> still works.<br />
<br />
=== %list_index% ===<br />
<br />
Returns a zero-padded playlist index of specified item. The first item is at index 1.<br />
<br />
Also see [[Foobar2000:Titleformat Reference#%playlist_number%|%playlist_number%]].<br />
<br />
The old version <code>%_playlist_number%</code> still works.<br />
<br />
=== %list_total% ===<br />
<br />
Returns number of items in the playlist.<br />
<br />
The old version <code>%_playlist_total%</code> still works.<br />
<br />
=== %playlist_name% ===<br />
<br />
Returns the name of the playlist containing the specified item.<br />
<br />
The old version <code>%_playlist_name%</code> still works.<br />
<br />
= String functions =<br />
<br />
The functions in this section can be used to manipulate character strings.<br />
<br />
=== $abbr(x) ===<br />
<br />
Returns abbreviation of ''x''.<br />
<br />
=== $abbr(x,len) ===<br />
<br />
Returns abbreviation of ''x'', if ''x'' is longer than ''len'' characters, otherwise returns ''x''.<br />
<br />
=== $ansi(x) ===<br />
<br />
Converts ''x'' 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.<br />
<br />
=== $ascii(x) ===<br />
<br />
Converts ''x'' to ASCII. Any characters that are not present in ASCII will be removed / replaced.<br />
<br />
=== $caps(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and all other letters to lowercase.<br />
<br />
=== $caps2(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and leaves all other letters as they are.<br />
<br />
=== $char(x) ===<br />
<br />
Inserts Unicode character with code ''x''.<br />
<br />
=== $crc32(a) ===<br />
<br />
Computes the CRC32 of the string ''a'' as a number. Intended for use in coloring scripts.<br />
<br />
Example: $rgb($mod($crc32(%album%),256),128,128)<br />
<br />
=== $crlf() ===<br />
<br />
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 ("systray") icon.<br />
<br />
=== $cut(a,len) ===<br />
<br />
Returns first ''len'' characters on the left of ''a''.<br />
<br />
=== $directory(x) ===<br />
<br />
Extracts directory name from the file path ''x''.<br />
<br />
=== $directory(x,n) ===<br />
<br />
Extracts directory name from the file path ''x''; goes up by ''n'' levels.<br />
<br />
=== $ext(x) ===<br />
<br />
Extracts file extension from ''x'' which must be a file name or path.<br />
<br />
=== $filename(x) ===<br />
<br />
Extracts file name from full path.<br />
<br />
=== $fix_eol(x) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by " (...)". Otherwise ''x'' is returned unaltered.<br />
<br />
=== $fix_eol(x,indicator) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by ''indicator''. Otherwise ''x'' is returned unaltered.<br />
<br />
=== $hex(n) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation.<br />
<br />
=== $hex(n,len) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $insert(a,b,n) ===<br />
<br />
Inserts ''b'' into ''a'' after ''n'' characters.<br />
<br />
=== $left(a,len) ===<br />
<br />
Returns the first ''len'' characters from the left of ''a''.<br />
<br />
=== $len(a) ===<br />
<br />
Returns length of string ''a'' in characters.<br />
<br />
=== $len2(a) ===<br />
<br />
Returns length of string x in characters, respecting double-width character rules (double-width characters will be counted as two).<br />
<br />
=== $longer(a,b) ===<br />
<br />
Returns ''true'', if string ''a'' is longer than string ''b'', false otherwise.<br />
<br />
=== $lower(a) ===<br />
<br />
Converts ''a'' to lowercase.<br />
<br />
=== $longest(a,...) ===<br />
<br />
Returns the longest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $num(n,len) ===<br />
<br />
Formats the integer number ''n'' in decimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $pad(x,len) ===<br />
<br />
Pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $pad_right(x,y) ===<br />
<br />
Pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $pad(x,len,char) ===<br />
<br />
Pads ''x'' from the left with ''char'' to ''len'' characters.<br />
<br />
=== $pad_right(x,len,char) ===<br />
<br />
Pads ''x'' from the right with ''char'' to ''len'' characters.<br />
<br />
=== $padcut(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $padcut_right(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $progress(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with.<br />
<br />
Example:''$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=')'' produces "====#===============", the # character is moving with playback position.<br />
<br />
=== $progress2(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with. Produces different appearance than ''$progress''.<br />
<br />
=== $repeat(a,n) ===<br />
<br />
Returns ''n'' copies of ''a''. Note that ''a'' is evaluated once before its value is used, so ''$repeat'' cannot be used for loops.<br />
<br />
=== $replace(a,b,c) ===<br />
<br />
Replaces all occurrences of string ''b'' in string ''a'' with string ''c''.<br />
<br />
Can also be used with an arbitrary number of arguments. Note that ''$replace(a,b1,c1,b2,c2)'' is generally not the same as ''$replace($replace(a,b1,c1),b2,c2)''.<br />
<br />
Example: ''$replace(ab,a,b,b,c)'' -> "bc", ''$replace($replace(ab,a,b),b,c)'' -> "cc"<br />
<br />
=== $right(a,len) ===<br />
<br />
Returns the first ''len'' characters from the right of ''a''.<br />
<br />
=== $roman(n) ===<br />
<br />
Formats the integer number ''n'' in roman notation.<br />
<br />
=== $rot13() ===<br />
<br />
Performs [http://en.wikipedia.org/wiki/ROT13 ROT13] transformation to given string.<br />
<br />
Example: ''$rot13('foobar2000')'' -> "sbbone2000".<br />
<br />
=== $shortest ===<br />
<br />
Returns the shortest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $strchr(s,c) ===<br />
<br />
Finds first occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strchr(abca,a)'' -> 1<br />
<br />
=== $strrchr(s,c) ===<br />
<br />
Finds last occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strrchr(abca,a)'' -> 4<br />
<br />
=== $strstr(s1,s2) ===<br />
<br />
Finds first occurence of string ''s2'' in string ''s1''.<br />
<br />
=== $strcmp(s1,s2) ===<br />
<br />
Performs a case-sensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $stricmp(s1,s2) ===<br />
<br />
Performs a case-insensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $substr(s,m,n) ===<br />
<br />
Returns substring of string ''s'', starting from ''m''-th character and ending at ''n''-th character.<br />
<br />
=== $trim(s) ===<br />
<br />
Removes leading and trailing spaces from string ''s''.<br />
<br />
=== $tab() ===<br />
<br />
Inserts one tabulator character.<br />
<br />
=== $tab(n) ===<br />
<br />
Inserts ''n'' tabulator characters.<br />
<br />
=== $upper(s) ===<br />
<br />
Converts string ''s'' to uppercase.<br />
<br />
= Track info =<br />
<br />
The functions and fields in this section can be used to access information about tracks.<br />
<br />
== Metadata ==<br />
<br />
=== $meta(name) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ", " as separator.<br />
<br />
Example: ''$meta(artist)'' -> "He, She, It"<br />
<br />
=== $meta(name,n) ===<br />
Returns value of ''n''-th tag called ''name''.<br />
<br />
Example: ''$meta(artist,2)'' -> "She"<br />
<br />
=== $meta_sep(name,sep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator.<br />
<br />
Example: ''$meta_sep(artist,' + ')'' -> "He + She + It"<br />
<br />
=== $meta_sep(name,sep,lastsep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator between all but the last two values which are concatenated with ''lastsep''.<br />
<br />
Example: ''$metasep(artist,', ',', and ')'' -> "He, She, and It"<br />
<br />
=== $meta_test(...) === <br />
Returns ''1'', if all given tags exist, ''undefined'' otherwise.<br />
<br />
Example: ''$meta_test(artist,title)'' -> true<br />
<br />
=== $meta_num(name) ===<br />
Returns the number of values for the tag called ''name''.<br />
<br />
Example: ''$meta_num(artist)'' -> 3<br />
<br />
=== $tracknumber() ===<br />
Returns the tracknumber padded to 2 digits with zeroes.<br />
<br />
=== $tracknumber(n) ===<br />
Returns the tracknumber padded to ''n'' digits with zeros.<br />
<br />
== Technical information ==<br />
<br />
=== $info(name) ===<br />
Returns value of technical information field called ''name''.<br />
<br />
Example: ''$info(channels)'' -> 2<br />
<br />
=== $codec() ===<br />
Returns codec of track. If no codec field is present, it the uses file extension.<br />
<br />
Example: ''$codec()'' -> "WavPack"<br />
<br />
=== $channels() === <br />
Returns number of channels in text format.<br />
<br />
Example: ''$channels()'' -> "stereo"<br />
<br />
=== %__replaygain_album_gain% ===<br />
Returns ReplayGain album gain value. //Not available through// ''$info(replaygain_album_gain)''.<br />
<br />
=== %__replaygain_album_peak% ===<br />
Returns ReplayGain album peak value. //Not available through// ''$info(replaygain_album_peak)''.<br />
<br />
=== %__replaygain_track_gain% ===<br />
Returns ReplayGain track gain value. //Not available through// ''$info(replaygain_track_gain)''.<br />
<br />
=== %__replaygain_track_peak% ===<br />
Returns ReplayGain track peak value. //Not available through// ''$info(replaygain_track_peak)''.<br />
<br />
== Special fields ==<br />
<br />
=== $extra(name) ===<br />
Returns the value of the special field called ''name''. These fields can also be accessed as ''%_name%''; note the additional underscore. This syntax is from an older version of Foobar2000 {{Foobar2000v08}}. The following fields can be used normally.<br />
==== %filename% ====<br />
Returns the filename without directory and extension.<br />
==== %filename_ext% ====<br />
Returns the filename with extension, but without the directory.<br />
==== %directoryname% ====<br />
Returns the name of the parent directory only, not the complete path.<br />
==== %lastmodified% ====<br />
Returns the date and time the file was last modified. Eg: ''2005-12-22 00:04:10''<br />
==== %path% ====<br />
Returns the path.<br />
==== %path_raw% ====<br />
Returns the path as URL including the protocol scheme.<br />
==== %subsong% ====<br />
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.<br />
==== $extra(foobar2000_version) ====<br />
Returns a string representing the version of foobar2000.<br />
<br />
= Variable operations =<br />
<br />
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.<br />
<br />
For example:<br />
{| border="0" cellspacing="0" cellpadding="2"<br />
! code<br />
! output<br />
|-<br />
|<pre>$put(foo,bar)$char(10)<br />
$get(foo)$char(10)<br />
$get(Foo)$char(10)<br />
$puts(foo,2000)$char(10)<br />
$get(foo)$char(10)</pre><br />
| style="background-color:#EEF" |<pre>bar<br />
bar<br />
bar<br />
<br />
2000</pre><br />
|}<br />
=== $get(name) ===<br />
<br />
Returns the value that was last stored in the variable ''name'', if the variable was not defined (yet), it returns nothing. The truth value returned by ''$get'' indicates if the variable ''name'' was defined<br />
<br />
=== $put(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns ''value'' unaltered<br />
<br />
=== $puts(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns nothing<br />
<br />
= Component-provided fields and functions on tracks =<br />
<br />
This section lists components that provide additional fields and functions that are useable in the context of any track.<br />
<br />
== Playback statistics ==<br />
<br />
* [http://www.foobar2000.org/beta/components.html Playback statistics homepage]<br />
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]<br />
<br />
= Component-specific fields and functions =<br />
<br />
This section lists components that provide additional fields and functions that are only useable in the context of the particular component.<br />
<br />
== Album list ==<br />
<br />
The official album list component supports creating multiple tree entries using special commands.<br />
<br />
* [http://www.foobar2000.org/ Album list homepage]<br />
* [[Foobar2000:Titleformat Album List|Album list titleformat reference]]<br />
<br />
== Columns UI ==<br />
<br />
* [http://music.morbo.org/wiki/columns_ui:manual Columns UI homepage]<br />
* [http://music.morbo.org/wiki/columns_ui:config:global_variables Global variables reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:colour_string Playlist colors reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:playlist_switcher_titleformatting Playlist switcher reference]<br />
<br />
= Additional Reading =<br />
<br />
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]<br />
* '''titleformat_help.html''' in your Foobar2000 directory (ie C:\Program Files\foobar2000\titleformat_help.html) file:///C:/Program%20Files/foobar2000/titleformat_help.html</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:ID3_Tag_MappingFoobar2000:ID3 Tag Mapping2006-05-18T22:09:33Z<p>Foosion: </p>
<hr />
<div>Note that the list is probably still incomplete. Please extend the list if you know of any more native supported ID3 frames.<br />
<br />
Note that foobar2000 0.9 does not write ID3v2.3; the ID3v2.3 Frame column indicates how foobar2000 ''reads'' this version of the standard.<br />
<br />
{| class="wikitable" style="background-color: #F9F9F9; border: 1px solid #000000;"<br />
|+Native ID3 Frames<br />
|- style="background-color: #F2F2F2; font-weight: bold;"<br />
! Field Name !! ID3v2.3 Frame !! ID3v2.4 Frame !! Description<br />
|-<br />
| ALBUM || || TALB || Album/Movie/Show title<br />
|-<br />
| ARTIST || || TPE1 || Lead performer(s)/Soloist(s)<br />
|-<br />
| BAND || || TPE2 || Band/orchestra/accompaniment<br />
|-<br />
| COMMENT || || COMM || Comments<br />
|-<br />
| COMPOSER || || TCOM || Composer<br />
|-<br />
| CONDUCTOR || || TPE3 || Conductor/performer refinement<br />
|-<br />
| DATE || || TDRC || Recording time<br />
|-<br />
| DISCNUMBER || || TPOS || Part of a set<br />
|-<br />
| ENCODED BY || TENC || TENC || Encoded by<br />
|-<br />
| GENRE || || TCON || Content type<br />
|-<br />
| ORIGINAL ARTIST || || TOPE || Original artist(s)/performer(s)<br />
|-<br />
| SUBTITLE || || TIT3 || Subtitle/Description refinement<br />
|-<br />
| TITLE || || TIT2 || Title/songname/content description<br />
|-<br />
| TRACKNUMBER || || TRCK || Track number/Position in set<br />
|-<br />
| TOTALTRACKS || || TRCK || Total tracks stored together with the tack number separated by '/'. E.g. "4/9"<br />
|-<br />
| WWW || || WXXX || User defined URL link frame<br />
|}<br />
<br />
<br />
=References=<br />
* [http://www.id3.org/id3v2.4.0-frames.txt ID3v2.4.0 Native Frames]<br />
* [http://www.id3.org/id3v2.3.0.txt ID3v2.3.0 Informal standard]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Components/Album_Art_Panel_(foo_uie_albumart)Foobar2000:Components/Album Art Panel (foo uie albumart)2006-05-14T23:25:27Z<p>Foosion: /* No-Cover Images */ removed image links</p>
<hr />
<div>[[Image:Albumartpannel.PNG|thumb]]<br />
<br />
=Description=<br />
Album Art Panel is a component for foobar2000 and Columns UI that displays album art in a panel. When configured, it can display any image you would like to associate with a track.<br />
<br />
==Features==<br />
*Configurable sources list allows cycling of multiple images for a single track<br />
*Allows TAGZ and wildcards to specify image file location<br />
*Minimum height setting to assist with layouts<br />
*Configurable resizing of album art to fit panel size<br />
*Sliding and fading transitions between album art<br />
*Configurable actions when panel is left-clicked, double-clicked, and middle-clicked.<br />
*Can display album art for either the currently playing track or the currently selected track<br />
<br />
<br />
==Reading Embedded Album Art==<br />
<br />
Album Art Panel does not support reading album art which has been embedded as a tag (for example, as an ID3v2 tag in an MP3).<br />
<br />
=Sources List=<br />
The sources list allows you to use [[Foobar2000:Titleformat_Reference|titleformatting scripts]] to specify exactly where Album Art Panel will look for image files. In order to learn how to use the sources list, let's look at an example:<br />
<br />
$replace(%_path%,%_filename_ext%,)folder.jpg<br />
-match:$replace(%_path%,%_filename_ext%,)*<br />
-components\default.png<br />
match:C:\Music\Arts\%artist% %album%*<br />
-components\default.png<br />
<br />
The sources list is organized into groups, based on which lines have a '-' in front of them. Each line that does not start with a '-' is the beginning of a new source group. A line which starts with '-' is part of the same source group as the line above it. In the example above, there are two source groups. The first source group consists of the first three lines and the second group consists of the last two lines.<br />
<br />
If a line begins with "match:" or "-match:", the wildcard '*' can be used in place of one or any number of characters and '?' can be used in place of any single character. For instance, the second line of the example above tells Album Art Panel to look for any file it can display in the same directory as the track. Album Art Panel will display the first image which matches the pattern.<br />
<br />
Starting with version 0.160, the "match:" prefix is optional and ignored, and "-match:" is treated like "-". The wildcards '*' and '?' can be used in any source string; characters in tags that are not allowed in filenames will be replaced by an underscore '_' or - in version 0.164 and newer - with the '?' wildcard.<br />
<br />
The "Next Source" action (by default, left-clicking on the panel) will cycle through the source list as follows: If a wildcard is used, "Next Source" will cycle through all images which match the pattern. Otherwise, "Next Source" will cycle through the source groups.<br />
<br />
Album Art Panel will first look for an image at the location indicated in the first line of a source group. In this example, it will look in the same directory as the track for a file called "folder.jpg". The TAGZ code takes the full path of the track, replaces the filename with a blank, and appends "folder.jpg" to the end (e.g, "C:\Music\Soundgarden\Badmotorfinger\01 Rusty Cage.mp3" becomes "C:\Music\Soundgarden\Badmotorfinger\folder.jpg").<br />
<br />
If the image indicated by the first line cannot be found, Album Art Panel will look at subsequent lines within the same source group and display the first image which can be found. If no image within a source group can be found, Album Art Panel will try to display the next source group instead. If none of the source groups can be found, the display will be blank.<br />
<br />
=No-Cover Images=<br />
<br />
''Images are affected by the same copyright issues as text, so please do not add images of unknown origin or based on copyrighted work.''<br />
<br />
=Link=<br />
* [http://stephan.kochen.nl/proj/foobar2000.html Website and Download] (links to latest)<br />
* [http://eolindel.free.fr/foobar0.9/albumart.shtml Unofficial User Manual]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=39924 Discussion Thread] [http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=39924&view=findpost&p=387294 (Current version)]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=34341 No-Cover Image Thread]<br />
<br />
[[Category: foobar2000]]<br />
[[Category: Columns UI]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Tools:foosicFoobar2000:Preferences:Tools:foosic2006-05-10T20:48:56Z<p>Foosion: /* Include FooID audio fingerprint */ grammar</p>
<hr />
<div>= foosic music database =<br />
<br />
This page contains options related to the [http://www.foosic.org foosic] client.<br />
<br />
[[Image:foobar2000-prefs-tools-foosic.png|foosic music database preferences page]]<br />
<br />
= Options on this page =<br />
<br />
== Account ==<br />
<br />
This section contains input fields for the username and password of your foosic account. The Register button opens the foosic account registration page in your default browser (requires internet connection).<br />
<br />
== Submissions ==<br />
<br />
=== Submit playback information ===<br />
<br />
This option enable sending of playback information to the server. There is at most one UDP packet sent per song played.<br />
<br />
=== Submit only items from the medial library ===<br />
<br />
This restricts the client to only sending playback information for items that are contained in the media library.<br />
<br />
=== Include FooID audio fingerprint ===<br />
<br />
This options makes the client send a FooID audio fingerprint along with the metadata if possible. In the current version, this fingerprint is always computed on demand and not cached. Computing the fingerprint usually takes two or three seconds.<br />
<br />
=== View failed submissions ===<br />
<br />
Clicking this button opens a list with songs that could not be submitted due to having insufficient metadata. The failure reason is included in the list.<br />
<br />
== Status ==<br />
<br />
This section shows some information while the foosic client is preparing and sending data to the server.<br />
<br />
= Subpages =<br />
<br />
This page has no known subpages.</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Tools:foosicFoobar2000:Preferences:Tools:foosic2006-05-10T20:40:29Z<p>Foosion: </p>
<hr />
<div>= foosic music database =<br />
<br />
This page contains options related to the [http://www.foosic.org foosic] client.<br />
<br />
[[Image:foobar2000-prefs-tools-foosic.png|foosic music database preferences page]]<br />
<br />
= Options on this page =<br />
<br />
== Account ==<br />
<br />
This section contains input fields for the username and password of your foosic account. The Register button opens the foosic account registration page in your default browser (requires internet connection).<br />
<br />
== Submissions ==<br />
<br />
=== Submit playback information ===<br />
<br />
This option enable sending of playback information to the server. There is at most one UDP packet sent per song played.<br />
<br />
=== Submit only items from the medial library ===<br />
<br />
This restricts the client to only sending playback information for items that are contained in the media library.<br />
<br />
=== Include FooID audio fingerprint ===<br />
<br />
This options makes the client send a FooID audio fingerprint along with the metadata if possible. In the current version, this fingerprint is always computed on demand and not cached. Computing the fingerprint is usually takes two or three seconds.<br />
<br />
=== View failed submissions ===<br />
<br />
Clicking this button opens a list with songs that could not be submitted due to having insufficient metadata. The failure reason is included in the list.<br />
<br />
== Status ==<br />
<br />
This section shows some information while the foosic client is preparing and sending data to the server.<br />
<br />
= Subpages =<br />
<br />
This page has no known subpages.</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=File:Foobar2000-prefs-tools-foosic.pngFile:Foobar2000-prefs-tools-foosic.png2006-05-10T20:31:55Z<p>Foosion: </p>
<hr />
<div></div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000redirect:579ECE7D-E8B8-4585-93E4-5CEFC7AF08DCFoobar2000redirect:579ECE7D-E8B8-4585-93E4-5CEFC7AF08DC2006-05-10T20:20:41Z<p>Foosion: </p>
<hr />
<div>#REDIRECT [[Foobar2000:Preferences:Tools:foosic]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000redirect:579ECE7D-E8B8-4585-93E4-5CEFC7AF08DCFoobar2000redirect:579ECE7D-E8B8-4585-93E4-5CEFC7AF08DC2006-05-10T20:19:43Z<p>Foosion: </p>
<hr />
<div>#REDIRECT {{Foobar2000:Preferences:Tools:foosic}}</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Album_Art_Panel_(foo_uie_albumart)Foobar2000:Album Art Panel (foo uie albumart)2006-05-10T09:04:59Z<p>Foosion: /* Sources List */ Behaviour of "match:" prefix in version 0.160 and newer</p>
<hr />
<div>=Description=<br />
<br />
Album Art Panel is a component for foobar2000 0.9 and Columns UI 0.1.3 that displays album art in a panel.<br />
<br />
==Features==<br />
*Configurable sources list allows cycling of multiple images for a single track<br />
*Allows TAGZ and wildcards to specify image file location<br />
*Minimum height setting to assist with layouts<br />
*Configurable resizing of album art to fit panel size<br />
*Sliding and fading transitions between album art<br />
*Configurable actions when panel is left-clicked, double-clicked, and middle-clicked.<br />
*Can display album art for either the currently playing track or the currently selected track<br />
<br />
==Reading Embedded Album Art==<br />
<br />
Album Art Panel does not support reading album art which has been embedded as a tag (for example, as an ID3v2 tag in an MP3).<br />
<br />
=Sources List=<br />
The sources list allows you to use [[Foobar2000:Titleformat_Reference|titleformatting scripts]] to specify exactly where Album Art Panel will look for image files. In order to learn how to use the sources list, let's look at an example:<br />
<br />
$replace(%_path%,%_filename_ext%,)folder.jpg<br />
-match:$replace(%_path%,%_filename_ext%,)*<br />
-components\default.png<br />
match:C:\Music\Arts\%artist% %album%*<br />
-components\default.png<br />
<br />
The sources list is organized into groups, based on which lines have a '-' in front of them. Each line that does not start with a '-' is the beginning of a new source group. A line which starts with '-' is part of the same source group as the line above it. In the example above, there are two source groups. The first source group consists of the first three lines and the second group consists of the last two lines.<br />
<br />
If a line begins with "match:" or "-match:", the wildcard '*' can be used in place of one or any number of characters and '?' can be used in place of any single character. For instance, the second line of the example above tells Album Art Panel to look for any file it can display in the same directory as the track. Album Art Panel will display the first image which matches the pattern.<br />
<br />
Starting with version 0.160, the "match:" prefix is optional and ignored, and "-match:" is treated like "-". The wildcards '*' and '?' can be used in any source string; characters in tags that are not allowed in filenames will be replaced by an underscore '_' or - in version 0.164 and newer - with the '?' wildcard.<br />
<br />
The "Next Source" action (by default, left-clicking on the panel) will cycle through the source list as follows: If a wildcard is used, "Next Source" will cycle through all images which match the pattern. Otherwise, "Next Source" will cycle through the source groups.<br />
<br />
Album Art Panel will first look for an image at the location indicated in the first line of a source group. In this example, it will look in the same directory as the track for a file called "folder.jpg". The TAGZ code takes the full path of the track, replaces the filename with a blank, and appends "folder.jpg" to the end (e.g, "C:\Music\Soundgarden\Badmotorfinger\01 Rusty Cage.mp3" becomes "C:\Music\Soundgarden\Badmotorfinger\folder.jpg").<br />
<br />
If the image indicated by the first line cannot be found, Album Art Panel will look at subsequent lines within the same source group and display the first image which can be found. If no image within a source group can be found, Album Art Panel will try to display the next source group instead. If none of the source groups can be found, the display will be blank.<br />
<br />
=External Links=<br />
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=29383 Original thread]<br />
*[http://www.hydrogenaudio.org/forums/index.php?showtopic=39924 Updated thread] (visit here for latest version and developments)</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Title_Formatting_ReferenceFoobar2000:Title Formatting Reference2006-04-19T22:56:20Z<p>Foosion: added introduction paragraphs</p>
<hr />
<div>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.<br />
<br />
A field reference is a field name enclosed in percent signs, for example ''%artist%''. 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 ''()'' - or contain one or more parameters separated by commata, for example ''$abbr(%artist%)''. 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.<br />
<br />
Please see [[Foobar2000:Titleformat_Introduction|Titleformat Introduction]] for a presentation of titleformat syntax in general.<br />
<br />
= Field remappings =<br />
<br />
Some of the fields accessible through ''%name%'' are remapped to other values to make writing titleformat scripts more convenient.<br />
<br />
== Metadata ==<br />
<br />
=== %album artist% ===<br />
Defined as ''$if3($meta(album artist),$meta(artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %album% ===<br />
Defined as ''$if3($meta(album),$meta(venue))''.<br />
<br />
=== %artist% ===<br />
Defined as ''$if3($meta(artist),$meta(album artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %disc% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %discnumber% remapping.<br />
<br />
=== %discnumber% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %disc% remapping.<br />
<br />
=== %track artist% ===<br />
Defined as ''$meta(artist)'', if ''$meta(album artist)'' is different than ''$meta(artist)'', otherwise this field is empty.<br />
<br />
=== %title% ===<br />
Defined as ''$if2($meta(title),%_filename%)''. Returns the ''title'' tag if available, otherwise it returns the filename excluding the extension.<br />
<br />
=== %track% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %tracknumber% remapping.<br />
<br />
=== %tracknumber% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %track% remapping.<br />
<br />
== Technical information ==<br />
<br />
=== %bitrate% ===<br />
Defined as ''$if2($info(bitrate_dynamic),$info(bitrate))''. Returns the current bitrate, if available, otherwise it returns the average bitrate. If neither is available, nothing is returned.<br />
<br />
=== %channels% ===<br />
Defined as ''$channels()''. Returns the number of channels in text form; returns "mono" and "stereo" instead of "1" and "2".<br />
<br />
=== %filesize% ===<br />
Defined as ''%_filesize%''. Returns the filesize in bytes.<br />
<br />
=== %samplerate% ===<br />
Defined as ''$info(samplerate)''. Returns the samplerate in Hz.<br />
<br />
=== %codec% ===<br />
Defined as ''$codec()''.<br />
<br />
== Special fields ==<br />
<br />
=== %playlist_number% ===<br />
Defined as ''$num(%_playlist_number%,$len(%_playlist_total%))''. Returns the position of the track as index into the playlist. The first track has index 1. The index is padded from the left with zeroes to the same number of digits as the last track.<br />
<br />
= Control flow =<br />
<br />
The functions in this section can be used to conditionally execute statements.<br />
<br />
=== [...] (conditional section) ===<br />
<br />
Evaluates the expression between ''['' and '']''. If it has the truth value ''true'', its string value and the truth value ''true'' are returned. Otherwise an empty string and ''false'' are returned.<br />
<br />
Example: ''[%artist%]'' returns the value of the artist tag, if it exists. Otherwise it returns nothing, when ''artist'' would return "?".<br />
<br />
=== $if(cond,then) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, ''false'' is returned.<br />
<br />
=== $if(cond,then,else) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, the ''else'' part is evaluated and its value returned.<br />
<br />
=== $if2(a,else) ===<br />
<br />
Like ''$if(a,a,else)'' except that ''a'' is only evaluated once.<br />
<br />
<br />
=== $if3(a1,a2,...,aN,else) ===<br />
<br />
Evaluates arguments ''a1'' ... ''aN'', until one is found that evaluates to ''true''. If that happens, its value is returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifgreater(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is greater than ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $iflonger(s1,s2,then,else) ===<br />
<br />
Compares the length of the strings ''s1'' and ''s2'', if ''s1'' is longer than ''s2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $select(n,a1,...,aN) ===<br />
<br />
If the value of ''n'' is between 1 and N, ''an'' is evaluated and its value returned. Otherwise ''false'' is returned.<br />
<br />
= Arithmetic functions =<br />
<br />
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.<br />
<br />
Example: "c3po" -> 0, " -12" -> -12, but "- 12" -> 0<br />
<br />
=== $add(a,b) ===<br />
<br />
Adds ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$add(a,b,...)'' is the same as ''$add($add(a,b),...)''.<br />
<br />
=== $div(a,b) ===<br />
<br />
Divides ''a'' through ''b''. If ''b'' evaluates to zero, it returns ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$div(a,b,...)'' is the same as ''$div($div(a,b),...)''.<br />
<br />
=== $greater(a,b) ===<br />
<br />
Returns true, if ''a'' is greater than ''b'', otherwise false.<br />
<br />
=== $max(a,b) ===<br />
<br />
Returns the maximum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$max(a,b,...)'' is the same as ''$max($max(a,b),...)''.<br />
<br />
=== $min(a,b) ===<br />
<br />
Returns the minimum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$min(a,b,...)'' is the same as ''$min($min(a,b),...)''.<br />
<br />
=== $mod(a,b) ===<br />
<br />
Computes the remainder of dividing ''a'' through ''b''. The result has the same sign as ''a''. If ''b'' evaluates to zero, the result is ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mod(a,b,...)'' is the same as ''$mod($mod(a,b),...)''.<br />
<br />
=== $mul(a,b) ===<br />
<br />
Multiplies ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mul(a,b,...)'' is the same as ''$mul($mul(a,b),...)''.<br />
<br />
=== $muldiv(a,b,c) ===<br />
<br />
Multiplies ''a'' and ''b'', then divides by ''c''. The result is rounded to the nearest integer.<br />
<br />
=== $rand() ===<br />
<br />
Generates a random number in the range from 0 to 2<sup>32</sup>-1.<br />
<br />
=== $sub(a,b) ===<br />
<br />
Subtracts ''b'' from ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$sub(a,b,...)'' is the same as ''$sub($sub(a,b),...)''.<br />
<br />
= Boolean functions =<br />
<br />
The functions in this section can be used to work with truth values (''true'' and ''false''), 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 ''$if'' and related functions.<br />
<br />
=== $and(...) ===<br />
<br />
Logical And of an arbitrary number of arguments. Returns ''true'', if and only if all arguments evaluate to ''true''.<br />
<br />
Special case: ''$and(x,y)'' is ''true'', if both ''x'' and ''y'' are ''true''. Otherwise it is ''false''.<br />
<br />
=== $or(...) ===<br />
<br />
Logical Or of an arbitrary number of arguments. Returns ''true'', if at least one argument evaluates to ''true''.<br />
<br />
Special case: ''$or(x,y)'' is ''true'', if ''x'' or ''y'' is ''true'', or if both are ''true''. Otherwise it is ''false''.<br />
<br />
=== $not(x) ===<br />
<br />
Logical Not. Returns ''false'', if ''x'' is ''true'', otherwise it returns ''true''.<br />
<br />
=== $xor(...) ===<br />
<br />
Logical Exclusive-or of an arbitrary number of arguments. Returns ''true'', if an odd number of arguments evaluate to ''true''.<br />
<br />
Special case: ''$xor(x,y)'' is ''true'', if one of ''x'' and ''y'' is ''true'', but not both. Otherwise it is ''false''.<br />
<br />
= Color functions =<br />
<br />
=== $blend(color1,color2,part,total) ===<br />
<br />
Returns a color that is a blend between ''color1'' and ''color2''. If ''part'' is smaller than or equal to zero, ''color1'' is returned. If ''part'' is greater than or equal to ''total'', ''color2'' is returned. Otherwise a blended color is returned that is ''part'' parts ''color1'' and ''total''-''part'' parts ''color2''. The blending is performed in the RGB color space.<br />
<br />
=== $hsl() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $hsl(h,s,l) ===<br />
<br />
Sets the color for text in the HSL color space. ''h'', ''s'' and ''l'' are the hue, saturation, and lightness of the color for unselected text. The color for selected text is set to the inverse color.<br />
The ranges of ''h'', ''s'', and ''l'' are from 0 to 240; the function is designed to interpret those values in the same way as the standard Windows color dialog.<br />
<br />
=== $hsl(h1,s1,l1,h2,s2,l2) ===<br />
<br />
Sets the color for text in the HSL color space. ''h1'', ''s1'' and ''l1'' are the hue, saturation, and lightness of the color for unselected text. ''h2'', ''s2'' and ''l2'' are the hue, saturation, and lightness of the color for selected text.<br />
<br />
=== $rgb() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $rgb(r,g,b) ===<br />
<br />
Sets the color for text. ''r'', ''g'' and ''b'' are the red, green and blue component of the color for unselected text. The color for selected text is set to the inverse color.<br />
<br />
=== $rgb(r1,g1,b1,r2,g2,b2) ===<br />
<br />
Sets the color for text. ''r1'', ''g1'' and ''b1'' are the red, green and blue component of the color for unselected text. ''r2'', ''g2'' and ''b2'' are the red, green and blue component of the color for selected text.<br />
<br />
=== $transition(string,color1,color2) ===<br />
<br />
Inserts color codes into ''string'', so that the first character has ''color1'', the last character has ''color2'', 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 ''$transition''.<br />
<br />
= Now playing info =<br />
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.<br />
<br />
== Special fields ==<br />
<br />
=== %_time_elapsed% ===<br />
Returns elapsed time.<br />
<br />
=== %_time_remaining% ===<br />
Returns remaining time until track ends.<br />
<br />
=== %_time_total% ===<br />
Returns total length of track.<br />
<br />
=== %_time_elapsed_seconds% ===<br />
Returns elapsed time in seconds.<br />
<br />
=== %_time_remaining_seconds% ===<br />
Returns remaining time in seconds.<br />
<br />
=== %_time_total_seconds% ===<br />
Returns total track length in seconds.<br />
<br />
=== %_ispaused% ===<br />
Returns "1" if playback is paused and empty string otherwise.<br />
<br />
= Playlist info =<br />
The following functions and fields are usable for playlist scripts.<br />
<br />
== Special fields ==<br />
<br />
=== %isplaying% ===<br />
<br />
Returns "1" if file is currently playing and empty string otherwise.<br />
<br />
The old version <code>%_isplaying%</code> still works.<br />
<br />
=== %_ispaused% ===<br />
<br />
Returns "1" if playback is paused, empty string otherwise.<br />
<br />
=== %_playlist_number% ===<br />
<br />
Returns playlist index of specified item. The first item is at index 1.<br />
<br />
Also see [[Foobar2000:Titleformat Reference#%playlist_number%|%playlist_number%]].<br />
<br />
=== %_playlist_total% ===<br />
<br />
Returns number of items in the playlist.<br />
<br />
=== %playlist_name% ===<br />
<br />
Returns the name of the playlist containing the specified item.<br />
<br />
The old version <code>%_playlist_name%</code> still works.<br />
<br />
= String functions =<br />
<br />
The functions in this section can be used to manipulate character strings.<br />
<br />
=== $abbr(x) ===<br />
<br />
Returns abbreviation of ''x''.<br />
<br />
=== $abbr(x,len) ===<br />
<br />
Returns abbreviation of ''x'', if ''x'' is longer than ''len'' characters, otherwise returns ''x''.<br />
<br />
=== $ansi(x) ===<br />
<br />
Converts ''x'' 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.<br />
<br />
=== $ascii(x) ===<br />
<br />
Converts ''x'' to ASCII. Any characters that are not present in ASCII will be removed / replaced.<br />
<br />
=== $caps(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and all other letters to lowercase.<br />
<br />
=== $caps2(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and leaves all other letters as they are.<br />
<br />
=== $char(x) ===<br />
<br />
Inserts Unicode character with code ''x''.<br />
<br />
=== $crc32(a) ===<br />
<br />
Computes the CRC32 of the string ''a'' as a number. Intended for use in coloring scripts.<br />
<br />
Example: $rgb($mod($crc32(%album%),256),128,128)<br />
<br />
=== $crlf() ===<br />
<br />
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 ("systray") icon.<br />
<br />
=== $cut(a,len) ===<br />
<br />
Returns first ''len'' characters on the left of ''a''.<br />
<br />
=== $directory(x) ===<br />
<br />
Extracts directory name from the file path ''x''.<br />
<br />
=== $directory(x,n) ===<br />
<br />
Extracts directory name from the file path ''x''; goes up by ''n'' levels.<br />
<br />
=== $ext(x) ===<br />
<br />
Extracts file extension from ''x'' which must be a file name or path.<br />
<br />
=== $filename(x) ===<br />
<br />
Extracts file name from full path.<br />
<br />
=== $fix_eol(x) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by " (...)". Otherwise ''x'' is returned unaltered.<br />
<br />
=== $fix_eol(x,indicator) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by ''indicator''. Otherwise ''x'' is returned unaltered.<br />
<br />
=== $hex(n) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation.<br />
<br />
=== $hex(n,len) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $insert(a,b,n) ===<br />
<br />
Inserts ''b'' into ''a'' after ''n'' characters.<br />
<br />
=== $left(a,len) ===<br />
<br />
Returns the first ''len'' characters from the left of ''a''.<br />
<br />
=== $len(a) ===<br />
<br />
Returns length of string ''a'' in characters.<br />
<br />
=== $len2(a) ===<br />
<br />
Returns length of string x in characters, respecting double-width character rules (double-width characters will be counted as two).<br />
<br />
=== $longer(a,b) ===<br />
<br />
Returns ''true'', if string ''a'' is longer than string ''b'', false otherwise.<br />
<br />
=== $lower(a) ===<br />
<br />
Converts ''a'' to lowercase.<br />
<br />
=== $longest(a,...) ===<br />
<br />
Returns the longest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $num(n,len) ===<br />
<br />
Formats the integer number ''n'' in decimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $pad(x,len) ===<br />
<br />
Pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $pad_right(x,y) ===<br />
<br />
Pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $pad(x,len,char) ===<br />
<br />
Pads ''x'' from the left with ''char'' to ''len'' characters.<br />
<br />
=== $pad_right(x,len,char) ===<br />
<br />
Pads ''x'' from the right with ''char'' to ''len'' characters.<br />
<br />
=== $padcut(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $padcut_right(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $progress(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with.<br />
<br />
Example:''$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=')'' produces "====#===============", the # character is moving with playback position.<br />
<br />
=== $progress2(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with. Produces different appearance than ''$progress''.<br />
<br />
=== $repeat(a,n) ===<br />
<br />
Returns ''n'' copies of ''a''. Note that ''a'' is evaluated once before its value is used, so ''$repeat'' cannot be used for loops.<br />
<br />
=== $replace(a,b,c) ===<br />
<br />
Replaces all occurrences of string ''b'' in string ''a'' with string ''c''.<br />
<br />
Can also be used with an arbitrary number of arguments. Note that ''$replace(a,b1,c1,b2,c2)'' is generally not the same as ''$replace($replace(a,b1,c1),b2,c2)''.<br />
<br />
Example: ''$replace(ab,a,b,b,c)'' -> "bc", ''$replace($replace(ab,a,b),b,c)'' -> "cc"<br />
<br />
=== $right(a,len) ===<br />
<br />
Returns the first ''len'' characters from the right of ''a''.<br />
<br />
=== $roman(n) ===<br />
<br />
Formats the integer number ''n'' in roman notation.<br />
<br />
=== $rot13() ===<br />
<br />
Performs [http://en.wikipedia.org/wiki/ROT13 ROT13] transformation to given string.<br />
<br />
Example: ''$rot13('foobar2000')'' -> "sbbone2000".<br />
<br />
=== $shortest ===<br />
<br />
Returns the shortest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $strchr(s,c) ===<br />
<br />
Finds first occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strchr(abca,a)'' -> 1<br />
<br />
=== $strrchr(s,c) ===<br />
<br />
Finds last occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strrchr(abca,a)'' -> 4<br />
<br />
=== $strstr(s1,s2) ===<br />
<br />
Finds first occurence of string ''s2'' in string ''s1''.<br />
<br />
=== $strcmp(s1,s2) ===<br />
<br />
Performs a case-sensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $stricmp(s1,s2) ===<br />
<br />
Performs a case-insensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $substr(s,m,n) ===<br />
<br />
Returns substring of string ''s'', starting from ''m''-th character and ending at ''n''-th character.<br />
<br />
=== $trim(s) ===<br />
<br />
Removes leading and trailing spaces from string ''s''.<br />
<br />
=== $tab() ===<br />
<br />
Inserts one tabulator character.<br />
<br />
=== $tab(n) ===<br />
<br />
Inserts ''n'' tabulator characters.<br />
<br />
=== $upper(s) ===<br />
<br />
Converts string ''s'' to uppercase.<br />
<br />
= Track info =<br />
<br />
The functions and fields in this section can be used to access information about tracks.<br />
<br />
== Metadata ==<br />
<br />
=== $meta(name) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ", " as separator.<br />
<br />
Example: ''$meta(artist)'' -> "He, She, It"<br />
<br />
=== $meta(name,n) ===<br />
Returns value of ''n''-th tag called ''name''.<br />
<br />
Example: ''$meta(artist,2)'' -> "She"<br />
<br />
=== $meta_sep(name,sep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator.<br />
<br />
Example: ''$meta_sep(artist,' + ')'' -> "He + She + It"<br />
<br />
=== $meta_sep(name,sep,lastsep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator between all but the last two values which are concatenated with ''lastsep''.<br />
<br />
Example: ''$metasep(artist,', ',', and ')'' -> "He, She, and It"<br />
<br />
=== $meta_test(...) === <br />
Returns ''true'', if all given tags exist.<br />
<br />
Example: ''$meta_test(artist,title)'' -> true<br />
<br />
=== $meta_num(name) ===<br />
Returns the number of values for the tag called ''name''.<br />
<br />
Example: ''$meta_num(artist)'' -> 3<br />
<br />
=== $tracknumber() ===<br />
Returns the tracknumber padded to 2 digits with zeroes.<br />
<br />
=== $tracknumber(n) ===<br />
Returns the tracknumber padded to ''n'' digits with zeros.<br />
<br />
== Technical information ==<br />
<br />
=== $info(name) ===<br />
Returns value of technical information field called ''name''.<br />
<br />
Example: ''$info(channels)'' -> 2<br />
<br />
=== $codec() ===<br />
Returns codec of track. If no codec field is present, it the uses file extension.<br />
<br />
Example: ''$codec()'' -> "WavPack"<br />
<br />
=== $channels() === <br />
Returns number of channels in text format.<br />
<br />
Example: ''$channels()'' -> "stereo"<br />
<br />
=== %__replaygain_album_gain% ===<br />
Returns ReplayGain album gain value. //Not available through// ''$info(replaygain_album_gain)''.<br />
<br />
=== %__replaygain_album_peak% ===<br />
Returns ReplayGain album peak value. //Not available through// ''$info(replaygain_album_peak)''.<br />
<br />
=== %__replaygain_track_gain% ===<br />
Returns ReplayGain track gain value. //Not available through// ''$info(replaygain_track_gain)''.<br />
<br />
=== %__replaygain_track_peak% ===<br />
Returns ReplayGain track peak value. //Not available through// ''$info(replaygain_track_peak)''.<br />
<br />
== Special fields ==<br />
<br />
=== $extra(name) ===<br />
Returns the value of the special field called ''name''. These fields can also be accessed as ''%_name%''; note the additional underscore. The following field names can be used:<br />
==== filename ====<br />
Returns the filename without directory and extension.<br />
==== filename_ext ====<br />
Returns the filename with extension, but without the directory.<br />
==== directoryname ====<br />
Returns the name of the parent directory only, not the complete path.<br />
==== path ====<br />
Returns the path.<br />
==== path_raw ====<br />
Returns the path as URL including the protocol scheme.<br />
==== subsong ====<br />
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.<br />
==== foobar2000_version ====<br />
Returns a string representing the version of foobar2000.<br />
==== length ====<br />
Returns the length of the track formatted as hours, minutes, and seconds.<br />
==== length_ex ====<br />
Returns the length of the track formatted as hours, minutes, seconds, and milliseconds.<br />
==== length_seconds ====<br />
Returns the length of the track in seconds.<br />
==== length_seconds_fp ====<br />
Returns the length of the track in seconds as floating point number.<br />
==== length_samples ====<br />
Returns the length of the track in samples.<br />
<br />
= Variable operations =<br />
<br />
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.<br />
<br />
=== $get(name) ===<br />
<br />
Returns the value that was last stored in the variable ''name'', if the variable was not defined (yet), it returns nothing. The truth value returned by ''$get'' indicates if the variable ''name'' was defined.<br />
<br />
=== $put(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns ''value'' unaltered.<br />
<br />
=== $puts(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns only the truth value of ''value''.<br />
<br />
= Component-provided fields and functions on tracks =<br />
<br />
This section lists components that provide additional fields and functions that are useable in the context of any track.<br />
<br />
== Playback statistics ==<br />
<br />
* [http://www.foobar2000.org/beta/components.html Playback statistics homepage]<br />
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]<br />
<br />
= Component-specific fields and functions =<br />
<br />
This section lists components that provide additional fields and functions that are only useable in the context of the particular component.<br />
<br />
== Album list ==<br />
<br />
The official album list component supports creating multiple tree entries using special commands.<br />
<br />
* [http://www.foobar2000.org/ Album list homepage]<br />
* [[Foobar2000:Titleformat Album List|Album list titleformat reference]]<br />
<br />
== Columns UI ==<br />
<br />
* [http://music.morbo.org/wiki/columns_ui:manual Columns UI homepage]<br />
* [http://music.morbo.org/wiki/columns_ui:config:global_variables Global variables reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:colour_string Playlist colors reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:playlist_switcher_titleformatting Playlist switcher reference]<br />
<br />
= Related articles =<br />
<br />
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:FAQFoobar2000:FAQ2006-04-19T22:43:28Z<p>Foosion: /* Which version of foobar should I download? */ Obsolete, so removed it</p>
<hr />
<div>A rather extensive FAQ is available at the [http://shsc.info/foobar2000 SH/SC Wiki].<br />
<br />
= General =<br />
<br />
<br />
== Is foobar2000 still under active development? ==<br />
<br />
Yes. Please see the forum and the foobar2000 homepage for the latest version and news about upcoming versions.<br />
<br />
= Playback =<br />
== There are multiple output methods available: DirectSound, waveOut and Kernel Streaming. Which one should I use? ==<br />
A: The default setting (waveOut) is recommended; it should be safe to use anywhere. DirectSound result in better performance (less CPU overhead)—especially under Windows 2000, Windows XP or newer—but there shouldn't be any audible difference between the two. In certain rare cases, Kernel Streaming may produce better results than DirectSound/waveOut (if for some reason you need data sent through digital out to be bit-identical to source stream); however, bit-identical results with DirectSound have been reported on soundcards capable of mixing multiple streams in hardware (with hardware mixing enabled in DirectSound settings).<br />
<br />
Please note that Kernel Streaming is an experimental feature with known issues, and using it is ''not'' recommended unless you have a clear need to do so. Most of perceived "sound quality differences" between DirectSound and Kernel Streaming are related to the fact that Kernel Streaming usually bypasses the Windows volume control. In addition, Kernel Streaming only works on Windows 2000, Windows XP or newer.<br />
<br />
== How can I send my files from Windows Explorer into a specific playlist, so as not to erase my current playlist? ==<br />
Preferences → General → Always send to playlist <tt>(playlist name)</tt> (0.9)<br />
Preferences → Core → Always send to playlist <tt>(playlist name)</tt> (0.8x)<br />
<br />
== How do I create a temporary playlist? ==<br />
Use <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=12124 foo_temple]</tt>.<br />
<br />
= Look & Feel =<br />
== How can I get G-force in a panel or a tab? ==<br />
To get [http://soundspectrum.com/ G-force] without any edges, or in a tab/panel, follow these steps:<br />
<br />
# Open the <tt>Documents and Settings\&lt;your Windows username&gt;\G-force</tt> folder<br />
# Open the <tt>Preferences (foobar2000).txt</tt> file and change the line <tt>NoBo=0</tt> to <tt>NoBo=1</tt><br />
<br />
You won't be able to resize the window, so set the position and size of the window carefully. To put it as a tab, just create a fake tab called G-Force and place the window (the window without borders will take the place of the window with borders included before the change).<br />
<br />
== I just saw a great looking foobar2000 window, but I don't know how to get mine looking the same way! Is there no hope for me? ==<br />
Of course there is! Simply take a look at these links:<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery]<br />
* [http://foobar.nub4life.net/columns/ Columns UI settings database]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31509&hl=foobar+gallery Navigator-Suite]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=33450 Azrael]<br />
* [http://foobar.nub4life.net/columns/pafiledb.php?action=file&id=39 OLiGhT]<br />
* [http://pelit.koillismaa.fi/fb2k/index.php foobar2000 formatting]<br />
<br />
== Is there a way to make MSN Messenger's "Now Playing" show the song I'm listening to with foobar? ==<br />
Yes, through plugins:<br />
<br />
* <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33067 AMIP]</tt><br />
* <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=31609 foo_msn]</tt><br />
<br />
== I have seen some people using something which pops up to display the song being listened to. Where can I find it? ==<br />
It's called <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33236&hl=foo_pretty+pop-up foo_prettypop]</tt>. Note that it requires the .NET Framework to work.<br />
<br />
= Columns UI =<br />
== How can I get tabbed panels? ==<br />
Use [http://www.hydrogenaudio.org/forums/index.php?showtopic=28869&hl=uie+tabs uie tabs].<br />
<br />
== Where are the options for changing the playback buttons? ==<br />
Preferences → Display → UI columns → Other → Use custom buttons<br />
<br />
== How can I display the album art and cover above my playlist? ==<br />
To set the panels above your playlist, just use <tt>list all toolbars</tt>, then add the panels/toolbars/visualizations that you want to use. Organize them as you want them to be displayed. And finally, use the 'minimum height' values of the corresponding panels. As it is not a common way to use the toolbar, you may experience some unexpected behaviour. Keep in mind that it may create some display problems. Musicmusic may fix this into the next version of Columns UI.<br />
<br />
= Database and Tagging =<br />
== Foobar always takes between 5 minutes and several hours to open all the files in the same playlist. Is there a way to reduce this delay? ==<br />
Sure. Enable the database (Preferences → Core → Database). You will be able to add thousands of files in only 30-40 seconds.<br />
<br />
Alternatively, if you don't want to activate the database, just save your playlists in the <tt>fpl</tt> format.<br />
<br />
== I updated my tags, but foobar still shows the old tags. How can I fix this? ==<br />
Foobar only adds the info to the database (if it is enabled), so you have to update the info in it: select the file(s), right click on any of them, go to "Database", then click on "Reload info from files".<br />
<br />
= Troubleshooting =<br />
== I get an error message saying "referenced file doesn't exist" on the console. What does that mean, and how can it be fixed? ==<br />
This error is caused by an outdated/broken CUE sheet or APL link. You need to find and repair or remove it. After that, run "Remove dead entries" from the Database page in the Preferences dialog.<br />
<br />
== The Album List shows dead entries after restarting, even though I used "Remove dead entries" earlier. Why is that? ==<br />
The files are probably still referenced in one of your playlists or in the history (if you are using an old version of <tt>foo_history</tt>). Use Playlist → Remove dead entries from the main menu on all your playlists, or remove the dead entries manually. As long as the files are on a playlist, they will be in the database and thus will show up in album list.<br />
<br />
== Menu items for some plugins don't show up. I reinstalled but I still don't see them, even though the plugin is shown as a Loaded Library. ==<br />
If you delete a menu item for a plugin, and then re-add the plugin, it won't re-add the menu items. The solution is to open the Preferences dialog, go to Core → Main menu items, and add the items manually.<br />
<br />
== An MP3 does not play properly (there is no sound) in fb2k whereas it plays perfectly in other players. What is the problem? ==<br />
You need to disable <tt>Use peak info to scale down tracks that still clip after applying replaygain</tt> in the Preferences dialog, in the ReplayGain section of the Playback page.<br />
<br />
== I use the volume control toolbar but it doesn't work. What's the problem? ==<br />
You may be using Kernel Streaming or ASIO. These two output methods are not compatible with the volume control toolbar.<br />
<br />
== There is always a long delay before changes to the DSPs take effect. Can I reduce this? ==<br />
Try reducing the output buffer length from Preferences → Playback → Output → (your selected output method). However, do not put it at the minimum length. 300ms should be enough (more if you are using several DSPs).<br />
<br />
= foobar and other players =<br />
== How can I publish my playlist as HTML, like in Winamp? ==<br />
Use <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33795 foo_playlist_output]</tt>. There is also a customizable version available (needs <tt>foo_playlist_output</tt>): <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33895 foo_playlist_output_custom]</tt>.<br />
<br />
== Is foobar really better than Winamp? ==<br />
There is no set answer. According to public opinion, foobar is great for people wanting a minimal player, as well as the opposite: people needing advanced features. However, the medium users are lost between the profusion of settings and components to find. Some relevant links:<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=20322 Tell us why have you chosen foobar2000, or why don't you like it]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=29501&hl=winamp could foobar2000 replace winamp?]<br />
<br />
== Is the sound really better with foobar? ==<br />
As the author of foobar says himself, foobar doesn't have a better sound than the other players like Winamp. From a theoretical point of view, the sound from foobar2000 is not different from the sound from other players since a player can't improve the sound drastically (though it might be altered if not correctly set). Your hardware is much more important (audio card, speakers, headphones, even cables), as is the audio source (Audio CD? Lossless codec? Lossy codec?). The software part is only secondary.<br />
<br />
Even if sound modifiers (DSPs) are used, they only widen the gap between the source and the result, which might actually degrade the sound quality.<br />
<br />
== I won't leave iTunes, it manages my iPod perfectly! ==<br />
Maybe this will change your mind: <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=19156 foo_pod]</tt>. There is [http://www.tinkafoo.com/log/foo_pod.html a good manual for it] too.<br />
<br />
[[Category: foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:FAQFoobar2000:FAQ2006-04-19T22:42:04Z<p>Foosion: /* How can I send my files from Windows Explorer into a specific playlist, so as not to erase my current playlist? */</p>
<hr />
<div>A rather extensive FAQ is available at the [http://shsc.info/foobar2000 SH/SC Wiki].<br />
<br />
= General =<br />
== Which version of foobar should I download? ==<br />
It depends on you. If you're a serious music listener who's interested in having total control over every part of its playback, go ahead and download the special version. If you just need a music player, download the Lite version.<br />
<br />
== Is foobar2000 still under active development? ==<br />
<br />
Yes. Please see the forum and the foobar2000 homepage for the latest version and news about upcoming versions.<br />
<br />
= Playback =<br />
== There are multiple output methods available: DirectSound, waveOut and Kernel Streaming. Which one should I use? ==<br />
A: The default setting (waveOut) is recommended; it should be safe to use anywhere. DirectSound result in better performance (less CPU overhead)—especially under Windows 2000, Windows XP or newer—but there shouldn't be any audible difference between the two. In certain rare cases, Kernel Streaming may produce better results than DirectSound/waveOut (if for some reason you need data sent through digital out to be bit-identical to source stream); however, bit-identical results with DirectSound have been reported on soundcards capable of mixing multiple streams in hardware (with hardware mixing enabled in DirectSound settings).<br />
<br />
Please note that Kernel Streaming is an experimental feature with known issues, and using it is ''not'' recommended unless you have a clear need to do so. Most of perceived "sound quality differences" between DirectSound and Kernel Streaming are related to the fact that Kernel Streaming usually bypasses the Windows volume control. In addition, Kernel Streaming only works on Windows 2000, Windows XP or newer.<br />
<br />
== How can I send my files from Windows Explorer into a specific playlist, so as not to erase my current playlist? ==<br />
Preferences → General → Always send to playlist <tt>(playlist name)</tt> (0.9)<br />
Preferences → Core → Always send to playlist <tt>(playlist name)</tt> (0.8x)<br />
<br />
== How do I create a temporary playlist? ==<br />
Use <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=12124 foo_temple]</tt>.<br />
<br />
= Look & Feel =<br />
== How can I get G-force in a panel or a tab? ==<br />
To get [http://soundspectrum.com/ G-force] without any edges, or in a tab/panel, follow these steps:<br />
<br />
# Open the <tt>Documents and Settings\&lt;your Windows username&gt;\G-force</tt> folder<br />
# Open the <tt>Preferences (foobar2000).txt</tt> file and change the line <tt>NoBo=0</tt> to <tt>NoBo=1</tt><br />
<br />
You won't be able to resize the window, so set the position and size of the window carefully. To put it as a tab, just create a fake tab called G-Force and place the window (the window without borders will take the place of the window with borders included before the change).<br />
<br />
== I just saw a great looking foobar2000 window, but I don't know how to get mine looking the same way! Is there no hope for me? ==<br />
Of course there is! Simply take a look at these links:<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery]<br />
* [http://foobar.nub4life.net/columns/ Columns UI settings database]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31509&hl=foobar+gallery Navigator-Suite]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=33450 Azrael]<br />
* [http://foobar.nub4life.net/columns/pafiledb.php?action=file&id=39 OLiGhT]<br />
* [http://pelit.koillismaa.fi/fb2k/index.php foobar2000 formatting]<br />
<br />
== Is there a way to make MSN Messenger's "Now Playing" show the song I'm listening to with foobar? ==<br />
Yes, through plugins:<br />
<br />
* <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33067 AMIP]</tt><br />
* <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=31609 foo_msn]</tt><br />
<br />
== I have seen some people using something which pops up to display the song being listened to. Where can I find it? ==<br />
It's called <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33236&hl=foo_pretty+pop-up foo_prettypop]</tt>. Note that it requires the .NET Framework to work.<br />
<br />
= Columns UI =<br />
== How can I get tabbed panels? ==<br />
Use [http://www.hydrogenaudio.org/forums/index.php?showtopic=28869&hl=uie+tabs uie tabs].<br />
<br />
== Where are the options for changing the playback buttons? ==<br />
Preferences → Display → UI columns → Other → Use custom buttons<br />
<br />
== How can I display the album art and cover above my playlist? ==<br />
To set the panels above your playlist, just use <tt>list all toolbars</tt>, then add the panels/toolbars/visualizations that you want to use. Organize them as you want them to be displayed. And finally, use the 'minimum height' values of the corresponding panels. As it is not a common way to use the toolbar, you may experience some unexpected behaviour. Keep in mind that it may create some display problems. Musicmusic may fix this into the next version of Columns UI.<br />
<br />
= Database and Tagging =<br />
== Foobar always takes between 5 minutes and several hours to open all the files in the same playlist. Is there a way to reduce this delay? ==<br />
Sure. Enable the database (Preferences → Core → Database). You will be able to add thousands of files in only 30-40 seconds.<br />
<br />
Alternatively, if you don't want to activate the database, just save your playlists in the <tt>fpl</tt> format.<br />
<br />
== I updated my tags, but foobar still shows the old tags. How can I fix this? ==<br />
Foobar only adds the info to the database (if it is enabled), so you have to update the info in it: select the file(s), right click on any of them, go to "Database", then click on "Reload info from files".<br />
<br />
= Troubleshooting =<br />
== I get an error message saying "referenced file doesn't exist" on the console. What does that mean, and how can it be fixed? ==<br />
This error is caused by an outdated/broken CUE sheet or APL link. You need to find and repair or remove it. After that, run "Remove dead entries" from the Database page in the Preferences dialog.<br />
<br />
== The Album List shows dead entries after restarting, even though I used "Remove dead entries" earlier. Why is that? ==<br />
The files are probably still referenced in one of your playlists or in the history (if you are using an old version of <tt>foo_history</tt>). Use Playlist → Remove dead entries from the main menu on all your playlists, or remove the dead entries manually. As long as the files are on a playlist, they will be in the database and thus will show up in album list.<br />
<br />
== Menu items for some plugins don't show up. I reinstalled but I still don't see them, even though the plugin is shown as a Loaded Library. ==<br />
If you delete a menu item for a plugin, and then re-add the plugin, it won't re-add the menu items. The solution is to open the Preferences dialog, go to Core → Main menu items, and add the items manually.<br />
<br />
== An MP3 does not play properly (there is no sound) in fb2k whereas it plays perfectly in other players. What is the problem? ==<br />
You need to disable <tt>Use peak info to scale down tracks that still clip after applying replaygain</tt> in the Preferences dialog, in the ReplayGain section of the Playback page.<br />
<br />
== I use the volume control toolbar but it doesn't work. What's the problem? ==<br />
You may be using Kernel Streaming or ASIO. These two output methods are not compatible with the volume control toolbar.<br />
<br />
== There is always a long delay before changes to the DSPs take effect. Can I reduce this? ==<br />
Try reducing the output buffer length from Preferences → Playback → Output → (your selected output method). However, do not put it at the minimum length. 300ms should be enough (more if you are using several DSPs).<br />
<br />
= foobar and other players =<br />
== How can I publish my playlist as HTML, like in Winamp? ==<br />
Use <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33795 foo_playlist_output]</tt>. There is also a customizable version available (needs <tt>foo_playlist_output</tt>): <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33895 foo_playlist_output_custom]</tt>.<br />
<br />
== Is foobar really better than Winamp? ==<br />
There is no set answer. According to public opinion, foobar is great for people wanting a minimal player, as well as the opposite: people needing advanced features. However, the medium users are lost between the profusion of settings and components to find. Some relevant links:<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=20322 Tell us why have you chosen foobar2000, or why don't you like it]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=29501&hl=winamp could foobar2000 replace winamp?]<br />
<br />
== Is the sound really better with foobar? ==<br />
As the author of foobar says himself, foobar doesn't have a better sound than the other players like Winamp. From a theoretical point of view, the sound from foobar2000 is not different from the sound from other players since a player can't improve the sound drastically (though it might be altered if not correctly set). Your hardware is much more important (audio card, speakers, headphones, even cables), as is the audio source (Audio CD? Lossless codec? Lossy codec?). The software part is only secondary.<br />
<br />
Even if sound modifiers (DSPs) are used, they only widen the gap between the source and the result, which might actually degrade the sound quality.<br />
<br />
== I won't leave iTunes, it manages my iPod perfectly! ==<br />
Maybe this will change your mind: <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=19156 foo_pod]</tt>. There is [http://www.tinkafoo.com/log/foo_pod.html a good manual for it] too.<br />
<br />
[[Category: foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:FAQFoobar2000:FAQ2006-04-19T22:40:49Z<p>Foosion: /* Is foobar still under active development? */ Removed information that nobody updates anyway</p>
<hr />
<div>A rather extensive FAQ is available at the [http://shsc.info/foobar2000 SH/SC Wiki].<br />
<br />
= General =<br />
== Which version of foobar should I download? ==<br />
It depends on you. If you're a serious music listener who's interested in having total control over every part of its playback, go ahead and download the special version. If you just need a music player, download the Lite version.<br />
<br />
== Is foobar2000 still under active development? ==<br />
<br />
Yes. Please see the forum and the foobar2000 homepage for the latest version and news about upcoming versions.<br />
<br />
= Playback =<br />
== There are multiple output methods available: DirectSound, waveOut and Kernel Streaming. Which one should I use? ==<br />
A: The default setting (waveOut) is recommended; it should be safe to use anywhere. DirectSound result in better performance (less CPU overhead)—especially under Windows 2000, Windows XP or newer—but there shouldn't be any audible difference between the two. In certain rare cases, Kernel Streaming may produce better results than DirectSound/waveOut (if for some reason you need data sent through digital out to be bit-identical to source stream); however, bit-identical results with DirectSound have been reported on soundcards capable of mixing multiple streams in hardware (with hardware mixing enabled in DirectSound settings).<br />
<br />
Please note that Kernel Streaming is an experimental feature with known issues, and using it is ''not'' recommended unless you have a clear need to do so. Most of perceived "sound quality differences" between DirectSound and Kernel Streaming are related to the fact that Kernel Streaming usually bypasses the Windows volume control. In addition, Kernel Streaming only works on Windows 2000, Windows XP or newer.<br />
<br />
== How can I send my files from Windows Explorer into a specific playlist, so as not to erase my current playlist? ==<br />
Preferences → Core → Always send to playlist <tt>(playlist name)</tt><br />
<br />
== How do I create a temporary playlist? ==<br />
Use <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=12124 foo_temple]</tt>.<br />
<br />
= Look & Feel =<br />
== How can I get G-force in a panel or a tab? ==<br />
To get [http://soundspectrum.com/ G-force] without any edges, or in a tab/panel, follow these steps:<br />
<br />
# Open the <tt>Documents and Settings\&lt;your Windows username&gt;\G-force</tt> folder<br />
# Open the <tt>Preferences (foobar2000).txt</tt> file and change the line <tt>NoBo=0</tt> to <tt>NoBo=1</tt><br />
<br />
You won't be able to resize the window, so set the position and size of the window carefully. To put it as a tab, just create a fake tab called G-Force and place the window (the window without borders will take the place of the window with borders included before the change).<br />
<br />
== I just saw a great looking foobar2000 window, but I don't know how to get mine looking the same way! Is there no hope for me? ==<br />
Of course there is! Simply take a look at these links:<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=30988 Foobar Gallery]<br />
* [http://foobar.nub4life.net/columns/ Columns UI settings database]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=31509&hl=foobar+gallery Navigator-Suite]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=33450 Azrael]<br />
* [http://foobar.nub4life.net/columns/pafiledb.php?action=file&id=39 OLiGhT]<br />
* [http://pelit.koillismaa.fi/fb2k/index.php foobar2000 formatting]<br />
<br />
== Is there a way to make MSN Messenger's "Now Playing" show the song I'm listening to with foobar? ==<br />
Yes, through plugins:<br />
<br />
* <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33067 AMIP]</tt><br />
* <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=31609 foo_msn]</tt><br />
<br />
== I have seen some people using something which pops up to display the song being listened to. Where can I find it? ==<br />
It's called <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33236&hl=foo_pretty+pop-up foo_prettypop]</tt>. Note that it requires the .NET Framework to work.<br />
<br />
= Columns UI =<br />
== How can I get tabbed panels? ==<br />
Use [http://www.hydrogenaudio.org/forums/index.php?showtopic=28869&hl=uie+tabs uie tabs].<br />
<br />
== Where are the options for changing the playback buttons? ==<br />
Preferences → Display → UI columns → Other → Use custom buttons<br />
<br />
== How can I display the album art and cover above my playlist? ==<br />
To set the panels above your playlist, just use <tt>list all toolbars</tt>, then add the panels/toolbars/visualizations that you want to use. Organize them as you want them to be displayed. And finally, use the 'minimum height' values of the corresponding panels. As it is not a common way to use the toolbar, you may experience some unexpected behaviour. Keep in mind that it may create some display problems. Musicmusic may fix this into the next version of Columns UI.<br />
<br />
= Database and Tagging =<br />
== Foobar always takes between 5 minutes and several hours to open all the files in the same playlist. Is there a way to reduce this delay? ==<br />
Sure. Enable the database (Preferences → Core → Database). You will be able to add thousands of files in only 30-40 seconds.<br />
<br />
Alternatively, if you don't want to activate the database, just save your playlists in the <tt>fpl</tt> format.<br />
<br />
== I updated my tags, but foobar still shows the old tags. How can I fix this? ==<br />
Foobar only adds the info to the database (if it is enabled), so you have to update the info in it: select the file(s), right click on any of them, go to "Database", then click on "Reload info from files".<br />
<br />
= Troubleshooting =<br />
== I get an error message saying "referenced file doesn't exist" on the console. What does that mean, and how can it be fixed? ==<br />
This error is caused by an outdated/broken CUE sheet or APL link. You need to find and repair or remove it. After that, run "Remove dead entries" from the Database page in the Preferences dialog.<br />
<br />
== The Album List shows dead entries after restarting, even though I used "Remove dead entries" earlier. Why is that? ==<br />
The files are probably still referenced in one of your playlists or in the history (if you are using an old version of <tt>foo_history</tt>). Use Playlist → Remove dead entries from the main menu on all your playlists, or remove the dead entries manually. As long as the files are on a playlist, they will be in the database and thus will show up in album list.<br />
<br />
== Menu items for some plugins don't show up. I reinstalled but I still don't see them, even though the plugin is shown as a Loaded Library. ==<br />
If you delete a menu item for a plugin, and then re-add the plugin, it won't re-add the menu items. The solution is to open the Preferences dialog, go to Core → Main menu items, and add the items manually.<br />
<br />
== An MP3 does not play properly (there is no sound) in fb2k whereas it plays perfectly in other players. What is the problem? ==<br />
You need to disable <tt>Use peak info to scale down tracks that still clip after applying replaygain</tt> in the Preferences dialog, in the ReplayGain section of the Playback page.<br />
<br />
== I use the volume control toolbar but it doesn't work. What's the problem? ==<br />
You may be using Kernel Streaming or ASIO. These two output methods are not compatible with the volume control toolbar.<br />
<br />
== There is always a long delay before changes to the DSPs take effect. Can I reduce this? ==<br />
Try reducing the output buffer length from Preferences → Playback → Output → (your selected output method). However, do not put it at the minimum length. 300ms should be enough (more if you are using several DSPs).<br />
<br />
= foobar and other players =<br />
== How can I publish my playlist as HTML, like in Winamp? ==<br />
Use <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33795 foo_playlist_output]</tt>. There is also a customizable version available (needs <tt>foo_playlist_output</tt>): <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=33895 foo_playlist_output_custom]</tt>.<br />
<br />
== Is foobar really better than Winamp? ==<br />
There is no set answer. According to public opinion, foobar is great for people wanting a minimal player, as well as the opposite: people needing advanced features. However, the medium users are lost between the profusion of settings and components to find. Some relevant links:<br />
<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=20322 Tell us why have you chosen foobar2000, or why don't you like it]<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=29501&hl=winamp could foobar2000 replace winamp?]<br />
<br />
== Is the sound really better with foobar? ==<br />
As the author of foobar says himself, foobar doesn't have a better sound than the other players like Winamp. From a theoretical point of view, the sound from foobar2000 is not different from the sound from other players since a player can't improve the sound drastically (though it might be altered if not correctly set). Your hardware is much more important (audio card, speakers, headphones, even cables), as is the audio source (Audio CD? Lossless codec? Lossy codec?). The software part is only secondary.<br />
<br />
Even if sound modifiers (DSPs) are used, they only widen the gap between the source and the result, which might actually degrade the sound quality.<br />
<br />
== I won't leave iTunes, it manages my iPod perfectly! ==<br />
Maybe this will change your mind: <tt>[http://www.hydrogenaudio.org/forums/index.php?showtopic=19156 foo_pod]</tt>. There is [http://www.tinkafoo.com/log/foo_pod.html a good manual for it] too.<br />
<br />
[[Category: foobar2000]]</div>Foosionhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000:Title_Formatting_ReferenceFoobar2000:Title Formatting Reference2006-04-19T22:37:36Z<p>Foosion: added related articles section</p>
<hr />
<div>= Field remappings =<br />
<br />
Some of the fields accessible through ''%name%'' are remapped to other values to make writing titleformat scripts more convenient.<br />
<br />
== Metadata ==<br />
<br />
=== %album artist% ===<br />
Defined as ''$if3($meta(album artist),$meta(artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %album% ===<br />
Defined as ''$if3($meta(album),$meta(venue))''.<br />
<br />
=== %artist% ===<br />
Defined as ''$if3($meta(artist),$meta(album artist),$meta(composer),$meta(performer))''.<br />
<br />
=== %disc% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %discnumber% remapping.<br />
<br />
=== %discnumber% ===<br />
Returns the discnumber. The discnumber is taken from the discnumber tag; if that does not exist, it is taken from the disc tag. If neither exist, the field is undefined.<br />
<br />
This is equivalent to the %disc% remapping.<br />
<br />
=== %track artist% ===<br />
Defined as ''$meta(artist)'', if ''$meta(album artist)'' is different than ''$meta(artist)'', otherwise this field is empty.<br />
<br />
=== %title% ===<br />
Defined as ''$if2($meta(title),%_filename%)''. Returns the ''title'' tag if available, otherwise it returns the filename excluding the extension.<br />
<br />
=== %track% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %tracknumber% remapping.<br />
<br />
=== %tracknumber% ===<br />
Returns the tracknumber padded to two digits from the left with zeroes. The tracknumber is taken from the tracknumber tag; if that does not exist, it is taken from the track tag. If neither exist, this field is undefined.<br />
<br />
This is equivalent to the %track% remapping.<br />
<br />
== Technical information ==<br />
<br />
=== %bitrate% ===<br />
Defined as ''$if2($info(bitrate_dynamic),$info(bitrate))''. Returns the current bitrate, if available, otherwise it returns the average bitrate. If neither is available, nothing is returned.<br />
<br />
=== %channels% ===<br />
Defined as ''$channels()''. Returns the number of channels in text form; returns "mono" and "stereo" instead of "1" and "2".<br />
<br />
=== %filesize% ===<br />
Defined as ''%_filesize%''. Returns the filesize in bytes.<br />
<br />
=== %samplerate% ===<br />
Defined as ''$info(samplerate)''. Returns the samplerate in Hz.<br />
<br />
=== %codec% ===<br />
Defined as ''$codec()''.<br />
<br />
== Special fields ==<br />
<br />
=== %playlist_number% ===<br />
Defined as ''$num(%_playlist_number%,$len(%_playlist_total%))''. Returns the position of the track as index into the playlist. The first track has index 1. The index is padded from the left with zeroes to the same number of digits as the last track.<br />
<br />
= Control flow =<br />
<br />
The functions in this section can be used to conditionally execute statements.<br />
<br />
=== [...] (conditional section) ===<br />
<br />
Evaluates the expression between ''['' and '']''. If it has the truth value ''true'', its string value and the truth value ''true'' are returned. Otherwise an empty string and ''false'' are returned.<br />
<br />
Example: ''[%artist%]'' returns the value of the artist tag, if it exists. Otherwise it returns nothing, when ''artist'' would return "?".<br />
<br />
=== $if(cond,then) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, ''false'' is returned.<br />
<br />
=== $if(cond,then,else) ===<br />
<br />
If ''cond'' evaluates to ''true'', the ''then'' part is evaluated and its value returned. Otherwise, the ''else'' part is evaluated and its value returned.<br />
<br />
=== $if2(a,else) ===<br />
<br />
Like ''$if(a,a,else)'' except that ''a'' is only evaluated once.<br />
<br />
<br />
=== $if3(a1,a2,...,aN,else) ===<br />
<br />
Evaluates arguments ''a1'' ... ''aN'', until one is found that evaluates to ''true''. If that happens, its value is returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $ifgreater(n1,n2,then,else) ===<br />
<br />
Compares the integer numbers ''n1'' and ''n2'', if ''n1'' is greater than ''n2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $iflonger(s1,s2,then,else) ===<br />
<br />
Compares the length of the strings ''s1'' and ''s2'', if ''s1'' is longer than ''s2'', the ''then'' part is evaluated and its value returned. Otherwise the ''else'' part is evaluated and its value returned.<br />
<br />
=== $select(n,a1,...,aN) ===<br />
<br />
If the value of ''n'' is between 1 and N, ''an'' is evaluated and its value returned. Otherwise ''false'' is returned.<br />
<br />
= Arithmetic functions =<br />
<br />
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.<br />
<br />
Example: "c3po" -> 0, " -12" -> -12, but "- 12" -> 0<br />
<br />
=== $add(a,b) ===<br />
<br />
Adds ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$add(a,b,...)'' is the same as ''$add($add(a,b),...)''.<br />
<br />
=== $div(a,b) ===<br />
<br />
Divides ''a'' through ''b''. If ''b'' evaluates to zero, it returns ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$div(a,b,...)'' is the same as ''$div($div(a,b),...)''.<br />
<br />
=== $greater(a,b) ===<br />
<br />
Returns true, if ''a'' is greater than ''b'', otherwise false.<br />
<br />
=== $max(a,b) ===<br />
<br />
Returns the maximum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$max(a,b,...)'' is the same as ''$max($max(a,b),...)''.<br />
<br />
=== $min(a,b) ===<br />
<br />
Returns the minimum of ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$min(a,b,...)'' is the same as ''$min($min(a,b),...)''.<br />
<br />
=== $mod(a,b) ===<br />
<br />
Computes the remainder of dividing ''a'' through ''b''. The result has the same sign as ''a''. If ''b'' evaluates to zero, the result is ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mod(a,b,...)'' is the same as ''$mod($mod(a,b),...)''.<br />
<br />
=== $mul(a,b) ===<br />
<br />
Multiplies ''a'' and ''b''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$mul(a,b,...)'' is the same as ''$mul($mul(a,b),...)''.<br />
<br />
=== $muldiv(a,b,c) ===<br />
<br />
Multiplies ''a'' and ''b'', then divides by ''c''. The result is rounded to the nearest integer.<br />
<br />
=== $rand() ===<br />
<br />
Generates a random number in the range from 0 to 2<sup>32</sup>-1.<br />
<br />
=== $sub(a,b) ===<br />
<br />
Subtracts ''b'' from ''a''.<br />
<br />
Can be used with an arbitrary number of arguments. ''$sub(a,b,...)'' is the same as ''$sub($sub(a,b),...)''.<br />
<br />
= Boolean functions =<br />
<br />
The functions in this section can be used to work with truth values (''true'' and ''false''), 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 ''$if'' and related functions.<br />
<br />
=== $and(...) ===<br />
<br />
Logical And of an arbitrary number of arguments. Returns ''true'', if and only if all arguments evaluate to ''true''.<br />
<br />
Special case: ''$and(x,y)'' is ''true'', if both ''x'' and ''y'' are ''true''. Otherwise it is ''false''.<br />
<br />
=== $or(...) ===<br />
<br />
Logical Or of an arbitrary number of arguments. Returns ''true'', if at least one argument evaluates to ''true''.<br />
<br />
Special case: ''$or(x,y)'' is ''true'', if ''x'' or ''y'' is ''true'', or if both are ''true''. Otherwise it is ''false''.<br />
<br />
=== $not(x) ===<br />
<br />
Logical Not. Returns ''false'', if ''x'' is ''true'', otherwise it returns ''true''.<br />
<br />
=== $xor(...) ===<br />
<br />
Logical Exclusive-or of an arbitrary number of arguments. Returns ''true'', if an odd number of arguments evaluate to ''true''.<br />
<br />
Special case: ''$xor(x,y)'' is ''true'', if one of ''x'' and ''y'' is ''true'', but not both. Otherwise it is ''false''.<br />
<br />
= Color functions =<br />
<br />
=== $blend(color1,color2,part,total) ===<br />
<br />
Returns a color that is a blend between ''color1'' and ''color2''. If ''part'' is smaller than or equal to zero, ''color1'' is returned. If ''part'' is greater than or equal to ''total'', ''color2'' is returned. Otherwise a blended color is returned that is ''part'' parts ''color1'' and ''total''-''part'' parts ''color2''. The blending is performed in the RGB color space.<br />
<br />
=== $hsl() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $hsl(h,s,l) ===<br />
<br />
Sets the color for text in the HSL color space. ''h'', ''s'' and ''l'' are the hue, saturation, and lightness of the color for unselected text. The color for selected text is set to the inverse color.<br />
The ranges of ''h'', ''s'', and ''l'' are from 0 to 240; the function is designed to interpret those values in the same way as the standard Windows color dialog.<br />
<br />
=== $hsl(h1,s1,l1,h2,s2,l2) ===<br />
<br />
Sets the color for text in the HSL color space. ''h1'', ''s1'' and ''l1'' are the hue, saturation, and lightness of the color for unselected text. ''h2'', ''s2'' and ''l2'' are the hue, saturation, and lightness of the color for selected text.<br />
<br />
=== $rgb() ===<br />
<br />
Resets the text color to the default color.<br />
<br />
=== $rgb(r,g,b) ===<br />
<br />
Sets the color for text. ''r'', ''g'' and ''b'' are the red, green and blue component of the color for unselected text. The color for selected text is set to the inverse color.<br />
<br />
=== $rgb(r1,g1,b1,r2,g2,b2) ===<br />
<br />
Sets the color for text. ''r1'', ''g1'' and ''b1'' are the red, green and blue component of the color for unselected text. ''r2'', ''g2'' and ''b2'' are the red, green and blue component of the color for selected text.<br />
<br />
=== $transition(string,color1,color2) ===<br />
<br />
Inserts color codes into ''string'', so that the first character has ''color1'', the last character has ''color2'', 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 ''$transition''.<br />
<br />
= Now playing info =<br />
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.<br />
<br />
== Special fields ==<br />
<br />
=== %_time_elapsed% ===<br />
Returns elapsed time.<br />
<br />
=== %_time_remaining% ===<br />
Returns remaining time until track ends.<br />
<br />
=== %_time_total% ===<br />
Returns total length of track.<br />
<br />
=== %_time_elapsed_seconds% ===<br />
Returns elapsed time in seconds.<br />
<br />
=== %_time_remaining_seconds% ===<br />
Returns remaining time in seconds.<br />
<br />
=== %_time_total_seconds% ===<br />
Returns total track length in seconds.<br />
<br />
=== %_ispaused% ===<br />
Returns "1" if playback is paused and empty string otherwise.<br />
<br />
= Playlist info =<br />
The following functions and fields are usable for playlist scripts.<br />
<br />
== Special fields ==<br />
<br />
=== %isplaying% ===<br />
<br />
Returns "1" if file is currently playing and empty string otherwise.<br />
<br />
The old version <code>%_isplaying%</code> still works.<br />
<br />
=== %_ispaused% ===<br />
<br />
Returns "1" if playback is paused, empty string otherwise.<br />
<br />
=== %_playlist_number% ===<br />
<br />
Returns playlist index of specified item. The first item is at index 1.<br />
<br />
Also see [[Foobar2000:Titleformat Reference#%playlist_number%|%playlist_number%]].<br />
<br />
=== %_playlist_total% ===<br />
<br />
Returns number of items in the playlist.<br />
<br />
=== %playlist_name% ===<br />
<br />
Returns the name of the playlist containing the specified item.<br />
<br />
The old version <code>%_playlist_name%</code> still works.<br />
<br />
= String functions =<br />
<br />
The functions in this section can be used to manipulate character strings.<br />
<br />
=== $abbr(x) ===<br />
<br />
Returns abbreviation of ''x''.<br />
<br />
=== $abbr(x,len) ===<br />
<br />
Returns abbreviation of ''x'', if ''x'' is longer than ''len'' characters, otherwise returns ''x''.<br />
<br />
=== $ansi(x) ===<br />
<br />
Converts ''x'' 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.<br />
<br />
=== $ascii(x) ===<br />
<br />
Converts ''x'' to ASCII. Any characters that are not present in ASCII will be removed / replaced.<br />
<br />
=== $caps(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and all other letters to lowercase.<br />
<br />
=== $caps2(x) ===<br />
<br />
Converts first letter in every word of x to uppercase, and leaves all other letters as they are.<br />
<br />
=== $char(x) ===<br />
<br />
Inserts Unicode character with code ''x''.<br />
<br />
=== $crc32(a) ===<br />
<br />
Computes the CRC32 of the string ''a'' as a number. Intended for use in coloring scripts.<br />
<br />
Example: $rgb($mod($crc32(%album%),256),128,128)<br />
<br />
=== $crlf() ===<br />
<br />
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 ("systray") icon.<br />
<br />
=== $cut(a,len) ===<br />
<br />
Returns first ''len'' characters on the left of ''a''.<br />
<br />
=== $directory(x) ===<br />
<br />
Extracts directory name from the file path ''x''.<br />
<br />
=== $directory(x,n) ===<br />
<br />
Extracts directory name from the file path ''x''; goes up by ''n'' levels.<br />
<br />
=== $ext(x) ===<br />
<br />
Extracts file extension from ''x'' which must be a file name or path.<br />
<br />
=== $filename(x) ===<br />
<br />
Extracts file name from full path.<br />
<br />
=== $fix_eol(x) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by " (...)". Otherwise ''x'' is returned unaltered.<br />
<br />
=== $fix_eol(x,indicator) ===<br />
<br />
If ''x'' contains an end-of-line marker (CR-LF), the end-of-line marker and all text to the right of it is replaced by ''indicator''. Otherwise ''x'' is returned unaltered.<br />
<br />
=== $hex(n) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation.<br />
<br />
=== $hex(n,len) ===<br />
<br />
Formats the integer number ''n'' in hexadecimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $insert(a,b,n) ===<br />
<br />
Inserts ''b'' into ''a'' after ''n'' characters.<br />
<br />
=== $left(a,len) ===<br />
<br />
Returns the first ''len'' characters from the left of ''a''.<br />
<br />
=== $len(a) ===<br />
<br />
Returns length of string ''a'' in characters.<br />
<br />
=== $len2(a) ===<br />
<br />
Returns length of string x in characters, respecting double-width character rules (double-width characters will be counted as two).<br />
<br />
=== $longer(a,b) ===<br />
<br />
Returns ''true'', if string ''a'' is longer than string ''b'', false otherwise.<br />
<br />
=== $lower(a) ===<br />
<br />
Converts ''a'' to lowercase.<br />
<br />
=== $longest(a,...) ===<br />
<br />
Returns the longest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $num(n,len) ===<br />
<br />
Formats the integer number ''n'' in decimal notation with ''len'' digits. Pads with zeros from the left if necessary.<br />
<br />
=== $pad(x,len) ===<br />
<br />
Pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $pad_right(x,y) ===<br />
<br />
Pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $pad(x,len,char) ===<br />
<br />
Pads ''x'' from the left with ''char'' to ''len'' characters.<br />
<br />
=== $pad_right(x,len,char) ===<br />
<br />
Pads ''x'' from the right with ''char'' to ''len'' characters.<br />
<br />
=== $padcut(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the left with spaces to ''len'' characters.<br />
<br />
=== $padcut_right(x,len) ===<br />
<br />
Returns first ''len'' characters from the left of ''x'', if ''x'' is longer than ''len'' characters. Otherwise pads ''x'' from the right with spaces to ''len'' characters.<br />
<br />
=== $progress(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with.<br />
<br />
Example:''$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=')'' produces "====#===============", the # character is moving with playback position.<br />
<br />
=== $progress2(pos,range,len,a,b) ===<br />
<br />
Creates a progress bar: ''pos'' contains position, ''range'' contains range, ''len'' progress bar length in characters, ''a'' and ''b'' are characters to build progress bar with. Produces different appearance than ''$progress''.<br />
<br />
=== $repeat(a,n) ===<br />
<br />
Returns ''n'' copies of ''a''. Note that ''a'' is evaluated once before its value is used, so ''$repeat'' cannot be used for loops.<br />
<br />
=== $replace(a,b,c) ===<br />
<br />
Replaces all occurrences of string ''b'' in string ''a'' with string ''c''.<br />
<br />
Can also be used with an arbitrary number of arguments. Note that ''$replace(a,b1,c1,b2,c2)'' is generally not the same as ''$replace($replace(a,b1,c1),b2,c2)''.<br />
<br />
Example: ''$replace(ab,a,b,b,c)'' -> "bc", ''$replace($replace(ab,a,b),b,c)'' -> "cc"<br />
<br />
=== $right(a,len) ===<br />
<br />
Returns the first ''len'' characters from the right of ''a''.<br />
<br />
=== $roman(n) ===<br />
<br />
Formats the integer number ''n'' in roman notation.<br />
<br />
=== $rot13() ===<br />
<br />
Performs [http://en.wikipedia.org/wiki/ROT13 ROT13] transformation to given string.<br />
<br />
Example: ''$rot13('foobar2000')'' -> "sbbone2000".<br />
<br />
=== $shortest ===<br />
<br />
Returns the shortest of its arguments. Can be used with an arbitrary number of strings.<br />
<br />
=== $strchr(s,c) ===<br />
<br />
Finds first occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strchr(abca,a)'' -> 1<br />
<br />
=== $strrchr(s,c) ===<br />
<br />
Finds last occurence of character ''c'' in string ''s''.<br />
<br />
Example: ''$strrchr(abca,a)'' -> 4<br />
<br />
=== $strstr(s1,s2) ===<br />
<br />
Finds first occurence of string ''s2'' in string ''s1''.<br />
<br />
=== $strcmp(s1,s2) ===<br />
<br />
Performs a case-sensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $stricmp(s1,s2) ===<br />
<br />
Performs a case-insensitive comparison of the strings ''s1'' and ''s2''.<br />
<br />
=== $substr(s,m,n) ===<br />
<br />
Returns substring of string ''s'', starting from ''m''-th character and ending at ''n''-th character.<br />
<br />
=== $trim(s) ===<br />
<br />
Removes leading and trailing spaces from string ''s''.<br />
<br />
=== $tab() ===<br />
<br />
Inserts one tabulator character.<br />
<br />
=== $tab(n) ===<br />
<br />
Inserts ''n'' tabulator characters.<br />
<br />
=== $upper(s) ===<br />
<br />
Converts string ''s'' to uppercase.<br />
<br />
= Track info =<br />
<br />
The functions and fields in this section can be used to access information about tracks.<br />
<br />
== Metadata ==<br />
<br />
=== $meta(name) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ", " as separator.<br />
<br />
Example: ''$meta(artist)'' -> "He, She, It"<br />
<br />
=== $meta(name,n) ===<br />
Returns value of ''n''-th tag called ''name''.<br />
<br />
Example: ''$meta(artist,2)'' -> "She"<br />
<br />
=== $meta_sep(name,sep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator.<br />
<br />
Example: ''$meta_sep(artist,' + ')'' -> "He + She + It"<br />
<br />
=== $meta_sep(name,sep,lastsep) ===<br />
Returns value of tag called ''name''. If multiple values of that tag exist, they are concatenated with ''sep'' as separator between all but the last two values which are concatenated with ''lastsep''.<br />
<br />
Example: ''$metasep(artist,', ',', and ')'' -> "He, She, and It"<br />
<br />
=== $meta_test(...) === <br />
Returns ''true'', if all given tags exist.<br />
<br />
Example: ''$meta_test(artist,title)'' -> true<br />
<br />
=== $meta_num(name) ===<br />
Returns the number of values for the tag called ''name''.<br />
<br />
Example: ''$meta_num(artist)'' -> 3<br />
<br />
=== $tracknumber() ===<br />
Returns the tracknumber padded to 2 digits with zeroes.<br />
<br />
=== $tracknumber(n) ===<br />
Returns the tracknumber padded to ''n'' digits with zeros.<br />
<br />
== Technical information ==<br />
<br />
=== $info(name) ===<br />
Returns value of technical information field called ''name''.<br />
<br />
Example: ''$info(channels)'' -> 2<br />
<br />
=== $codec() ===<br />
Returns codec of track. If no codec field is present, it the uses file extension.<br />
<br />
Example: ''$codec()'' -> "WavPack"<br />
<br />
=== $channels() === <br />
Returns number of channels in text format.<br />
<br />
Example: ''$channels()'' -> "stereo"<br />
<br />
=== %__replaygain_album_gain% ===<br />
Returns ReplayGain album gain value. //Not available through// ''$info(replaygain_album_gain)''.<br />
<br />
=== %__replaygain_album_peak% ===<br />
Returns ReplayGain album peak value. //Not available through// ''$info(replaygain_album_peak)''.<br />
<br />
=== %__replaygain_track_gain% ===<br />
Returns ReplayGain track gain value. //Not available through// ''$info(replaygain_track_gain)''.<br />
<br />
=== %__replaygain_track_peak% ===<br />
Returns ReplayGain track peak value. //Not available through// ''$info(replaygain_track_peak)''.<br />
<br />
== Special fields ==<br />
<br />
=== $extra(name) ===<br />
Returns the value of the special field called ''name''. These fields can also be accessed as ''%_name%''; note the additional underscore. The following field names can be used:<br />
==== filename ====<br />
Returns the filename without directory and extension.<br />
==== filename_ext ====<br />
Returns the filename with extension, but without the directory.<br />
==== directoryname ====<br />
Returns the name of the parent directory only, not the complete path.<br />
==== path ====<br />
Returns the path.<br />
==== path_raw ====<br />
Returns the path as URL including the protocol scheme.<br />
==== subsong ====<br />
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.<br />
==== foobar2000_version ====<br />
Returns a string representing the version of foobar2000.<br />
==== length ====<br />
Returns the length of the track formatted as hours, minutes, and seconds.<br />
==== length_ex ====<br />
Returns the length of the track formatted as hours, minutes, seconds, and milliseconds.<br />
==== length_seconds ====<br />
Returns the length of the track in seconds.<br />
==== length_seconds_fp ====<br />
Returns the length of the track in seconds as floating point number.<br />
==== length_samples ====<br />
Returns the length of the track in samples.<br />
<br />
= Variable operations =<br />
<br />
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.<br />
<br />
=== $get(name) ===<br />
<br />
Returns the value that was last stored in the variable ''name'', if the variable was not defined (yet), it returns nothing. The truth value returned by ''$get'' indicates if the variable ''name'' was defined.<br />
<br />
=== $put(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns ''value'' unaltered.<br />
<br />
=== $puts(name,value) ===<br />
<br />
Stores ''value'' in the variable ''name'' and returns only the truth value of ''value''.<br />
<br />
= Component-provided fields and functions on tracks =<br />
<br />
This section lists components that provide additional fields and functions that are useable in the context of any track.<br />
<br />
== Playback statistics ==<br />
<br />
* [http://www.foobar2000.org/beta/components.html Playback statistics homepage]<br />
* [[Foobar2000:Titleformat Playback Statistics|Playback statistics titleformat reference]]<br />
<br />
= Component-specific fields and functions =<br />
<br />
This section lists components that provide additional fields and functions that are only useable in the context of the particular component.<br />
<br />
== Album list ==<br />
<br />
The official album list component supports creating multiple tree entries using special commands.<br />
<br />
* [http://www.foobar2000.org/ Album list homepage]<br />
* [[Foobar2000:Titleformat Album List|Album list titleformat reference]]<br />
<br />
== Columns UI ==<br />
<br />
* [http://music.morbo.org/wiki/columns_ui:manual Columns UI homepage]<br />
* [http://music.morbo.org/wiki/columns_ui:config:global_variables Global variables reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:colour_string Playlist colors reference]<br />
* [http://music.morbo.org/wiki/columns_ui:config:playlist_switcher_titleformatting Playlist switcher reference]<br />
<br />
= Related articles =<br />
<br />
* [[Foobar2000:Titleformat_Introduction|Introduction to titleformat scripts]]</div>Foosion