PC上の音楽ライブラリを整理する

今までCDからRippingしてきた音源は当時流行っていたmka(tta+cue)やmka(wv+cue)形式で保存していた。
私が使用してるAudioPlayerはfoobar2000で、最近アップデートしたらフォーマットに対応するためのDLLが無かった。
そこでもう少し汎用性のあるFLAC+内部cuesheetに移行することにした。
matroskaはPC上ならまだDirectShowフィルターがあるからWMPWinAmpなどで再生できるが
そもそも可逆圧縮自体マイナーなフォーマットなので携帯プレイヤーではほとんど対応していない。
iPodApple独自規格のみ対応していたり、他は可逆圧縮では有名なFLACぐらいしか無い。


さてここで問題、今年の3月から私の音楽ライブラリはLinuxUbuntuに移してしまった。
100近いファイルを一つ一つトランスコードして戻すのはネットワーク的に時間がかかるので全てUbuntu上で処理してしまうことにした。

必要なソフトウェアを落とす

matroskaファイルを操作するためにmkvtoolnixをインストールする

sudo aptitude install mkvtoolnix

FLACを操作するためにFLACをインストール

sudo aptitude install flac

WavPackをインストール

sudo aptitude install wavpack

TTAを操作する為に公式サイトからDLしてくる

wget http://prdownloads.sourceforge.net/tta/ttaenc-3.4.1.tgz
tar x ttaenc-3.4.1.tgz
cd ttaenc3.4.1-bin
sudo ttaenc /usr/local/sbin/

Linux用パッケージ時にしては珍しくソースコードではなくバイナリの形で配布していた。
なおコピー先はUbuntuではパスが通っていたがコピーしていいのかはよく分からない

Matroska ファイルの操作方法

今回はUbuntuでもServer版なのでCLI前提で行きます。
GUIでしたい人はMkvToolnix-GUI あたりをご使用ください。

まず最初にmatroska ファイルを調べる。対象のファイル名をinput.mkaとしておく

mkvmerge -i input.mka

出力結果

File 'input.mka': container: Matroska
Track ID 1: audio (A_TTA1)
Attachment ID 767786114: type 'image/png', size 67490 bytes, file name 'cover.png'
Attachment ID 422428053: type 'text/plain', size 2946 bytes, file name 'cuesheet.cue'

ここでTrack ID:1が音声である事を確認

これから音楽トラックとcuesheetを取り出す

mkvextract tracks input.mka --cuesheet 1:tempfile.tta

これでTTAのtempfile.tta とtempfile.cueが出力される。

トランスコード(パイプ編)

FLACTTA もWavePack もすべて標準入出力を利用したパイプ処理に対応しています。

ttaenc -d tempfile.tta -o - | flac -8 - -o tempfile.flac
wvunpack tempfile.wv -o - | flac -8 - -o tempfile.flac

パイプを使用するとwavファイルをHDDに読み書きする必要が無い分高速で処理できます。

FLACへの内部cuesheetの書き込み

FLACではフォーマットとしてcuesheetの書き込みに対応しています。
しかしこれはトラックの曲名やジャンルなどの情報をタグ付けすることには対応していません。

foovar2000の独自規格として音声ファイルのコメント領域にCUESHEETタグとしてcuesheetをそのまま書きこむという物があります。
現在これをUbunutu上で行う手段はmetaflacによって行う事が出来るはずです。
現在うまくいっていないので、成功しましたら後日上げます。