#navi(解説 (v0.9.5)/チュートリアル)

''目次''
#contents

*TitleFormatting とは? [#w7728911]
''[[TitleFormatting]]'' (通称: Tagz 、TF )とは、foobar2000 に使われるスクリプト言語のことです。
TF のことを少しでも知っておくだけでカスタマイズの幅がぐんと広がります。
例えばタイトルバーに表示される曲情報も TF で記述されていますし、Playlist view の表示方法を変えたりするのにも TF を使います。公式コンポーネントだけでも TF はあちこちに見られます。

ここでは基本的なスクリプトをいくつか紹介します。

実際に記述してみたい方は、Preferences の Display > Default Interface の下にある "Playback State Display Formatting(日本語: 再生状態表示の書式設定)"で試してみてください。
 
#imgr(./snaps/56.png);
 
**文字の表示 [#df471fee]
基本的に文字は書いたとおりに表示されます。
 このテキストはそのまま表示されます。 This text will be displayed as-is.
ただし、 ( ) [ ] $ % ' は普通に書いてもうまく表示されません。なぜなら、これらの文字は TF においてスクリプトを記述するのに使う特殊な文字だからです。
( ) [ ] $ % を文字として表示するには、 ' で囲んでください。
 '( ) [ ] $ % '
( ) [ ] $ % ' 以外の文字を ' で囲んでも構いません。
 100'%' '100%'
' の字そのものを表示させるには ' を2つ連続して書くことで表示させることができます。
 Monkey''s Audio

**曲のデータを表示 [#i24a6abc]
TF で、曲のデータを表示することができます。
例えば、曲のタイトルを表示したい場合は '''title''' を % で囲んで、
 %title%
と書くと表示されます。
同様に、アーティストを表示したい場合は
 %artist%
アルバム名を表示したい場合は
 %album%
のように書きます。
この他には、
-トラック番号
 %track%
または
 %tracknumber%
(どちらも同じ)
-ディスク番号
 %disc%
または
 %discnumber%
(どちらも同じ)
-アルバム全体のアーティスト(一つのアルバムにアーティストが複数いる場合に便利)
 %album artist%
-トラック単体のアーティスト(一つのアルバムにアーティストが複数いる場合に便利)
 %track artist%

-ビットレート
 %bitrate%
-チャンネル数
 %channels%
-ファイルサイズ
 %filesize%
-サンプリングレート
 %samplerate%
-コーデック名
 %codec%
-トラックの演奏時間
 %length%
-トラックの経過時間
 %playback_time%

-ファイル名(拡張子を含まない)
 %filename%
-ファイル名(拡張子を含まない)
 %filename_ext%
-パス
 %path%

あたりがよく使われます。
これらを無理して覚える必要はありません。最初のうちは忘れたら読み直せば大丈夫です。使っていくうちに自然に覚えていきます。

タグの特定のフィールドの内容を表示する場合にも % で囲みます。
例えば '''lyrics''' フィールドに歌詞があって、それを表示したい場合は
 %lyrics%
と、演奏回数が '''play_count''' フィールドにあってそれを表示したい場合は
 %play_count%
と書きます。

少し混乱した方もいるかもしれませんが、要するに ''何かデータを表示したい場合は % で囲む。例えばタイトルを表示したい場合は %title% と、アルバム名を表示させたい場合は %album% と書く'' という感じで大雑把に理解してもらえば大丈夫です。

**[ ... ] [#l73c652b]
% ~ % で曲のデータを表示できる、ということを紹介しました。
この % ~ % は、実際に自分でいろいろ試してみた方は気付いたかもしれませんが、データが無かった場合は '''?''' が返される仕組みになっています。
例えば %artist% はタグからアーティストに関するデータを探しますが、タグにデータが無かった場合には '''?''' と表示されます。
'''?''' が表示されることで「この情報は取得することができなかった」ということが分かりやすくなりますが、少し不恰好に見えるかもしれません。
データが無いときに '''?''' を表示させたくない場合は
 [%artist%]
のように、[ ] で囲みます。
'''[...]''' は、「もしカッコ内に何か値を返すものがあればカッコ内の部分を表示し、なければ何も表示しない」という意味になります。
ちなみに、この '''[...]''' の性質を利用すれば、少し発展的になりますが、例えば
 [Artist: %artist%]
と書くことで、「アーティストのデータがあるときは '''Artist: The Beatles''' のように表示され、データが無いときは '''Artist:''' の部分も含めて何も表示しない」といったことができます。

**if 構文 [#m8807514]
 $if(a,b,c)
と書くことで、「もし a に何か値を返すものがあれば b を表示し、なければ c を表示する」という意味になります。
例えば、「アーティストのデータがあるときは '''Artist: The Beatles''' のように表示し、データが無ければ '''No Artist info''' と表示したい」場合は
 $if(%artist%,Artist: %artist%,No Artist info)
と書きます。

また、
 $if(d,d,e)
のように一つ目と二つ目の文が同じならば特別に
 $if2(d,e)
と書けます。

例えば「アーティスト名を表示させたいが、アーティストに関するデータが無いときに '''No Artist info''' と表示したい」場合は、$if() を使うことで
 $if(%artist%,%artist%,No Artist info)
と書けますが、$if2() を使えば
 $if2(%artist%,No Artist info)
と、比較的スマートに書けます。

**$replace() [#g0e299d9]
 $replace(a,b1,c1)
と書くことで、「a のテキストの中に b1 という文字列が含まれていた場合はその部分を c1 に置き換える」という意味になります。
例えば
 $replace(abcdef,cd,CD)
と書くと
 abCDef
が返されます。
また、
 $replace(a,b1,c1,b2,c2...)
と書くことで、a の複数の部分を置き換えることもできます。
例えば
 $replace(abcdef,ab,AB,f,1)
と書くと、'''ab''' が '''AB''' に、'''f''' が '''1''' に置き換わるので
 ABcde1
が返されます。
$replace() はリネームの場面などで重宝するので知っておくと便利です。

**改行 [#r772a0a9]
TF ではテキストの改行は反映されません。
改行したい場合は
 $char(10)
で改行することができます。ただし "Playback State Display Formatting(日本語: 再生状態表示の書式設定)" 欄のように一行しかない場所では改行されません。

//**実際に使ってみる(現在執筆中) [#de653a61]
//(現在執筆中)

**TitleFormatting の解説ページ [#r57b6c7f]

TitleFormatting についてより詳しく知りたい場合はこちらへ。
-[[Title formatting reference 日本語訳:http://tnetsixenon.xrea.jp/title_formatting.html]]
-[[Title Formatting Help]]
-[[TitleFormatting 解説]]
-[[TitleFormatting]]

#navi(解説 (v0.9.5)/チュートリアル)