【Lyrics3 Tag v2.00 仕様書・訳】

#訳者注:本文はhttp://www.volweb.cz/str/tags.htmの一部を抜粋して、怪しい日本語に訳した物です。


 新しい v2.00 タグは、より複雑にはなったが、使用時により素速くそして完全な逆方向互換性をもって拡張されている。

 タグはテキストのみを用いている。サイズに関しても、5か6桁(バイト)固定のテキストキャラクタとして書かれている(余った桁はゼロで埋められ、スペースは入らない。例:'00010'など)。フィールドデータはASCII 01〜254までの範囲のキャラクタをもつ。

 Lyrics3 v2.00 はフィールドを使う。フィールドの数には限りはない(現在の定義されているフィールドは少ないが、将来加えられる可能性がある)。それぞれのフィールドのサイズは可変または固定である。全てのフィールドはフィールドIDを含む単純な構造であり、それはサイズとフィールドデータである。したがって、未知なフィールドを読んだり、タグをセーブするときにそれを書き込んだりすることが可能である。
 タグには特に必要とされるフィールドはないが、少なくとも1つのフィールドが存在しなければならない。フィールドはタグ中でどんな順番でもかまわないが、指標(indication)フィールドだけは、もしこれを使うならば、最初のフィールドでなくてはならない。

 

Lyrics3 v2.00 タグを持ったファイルの構造:

  1. 生のMP3ファイル
  2. 'LYRICSBEGIN' という文字列(いかなる区切りも含まない。'も含まない。)
  3. フィールドレコード(いくつでもよい。構造は後述)
  4. 全てのLyrics3データのサイズを示す6文字(桁)(上記2と3)
  5. 'LYRICS200' という文字列(いかなる区切りも含まない。'も含まない。)
  6. ID3タグ

 

フィールドレコードの構造:

  1. 3文字の大文字(フィールドID)。これは定義されたフィールドIDの1つと一致しなくてはならない。たとえフィールドIDが未知であっても、タグがセーブされるとき、このフィールドも書き戻してやらなくてはならないので、アプリケーションはそのフィールドも読み込まなくてはならない。
  2. これに続くデータのサイズを示す5文字(桁)の文字。サイズはゼロではあり得ない。最大サイズがそれぞれのフィールドIDに定義されている。
  3. フィールドデータ。

    例:EAL00030This is an extended Album Name

 

lyrics3 v2.00 タグを読むための手順:

  1. IDタグの前の9バイトを読みなさい。それはLYRICS200であるはずである。
  2. その前の6バイトを読みなさい。これは全てのタグフィールドとLYRICSBEGINデリミタのサイズを定義している数字(以降LSZと表す)である。
  3. LSZを読み込んだ位置からLSZバイトだけ戻りなさい。
  4. そこから11文字読み込んで、それがLYRICSBEGINであるかどうか確認しなさい。
  5. フィールドを読み始め、LYRICSBEGINを含めてLSZバイトだけ読み込みなさい。

 

フィールドの読み方(ステップ5):

  1. 3文字読みなさい。これはフィールドIDである。周知のフィールドのリストへそのIDを入れなさい。
  2. 5文字読みなさい。これはこの後に続くデータのサイズである。(これをFSZと表す)
  3. FSZバイト読みなさい。これがフィールドデータである。もしあなたがそのフィールドIDがなんなのかわからなければ(たとえば新しいフィールドであったりした場合)、データはそのままキープしておき、タグをセーブするときに書き戻しなさい(もちろん、フィールドIDとサイズも)。必ずこれを実行してください。なぜなら、ユーザが、古いアプリケーションを、そのアプリケーションが理解しない新しいフィールドを持ったmpegファイルに適用させてしまうかもしれないから。もし実行されないなら、セーブするときにこれらの新しいフィールドは削除されてしまうだろう。
  4. もしあなたがLYRICSBEGINを含めて、すでにLSZバイト読み込んだなら、フィールドを読むのをやめなさい。もしそうでなければ1に戻りなさい。

    1行以上を含むフィールドは、行間に改行を使っている。

 

フィールドID:

 下記が現在定義されているフィールドIDのリストである。もし Lyrics3 v2.00 仕様のもっと新しいバージョンが必要とされるなら、他のフィールドが加えられるであろう、しかしタグは未知のフィールドが無視され得る方法で設計されている。

ID 最大サイズ 詳細
IND 00002

 指標(indication)フィールド。これは現在2つの指標を含む、固定サイズのレコードフィールドである。将来、他の指標が既存の指標の他に加えられるかもしれないが、既存の指標は、フィールドレコードの中の同じバイト位置にとどまるだろう。
 もし、指標フィールドが使われるなら、必ずそれは最初のフィールドでなくてはならない。
 指標フィールドの構造は、後述する。

LYR 99999  歌詞を表す複数行のテキスト。タイムスタンプは、いかなる順番でも、テキスト中のどこにあってもかまわない。タイムスタンプのフォーマットは[mm:ss]である(タイムスタンプ中にスペースが入ってはいけない)。
 #訳者注:GLPではもちろん[mm:ss:xx]なども可。
INF 99999  複数行可能な、追加情報を示すテキスト。
AUT 00250  作詞/作曲者名。
EAL 00250  拡張アルバム名。(250文字まで)
EAR 00250  拡張アーティスト名。(250文字まで)
ETT 00250  拡張トラックタイトル。(250文字まで)
IMG 99999  イメージファイル(BMP, JPG, GIF format)へのリンク。
 イメージ行は、ファイル名、説明、タイムスタンプでなっており、これらは2文字のASCII 124("||")で区切られる。
 説明とタイムスタンプは省略可能であるが、もしタイムスタンプが使われ、説明が使われないなら、2つの区切り文字("||||")がファイル名とタイムスタンプの間になくてはならない。
 複数のイメージも可能であり、この場合、それぞれのイメージ行の間に、[CR][LF]区切りが必要である。最後のイメージ行の後に[CR][LF]は必要でない。イメージの数に制限はないが、フィールドサイズを超えてはならない。
 ファイル名のフォーマットは次のいずれかである。
・ファイル名のみ:MP3ファイルと同じパスにイメージがあるとき(もしMP3ファイルを動かしても(イメージも一緒に動かすなら)これはまだ正しいので、これが好ましい)
・相対パス+ファイル名:イメージファイルがMP3ファイルのあるフォルダのサブフォルダにある場合(例:images\cover.jpg)や、MP3ファイルの上のフォルダにある場合(例:..\artist.jpg または ..\image.jpg)。
・フルパス+ファイル名:イメージが全く異なったパスやドライブにある場合。この場合、もしイメージファイルが移動したり、ドライブレターが変わった場合、うまく動かないので、もし可能ならば避けた方がよい。(例:c:\images\artist.jpg)
 説明は250文字まで可能である。
 タイムスタンプは歌詞のタイムスタンプと同様なフォーマット([mm:ss])でなくてはならない。もしイメージにタイムスタンプがついているなら、選択された歌詞の行がタイムスタンプに基づいて切り替わるのと同様に、現れているイメージがタイムスタンプに基づいて自動的に入れ替わるだろう。
 #訳者注:イメージの表示・切り替えはGLPは対応していない(と思う。)

 拡張されたアルバム、アーティストとトラックは、30文字に制限されている ID3v1 タグフィールドに対する拡張である。もしこれらの拡張されたフィールドが存在するなら、それらの最初の30文字が ID3v1 タグでものと同じであることを確かめなさい。 もしそれらが同じであるなら、拡張されたフィールドを表示しなさい。 もしそうでなければ、IDタグの方を示しなさい。 これらの誤った拡張フィールドは、歌詞タグをセーブするとき、削除されるべきである。

 フィールドを保存するときは、それぞれのフィールドの最初の30文字を、ID3タグの対応するフィールドにコピーしなさい。もしそれらが30文字より大きくなければ、拡張フィールドを保存する必要は全くない。

 #訳者注:日本には RIFF MP3 (.RMP) という素晴らしい ID3v1 の拡張法がありますので、これらの拡張タグは入れておく必要はないと考えます。

 

指標フィールドの構造:

位置 バイト 意味
0 1 歌詞の発見。もし、タグ中にLYRフィールドがあるなら、1を、ないなら、0を入れる。
1 1 タイムスタンプの使用。もし、LYRフィールドの歌詞にタイムタグがついているなら、1を、ついていないなら、0を入れる。

 Lyrics3 v2.00 には、少なくとも1つのフィールドがあるはずである。もしフィールドが存在しないなら、 lyrics3 v2.00 タグは保存しないべきである。

例:

 次の例は、mp3データの後ろからID3タグの前までの全ての情報である。[CR][LF]で終わっていないところは、[CR]や[LF]を入れないでください。

LYRICSBEGIN
IND00002
11
EAL00041
Album name that is larger then 30 chars !
EAR00050
Artist name or band that is larger then 30 chars !
ETT00042
Track name which is larger then 30 chars !
INF00090
This track was actually recorded in several places around the world[CR][LF]
and mixed at the US[CR][LF]
AUT00048
The lyrics were written by someone.. is it you ?
IMG00086
album_cover.jpg||Album cover||[00:10][CR][LF]
jumping.jpg||He jumps at the audience!||[01:00]
LYR00630
[00:02]Let's talk about time[CR][LF]
[00:02]tickin' away every day[CR][LF]
[00:05]so wake on up before it's gone away[CR][LF]
[00:10]catch the 411 and stay up like the sun[CR][LF]
[00:20]remind yourself what's done and done[CR][LF]
[00:32]so let yesterday stay with the bygones[CR][LF]
[00:40]keep your body and soul and your mind on[CR][LF]
[00:55]the right track infact you gotta stay on[CR][LF]
[01:20]the real black[CR][LF]
[CR][LF]
Chorus:[CR][LF]
[01:25][05:45]Time is tickin' away[CR][LF]
[01:42][05:55]you've gotta - live your life -[CR][LF]
[02:11][06:24]day by day[CR][LF]
[02:26][06:35]happy or sad, good or bad[CR][LF]
[02:31][06:42]life is too short[CR][LF]
[02:58][07:13]you've gotta - keep your head -[CR][LF]
[03:01][07:19](Repeat)[CR][LF]
001064LYRICS200

 指標フィールド大きさは2バイトである。それらは2つの'1'である。1つ目の'1'は、タグの中にLYRフィールドが見つかることを意味し、2つ目の'1'は その中にタイムスタンプが使われていることを意味している。
 拡張アルバム名は41文字である。
 拡張アーティスト名は50文字である。
 拡張トラック名は42文字である。
 追加情報は90文字である。
 作詞者名は48文字である。
 イメージファイルリンクは86文字である。
 歌詞テキストは630文字である。
 'LYRICSBEGIN'も含めた全てのフィールドの大きさの合計は 001064 文字である。

 この例の後に続くべき ID3v1タグはこうなる。
 Albumフィールド:'Album name that is larger then'
 Artistフィールド:'Artist name or band that is la'
 Titleフィールド:'Track name which is larger the'

問い合わせ:

The Lyrics3 Tag specifications were written by Petr Strnad and Alon Gingold.

#訳者注:翻訳は駄歌詞屋でした。