foobarを久々にカスタムしてみた
foobarは一昨年くらい前に作ったのをずっと使ってきたのですが、PCも変えたことだしついでに作り直して見ました。
Before → After
前回はいろいろなCompornentを入れすぎてごちゃごちゃしていたので、今回はシンプルに。使用したのはColumns UI, Panel Stack Splitter, Library Tree, EsPlaylist, Channel spectrum panel, Lyrics Art, あとはMenu, volume, seekbarだけです。基本的にPanel Stack Splitterだけで各パネルの配置、表示、ボタンの配置をやってしまっています。いや本当にすばらしいCompornentですね、作者様に感謝。
ボタン欄の一番右を押すとジャケットモード(仮)になって上のような表示に変わります。ジャケットが中央に配置されて歌詞がその下に、奥にスペクトラムアナライザが配置されます。また、左右の矢印を押すとプレイリスト上での前後のアルバムを再生するようにしました。なかなか厄介だったのがPanel Stack Splitterを背景透過設定にしてもChannel spectrum panelをうまく表示してくれないんですね。しょうがないので、中央のジャケットはもう一枚Panel Stack Splitterを配置して、その上にジャケット画像を表示、さらにそのジャケ画像の大きさを取得して、動的にPanel Stack Splitterのサイズを変えることで対処しています。
これはmovepanelを使えばそこまで難しくなくて、put関数でジャケットの縦と横のサイズをjacket_h, jacket_wとおいて、jacket_wの半分の値をjacket_w2とした場合、
$movepanel(0,$sub($div(%ps_width%,2),$get(jacket_w2)),$sub(%ps_height%,[任意の値]),$get(jacket_w),$get(jacket_h))
と書けば、ウィンドウをどのようなサイズにしてもジャケットが中央に表示されます。[任意の値]の部分はウィンドウ内でのジャケットをどの高さに表示するか、を表します。事前に$imageabs(0,0,,,$get(jacket_path),nodisplay,,255,)でメモリにジャケット画像をキャッシュしておけば、$getimagewidth($get(jacket))などの関数でジャケットの縦、横サイズは把握できるので十分実現可能かと思います。余談ですが、下部の曲情報欄のガラスっぽいのは画像ではなく、Panel Stack Splitterの短形表示関数を組み合わせていたりします。
同じようなUIを作ろうとしている方の参考になれば(なるのかなあ)
はじめまして。henaと申します。
こちらの記事で紹介されているfoobarのUIに一目惚れしたためコメントを送らせていただきました。
ぶしつけを承知で、お願い申し上げます。
もしよろしければこのスキンを頂けないでしょうか?
恥ずかしながらfoobarに触れたのがつい最近のことで理解不足な点は多々あります。
自分でなんとかしろとお思いになるかもしれませんが、どうしても欲しいと思ったためコメントした次第であります。
twitterの方も拝見しましたがお忙しいご様子なのでお時間のある時で構いません。
返事をお待ちしております。
hena 2012/05/13 9:56 PM
henaさんコメントありがとうございますー
お返事遅くなってしまい申し訳ありません…!(汗
こちらの記事のfoobarスキンが欲しいとのことなのですが元々配布用に作ったわけでもなく、加えてかなり個人用な設定となっています。そのためハイッと渡しておしまい、というわけにもいきません。僕がきちんとソースを書き直せば良いのですがその時間もとれそうにありません…
ですので、改めてソースコードを公開しちょっぴり解説を付けた記事を公開できればなぁ、と思ったのですが如何でしょうか?
Kaya 2012/05/22 4:09 AM
お返事ありがとうございます。
こちらこそわざわざお忙しいところ、申し訳ございません。
こちらとしてはソースを公開して頂けるだけでも僥倖でこざいます。
ただ、非常に厚かましいお願いになるのですが、噛み砕いて説明して頂けると嬉しいです……。汗
もちろんKayaさんがお時間に余裕のある時で構いません。
お手数をお掛けして申し訳ありませんが、よろしくお願い致します。
記事の公開を楽しみにしてますね。
hena 2012/05/23 4:22 AM
Channel spectrum panelってどうやったら背景にできるんですか?
教えてくださいm(._.)m
Makuraminn 2014/02/03 12:05 AM
Channel spectrum panel上で右クリックをするとConfigureという項目があると思いますが、そこから設定ウィンドウを開けます。そのウィンドウの左下にあるTransparent backgroundにチェックをいれれば透明になるはずですよ~。
Kaya 2014/02/06 12:14 AM
できました!
本当にありがとうございました!>_<
makuraminn 2014/02/10 6:24 PM