title formatting reference

foobar2000 の Title Formatting Reference の日本語訳です。

  1. Field remappings (メタフィールドの再配置)
  2. Control flow (制御フロー)
  3. Arithmetic functions (数論的関数)
  4. Boolean functions (ブール関数)
  5. Color functions (色操作関数)
  6. Now playing info (再生中のトラックに関する情報)
  7. Playlist info (プレイリストに関する情報)
  8. String functions (文字列操作関数)
  9. Track info (トラックに関する情報)
  10. Time/Date functions (時間関数/日付関数)
  11. Variable operations (変数操作)

Field remappings (メタフィールドの再配置)

%name% で利用可能なフィールドには、title formatting の記述を簡易にするため、他のフィールドに位置づけられるものがあります。

Metadata (メタデータ)

%album artist%
アーティスト名を返します。値が見つかるまで、album artist、artist、composer、performer の順にフィールドを取得していきます。
%artist% との違いは、トラックごとにアーティスト名が異なるアルバムにおいて、同一の値が必要な場合での使用を意図されているところにあります。
%album%
アルバム名を返します。値が見つかるまで、album、venue の順にフィールドを取得していきます。
%artist%
アーティスト名を返します。値が見つかるまで、artist、album artist、composer、performer の順にフィールドを取得していきます。
%discnumber%
%disc%
ディスク番号を返します。discnumber フィールド、または disc フィールドから値を取得します。
%track artist%
アーティスト名を返します。%album artist% が %artist% と異なる場合にのみ %artist% を取得します。
%title%
タイトルを返します。メタフィールドが無ければ、拡張子を除いたファイル名を取得します。
%tracknumber%
%track%
トラック番号を 2 桁にして返します。tracknumber フィールドから値を取得します。

Technical information (技術情報)

%bitrate%
ビットレートをキロビット毎秒単位で返します。可変ビットレートのトラックを再生している時には、値を動的に返します。
%channels%
チャンネル数を返します。テキスト形式で表現できる場合は、数値がテキストに置き換えられます ("1" を "mono"、"2" を "stereo"、など)。
%filesize%
ファイルサイズをバイト単位で返します。
%filesize_natural%
ファイルサイズを、メガバイト単位、キロバイト単位など、相応な単位で返します。
%samplerate%
サンプルレートをヘルツ単位で返します。
%codec%
コーデックの名称を返します。名称が利用できなければ、ファイルの拡張子を返します。

Special fields (専門フィールド)

%playlist_number%
プレイリストのインデックス番号を、曲数にあわせて桁取りした形で返します。

Control flow (制御フロー)

条件に応じて文や命令を実行します。

[...]
括弧内の表現において、真偽値が true (真) となれば、括弧内の文字列と真偽値 true を返します。それ以外のときは、空の文字列と真偽値 false (偽) を返します。
例 : "[%artist%]" は artist フィールドがあればその値を返します。それ以外のときは何も返しません (括弧なしの "%artist%" の場合は "?" を返します)。
$if(cond,then)
cond (条件) 部が true となれば、then 部の演算に移り、値を返します。それ以外のときは、false を返します。
$if(cond,then,else)
cond 部が true となれば、then 部の演算に移り、値を返します。それ以外のときは、else 部の演算に移り、値を返します。
$if2(a,else)
a が一度だけ演算されるという点を除き、$if(a,a,else) と同様です。
$if3(a1,a2,...,aN,else)
true となるものが見つかるまで、a1 から aN まで順に演算します。見つかった時点で値を返します。それ以外のときは、else 部の演算に移り、値を返します。
$ifequal(n1,n2,then,else)
整数値 n1 と n2 を比較し、n1 が n2 と同値であれば、then 部の演算に移り、値を返します。それ以外のときは、else 部の演算に移り、値を返します。
$ifgreater(n1,n2,then,else)
整数値 n1 と n2 を比較し、n1 が n2 より大きければ、then 部の演算に移り、値を返します。それ以外のときは、else 部の演算に移り、値を返します。
$iflonger(s1,s2,then,else)
文字列 s1 と s2 の長さを比較し、s1 が s2 より長ければ、then 部の演算に移り、値を返します。それ以外のときは、else 部の演算に移り、値を返します。
$select(n,a1,...,aN)
n の値が 1 から N までにあれば、an の演算に移り、値を返します。それ以外のときは、false を返します。

Arithmetic functions (数論的関数)

整数の算術演算を行います。

$add(a,b)
a に b を足します。(足し算)
任意の数の引数をとることができます。$add(a,b,...) は $add($add(a,b),...) と同じです。
$div(a,b)
a を b で割ります。(割り算) b が 0 になったときは a を返します。
任意の数の引数をとることができます。$div(a,b,...) は $div($div(a,b),...) と同じです。
$greater(a,b)
a が b より大きければ true を返し、それ以外のときは false を返します。
$max(a,b)
a と b における最大値を返します。
任意の数の引数をとることができます。$max(a,b,...) は $max($max(a,b),...) と同じです。
$min(a,b)
a と b における最小値を返します。
任意の数の引数をとることができます。$min(a,b,...) は $min($min(a,b),...) と同じです。
$mod(a,b)
a を b で割ったときの余りを返します。b が 0 になったときは a を返します。
任意の数の引数をとることができます。$mod(a,b,...) は $mod($mod(a,b),...) と同じです。
$mul(a,b)
a に b を掛けます。(掛け算)
任意の数の引数をとることができます。$mul(a,b,...) は $mul($mul(a,b),...) と同じです。
$muldiv(a,b,c)
a に b を掛け、それから c で割ります。結果は近似の整数に四捨五入されます。
$rand()
0 から 232-1 (4294967295) までの間で、ランダムな数を生成します。ソートに関連したコンテキストでのみ利用可能です。
$sub(a,b)
a から b を引きます。(引き算)
任意の数の引数をとることができます。$sub(a,b,...) は $sub($sub(a,b),...) と同じです。

Boolean functions (ブール関数)

真偽値 (true と false) とともに、$if 関数などの条件文などに使用します。文字列や数値を返しません。

$and(...)
引数の論理積。すべての引数が true である場合にのみ true を返します。
例 : $and(x,y) は x と y がともに true であれば true となります。
$or(...)
引数の論理和。少なくとも一つの引数が true であれば true を返します。
例 : $or(x,y) は x か y の一方、あるいは両者が true であれば true となります。
$not(x)
論理否定。x が true であれば false を返し、それ以外のときは true を返します。
$xor(...)
引数の排他的論理和。奇数個の引数が true であれば true を返します。
例 : $xor(x,y) は x か y の一方が true であれば true となりますが、両者が true であれば false となります。

Color functions (色操作関数)

$blend(color1,color2,part,total)
color1 と color2 を混ぜた色を返します。part (分子) が 0 以下のとき、color1 を返します。part が total (分母) 以上になったとき、color2 を返します。それ以外では間の混合色を返します。色の混合は RGB 色空間で行われます。
$hsl()
テキストの色をデフォルトに戻します。
$hsl(h,s,l)
選択されていないテキストの色を HSL 空間で設定します。h、s、l は色合い (hue)、鮮やかさ (saturation)、明るさ (lightness) です。選択したときの色は反転したものになります。h、s、l の範囲は 0 から 240 までです。
$hsl(h1,s1,l1,h2,s2,l2)
テキストの色を HSL 空間で設定します。h1、s1、l1 は選択されていないテキストの、h2、s2、l2 は選択されたテキストの色合い (hue)、鮮やかさ (saturation)、明るさ (lightness) です。
$rgb()
テキストの色をデフォルトに戻します。
$rgb(r,g,b)
選択されていないテキストの色を設定します。r、g、b は赤 (red)、緑 (green)、青 (blue) の色要素です。選択したときの色は反転したものになります。
$rgb(r1,g1,b1,r2,g2,b2)
テキストの色を設定します。r1、g1、b1 は選択されていないテキストの、r2、g2、b2 は選択されたテキストの赤 (red)、緑 (green)、青 (blue) の色要素です。
$transition(string,color1,color2)
文字列 string を、最初の文字が color1、最後の文字が color2、間の文字はそれらのグラデーションとなるように出力します。色の混合は RGB 色空間で行われます。
文字列を切り詰めつつ $transition を適用する場合は、切り詰めを先に行うべきです。

Now playing info (再生中のトラックに関する情報)

ステータスバー、ウィンドウタイトル、コピーコマンドなど、再生中の項目に対して有用です。

Special fields (専門フィールド)

%playback_time%
経過時間を「[時間:]分:秒」の形式で返します。(%_time_elapsed%)
%playback_time_seconds%
経過時間を秒単位で返します。(%_time_elapsed_seconds%)
%playback_time_remaining%
残り時間を「[時間:]分:秒」の形式で返します。(%_time_remaining%)
%playback_time_remaining_seconds%
残り時間を秒単位で返します。(%_time_remaining_seconds%)
%length%
トラックの長さを「[時間:]分:秒」の形式で返します。(%_time_total%)
%length_ex%
トラックの長さを「[時間:]分:秒.ミリ秒」の形式で返します。
%length_seconds%
トラックの長さを秒単位で返します。(%_time_total_seconds%)
%length_seconds_fp%
トラックの長さを浮動小数点数として返します。
%length_samples%
トラックの長さをサンプル数として返します。

Playlist info (プレイリストに関する情報)

プレイリストの表示に対して有用です。

Special fields (専門フィールド)

%isplaying%
ファイルが再生中のときは 1 (true) を返し、それ以外のときは何も返しません。
%_isplaying% でも機能します。
%ispaused%
ファイルが一時停止中のときは 1 (true) を返し、それ以外のときは何も返しません。
%_ispaused% でも機能します。
%list_index%
プレイリストのインデックス番号を、曲数にあわせて桁取りした形で返します。
%playlist_number% と同等です。
%list_total%
プレイリストの項目数を返します。
%_playlist_total% でも機能します。
%queue_index%
プレイバックのキューに指定された項目のインデックスを返します。プレイリストにおいてのみ有効です。同じ項目が複数回キューに入れられた場合は、その最初のインデックスを返します。
%queue_indexes%
プレイバックのキューに指定された項目のインデックスのリストを返します。プレイリストにおいてのみ有効です。同じ項目が複数回キューに入れられた場合は、そのすべてのインデックスを返します。
%queue_total%
プレイバックのキューにあるトラック数を返します。キューに指定されたトラックにおいてのみ有効です。

String functions (文字列操作関数)

文字列の操作などに使用します。

$abbr(x)
x の文字列の省略形を返します。
$abbr(x,len)
x の文字数が len より長い場合、省略形を返します。それ以外のときは、x を返します。
$ansi(x)
x の文字列をシステムのコードページに変換します。システムのコードページの範囲に存在しない文字は削除または置換されます。ファイル名変更時など、ユニコード対応でないソフトとの互換性を持たせます。
$ascii(x)
x の文字列を ASCII に変換します。ASCII の範囲に存在しない文字は削除または置換されます。
$caps(x)
x の文字列にあるすべての単語の 1 文字目を大文字に、それ以外を小文字に変換します。
$caps2(x)
x の文字列にあるすべての単語の 1 文字目を大文字に変換しますが、それ以外はそのままにします。
$char(x)
コード番号 x のユニコード文字を挿入します。
$crc32(a)
文字列 a の CRC32 を算出します。文字列の色分けなどに使用します。
例 : $rgb($mod($crc32(%album%),256),128,128)
$crlf()
改行コード (キャリッジリターン、ラインフィード) を挿入します。システム通知領域のツールチップなどへの出力を複数行にすることができます。
$cut(a,len)
文字列 a の左から len の数だけ文字を返します。
$directory(x)
ファイルパス x からディレクトリ名を抽出します。
$directory(x,n)
ファイルパス x から n 階層上のディレクトリ名を抽出します。
$directory_path(x)
ファイルパス x からディレクトリパスを抽出します。
$ext(x)
ファイル名およびパス x から拡張子を抽出します。
$filename(x)
フルパス x からファイル名を抽出します。
$fix_eol(x)
x が改行コードを含んでいれば、改行コードとそれ以降の文字列は " (...)" に置換されます。それ以外のときは、x をそのまま返します。
$fix_eol(x,indicator)
x が改行コードを含んでいれば、改行コードとそれ以降の文字列は indicator で置き換えられます。それ以外のときは、x をそのまま返します。
$hex(n)
整数 n を 16 進法で表記します。
$hex(n,len)
整数 n を len の数だけ桁取りし、16 進法で表記します。
$insert(a,b,n)
文字列 b を、文字列 a の n 文字目の後に挿入します。
$left(a,len)
文字列 a の左から len の数だけ文字を返します。
$len(a)
文字列 a の長さを返します。
$len2(a)
2 バイト文字を考慮して (2 バイト文字を 2 文字として) 文字列 a の長さを返します。
$longer(a,b)
文字列 a が文字列 b より長ければ true を返します。それ以外のときは false を返します。
$lower(a)
文字列 a を小文字に変換します。
$longest(a,...)
引数の中で文字列が最も長いものを返します。任意の数の引数をとることができます。
$num(n,len)
整数 n を len の数だけ桁取りし、10 進法で表記します。
$pad(x,len)
文字数が len になるよう、文字列 x の右側に空白を挿入します。文字数が len より大きいときはそのままです。
$pad_right(x,len)
文字数が len になるよう、文字列 x の左側に空白を挿入します。文字数が len より大きいときはそのままです。
$pad(x,len,char)
文字数が len になるよう、文字列 x の右側に文字 char を挿入します。文字数が len より大きいときはそのままです。
$pad_right(x,len,char)
文字数が len になるよう、文字列 x の左側に文字 char を挿入します。文字数が len より大きいときはそのままです。
$padcut(x,len)
文字列 x が len より長ければ、x の左から len の数だけ文字を返します。それ以外のときは、文字数が len になるよう、文字列 x の右側に空白を挿入します。
$padcut_right(x,len)
文字列 x が len より長ければ、x の左から len の数だけ文字を返します。それ以外のときは、文字数が len になるよう、文字列 x の左側に空白を挿入します。
$padcut(x,len,char)
文字列 x が len より長ければ、x の左から len の数だけ文字を返します。それ以外のときは、文字数が len になるよう、文字列 x の右側に文字 char を挿入します。
$padcut_right(x,len,char)
文字列 x が len より長ければ、x の左から len の数だけ文字を返します。それ以外のときは、文字数が len になるよう、文字列 x の左側に文字 char を挿入します。
$progress(pos,range,len,a,b)
プログレスバーを作成します。
pos : インジケーターの位置。range :プログレスバーの範囲。len : プログレスバーの長さを文字数で指定。a, b : プログレスバーを構成する文字。
例 : $progress(%_time_elapsed_seconds%,%_time_total_seconds%,20,'#','=') は "====#===============" を作成し、# が再生位置に合わせて移動するように見えます。
$progress2(pos,range,len,a,b)
プログレスバーを作成します。
pos : インジケーターの位置。range :プログレスバーの範囲。len : プログレスバーの長さを文字数で指定。a, b : プログレスバーを構成する文字。$progress とは異なる見た目になります。
例 : $progress2(%_time_elapsed_seconds%,%_time_total_seconds%,20,'#','=') は "####================" を作成し、# が再生位置に合わせて = を置き換えていくように見えます。
$repeat(a,n)
文字列 a を n 回繰り返します。a は値を用いる前に算出されるので、$repeat はループには使用できません。
$replace(a,b,c)
文字列 a に現れるすべての文字列 b を文字列 c に置換します。任意の数の引数をとることができます。
$replace(a,b1,c1,b2,c2) は $replace($replace(a,b1,c1),b2,c2) と同じではありません。
例 : $replace(ab,a,b,b,c) → "bc", $replace($replace(ab,a,b),b,c) → "cc"
$right(a,len)
文字列 a の右から len の数だけ文字を返します。
$roman(n)
整数 n をローマ数字で表記します。
$rot13()
与えられた文字列に対して ROT13 を実行します。
例 : $rot13('foobar2000') → "sbbone2000"
$shortest(a,...)
引数のなかで文字列が最も短いものを返します。任意の数の引数をとることができます。
$strchr(s,c)
文字列 s の中で文字 c が現れる最初の場所を返します。
例 : $strchr(abca,a) → "1"
$strrchr(s,c)
文字列 s の中で文字 c が現れる最後の場所を返します。
例 : $strrchr(abca,a) → "4"
$strstr(s1,s2)
文字列 s1 の中で文字列 s2 が現れる最初の場所を返します。
$strcmp(s1,s2)
文字列 s1 と s2 を、大文字と小文字を区別して比較します。
$stricmp(s1,s2)
文字列 s1 と s2 を、大文字と小文字を区別しないで比較します。
$substr(s,m,n)
文字列 s の m 文字目から n 文字目までの文字列を返します。
$stripprefix(x)
x から、接頭辞となる A (不定冠詞) と The (定冠詞) を削除します。
$stripprefix(x,prefix1,prefix2,...)
x から、指定した接頭辞を削除します。
$swapprefix(x)
接頭辞となる A (不定冠詞) と The (定冠詞) を x の後尾に移動します。
$swapprefix(x,prefix1,prefix2,...)
指定した接頭辞を x の後尾に移動します。
$trim(s)
文字列 s の先頭にある、あるいは連続する空白を削除します。
$tab()
タブ文字を 1 つ挿入します。
$tab(n)
タブ文字を n の数だけ挿入します。
$upper(s)
文字列 s を大文字に変換します。

Track info (トラックに関する情報)

トラックに関する情報へのアクセスに使用します。

Metadata (メタデータ)

以下、"He"、"She"、"It" と 3 つの artist タグを持っている場合を例とします。

$meta(name)
タグ名 name の値を返します。タグが複数存在する場合は、", " をセパレーターとしてまとめて表示します。
例 : $meta(artist) → "He, She, It"
$meta(name,n)
タグ名 name の n 番目 (0, 1, 2, ...) の値を返します。
例 : $meta(artist,1) → "She"
$meta_sep(name,sep)
タグ名 name の値を返します。タグが複数存在する場合は、文字列 sep をセパレーターとしてまとめて表示します。
例 : $meta_sep(artist,' + ') → "He + She + It"
$meta_sep(name,sep,lastsep)
タグ名 name の値を返します。タグが複数存在する場合は、文字列 sep を、最後だけは lastsep をセパレーターとしてまとめて表示します。
例 : $meta_sep(artist,', ',', and ') → "He, She, and It"
$meta_test(...)
括弧内のすべてのタグが存在すれば、1 (true) を返します。それ以外のときは何も返しません。
例 : $meta_test(artist,title) → true
$meta_num(name)
タグ名 name の値の数を返します。
例 : $meta_num(artist) → "3"
$tracknumber()
トラック番号を 2 桁にして返します。
$tracknumber(n)
トラック番号を n 桁にして返します。

Technical information (技術情報)

$info(name)
フィールド名 name の値を返します。%__name% でもアクセスできます。
例 : $info(channels) → "2"
以下にフィールドの一例を示します。
フィールド名 説明
codec コーデック (例 : MP3)
codec_profile コーデックのプロファイル (例 : CBR)
samplerate サンプルレート、ヘルツ単位 (例 : 44100)
bitrate ビットレート、kbps (キロビット毎秒) 単位 (例 : 320)
tool ファイル作成に使用したツール、推測の場合もあります。(例 : LAME3.97)
encoding 圧縮の方式が lossness (可逆) か lossy (非可逆) か (例 : lossy)
channels チャンネル数 (例 : 2)
bitspersample サンプルあたりのビット数 (例 : 16)
tagtype タグの種類 (例 : id3v2|apev2)
cue_embedded 埋め込まれたキューシートの存在 (例 : no)
md5 オーディオの MD5 ハッシュ、コンテナが定義している場合のみ (例 : 1E24A910D91EF09A8CF403C9B6963961)
フィールド名 説明
ENC_DELAY LAME 独自の MP3 enc_delay の値 (例 : 576)
ENC_PADDING LAME 独自の MP3 enc_padding の値 (例 : 1536)
MP3_ACCURATE_LENGTH mp3_accurate_length がサポートされているかどうか (LAME 独自のヘッダー) (例 : yes)
MP3_STEREO_MODE MP3 ファイルで使用されているステレオモード (例 : mono、stereo、joint stereo、など)
VERSION ツールのバージョン (例 : 3.99)
FLAGS ツールのフラグ (例 : 22)
$codec()
コーデックの名称を返します。名称が利用できなければ、ファイルの拡張子を返します。
例 : $codec() → "WavPack"
$channels()
チャンネル数を返します。テキスト形式で表現できる場合は、数値がテキストに置き換えられます ("1" を "mono"、"2" を "stereo"、など)。
例 : $channels() → "stereo"
%replaygain_album_gain%
ReplayGain における、アルバムのゲイン値を返します。$info(replaygain_album_gain) は利用できません。
%replaygain_album_peak%
ReplayGain における、アルバムのピーク値を返します。$info(replaygain_album_peak) は利用できません。
%replaygain_track_gain%
ReplayGain における、トラックのゲイン値を返します。$info(replaygain_track_gain) は利用できません。
%replaygain_track_peak%
ReplayGain における、トラックのピーク値を返します。$info(replaygain_track_peak) は利用できません。

Special fields (専門フィールド)

%filename%
拡張子を除いたファイル名を返します。
%_filename% でも機能します。
%filename_ext%
拡張子を含んだファイル名を返します。
%_filename_ext% でも機能します。
%directory%
ディレクトリ名を返します。
%_directory% では機能しません。
%directoryname%
ディレクトリ名を返します。
%_directoryname% でも機能します。
%last_modified%
ファイルを最後に更新した日時を返します。
例 : "2005-12-22 00:04:10"
%path%
フルパスを返します。
%_path% でも機能します。
%_path_raw%
プロトコルスキームを含め、フルパスを URL 形式で返します。
%path_raw% では機能しません。
%subsong%
サブソングインデックスを返します。キューシート、トラッカーモジュール (MOD) など、単一ファイル内の複数のトラックを区別します。
%_subsong% でも機能します。
%_foobar2000_version%
foobar2000 のバージョンを返します。

Time/Date functions (時間関数/日付関数)

時間や日付の文字列を処理します。

$year(time)
時間や日付の文字列から、年の部分を 4 桁で返します。
$month(time)
時間や日付の文字列から、月の部分を 2 桁で返します。
$day_of_month(time)
時間や日付の文字列から、日の部分を 2 桁で返します。
$date(time)
時間や日付の文字列から、日付の部分を YYYY-MM-DD の形式で返します。
$time(time)
時間や日付の文字列から、時刻の部分を HH:MM:SS あるいは HH:MM の形式で返します。

Variable operations (変数操作)

文字列や数値を保持します。真偽値は保持できません。同じ文字列を何度も必要とする場合などに最適です。変数は大文字と小文字を区別しません。

$get(name)
変数名 name に最後に保存された値を返します。変数が定義されていなければ何も返しません。$get で返された真偽値は、変数が定義されたかどうかを示します。
$put(name,value)
変数名 name に値 value を保存し、同時に返します。
$puts(name,value)
変数名 name に値 value を保存しますが、何も返しません。
コード アウトプット
$put(foo,bar)$char(10)
$get(foo)$char(10)
$get(Foo)$char(10)
$puts(foo,2000)$char(10)
$get(foo)$char(10)
bar
bar
bar

2000