(C)Copyright 2000 NTT Cyber Space Laboratories
TwinVQ Ver. 2.3
平成12年10月12日
目次
TwinVQ ファイルは図1のように、「ヘッダ部」と「オーディオデータ部」の2つのデータブロックが順に並べられて構成されています(図1)。2つのデータブロックは欠けることなくこの順序で並んでいる必要があります。
図1: TwinVQ データの構造
ヘッダ部は、「チャンク」と呼ばれるデータ構造で構成されています。図3のように、ヘッダ部自身がチャンクとなっており、ヘッダデータはそのサブチャンクとして記録されています。
ヘッダチャンクの ID は、4文字で構成される通常のチャンクIDと異なり、 "TWIN"+バージョン識別番号(8文字) の12文字で構成されています。現在サポートしているバージョンは1種類で、"TWIN97012000" というチャンクIDのみが有効です。
ヘッダデータを構成するサブチャンクは、コーデックの初期化に必要なパラメータが記録されている COMM チャンク以外ヘッダデータの詳細についてはセクション2を参照ください。
ヘッダデータ部は、"TWIN..." で始まるチャンクでもあるので、この説明書の中では、"TWINチャンク" とも呼びます。
図2:ヘッダ部の構成
オーディオデータ部は、"DATA" の4文字始まるヘッダの後にTwinVQオーディオデータが続きます。オーディオデータ部にサイズを記録するフィールドはありません。オーディオデータのサイズはヘッダチャンク DSIZ で記述することができます。チャンクの呼び名として、"xxxx" チャンクとかかれていた場合、それは「IDが"xxxx"のチャンク」という意味です。
図3:チャンク
以下はデータ型の定義です。2バイト以上の整数は、ビッグ・エンディアンで記録します。
型 | バイト数 | 説明 |
char |
1 | 文字型 |
char[] |
文字列型、長さは括弧内の整数で与えられる。括弧が空の場合 chunkSize により与えられる。 | |
byte |
1 | 1バイト符号なし整数型 |
byte[] |
任意データ型、データは1バイト単位。長さは括弧内の整数で与えられる。括弧が空の場合 chunkSize により与えられる。 | |
short |
2 | 2バイト整数型 |
unsigned short |
2 | 2バイト符号なし整数型 |
long |
4 | 4バイト整数型 |
unsigned long |
4 | 4バイト符号なし整数型 |
StringChunk |
文字列チャンク型。以下のフィールドで構成されている。char[4] chunkID |
ヘッダチャンクは、ヘッダ情報を記録するチャンクです。チャンク ID は4文字の文字列です。
ヘッダチャンクには、「標準チャンク」、「拡張チャンク」、「補助チャンク」という3つのカテゴリがあります。
以下の表は、標準チャンクのカテゴリに含まれるチャンクの一覧です。このうち COMM チャンクは必須チャンクです。
なお、表内の "ID3重複" の項は、ID3v2 タグのうち、同様の内容をもつフレームのIDを示しています。
チャンクID | 内容 | データフィールド | フィールドの説明 | ID3重複 |
---|---|---|---|---|
COMM | コーデックのセットアップパラメータ | long channelMode long bitRate long samplingRate long securityLevel |
チャネル数のモード、0:モノラル, 1: ステレオ ビットレート、1kbit/s 単位の整数 サンプリングレート、kHz 単位の切り捨て整数 (44.1 kHz ⇒ 44) 保護レベル、不使用、常に0 |
|
NAME | 曲名 | char[ ] name | タイトル情報。フリーフォーム。 | TIT2 |
COMT | コメント | char[ ] comment | コメント情報。フリーフォーム。 | COMM |
AUTH | 作者 | char[ ] author | 作者情報。フリーフォーム。 | TPE1/2/3/4 |
(c) | 著作権情報 | char[ ] copyright | 著作権情報。フリーフォーム。チャンク ID は、(C) の最後にスペースが入る4文字なので注意。 | TCOP |
FILE | ファイル名 | char[ ] fileName | TwinVQ ファイル名称。フリーフォーム。 | |
DSIZ | DATAチャンクのサイズ(byte) | unsigned long dataSize | オーディオデータのサイズ (byte) | DSIZ |
以下の表は、拡張チャンクのカテゴリに含まれるチャンクの一覧です。この中には、補助チャンクを格納しているSCNDチャンクも含まれています。
チャンクID | 内容 | データフィールド | 備考 | ID3重複 |
---|---|---|---|---|
ALBM | アルバムタイトル | char[ ] albumTitle | TALB | |
YEAR | 録音された年月 | short year char month |
月または年データを無効にするには 0 を入れる。 | YEAR/TYER |
ENCD | エンコードした日付 | short year char month char day char hour char minute char timeZone |
各データフィールドを無効にするには 0 を入れる。 | TDAT |
TRAC | トラック番号 | short trackNumber | TRCK | |
LYRC | 歌詞 | char[ ] lyrics | USLT | |
GUID | Globally Unique Identifier | byte[16] guid | UFID | |
ISRC | International Standard Record Code | char[] isrc | CDを特定するためのコード | TSRC |
WORD | 作詞者 | char[ ] wordsBy | TEXT | |
MUSC | 作曲者 | char[ ] musicBy | TCOM | |
ARNG | 編曲者 | char[ ] arrangedBy | ||
PROD | プロデュース者 | char[ ] producedBy | ||
REMX | リミックス者 | char[ ] remixedBy | TPE4 | |
CDCT | 指揮者 | char[ ] conductedBy | TPE3 | |
SING | 歌手 | char[ ] singer | TPE1 | |
BAND | バンド/オーケストラ/グループ名 | char[ ] band | TPE2 | |
PRSN | 演奏者メンバー | char[ ] personnel | ||
LABL | レーベル | char[ ] label | TPUB | |
NOTE | ライナーノーツ | char[ ] linerNotes | ||
SCND | 補助情報 | while ( StringChunk subChunks[ ]) | ・言語の違いを吸収。文字列チャンクについて、主情報は通常のチャンクに記入するが、原題、訳詞などの補助情報は、SCNDチャンクのサブチャンクとして記入する。SCNDチャンクを使う場合に、どちらの言語を主情報として選択するかはエンコード側の判断に任せる。 ・サブチャンクは文字列チャンクに限る。 ・サブチャンクのデータ(文字列)の最初の2文字には、それぞれ通常のチャンクとSCNDチャンクで使われている文字コードを表す文字を格納する。各文字と文字コードの対応は以下の通り: '0': iso-8859-1 '1': Unicode '2': S-JIS '3': JIS '4': EUC なお、Unicode では、UTF-16 エンコーディングを使用。先頭にBOMをつけることを推奨するが、無い場合には Big Endian とする。 |
SCND/NAME⇔TIT3 |
EXTR | 予約済み、用途は未定義 | |||
_ID3 | 予約チャンク:ID3v2 タグ | char[ ] data | TwinVQ チャンクと重複した場合、どちらかを優先させる。 | |
_YMH | ヤマハ様予約チャンク | |||
_NTT | NTT 予約チャンク |
補助チャンクのカテゴリに含まれるチャンクは、拡張チャンク中の
SCND チャンク中にサブチャンクとして格納されています。これらのサブチャンクは、標準・補助チャンク中の文字列チャンクと同じIDを持ちます。以下のチャンクが補助チャンクとして使用可能です:
NAME, COMT, AUTH, (c) , ALBM, LYRC, WORD,
MUSC, ARNG, PROD, REMX, CDCT, SING, BAND,
PRSN, LABL, NOTE