自分の場合はCDを購入して聴くことが多いのですが、外出時には当然CDプレイヤーを持っていくことはないです。スマホのストレージに音楽ファイルを入れておいて、お気に入りのプレイヤーアプリで再生という使い方が多いです。
で、久しぶりにCDを買ったので、これまでのようにリッピングしようかと思い、新しいメインPCに定番で使っていたCDexをインストールしようとNASのフォルダを開いたところ、Windowsセキュリティが反応してPUABundler:Win32/FusionCoreが入ってるから検疫する?と聞いてきました。
このFusionCoreはいわゆるマルウェアやアドウェアというタイプで、不要な広告を表示するもの。無害といえば無害だけど、ユーザの許可なくインストールされて動作するという点ではお行儀の悪いソフトです。
CDex自体は2020年以降のアップデートはされていないようです。なので他にいいのがないかどうかを探してみることにしました。
目的はCDから音楽データを吸い出してスマホで再生可能な音楽ファイルに変換すること。変換は最近使っているFDK_AACが使えればいいな、という程度です。それからもうひとつ重要なのが、吸い出しの際にCDDBからアーティストや曲名を拾ってこれること。これがないとFile001.wavなどというものになってしまい、ファイル名からなんの曲なのかがわからなくなってしまいます。
ちなみにこれまで長い間利用していたCDデータベースの freedb.org は2020年3月末で終了していたのに今さら気づきました。ということは2年以上も音楽CDを購入していなかったってことかしら。
その代わりではないですが、MusicBrainzという音楽Wikipediaみたいなサービスがあり、そちらを使うことでfreedb.orgと同じことができるようです。
最初はWindows用で探したら、Monkey's Audioというものが見つかりました。が、どうやらこれ単体ではCDからのリッピングはできないようです。リッピングツールは別に用意して、WAV形式で吸い出したものをMonkeysAudioで圧縮するという手順になるのですが、リッピングツールとしては非常に評価の高いExact Audio Copyが使えます。音楽CDはデータCDのようなエラー訂正の仕組みはないのですが、音楽データを正確にリッピングすることができるらしい、です。
Exact Audio CopyはWAVデータとして保存することもできますが、同時にエンコードもできるようです。デフォルトでは以下のような外部エンコーダに対応しているようです。
最後に見つけたのがfre:acです。
fre:ac is a free audio converter and CD ripper with support for various popular formats and encoders.ということで、いろんなフォーマットやエンコーダをサポートしています。CDDBもGnuDbという音楽データベースに対応しているようです。
Gnudb.org a new home for the freedb.org database to make sure it stays free.
freedb.orgのデータベースを移行したんでしょうか。GNUプロジェクトとの直接の関係はないように見受けられますが、Wikipediaには次のように書いてあります。
2020年3月31日をもってサービス終了することが告知され、全てのサービスが終了し、gnudb.orgへ自動的に転送されるようになっている。
どうやらfreedb.orgへのアクセスはgnudb.orgに転送されるようです。
それはさておき、fre:acはデフォルトで以下のようなエンコーダをサポートしています。
FDK-AACが入ってますね。ラッキーです。ワンストップでリッピングからエンコードまででき、かつ <アーティスト名>/<>/nn-曲名.m4a のように出力ファイルの場所と名前を指定できるので、これでいこうと思います。
そのうち、倉庫に保管してるCDもエンコードし直すかな。
ちなみにちなみに、Linuxではどうかと思って検索してみたら、abcdeというのが見つかって、このabcdeはshスクリプトでツール類を適宜起動してリッピングからエンコードまでやってくるようなんですが、WSL2でのArchLinuxにcdparanoia入れてabcdeで動くか、と思ったらそもそもcdparanoia自体が動きませんでした。
正確に言うと、cdparanoiaは起動時に /dev/cdrom や /dev/hd0a などのブロックデバイスを探しにいくのですが、WSL2では親側のCDドライブ(DVDでもBDでも)をマウントするには
mount -t drvfs q: /mnt/q
みたいにマウントして参照する以外はまだできていないようで、この時点でアウトっぽいです。