今日もガクリ('A`)
きっと明日もまたガクリ?('A`)
2024 / 04
« «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
archive for the ‘foobar2000’ category
現在、私が使っている foobar2000 の UI はこうなっています

バージョン 0.9.5.3 から作者の暴走により、それまで使えてたコンポーネントが使用できなくなったので、1.x 系へのバージョンアップを控えていましたが、私が Panels UI で実現していた UI が 1.x 系でも完全ではないが、ほぼ再現できました。実はこれから紹介する UI は 2011/12 頃から作成したものを少しずつ手直ししつつ現在に至ったものです

foobar2000

本記事執筆時点での foobar2000 のバージョンは以下の画像の通りです

foorbar2000 version
foobar2000 version

現在、私が使っている foobar2000 の UI

現在、私が使っている foobar2000 の UI
現在、私が使っている foobar2000 の UI

特徴は上記画像の青色の枠1で囲っているボタンをクリックする度に、青色の枠2 が下記画像の様に Playlist switcherPlaylist Tree Mod PanelQueue Contents Editor と順次切り換えられる事です

foobar2000 UI 右下パネル切り換え
foobar2000 UI 右下パネル切り換え

使用しているコンポーネント一覧

名称ファイル名
Album List 4.6foo_albumlist.dll (2018-07-24 10:54:02 UTC)
Audioscrobbler 1.4.7foo_audioscrobbler.dll (2010-06-04 00:27:04 UTC)
CD Audio Decoder 3.0foo_cdda.dll (2018-07-24 10:54:04 UTC)
Converter 1.5.3foo_converter.dll (2018-07-24 10:54:04 UTC)
Cuesheet Creator 0.4.6foo_cuesheet_creator.dll (2007-03-10 02:58:28 UTC)
Custom Database 0.1.0_beta1foo_customdb.dll (2010-03-04 03:10:54 UTC)
Equalizer 1.2.1foo_dsp_eq.dll (2018-07-24 10:53:56 UTC)
SoX Resampler 0.8.3foo_dsp_resampler.dll (2013-01-14 22:04:36 UTC)
Standard DSP Array 1.3.1foo_dsp_std.dll (2018-07-24 10:53:58 UTC)
File Operations 2.3foo_fileops.dll (2018-07-24 10:54:00 UTC)
Online Tagger 0.7foo_freedb2.dll (2018-07-24 10:54:14 UTC)
Monkey's Audio Decoder 2.1.7foo_input_monkey.dll (2015-12-26 17:39:03 UTC)
FFmpeg Decoders 3.2.4foo_input_std.dll (2018-07-24 10:54:34 UTC)
TAK Decoder 0.4.7foo_input_tak.dll (2015-12-26 17:45:09 UTC)
TTA Audio Decoder 3.4foo_input_tta.dll (2017-04-02 13:23:01 UTC)
Logitech LCD Display 0.5.5foo_logitech_lcd.dll (2010-11-16 23:25:16 UTC)
Masstagger 1.8.4foo_masstag.dll (2013-04-13 06:28:20 UTC)
Menu Addons 1.4.2foo_menu_addons.dll (2010-01-16 02:18:34 UTC)
Navigator 0.8foo_navigator.dll (2014-07-20 07:57:34 UTC)
Playlist Tree Mod Panel 3.0.6.3 Scheme [Jan 9 2010 - 15:37:18]foo_playlist_tree_mod.dll (2010-01-09 14:37:50 UTC)
Playlist History 0.1.6foo_playlisthistory.dll (2014-02-06 20:47:54 UTC)
Queue Contents Editor 0.5.1foo_queuecontents.dll (2016-01-06 16:29:40 UTC)
Quick Tagger 1.0.3foo_quicktag.dll (2010-09-01 01:15:08 UTC)
ReplayGain Scanner 2.3foo_rgscan.dll (2018-07-24 10:54:10 UTC)
Seek box 0.0.3foo_seek_box.dll (2010-04-21 06:03:30 UTC)
Skip Track 1.9.8foo_skip.dll (2016-10-14 12:16:59 UTC)
Columns UI 0.5.1foo_ui_columns.dll (2017-04-09 00:27:24 UTC)
Func User Interface 0.3.0_beta1foo_ui_func.dll (2010-03-05 08:44:00 UTC)
Default User Interface 0.9.5foo_ui_std.dll (2018-07-24 10:54:14 UTC)
Album Art Panel 0.2.7foo_uie_albumart.dll (2007-10-23 13:39:18 UTC)
Album list panel 0.3.7foo_uie_albumlist.dll (2017-04-09 00:52:02 UTC)
Biography View 0.4.2.4foo_uie_biography.dll (2010-12-10 23:47:22 UTC)
Console panel 0.5foo_uie_console.dll (2017-04-09 00:51:57 UTC)
ELPlaylist 0.6.9.1.2(beta)foo_uie_elplaylist.dll (2010-10-30 12:51:16 UTC)
Library Tree 0.3.4.6.1foo_uie_library_tree.dll (2011-07-24 09:08:24 UTC)
Panel Stack Splitter 0.3.8.3(alpha)foo_uie_panel_splitter.dll (2009-12-09 15:16:12 UTC)
Typefind 0.3.1foo_uie_typefind.dll (2017-04-09 00:51:48 UTC)
Channel Spectrum panel 0.17.2foo_uie_vis_channel_spectrum.dll (2008-05-17 18:02:12 UTC)
ZIP/GZIP/RAR Reader 1.8foo_unpack.dll (2018-07-24 10:54:08 UTC)
UPnP/DLNA Renderer, Server, Control Point 0.99.49foo_upnp.dll (2016-10-28 14:05:26 UTC)
表. コンポーネント一覧

背景色がこの色で表記しているコンポーネントは必須です

Customize, foobar2000, music, PC, softwarecomment (1)no trackbacks(6,683)
foobar2000 : foo_custominfo データベースダイエット

普段はあまり気にしていなかったのですが、先日に foobar2000 本体やコンポーネントをアップデートした際に異様に起動が遅い…foobar2000 をインストールしたディレクトリを覗いてみると custominfo_sqlite.db のサイズが 6MB 超えている…

なんでだろうと思い、一旦 foobar2000 を終了し SQLite Database Browser にて custominfo_sqlite.db の中を見てみると、同じ曲の fieldname が PLAYED_TIMESTAMP のレコードがやたらとできてる…多分コレのせいでしょう…

Preferences › Playback Statistics Custom › Playback Statistics Custom Settings の Play Stamp をチェックしていると Playback Statistics Update Timing に合致する度にレコードが挿入されてしまう。要はコレは再生履歴なんですが、foobar2000 じゃこのデータを使う手段や使い道がないのでチェックオフにしておく

で、PLAYED_TIMESTAMP フィールドは UI の中でも使用していないので、このレコードを削除する事にします。SQLite Database Browser で行ってもいいんですが、PHP で以下のような簡易ダイエットスクリプトを作成して実行

  1. <?php
  2. $dbf = './custominfo_sqlite.db';
  3. $dbh = new PDO( 'sqlite:'.$dbf );
  4. $stmt = $dbh->query( 'DELETE FROM quicktag WHERE fieldname = "PLAYED_TIMESTAMP"' );
  5. echo 'row count: '.$stmt->rowCount()."\n";
  6. echo 'error code: '.$stmt->errorCode()."\n";
  7. $stmt = $dbh->query( 'VACUUM' );
  8. echo 'error code: '.$stmt->errorCode()."\n";
  9. ?>

上記スクリプトを実行する事によって、約 25000 レコードが削除され、6.02MB だったファイルが 1.19MB までに小さくなりました。小さくなった custominfo_sqlite.db を foobar2000 のディレクトリに戻し、起動…サックリ起動するようになりました

使用しているフィールド PLAY_COUNT, FIRST_PLAYED_TIMESTAMP, LAST_PLAYED_TIMESTAMP が UI 側で正常に表示される事を確認して終了です

参照

foobar2000, PHPno commentsno trackbacks(17,320)
foobar2000 : 0.9.5.2 へバージョンアップ
foobar2000 v0.9.5.2 Setup
foobar2000 v0.9.5.2 Setup

と言っても、0.9.5.1 から 0.9.5.2 へのバージョンアップです…0.9.5.3 から作者が暴走し始めたので、1 0.9.5.2 にしました

取り敢えず、自分が使用しているコンポーネントの覚え書き


foobar2000 standard
foobar2000 standard

コンポーネントもアップデートして、自分が作った UI が動作する事も確認して終了…また、暇をみて UI 弄りでもしましょうかね…


  1. 以前から怪しい兆候はありましたが、ここまでやるとは…('A`)
foobar2000comment (1)no trackbacks(9,658)
Panels UI を安定させる為に

Panels UI が不安定で頻繁に foobar2000 がクラッシュする問題についてチョット纏めてみました。あくまでも、私自身のソフトウェア環境、経験、検証に基づくものだと言う事を前置きしておきます

私が主に foobar2000 を動かしている環境としては…

  • OS:
    Windows XP SP2 + hotfixes
    hotfix やセキュリティパッチは必要な分は全て適用させています
  • foobar2000:
    0.9.5 を使用しています。日本語環境のパッチは私には必要ないので適用させていません
  • Panels Ui:
    0.14.12 を使用しています。現在、自分の環境下では安定して動作しているので 0.13.x 系には戻さないでしょう

以上のような環境なんですが、Panels UI を使い始めた頃は、まともに設定画面を開けなくて苦労しました。そこで、以下の事を試しました

  1. AppLocale Utility を試す
  2. ウィンドウを制御する常駐ソフトウェアの使用をやめる

1番に関してはほとんど (と言うか、全く) 効果が得られませんでした。アプリケーションの言語を色々と変更してみたんですが…劇的な効果が得られたのは 2番でした。ウィンドウを制御するソフトウェアに私は ぴたすちお 1 を使用していたんですが、このソフトウェアの使用をやめる事によって、設定画面を開く事によって foobar2000 がクラッシュすると言う問題は完全に解消しました

これで、設定画面が完全に開けるようになって、るんるん気分 2TF を書き、foobar2000 でお気に入りを再生させていたのですが、長時間再生させていると下記に示している不具合が出てくるケースに遭遇 3

  1. 表示が乱れる。foobar2000 のウィンドウのみならずデスクトップにまで表示の乱れが発生する
  2. foobar2000 がクラッシュする

上記、2つの問題はかなりの時間を浪費して調べた 4 結果、Panels UI の TF を記述する際には以下の点に注意する様にする事によって解消しました

  1. Single Column PlaylistTF には $calcheight および $calcwidth を含めない
  2. なるべく $newsyntax を使用する

以上のような対策を施す事によって、私の環境下では foobar2000 + Panels UI 0.14.12 は安定して動作しています


  1. 断わっておきますが、このソフトが悪い訳ではありません
  2. 既に死語('A`)
  3. Panels UI 0.14.12 での話です
  4. TF に問題があると推測した私は TF を少しずつ削っていきながら、問題のある部分を特定していくという作業でした。ひょっとしたら勘違いしているかもしれませんが…('A`)
foobar2000no commentsno trackbacks(5,876)
Panels UI introduction : 私的マニュアル

Panels UI の私的マニュアルです。Commands references なんていきなりディープなものを作っておきながら、introduction (序章、入り口) 部分のマニュアルがないのはオカシイので作ってみました。特に 原文: Foobar2000:Components 0.9/Panels UI (foo ui panels) - Hydrogenaudio Knowledgebase には特にタイトルが明記されていなかったので、内容から推測して勝手に introduction と命名しました


Panels User Interface

Panels User Interface

Maintainer:terrestrial
Stable release:0.13.8 beta [June 12 2007]
Preview release:0.14.12 beta [Jul 18 2007]
Foobar version:0.9.4.x
Use:Graphical user interface
License:-
Website:panels.fooblog2000.com
Discussion thread:Hydrogenaudio Forums

Panels UI は titleformatting の使用によるfoobar2000 の外観を変更する為の GUI です。これらは Panels UI 独自の titleformat 機能およびフィールドと foobar2000 の機能とフィールドを含んでいます。Panels UI は現在統合されている Track Info Mod と Single Columns Playlist コンポーネントの後継者です

Panels UI はまだベータ段階にあって、それは手広くテストされていません

Panels UI の開発は 2007年7月現在 停止している様です…('A`)

目次
  1. 特徴 (Features)
  2. 要求仕様 (Requirements)
  3. 導入 (Installation)
  4. ガイド (General guides)
  5. 特定のガイド (Specific guides)
    1. 0.13.x
    2. 0.14.x
  6. 非互換性 (Known incompatibilities)
  7. 参照 (See also)
  8. 比較的重要なリンク (Important links)
    1. オフィシャルサイト (Official)
    2. コミュニティ (Community)

特徴 (Features)

以下の特徴を提供するカスタマイズ可能なユーザーインターフェイス (UI) です

  • 素早くレイアウトを切り替えられる。また、レイアウトをファイルとしてインポート、エクスポート

    このインポート、エクスポートは機能していません。インポートは PanelsUI ディレクトリに .PUI ファイルをコピーする事で代用できます。エクスポートは Layout を変更または foobar2000 を終了した際に .PUI ファイルが保存されるので、適当なディレクトリにコピーする事で代用できます

  • イメージの表示と線描画
  • 要素の位置決め機能。フォントエフェクト。foobar2000 ウィンドウと Windows Vista Aero Glass の制御
  • 対話的なインターフェイスを提供する為のイメージ、テキストボタン
  • foobar2000 が終了しても保存される変数 PVARS
  • インターフェイスの中に他の UI コンポーネントを表示、制御する機能
  • 以下の 3つのコンポーネントを含んでいます
    • Single Column Playlist (プレイリスト)
    • Library Filter (アルバムリスト)
    • Track Display (本質的には Panels UI 自身)

要求仕様 (Requirements)

  • バージョン 0.9.4 以上の foobar2000
  • GDI+ (Windows2000 のみ)

導入 (Installation)

  • 最新バージョンをダウンロードし、解凍した DLL ファイルを foobar2000 コンポーネントディレクトリへコピーまたは移動します
  • コンポーネントを新しいバージョンにアップデートする前に .PUI ファイルのバックアップを行ってください。これらのファイルは異なるバージョン間で互換性がありません

ガイド (General guides)

  • Basic User's Guide - 設定情報の詳細。Single Column Playlist 入門書。FAQ や Tip's など
  • Intermediate User's Guide - PUI ファイルに関する情報。Preferences, Configuration, TF の構造、再描画タイプなど

特定のガイド (Specific guides)

0.13.x

  • Command Reference - Panels UI バージョン 0.13.x の Titleformat 詳細マニュアル

0.14.x

バージョン 0.14.x は foobar2000 をクラッシュさせる場合があって不安定です。この理由から 0.14.x は公式の Known Problematic Components(問題のあるコンポーネント) にリストされています

非互換性 (Known incompatibilities)

foo_uie_tabs の中に Track Display を加えた場合、その中の Track Display の $panel は機能しません

参照 (See also)

比較的重要なリンク (Important links)

オフィシャルサイト (Official)

コミュニティ (Community)

foobar2000no commentsno trackbacks(19,156)
$newsyntax で
zodiac-1.00
zodiac 1.02 ('A`)

今回はタイトルの通り $newsyntax を使って一つ作ってみました。楽ですね、これは。表示するパーツをカテゴリーに分けて、$alignabs を行えば、あとはその中では最後に行った $alignabs からの相対座標になるので、座標を考えるのに頭を悩ます事はなさそうです

※ 掲載されているスクリーンショットの内容などは記事執筆者 zodiac の趣味、趣向を表すモノではありません

ダウンロード

zodiac-1.02.pui.zip (2.43MB)

  • md5: d2535dab91639c184a4f4c3c7fe169fe
  • sha-1: 631a689fdf85f0ef555d764a762ba9dace88b695

.zip アーカイブファイルの中身

必須コンポーネント

注意: 各コンポーネントの日付、バージョン番号等は記事執筆時点のものです

必須ではないが、その他コンポーネント

注意: コンポーネントの日付、バージョン番号等は記事執筆時点のものです

インストール

  1. アーカイブファイルを適当なディレクトリへ解凍します
  2. foobar2000 を終了します。終了する際に User Interface Module が Panels UI でない場合、User Interface Module を Panels UI に変更し、foobar2000 を終了します
  3. 解凍された中の PanelsUI ディレクトリを foobar2000 をインストールしたディレクトリへコピーします
  4. インストールすべきコンポーネントがある場合、各コンポーネントのマニュアルに従い、インストールします
  5. Preferences を開き、Panels UI Layoutzodiac-1.02.pui に変更します
  6. zodiac-1.00
    ウィンドウの左隅上の部分をクリックすると背景イメージ画像の大きさに合わせてウィンドウサイズが変わります
  7. zodiac-1.00
    リボンをクリックすると foobar2000 のメインメニューがポップアップ表示します
  8. 幾つかは使用する環境に合わせて TF を修正する必要があります
    1. メインウィンドウの適当な所を右クリックし、Track Display の Configuration ダイアログウィンドウを表示させます
    2. Globals をボタンをクリックし、Formatting string ダイアログウィンドウを表示させます
    3. フォント名、アルバム画像のファイル名を決定している TF 部分を環境に合わせて変更します

      // ----- font names
      $puts(f.n1,'ヒラギノ丸ゴ Pro W4')
      $puts(f.n2,'Silkscreen')
      $puts(f.n3,'Tahoma')
      $puts(f.n4,'Georgia')

      // ----- album art work image file
      $if($fileexists($replace(%_path%,$ext(%_path%),png)),
      $puts(CoverImg,$replace(%_path%,$ext(%_path%),png)),
      $if($fileexists($replace(%_path%,$ext(%_path%),jpg)),
      $puts(CoverImg,$replace(%_path%,$ext(%_path%),jpg)),
      $if($fileexists($replace(%_path%,$ext(%_path%),gif)),
      $puts(CoverImg,$replace(%_path%,$ext(%_path%),gif)),)))

使い方

参照: how to use

使用しているフィールド

  • %rating%
    レイティングの制御と表示に使用
  • %play_count%
    再生回数の制御と表示に使用
  • %first_played_timestamp%
    最初の再生日時を表示に使用
  • %last_played_timestamp%
    最後の再生日時を表示に使用

使用しているコンテキストメニュー

  • Custom Info »» Rate 5
  • Custom Info »» Rate 4
  • Custom Info »» Rate 3
  • Custom Info »» Rate 2
  • Custom Info »» Rate 1
  • Custom Info »» Rate 0
  • Custom Info »» Rate +1
  • Custom Info »» Rate -1
  • Custom Info »» Play Count +1
  • Custom Info »» Play Count -1

更新情報

バージョン日付内容
1.022008/07/12 (土)こっそり更新…('A`)
1.012008/02/17 (日)ちょこっと修正
1.002008/02/13 (水)新規作成。この名前は何とかならんかったものか…('A`)
foobar2000no commentsno trackbacks(11,083)
Panels UI : 矩形だけでレーティング操作
コード実行結果画像
コード実行結果画像 1

某掲示板のスレにやっつけで、矩形だけでレーティングの設定を行う Panels UI の TF を挙げたんですが、その時に書いた TF のコードをもっと汎用的にしてみました

線描画のみなので、画像などのリソースは必要ありません。…が、下記のコードを見てお解りの様に美しくないです。2 TF はループインストラクションがないので、どうしてもこうなってしまいます。あとは、レートの設定を行う事はできるんですが、該当のタグを消す事はできません

  1. // Global
  2. // padding (ボタン間の隙間)
  3. $puts(m.p, 1)
  4. // start at position (左上隅の描画開始位置 m.l=左 m.t=上)
  5. $puts(m.l, 15)
  6. $puts(m.t, 15)
  7. // 矩形の幅 (ボタンの幅)
  8. $puts(w, 20)
  9. // 矩形の高さ (ボタンの高さ)
  10. $puts(h, 5)
  11. // 通常表示時の線の色
  12. $puts(c.n, 212121)
  13. // レイティングが設定されていた時のボタン全体の色
  14. $puts(c.o, 212121)
  15. // マウスポインターをボタン上に重ねた時のボタンの枠線の色
  16. $puts(c.h, 808080)
  17. // PerTrack
  18. $rectabs(0, 0, %_width%, %_height%, $c(220,220,220), null)
  19. $select(%rating%,
  20.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null),
  21.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
  22.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null),
  23.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
  24.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null)
  25.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h), $get(c.o), null),
  26.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
  27.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null)
  28.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h), $get(c.o), null)
  29.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*1}+{$get(m.p)*1}), $get(w), $get(h), $get(c.o), null),
  30.   $rectabs($get(m.l), $eval($get(m.t)), $get(w), $get(h), $get(c.o), null)
  31.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
  32.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null)
  33.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h), $get(c.o), null)
  34.   $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*1}+{$get(m.p)*1}), $get(w), $get(h), $get(c.o), null)
  35. )
  36. $textbutton($get(m.l), $get(m.t), $get(w), $get(h),
  37.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
  38.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 5', tooltip, 'rate 5')
  39. $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*1}+{$get(m.p)*1}), $get(w), $get(h),
  40.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
  41.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 4', tooltip, 'rate 4')
  42. $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h),
  43.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
  44.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 3', tooltip, 'rate 3')
  45. $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h),
  46.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
  47.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 2', tooltip, 'rate 2')
  48. $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h),
  49.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
  50.   $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 1', tooltip, 'rate 1')

ボタンの表示順は上から 5, 4, 3…1 と 5段階に表示しています。基本的に太字部分の変数を適切な値に変更を行う事によって動作します。$textbutton() のパラメーター command はメニューを呼び出していますが、これも適切な値に変更します

ボタンの並び順は縦方向ですが、$textbutton()$rectabs() の座標パラメーターを変更する事で横方向にボタンを描画させる事もできます


  1. 掲載しているスクリーンショットの鏃の様なものは私が普段使用しているマウスカーソルです。ツールチップテキストが IrfanView のスクリーンショット機能で撮れていません…('A`)
  2. $textbutton()$rectabs()$imagebutton(), $imageabs() に変更しても、そんなに変わりません。TF とはこんなもんです
foobar2000no commentsno trackbacks(3,984)
Panels UI Commands reference : 私的マニュアル

Panels UI 0.14.12 のマニュアルメモです。公式マニュアルの体裁を維持しつつ Panels UI を使っている時にプレーンテキストファイルにメモとして残していたのを加えたものを加筆したモノなので公式マニュアルのローカライズ版ではありません

また Panels UI 0.14.12 を使いながら titleformat の実行結果やその時のコード、スクリーンショットなども掲載しています

なお、ここの blog の仕様上、投稿記事の容量に制限がある為、現在の所 2つの記事に分けて掲載しています。記事の続きの方にさらに続けて内容が書けるのでそちらの方に vol.2 の分を加えました。私のブログでは記事の続きを閲覧する為にクリックは必要なく、続けて表示される様にテンプレートを修正しています

実行環境
  • Core (2008-01-01 02:57:54)
    foobar2000 core 0.9.5
  • foo_ui_panels.dll (2007-07-18 13:42:00)
    Panels UI 0.14.12 beta [Jul 18 2007 - 13:39:30]

※ 掲載されているスクリーンショットの内容は記事執筆者 zodiac の趣味、趣向を表すモノではありません


このリファレンスは Panels UI 特有の titleformat 機能と変数に関する情報です。ほとんどの情報が Panels UI 0.14.10 で導入された新しい構文を使用しています

目次
  1. 一般
    1. Color functions
      1. $c(r,g,b) または $color(r,g,b)
      2. $h(h,s,l)
      3. $hexcolor(c)
      4. $blendcolor(a,b,n)
      5. $syscolor(n)
    2. Alignment functions
      1. $alignabs()
      2. $alignabs(x,y)
      3. $alignabs(x,y,w,h[,h-align,v-align])
      4. $align(position[,position])
      5. $lineheight(n)
      6. $wordwrap()
      7. $tabx(n)
      8. $width()
      9. $height()
    3. Font functions
      1. $font(name,size[,option])
      2. $addcharspace(n)
      3. $fixedwidth(n)
      4. $textcolor(c)
      5. $smallcaps(large font,small font,text)
    4. Image and Shape functions
      1. $imageabs(x,y,filename[,options])
      2. $rectabs(x,y,w,h[,brush color,pen color,options])
    5. Persistent Variable functions
      1. $getpvar(name)
      2. $setpvar(name,value)
    6. Other functions
      1. $calcheight(s)
      2. $calcwidth(s)
      3. $eval(expression)
      4. $fileexists(file)
      5. $fontexists(name)
      6. $newsyntax()
    7. Special Fields
      1. %_height%
      2. %_width%
      3. %foobar_path%
      4. %glass%
      5. %playlist_name%
      6. %sortgroup%
      7. %sortgroup_preset_count%
  2. Track Display
    1. Redraw Types
      1. // Global
      2. // Background
      3. // PerTrack
      4. // PerSecond
    2. Button functions
      1. $imagebutton(x,y,image,hover image,command[,options])
      2. $textbutton(x,y,w,h,text,hover text,command[,options])
    3. Window functions
      1. $glass(left,top,right,bottom)
      2. $settitle(s)
      3. $settray(s)
      4. $windowstyle(option[,option])
    4. Other functions
      1. $panel(id,name,x,y,width,height)
      2. $sortgroup_preset(n)
    5. Special Fields
      1. %_trackinfo_mode%
      2. %_trackinfo_notrack%
  3. Single Column Playlist
    1. Group info
      1. $info_num(field)
      2. $meta_sum(field)
      3. %_focused%
      4. %_selected%
      5. %group_index%
      6. %group_count%
  4. Library Filter
    1. Group info
      1. %expanded%
      2. %selected%
      3. %sub_index%
      4. %max_index%
      5. %track_count%
      6. %child_count%

一般

Color funtions

色指定を異なった書式で指定します。各関数は BGR 16進数 の書式文字列を返します

$c(r,g,b) または $color(r,g,b)

パラメーター r には赤。g には緑。b には青 を 10進数表記の文字列で 0~255 の範囲内で指定します。RGB 形式でパラーメーターで指定された色を返します

$c(0,128,255)
$color(0,128,255)

$h(h,s,l)

パラメーター h には色相。s には彩度。l には輝度 を 10進数表記の文字列で指定します。HLS 形式でパラーメーターで指定された色を返します

$h(359,359,255)

色相、彩度、輝度で指定する値に統一性が見られない理由からなのか、指定する値の有効範囲に関する明示的な記述がありません。ただ、パラメーター h(色相) と s(彩度) は 0~359 が有効範囲の様です。無効な値を指定すると近似値を返す様です

$hexcolor(c)

パラメーター c には 16進数表記の文字列で指定します。RGB 16進数 形式でパラーメーターで指定された色を返します。HTML 記述の様に先頭の # (シャープ) は不要です

$hexcolor(00ff80)

$blendcolor(a,b,n)

パラメーター b の % を n% の色 a および (100-n) で色を返します

$blendcolor(10,10,5)

$syscolor(n)

パラメーター n で指定されたシステムで定義されている色を返します。n は 0~30 の整数値を指定します。n の値の記述については msdn または下記テーブルを参照してください

意味
213D オブジェクトの暗い影の色
153D オブジェクトの表面色と、ダイアログボックスの背景色
203D オブジェクトの最も明るい色(光源に面した辺)
223D オブジェクトの明るい色(光源に面した辺)
163D オブジェクトの影の色(光源に面していない辺)
10アクティブウィンドウの境界の色
2アクティブウィンドウのタイトルバーの色
Windows98 と Windows2000: グラデーション効果が有効になっている場合、アクティブウィンドウのタイトルバーのグラデーションのうち、左端の色を指定します
12マルチドキュメントインターフェイス(MDI) アプリケーションの背景色
1デスクトップの色
18プッシュボタンのテキストの色
9タイトルバー、サイズボックス、スクロールバーの矢印ボックス内のテキスト
27Windows98, Windows2000: アクティブウィンドウのタイトルバーのグラデーションのうち、右端の色を指定します
28Windows98 と Windows2000: 非アクティブウィンドウのタイトルバーのグラデーションのうち、右端の色を指定します
17淡色状態(無効状態) のテキストの色。現在のディスプレイドライバが純色(ベタ色) の淡色(灰色) をサポートしていない場合、この色は 0 に設定されます
13コントロール内で選択されている項目の色
14コントロール内で選択されている項目のテキストの色
26ホットトラッキング項目の色
11非アクティブウィンドウの境界の色
3非アクティブウィンドウのタイトルバーのテキストの色
Windows98, Windows2000: グラデーション効果が有効になっている場合、非アクティブウィンドウのタイトルバーのグラデーションのうち、左端の色を指定します
19非アクティブウィンドウのタイトルバーのテキストの色
24ツールチップコントロールの背景色
23ツールチップコントロールのテキストの色
4メニューの背景色
7メニュー内のテキストの色
0スクロールバーの軸の色
5ウィンドウの背景色
6ウィンドウの枠の色
8ウィンドウ内のテキストの色
表. システムカラーテーブル

Alignment functions

$alignabs()

文字配置を全てリセットします。この関数は以下の例と同様です

$alignabs(0,0)$align(left,top)


$rectabs(0,0,0,0,$c(220,220,220),null)
$align(right,bottom)$textcolor(0-128-255)これは右下に表示される foobar2000
$alignabs()$textcolor(0-0-255)これは左上に表示される foobar2000

$alignabs()
$alignabs()

上記のサンプルコードでは 1行目では描画領域全体を塗りつぶし、2行目で右下に文字列を表示し、3行目にて $alignabs() で文字配置を全てリセットし、文字列表示を行っています

$alignabs(x,y)

文字描画開始位置を指定します。パラメーター x には横座標、y には縦の座標を整数値、画素単位で指定します

パラメーター

  • x
    現在の描画領域矩形の横座標値
  • y
    現在の描画領域矩形の縦座標値

$alignabs(,10)$textcolor(0-128-255)foobar2000
$alignabs(10,)$textcolor(255-0-128)foobar2000$textcolor(0-255-0)foobar2000
$alignabs(20,20)$textcolor(0-0-255)foobar2000

$alignabs(x,y)
$alignabs(x,y)

サンプルコードと実行結果の画像から解るようにパラメーターを省略すると 0 と解釈されるようです

使用するにあたっての注意点

$alignabs(x,y,w,h,[h-align,v-align])

文字列の描画を行う矩形を設定します

パラメーター

  • x
    描画領域矩形の開始横座標値
  • y
    描画領域矩形の開始縦座標値
  • w
    描画領域矩形の幅
  • h
    描画領域矩形の高さ
  • h-align
    水平方向による文字列の配置を以下の中から指定します
    • left (左寄せ)
    • center (中央揃え)
    • right (右寄せ)
  • v-align
    垂直方向による文字列の配置を以下の中から指定します
    • top (上端)
    • middle (中央)
    • bottom (下端)

$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20) )
$textcolor(0-128-255)1-foobar2000
$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20), right, )
$textcolor(0-64-255)2-foobar2000
$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20), , bottom )
$textcolor(0-0-255)3-foobar2000
$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20), center, middle )
$textcolor(255-0-128)4-foobar2000

$alignabs(x,y,w,h[,h-align,v-align])
$alignabs(x,y,w,h,[h-align,v-align])

パラメーターを省略するには , (カンマ) を記述する必要があるようです。また w, h に 0 を指定すると、幅と高さが最大になるようです

使用するにあたっての注意点

$align(position[,position])

水平および垂直方向の文字列の配置方法を指定します

パラメーター

  • position
    文字列の配置方法を以下の中から指定します
    • left (左寄せ)
    • center (中央揃え)
    • right (右寄せ)
    • top (上端)
    • middle (中央)
    • bottom (下端)

$alignabs(0,0,0,0)$textcolor(0-128-255)
$align(,middle)foobar2000
$align(right,)foobar2000

$align(position[,position])
$align(position[,position])

パラメーターを省略するには , (カンマ) を記述する必要があるようです。2~3行目のコードの結果から解るようにそれぞれ left, top に設定されるようです

$lineheight(n)

現在の行の高さパラメーター n を整数値、画素単位で指定します

$lineheight(18)
foobar2000$char(10)
こんにちわ$char(10)
$lineheight()
foobar2000$char(10)
こんにちわ$char(10)

$lineheight(n)
$lineheight(n)

パラメーターを省略したり、無効な値を指定するとリセットされるようです

$wordwrap()

現在の行の幅で表示しきれない文字列は次の行に折り返されます。$char(10) を出力することによってこの設定を解除できます

哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位
$char(10)
$char(10)
$wordwrap()哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位

$wordwrap()
$wordwrap()

表示しきれない文字列は末尾が ... (3つのピリオド) に置き換わります

$tabx(n)

パラメーター n で指定した分だけ整数値、画素単位にて字下げを行います

foo$tabx(20)bar$tabx(60)2000$char(10)
hello$tabx(20)world$tabx(60)!!$char(10)

$tabx(n)
$tabx(n)

パラーメーター n が画素単位だと言う事に注意。タブコード $char(9) を出力する訳ではない

$width()

現在の短径領域の幅を返します

$alignabs(10,10,$sub(%_width%,20),$sub(%_height%,20),left,top)
'%_width%' : $tabx(60)%_width%$char(10)
'$width()' : $tabx(60)$width()$char(10)
'%_height%' : $tabx(60)%_height%$char(10)
'$height()' : $tabx(60)$height()

$width()
$width()

右の実行結果画像からも解るように機能していないようです。戻り値が %_width% よりも小さい値が返ってくるはずなんですが…

$height()

現在の短径領域の高さを返します

サンプルコードと実行結果は $width() を参照してください

これも、どうやら機能していないようです。戻り値が %_height% よりも小さい値が返ってくるはずなんですが…

Font functions

$font(name,size[,option])

$font() プレビュー
$font() エフェクトプレビュー

フォントの外観を設定します

パラメーター

  • name
    フォント名を指定します
  • size
    フォントサイズを指定します
  • options
    オプションは以下のパラメーターの組み合わせによって成り立っています
    • bold (強調)
    • thin (細く)
    • italic (斜体)
    • strikeout (取り消し線)
    • underline (下線)
    • nocleartype (クリアタイプを無効にします)
    • textalpha,n (テキストの透過度)
    • effectcolor,c (エフェクトの色)
    • alpha,n (エフェクトの透過度)
    • offset,n (エフェクトのズレ)
    • glow,n (エフェクトの発光度、輝度)
    • radius,n (エフェクトの半径)
    • iterations,n (エフェクトのボカシ度)

    boldthin オプションは排他的なものなので同時に指定すると表示がおかしくなります

注釈

Panels UI の設定画面の Effects ボタンを押す事によって、上記オプションをプレビューで確認しながら GUI で操作できるプレビューダイアログが表示されます。このダイアログ最下部に確定した $font() 関数のパラメーターが記述されているので、これをクリップボードにコピーし、元の Panels UI の設定ダイアログ上にペーストして使用できます

$font(Tahoma,30,bold,italic,strikeout,underline)札幌は$char(10)
$font(Tahoma,30,textalpha,128,alpha,128,
  radius,2,iterations,1,offset,5,glow,3,effectcolor,$c(0,0,255))雪が積もってる

$font(name,size[,option])
$font(name,size[,option])

上記のコードを実行すると右の画像の様な結果になります

$addcharspace(n)

文字にパラメーター n を整数値、画素単位で指定された分加えます。$addcharspace() は各文字の間を n 画素分追加、削除します

foobar2000だもん$char(10)
$addcharspace(5)foobar2000だもん$char(10)
foobar2000だもん$char(10)
$addcharspace(-1)foobar2000だもん$char(10)
$addcharspace(0)foobar2000だもん

$addcharspace(n)
$addcharspace(n)

設定を解除するには明示的にパラメーターに 0 を指定する必要があるようです。追加、削除される間隔は文字の右側です

$fixedwidth(n)

文字をパラメーター n を整数値で指定された幅に設定します

foobar2000だもん$char(10)
$fixedwidth(5)foobar2000だもん$char(10)
$fixedwidth(-1)foobar2000だもん$char(10)
$fixedwidth(10)foobar2000だもん$char(10)
$fixedwidth(0)foobar2000だもん

$fixedwidth(n)
$fixedwidth(n)

設定を解除するには明示的にパラメーターに 0 を指定する必要があるようです

$textcolor(c)

文字の色を BGR 16進数文字列パラメーター c によって設定します

サンプル

例1: 下記の例では文字が赤くなります

$textcolor($hexcolor(ff0000))

例2: 下記の例でも文字が赤くなります

$textcolor(255,0,0)

と、公式マニュアルでは記述されていますが、上記の2つの例は $newsyntax() 関数で新書式対応にしていないと動作しません。旧書式で上記の例と同じようにするには以下の様に記述します

$textcolor(255-0-0)


$textcolor($hexcolor(ff0000))foobar2000だもん$char(10)
$textcolor(255,0,128)foobar2000だもん$char(10)
$newsyntax()
$textcolor($hexcolor(ff0000))foobar2000だもん$char(10)
$textcolor(255,0,128)foobar2000だもん

$textcolor(c)
$textcolor(c)

$newsyntax() を行っていないと新書式では動作しないので注意。$newsyntax() を行いたくない場合は旧書式でパラメーターを記述する必要があります

$smallcaps(large font,small font,text)

パラメーター text のキャピタライズによってフォントを切り替えます。その際、同時に $textcolor() 等で色指定も可能です

$smallcaps(
  $font(Tahoma,14,bold)$textcolor(0-128-255),
  $font(Tahoma,12)$textcolor(255-0-128),
  fooBar2000$char(10)
)
$smallcaps(
  $font(Tahoma,14,bold)$textcolor(0-128-255),
  $font(Tahoma,12)$textcolor(255-0-128),
  FooフーバーBar
)

$smallcaps(large font,small font,text)
$smallcaps(large font,small font,text)

サンプルコードの実行結果からも解るようにマルチバイト文字は小文字扱いの様です。また、パラメーター text は大文字に変換されるようです

Image and Shape functions

$imageabs(x,y,filename[,options])

この関数でサポートされる画像ファイルフォーマットは PNG, BMP, GIF, JPEG, ICO の 5種類

パラメーター

  • x
    画像を描画する x 座標を指定します
  • y
    画像を描画する y 座標を指定します
  • filename
    描画対象となる画像ファイル名を指定します
    ファイル名の先頭に / (スラッシュ) を記述する事によって foobar2000 をインストールしたディレクトリから相対的にファイルを指定できます。この場合 User Interface Module が Panels UI として foobar2000 動作しているかどうかで相対ディレクトリの開始パスが決まります
    User Interface Module が Panels UI の場合は %foobar_path%\PanelsUI となり、Panels UI 以外の User Interface Module だと %foobar_path% となります
  • options
    オプションは以下のパラメーターの組み合わせによって成り立っています
    • alpha,n (画像の透過度)
    • clip,x,y,w,h (画像の切り取り範囲) 画像切り取り範囲指定のパラメーターは以下の通り
      • x 切り取りを開始する x 座標
      • y 切り取りを開始する y 座標
      • w 切り取る幅
      • h 切り取る高さ
    • nokeepaspect (縦横の比率を無視)
    • resize,w,h (リサイズ)
      イメージをリサイズするw (幅),h (高さ) を指定します。拡大処理を行うには nokeepaspect を指定しなければなりません
    • rotateflip,n (イメージの回転)
      n意味
      1時計廻りに 90°回転
      2時計廻りに 180°回転
      3時計廻りに 270°回転
      4左右反転
      5時計廻りに 90°回転し、左右反転
      6上下反転
      7時計廻りに 90°回転し、上下反転
      表.1 イメージの回転パラメーターの値と意味

      n/a左右
      反転
      上下
      反転
      左右
      上下
      反転
      n/a
      時計廻りに 90°回転5731
      時計廻りに 180°回転6402
      時計廻りに 270°回転7513
      n/a4620
      表.2 イメージの回転パラメーターと回転、反転との関係

$imageabs(x,y,filename[,options])
基準となる画像 幅 300 x 高さ 225

右の基準となる画像を元にパラメーターの関係を表したサンプルコードと結果画像を以下に示します


resize,w,h パラメーターと clip,x,y,w,h パラメーターとの関係

$imageabs(0,$sub(%_height%,225),/i\imageabs_sample.png)
$imageabs($sub(%_width%,150),0,/i\imageabs_sample.png,resize,150,113)
$imageabs(10,10,/i\imageabs_sample.png,clip,55,84,33,28,resize,150,113)

$imageabs(x,y,filename[,options])
$imageabs() におけるパラメーター resize と clip の関係
  • 1行目で基準となる画像を下部に表示しています
  • 2行目で基準となる画像を半分に縮小し、右上に表示しています
  • 3行目で縮小した画像から一部を切り出して左上に表示しています
  • resize,w,hclip,x,y,w,h パラメーターが同時に指定された場合は resize,w,h パラメーターが優先されます

rotateflip,n パラメーターと clip,x,y,w,h パラメーターとの関係

$imageabs(0,0,/i\imageabs_sample.png,rotateflip,1)
$imageabs($sub(%_height%,70),0,/i\imageabs_sample.png,
  rotateflip,1,clip,130,200,70,70)

$imageabs(x,y,filename[,options])
$imageabs() におけるパラメーター rotateflip と clip の関係
  • 1行目で基準となる画像を時計廻りに 90°回転させて表示しています
  • 2~3行目で回転した画像から一部を切り出して右上に表示しています
  • rotateflip,nclip,x,y,w,h パラメーターが同時に指定された場合は rotateflip,n パラメーターが優先されます

resize,w,h パラメーターによる拡大処理

$imageabs(-90,0,/i\imageabs_sample.png,nokeepaspect,resize,400,300)

$imageabs(x,y,filename[,options])
$imageabs() におけるパラメーター resize による拡大処理

元画像より大きなサイズでリサイズを行うには nokeepaspect を指定しなければなりません

以上の結果から $imageabs() における同時指定パラメーターの優先順位は以下の順です

  1. resize,w,h
  2. rotateflip,n
  3. clip,x,y,w,h
使用するにあたっての注意点

$rectabs(x,y,w,h[,brush color,pen color,options])

矩形を描画します。元の関数名は $drawrect() です

パラメーター

  • x
    矩形を描画する x 座標を指定します
  • y
    矩形を描画する y 座標を指定します
  • w
    矩形の幅 w を指定します
  • h
    矩形の高さ h を指定します
  • brush color
    矩形を描画する際の brush color を指定します。入力する値は BGR 16進数表記文字列です。塗りつぶし色です
  • pen color
    矩形を描画する際の pen color を指定します。入力する値は BGR 16進数表記文字列です。矩形の線の色です
  • options
    オプションは以下のパラメーターの組み合わせによって成り立っています
    • alpha,n (矩形の透過度)
      このパラメーターを指定する際には、brush color, pen color パラメーター両方を指定しなければなりません。brush color パラメーターよりは pen color パラメーターの方が優先されます
    • glow,n (発光度、輝度)
    • radius,n (半径)
    • iterations,n (ボカシ度)
glow,n, radius,n, iterations,n この3つの options パラメーターはうまく機能していないようです

$rectabs(0,0,%_width%,%_height%,$c(0,128,255),null)
$imageabs(0,25,/i\10028807.jpg,resize,200,150)
$rectabs(30,30,$sub(%_width%,60),$sub(%_height%,60),null,$c(0,0,255))
$rectabs(50,50,$sub(%_width%,100),$sub(%_height%,100),
  $c(255,128,255),$c(255,128,255),alpha,128)

$rectabs(x,y,w,h[,brush color,pen color,options])
$rectabs(x,y,w,h[,brush color,pen color,options])
  • 1行目でパネル全体を青く塗りつぶしています
  • 2行目で1行目で塗りつぶした上から画像を表示しています
  • 3行目でパネル中央にを青い矩形を描画しています
  • 4~5行目で3行目で描画した矩形の中にピンク色で矩形を透過指定にて描画しています
使用するにあたっての注意点

Persistent Variable functions

Persistent Variable (略して PVARS) これらの変数の定義、取得関数は foobar2000 が起動している間、値を保つ変数です。Panels UI 自身、Track Display, Single Column Playlist, Library Filtertitleformat 中で共通して使用できます

コード結果
$getpvar(foo,bar)[unknown pvar]
$setpvar(foo,bar)
$getpvar(foo)bar
$getpvar(Foo)bar
$setpvar(foo,2000)
$getpvar(foo)2000

foobar2000 の変数操作関数 $put(), $puts(), $get() を使用して PVARS にアクセスすることができない事に注意

$getpvar(name)

最後にパラメーター name に格納された PVARS の値を返します。指定された変数が未定義であった場合 '[unknown pvar]' 文字列を返します

$select( $getpvar(display),
  シナリオ1,
  シナリオ2,
  シナリオ3
)

display 変数の値がそれぞれ 1, 2, 3 であった場合、それぞれの値に対応して シナリオ1、シナリオ2、シナリオ3 を実行します

$setpvar(name,value)

パラメーター name で指定された変数に value を格納します

$setpvar(display,2)

PVARS 変数名 display に 値 2 を格納します

foobar2000 を再起動しても $setpvar(name,value) で設定した変数は保持されたままです。 変数の保存先は .PUI ファイルとなります。現在の Panels UI Layout で使用している全ての PVARS を消去するには、Panels UI 設定画面の Clear PVARs ボタンにて行います。この様な仕様から、変数の初期化処理が必要となります。以下にその為のサンプルコードを示します

// Background
$if($strcmp($getpvar(display),'[unknown pvar]'),
  $setpvar(display,1)
)

使用する PVARS 変数名 display[unknown pvar] (つまり、未定義)の場合に 1 設定しています。起動時に一度だけ行えばよいので // Background 再描画セクションに記述するのが望ましいと思います

Other functions

$calcheight(s)

文字列パラメーター s の高さの画素数を返します

$calcwidth(s)

文字列パラメーター s の幅の画素数を返します

$eval(expression)

expression を評価してその結果を返します。整数値ではないオペランドが指定された場合は 0 に変換されます。エラーの場合 -1 を返します

パラメーター

  • expression
    expression 式は正の整数値と以下の表の演算子の組み合わせです
    演算子意味優先順位
    { }{ } 内の式を結合1
    *乗算2
    /除算2
    @剰余2
    +加算3
    -減算3

$eval(100/4@7+{5+3}*3)

上記の結果は 28 となります。式の結合規則は左から右の様です

$fileexists(file)

パラメーター file で指定されたファイルが存在すれば 真(true) を、そうでなければ 偽(false) を返します

$if($fileexists(%foobar_path%foobar2000.exe),'あるよ','ないね')

この関数は戻り値が 真/偽(boolean) を返すので $if() などを使う必要があります。file にはワイルドカード (*, ?) も使用できます

$fontexists(name)

パラメーター name で指定されたフォントが存在すれば 真(true) を、そうでなければ 偽(false) を返します

$if($fontexists(MS ゴシック),'ある','ない')

この関数は戻り値が 真/偽(boolean) を返すので $if() などを使う必要があります。大文字、小文字の区別はしていないようですが、それ以外は厳密にチェックしている様です

$newsyntax()

バージョン 0.14.10 以前の推奨されない関数、構文の処理をパスします。その結果、新しい関数と構文の完全な利用を可能にします。推奨されない関数、構文は認識されなくなります

注釈

// Global 再描画セクションの中でこの関数を使用しなければなりません

現在、この関数を使用して影響を受ける関数を以下に示します

Special Fields

%_height%

現在のパネルの高さが画素単位で格納されています

%_width%

現在のパネルの幅が画素単位で格納されています

%foobar_path%

foobar2000 がインストールされているディレクトリが完全なパス名で格納されています。末尾に \ (バックスラッシュまたは円記号)が付いています

%glass%

$glass() 関数がサポートされていれば 真(true) を、そうでなければ 偽(false) が格納されいます

%playlist_name%

現在のプレイリスト名が格納されています

%sortgroup%

現在のソートグループのプリセット名が格納されています

%sortgroup_preset_count%

ソートグループプリセット数が格納されています

Track Display Specific

トラックディスプレイ (Track Display) だけで使用できる titleformat です。User Interface ModulePanels UI にした場合の foobar2000 メインウィンドウはこのトラックディスプレイとなります

Redraw Types

titleformat スクリプトを効率的に動作させる為に再描画のタイミングを各セクションによって分類しています。それぞれのセクションはトラックディスプレイパネルに一度だけ宣言します。セクションの開始を表す構文は厳密に評価されます

// Global

このセクションでは変数の定義を行うのに最適です

// Background

パネルの背景画像、塗りつぶしなど一度だけ実行するようなコードを定義するのに最適です

// PerTrack

トラックが動的に変化する場合にこのセクションにコードを定義するのが最適です。%album%, %artist% またはボタンなど

// PerSecond

秒単位で動的に変化する値を再描画するのにこのセクションにコードを定義するのが最適です。%playback_time% やシークバーなど

// Global
$if($meta_test(album artist),
$puts(album_is_va,1)
)
$puts(fontStyle,Calibri,20,bold)

// Background
$imageabs(0,0,/images\background.png)

// PerTrack
Current song information: %artist% - %title%
$imagebutton(20,20,
/images\play.png,
/images\play_hover.png,
'Play or Pause')

// PerSecond
$font($get(fontStyle))
%playback_time%

Button functions

ボタンは様々な機能を実行させる事ができるクリック可能なホットスポットを生成します。これらは masstagger スクリプト、metatag の値、メインメニューコマンド、コンテキストメニューコマンドなどを含む様々な foobar2000 の操作、変数の操作、ボタン特定のコマンド実行、および操作を含んでいます。ボタン関係の関数は // PerTrack 再描画セクションに定義しなければなりません

$imagebutton(x,y,image,hover image,command[,options])

イメージベースのボタンを描画します

パラメーター

  • x
    ボタンイメージを描画する x 座標を指定します
  • y
    ボタンイメージを描画する y 座標を指定します
  • image
    通常表示の image ボタンイメージファイル名を指定します
  • hover image
    マウスカーソルを重ねた時の表示 hover image ボタンイメージファイル名を指定します
  • command
    クリックされた時の command を指定します
    • foobar2000 の main menu item および context menu item
      例えば Play や Pause, Preferences, Remove Duplicates などです。使用可能な項目は Panels UI 設定画面の Main および Context ボタンを押す事によって、下のドロップダウンコンボボックスに表示させる事ができます
    • EXEC
      コマンドの実行
      例: EXEC:'http://www.google.com/search?q='$replace(%artist%, ,+)
      指定された URL でブラウザを開きます
    • FILTER:name|value:name2|value2: ...
      フィルターされたプレイリストコンテキストメニューの表示
      value に !source! を使用する事によってプレイリストを選択できるサブメニューを表示できます
    • MENU
      foobar2000 メインメニューを表示します
    • PLAYLISTS-MENU
      全てのプレイリストをコンテキストメニュー表示します
    • POPUP:name
      新しい Panels UI ウィンドウを開きます。name は .PUI ファイル名です。.PUI ファイルが存在しない場合には Panels UI ディレクトリに作成されます
    • PVAR:SET:name:value
      name で指定された変数名に value 値を格納します
    • SORT:name|value:name|value + $filtered(name) + $sorted(name): ...
      フィルターを指定してフィルターされたプレイリストコンテキストメニューの表示
    • SORTGROUP-PRESETS-MENU
      ソートグループプリセットのコンテキストメニューの表示
    • TAG:operation:tag:value
      タグメタデータの操作を行います
      • operation
        operation は下記のいずれか一つを指定します
        • SET
          指定された tag タグに value 値を設定します。タグが存在しなければ作成されます。value を指定しなければ tag タグが削除されます
          例:
          TAG:SET:rating:
          rating タグを削除します
        • ADD
          指定された tag タグを value 値によって追加します。既存のタグは変更しません
        • REMOVE
          value が存在している場合のみ、tag タグを削除します
      • tag
        メタデータフィールド名 (タグ名)
      • value
        メタデータの値 (タグの値)
    • WINDOWSIZE:width:height[:h-anchor:v-anchor]
      指定された h-anchor 水平 v-anchor 垂直の基点によってウィンドウサイズを変更します
      • width
        ウィンドウの幅を指定します
      • height
        ウィンドウの高さを指定します
      • h-anchor
        サイズ変更の水平基点を指定します。下記のいずれか一つを指定します
        • LEFT
          左側を基点にします
        • RIGHT
          右側を基点にします
      • v-anchor
        サイズ変更の垂直基点を指定します。下記のいずれか一つを指定します
        • TOP
          上側を基点にします
        • BOTTOM
          下側を基点にします
  • options
    options は組み合わせる事ができます
    • tooltip,text
      ボタンのツールチップを指定します。text テキストがツールチップを設定します。tooltip が指定されていなければ command がツールチップとして設定されます。tooltip を指定し text が空ならばツールチップは設定されません
      ツールチップを設定しない例:
      tooltip,
    • hotspot,x,y,w,h
      ボタンのクリック可能な領域を設定します。hotspot が指定されていない場合はボタン画像全体がクリック可能領域となります
      • x
        ホットスポットを定義する x 座標を指定します
      • y
        ホットスポットを定義する y 座標を指定します
      • w
        ホットスポットを定義する w 幅を指定します
      • h
        ホットスポットを定義する h 高さを指定します

$imagebutton(5,10,
  /images\rating_star.png, /images\rating_star_hover.png,
  TAG:SET:rating:5,
  tooltip,,
  hotspot,0,0,25,25,
)

座標 x,y に 5,10 を指定し、通常表示とマウスカーソルを重ねた時の表示イメージファイル名 image,hover image を指定。ボタンが押された時の動作 commandrating というタグに値 5 を設定するように指定。ツールチップテキスト tooltip,text は非表示にし、クリック可能な領域 hotspot,x,y,w,h を 0,0,25,25 に指定

$imagebutton(0,0,
  /images\resize.png, /images\resize_hover.png,
  WINDOWSIZE:400:500:LEFT:TOP,
  tooltip,'Resize window'
)

座標 x,y に 0,0 を指定し、通常表示とマウスカーソルを重ねた時の表示イメージファイル名 image,hover image を指定。ボタンが押された時の動作 command は ウィンドウサイズ WINDOWSIZE:width:height[:h-anchor:v-anchor] を左上を基点にして幅400 高さ400 にリサイズするように指定。ツールチップテキスト tooltipResize Window というテキスト text を指定しています

使用するにあたっての注意点
  • foo_menu_addons コンポーネントをアクティブにしている状態で commandMENU を指定し、 ボタンを押すと Unhandled exception : Overflow とメッセージボックスを表示して foobar2000 が落ちる
  • かなり深刻な $newsyntax() の影響を受ける。x,y が最後に行った $alignabs(x,y) または $alignabs(x,y,w,h[,h-align,v-align]) からの相対座標となる

$textbutton(x,y,w,h,text,hover text,command[,options])

テキスト(文字列) ベースのボタンを描画します。$textbutton(x,y,w,h,text,hover text,command[,options])$imagebutton() と同じコマンドとオプションを使用します。コマンドとオプションパラメーターについては $imagebutton() を参照してください

パラメーター

$textbutton(0,0,150,14,
  Click for preferences,
  $textcolor(0-0-255)Click for preferences,
  Preferences
)

座標 x,y0,0 を指定し、幅、高さはそれぞれ w,h 150, 14 に指定。通常表示テキスト textClick for preferences に指定し、マウスカーソルを重ねた時のテキスト hover text を青色で表示するように指定。ボタンが押された時の動作 command は foobar2000 の設定画面を表示するように指定しています

使用するにあたっての注意点

Window functions

$glass(left,top,right,bottom)

Windows Vista Aero Glass のマージンを広げます。left, top, right, bottom が画素単位で指定する整数値パラメーターです。例えば $glass(0,0,0,100) とすると、下部の Vista Aero Glass マージンを広げます

Windows Vista だけで機能します

$settitle(s)

パラメーター s で指定された文字列をメインウィンドウタイトルに設定します

User Interface ModulePanels UI ではないと機能しません

$settray(s)

パラメーター s で指定された文字列をタスクトレイアイコンテキストに設定します

機能していません

$windowstyle(option[,option])

foobar2000 ウィンドウスタイルを設定します。$windowstyle(option[,option])// Background 再描画セクションに記述しなければなりません

パラメーター

  • options
    options は下記のいずれかです
    • hidetitlebar
      ウィンドウタイトルバー非表示にします
    • showtitlebar
      ウィンドウタイトルバー表示します
  • User Interface ModulePanels UI ではないと機能しません
  • hidetitlebar を行うと、ウィンドウの枠も非表示になります。ウィンドウの移動はパネル内の適当な所をマウスでドラッグする事によってできます

Other functions

$panel(id,name,x,y,width,height)

Panels 名称リスト
Panels 名称リスト

現在のパネルにコンポーネント(パネルとも言う) を追加します。パネルには Track Display の様に互いに重ね合わせる事が可能です。特定のパネルは常に再描画されるものがあります

パラメーター

  • id
    パネルを識別する為の定義文字列
  • name
    コンポーネント名称
    正確なコンポーネント名称を知り得る為に設定画面の Panels ボタンを押す事によってコンボボックスドロップダウンリストボックスにコンポーネント名称が格納されます。このパラメーターに記述する名称はカテゴリなしの名称でなければなりません。例えば、Album Art コンポーネントの名称は Panels / Album Art ではなく Album Art です
  • x
    パネルを配置する左上の横座標 x を整数値、画素単位で指定します
  • y
    パネルを配置する左上の縦座標 y を整数値、画素単位で指定します
  • width
    パネルの幅 width を整数値、画素単位で指定します
  • height
    パネルの高さ height を整数値、画素単位で指定します

$panel(MyPanel,Peakmeter,0,0,100,500)

と、上記の様に公式マニュアルには記載されていますが、これでは機能しないので下記の様にする必要があります

$panel(MyPanel,Peakmeter,0,0,100,500,)

最後のパラメーター height の後に , (カンマ) を記述しないと機能しません

$sortgroup_preset(n)

パラメーター n で指定されたソートグループプリセット名称を返します

Special Fields

%_trackinfo_mode%

Track Display での現在のトラック情報に関する現在のモードが格納されています。格納されている文字列は Now PlayingFollow cursor です

"%_trackinfo_mode%"$char(10)
"%_trackinfo_notrack%"$char(10)

%_trackinfo_mode%
%_trackinfo_mode%

Panels UI 0.14.12 で Track Display のモードを Now Playing の状態で、再生している曲を停止すると変数の後ろにゴミ(?) が付いているのが解ると思います

%_trackinfo_notrack%

Track Display のモードが Now Playing の場合に、トラック情報が格納されていない場合には 真(true) を、そうでなければ 偽(false) が格納されています

%_trackinfo_mode% の所でも述べましたが、Panels UI 0.14.12 では正しい情報が格納されていないので、以下のようなコードで対応する必要があります

$if($strcmp($left(%_trackinfo_mode%,3),'Now'),
  '%'_trackinfo_mode'%' is Now playing,
  '%'_trackinfo_mode'%' is Follow cusor
)
$char(10)
$if($strcmp($left(%_trackinfo_notrack%,1),1),
  '%'_trackinfo_notrack'%' is true,
  '%'_trackinfo_notrack'%' is false
)

Single Column Playlist

これらの変数と関数は Single Column Playlist 特有の titleformat です

Group info

$info_num(field)

グループにおける field の合計値を返します

機能していません

$meta_sum(field)

グループにおける field の合計値を返します

機能していません

%_focused%

%focused% ではなく %_focused% です。Single Column Playlist にキーボードフォーカスが得られているかどうかの変数だと思ったんですが、そうではないようです。単に Single Column PlaylistItem Display 内でカーソルのある項目が 真(true) を、そうでなければ 偽(false) が格納されています

%_selected%

%selected% ではなく %_selected% です。Item Display 内で選択された項目が 真(true) を、そうでなければ 偽(false) が格納されています

%group_index%

グループ内のインデックス番号が格納されています

%group_count%

グループ内のインデックス総数が格納されています

Library Filter

Group info

%expanded%

%selected%

%sub_index%

%max_index%

%track_count%

%child_count%

Library Filter はほとんどハッキングしていないので、詳細が記述できません…暇をみつけてこの機能も試してみるのでそれまでお待ちください…('A`)

以上で Panels UI Commands reference は終了です。できる限り正確な情報を掲載したつもりでしたが、如何でしたでしょうか?

更新履歴

日付内容
2008/07/03 (木)スタイルシートの改修に沿って修正
2008/02/03 (日)章番号が思いっきり間違ってました…('A`)
2008/02/01 (金)なんかリンクのパラグラフ指定がまぬけなのを修正('A`)
foobar2000no commentsno trackbacks(29,955)
0.9.5 にバージョンアップ
Panels UI で作ってみました
Panels UI で作ってみました('A`)

foobar2000 を 0.9.5 にバージョンアップしました。バージョンアップは 0.9.4.5 をインストールしていたディレクトリをバックアップして、上書きインストールで完了。致命的な問題もなく起動、動作を確認

で、ついでに以前から行おうと思っていた Panels UI を 0.13.8 から 0.14.12 へのバージョンアップも行いました。0.13.8 と 0.14.12 ではマニュアルが別に用意されているぐらいかなり変更がされているので、0.14.12 をベースに試しに作ってみました。0.13.8 での関数名、パラメーター書式は一応使えますが、一部で動作がオカシイ所があるかもしれないので、関数名、パラメーター書式を 0.14.12 のマニュアルを参照しつつ、作っていきました

作っていて気付いた 0.13.8 との相違点

  • $settray は相変わらず機能せず…
  • $rectabs (0.13.8 では $drawrect という関数名) で透過機能が使えるようになった
  • $wordwrap が機能する様になった
  • 表示しきれない文字列があるとサフィックスに自動的に ... を付加してくれる

スクリーンショットの画像は新しくした foobar2000 と Panels UI で試しに作った UI です。インストール、設定方法などは中の HTML 形式の readme を読んでください

  • foobar2000 0.9.5 の Panels UI 0.14.12 設定ファイル "AUGUST_01_1.01"
    • download
    • md5: 34753dd77b4867765437d17089bc2eba
    • sha-1: d4949a0dc1e0a78f37410672f7ed89daf684b3c2

こっそりと更新しました…

※曲目や背景画像の内容は Panels UI 0.14.12 を試す為のリソースであり、foobar2000 や Panels UI 等と関係するものではありません('A`)

foobar2000no commentsno trackbacks(5,239)
foobar2000 データベースのバックアップとリストア

この記事は foo_custominfo で保存先を SQLite database に設定している事を対象としています。 foo_custominfo(foo_custominfo.dll) と Playback Statistics Custom(foo_playback_custom.dll) を 使っていると、データベースがだんだんと大きくなって、foobar2000 のバージョンアップや 音楽ファイルの移動などでデータベースのメインテナンスが必要となってきますが、 ここではそのデータベースの簡単な保守の方法をメモとして書いておきます

データベースのファイルは foobar2000 のディレクトリの中に custominfo_sqlite.db というファイルがあります。 これを別の場所等にコピーしてバックしておきます。で、このデータベースを操作する為に SQLite Database Browser なるものをダウンロード、解凍します。 SQLite Database Browser を実行して Open Database にて custominfo_sqlite.db を開きます

File メニューから Export > Table as CSV file を実行すると CSV 形式のテキストファイルが生成されるので、 テキストエディタを使用して編集し、同じ様に File メニューから Import > Table from CSV file を 実行するとデータベースに反映されます

custominfo_sqlite.db を定期的にバックアップを取っておけば、大量の音楽ファイルの移動や foobar2000 設定構築の際に Export した CSV ファイルを編集、Import を行えば、レイティング、再生回数などの情報が引き継げます

foobar2000no commentsno trackbacks(10,625)
foobar2000 visual style
foobar2000 0.9.4.5
foobar2000 0.9.4.5

久しぶりの本格的な更新です。ネタはあるんですが、なかなか情報の整理に時間がかかってしまうのが実情です

普段音楽を聴くのに foobar2000 を使用しているんですが、見た目を大幅に変えたので設定メモとして書き残しておく。万が一にも設定情報が飛んだ時に復旧に役立つかと…

foobar2000 は現在(2007/12/18 日現在) のバージョンは 0.9.4.5 ですが、0.9.5 beta というβバージョンもあるのですが、こちらが stable version になってから、見た目を含めた設定の見直しを行おうと思ったんですが、我慢できなくて一新してみました


全てではないですが、使用しているコンポーネント一覧

注意: コンポーネントの日付、バージョン番号等は記事執筆時点のものです


foobar2000 0.9.4.5 layout
foobar2000 0.9.4.5 layout

Columns UI をベースにしているのでレイアウトは右の画像の様に設定。Preferences > Display > Column UI > Layout の設定は全てにおいてキャプションを非表示にしている事。Tabbed panel stack mod の中に入れるパネルはお好みで…


Track Display のコード

Single Column Play List (SCPL) の Group Display コード
Row height : 32
Group rows: 3

Single Column Play List (SCPL) の Item Display コード


コードの中で $alignabs の前にあるコメントになっている $drawrect はテキストの描画領域を目視で確認する為に入れてあります

更新情報

日付内容
2008/07/15 (火)コンポーネントリンク先を修正
foobar2000comment (1)no trackbacks(42,452)
contents
most viewed (1183801)
categories
archives
recent posts
recent updates
recent comments
recent trackbacks
912T ASUSTeK ASUSTeK Crosshair IV Extreme blog CSS DARK SOULS DARK SOULS 3 Darksouls3 DarksoulsIII DARK SOULS III DISM Euro Truck Simulator 2 Everquest II firefox foobar2000 game Install internet KB2990941 KB3087873 mod panels ui PCゲーム PHP PX-Q3PE Raid skin SoftBank software SpeedFan Spinel Steam TPS trailer truck TvRock TVTest Windows Windows 7 Win Toolkit WordPress インストール ダークソウルズ 初音ミク 窓辺ななみ
mobile
qrcode:home
profile

気温: ‘ 湿度:
recommends
Valid XHTML 1.0 Transitional Valid CSS X.X
RSS 2.0 RSS 0.92
RDF/RSS ATOM
get Firefox 2 get Opera
ie