鍵竜演奏データファイル(.KVファイル)フォーマット                            ver. 0.22                            2001/10/17 MIJINKO                            無断転載を禁止します。 ■ファイル形式  .KVファイルはバイナリファイルです。  拡張子は ".KV" とします。  2バイト以上の数値は、下位の方が先になります。 ■ヘッダ部分  ファイルの先頭から48バイト+αは、ヘッダ部分です。 +0〜7 "KVRN0.22" のアスキー文字列 +8 テンポ:1〜255 の数値で、0 の場合は特別で 120 になります。 +9 レベル:1〜16 +10〜11 予約 +12 タイトルの文字数(バイト):0〜255 +13 製作者名の文字数(バイト):0〜255 +14 ジャンルの文字数(バイト):0〜255 +15 予約 +16 MISS 判定の幅:クロック数(※1) +17 GOOD 判定の幅:クロック数(※1) +18〜19 予約 +20〜21 1P の総オブジェ数:2バイト +22〜23 2P の総オブジェ数:2バイト +24〜27 Sトラックの開始アドレス:4バイトで、ファイル先頭からのバイト数 +28〜31 Pトラックの開始アドレス:4バイトで、ファイル先頭からのバイト数 +32〜35 Aトラックの開始アドレス:4バイトで、ファイル先頭からのバイト数 +36〜39 Mトラックの開始アドレス:4バイトで、ファイル先頭からのバイト数 +40〜47 予約 +48〜 タイトル、製作者名、ジャンルの順にアスキー文字列が続きます。(※2) ―――――――― ※1:1クロックは、192 分音符で固定です。    指定するクロック幅は半径であり、オブジェのクロックタイムから前後に同じ    だけの時間幅が取られます。    (例:MISS 判定が 10 で、オブジェがクロック 1000 の場合、MISS 判定の範       囲はクロック 990〜1010 になります)    GOOD 判定の幅は MISS 判定より小さくします。    MISS から GOOD までの間のクロックで弾くと、MISS 判定となります。    MISS 判定の範囲外ではアドリブ演奏が可能です。    (ただし、同一オブジェに対して2回以上の判定は行なわれません。従って、    既に判定が行なわれたオブジェに関しては、判定範囲内であってもアドリブ演    奏が可能です) ※2:文字列は 20h〜7eh のアスキー文字、及び改行の CR(0dh)、LF(0ah) のみが有    効です。これ以外の文字を使用した場合の動作保証はありません。    改行がある場合、ファイラ画面などではスペースとして表示され、それに続く    文字列も表示されますが、曲タイトル表示画面では最初の改行の手前までしか    表示されません。 ■Sトラック(score トラック)  Sトラックでは画面に表示されるオブジェを定義します。  4バイトの「クロックタイム」と可変長の「クロックデータ」の繰り返しで構成さ れています。 ●「クロックタイム」  そのオブジェが置かれるクロックを指定します。1クロックは 192 分音符です。  (他のトラックに関しても同様) ●「クロックデータ」  以下に示すデータが使用できます。 00h そのクロックでのデータの終端。クロックデータの最後に必ずつけます。 18h〜5fh 1P のオブジェ(※1) 80h 小節線 98h〜0dfh 2P のオブジェ(※1) 0ffh Sトラックの終了宣言(※2) ―――――――― ※1:音程は低い方から C1〜B6 です。1P と 2P のオブジェの置かれる範囲が重な    っても構いません。 ※2:このデータ自体は「クロックデータ」に含まれているので、この直後に 00h    (クロックデータ終端)が必要です。 ■Pトラック(particle トラック)  Pトラックではオブジェが弾かれた時に実際に演奏されるデータを定義します。  他のトラックとは、多少、定義の方法が異なります。  以下に示す定義データの繰り返しで構成されています。 2バイト:インデックス番号 1バイト:↓の長さ(0〜252) 可変長:データ本体(252 バイトまで)  また、このトラックの終了は上記の定義データの代わりに、00h 0ffh 00h の3バ イトを指定します。 ●「インデックス番号」  発音データの場合は 0001h〜1fffh、MIDI マーカデータの場合は 2000h〜3fffh の  範囲で指定可能です。 ●「データ本体」  発音データか、MIDI マーカデータかによって、指定が若干異なります。 <発音データ>  発音データでは、オブジェに対応する演奏データを定義します。  以下の定義データの繰り返しで構成されています。  データは全体で 252 バイト以内でなければなりません。 2バイト:クロックデータ(そのオブジェを演奏した瞬間からのクロック数) 1バイト:↓のバイト数 可変長:そのクロックで出力される MIDI データ <MIDI マーカデータ>  MIDI マーカデータに中にはクロックのような時間差の概念がなく、このデータが  置かれた瞬間に出力される MIDI データをすべて定義します。  (いわば発音データ中での「可変長」の部分のみになります)  このデータは、主に MIDI チャンネルの音色設定やコントロールチェンジなどに使  用します。  後述するMトラックとは異なり、プレイヤ側で BGM を「OFF」に設定しても、出力  されます。 ■Aトラック(allocation トラック)  Aトラックでは、Pトラックで定義したパーティクルデータを、演奏の時間軸に沿 って並べていきます。  4バイトの「クロックタイム」と可変長の「クロックデータ」の繰り返しで構成さ れています。 ●「クロックタイム」  パーティクルデータが置かれるクロックを指定します。 ●「クロックデータ」  以下に示すデータが使用できます。 00h そのクロックでのデータの終端。クロックデータの最後に必ずつけます。 18h〜5fh 各音程に対しての発音データの設置(※1) 続く2バイトで発音データのインデックス番号を指定します。 80h テンポ変更。続く1バイトでテンポを指定します。 0 の場合は特別で 120 になります。 0a0h〜0bfh MIDI マーカデータの設置 この1バイト自身と、続く1バイトで MIDI マーカデータのインデックス番 号(※2)を指定します。 0ffh Aトラックの終了宣言(※3) ―――――――― ※1:音程は低い方から C1〜B6 です。    発音データは、オブジェよりも少し前のクロックタイムで設置します。なぜな    ら、実際に人間が演奏する際に、オブジェのクロックタイムと必ずしも同時に    はならず、前後に多少ずれて弾くことがあるからです。 ※2:0a0h〜0bfh が、インデックス番号の 2000h〜3f00h(上位バイト)に対応し、    続く1バイトで下位バイトを指定します。    この場合に限り、上位、下位の順になっていることに注意してください。    (例:0a3h 45h は、MIDI マーカデータの 2345h 番になります)    (cf:3ch 32h 10h は、音程 C4 に発音データの 1032h 番を設置します) ※3:このデータ自体は「クロックデータ」に含まれているので、この直後に 00h    (クロックデータ終端)が必要です。 ■Mトラック(music トラック)  Mトラックでは、BGM となるデータを定義します。  プレイヤ側の設定で「BGM OFF」とした場合にはこれらのデータは出力されなくな るので、演奏するチャンネルの音色などは前述の「MIDI マーカデータ」で設定する ようにしてください。  4バイトの「クロックタイム」と可変長の「クロックデータ」の繰り返しで構成さ れています。 ●「クロックタイム」  BGM データが置かれるクロックを指定します。 ●「クロックデータ」  以下に示すデータが使用できます。 00h そのクロックでのデータの終端。クロックデータの最後に必ずつけます。 01h〜0efh MIDI データのバイト数(1〜239) この直後に、そのクロックで出力される MIDI データが続きます。(※1) 0ffh Mトラックの終了宣言(※2) ―――――――― ※1:1度に指定できる MIDI データは 239 バイト以内です。同一クロックでこれ    より長いデータを出力したい場合は、それぞれを 239 バイト以内で区切り、    複数回に分けて指定します。 ※2:このデータ自体は「クロックデータ」に含まれているので、この直後に 00h    (クロックデータ終端)が必要です。                            2001/10/17 MIJINKO                            無断転載を禁止します。