コンポーネントの設定/Columns UI/Track Info Panel/Track Info Mod

Last-modified: 2016-04-06 (水) 22:33:54
Counter: ?, today: ?, yesterday: ?

現在?人閲覧中

 

Track Info PanelのMOD版であるTrack Info Modのページです。

 

Track Info Panel
 └Track Info Mod


目次

 

これは何?

再生している音楽ファイルの詳細な情報を表示するパネル、 Track Info Panel の改造版。
従来の機能に加えて、フォントの変更、画像表示、ボタンの設置などができる。

導入方法

※Columns UI および .NET C++ ランタイム が必要です (参考:Columns UI
非 mod 版とは共用しないほうが無難

Preferences - Display - Columns UI から、右側の Layout タブを選択
Track Info Panel mod を挿入したいスプリッタを右クリックし、Insert Panel - Panels - Track Info mod を選択

設定画面

パネル上を右クリックして "Settings" をクリックすると設定画面が表示される

  • Font (フォント)
    デフォルトでのフォント
  • Colours (色)
    • Default text
      デフォルトでのテキストの色
    • Background
      デフォルトでの背景の色
  • Display options (ディスプレイに関する設定)
    • Minimum height
      高さの最小値
      高さがこの値以下にならなくなる
    • Edge Style
      パネルの周辺のスタイル
      好みに合わせて設定する
  • Formating string
    ここに構文を書き込む
  • Edit
    メモ帳などで構文を開く
  • Color code
    Title Formattingの "Color" の項を参照

Now Playing と Follow cursor

パネル上を右クリックして "Mode" から選択

  • Now Playing
    再生中の音楽トラックの情報を表示
  • Follow cursor
    プレイリスト上で選択した音楽トラックの情報を表示

書式

Track info mod では行頭にある半角スペースは無視されます。

$if(%isplaying%,

	Playing

,

	Not Playing

)

行頭にある半角スペースを文字として表示したい場合は、クォーテーションマークで囲みます。

test$char(10)

    test$char(10)

' 'test$char(10)

コメント行について

本来、Title Formatting では //… と行頭に書くとコメント扱いになりますが、 Track info mod においては以下の四つで構文を更新する条件を変更することができます。

// Global

global values を書く (例: $puts() など)

// Background

背景を書く (例: 後述する $imageabs() など)

// PerTrack

トラックごとに切り替わるものを書く (例: %title% など)
後述する $button() もここに書く

// PerSecond

毎秒アップデートするものを書く (例: %playback_time% など)

$if($meta_test(album artist),$puts(album_is_va,1))
$puts(fontStyle,$font(Calibri,10,bold,0-255-128))
...
$imageabs(,,images\bground.png,)
...
$button(0,0,0,0,0,0,'images\play.png,images\play_hover.png','Play or Pause',)
...
%playback_time%
...

関数

  • 以下で使われる「始点」は左上の角を基準にしています。*1
  • ' n 'には非負整数を入れてください。
  • []でデフォルトの値を表すことにします。デフォルトの値でいい場合は記述を省略することが可能です。

文字の配置

$align()

$align(H,V)
  • H: left / center / right [left]
  • V: top / middle / bottom [top]

文字の配置を指定する関数です。
曲名を左のまん中に表示させたい場合は

$align(left,middle)%title%

のようにします。

$alignabs()

$alignabs(X,Y,w,h,H,V)
  • X: 横方向の始点 (長方形領域の左上隅のx座標) [0]
  • Y: 縦方向の始点 (長方形領域の左上隅のy座標) [0]
  • w: 横幅 [0]
  • h: 高さ [0]
  • H: left / center / right [left]
  • V: top / middle / bottom [top]

$align()を高級にしたものです。
まず文字を表示可能な長方形領域を作成し、その中で文字の表示位置を指定します。
ペイントで長方形を選択するのと似たような感覚です。複雑な表示を行いたい場合は長方形達が重ならないよう気をつけましょう。

使用例
01.png

$alignset() & $alignrel()

$alignset()

これを使う直前までの文字表示位置の中で最も下にあるもののy座標*2を$alignrel()で文字を表示する領域の縦方向の始点Yにします。

$alignrel(H,V)
  • H: left / center / right [left]
  • V: top / middle / bottom [top]

$alignset()で定めた始点(0,Y)から%_width%×(%_height%-Y)の長方形領域を作成し、その中で文字の表示位置を指定します。

例えば

$align(right,middle)$font(,,bold,)'$align(right,middle)'
$alignabs(75,10,250,125,right,top)$font(,,italic,)'$alignabs(75,10,250,125,right,top)'
$alignset()
$alignrel(left,middle)$font(,,,)'$alignrel(left,middle)'

という書式だと下図のようになります。

02.png

フォント

$font()

$font(NAME,SIZE,OPTIONS,COLOR)
  • NAME: フォント名
  • SIZE: フォントのサイズ
  • OPTIONS:
    • bold: 太字
    • italic: 斜体
    • underline: 下線
    • strikeout: 取消線
    • nocleartype: クリアタイプ無効
    • glow-R-G-B: 影をつける
    • glowexpand-n: ぼかしを広げる [2]
    • glowalpha-n: ぼかしの透過度 [2]
    • glowblur-n: ぼかす
    • uppercase: すべて大文字に
    • lowercase: すべて小文字に
    • textalpha-n: 文字の透過度
    • textblur-n: 文字をぼかす
    • textexpand-n: 文字を広げる
    • fixedwidth-n: 文字幅を固定する
    • shadow: 影をつける
  • Color: R-G-BかSYSCOL-n*3
    • SYSCOLの値
      03D オブジェクト11非アクティブ ウィンドウの境界22ButtonLight
      1デスクトップ12アプリケーション作業域23InfoText
      2アクティブ タイトル バー 色113選択項目24InfoWindow
      3非アクティブ タイトル バー 色114選択項目のフォント25ButtonAlternateFace
      4メニュー15ButtonFace26HotTrackingColor
      5ウィンドウ16ButtonShadow27アクティブ タイトル バー 色2
      6WindowFrame17GrayText28非アクティブ タイトル バー 色2
      7メニューのフォント183D オブジェクトのフォント29MenuHilight
      8ウィンドウのフォント19非アクティブ タイトル バーのフォント30MenuBar
      9アクティブ タイトル バーのフォント20ButtonHilight
      10アクティブ ウィンドウの境界21ButtonDkShadow

OPTIONSをいくつか組み合わせて使用することもできます。一回使用すると次にまた使用するまでフォントは維持されます。
頭のほうに$puts(font1,$font(arial,9,,0-0-0))のようにしておくと後々楽かもしれません。

Hydrogenaudio Wikiのページにわかりやすい画像があります。

画像

$imageabs()

$imageabs(X,Y,image,options)
  • X: 画像を表示させる領域の横方向の始点 (画像左上隅のx座標) [0]
  • Y: 画像を表示させる領域の縦方向の始点 (画像左上隅のy座標) [0]
  • image: 画像の場所(相対パス)
  • options:
    • flow: 最前面に表示する
    • alpha-n: 画像の透過度(0-255)
    • rotateflip-n: 画像の上下左右の入れ替え、回転
      • rotateflipの値:
        左右上下両方none
        90°5731
        180°6402
        270°7513
        none4620
        回転は時計回りです。

任意の位置(X,Y)に画像を表示させます。
画像の場所はfoobar2000のプロフィールフォルダ*4からの相対パスです。絶対パスを使う場合は後述の$imageabs2()を使いましょう。

以下にいくつか例を挙げます。

  • 画像Aの上に画像Bをかぶせる
    $imageabs(0,0,covers\%album%.png,)$imageabs(0,0,images\overlay.png,)
  • 再生中は画像Aを、そうでないときは画像Bを表示する
    $if(%_isplaying%,$imageabs(0,0,images\a.jpg,),$imageabs(0,0,images\b.jpg,))
  • alpha-nオプションを使って文字を透かしてみる
    $alignabs(10,10,150,150,center,middle)$font(arial,14,bold,0-0-0)foobar2000
    $imageabs(10,10,images\abc_150×150.jpg,alpha-150)

$imageabs2()

$imageabs2(resizeW,resizeH,srcX,srcY,srcW,srcH,dstX,dstY,image,options)
  • resizeW: 画像の横方向のリサイズ
  • resizeH: 画像の縦方向のリサイズ
  • srcX: リサイズした画像を切り取る*5横方向の始点(画像上のx座標)[0]
  • srcY: リサイズした画像を切り取る縦方向の始点(画像上のy座標)[0]
  • srcW: 切り取る横幅 [%_width%]
  • srcH: 切り取る高さ [%_height%]
  • dstX: 切り取った画像を表示させる領域の横方向の始点 (画像左上隅のx座標)[0]
  • dstY: 切り取った画像を表示させる領域の縦方向の始点 (画像左上隅のy座標)[0]
  • image: 画像の場所(相対or絶対)
  • options:
    • flow: 最前面に表示する
    • alpha-n: 画像の透過度(0-255)
    • nokeepaspect: リサイズ時アスペクト比を維持しません
    • valign-t: 画像の上寄せ*6
    • valign-b: 画像の下寄せ
    • halign-l: 画像の左寄せ
    • halign-r: 画像の右寄せ
    • rotateflip-n: 画像の上下左右の入れ替え、回転
      • rotateflipの値:
        左右上下両方none
        90°5731
        180°6402
        270°7513
        none4620
        回転は時計回りです。
        共にリサイズ前の画像に適用されます。

$imageabs()を高級にしたものです。
画像をresizeW×resizeHにリサイズし、その中の長方形領域(srcX,srcY,srcW,srcH)を(dstX,dstY)に表示します。
拡大させたい場合はnokeepaspectをつけます。なお、アスペクト比を維持して拡大することはできません。
大雑把に言えば引数の上6つは画像の編集、下4つは$imageabs()の機能です。

以下にいくつか例を挙げます。

  • 画像をx×yにリサイズし、(10,20)に表示する
    $imageabs2(x,y,0,0,x,y,10,20,C:\program files\foobar2000\images\abc.jpg,)
  • 500×500の画像を300×300にリサイズし、そのリサイズした画像の右上75×75を(5,5)に表示する
    $imageabs2(300,300,225,0,75,75,5,5,D:\images\abc_500×500.jpg,)
  • 150×150の画像を300×300にリサイズし、そのリサイズした画像の右上75×75を90°回転させ、(0,0)に表示する
    $imageabs2(300,300,225,225,75,75,0,0,images\def_150×150.jpg,rotateflip-1 nokeepaspect)

長方形を描く

$drawrect()

$drawrect(X,Y,W,H,brushColor-R-G-B penColor-R-G-B OPTIONS)
  • X: 横方向の始点 (長方形の左上隅のx座標) [0]
  • Y: 縦方向の始点 (長方形の左上隅のy座標) [0]
  • W: 横幅 [%_width%]
  • H: 高さ [%_height%]
  • brushColor-R-G-B: 長方形の色 [-0-0-0]
  • penColor-R-G-B: 境界の色 [-0-0-0]
  • OPTIONS:
    • ALPHA-n: 透過度 (0-255)
    • EXPAND-n: 指定した数値分長方形を拡張する
    • BLUR-n: ぼかす
    • WIDTH-n: 境界の太さ [1]

長方形を描きます。偶奇で背景色を分ける場合などに使いましょう。
色をSYSCOL-nで指定する事も可能です。
brushColor-nullで枠だけ、penColor-nullで枠無しの長方形を描くことができます。

以下に例を挙げます。

  • 20×20の黒枠を作る
    $drawrect(10,10,20,20,brushcolor-null pencolor-0-0-0)

ボタン - $button() & $button2()

$button(DstX,DstY,X,Y,W,H,IMAGE,HOVER IMAGE,COMMAND,OPTIONS)

ボタンを画像で表示します。

  • DstX: 画像を表示する横方向の始点 [0]
  • DstY: 画像を表示する縦方向の始点 [0]
  • X: ボタンが起動する有効範囲のDstXからの横方向の始点 [0]
  • Y: ボタンが起動する有効範囲のDstYからの縦方向の始点 [0]
  • W: ボタンが起動する有効範囲の横幅 [値を指定しないとフリーズ?]
  • H: ボタンが起動する有効範囲の高さ [値を指定しないとフリーズ?]
  • IMAGE: 画像を相対パスか絶対パスで指定
  • HOVER IMAGE: マウスを載せたときの画像を相対パスか絶対パスで指定
  • COMMAND: コマンドを指定 (下記参照)
  • OPTIONS: なし
$button2(DstX,DstY,X,Y,W,H,TEXT,HOVER TEXT,COMMAND,OPTIONS)

ボタンをテキストまたは画像で表示します。

  • DstX: テキストを表示する横方向の始点 [0]
  • DstY: テキストを表示する縦方向の始点 [0]
  • X: ボタンが起動する有効範囲のDstXからの横方向の始点 [0]
  • Y: ボタンが起動する有効範囲のDstYからの縦方向の始点 [0]
  • W: ボタンが起動する有効範囲の横幅 [値を指定しないとフリーズ?]
  • H: ボタンが起動する有効範囲の高さ [値を指定しないとフリーズ?]
  • TEXT: 表示するテキスト
  • HOVER TEXT: マウスを載せたときのテキスト
  • COMMAND: コマンドを指定 (下記参照)
  • OPTIONS: なし

ボタンを表示します。
以下に注意点をあげます。

  • 画像、テキストに対して W と H の値があまりに小さいとボタンが表示されないことがある
  • 画像の表示に相対パスを使う場合、最初に半角スラッシュを付ける
    $button(0,0,0,0,25,25,/images\pause.png,images\pause_hover.png,pause,)
  • 画像のパスに "#" の文字を使うのは避けたほうがよい
  • IMAGE,HOVER IMAGE,TEXT,HOVER TEXT,COMMAND の部分はシングルクォーテーションマークで囲んだほうがよい(特に、$,%,[,] などの文字を含んでいるとき)
    $button2(0,0,0,0,30,13,'$font(tahoma,8,,0-0-0)Forward','$font(tahoma,8,underline,0-0-0)Forward','Seek ahead by 10 seconds',)

COMMAND について

コマンドから以下のことが実行できます。

  1. メインメニュー、コンテキストメニューなどのコマンドを実行
    メインメニューやコンテキストメニューのコマンドを実行できます。
    例えば、メインメニューの Playback/Order/Default を実行したい場合は、COMMMAND に
    Default
    と、コンテキストメニューの Properties を実行したい場合は
    Properties
    と書きます。
    その他のコマンドの一覧
  2. プレイリスト、Columns UI の Layout の "Presets" などの切り替え
    それぞれの切り替えたいものの名前を打ち込みます。
    例えば、Columns UI の Layout の Preset を "temporary" という名前のものに切り替えたいときは、 COMMMAND を
    temporary
    と、"My Best" という名前のプレイリストをアクティブにしたい場合は
    'My Best'
    とします。
    ここで名前がが他のものと被っていると思うように動作しないことがあります。
    例えば、"Default" という名前のプレイリストに切り替えたい場合、COMMANDに
    Default
    と書くと、Playback/Order/Default が実行されてしまいます。
    この問題を解決するには、プレイリストの名前を変更する必要があります。
  3. コンテキストメニューから、Media Library にある曲を絞り込み検索
    FILTER:name|value:name2|value2…
    という形で記入します。
    name
    この部分には好きな名前を記入してください。
    value
    この部分に選別方法を Title Formatting で記述します。
    !source! と書くことでプレイリストから絞込むことができます。
    ''FILTER:source|!source!:decade|$mul($div(%date%,10),10):artist|%artist%:album|%album%:'
  4. コンテキストメニューから、プレイリスト上の曲をソート
    FILTER:name|value:name2|value2…
    という形で記入します。
    name
    この部分には好きな名前を記入してください。
    value
    この部分に選別方法を Title Formatting で記述します。
    RESET , $sorted() などについては編集希望
    'SORT:genre|%genre%:artist|%artist%:album|%album%'
  5. タグの value の編集
    TAG:type:tag:value
    という形で記入します。
    type
    この部分に SET と書き込むことでタグを上書き、ADD でタグを追加、REMOVE でタグを削除することが出来ます。
    tag
    この部分にタグ名を記入します。
    value
    タグ付けする値を記入します。
    TAG:SET:rating:1
    %rating% の値が1になります。
  6. PVAR…
    編集希望

ボタンの設定例

  • 文字で再生、一時停止などをする (Mode は Now Playing にしてください)

$button2(5,2,0,2,30,21,'$alignrel(center,middle)$font(MS ゴシック,10,,)Stop','$alignrel(center,middle)$font(MS ゴシック,10,underline,)Stop',Stop,)

$if($and(%_isplaying%,$not(%_ispaused%)),
$button2(44,2,0,2,36,21,'$alignrel(center,middle)$font(MS ゴシック,10,,)Pause','$alignrel(center,middle)$font(MS ゴシック,10,underline,)Pause',Pause,)
,
$button2(44,2,0,2,36,21,'$alignrel(center,middle)$font(MS ゴシック,10,,)Play','$alignrel(center,middle)$font(MS ゴシック,10,underline,)Play',Play,)
)

$button2(95,2,0,2,30,21,'$alignrel(center,middle)$font(MS ゴシック,10,,)Prev','$alignrel(center,middle)$font(MS ゴシック,10,underline,)Prev',Previous,)

$button2(135,2,0,2,30,21,'$alignrel(center,middle)$font(MS ゴシック,10,,)Next','$alignrel(center,middle)$font(MS ゴシック,10,underline,)Next',Next,)

  • %rating% の値を1増やす
    $button2(5,2,0,0,50,21,'$alignrel(center,middle)$font(MS ゴシック,10,,)Rate ++','$alignrel(center,middle)$font(MS ゴシック,10,underline,)Rate ++','TAG:SET:rating:'$if(%rating%,$add(%rating%,1),1),)

寸法

$calcwidth()

$calcwidth(text)

textはなんでもかまいません。textの横幅を返します。$if()などと共に使いましょう。

  • フォントサイズ15で%title%の横幅が%_width%を超えてしまうときはフォントサイズを9にする
    $ifgreater($calcwidth($font(,15,,)%title%),%_width%,$font(,9,,),$font(,15,,))%title%

$calcheight()

$calcheight(text)

textはなんでもかまいません。textの高さを返します。$if()などと共に使いましょう。

$pad()

$pad(x,y)

左右をx、上下をyだけ詰めます。$align(), $alignrel(), $drawrect()に影響します。

例えば

$pad(a,b)
$align(left,top)

$alignabs(a,b,$sub(%_width%,2*a),$sub(%_height%,2*b),left,top)

と同値です。

$fileexists()

$fileexists(File path)

ファイルが存在すれば1を返し、存在しなければ何も返しません。
画像Aがあるときはそれを、ない時は画像Bを表示させるには

$if($fileexists(images\aaa.jpg),$imageabs(0,0,images\aaa.jpg,),$imageabs(0,0,images\bbb.jpg,))

のようにします。

$textcolor()

$textcolor(n-n-n)

文字色を指定します。$rgb()や$hsl()と違い、SYSCOL-nを使用することができます。

##

#lineheight,n#

文字列の高さを指定します。$align()などで表示位置を指定している場合はその後で使います。効果が今ひとつピンとこない場合は適当に広い場所で$crlf()や$char(10)を使い改行させてみましょう。

#shade#

文字列の背景色を濃くします。上と同様に$align()の後で使います。

Tips

  • パネルのレイアウトを変更すると設定が消えてしまうので、 Formatting string のバックアップをとっておくこと
  • 音楽ファイルをパネルにドラッグすると、そのファイルの情報が表示される
  • 非Mod版と異なり、マウスホイールを用いても縦方向のスクロールすることができない

リンク集



*1 座標系はそこを原点として右方向にx、下方向にy。位置を指定する引数には負の値が使える。
*2 厳密にはその次の行左上隅のy座標
*3 msstyleの色をとってくる
*4 User Profile Supportが有効になっていればC:\Documents and Settings\ユーザー名\Application Data\foobar2000\, それ以外はfoobar2000本体のあるディレクトリ
*5 クロップする
*6 アスペクト比を維持したリサイズで効果を発揮します