調査中・書きかけです.
注意:公式情報ではなく, ネットで調べた情報や自分で実験・推測した結果をまとめたものです. 内容の正確性およびこれを利用した結果については一切保証できません.
VSQ ファイルはフォーマット1の SMF (標準 MIDI ファイル) である. チャンクの出現順序は次のとおり.
┏━━━━━━┓ ┏━━━━━━━┓ ┏━━━━━━━┓
┃ ┃ ┃ Track Chunk ┃ ┃ Track Chunk ┃
Start ─→┨Header Chunk┠──┨ Track #0 ┠─┬─┨Track #1〜n−1┠─┬→ End
┃ ┃ ┃(Master Track)┃ ↑ ┃(Normal Track)┃ │
┗━━━━━━┛ ┗━━━━━━━┛ │ ┗━━━━━━━┛ │
└───────────┘
n:トラックの総数 (マスタートラック + 通常トラック)
通常トラックの本数は 1〜16 (n=2〜17).
VSQ ファイル内での使用が確認された MIDI メッセージは次のとおり.
次のメタイベントからなる.
イベントの出現順序は次のとおり.
┏━━━━━━━┓
┌─→┨Time Signature┠→┐
┏━━━━━┓ │ ┗━━━━━━━┛ │ ┏━━━━━━┓
Start ─→┨Track Name┠→┬─┤ ├─┬→┨End Of Track┠─→ End
┗━━━━━┛ ↑ │ ┏━━━━━━━┓ │ ↓ ┗━━━━━━┛
│ └─→┨ Set Tempo ┠→┘ │
│ ┗━━━━━━━┛ │
└────────────────┘
次のメタイベントおよびコントロール・チェンジからなる.
イベントの出現順序は次のとおり.
┏━━━━━┓ ┏━━┓ ┏━━━━━━┓
Start ─→┨Track Name┠→┬→┨Text┠─┬┬─────→─────┬→┨End Of Track┠─→ End
┗━━━━━┛ ↑ ┗━━┛ ↓↑ ┏━━━━━━━┓ │ ┗━━━━━━┛
└──────┘└─┨Control Change┠←┘
┗━━━━━━━┛
1つの通常トラック内のセクションの出現順は次のとおり.
(最初の通常トラックのみ)
┏━━━┓ ┏━━━┓ ┏━━━┓ ┏━━━━━┓
Start ──→┨Common┠─┬→┨Master┠─→┨Mixer ┠─┬→┨EventList ┠─→┐
┗━━━┛ │ ┗━━━┛ ┗━━━┛ ↑ ┗━━━━━┛ │
└──────────────┘ │
(最初以外の通常トラック) │
│
┌─────────────────────────────────────┘
│
│ ┏━━━━┓ ┏━━━┓
└→┬→┨ID#mmmm ┠→┬→┬→┨h#nnnn┠→┬─┬─┬────────┬─┬─→ End
↑ ┗━━━━┛ ↓ ↑ ┗━━━┛ ↓ ↑ │ ┏━━━━┓ ↑ ↓
└────────┘ └───────┘ │ └→┨*BPList ┠─┘ │
│ ┗━━━━┛ │
└────────────┘
・mmmm,nnnn は 0000 から始まる連番 (10進数).桁数は4の倍数.
・*BPList の出現順は 3.10 を参照.
以下のセクションの説明では,";" から行末まではコメントとする (VSQ ファイル内にコメントはない).
[Common] Version=DSB301 Name=Voice1 Color=181,162,123 DynamicsMode=1 PlayMode=1
最初の通常トラックだけに存在する.(つまり SMF 内の3番目のチャンク)
[Master] PreMeasure=4
最初の通常トラックだけに存在する.
マスターおよび各通常トラック用として,次のパラメータがある.
(値は VOCALOID2 エディタで設定可能な範囲.)
[Mixer] MasterFeder=-10 MasterPanpot=0 MasterMute=0 OutputMode=0 Tracks=8 ; 通常トラック0 Feder0=0 Panpot0=0 Mute0=0 Solo0=0 ; 通常トラック1 Feder1=0 Panpot1=46 Mute1=0 Solo1=0 : : ; 通常トラック7 Feder7=0 Panpot7=0 Mute7=0 Solo7=0
イベントの開始時刻を時刻順に,"<時刻>=ID#nnnn" の形式で指定する.
[EventList] 0=ID#0000 ; 必ず時刻0で歌手設定. 30240=ID#0001 30600=ID#0002 : : 562560=ID#1376 568320=EOS ; End Of Sequence? (トラック終了時刻とは必ずしも一致しないらしい.)
歌手変更イベント (参考:VOCALOID2 エディタのヘルプ ⇒ キーワード ⇒ シーケンス途中での歌手変更).
[ID#0000] Type=Singer ; イベント種別:歌手変更 IconHandle=h#0000 ; 歌手情報 (セクション h#nnnn) を参照する.
最初のイベント (ID#0000,時刻0) は必ず歌手変更イベントである.
(PreMeasure>0 なので,時刻0に音符イベントは存在しない.)
個々の音符のデータ.次の3つのダイアログで設定可能なパラメータおよび VEL.
[ID#0001] Type=Anote ; イベント種別:音符 Length=360 ; 音符の長さ (単位:TimeDivision,整数) Note#=75 ; ノート番号 (0:C-2 〜 127:G8) Dynamics=64 ; VEL (DYN ではない,0〜127,整数) PMBendDepth=8 ; ベンドの深さ (0〜100%,整数) PMBendLength=0 ; ベンドの長さ (0〜100%,整数) PMbPortamentoUse=0 ; ポルタメント付加フラグ (上行:0x1,下行:0x2,両方:0x3) DEMdecGainRate=22 ; ディケイ (0〜100%,整数) DEMaccent=100 ; アクセント (0〜100%,整数) LyricHandle=h#0001 ; 歌詞情報 (セクション h#0001 を参照する.) ; ↓ビブラートの種類が "Non Vibrato" の場合,次の2つは存在しない. VibratoHandle=h#0018 ; ビブラート情報 (セクション h#0018 を参照する.) VibratoDelay=240 ; ビブラート遅延時間 (単位:TimeDivision,整数) [ID#0002] : :
VibratoDelay は,「ビブラートプロパティ」ダイアログの「ビブラート長」 (0〜100%,整数) と Length から計算した値を5の倍数に切り下げたものらしい.
unsigned VibratoLength = …; // 「ビブラートプロパティ」ダイアログの「ビブラート長」(0〜100%) unsigned NoteLength = …; // 上記「音符の長さ」(単位:TimeDivision) unsigned VibratoDelay = (unsigned)((1 - VibratoLength / 100.0) * NoteLength / 5) * 5U;
なお VOCALOID2 エディタでは,音符が一つもないトラックは保存できない.
[h#0000] IconID=$07010000 IDS=Miku Original=0 Caption= Length=1 Language=0 Program=0
各トラックの初期歌手設定 (時刻0) および歌手変更イベントのたびに現れるが, 歌手が同じならば内容はトラックによらず同じ.
[h#0019] ; 1つの音符の歌詞 L0="す","s M",0.000000,64,0,0
[h#0002] IconID=$0404000e ; IDS=slight ; slight/fast/extreme Original=14 ; Caption=[Slight] Type 2 ; Length=320 ; ビブラートの長さ (単位:TimeDivision,整数) StartDepth=40 ; DepthBPNum=0 ; StartRate=64 ; RateBPNum=0 ;
[<セクション名>]
<時刻1>=<値1> ; 第1行は初期値 (演奏開始時刻=PreMeasure 直後)
<時刻2>=<値2> ; 値が変化した場合 (変化していなくても存在する場合がある.)
<時刻3>=<値3> ; 〃
:
:
<時刻n>=<値n> ; 最終値 (トラック終了時刻以前のはず)
[PitchBendBPList] ; PIT (Pitch Bend)
30240=0
40559=0
40800=0
40802=-68
40804=-137
40806=-206
:
:
556815=-6775
568320=314
[PitchBendSensBPList] ; PBS (Pitch Bend Sensitivity)
7680=0
30240=0
40560=5
41038=0
:
:
568320=0
[DynamicsBPList] ; DYN (Dynamics)
13440=64
18240=64
[EpRResidualBPList] ; BRE (Breathiness)
13440=0
18240=0
[EpRESlopeBPList] ; BRI (Brightness)
13440=64
18240=64
[EpRESlopeDepthBPList] ; CLE (Clearness)
13440=0
18240=0
; Reso*BPList は VOCALOID(1) のレゾナンス・パラメータ (周波数,帯域幅,振幅).
; VOCALOID2 で有効かどうかは未確認.
[Reso1FreqBPList]
13440=255
18240=255
[Reso2FreqBPList]
13440=255
18240=255
[Reso3FreqBPList]
13440=255
18240=255
[Reso4FreqBPList]
13440=255
18240=255
[Reso1BWBPList]
13440=255
18240=255
[Reso2BWBPList]
13440=255
18240=255
[Reso3BWBPList]
13440=255
18240=255
[Reso4BWBPList]
13440=255
18240=255
[Reso1AmpBPList]
13440=255
18240=255
[Reso2AmpBPList]
13440=255
18240=255
[Reso3AmpBPList]
13440=255
18240=255
[Reso4AmpBPList]
13440=255
18240=255
[GenderFactorBPList] ; GEN (Gender Factor)
13440=64
18240=64
[PortamentoTimingBPList] ; POR (Portamento Timing)
13440=64
18240=64
[OpeningBPList] ; OPE (Opening)
13440=127
18240=127
とりあえず,「VOCALOID2 LIBRARY オーナーズ・マニュアル日本語版」 の付録 "3-5. MIDI Data Format for Real-time VOCALOID2 VSTi" を参照.
とりあえず,「VOCALOID2 LIBRARY オーナーズ・マニュアル日本語版」 の付録 "3-1. 音声記号一覧表 (日本語)" を参照.
開発中
その他のレジストリ・エントリについては,レジストリ・エディタで "VOCALOID","vsq","vlf" を検索.
とりあえず,「VOCALOID2 LIBRARY オーナーズ・マニュアル日本語版」 の付録 "3-5. MIDI Data Format for Real-time VOCALOID2 VSTi" を参照.
未整理です.敬称略.
|
連絡先:
Copyright © 2008 noocyte, All rights reserved. リンクはご自由に. 「noocyte のプログラミング研究室」トップページに戻る. |