gandharva
| File | Released | Downloads |
|---|---|---|
| gandharva-0.50.0.4.zip | Jan. 12 2003 | 2349 |
Gandharva.dll version 0.50.0.4
multi function LiteStep-Module for Winamp2/3
Copyright © 2000-2002 HOSHINO Yoshifumi (Yoshi)
http://go.iclub.to/yoshi/
yoshi.fm@anet.ne.jp
$Id: README.HTML,v 1.2 2002/12/11 08:22:09 Yoshi Exp $
目次
始めに
このモジュールは マルチメディアプレイヤー Winamp のタイトルを取得して、 表示するモジュールです。同様の機能を持つモジュールに amptitle、LSXCommandClock などが ありますが、それぞれ日本語環境では、少々常用には難がありました。
このモジュールは他のプレイヤー用への改変をなるべく容易に行えるように設計しています。 お気に入りのプレイヤーがあるなら、ご自由に hack してください。ただし再配布に関しては GNU 一般公有使用許諾書(バージョン2またはそれ以降)に従う必要があります。
また、このモジュールは習作です。作者はCおよびLITESTEPに関してまだ十分な知識を持っていません。 そのことを十分に承知の上でご使用ください。また、これらに詳しい諸兄の指摘 (ここはこう書くべき、この方がよりスマートになるなど)をお待ちしています。
更新
0.40.1.1 > 0.50.0.4(2002-12-12)
- 追加
-
- MODULES.INI にプレイヤーのパスを明示することによって、Gandharva がレジストリから拾ってくる PATH を上書きできるように。
- GandharvaDefault。GandharvaDefaultStringの機能拡張版。
- 変更
-
- 内部構造の大幅な変更
- 時間表示のアライメントを右寄せに変更。マイナス表示との切り替え時にずれなくなった。
- 修正
-
- !GandharvaDispMenu のタイミングを少し柔軟に。
- GandharvaMouseMapping の !bang コマンド指定で文字数の制限を拡張した。
過去の更新履歴、より詳細な情報ついてはCHANGES.TXTを参照してください。
tips
winamp の各種設定について
Winamp の Preferences>Options>Display の"Scroll song title in the windows taskbar" は Off にしてください。表示が大きく崩れます。
Winamp 2/3 を起動するために 実行ファイルの PATH を指定する必要はありません。ファイルタイプの
"Winamp media file" に関連づけられているEXEファイルを レジストリから探して起動します。
また、関連づけに依らず PATH を指定することが出来ます。詳細は後述します。
MODULES.INI の取り扱いについて
Litestep.exe と同じフォルダに MODULES.INI というファイルがあります。これはモジュールが自身の設定を保存するために使用するファイルですが、 このファイルにプレイヤーの PATH を明示することによって、Gandharva がレジストリから拾ってくる PATH を上書きできます。書式は以下のように。
[gandharva] player_path=C:\program files\winamp\winamp.exe
考えあって PATH の指定に MODULES.INI を使っていますが、将来 STEP.RC を使う方式に変更するかもしれません。
アンチエイリアスと背景色の設定について
windows の設定によって、フォントの色と背景色でアンチエイリアスが起こります。 この現象はスキンを使用する場合も同様で、この場合、背景色で縁取りをしたように見えます。 背景色を調整するか、windows の設定を変更することによってこれを回避してください。 (コントロールパネル>画面のプロパティ>"効果"タブと進み、"スクリーンフォントの縁を 滑らかにする"のチェックを外す (win2k の場合))
マウスクリックによる動作と再定義機能の仕様について
時間表示を左クリックすると、起動後でも経過表示と残り表示を切り換えられます。
ウィンドウを右クリックすると Winamp を右クリックしたときに現れるメニューを表示できます。
タイトル表示を左ダブルクリックすると、ボリュームコントロールのダイアログが表示されます。
以上が規定の動作です。また、これらを再定義することができます。その場合以下の制限があります。
- 領域の優先順位は ウィンドウ全体 > タイトル表示 > 時間表示 である。 例えば 左クリックを ウィンドウ全体と時間表示に指定しても両方は動作しません。 ウィンドウ全体への指定のみが優先して実行されます。 また、時間表示とタイトル表示は両方に指定可能です。ただし両方の領域が Padding の設定で 重複しているとき、その範囲ではタイトル表示領域への指定が優先されます。
- 基本的には同じ領域に対してクリックとダブルクリックの両方を指定できない。 ダブルクリックをするとクリックに指定したコマンドも実行してしまいます。
winamp3 と gclient.wac について
winamp3モードを使う場合は glient.wac を使います。
これは winamp3 が Gandharva へデータを送信し、コマンドを受け取るために使用するコンポーネント(プラグイン)です。
インストールは、winamp3 フォルダ内の wacs フォルダ(デフォルトは C:\Program Files\winamp3\wacs)にコピーするだけです。
gclient のウインドウを表示すると機能します。
また現在winamp3モードには以下の制限があります。
- gclient.wac は未完成である。
winamp3 自体が形になって間もないこともあり、モジュールには未完成の部分が多くあります。 安全のために gandharva.dll と gclient.wac はバージョンの整合がとれないと機能しないように設計してあり、 gandharva.dll が古くても、gclient.wac が古くても 正しく交信できません。 - !GandharvaCmdExtension は、使う意味がない。
(使えることは使えるが今のところ play, next などのベーシックなコマンドのみ) - あなたがチャレンジャーである必要がある。
思いつきで実装しているので…。 - 作者が winamp3 を使っていない。
…ある意味もっとも致命的でしょう。
ソースをコンパイルするために
winamp3 用のコンポーネントをコンパイルするためには Wasabi (winamp3) SDK が必要です。build488 を想定しています。
また、Gandharva.dll 本体のみをコンパイルする場合は上記の SDK は必要ありません。
step.rc
導入は LoadModule してください。また、wharf には入りません。新しいものは new、仕様が変更されたものは update、すでに代替機能があるなど、将来削除する可能性がある場合は legacy がついています。
- データタイプ / デフォルト設定名
- 説明
- Strings / バージョン表示GandharvaDefault [notitle] [notime] [String] new
- String / バージョン表示GandharvaDefaultString [String] update legacy
- Winamp が起動していないときの動作を指定します。指定の順序は問いません。
- notitle
- タイトルを表示しません。デフォルトでは表示します。
- notime
- 時間表示をしません。デフォルトでは表示します。
- String
- winamp のタイトルの代わりに表示する文字列を指定します。 "notime" "notitle" に一致しない文字列は全てこちらの設定であると解釈します。 デフォルトはモジュールバージョンを表示します。
- GandharvaDefault notime notitle
- 時間、タイトルともに消去。
- GandharvaDefault "$ThemeName$" notime
- 時間表示を消して$ThemeName$マクロを展開する。
- GandharvaDefault Gandharva
- 時間表示を消去せず、Gandharva と表示。(以下の設定と同じ結果になります。)
- GandharvaDefaultString Gandharva
- Winamp が起動していないときの動作を指定します。指定の順序は問いません。
- Integer / 0GandharvaCmdPlayTimeout
- winamp を起動していない状態で !GandharvaCmdPlay を実行したとき、winamp が起動しますが、 この設定によって自動で再生を開始できます。タイムアウトまでの時間を秒で指定します。 0 以下の値を指定したとき、またはこの設定自体をしない場合、自動再生は行いません。
- String / none*GandharvaMouseMapping where button clicks !bang
- マウスクリックによる挙動を定義します。一つでも定義するとデフォルトの挙動をリセットします。
今までの GandharvaMouseXXYZ で使用できない中クリックを使用できます。構文は
- where
- どこをクリックするかを指定します。
- all....ウィンドウ全体をターゲットにします。
- title..タイトル表示をターゲットにします。
- time...時間表示をターゲットにします。
- button
- マウスのボタンを指定します。
- right...右ボタンを使用します。
- middle..中ボタンを使用します。
- left....左ボタンを使用します。
- clicks
- クリック/ダブルクリックを指定します。
- click...クリックです。
- dblclk..ダブルクリックです。
- !bang
- コマンドを記述します。パラメータを伴うコマンドを使用する場合は
*GandharvaMouseMapping title left dblclk "!GandharvaCmdExtension 40188"
の様に"〜"で括ってください。
*GandharvaMouseMapping all right click !GandharvaDispMenu
*GandharvaMouseMapping title left dblclk !GandharvaSndVol
*GandharvaMouseMapping time left click !GandharvaToggleTime
- マウスクリックによる挙動を定義します。一つでも定義するとデフォルトの挙動をリセットします。
今までの GandharvaMouseXXYZ で使用できない中クリックを使用できます。構文は
- String / "winamp2"GandharvaPlayerType String
- 使用する winamp のバージョンを指定します。winamp3 を使用する場合は gclient.wac のインストールが必要です。
"winamp2" / "winamp3" が指定できます。
- 使用する winamp のバージョンを指定します。winamp3 を使用する場合は gclient.wac のインストールが必要です。
- Boolean / falseGandharvaHiddenAmp
- 本モジュールから Winamp を起動するとき、winamp のウィンドウを表示するかしないかを指定します。
- Integer / 0GandharvaX [C][+|-]###
- Integer / 0GandharvaY [C][+|-]###
- モジュールを表示する X 座標および Y 座標です。共に負の値を受け付けます。
負の場合はスクリーンの右(下)からの座標になります。
また、数値の前に C を付けると画面中央からの位置指定と解釈します。
GandharvaX 120 画面左から120pixel
GandharvaX -200 画面右から200pixel
GandharvaX C-80 画面中央から左に80pixel
- モジュールを表示する X 座標および Y 座標です。共に負の値を受け付けます。
負の場合はスクリーンの右(下)からの座標になります。
また、数値の前に C を付けると画面中央からの位置指定と解釈します。
- String / noneGandharvaMouseXXYZ [String] legacy
- 旧式のコマンドです。中ボタンにマップできません
このコマンドでマウスクリックによる挙動を定義します。一つでも指定するとデフォルトの挙動をリセットします。
XX Y Z をそれぞれ、
- XX..[AL / TT / TM]
- ウィンドウ全体/タイトル表示/時間表示 の領域を〜
- Y...[L / R]
- 左ボタン/右ボタン で〜
- Z...[C / D]
- クリック/ダブルクリックしたとき。
GandharvaMouseALRC ウィンドウ全体(AL)を、右(R)クリック(C)したとき
GandharvaMouseTTLD タイトル表示(TT)を 左(L)ダブルクリック(D)したとき
GandharvaMouseTMLC 時間表示(TM)を 左(L)クリック(C)したとき
- 旧式のコマンドです。中ボタンにマップできません
- Boolean / falseGandharvaForceTransp
- 現在使用している背景色を透過色にします。
背景透過時にアンチエイリアス機能を使いたいときに指定します。
ただしこの指定をしても スキン(BITMAP)の透過色は常に FF00FF です。
- 現在使用している背景色を透過色にします。
背景透過時にアンチエイリアス機能を使いたいときに指定します。
- String(s) / noneGandharvaBitmap [filename0] [filename1] [filename2] [filename3]
- モジュールの背景に使用する BITMAP(スキン)を指定します。
BITMAP 内で FF00FF の色を使用している部分が透過されます。
配布されている theme から BITMAP を流用する場合のために GandharvaForceTransp
でもこの透過色は変更しません。
- ファイルを複数指定すると、winamp の再生モード(リピート・シャッフル)によってスキンを変えることができます。
filename0 どちらもOFF
filename1 リピートのみON
filename2 シャッフルのみON
filename3 リピート・シャッフルともにON
ファイル名を省略したモードには、filename0 を使用します。引数の位置をあわせるために適当なファイル名(.none)を補ってください。
例)GandharvaBitmap foo.bmp .none bar.bmp
また複数のスキンを指定した場合のウィンドウサイズは filename0 を参照します。サイズの違うイメージを指定しないでください。
- モジュールの背景に使用する BITMAP(スキン)を指定します。
BITMAP 内で FF00FF の色を使用している部分が透過されます。
配布されている theme から BITMAP を流用する場合のために GandharvaForceTransp
でもこの透過色は変更しません。
- String / noneGandharvaTime [elapsed | remain]
- Winamp の時間表示を行います。現在のトラックの経過時間、残り時間を表示する事ができます。
elapsed経過時間
remain残り時間(マイナス符号がつきます)
またこの指定が未定義の場合、時間表示はされません。
- Winamp の時間表示を行います。現在のトラックの経過時間、残り時間を表示する事ができます。
- String / GandharvaFontGandharvaTimeFont [String]
- COLORREF / GandharvaFontColorGandharvaTimeFontColor [RRGGBB]
- Integer / GandharvaFontSizeGandharvaTimeFontSize ###
- Boolean / falseGandharvaTimeFontBold
- Boolean / falseGandharvaTimeFontItalic
- 時間表示のフォントに関する設定です。それぞれの内容はタイトル文字列への指定と 同内容ですのでそれぞれを参照してください。
- Integer / 0GandharvaTimePadding # # # #
- Integer / 0GandharvaTimePadding #
- それぞれの一辺から時間が表示される領域までの余白の幅を上、右、下、左の順に
指定します。指定が一つだけの場合、全て同じ値が指定されたと見なします。
すなわち以下の二つの指定
GandharvaTimePadding 3 3 3 3
GandharvaTimePadding 3
は同じ意味を持ちます。またタイトル文字列の領域と重複する場合、こちらを下にして重ね合わせます。
- それぞれの一辺から時間が表示される領域までの余白の幅を上、右、下、左の順に
指定します。指定が一つだけの場合、全て同じ値が指定されたと見なします。
すなわち以下の二つの指定
- Integer / 0GandharvaBorderSize # # # #
- Integer / 0GandharvaBorderSize #
-
上、右、下、左の順にそれぞれ4辺の枠線の幅を指定します。
指定が一つだけの場合、全て同じ値が指定されたと見なします。
すなわち以下の二つの指定
GandharvaBorderSize 3 3 3 3
GandharvaBorderSize 3
は同じ意味を持ちます。
-
上、右、下、左の順にそれぞれ4辺の枠線の幅を指定します。
指定が一つだけの場合、全て同じ値が指定されたと見なします。
すなわち以下の二つの指定
- Integer / 0GandharvaPadding # # # #
- Integer / 0GandharvaPadding #
- それぞれの一辺からタイトルが表示される領域までの余白の幅を
上、右、下、左の順に指定します。指定が一つだけの場合、
全て同じ値が指定されたと見なします。すなわち以下の二つの指定
GandharvaPadding 3 3 3 3
GandharvaPadding 3
は同じ意味を持ちます。また、時間表示の領域と重複する場合、 こちらを上にして重ね合わせます。
- それぞれの一辺からタイトルが表示される領域までの余白の幅を
上、右、下、左の順に指定します。指定が一つだけの場合、
全て同じ値が指定されたと見なします。すなわち以下の二つの指定
- String / "left"GandharvaTextAlignH [left|center|right]
- タイトルをスクロールさせない場合、もしくはその必要がない場合に 表示する位置を指定します。それぞれタイトルを左詰、中央、右詰して表示します。
- String / "basic"GandharvaCommandMode [none | basic]
- Winamp コントロール の為の !bang コマンドモードを指定します。
どちらかを選択してください。詳しくは !bang コマンドの項を参照してください。
- none
- コントロールをいっさい行わないか、他のモジュールに任せます。 Gandharva は Winamp 操作のための !bang コマンドを登録しません。
- basic
- 基本的な(Winamp 前面のボタン)操作に加えて nullsoftで 公開されている全ての操作を行えます。
(現在は winamp3 モードでは一部制限があります)
- Winamp コントロール の為の !bang コマンドモードを指定します。
どちらかを選択してください。詳しくは !bang コマンドの項を参照してください。
- Boolean / falseGandharvaKeepPrefix
- Boolean / falseGandharvaKeepSuffix
- それぞれWinamp のタイトル表示でPrefix、Suffixを削除しません。
- Winamp2.xx
- Prefix=TrackNo, Suffix="- Winamp (STATUS)"
- Winamp3.xx
- gclient で整形して gandharva に送るので、この設定は無視します。
- それぞれWinamp のタイトル表示でPrefix、Suffixを削除しません。
- Boolean / falseGandharvaAlwaysOnTop
- モジュールのウィンドウを前面に表示します。
- Boolean / falseGandharvaHidden
- LiteStep起動時、および再起動時に非表示にします。
- Integer / 100GandharvaWidth ###
- Integer / 20GandharvaHeight ###
- モジュールの幅、高さを指定します。スキンを使うときは スキンファイルのサイズが自動的に指定されます。
- COLORREF / 000000 (黒)GandharvaBGColor [RRGGBB]
- ウィンドウの背景色を指定します。Windows の設定によってはこの色とフォントの色で
アンチエイリアスが起こります。これはスキンを使用している場合も同様で、背景色で縁取りした
様に見えます。回避するにはこの色を調整してください。
また、FF00FFを指定したとき壁紙を透過して表示します。
GandharvaForceTransp を指定したときはこの色を透過色に使用します。
- ウィンドウの背景色を指定します。Windows の設定によってはこの色とフォントの色で
アンチエイリアスが起こります。これはスキンを使用している場合も同様で、背景色で縁取りした
様に見えます。回避するにはこの色を調整してください。
- COLORREF / 888888 (グレー)GandharvaBorderColor [RRGGBB]
- モジュールの枠線の色を指定します。透過色(FF00FF)を指定したときは壁紙が透過します。
- String / "MS UI Gothic"GandharvaFont [fontname]
- タイトルを表示するフォント名を指定します。
- Integer / 16GandharvaFontSize ###
- タイトルを表示するフォントのサイズを指定します。
- COLORREF / FFFFFF(白)GandharvaFontColor [RRGGBB]
- タイトルを表示するフォントの色を指定します。Windows の設定によっては、この色と背景色 (GandharvaBGColor) とで アンチエイリアスが起こります。スキンを使用する場合は背景色を調整してください。
- Boolean / falseGandharvaFontBold
- Boolean / falseGandharvaFontItalic
- フォントの自体をそれぞれ太字、イタリック体にします。
- Boolean / falseGandharvaAutoScroll
- タイトルの長さが枠内に収まらないとき、テキストが左へスクロールします。
- Integer / 500GandharvaScrollInterval ###
- スクロール時の再描画の間隔を ms (ミリ秒)で指定します。この値が小さいほどスクロールの速さが上がります。
- Integer / 4GandharvaScrollStep ###
- スクロールの滑らかさをドット単位で指定します。この値が小さいほどスクロールは滑らかに なりますが、スクロールの速度は遅くなります。
step.rc のサンプル
作者の step.rc 設定です。サンプルとして。
GandharvaCmdPlayTimeout 10 ;GandharvaPlayerType winamp3 ;GandharvaAlwaysOnTop ;GandharvaDefault notime notitle "Gandharva is ready." GandharvaX -520 GandharvaY 0 ;GandharvaWidth 200 ;GandharvaHeight 20 ;GandharvaHidden ;GandharvaHiddenAmp GandharvaFont $FontFace$ GandharvaFontSize 13 GandharvaFontColor $ForegroundColor$ GandharvaFontBold ;GandharvaFontItalic GandharvaPadding 4 4 2 42 GandharvaTextAlignH center ;GandharvaForceTransp GandharvaBitmap skin_ampdisp.bmp skin_ampdisp1.bmp skin_ampdisp2.bmp skin_ampdisp3.bmp GandharvaBGColor $BackgroundColor$ ;GandharvaBorderColor FF00FF ;GandharvaBorderSize 2 0 2 0 GandharvaAutoScroll GandharvaScrollInterval 50 GandharvaScrollStep 1 ;GandharvaKeepPrefix ;GandharvaKeepSuffix GandharvaCommandMode basic GandharvaTime elapsed GandharvaTimeFont $FontFace$ ;GandharvaTimeFontColor 000000 GandharvaTimeFontSize 13 ;GandharvaTimeFontItalic GandharvaTimeFontBold GandharvaTimePadding 4 158 3 5 *GandharvaMouseMapping time left dblclk !GandharvaCmdPlay *GandharvaMouseMapping time right click !GandharvaToggleTime *GandharvaMouseMapping title right click !GandharvaDispMenu *GandharvaMouseMapping title left dblclk "!GandharvaCmdExtension 40188"
!bang
ウィンドウコントロール
Gandharva の表示をコントロールします。
- !GandharvaHide
- 現在の状態に関わらず、Gandharva ウィンドウを非表示にします。
- !GandharvaShow
- 現在の状態に関わらず、Gandharva ウィンドウを表示状態にします。
- !GandharvaToggle
- Gandharva ウィンドウの表示、非表示を切り換えます。
- !GandharvaToggleTime
- 時間表示を経過、残りと切り換えます。
- !GandharvaSndvol
- sndvol32.exe (ボリュームコントロール)を起動します。
- !GandharvaDispMenu
- Winamp のメインメニューを表示します。
- !GandharvaToggleOnTop
- Gandharva ウィンドウの最前面/非最前面を切り換えます。
- !GandharvaOnTop
- Gandharva ウィンドウを最前面に配置します。
- !GandharvaNotOnTop
- Gandharva ウィンドウを非最前面に配置します。
Winamp コントロール
Winamp を shortcut などで操作できます。また GandharvaCommandMode none とすることによってこれらを無効にできます。
- !GandharvaCmdPrev
- 一つ前のトラックに戻ります。
- !GandharvaCmdPlay
- 現在のトラックを再生します。Winampが起動していない場合は 立ち上げます。(再生しません)
- !GandharvaCmdPause
- 再生中のトラックを一時停止します。 また一時停止中のトラックを再開します。
- !GandharvaCmdStop
- 再生中のトラックを停止します。
- !GandharvaCmdNext
- 次のトラックに進みます。
- !GandharvaCmdPLEdit
- プレイリストの表示/非表示をトグルします。
- !GandharvaCmdOpenFile
- Open File(s) ダイアログを開きます。
- !GandharvaCmdPower
- Winamp を 起動/終了 します。
- !GandharvaCmdExtension #####
- Winamp に送るメッセージのパラメータを指定する形で実装されています。
これによって Nullsoft が公開している全ての操作が可能です。
メッセージの一覧は APPENDIX1.TXT に記してありますのでそちらを参照してください。
例
!GandharvaCmdExtension 40154 プレイリストの先頭に戻ります。
!GandharvaCmdExtension 40144 5秒間巻き戻します。
開発環境
Microsoft Windows 2000(SP3) Litestep 0.24.6 2002-02-16 (ShellFront + japanese patch) Borland C Compiler 5.5.1 Microsoft Visual C++ 6.0(SP5) winamp2 v2.81 winamp3 3.0 (build 488) wasabi SDK RC1 (build 488) LoadModule $litestepdir$desktop2.dll LoadModule $litestepdir$shortcut2.dll LoadModule $litestepdir$hotkey.dll LoadModule $litestepdir$popup2.dll LoadModule $moduledir$tasksj.dll ; version .92 (j hack) LoadModule $moduledir$dwarf.dll ; version 1.11 hacked 1 LoadModule $litestepdir$systray2.dll LoadModule $moduledir$gandharva.dll ;本モジュール LoadModule $moduledir$Nornir.dll ;拙作時計表示モジュール 動作確認も上記の環境で行っています。
ライセンス
Gandharva.dll
copyright (C) 2000-2002 HOSHINO Yoshifumi (Yoshi)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
謝辞
このモジュールの前身 AmpDisp.dll は Gustav Munkby氏 のGrdTray(v2.3 beta 2) を hack して作成しました。自分で書き直した本モジュールも大まかな流れは非常に 参考になっています。有用なプログラムをソースコードと共に公開していただき、感謝し ています。
また、LITESTEPに関する情報を公開されているすべての webmaster 様 に感謝します。
( source: gandharva3/readme/README.HTML )