🎵

rekordboxのコレクションをCUE情報などを維持したままmp3にエンコードする手順

に公開

対象者

  • rekordboxに既存の音楽ライブラリ(iTunesなど)をまとめて放り込んで使っている
  • 既存の音楽ライブラリがmp3ではない
  • 既に大量にCUE打ちをしており今更やり直したくない
  • 今後もmp3ではない形式で基本的に管理し、適宜mp3にしたい
  • Windowsユーザー(本記事ではpowershellスクリプトを使用します)

背景

元々iTunesで曲を管理していたのですが、興味本位でrekordboxをインストールした際にそのままiTunesライブラリをコレクションに入れてそのまま運用していました。

そしてiTunesはwavのタグを読み取れない大変歴史あるソフトのため、可逆圧縮であるALACで管理していました。
rekordbox自体や一部のDJ機材はALACでも読み取れますが、USB書き出しをして持ち運ぶとなるとmp3一択になります。

ということでCUE打ちなどのデータを何も失わないまま、全データをmp3にする手順を確立する必要がありました。
そして今後も楽曲管理はiTunesかつALACで行いたいため、ある程度気軽に全楽曲の変換が出来る必要があります。

ただし、所持楽曲は1万曲を超えるため、毎回全ての楽曲ファイルのエンコードはしたくありません。あくまで必要な範囲でのエンコードに留める必要があります。

要件

必須事項

  • 元のライブラリは破壊しない
  • 元のライブラリのフォルダ構造を全て維持したまま、mp3以外をmp3に変換する
  • 毎回全ファイルのエンコードが走らない
    • 元ファイルの場所が移動したら追従する(ミラーリング的な)
    • 元ファイルのタグデータが変更されたら追従する
      • mp3であればハッシュ比較をし、違ったらコピーする(エンコードはしない)
      • それ以外であれば主要なタグを比較する

無理なこと

  • マイタグ情報 (rekordbox.xmlにマイタグ情報が載らないため無理)
    • どうせいわゆるCDJ系ではマイタグが見れないので許容します
  • SYNCMANAGERによる同期 (コレクションに対してしか使えないため)

手順

環境作り

必要なもの

エンコードにはffmpegを、音楽ファイルのタグデータ読み取りにtaglib#を使ってます。
後者は特に理由はなく、もっと早いものがあれば変えたい。

ライブラリ変換

何はともあれまずは既存のライブラリを変換する必要があります。
以下のPowershellスクリプトを実行します。

  • 元となるライブラリのパス & 出力先にするパス を適宜変えてください。
  • ffmpegのパスやtaglib-sharpのパスは適宜変えてください。
  • mp3、m4a、wav以外の拡張子は無視してます。適宜変えてください。
  • ログを吐くので、全部済んだらffmpegでエラーが出ていないかなど軽く見てあげてください。

https://gist.github.com/hitsub/79ee97c130f4c4383fa437182dd8d98f

  • メモ
    • mp3のハッシュ比較はあくまで比較さえ出来ればいいのでMD5でやる(デフォルトのSHA256は遅すぎる)
    • ファイル名に特殊文字(ワイルドカード系)があっても動作するように -LiteralPath で諸々やる
    • 音楽ファイル以外に対して処理しないよう弾く
    • タグ比較の際、うまくタグが取得できず同一なのにエンコードが走ることがあるが、許容できる頻度なので無視

rekordbox.xmlの準備

rekordboxからxmlを出力し、パスをエンコード済ライブラリを指すように置換します。

出力はメニューにあるので実行するだけ。

あとはそれを開いてVSCodeとかで正規表現ONにして置換すればOK。

F:/Musics/iTunes/iTunes%20Media/Music/(.*)\.(mp3|m4a)
F:/Musics/convertedLibrary/$1.mp3

rekordboxからxmlを読み込ませる

設定から編集済のxmlのパスを指定すればOK。

そうすると、ライブラリにいつものコレクションと変換済のmp3ライブラリが同時に見えるようになります。

ちゃんと曲をロードするとCUEなどの情報は残っています。大成功!
あとはUSBにエクスポートすればOK!

さいごに

必要な分だけエンコードが走るので、初回は時間がかかりますが2回目以降はそれなりに早いです。

mp3以外でやってるなら大変だぞと言われ続けていたので、思ったよりあっさり変換できて安心しました。
可逆圧縮という言葉が好きなので、これからも楽曲はALACで管理していこうと思います。

Discussion