2006年09月のエントリー



2006 . 09 . 23

A1 各部修正へ

「アルバムジャケットを表示するスキン」として、先日リリースして間もない「A1」ですが、気になるところを修正して早々ですが新しいバージョン1.1にアップします。

すでに使用されている方もお手数ですが、新しいバージョンに変更してくださるようお願いします。なお、変更点はAMIPで使用される「Plugin.ini」にも及ぶため、こちらのファイルもあわせて変更されることをお忘れなく。


【変更内容】


1- カウント表示をRainmeter側で実装


前バージョンでは「カウント/曲時間 [ 曲番号/曲数 ] 」という風に表示される情報は、すべてAMIP側で取得させそれをテキストに出力し、Rainmeter側でそのテキストを参照するという仕組みを取っていました。
これは実に回りくどいやり方ですが、Rainmeter側でこれらを実装させようとすると、それ相応Measure数を作ってやる必要が出てくるため、それよりはずっと効率的なんではないかといった考えからでした。


しかし、私の環境ではこれが悪さをして、エクスプローラ(ファイラー)の表示が更新しなくなるという不具合を引き起こしました。
原因はカウント情報の取得で、AMIPでこのような動的データの取得の可能にさせるため「Update file every second」というオプションを有効にして、毎秒、出力ファイルを更新させるようにしていましたが、これがよくなかったようです。


そこでカウントは順当にRainmeter側で取得させることとしました。カウント以外は毎秒変化するわけではないので、AMIP側でタグ同様に取得させれば、Rainmeter側での負担も軽減され、何よりAMIPに別途ファイル出力させることがなくなったので、全体的に見れば以前よりずっと効率的かつクリーンになったと思います。


2- タグを持たない曲の表示方法を改良


前バージョンではタグを持たない曲はWINAMPのデフォルト・フォーマット(Artist - Title)で対処するという方法を取っていました。しかし既存の状態では「Artist - Title」が同じ行になってしまうので、どうしても収まりきらずタイトルが尻切れトンボになってしまうことがほとんどでした。

前回も言及しましたが、AMIPには強力なFormattingの機能が備わっています。これを利用しない手はありません。


そこで今回は正規表現を使って取り出す文字列部分を指定することで、「Artist - Title」のハイフンの前後でArtistとTitleを切り分けることで、タグがある場合とほぼ同様に各行で別々に表示することができました。


3- 「Plugin.ini」の内容を修正


前バージョンの「Plugin.ini」は、デフォルトの設定をそのまま残している部分がありましたが、それらの多くが不必要な設定であったり、また不具合を引き起こす要因になりうる設定もあったため、これらを改めました。


※一部、利用者の方からの情報を参考にさせていただきました。ありがとうございました。

 

 

今回バージョンアップしましたが、残念ながら気になるところがすべてクリアされた訳ではありません。おそらく、今後も(飽きない内は)ちょこちょこ修正していくかと思います。


今更ながら「ベータ版」という名目でリリースするべきだったかなと悔やんでます。
、がしかし、ウチで配布しているものは、すべてベータ版同然で動作確認甘々ですので、そこら辺は何卒ご容赦を・・・。



2006 . 09 . 19

アルバムジャケットを表示するRainmeterスキン



久々にスキンをリリースしました。画像入りの完成形スキンのリリースはPictureBrowser以来です。


今回作成したのはWINAMPコントロールと曲情報に加え、アルバムジャケットの画像をネットより取得して表示するというものです。このようなWidgetは他に数多くあるものの、Rainmeterのスキンではあまり見ないので作ってみました。


実際作る前から分かっていたことですが、これはどう考えてもRainmeterだけでできることではありません。そこで最初は簡単なスクリプトを作って試してみたものの、うまくいきません。一番の問題は、曲が切り替わる毎にスクリプトを動かすコマンドを送って、それにあわせてスキンを更新という具合にしたいのですが、通常の場合のように一曲単位で分かれている場合は曲と曲の変わり目がRainmeter側で測定することができるため、このようなことが可能になるかもしれませんが、ネットラジオのように曲同士がつながっている場合には通用しません。そこでAMIPというWINAMPのプラグインの手を借りることにしました。


このAMIPは元々はWINAMPで再生中の曲をmIRCでIRCのコメントとして融合させるためのプラグインでしたが、曲の切り替えタイミングで任意のテンプレートを出力したり、バッチコマンドを送ったりと最近では汎用的なプラグインとして実装されています。今回のスキン作りに正に打ってつけのプラグインといえます。


今回のスキンの動作のカギとなるのがAMIPの機能のひとつで、AMIPの変数を仕込んだテンプレートをあらかじめ用意しておいて、曲の変わり目にその変数をアーティスト名や曲名などに置き換えて、指定したファイル名で出力するというものです。さらに出力後、スキンにコマンドを送ってリフレッシュさせることでこのスキンの機能が実現されるようになります。

これ以外にも、AMIPは実に多くの機能を備えていて、プレイヤー情報の取得から出力、コマンド送信と何でもやってこなす実力があります。どうせ外部プラグインの力を借りるなら、AMIPにできることは極力AMIP側に任せてた方が得策と思い、今回はプレイヤー情報の取得などはAMIPで取得したものをRainmeterで表示するというようにしています。
これはRainmeter側にはかなりの負担軽減になります。

RainmeterでWINAMPの情報を取得するには必然的にMeasureを作る必要がありますが、AMIPにそれを分担させればRainmeter側はそれを表示させるMeterだけで済んでしまいます。
プレイヤーの制御もAMIP側でできるよう(未確認)ですが、今回はボタン表示との兼ね合いもありRainmeter側でやった方が賢明と考え、そうするようにしました。


AMIPの多機能ぶりはさておき、特に出力に関する機能は強力です。例えば、指定したタグがその曲に付いていればタグどおりに、付いていなければ違う形式で出力するという<TRUE | FALSE>だとか、もしアーティスト名がXXだったらOOで出力するとか、さらには正規表現まで使用し強力な置換えをすることまで可能です。

中でもURLエンコードして出力してくれるのには関心しました。WebParserで情報を取得する際、URLにスペースや日本語が含まれていると受け付けないサーバーもあるため、この機能はとても有り難いです。


というわけで何とかこんな形で完成することができました。が、あまり十分な動作テストを行っていないので今後どのような不具合に遭遇するか一抹の不安がありますが、現状目立った挙動は確認してません。


今後の基本機能の改良点として、現状の仕様では同じアルバムの曲を聴いていても、曲が切り替わるたびネットにアクセスして、再度同じ画像を取得してきて非効率ですので、できれば、一度表示した画像はローカルに保存するようにして、もしローカルフォルダになければ、ネットから取得という具合にできるような構造にしたいと思います。

また、今回はプラスαの機能として検索リンク機能を実装しましたが、他にも動的な曲名やアーティスト名といった情報を利用して何か面白いことができないか模索しています。