タグから曲の情報を抽出する方法について解説します。抽出した情報は、プレイリストやステータスバーの表示に用いることができます。
記述したクエリによる出力結果は、Preferencesの【Display → Default User Interface】の[Playback state display formatting]で確認するのが便利です。ここの[Window title]などの記述欄の直下にはPreviewがあり、クエリの結果を即時に確認できます。
またはウィンドウ右下には[Apply]ボタンがありますので、クエリを確定してこれをクリックすることでも結果を確認できます。
[cond][...] (conditional section) - Foobar2000:Title Formatting Reference
condがtrueならばそれが返され、さもなくば空文字が返されます。
たとえば[%artist%]
と指定したとき、%artist%が存在するならば%artist%が返され、存在せず"?"を返すならば、何も出力されません。
$if(cond,then)$if(cond,then) - Foobar2000:Title Formatting Reference
condがtrueならばthenが、さもなくばfalseが返されます。
$if(cond,then,else)
condがtrueならばthenが、さもなくばelseが返されます。
$if2(a,else)
aがtrueならばaが、さもなくばelseが返されます。elseに指定する条件がなければ、$if2(a,)のように最後はカンマだけを記述します。このカンマも省き$if2(a)とするのは誤りです。
$if3(a1,a2,...,aN,else)
a1からaNの間で、trueと評価される最初のその値が返されます。trueと評価されるものがなければ、elseが返されます。
比較の構文は整数に対してのみ有効です。文字列を比較するならば、文字列の関数の結果を用いて判定します。
$ifequal(n1,n2,then,else)$ifequal - Foobar2000:Title Formatting Reference - Hydrogenaudio Knowledgebase
n1がn2と等しいならばthenが、さもなくばelseが返されます。
$ifgreater(n1,n2,then,else)
n1がn2より大きければthenが、さもなくばelseが返されます。
$add(2,3) → 5
$add(2,3,4) → 9
$sub(5,3) → 2
$sub(5,3,3) → -1
$mul(2,3) → 6
$mul(2,3,2) → 12
$div(6,2) → 3
$div(6,2,2) → 1
小数点以下は切り捨てられます。
$div(5,4) → 1 (1.25)
$div(5,3) → 1 (1.67)
$div(-5,4) → -1 (-1.25)
$div(-5,3) → -1 (-1.67)
$mod(8,3) → 2
$if($greater(3,2),true,false) → true
$if($greater(2,3),true,false) → false
$min(3,5,2,8) → 2
$max(3,5,2,8) → 8
この関数は、ソートでのみ利用できます。
$rand()
文字列を処理する関数には、
$left(ABCDE,3) → ABC
$right(ABCDE,3) → CDE
$substr(ABCDE,2,4) → BCD
などがあります。このとき引数に指定する文字は、それが定数であってもクォーテーション ('や"") で囲んだりはしません。
$strcmp(s1,s2)$strcmp - Foobar2000:Title Formatting Reference - Hydrogenaudio Knowledgebase
s1とs2が等しければtrueが返されます。この関数では大文字/小文字が区別されます。これを区別せず比較するには、代わりに$stricmp()を用います。
これを制御フローに組み込むには、次のように$ifと組み合わせます。
$if($strcmp(s1,s2),then,else)
このときs1とs2が等しければthenが、さもなくばelseの結果が返されます。
$crlf()で改行文字を出力することで、出力の途中で改行させられます。また$char()では任意のUnicode文字を出力できるため、$char(10)
として「\n」を出力することでも改行させられます。$crlf() - Foobar2000:Title Formatting Reference - Hydrogenaudio Knowledgebase
$and(x,y)
$or(x,y)
$not(x)
$xor(x,y)
関数を使用することで、より柔軟にフィールドの情報を処理できます。
特定の文字列に続く文字列を、タイトルから抜き出す場合を考えます。たとえば「abc」以降を抜き出すとすると、その文字数は3であるから
$right(%title%,$sub($len(%title%),$add($strstr(%title%,abc),3)))
となります。特定の文字列を変数に保持して、より汎用的にすると
$puts(str,abc)$right(%title%,$sub($len(%title%),$add($strstr(%title%,$get(str)),$len($get(str)))))
のようになります。
Custom columnsで特別な構文を指定することでプレイリストやステータスバーの色を変更し、その視認性を上げられます。
Default UIではテキストの色のみを変更できます。また適応されるのはプレイリストとステータスバーのみで、Playlist SearchやMedia Library Searchの結果表示では反映されません。How can I apply color changes to my titleformatting results? - Foobar2000:FAQ - Hydrogenaudio Knowledgebase
このテキストの色は、preferencesの【Display → Default User Interface → Colors and Fonts】の[Colors]の設定が基準となり、以下の特殊文字により変更できます。
これらは3段階で調整でき、たとえばタイトルをHighlightの色で表示するには、
>>>%title%
とします。この設定は後続する文字にも影響を与えるため、特定の文字のみを着色したいならば、直後にBackgroundの色へと近づけます。
>>>%title%<<< %artist%
また、たとえば再生中の曲のタイトルの色を変更したいならば、制御フローで%isplaying%を指定して、
$if(%isplaying%,>>>)%title%
とします。
Columns UIを導入すれば、より柔軟に色を設定できます。これがインストールされていない環境で、
$rgb(255,0,128)
としても、"8000FF"のように出力されるだけです。
$hsl(h,s,l)
h、s、lはそれぞれ、0~240の数値とします。
$rgb(r,g,b)
r、g、bはそれぞれ、0~240の数値とします。