WebScrap

September 3, 2009

foobar2000のカスタマイズ ~設定編~

以前の記事、foobar2000のカスタマイズの設定を記載する。なお、プレイヤーのサイズは元にしたデザインよりも小さくなっている。
foobar2000のバージョンは0.9.5.2を使用する。(それより上のバージョンでは一部のコンポーネントが未対応。)必要なコンポーネント及びファイルは以下の通り。


コンポーネント

  • Biography View
  • Columns UI
  • cwbowron's hooks
  • ELPlaylist
  • foo_func
  • Panel Stack Splitter
  • Playlist Dropdown
  • Run services
  • Track info panel mod

画像ファイル(CDジャケット省く)

  • foobar2000.png
    上段にあるfoobar2000のアイコン
  • mister_president.jpg
    中断にある白黒の犬の画像
  • overlay_reflect.png
    下段にあるCDジャケットにかかる光沢の画像
  • no_image.jpg
    表示するCDジャケットがない場合に表示される画像

使用フォント

  • Arial
  • Tahoma
  • Tarisaka (Arial, Tahomaにフォントリンクで指定)
  • Web icons (pentacom)
  • Wingdings

 

foobar2000の構成は以下の通り。
各コンポーネントの配置図
 
Columuns UIのLayout 

基本設定

  • 記載してあるものは基本的に外観の設定のみ
  • 指定が無い欄は無記入、または0
  • フォントは特に指定が無ければ Arial bold 8pt (0, 0, 0)
  • Panel Stack Splitter, Track info panel modの背景色は全て (255, 255, 255)
  • Edge Styleは全て None

各コンポーネントの設定(便宜上同じ名前のものには番号を割り振ってある)

 

  • Panel Stack Splitter 1
    プレイヤーの構造を上段、中断、下段に分ける。
    • PanelList
      Panel Stack Splitter 2の配置Panel Stack Splitter 3の配置Panel Stack Splitter 4の配置
  • Panel Stack Splitter 2
    上段内の配置を管理する。また、背景とロゴを表示する。
    • PanelList
      Track info mod 1の配置Track info mod 2の配置 Playlists Dropdownの配置
    • Script
      PerTrack
      $drawrect(,20,%ps_width%,4,0-0-0,)
      $drawrect(282,84,%ps_width%,45,0-0-0,)
      $drawrect(,136,%ps_width%,1,0-0-0,)
      
      $drawtext(foobar2000,7,33,87,15,0-0-0,)
      
      $imageabs(193,34,24,24,C:\Program Files\foobar2000\images\foobar2000.png,,)
      $font(,8,)
      $drawtext(Version 0.9.5.2,227,34,96,11,0-0-0,)
      $font(,8,bold)
      $drawtext(Khoi Vinh,227,47,52,11,0-0-0,)
      $font(,8,)
      $drawtext(''s Design,279,47,44,11,0-0-0,)
      Behaivour
      Default font : Arial bold 13pt

 

  • Track info mod 1
    再生を制御するボタンを表示する。
    // PerTrack
    $if(%ispaused%,
    $button2(,,0,0,93,45,
    '$drawrect(,,93,45,brushcolor-0-0-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(Helvetica,,bold,204-204-204)Play',
    '$drawrect(,,93,45,brushcolor-255-102-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(,,bold,255-255-255)Play','Play or pause',),
    $button2(,,0,0,93,45,
    '$drawrect(,,93,45,brushcolor-0-0-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(,,bold,204-204-204)Pause',
    '$drawrect(,,93,45,brushcolor-255-102-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(,,bold,255-255-255)Pause','Play or pause',)
    )
    $button2(94,,0,0,93,45,
    '$drawrect(,,93,45,brushcolor-0-0-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(,,bold,204-204-204)Previous',
    '$drawrect(,,93,45,brushcolor-255-102-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(,,bold,255-255-255)Previous',
    'Previous',)
    $button2(188,,0,0,93,45,
    '$drawrect(,,93,45,brushcolor-0-0-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(,,bold,204-204-204)Next',
    '$drawrect(,,93,45,brushcolor-255-102-0 pencolor-null)$alignabs(6,7,93,45,left,top)$font(,,bold,255-255-255)Next',
    'Next',)
  • Track info mod 2
    再生方法を切り換えるボタンを表示する。Defaultは全曲ループ、Repeatは1曲ループ、Shuffleはランダム再生。
    // PerTrack
    $ifequal($replace(%cwb_playback_order%,'Repeat (playlist)',1),1,
    $button2(,,0,0,38,13,'$font(,,bold,)Default','$font(,,bold underline,255-102-0)Default','Repeat (playlist)',),
    $button2(,,0,0,38,13,'$font(,,bold,160-160-160)Default','$font(,,bold underline,255-102-0)Default',
    'Repeat (playlist)',)
    )
    $ifequal($replace(%cwb_playback_order%,'Repeat (track)',2),2,
    $button2(50,,0,0,38,13,'$font(,,bold,)Repeat','$font(,,bold underline,255-102-0)Repeat','Repeat (track)',),
    $button2(50,,0,0,38,13,'$font(,,bold,160-160-160)Repeat','$font(,,bold underline,255-102-0)Repeat',
    'Repeat (track)',)
    )
    $ifequal($replace(%cwb_playback_order%,'Shuffle (albums)',3),3,
    $button2(100,,0,0,39,13,'$font(,,bold,)Shuffle','$font(,,bold underline,255-102-0)Shuffle','Shuffle (albums)',),
    $button2(100,,0,0,39,13,'$font(,,bold,160-160-160)Shuffle','$font(,,bold underline,255-102-0)Shuffle',
    'Shuffle (albums)',)
    )
  • Playlists Dropdown
    プレイリストの切り替えに使用する。
    • Display
      Display
      $puts(dimmed,$char(3)$offset_colour($offset_colour(%_text%,%_back%,63),666666,63)|%_selected_text%$char(3))
      $puts(active,$char(3)$offset_colour(%_text%,%_selected_back%,63)|%_selected_text%$char(3))
      
      
      $get(dimmed)
      $if($and($not(%incontrol%),%isactive%),$get(active),$rgb())
      %title%
      $tab()$get(dimmed)
      Style
      $if(%incontrol%,,$ifequal($mod(%index%,2),0,
      $set_style(back,$offset_colour(%_back%,$calculate_blend_target(%_back%),12),%_selected_back%)
      ,
      $set_style(back,%_back%,$offset_colour(%_selected_back%,$calculate_blend_target(%_selected_back%),7))
      ))
      Padding : 上下 3px  左右 5px
    • Colours
      Item : Foreground (0, 0, 0), Background (245, 245, 239)
      Selected item : Foreground (255, 255, 255), Background (255, 102, 0)
      Inactive selected item : Foreground (255, 255, 255), Background (255, 102, 0)
    • Fonts
      Tarisaka 7pt

 

  • Panel Stack Splitter 3
    中段内の配置を管理する。また、背景の画像を表示する。
    • PanelList
      Playlist switcherの配置ELPlaylistの配置
    • Behaivour
      Use background image : mister_president.jpg (751px × 307px)

 

  • Playlist switcher
    プレイリストの管理用。普段は非表示にしており、プレイリストをいじる時だけ表示する。
    • General
      Vertical item padding : 6px
    • Colours
      Item : Foreground (0, 0, 0), Background (255, 255, 255)
      Selected item : Foreground (255, 255, 255), Background (255, 102, 0)
      Inactive selected item : Foreground (255, 255, 255), Background (255, 102, 0)
      Use custom Active item frame
      Active item frame : (255, 102, 0)
    • Fonts
      Tarisaka 7pt

 

  • ELPlaylist
    選択中のプレイリストを表示する。CDジャケットの画像は、曲と同じフォルダ内の曲のアルバム名と同じもの。
    • script
      Track list
      //Focus
      $if(%el_focused%,
      $drawrect(,,,,,255-102-0)
      $drawstring(%tracknumber%,10,,%el_width%,%el_height%,255-102-0,vcenter nowrap elipchar hq,glow:1:255-255-255:3)
      $drawstring(%title%,28,,$sub(%el_width%,70),%el_height%,255-102-0,vcenter nowrap elipchar hq,glow:1:255-255-255:3)
      $drawstring(%length%,,,$sub(%el_width%,10),%el_height%,255-102-0vcenter right nowrap elipchar hq,glow:1:255-255-255:3),
      $drawstring(%tracknumber%,10,,%el_width%,%el_height%,0-0-0,vcenter nowrap elipchar hq,glow:1:255-255-255:3)
      $drawstring(%title%,28,,$sub(%el_width%,70),%el_height%,0-0-0,vcenter nowrap elipchar hq,glow:1:255-255-255:3)
      $drawstring(%length%,,,$sub(%el_width%,10),%el_height%,0-0-0,vcenter right nowrap elipchar hq,glow:1:255-255-255:3)
      )
      
      //Now Playing
      $if(%el_isplaying%,
      $fillrect(,,,,255-102-0)
      $drawstring(%tracknumber%,10,,%el_width%,%el_height%,255-255-255,vcenter nowrap elipchar hq)
      $drawstring(%title%,28,,$sub(%el_width%,90),%el_height%,255-255-255,vcenter nowrap elipchar hq),
      )
      Group header
      $fillrect(,43,,1,204-204-204,)
      $puts(art_path,$ifgreater(%el_direct_item_count%,0,%__ART_PATH__%,))
      $puts(art_size,$mul(%__ART_ROW__%,%el_row_height%))
      $puts(group_left,$if($or($and($greater(%el_direct_item_count%,0),%el_is_collapsed%),$greater(%__IS_ART_ON_GH__%,0)),$add($mul(%__ART_MARGIN__%,2),$get(art_size)),%__ART_MARGIN__%))
      $puts(group_left,$add($get(group_left),$mul(%el_group_depth%,20)))
      
      //Group info
      $drawstring(%el_group_format%$ifgreater(%el_direct_item_count%,0,$char(10)%artist%,),$get(group_left),0,$sub(%el_width%,$get(group_left)),%el_height%,96-96-96,vcenter nowrap elipchar hq ,glow:1:255-255-255:3)
      $if(%el_is_collapsed%,,
      $drawstring($char(10)%el_item_count% Tracks,,,$sub(%el_width%,10),%el_height%,96-96-96,vcenter right nowrap elipchar hq ,glow:1:255-255-255:3)
      )
      
      
      //Now Playing
      $if(%el_isplaying%,
      $fillrect(,,,44,160-160-160,)
      $drawstring(%el_group_format%$ifgreater(%el_direct_item_count%,0,$char(10)%artist%,),$get(group_left),0,$sub(%el_width%,$get(group_left)),%el_height%,255-255-255vcenter nowrap elipchar hq)
      $drawstring($char(10)%el_item_count% Tracks,,,$sub(%el_width%,10),%el_height%,255-255-255vcenter right)
      ,)
      
      //Album Art
      $if(%el_is_collapsed%
      ,$imageabs(0,0,$get(art_size),$get(art_size),$get(art_path),noexpansion nodisplay,) //dummy call
      $setworldtransform(1)
      $puts(art_size2,$min($get(art_size),$add(%el_height%,-$mul(%__ART_MARGIN__%,2))))
      $puts(art_top,$div($sub(%el_height%,$get(art_size2)),2))
      ,$puts(art_top,$add($select(%__IS_ART_ON_GH__%,%el_row_height%),%__ART_MARGIN__%))
      $puts(art_size2,$get(art_size))
      $setworldtransform($add(2,-%__IS_ART_ON_GH__%))
      )
      $imageabs(%__ART_MARGIN__%,$get(art_top),$get(art_size),$get(art_size2),$get(art_path),,)
      Per Second
      $drawstring(%playback_time% / %length%,,,$sub(%el_width%,9),%el_height%,255-255-255,vcenter right nowrap elipchar hq)
    • style
      dafoult font : Arial 7pt
      Pseudo-transparent Background
      Scrollbar : hide 4
    • grouping
      Group format
      %album%
      Row height : 22
      Row number of group header
      $if($not(%el_is_collapsed%),2,$ifgreater(%el_direct_item_count%,0,$add(1,%__ART_ROW__%),2))
      Minimum row number of group
      $max($add(%el_item_count%,1),$if($findfile(%__ART_PATH__%),$add(%__ART_ROW__%,%__ADD_ART_ROW__%),)))
    • field definition
      __ART_PATH__ : $replace(%path%,%filename_ext%,)%album%.jpg
      __ART_ROW__ : 1
      __ART_MARGIN__ : 4
      __IS_ART_ON_GH__ : 0
    • behaviour
      Mouse Hover Action : Enable hover, Item Focus, Item Delay 0
      Update every second(for per second)

 

  • Panel Stack Splitter 4
    下段内の配置を管理する。また、背景や再生中の曲の時間・年を表示する。
    • PanelList
      Track info mod 3の配置 Track info mod 4の配置 Biography Viewの配置 Track info mod 5の配置 Track info mod 6の配置
    • Script
      PerTrack
      // Background
      $drawrect(,29,376,1,brushcolor-217-217-217 pencolor-null)
      
      
      // PerTrack
      $if(%isplaying%,
      $button2(,,0,0,376,30,
      '$alignabs(6,7,340,13,left,top)%title%',
      '$drawrect(,,376,29,brushcolor-255-102-0 pencolor-null)$alignabs(6,7,340,13,left,top)$font(,,bold,255-255-255)%title%$drawrect(348,0,1,29,brushcolor-255-255-255 pencolor-null)$alignabs(359,7,8,10,,)$font(WEBICON,10,,255-255-255)C',
      'Activate now playing',),
      $alignabs(6,7,136,12,left,top)$font(,8,bold,)'Please choose the track.'
      )
      Per Second
      // Background
      $drawrect(,29,376,1,brushcolor-217-217-217 pencolor-null)
      
      
      // PerTrack
      $if(%isplaying%,
      $button2(,,0,0,376,30,
      '$alignabs(6,7,340,13,left,top)%title%',
      '$drawrect(,,376,29,brushcolor-255-102-0 pencolor-null)$alignabs(6,7,340,13,left,top)$font(,,bold,255-255-255)%title%$drawrect(348,0,1,29,brushcolor-255-255-255 pencolor-null)$alignabs(359,7,8,10,,)$font(WEBICON,10,,255-255-255)C',
      'Activate now playing',),
      $alignabs(6,7,136,12,left,top)$font(,8,bold,)'Please choose the track.'
      )
    • Behaviour
      Default font : Arial bold 9pt
      Enable Per Second

  • Track info mod 3
    再生中の曲のタイトルを表示する。また、クリックすると再生中の曲をELPlaylistでアクティブにする。
    // Background
    $drawrect(,29,376,1,brushcolor-217-217-217 pencolor-null)
    
    
    // PerTrack
    $if(%isplaying%,
    $button2(,,0,0,376,30,
    '$alignabs(6,7,340,13,left,top)%title%',
    '$drawrect(,,376,29,brushcolor-255-102-0 pencolor-null)$alignabs(6,7,340,13,left,top)$font(,,bold,255-255-255)%title%$drawrect(348,0,1,29,brushcolor-255-255-255 pencolor-null)$alignabs(359,7,8,10,,)$font(WEBICON,10,,255-255-255)C',
    'Activate now playing',),
    $alignabs(6,7,136,12,left,top)$font(,8,bold,)'Please choose the track.'
    )
  • Track info mod 4
    再生中の曲のCDジャケットを表示する。画像は曲と同一フォルダ内のもの。
    // PerTrack
    $imageabs2(70,70,0,0,70,70,,,
    $if($fileexists($replace(%path%,%filename_ext%,)*.jpg),
    $replace(%path%,%filename_ext%,)*.jpg,/images\no_image.jpg),
    )
    $imageabs2(70,70,0,0,70,70,,,/images\overlay_reflect.png,)
  • Biography View
    再生中の曲のアーティストの情報をLast.fmより取得して表示する。Biography Viewの設定
    • Custom Color
      Font : Tahoma 7pt

 

  • Track info mod 5
    再生中の曲の歌詞検索やファイルの位置を開くボタンを表示する。
    // PerTrack
    $button2(,,0,0,112,14,
    '$drawrect(,13,15,1,brushcolor-160-160-160 pencolor-null)$alignabs(4,,106,10,,)$font(WEBICON,10,,128-128-128)C$font(Arial,7,bold,0-0-0)  SEARCH FOR LYRIC',
    '$drawrect(,13,112,1,brushcolor-255-102-0 pencolor-null)$alignabs(4,,106,10,,)$font(WEBICON,10,,255-102-0)C$font(Arial,7,bold,255-102-0)  SEARCH FOR LYRIC',
    'Google Artist + Title + Lyric',
    )
    
    $button2(141,,0,0,104,14,
    '$drawrect(,13,15,1,brushcolor-160-160-160 pencolor-null)$alignabs(3,1,99,10,,)$font(Wingdings 2,6,,128-128-128)5$font(Arial,7,bold,0-0-0)  OPEN DIRECTORY',
    '$drawrect(,13,104,1,brushcolor-255-102-0 pencolor-null)$alignabs(3,1,99,10,,)$font(Wingdings 2,6,,255-102-0)5$font(Arial,7,bold,255-102-0)  OPEN DIRECTORY',
    'Open Directory',
    )
    Run servicesに登録するパラメータ
    Google Artist + Title + Lyric
    http://www.google.co.jp/search?hl=ja&q=$replace(%artist%+%title%+歌詞, ,+)&btnG=検索&lr=
    Open Directory
    "$substr(%_path%,0,$strrchr(%_path%,'\'))"
  • Track info mod 6
    登録してある曲の総数、再生中の曲情報(アーティスト、アルバム)、設定画面を開くボタン、foobar2000のボリュームを表示する。曲の総数は全てのプレイリストの曲を足して数えている。
    // Background
    $drawrect(8,43,273,1,brushcolor-204-204-204 pencolor-null)
    $drawrect(8,67,273,1,brushcolor-204-204-204 pencolor-null)
    $drawrect(8,112,273,1,brushcolor-0-0-0 pencolor-null)
    
    // PerTrack
    $alignabs(12,6,130,120,,)$font(,,bold,96-96-96)Media Library
    $alignabs(12,23,278,120,,)$font(,,bold,0-0-0)
    $if(%isplaying%,
    $cwb_splitnum($add(
    $getitemcount(New Playlist),
    $getitemcount(Active Playlist),
    $font(Arial,,,96-96-96) songs since December 2008.,)
    $alignabs(12,49,130,120,,)$font(,,bold,96-96-96)Artist
    $alignabs(60,49,209,120,,)$font(,,bold,0-0-0)[%artist%]
    
    $alignabs(12,73,130,120,,)$font(,,bold,96-96-96)Album
    $alignabs(60,73,209,120,,)$font(,,bold,0-0-0)#lineheight,16#[%album%]
    
    $button2(12,119,0,0,69,13,'$font(,,bold,96-96-96)Preferences','$font(,,bold underline,255-102-0)Preferences','Preferences',)
    $if(%isplaying%,
    $alignabs(175,121,340,9,,)$font(,7,bold,0-0-0)Volume
    $alignabs(215,119,54,11,right,)$font(,8,bold,0-0-0)[%cwb_volume% dB],
    )
    

2009/11/07 追記:記事の加筆・修正。

0 Coment:

Post a Comment