flac を使ってみた。 2003/05/03 Windows版 可逆音声圧縮FLACのタグつけ http://www.faireal.net/articles/6/26/ を参考にした。 CDDB は使わない。 flac.exe と tag.exe だけを c:/usr/bin/ においた。 エンコードは $ flac --best 01_track01.wav とすると同じディレクトリに 01_track01.flac が保存される。 デコードは $ flac -d 01_track01.flac とすると同じディレクトリに 01_track01.wav が保存される。エンコードのときにどのフォーマット(wav とか) からエンコードした のかを覚えていて、そのフォーマットに戻すらしい。 エンコード前のファイルと diff とってみたが 1 バイトもちがいはない。 出力ファイル名、ディレクトリ位置を変更するときは $ flac -d 01_track01.flac -o d:/test.wav でいい。 flac から 直接 mp3 にエンコードするには $ flac -d -c 01_track01.flac | lame -b160 -k - test.mp3 でいい。 winamp 2.81 で flac 聴くには、in_flac.dll を winamp/Plugins/ に入れるだけ。 複数のファイルもこうやって処理。 $ for F in //szk/i/cdda/bluehearts_touzoku/track*wav; do flac --best $F -o ./`b asename $F .wav`.flac; done ちなみに do flac.. を do echo flac.. にすることで実行する前に確認できる。 track01.cdda.wav: wrote 25837009 bytes, ratio=0.612 track05.cdda.wav: wrote 40350602 bytes, ratio=0.667 track06.cdda.wav: wrote 24298878 bytes, ratio=0.459 平均して、元の3分の2 (60%)くらいにしかならない。半分(50%)になるものもあるけど。 まあタグを打てるという利点もあるし、いいか..。 タグのうち、「ジャンル」は mp3 では決まったものから選ぶんだけど、 flac では http://flac.sourceforge.net/format.html#metadata_block_vorbis_comment http://www.xiph.org/ogg/vorbis/doc/v-comment.html にあるように Vorbis の形式を踏襲しているらしい。で、その形式とは 自由文字列でいいらしく、決まったものは別にないようだ。 ---------------------------------------------------------------------- #!/usr/bin/perl -w use strict; ## usage ## $ perl flacinfo.pl < flacsrc02.txt | nkf -s > /home/sr/r5bl.bat ## $ for F in *.wav; do flac --best $F -o `basename $F .wav`.flac; done my @opt = qw/title artist album year genre/; my @sameinfo = (); my $track = 1; while(<>){ chomp(); if(/^●/){ @sameinfo = split(/ +/); #どのトラックも同じ情報のものはここに書く shift @sameinfo; #最初の要素(●) は削除 next; } my @wrd = split(/ +/); push @wrd, @sameinfo; #どのトラックも同じ情報のものを各行につけ足す #表示 print "tag"; foreach my $i (0..$#wrd){ print qq| --$opt[$i] "$wrd[$i]"|; # print "($i:$wrd[$i]) "; #debug } print qq| --track "$track" |; my $trackstr = sprintf("%02d", $track); my $oldfname = "track" . $trackstr . ".cdda.flac"; print $oldfname . "\r\n"; print qq|ren "$oldfname" "$trackstr $wrd[1] - $wrd[0].flac"\r\n|; $track++; } ---------------------------------------------------------------------- $ perl flacinfo.pl < flacsrc01.txt | nkf -s > /home/sr/bltouzoku.bat ---------------------------------------------------------------------- ● THE BLUE HEARTS THE BLUE HEARTS KING OF MIX 盗賊団 1994 Dance ダンス・ナンバー NO-TECH MIX チェルノブイリ HYPER DRIVED MIX TRAIN‐TRAIN READY−MADE MIX 青空 BLUE BUS MIX 情熱の薔薇 JYONETSU 'NO' MIX 夕暮れ HOUSE MIX 夢 RAGGA HARP MIX キスして欲しい SLEEPLESS MIX リンダ リンダ POST HISTORIC MONSTER DUB MIX 少年の詩 JAPANESE PSYCHO MIX 人にやさしく BRITISH MIX TURE ROCK MIX 情熱の薔薇 ACID FUNK MIX ダンス・ナンバー MIX#2 夢の駅 DUB MASTER X -in DUB ---------------------------------------------------------------------- これで、できた flac のディレクトリに batファイルを置いて、ダブルクリック。 うまくいったようだ。winamp2 ではタグの日本語表示が化けるがこれは 既に知られた winamp plugin のバグ。そのうち直るだろう。 ---------------------------------------------------------------------- ● THE BLACK MAGES 2003 Game Battle Scene FinalFantasy1 Clash on the Big Bridge FinalFantasy5 Force Your Way FinalFantasy8 Battle, Scene II FinalFantasy2 The Decisive Battle FinalFantasy6 Battle Theme FinalFantasy6 J-E-N-O-V-A FinalFantasy7 Those Who Fight Further FinalFantasy7 Dancing Mad FinalFantasy6 Fight With Seymour FinalFantasy10 ---------------------------------------------------------------------- 元ファイルはこのように アーティスト名も書くことができる。 その場合どの曲も同じ情報(●で始まる行) は、アルバム名から書く。 曲名とアーティスト名、アルバム名などは、 2 つかそれ以上スペースを開ける必要がある。