gandharva

posted Jan. 12 2003 under
FileReleasedDownloads
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 $

目次

  1. 始めに
  2. 最終更新
  3. tips
  4. step.rc
  5. step.rc のサンプル
  6. !bang
  7. 開発環境
  8. ライセンス
  9. 謝辞

始めに

このモジュールは マルチメディアプレイヤー 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
  • Integer / 0
    GandharvaCmdPlayTimeout
    • 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
  • String / "winamp2"
    GandharvaPlayerType String
    • 使用する winamp のバージョンを指定します。winamp3 を使用する場合は gclient.wac のインストールが必要です。
      "winamp2" / "winamp3" が指定できます。
  • Boolean / false
    GandharvaHiddenAmp
    • 本モジュールから Winamp を起動するとき、winamp のウィンドウを表示するかしないかを指定します。
  • Integer / 0
    GandharvaX [C][+|-]###
  • Integer / 0
    GandharvaY [C][+|-]###
    • モジュールを表示する X 座標および Y 座標です。共に負の値を受け付けます。 負の場合はスクリーンの右(下)からの座標になります。 また、数値の前に C を付けると画面中央からの位置指定と解釈します。
      GandharvaX 120 画面左から120pixel
      GandharvaX -200 画面右から200pixel
      GandharvaX C-80 画面中央から左に80pixel
  • String / none
    GandharvaMouseXXYZ [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 / false
    GandharvaForceTransp
    • 現在使用している背景色を透過色にします。 背景透過時にアンチエイリアス機能を使いたいときに指定します。
      ただしこの指定をしても スキン(BITMAP)の透過色は常に FF00FF です。
  • String(s) / none
    GandharvaBitmap [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 を参照します。サイズの違うイメージを指定しないでください。
  • String / none
    GandharvaTime [elapsed | remain]
    • Winamp の時間表示を行います。現在のトラックの経過時間、残り時間を表示する事ができます。
      elapsed経過時間
      remain残り時間(マイナス符号がつきます)
      またこの指定が未定義の場合、時間表示はされません。
  • String / GandharvaFont
    GandharvaTimeFont [String]
  • COLORREF / GandharvaFontColor
    GandharvaTimeFontColor [RRGGBB]
  • Integer / GandharvaFontSize
    GandharvaTimeFontSize ###
  • Boolean / false
    GandharvaTimeFontBold
  • Boolean / false
    GandharvaTimeFontItalic
    • 時間表示のフォントに関する設定です。それぞれの内容はタイトル文字列への指定と 同内容ですのでそれぞれを参照してください。
  • Integer / 0
    GandharvaTimePadding # # # #
  • Integer / 0
    GandharvaTimePadding #
    • それぞれの一辺から時間が表示される領域までの余白の幅を上、右、下、左の順に 指定します。指定が一つだけの場合、全て同じ値が指定されたと見なします。 すなわち以下の二つの指定
      GandharvaTimePadding 3 3 3 3
      GandharvaTimePadding 3
      は同じ意味を持ちます。またタイトル文字列の領域と重複する場合、こちらを下にして重ね合わせます。
  • Integer / 0
    GandharvaBorderSize # # # #
  • Integer / 0
    GandharvaBorderSize #
    • 上、右、下、左の順にそれぞれ4辺の枠線の幅を指定します。 指定が一つだけの場合、全て同じ値が指定されたと見なします。 すなわち以下の二つの指定
      GandharvaBorderSize 3 3 3 3
      GandharvaBorderSize 3
      は同じ意味を持ちます。
  • Integer / 0
    GandharvaPadding # # # #
  • Integer / 0
    GandharvaPadding #
    • それぞれの一辺からタイトルが表示される領域までの余白の幅を 上、右、下、左の順に指定します。指定が一つだけの場合、 全て同じ値が指定されたと見なします。すなわち以下の二つの指定
      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 モードでは一部制限があります)
  • Boolean / false
    GandharvaKeepPrefix
  • Boolean / false
    GandharvaKeepSuffix
    • それぞれWinamp のタイトル表示でPrefix、Suffixを削除しません
      Winamp2.xx
      Prefix=TrackNo, Suffix="- Winamp (STATUS)"
      Winamp3.xx
      gclient で整形して gandharva に送るので、この設定は無視します。
  • Boolean / false
    GandharvaAlwaysOnTop
    • モジュールのウィンドウを前面に表示します。
  • Boolean / false
    GandharvaHidden
    • LiteStep起動時、および再起動時に非表示にします。
  • Integer / 100
    GandharvaWidth ###
  • Integer / 20
    GandharvaHeight ###
    • モジュールの幅、高さを指定します。スキンを使うときは スキンファイルのサイズが自動的に指定されます。
  • COLORREF / 000000 (黒)
    GandharvaBGColor [RRGGBB]
    • ウィンドウの背景色を指定します。Windows の設定によってはこの色とフォントの色で アンチエイリアスが起こります。これはスキンを使用している場合も同様で、背景色で縁取りした 様に見えます。回避するにはこの色を調整してください。
      また、FF00FFを指定したとき壁紙を透過して表示します。
      GandharvaForceTransp を指定したときはこの色を透過色に使用します。
  • COLORREF / 888888 (グレー)
    GandharvaBorderColor [RRGGBB]
    • モジュールの枠線の色を指定します。透過色(FF00FF)を指定したときは壁紙が透過します。
  • String / "MS UI Gothic"
    GandharvaFont [fontname]
    • タイトルを表示するフォント名を指定します。
  • Integer / 16
    GandharvaFontSize ###
    • タイトルを表示するフォントのサイズを指定します。
  • COLORREF / FFFFFF(白)
    GandharvaFontColor [RRGGBB]
    • タイトルを表示するフォントの色を指定します。Windows の設定によっては、この色と背景色 (GandharvaBGColor) とで アンチエイリアスが起こります。スキンを使用する場合は背景色を調整してください。
  • Boolean / false
    GandharvaFontBold
  • Boolean / false
    GandharvaFontItalic
    • フォントの自体をそれぞれ太字、イタリック体にします。
  • Boolean / false
    GandharvaAutoScroll
    • タイトルの長さが枠内に収まらないとき、テキストが左へスクロールします。
  • Integer / 500
    GandharvaScrollInterval ###
    • スクロール時の再描画の間隔を ms (ミリ秒)で指定します。この値が小さいほどスクロールの速さが上がります。
  • Integer / 4
    GandharvaScrollStep ###
    • スクロールの滑らかさをドット単位で指定します。この値が小さいほどスクロールは滑らかに なりますが、スクロールの速度は遅くなります。

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 )

You must be logged in to leave a comment.
Website by 2008 - uses Silk icons