高度なタイトルフォーマット

# Winamp ATF リファレンス

以下に Winamp でサポートされている ATF 機能を抜粋します。
ATF は Winamp がどのようにプレイリストとメインウインドウのソングティッカーにメタデータを表示するかを決定します。 Winamp 設定の 'タイトル' ページで手動でグローバルな ATF 文字列を編集できます。
Winamp のデフォルト ATF 文字列は以下の通りです:
[%artist% - ]$if2(%title%,$filepart(%filename%)
以下のように表示されます: 'アーティスト - タイトル' アーティストとタイトルメタデータがファイルタグにあればそれを使用。なければ代わりに filename を表示します。

## ATF の例

%hoge% はメタデータフィールドを示します。
$hoge() は関数呼び出しを示します。
[] で囲まれたメタデータが見つからなかった時は表示しません。

'(シングルクォート) で囲まれた部分は構文解析なしで生のテキストを出力します。 例えば 'hoge$hoge%hoge[]' は特殊文字($,%,[,])を無視して全ての文字列を出力します。

## フィールド

補足: フィールドは Winamp の様々なコンポーネントによって定義されます。 一部(%rating%, %playcount%)はメディアライブラリ依存で、 一部(%filename%, %folder%)は Winamp によって提供されます。 しかし、多くの場合入力プラグインによって提供されます。 いくつかの入力プラグインは他のプラグインよりも多くの種類のフィールドを提供します。 例えば、Windows Media プラグイン (in_wm, Winamp 5.12以降)では、%WM/*% によるいくつかのフィールドを提供します。(wma/wmv/asf ファイルの ファイル情報 ダイアログの詳細タブを参照してください)

### Winamp から提供

#### %filename%

ファイルのフルパスを返します。ファイル名だけを表示するときは $filepart 関数を使います。

#### %folder%

ファイルを含むフォルダーを返します。
Winamp 5.2+ 専用。

### ML から提供

#### %rating%

トラックのレーティングがセットされている場合、1 から 5 までの整数で返します。☆やその他の文字で表示するときは $repeat関数を使います。

Winamp 5.2+ 専用。

#### %playcount%

メディアライブラリ データベースに格納されている場合、再生回数(トラックが再生された回数)を返します。

Winamp 5.2+ 専用。

### ML または 入力プラグインから提供

以下に挙げるフィールドは、ファイルがMLデータベースに存在していて、 次の以下のオプションを有効にしていると、MLから情報を取得します:
設定(Ctrl+P) > メディアライブラリ > ローカルメディア > "ライブラ リタイトル情報をプレイリスト タイトル フォーマットに使用する"

他の全ての場合では、情報は入力プラグインによって提供されます。 (それぞれのフィールドが入力プラグインによってサポートされている時)

これらの大部分は簡単であり、標準ファイルタグから取得さるため、追加の注記は必要としません。

#### %artist%

アーティストフィールドを返します。

#### %title%

タイトルフィールドを返します。

#### %album%

アルバムフィールドを返します。

#### %year%

西暦フィールドを返します。

#### %genre%

ジャンルフィールドを返します。

#### %comment%

コメントフィールドを返します。

#### %tracknumber%

トラック番号をパディング無しで返します。例えばトラック1を "1"と表示します。
ゼロパディング有り (例: 01, 02...10, 11) にするには $num か $lpad を使用します。

#### %track%

%tracknumber% と同じです。

#### %albumartist%

アルバムアーティスト フィールドを返します。
Winamp 5.3+ 専用。

#### %disc%

有効ならディスク番号タグを返します。例: 1/2 (2枚組みCDのディスク番号1)

#### %composer%

作曲者フィールドを返します。

#### %publisher%

パブリッシャー(レコードレーベル) フィールドを返します。
Winamp 5.3+ 専用。

#### %streamtitle%

ストリームのストリーミングタイトルを返します。

#### %bitrate%

ビットレートを返します。(VBR の時は平均ビットレートを使用)

#### %length%

トラック長をミリ秒単位で返します。トラック長の書式化は以下を使用します。
$div(%length%,60000):$num($div($mod(%length%,60000),1000),2)

#### %type%

ビデオの時は 1、オーディオの時は 0 を返します。
Winamp 5.2+ 専用。

#### %vbr%

VBR(可変ビットレート) の時は 1、CBR(固定ビットレート)の時は 0 を返します。

#### %category%

カテゴリ フィールドを返します。
Winamp 5.55+ 専用。

#### %producer%

(レコードかフィルム)プロデューサー フィールドを返します。
Winamp 5.57+ 専用。

#### %director%

(フィルム)ディレクター フィールドを返します。mainly used for videos.
Winamp 5.57+ 専用。

### 入力プラグインから提供

以下に挙げたフィールドは全てのファイル形式では動作しないかもしれません。

#### %trackartist%

トラックアーティスト フィールド(アーティストと同等)を返します。
Winamp 5.3+ 専用。

#### %mood%

ムード フィールドを返します。
Winamp 5.3+ 専用。

#### %bpm%

データフィールドを持つなら BPM を返します。 (ビート/分)
Winamp 5.3+ 専用。

#### %key%

キー フィールドがあれば返します。(例: E Miner)
Winamp 5.3+ 専用。

#### %lyricist%

歌詞フィールドを返します。
Winamp 5.3+ 専用。

#### %conductor%

指揮者フィールドを返します。
Winamp 5.3+ 専用。

#### %tool%

エンコードツール(リッピング/エンコードに使用したソフト)を返します。(例: Winamp 5.34)
Winamp 5.3+ 専用。

#### %family%

ファイル種別を返します。(例: M4A の戻り値: MPEG-4 Audio File Format)
Winamp 5.5+ 専用。

#### %encoder%

エンコーダーを返します。(例: LAME 3.97)
Winamp 5.3+ 専用。

#### %ISRC%

国際標準レコーディングコードまたは ISO 3901 (情報)
Winamp 5.3+ 専用。

#### %replaygain_track_gain%

リプレイゲインがあればトラックのリプレイゲインを返します。(例: -3.16 dB)
Winamp 5.3+ 専用。

#### %replaygain_album_gain%

リプレイゲインがあればアルバムのリプレイゲインを返します。
Winamp 5.3+ 専用。

#### %replaygain_track_peak%

リプレイゲインがあればトラックのピーク値を返します。
Winamp 5.3+ 専用。

#### %replaygain_album_peak%

リプレイゲインがあればアルバムのピーク値を返します。
Winamp 5.3+ 専用。

#### %gain%

ゲインがあれば値を返します。
Winamp 5.3+ 専用。

## 関数

注意: コンマの後のスペースに注意してください。$if(%title%, Has No Title) は
" A Title" と表示します(先頭のスペースに注意)、
"Has A Title" ではありません。
正しくは次のようにするべきです $if(%title%,Has A Title,Has No Title)。

### 制御構文

#### [...] 条件付きセクション

#### $if

引数: (a, then, else)
戻り値:a が空でない有効なフィールドなら、 then を評価して返します。さもなければ、 else 引数を評価して返します。$if(A,A,B) と $if2(A,B) が同等であることに注意してください。
例: $if(%artist%,artist タグがある,artist タグが無い)

#### $if2

引数: (a, else)
戻り値:a が空でない有効なフィールドなら、a を評価して返します。さもなければ else 引数を評価して返します。
例: $if2(%album%,アルバムが無い)

#### $if3

引数: (a1, ..., aN, else)
戻り値:a1 から aN の間で空でない有効なフィールドの値を評価して返します。さもなければ else 引数を評価して返します。
例:$if3(%artist%,%filename%,%album%,フィールドが無い)

#### $decode

引数: (a, b1, c1, ..., bN, cN, else)
戻り値: cN または else。 a 引数が bN 引数と一致したとき、cN 引数を評価して返す switch/case 関数です。一致が無い場合は最後の else 引数を評価して返します。
例: $decode($fileext(%filename%),MP3,MPEG-1 Layer 3,MP4,MPEG-4 Container,その他)

Winamp 5.2+ 専用。

#### $ifgreater

引数: (x1, x2, then, else)
戻り値: x1 と x2 を整数値として比較します。x1 が x2 より大きいときは、then 引数を評価して返します。そうでない場合は、 else 引数を評価して返します。
例: $ifgreater(%rating%,2,高評価曲,高評価でない曲)

Winamp 5.2+ 専用。

#### $iflonger

引数: (a1, x1, then, else)
戻り値:x1 と x2 の文字列の長さを比較します。x1 が x2 より長いときは、 then 引数を評価して返します。そうでない場合は、 else 引数を評価して返します。
例: $iflonger(%title%,15,長いタイトル,短いタイトル)

Winamp 5.2+ 専用。

#### $IfStrEqual2

引数: (A, B, then, else)
戻り値:もし A = B なら then 、そうでない場合は else を返します。
例: $IfStrEqual2(%year%,2007,新しい!:,古い:)
例: $IfStrEqual2(%type%,1,'(ビデオ)','(音楽)')

Winamp 5.2+ 専用。

#### $IfStrEqual

引数: (A, B, then)
戻り値:もし A = B なら then を返します。
例: $IfStrEqual(%year%,2007,新しい!:) 2007年出版のメディアなら “新しい!” を表示します。

Winamp 5.2+ 専用。

### 論理演算

#### $and

– 削除されました –
引数: (%a%, %b%) – The fields to check if populated.
戻り値: 1 if the fields %a% and %b% are populated. An empty string if not. (?????)
例: $if($and(%artist%,%title%),Has both artist and title,One field is missing)

Winamp 5.2+ 専用。

### 四則演算

#### $mod

引数: (x1, x2)
戻り値: x1 を x2 で割った余り
例: $mod(21,8) の戻り値は “5”。

Winamp 5.2+ 専用。

#### $div

引数: (x1, x2)
戻り値: x1 を x2 で割った結果
例: $div(60,10) の戻り値は “6”。

Winamp 5.2+ 専用。

#### $mul

引数: (x1,x2,...,xn) - 掛ける数のリスト
戻り値: x1 * x2 * ... * xn. 全ての数をかけた結果。
例: $mul(7,8,3,4) の戻り値は “672“。

Winamp 5.2+ 専用。

#### $muldiv

引数: (x1, x2, x3)
戻り値: x1 * x2 / 3. x1 かける x2 の結果を x3 で割ります。戻り値は最も近い整数値です。
例: $muldiv(10,6,3) の戻り値は “20”。

Winamp 5.2+ 専用。

#### $sub

引数: (x1,x2,...,xn) - 引き算する数のリスト
戻り値: x1 - x2 - ... - xn. x1 から x2...xn を減算します。
例: $sub(25,1,3,2,3) の戻り値は “16”。

Winamp 5.2+ 専用。

#### $add

引数: (x1,x2,...,xn) - 足し算する数のリスト
戻り値: x1 + x2 +...+ xn. 全ての数を加算します。
例: $add(2,3,%playcount%,%rating%)

Winamp 5.2+ 専用。

#### $greater

引数: (x1, x2) - 2つの数値を比較します
戻り値: x1 が x2 より大きければ 1、そうでなければ無し。$ifgreater() は同じ意味です。
例: $greater(3,2) – note does not appear to work within a $if() function.

Winamp 5.2+ 専用。

※訳注 なぜか手元では動作しませんでした。なので訳には自信がありません。

#### $max

引数: (x1,...,xn) - 比較する数のリスト
戻り値: 引数の中で最も大きい数
例: $max(7,8,3,4) の戻り値は “8”。

Winamp 5.2+ 専用。

#### $min

引数: (x1,...,xn) - 比較する数乗りスト
戻り値: 引数の中で最も小さい数
例: $min(7,8,3,4) の戻り値は “3”。

Winamp 5.2+ 専用。

### 文字列演算

#### $lower

引数: (a1)
戻り値:a1 を小文字にして返します
例: $lower(%title%)

#### $upper

引数: (a1)
戻り値:a1 を大文字にして返します
例: $upper(%title%)

#### $replace

引数: (a1, a2, a3)
戻り値: a1 の全ての a2 を a3 に置換します
例: $replace(dum,u,o) は “dom” を返します。

Winamp 5.2+ 専用。

#### $left

引数: (a1, x1)
戻り値:a1 の最初の x1 文字を返します。
例: $left(%title%, 3) はタイトルの最初の3文字を返します。

Winamp 5.2+ 専用。

#### $right

引数: (a1, x1)
戻り値:a1 の最後の x1 文字を返します。
例: $right(%title%, 3) はタイトルの最後の3文字を返します。

Winamp 5.2+ 専用。

#### $len

引数: (a1)
戻り値:a1 の文字数を返します
例: $len(%artist%) はアーティスト名の文字数を返します。

Winamp 5.2+ 専用。

#### $substr

引数: TODO: (a1, a2)
戻り値: TODO: a1
例: TODO: $substr()

Winamp 5.2+ 専用。

※訳注 未実装のようです。

#### $strstr

引数: (a1, a2)
戻り値:a1 の最初から数えて最初に現れる a2 の位置を返します
例: $strstr(aacbbabb,ab) は “6” を返します。

Winamp 5.2+ 専用。

#### $strrchr

引数: (a1, a2)
戻り値:a1 の最後から数えて最初に現れる a2 の位置を返します
例: $strrchr(aacbbabb,a) は “6” を返します。

Winamp 5.2+ 専用。

#### $strlchr

引数: (a1, a2)
戻り値:a1 の最初から数えて最初に現れる a2 の位置を返します
例: $strlchr(aacbbabb,a) は “1” を返します。

Winamp 5.2+ 専用。

#### $strchr

引数: (a1, a2)
戻り値:a1 の最初から数えて最初に現れる a2 の位置を返します
例: $strchr(aacbbabb,a) は “1” を返します。 ($strlchr() と同じ)

Winamp 5.2+ 専用。

#### $shortest

引数: (a1, a2)
戻り値: a1 と a2 のうち、長さが短い方を返します。
例: $shortest(%album%,%folder%)

#### $longest

引数: (a1, a2)
戻り値: a1 と a2 のうち、長さが長い方を返します。
例: $longest(%album%,%folder%)

#### $abbr

引数: (a1, x1)
戻り値: a1 を簡略化します。
例: $abbr(%album%) アルバム名を次のように変換します。 “Final Fantasy VI” を “FFVI”。
$abbr(Advanced Title Formatting,10) は “ATF” を返します。
$abbr(%album%,10) アルバム名が10文字より長いときだけ簡略化して返します。
x1 の指定は任意です。もし指定された場合、 a1 が x1 文字よりも長い場合にのみ簡略化を行います。

#### $padcut

引数: (a1, x2)
戻り値:a1 にスペースで補完するか、必要数だけ文字を削除して x2 文字の文字列を返します。
例: $padcut(%artist%,15)

#### $cut

引数: (a1, x2)
戻り値:a1 の x2 文字以降を削除します
例: $cut(%comment%,15) コメントの最初の15文字を返します。

#### $pad

引数: (string, num, padstr)
戻り値:文字列が最低でも num 文字となるように、デフォルトではスペース、または padstr で指定された文字を埋め込みます。
例: $pad(%artist%,40), または $pad(%artist%,40,.) はピリオドを埋め込みます。

#### $lpad

引数: (string, num, padstr)
戻り値:文字列が最低でも num 文字となるように、デフォルトではスペース、または padstr で指定された文字を左から埋め込みます。
例: $lpad(%tracknumber%,3), または $lpad(%tracknumber%,3,0) は0を先頭に埋め込みます。

Winamp 5.2+ 専用。

#### $trim

引数: (a1)
戻り値: a1 の前後のスペースを取り除きます。
例: $trim(%artist%)

Winamp 5.2+ 専用。

#### $repeat

引数: (a1, x1)
戻り値: a1 を x1 回繰り返します。
例: $repeat(*,%rating%) *をレーティング数分繰り返します。

(Winamp 5.2 の $fill()関数は5.21以降削除されました)

#### $caps

引数: (a1)
戻り値:a1 の最初の一文字を大文字に変換します。
例: $caps(%artist%)

#### $caps2

引数: (a1)
戻り値: a1 のそれぞれの単語の最初の文字を大文字に変換します。
例: $caps2(%artist%)

#### $fileext

引数: (a1)
戻り値:a1 のファイル拡張子
例: $fileext(%filename%)

#### $filepart

引数: (a1)
戻り値:a1 のファイル名(例: パスを除きます)
例: $filepart(%filename%)

#### $filename

引数: (a1)
戻り値:a1 のファイル名(例: パスを除きます)
例: $filename(%filename%)

#### $directory

引数: (a1, x1)
戻り値:x1 段階の a1 ディレクトリ名
例: $directory(%filename%,2)
もしフルパスが “C:\Music\Artist - Album\Song.mp3” なら、上記の例では “Music” を返します。 x1 は任意で、デフォルトが1です。

Winamp 5.2+ 専用。

#### $split

引数: (a, token, which)
戻り値:ディスクまたはトラック文字列を分離します。(例: "1/11" のとき "1" を表示)
例: [$num(%track%,2)$IfStrNotEqual($split(%track%,/,1),,/$num($split(%track%,/,1),2))]

Winamp 5.5+ 専用。

#### $ext

引数: (a1)
戻り値:a1 のファイル拡張子
例: $ext(%filename%)

Winamp 5.2+ 専用。

#### $hex

引数: (x1, x2)
戻り値:x1 を x2 桁の16進数で表示します。x2 桁に満たない時は0を挿入します。
例: $hex(%tracknumber%,4)

Winamp 5.2+ 専用。

#### $dec

引数: (x1, x2)
戻り値:x1 を x2 桁の10進数で表示します。x2 桁に満たない時は0を挿入します。
例: $dec(%tracknumber%,5)

Winamp 5.2+ 専用。

#### $num

引数: (x1, x2)
戻り値:x1 を x2 桁で表示します。x2 桁に満たない時は0を挿入します。
例: $num(%tracknumber%,5)

Winamp 5.2+ 専用。

#### $null

引数:複数の引数
戻り値: なし
例: $null()
必ず何もしません。空の文字列が必要なときに役に立ちます。

Winamp 5.2+ 専用。

#### $PathLPart

引数: (a1, x1)
戻り値:a1 の最初の x1 段分
例: $PathLPart(%filename%,2)
もしフルパスが “C:\Music\Sonic Youth - Daydream Nation\01 - Teen Age Riot.mp3” なら、上記の例では “C:\Music” を出力します。

Winamp 5.3+ 専用。

#### $PathRPart

引数: (a1, x1)
戻り値:a1 の最後の x1 段分
例: $PathRPart(%filename%,2)
もしフルパスが “C:\Music\Sonic Youth - Daydream Nation\01 - Teen Age Riot.mp3” なら、上記の例では “Sonic Youth - Daydream Nation\01 - Teen Age Riot.mp3” を出力します。

Winamp 5.3+ 専用。

#### $PathLTrim

引数: (a1, x1)
戻り値:a1 の最初の x1 段分を取り除く
例: $PathLTrim(%filename%,1)
もしフルパスが “C:\Music\Sonic Youth - Daydream Nation\01 - Teen Age Riot.mp3” なら、上記の例では “Music\Sonic Youth - Daydream Nation\01 - Teen Age Riot.mp3” を出力します。

Winamp 5.3+ 専用。

#### $PathRTrim

引数: (a1, x1)
戻り値:a1 の最後の x1 段分を取り除く
例: $PathRTrim(%filename%,1)
もしフルパスが “C:\Music\Sonic Youth - Daydream Nation\01 - Teen Age Riot.mp3” なら、上記の例では “C:\Music\Sonic Youth - Daydream Nation” を出力します。

Winamp 5.3+ 専用。

### 変数

#### $puts

引数: (name, value)
戻り値:名前付き変数に 値 を保存します。$get(name)を使用して値を取得します。$put() を使用すると値を保存するとともに、それを返します。
例: $puts(artist_title,%artist% - %title%)

Winamp 5.2+ 専用。

#### $put

引数: (name, value)
戻り値: 値。名前付き変数に 値 を保存します。$get(name)を使用して値を取得します。 $puts() を使用すると値を保存するのみで、それを返しません。
例: $put(artist_title,%artist% - %title%)

Winamp 5.2+ 専用。

#### $get

引数: (name)
戻り値:$put() または $puts() 関数で設定された、名前付き変数の値
例: $get(artist_title)

Winamp 5.2+ 専用。

### システム情報

#### $systime_second

引数: TODO: (a1, a2)
戻り値: TODO: a1
例: TODO: $systime_second()

Winamp 5.2+ 専用。

#### $systime_minute

引数: TODO: (a1, a2)
戻り値: TODO: a1
例: TODO: $systime_minute()

Winamp 5.2+ 専用。

#### $systime_hour

引数: TODO: (a1, a2)
戻り値: TODO: a1
例: TODO: $systime_hour()

Winamp 5.2+ 専用。

#### $systime_day

引数: TODO: (a1, a2)
戻り値: TODO: a1
例: TODO: $systime_day()

Winamp 5.2+ 専用。

#### $systime_month

引数: TODO: (a1, a2)
戻り値: TODO: a1
例: TODO: $systime_month()

Winamp 5.2+ 専用。

#### $systime_year

引数: TODO: (a1, a2)
戻り値: TODO: a1
例: TODO: $systime_year()

Winamp 5.2+ 専用。

### その他. (TODO)

###### $select
$tab
$crlf
$char

## 例

[ .... ] - 少なくとも括弧中でフィールドが見つかった場合にだけ括弧内のコンテンツを表示します。 例えば、[%artist% - ] は %artist% タグがある場合にだけ表示されます。さもなければ(ハイフンとスペースも含めて)何も表示されません。

### 標準 ATF 文法

文法: [%artist% - ][%album% - ][$num(%track%,2) - ]$if2(%title%,$filepart(%filename%))
例: Pink Floyd - Animals - 02 - Dogs

### 高度な ATF 文法

文法: [$if2(%albumartist%,%artist%) - ][%album% - ][$num(%track%,2) - ]
$IfStrNotEqual(%artist%,$if2(%albumartist%,%artist%),[%artist% - ])
[$if2(%title%,$filepart(%filename%))][$if($fileext(%filename%),' [ ',)]
[%year% | ][$fileext(%filename%) ][$if(%bitrate%, '|' ,)][%bitrate% 'kbps' ]
[$if($fileext(%filename%),']',)][ $repeat(*,%rating%) ]
戻り値: AlbumArtist - Album - ## - Artist - Title [ Year | Ext | Bitrate ] StarRating
if AlbumArtist is different to TrackArtist, otherwise shows Standard format.
例: Various - Arcana - 01 - Tripswitch - Calabi Yau [ 2006 | mp3 | 205 kbps ] *****