所有している全ての音楽CDのエンコードを完全自動化するアプリを作った

ダウンロード

アプリケーションはコチラから。(ソースコード付)
※Windows用。.net Framework 4.0 が必要
※CUIです。バッチ処理として自分用に作った物です。

開発動機、説明やら

皆さんは音楽CDから圧縮音楽へのエンコードはどうやっていますか?
きっと、人それぞれだと思います。

自分は CDex + lame でエンコード、MP3Tagでアートワークファイルを
手動でその都度やっていました。
(CDはイメージ化してHDDに保管、エンコード時に仮想ドライブソフトでマウント…)

最近、iTunesでの音楽購入を本格的に始めたので、
同じ形式に統一しようかな、という所がきっかけで再エンコードをするかー、
ということで始めました。

アルバムにして約300枚、曲数にして約4000曲。
CDex(厳密にはひっそりパッチ版)ではローカルに過去にリッピング、ネットワークで取得したCDDB情報が保管されるのでCDDB自体の
再取得は必要ないのですが
やっぱりマウスでポチポチクリックの繰り返しなんですよね。
そして、アーティスト・アルバム単位などでフォルダ分けもしているので
それもやる必要がある…、なんか面倒臭いんじゃないか、これ…。

と、いいつつ最初は全て手動でエンコード。
ただ、1枚ずつエンコードしてたら途方に暮れるのでCDexを4つ起動し、仮想CDソフトで
ドライブを4つにしてやっていました。

でも、手でやる以上ヒューマンエラーが出ちゃうんですよ。
そして、複数CDexを実行しているので一時ファイル名がバッティングして
エラーが出てエンコードに失敗するので、その時は該当の曲だけ選んで再エンコード。

これを延々と続けて約3日かかりました。
んで iPod に転送するわけですが、前述のエラーの影響か、データがおかしなことに
なってました。全く異なるアーティストの複数の曲が1曲にまとまってたりして
聴いてるときにそれに気づきビックリ。

CDは増える一方で、時代に合わせ定期的に手動で一々再エンコードはもうしてられない
という状況になりました。

そうだ、完全自動化すれば良い

理想ですよね。きっと世の中に同じ思いをしている人はいるはずだから
そういうソフトってあるんじゃないかなぁ、と思いググってみたけど無いんですよ。
有名どころのアプリはみーんなGUIでバッチ処理なんて備えていない。

無ければ作ればいい

と、いうことでプログラミングを開始。
CDの仕様とfreeDBの仕様を見つつ実装。
途中、色々あったけど完成(手持ちのCDで全てエンコードまでいけた)。

最初、Javaで書いてたのですが、CDの仕様を追っていく内に「むりぽ」状態になったので。
一旦破棄。WindowsネイティブのAPIでハードウェアアクセスが必要であると分かったので
Visual Studio をインストール。C++/CLIで開発開始。
実はC++は仕事で使ってますがCLIは初めてで興味はあったのと、作りたいプログラムの
目的が前提にあったので習作も兼ねて開発出来ました。CLI便利すぎ。
普段の仕事では、マルチプラットフォームありきのプログラミングを必要としているので
Windowsベッタリなプログラムは久々。あまりにC++/CLIが便利すぎて
ちょっとしたPC向けツール類の開発がこっちに移行しようかなと思ってます。