Chienomi

デジタルミュージックライブラリをCDにする

Live With Linux::technique

先日古いクルマを買った。 古いクルマなのでカーオーディオがCDデッキであった。そのほかの選択肢はカセットテープである。

私は普段、ウォークマンにミュージックライブラリを全部入れている。 これは、ほぼAACのライブラリである。 ベースになっているものはNAS上にあるFLACのライブラリである。

ライブラリを形成するための基本的なスクリプトはGitHub上に置いてある。 これによりcdrdaoを使った.bin及び.tocファイルが作られている。

ここではLinux上で、既にデジタルミュージックライブラリに集約された状態をスタートとしてCD-Rを使ってオーディオCDを焼く方法について記録する。

bin/tocがあるパターン

cdrdaoによって生成されたbin/tocがある場合は話は単純である。

ただし、cdrdaoはtocファイルを出力先のフルパスで書くため、NASへ移動した段階で整合性が取れていない。

どのみち大量のCDを焼くには手作業が発生し、多大な時間も必要となるので、必要な分だけと考えれば多少の手間は許容するとしよう。

まず、tocファイルだけを扱いやすい場所へコピーする。 私はtmpfsになっている~/tmpにコピーした。

そして、それをエディタで開き、フルパスのベースディレクトリを、実際のベースディレクトリに一括置き換えし、保存する。 binファイルはNAS上に置いたままで構わない。

あとは、cdrdaoを使って焼くことができる。

cdrdao write --device /dev/sr0 fooalbum.toc

オーディオファイルのアルバムから

オーディオファイルはきれいに作れていれば、print -l *.flacのような形でアルバムの順通りになる。

FLACを直接書くわけにはいかないので、変換を行う。

for i in *.flac; do ffmpeg -i $i ~/fooalbum/${i:r}.wav

あとは単純に

wodim dev=/dev/sr0 -audio -pad -driveropts=burnfree *.wav

のようにして焼ける…はずなのだが、うまくいかなかった。 詳細はwodimの問題から。

プレイリストから

デジタルミュージックライブラリで作ったプレイリストを焼くことも考えたい。 ただし、プレイリストのサイズが700MB(80分)を超えている場合は無理だ。

まず、m3uプレイリストは#で始まらない行は有効なファイルパスである。 だから

sed '/^#/ d' playlist.m3u

でファイル一覧が取れる。

だが、この場合そもそもソースがデジタルミュージックであるケースがある。 CD産ではないデータは、PCMデータ自体がCDにマッチしないものである場合があり、これを合わせる必要がある。

重要になるのは2チャンネル(ステレオ)であること、そして44100Hzのサンプリング周波数であることだ。

ffmpeg -i audio.m4a -ac 2 -ar 44100 ~/album/audio.wav

あとはforで回せばいけるのだが、プレイリストの順が保たれない。 Zsh的にはこんな感じで出力することになる。

integer c=0; sed '/^#/ d' playlist.m3u | while read; do ffmpeg -nostdin -i "$REPLY" -ac 2 -ar 44100 ~/album/$((c++))-"${${REPLY:t}:r}.wav"; done

-nostdinをつけないとうまくいかない。

これだと辞書順にならないが、Zshであれば

print -l *(n)

で数値順に並べられるため問題はない。

wodimの問題

wodim(=cdrecored)でうまく焼けなかった。 バッファアンダーランだと言われるのだが、そもそもソースファイルはtmpfs上に置いており、CPUはRyzen9 5950X。 ちょっとありえない状況だ。

それで焼けないというのは、何かがおかしい。 以前も類似の問題に遭遇したので、cdrecordの品質があまりよくないのではないか。

同様の理由でk3bもうまく動作しない。

ドライブを変える

MATSHITA製(松下ではない?)のドライブからBuffalo製ドライブに変更することでうまくいった。

BURNFREEがよく効くとかだろうか。

cdrdaoを使う

tocファイルを作ってcdrdaoで焼くことを考えたが、これはTOCの仕様がなかなか厳しく、うまくいかなかった。

xfburnを使う

XFceのライターであるxfburnをcdrecordを使わず、うまく動作する。

古いカーオーディオについておまけ

まず、カーオーディオにAUX端子がついている場合はなにも問題ない。3.5mmステレオケーブルで接続すれば用を成すだろう。

カーナビにコンポジット端子がある場合なども、RCA-TSRminiの変換ケーブルとかを使えばいいだけだ。この場合、黄色端子は無視する。

私の場合、そういった方法も使えず、内部的な端子に割り込もうにも都合が悪い、というかかなり大変で、方法自体はあるものの「ノイズが乗る」といった話があった。

どうしてもデジタルプレイヤーを使いたい場合、カセットアダプターと呼ばれる3.5mm接続でカセットテープに流すやつとか、FMトランスミッターでFMラジオとして聴くとかいった方法もあるのだが、音質劣化が著しいので「聴ける」だけでかなり厳しいと思ったほうが良い。

スピーカー持ち込みで聴くという方法もあるが、CDデッキがあって当たり前の世代以降のカーオーディオはそこそこ音が良いため、ある程度レベルのポータブルスピーカーでは歯が立たないのでもったいなく感じてしまう。

自動選曲で流したいみたいな人には難しいのだが、ある程度プレイリストを組んで聴いたり、あるいはアルバム単位で聴いたりする人は素直にCDに変換するというのも案外悪くない。多少の手間はあるし、音楽の切れ目は発生するが、そういう再生スタイルならばデジタルプレイヤーでも同じことなので。

個人的には、古いクルマに古いデッキがついている場合、もちろん最新のオーディオやナビに積み替えるのも悪くはないが、実際問題としてそれが見合わないことも少なくないだろう。

これがカセットデッキしかないようなカーオーディオの場合なかなか難しくて、そもそもカセットテープが十分な音を保存できないため、カーオーディオ自体がそれほど良いものではなかったりする。この場合積み替えても十分な満足は得られないかもしれない。

私が買ったクルマはCDデッキがついていた。16bit/44100Hz PCMであるCDは現代の基準でも音質はよく、21世紀になってくるとレコーディング環境もこれに追いついてきてかなり良い音が保存できるようになってきた。 このため、21世紀のクルマは割とちゃんといい音がするデッキが標準でついていることが増えた。 まぁ、先代BRZなんかはオーディオ自体がついてないし、デミオも安いグレードだとそうだった気がするが、とにかくオプションの高いオーディオシステムを積まなくてもまあまあ聴ける音になってきたのが21世紀の話だ。

そしてPDAPに入れるオーディオライブラリをFLACにするのは結構大変(手持ちの曲数にもよるが)なので、だいたいがlossyな音源だろう。私はウォークマンである関係で、320kbpsのfdkaacで圧縮したAAC、というこだわりこそあれど、lossyで我慢している。 この点から見ても、CD再生というのは音質的にはむしろ有利である。アルバムで聴くようなタイプの人はCDケースなどを使ってうまく運用すれば、多少の手間が増える程度で済むので、デジタルプレイヤーを使用するのが難しい場合は、無理せずCDにするというのが良いと思う。 CDすらないような年代のカーオーディオではそこまでの音質は期待できないので、カセットアダプターを使うのも悪くない。

せっかくだからそのクルマの年代にあった「当時ものの」音楽を流すのも悪くないが、当時聴いていたもので今もヘビーローテーションしたいようなアルバムがあまりなかったので、私はそのようにしなかった。