覚えられませんっ

元「覚えらんない人のためのオンラインソフト備忘録」。遅ればせながらブログ移行してみた次第。

関連付け用Foobar2000を作る

起動時に苛立つ俺

余は如何にしてFoobar2000信徒となりし乎 - 覚えらんない人のためのオンラインソフト備忘録で述べたとおり、俺のMP3プレイヤーはFoobar2000である。こいつにプリセットのイコライザー設定Punch&Sparkle.feqを読み込ませたものが俺の好みにばっちり合っていて、これまで非常に満足して使用してきたわけだが、ただひとつ、起動が遅い、という欠点がある。その最大の原因はおそらくプレイリストにある。俺はすべてのMP3ファイルをぶち込んだ10000曲近いプレイリストを読み込ませているのだ。それでもそこそこの速さで起動してくれるのがFoobar2000のすごいところで、Winampあたりではとても同じことはできないだろう。とはいえ、関連付け起動などの際にはこの起動時間の長さはちょっとうんざり。そこで関連付け用のプレイヤーを別にしようとしたこともあった。ところが、どんなプレイヤーを使っても、やっぱり音質に満足できない。いい音、ってんじゃない。「好きな音」が作れないのだ。GSPlayerFittleあたりはまずまずいい感じ、と思ったが、Foobar2000と聞き比べてしまうと「やっぱFoobar2000じゃねえと嫌」と感じてしまう。で、俺の関連付けプレイヤーは起動時間の問題を抱えつつもやっぱりずっとFoobar2000だったりしてきた。

Foobar2000の最小構成

しかし考えてみればそもそもFoobar2000は「軽量プレイヤー」のはずである。俺が使用した日本語化ファイルは、非常にたくさんのコンポーネントがデフォルトでインストールされるSpecialインストーラーを使うことを前提にしていたので、何も考えずにそれに従ったが、俺は実際のところMP3以外の音楽ファイルなど聴かないし、エフェクト類も使用しない。関連付け起動時にはでかいプレイリストも不要。またFoobar2000はデフォルトではC:\Program Files\foobar2000にインストールされるが、これを別のフォルダにそのままコピーしても全く問題なく使用できることは以前確認済み。ということは、現在のフォルダ内容を別フォルダにコピーして、大きなプレイリストを読み込む「単独起動用Foobar2000」とし、現在関連付けされているC:\Program Files\foobar2000\foobar2000.exeを「関連付け用軽量Foobar2000」にしてしまえばよい、と気づいた。*1
Foobar2000Wiki for Japanese usesによれば、Foobar2000が起動する最小構成は

foobar2000.exe
utf8api.dll
foo_ui_std.dllなどのUIコンポーネント
があれば起動します。
このほかデコードにはInputコンポーネント、出力にはOutputコンポーネントが必要になります。

ということ。これに俺が好んで使用しているDSPが使えるようにする最低限のコンポーネントを入れればいいわけだ。やってみた。
C:\Program Files\foobar2000\に

C:\Program Files\foobar2000\Components\に

      • foo_dsp_extra.dll(イコライザーを使用可能にするのに必要)
      • foo_dsp_ExtraStereo.dll(ステレオ感を強調)
      • foo_dynamics.dll(コンプレッサー)
      • foo_id3v2.dll(ID3v2タグの読み書き)
      • foo_input_std.dll(標準Inputコンポーネント)*
      • foo_output_std.dll(foobar2000の基本output)*
      • foo_ui_columns.dll(カラムごとにソートが可能な高機能UI。デフォルトのUIで良いならfoo_ui_std.dllをいれておけばよい。)*

俺の場合、関連付け用には以上のファイルだけで十分なのだ、ということが分かった。これだけだとさすがに起動は一瞬。
ほんっとに最低限でMP3ファイルが再生できりゃいい、てならC:\Program Files\foobar2000\Components\以下は*のファイルだけあれば良い。

プレイリストのせいじゃなかった

試しにこの構成のFoobar2000に前述の大きなプレイリストを読み込ませて起動してみた。驚いたことに起動は結構速い。ってことは起動に時間がかかっていたのはコンポーネントのせい?もしそうであれば、使いもしないコンポーネントのために起動スピードを犠牲にしていたということになる。
そうと分かれば単独起動用のFoobar2000でも、必要なコンポーネントだけを残してあとは削っちまえ。とりあえず必要そうなものは
C:\Program Files\foobar2000\に

      • database.foo(データベース)
      • fooassoc.exe(関連付け変更)
      • iconv.dll(multilanguageSupport。日本語Freedbを使用するのに必要。デフォルトでは入ってない?)

C:\Program Files\foobar2000\Components\に

      • foo_shuffle.dll(シャッフル再生を可能にする)
      • foo_freedb.dll(日本語Freedbを使用するのに必要。)

まずはこんなところか。あとは必要を感じたらおいおい追加していけば良かろう。
これだけだと見事にさくっと起動する。快適快適。しかし俺、それなりのスペックのPCを使っていながら、ほんとに軽いソフトしか使ってねえよな。これならPentium3くらいのPCで十分なんじゃなかろうか。

Preferance備忘録

一応下記の部分をいじっておくのを忘れずにって申し訳ありませんが俺自身にいってます。俺は日本語化したものから不要なものを削ったので、Preferanceは基本的に日本語化されたものになっている。

      • freedb masstaggerのfreedbのサーバーに日本語サーバー(http://freedbtest.dyndns.org/~cddb/cddb.cgi)を指定。
      • ID3V2 tag supportの「UTF-16タグのかわりに常にISO-8859-1タグを書き込む」と「ISO-8859-1タグをシステムコードページを用いてデコードと書き込みをする」にチェック。(Shift-Jisでタグを書き込む設定。「すべての文字列にバイトオーダーメイカー(BOM)を書き込む」はUnicodeでタグを書き込む設定。)
      • Databaseで「データベースを有効にする」にチェック。
      • Columns UIのColumnsタブでColumnsの"Time"を削除し、"Artist" のWidthとResizeを180に、"length"のWidthとResizeを40に。これはごく個人的な設定。
      • Title formattingのMain Window titleを
$if2(%title%,%_filename_ext%)/[%artist% - ]$if(%title%,['['%album%[ #[%disc%/]$num(%tracknumber%,2)]'] '])     '['%_foobar2000_version%']'

に書き換え。これも個人的なもの。タスクバーに曲目が表示される際に、アーティスト名優先でなく曲のタイトルが優先されるように書き換えている。

      • Standard inputsの「書き込むタグのタイプ」をID3v2に。
意外とお薦めかも

Foobar2000は初心の方には難しくめんどくさく感じるソフトだろう。インストーラーが複数あること、どのインストーラーをダウンロードすればいいのか分かりづらいこと、Specialインストーラーを日本語化するとPreferanceに項目が多くなりすぎて自分が設定したい部分がどこにあるかわかりにくくなること、あたりがその原因だと思う。今回俺がやったみたいに、大胆に削ってしまってシンプルにすると動きも軽くなるし設定もわかりやすくなるしなんかFoobar2000の魅力みたいなものがより強く感じられるかも〜って気がしてわりと皆さんにお薦めしたいような気がしているような気がしている俺である。何度気がすりゃ気が済むんだよ>俺

*1:MP3とかフォルダの関連付けのパスを設定し直すのがめんどくせえのでそうしたが、この方法では標準インプットで対応できない関連付けされた音楽ファイルを再生できるコンポーネントがなくなってしまうので注意。