CD全トラックぶんのFLACファイルを作り、 CDDBで取得したタグ(日本語も可)を自動連続付加する。
Winampで再生でき、音質はCDそのまま100%、WAVと完全等価で劣化なし、しかもサイズはWAVのほぼ半分。 FLAC(Free Lossless Audio Codec: ファイルの拡張子 .flac または .fla)は、MAC(Monky's Audio: 拡張子 .ape)と並ぶ代表的なフリーの可逆圧縮オーディオファイル形式です。もとのWAVファイルの40~60%程度に縮みますが、情報は一切失われません。 画像でいえばフルカラーPNG、動画でいえば huffyuv のようなものです。 完全にCDの音質100%そのままですから、mp3 や ogg のように、どのパラメータだと音がいちばんきれいか?と悩む必要ありません。言い換えれば、WAVにデコードすると最初のWAVと1バイトも違わないものが出てきます。 多少ファイルサイズが大きくても劣化ゼロにしたい場合には可逆(非破壊)圧縮、 音質が多少劣化してもファイルサイズを小さくしたい場合には従来の不可逆(破壊)圧縮、 とシチュエーションによって使い分けるとべんりそう。
Windows上だけに限っていえば現時点では .ape のほうがとっつきやすいですし、 FLACはAPEより平均して圧縮率や圧縮速度でやや劣るのですが、 再生時の負荷が軽く、オープンソース、クロスプラットフォームで仕様が明確であり、 Ogg Vorbis との統合が予定されているなど将来性がありそうです。 すでにハードウェアプレイヤーでの対応もあるもよう。
FLACは、まだ開発中の形式ということもあって、GUI環境が整備されていません。 とくにWindows環境でなかなか簡単にFLACのタグつけ(とくに日本語文字の)ができないようです。 CDexがFLACをサポートすれば解決する問題ですが、 現状で可能な「WAV→FLAC連続変換、自動タグつけ」方法をメモしときます。
注: ここで説明する方法では、ほんの少しですが、コマンドプロンプトやPerlを使います。 GUIで可能な操作については、別記事「Monky's Audio でFLAC」をごらんください。
いずれもパスが通ったところに置いてください。
お好きなリッピングソフトを使って、CDの全トラックをリッピングします。 オンザフライでFLACにする方法もなくはないのですが、ここでは、いったんWAV形式で保存することにします。 あとから処理しやすいように、ファイル名は、2桁のゼロパディングつきでトラック番号.wavとして(01.wav, 02.wav, ..., 09.wav, 10.wav, 11.wav, ...)、作業用の一時フォルダに出力します。 CDexの場合、Filename Format に %7 とだけ記入すればOKです。 CD-DAデータの吸い出しの完全性を高めるには、同じCDから2回リッピングを行い、 WaveCompare で全フレームを比較、1回めと2回めが一致しないファイルは、納得いくまでリップしなおすと良いでしょう。 無劣化保存の第一歩はメディアからの吸い出し。速度優先でおざなりな吸い出しをし、 プチノイズが乗ったWAVをFLAC化して「ロスレス」と喜ぶのは、どうかと……。
Player.exe などを使って、Gracenote のCDDBから、CDのデータを取得し、cdplayer.ini にエクスポートします。 または、Winamp でCDDBデータを取得して、Winamp CDDB Utility で cdplayer.ini にエクスポートします。 できた cdplayer.ini( Windows 2000 では、WinNTフォルダ直下にある)を上と同じ作業用のフォルダにコピー。 ファイルをエディタでひらいて、もしなかにFLAC化するのと関係ないCDのデータが入っていたら、 それらの行は削除し、FLAC化するCDに関するデータだけ残します。
[3B982F3] EntryType=1 artist=花の魔法使いマリーベル title=マリーベルと歌おう! numtracks=31 0=きっと出来るね! 1=魔法のテーマ 2=私!マリーベル 3=タンバリンのテーマ
ややこしいコマンドを手動でいちいちタイプしていてはラチがあかないので、
自動で連続実行できるように.batファイルを作成します。
以下のようなバッチファイルができればやり方はどうでもいいのですが、
ここでは Perl を使います。
ActivePerl はインストール済みとします。
以下の Perlスクリプトで、細部は好みによって変更してください。$params
の詳細については、
FLACのドキュメントを参照。ここでは速度中くらい、圧縮率中くらいの標準的な方法を指定しています。
ヒント: 多少圧縮時間が長くても圧縮率を最高にしたい場合、次のパラメータを利用できます。
$params = "-P- -b 4608 -m -l 12 -e -q 0 -r 0,6"
圧縮パラメータは主に圧縮率と圧縮所要時間のトレードオフをコントロールするものであり、
結果の音質には影響しません
(可逆圧縮なので、どんなパラメータで圧縮しても音質は一定)。
FLACやOGGのタグはユニコードベースのUTF-8が標準ですが、 作成するbatファイルの文字コードは、UTF-8ではなく、SJISでなければなりません。 下記のスクリプトを改造してどれかの変数を日本語でハードコーディングする場合、 要するに、難しいことは考えずにふつうに日本語をタイプしてSJISで保存すれば良いわけです。 tag.exe がシステム標準のコードページからUTF-8への正規化を行うので、 ユーザ自身がUTF-8を入力すると、過変換になってしまいます。
$params = "-P- -b 4608 -m -l 8 -q 0 -r 3,3"; $year = ""; $genre = ""; if( defined($ARGV[0]) ) { if( $ARGV[0] =~ /^\d\d\d\d$/ ) { $year = $ARGV[0]; $genre = $ARGV[1] if defined( $ARGV[1] ); } elsif( $ARGV[1] =~ /^\d\d\d\d$/ ) { $year = $ARGV[1]; $genre = $ARGV[0]; } else { $year = ""; $genre = $ARGV[0]; } } open IN, "<cdplayer.ini"; open OUT, ">wav2flac.bat"; while(<IN>) { chomp; if( /^artist=(.*)/i ) { $artist = $1; } elsif( /^title=(.*)/i ) { $album = $1; } elsif( /^(\d+)=(.*)/ ) { $track = sprintf( "%02d" , $1 + 1 ); $title = $2; $wavfile = "$track.wav"; $flacfile = "$album - $track - $title.flac"; print OUT qq(flac $params "$wavfile" -o "$flacfile"\n); $info = qq(--title "$title" --artist "$artist") . qq( --album "$album" --year "$year") . qq( --track "$track" --genre "$genre"); print OUT qq(tag $info "$flacfile"\n); } }
よく分からなければ上のをそのままメモ帳にコピペして、
flac.pl というファイル名で、上記と同じ作業フォルダに保存してください。
スクリプト名を flac.pl とした場合、
DOS窓からそのフォルダをカレントにして、次の例のようにコマンドを実行します。
perl flac.pl anime 1992
このスクリプトは、最大2個の引数を解釈します。
引数のなかに4桁の数字があると、アルバムの年数と解釈されます。
4桁の数字でない引数は、ジャンルと解釈されます。
これらの一方または両方は省略してもかまいません。
wav2flac.bat というバッチファイルが作成されるので、なかみをエディタで確認して、間違いなければ
wav2flac
とタイプします。これで01番、02番……の順で、WAVファイルがひとつずつFLACファイルに変換され、
変換がすむとタグ情報の入力が行われます。
進行状況はDOS窓に表示されます。条件にもよりますが、ひとつのファイルにつき数十秒から数分かかる可能性があります。
flac -P- -b 4608 -m -l 8 -q 0 -r 3,3 "01.wav" -o "マリーベルと歌おう! - 01 - きっと出来るね!.flac" tag --title "きっと出来るね!" --artist "花の魔法使いマリーベル" --album "マリーベルと歌おう!" --year "1992" --track "01" --genre "anime" "マリーベルと歌おう! - 01 - きっと出来るね!.flac" flac -P- -b 4608 -m -l 8 -q 0 -r 3,3 "02.wav" -o "マリーベルと歌おう! - 02 - 魔法のテーマ.flac" tag --title "魔法のテーマ" --artist "花の魔法使いマリーベル" --album "マリーベルと歌おう!" --year "1992" --track "02" --genre "anime" "マリーベルと歌おう! - 02 - 魔法のテーマ.flac" flac -P- -b 4608 -m -l 8 -q 0 -r 3,3 "03.wav" -o "マリーベルと歌おう! - 03 - 私!マリーベル.flac"
G:\My Music\Mary Bell OST>flac -P- -b 4608 -m -l 8 -q 0 -r 3,3 "31.wav" -o "マリ ーベルと歌おう! - 31 - 思い出にもなれない(カラオケ).flac" flac 1.0.4, Copyright (C) 2000,2001,2002 Josh Coalson flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type `flac' for details. options: -P 0 -b 4608 -m -l 8 -q 0 -r 3,3 31.wav: wrote 32823325 bytes, ratio=0.672 G:\My Music\Mary Bell OST>tag --title "思い出にもなれない(カラオケ)" --artist "花の魔法使いマリーベル" --album "マリーベルと歌おう!" --year "1992" --track "3 1" --genre "anime" "マリーベルと歌おう! - 31 - 思い出にもなれない(カラオケ).f lac" Tag - Automatic Tag from filename Copyright (c) 2002 Case Version 2.0.35, Compiled 2002-12-20 G:\My Music\Mary Bell OST\マリーベルと歌おう! - 31 - 思い出にもなれない(カラオ ケ).flac Format: FLAC Details: 44100 Hz Stereo, 951 kbps, playtime 04:36 Tag: FLAC Title: 思い出にもなれない(カラオケ) Artist: 花の魔法使いマリーベル Album: マリーベルと歌おう! Year: 1992 Track: 31 Genre: anime Comment: FLAC tag written. G:\My Music\Mary Bell OST>
FLACファイルは、Winampでプラグイン再生可能ですが、2002年12月現在、多バイト文字のファイル名が文字化けし、 Info画面も見れないようです。KbMedia Player や foobar2000 などでは、問題ありません。 foobar2000 は、日本語圏のソフトでないにもかかわらず、初期状態のままでFLACのファイル名(SJIS)とタグに含まれる日本語文字(UTF-8)を、 両方とも正しく表示できます。再生だけなら、FLACについてくる Winampプラグインで問題ないです。
Monky's Audio は、GUIで直観的に操作できるシンプルで分かりやすいインターフェイスを持っています。 コマンドラインが基本のUNIX風味なFLACに対して、Windowsソフトそのものと言えるでしょう。 その Monky's Audio のインターフェイスを使って、WAV→FLAC変換を……。
日本語の文字は化けるが変換には問題なし
Monky's Audio では、APE形式だけでなく、RKAU(高圧縮で有名なRK書庫の姉妹品)や Shorten形式で圧縮することもできますが、 2002年12月現在、FLAC形式での書き出しには対応してません。 しかし、次のようにすることで、やや強引ながら、対応させることが可能。
上のようにしたあとでは、Monky's Audio のメニューから External | WavPack を選ぶと、 ファイルはFLACで圧縮されるようになります。 モンキーのメニューでFASTを選ぶと、FLACは圧縮レベル0(最高速、最低圧縮)、 NORMALを選ぶとFLACのレベル5(デフォルト)、 HIGH を選ぶとFLACのレベル12(最高圧縮、最低速)。 それ以外のオプションを入れたいときは、External | WavPack | configure... を。 例えばここで -V スイッチを指定することもできます。 ( -V スイッチをつけると、FLACは自分がエンコードしたものを試しにデコードしてみて、ちゃんと元通りに戻るかいちいち確認しながら先へ進みます。 万一の偶発的なエラーを自己診断できるようになりますが、少し処理が遅くなります。)
モンキーをハックしてFLACエンコーディングに使う最大の理由は、複数ファイルを整然と連続処理させられること。 1個のファイルをFLACに変換するだけなら、OggDropライクなFlacDropで充分ですし、 そっちのほうが圧縮オプションも12段階ぜんぶGUIから選べます(デフォルトは最高圧縮の12になってます。環境によって遅すぎるときは、 圧縮率を下げて速度優先に)。 また、モンキーではFLACへタグの書き込みは、できません。 どうしてもGUIでタグを書かなければならないというときは、 tag.exeのフロントエンドを。 この場合、日本語の文字はエディットボックスで文字化けしますが、入力は通るので気にしないでだいじょうぶ。 ふつうに(SJIS)で入れれば、タグの情報としては UTF-8に変換されて書き込まれてます。 kbSTEもまだテスト段階とのことですが、 ごく最近(2002年12月19日)の ver. 2.02b からFLACのタグ編集をサポートしてます。