音楽CDを特定するDiskID、CDシリアル番号

とりあえず、分類シリーズ(?)はここで一区切り。
今回は音楽CDを特定する方法です。



経緯

商品パッケージを特定するには、JANコードやISBNコードを使います。
これで一意に特定できないことは、今まで検討したとおりですが、参考にはできます。


音楽CDのパッケージもJANコードが掲載されているので、これを参考にすることができます。


一方、音楽CDをデジタルオーディオプレイヤーにいれると、曲名等が表示されます。
これは、音楽CDをデジタルオーディオプレイヤーに取り込む際、インターネットを通じてCDDBwikipedia)にアクセスして情報を取得し、その情報をMP3ファイル等に書き込むから可能なわけです。


そうすると、音楽CDからCDを特定する情報を取得しない限りこの仕組みは成り立ちません。
どうやって特定しているのでしょうか。


CDDBにもいろいろある

Windows Media Playerで音楽CDを取り込むと曲名が表示されないけど、iTunesだと曲名が表示される。そんなこともあります。ここからもCDDBは色々あることがわかります。


wikipediaによれば

  1. Gracenote
  2. freeDB
  3. allmusic(AMG)

の3つのようです。

特定する方法

いずれもソフトで音楽CDのTOC等を取得し、この値をもとに音楽CDを特定しているようです。
特定する際に算出した値を一般的に、DISK IDと呼んでいるっぽいです。
(ひょっとするとfreeDBだけかも)


しかし各社でDISK IDの算出方法は異なるようです。


商用のライセンスが必要なGracenoteallmusic(AMG)については、情報が巷に流れていないようなので、以下はGPLで提供されているfreeDBの情報を追います。


必要な情報は、以下で取得することができます。


▽FreeDB 操作 (執筆中)
 http://ugnag.lar.jp/docs/cddb/freedb.html


わかりやすいです。

・曲数
・曲ごとの開始位置(フレーム単位)
・曲ごとの長さ  (フレーム単位)


これらを*.cdaファイル等から取り出して、元に算出しているとのこと。
一方で、*.cdaファイルには、CDシリアル番号も記録されているそうです。


ではなぜCDシリアル番号を使って音楽CDを特定しないのか。
理由をみつけることができなかったのですが、CDシリアル番号を振る機関みたいなのもみつけられないので、一意になるようにはなっていないのでしょうね、おそらく。

結論

とはいえ、音楽CDは2枚組というのも決して珍しくありません。
また初回版・通常版のようにパッケージが違っても、中身の楽曲は一緒でしょうから、DiskIDは一緒になりますし。
つまり、パッケージの特定にはほとんど使えないと思います。
利用者が検索のヒントにするにも、DiskIDは巷にでていませんから難しいですね。


GPLのライセンスに沿って、freeDBから情報を取得したり、送信したりできるようになれば……これはこれで面白い気がします。いや利用者的にどうかはともかく、自己満足的に(笑)


パッケージテーブルとディスクテーブルを別に持って、さらに楽曲テーブルを持てば、あまり手間をかけずに情報をまわすことができますね。


とても今回はそこまでいかないのですが、一応検討の記録ということで。


(その他参考)

▽FreeDBからCD情報を取得するためのDISCID算出(トラログ)
 http://blog.toratech.net/article/24473002.html


CDDBプロトコル(YATUのたわごと)
 http://d.hatena.ne.jp/yatu/20060415