-
Notifications
You must be signed in to change notification settings - Fork 0
Vos File Analysis
感谢原作者vilinwei大大,他同时也是一位非常著名的音乐游戏玩家。
**** 原VOS文件格式(非rank曲) ****
总文件结构
[文件头部]
[空白]=1022字节
[频道信息]
[midi信息]
文件头部结构
03 00 00 00 40 00 00 00 69 6E 66 00 00 00 00 00
00 00 00 00 00 00 00 00 aa aa aa aa 6D 69 64 00
00 00 00 00 00 00 00 00 00 00 00 00 bb bb bb bb
45 4F 46 00 00 00 00 00 00 00 00 00 00 00 00 00
cc [曲名]=c字节
cc [曲作者]=c字节
cc [扩展类型]=c字节
cc [VOS作者]=c字节
dd dd ee ee ee ee ff ff
a=midi信息存放地址
b=文件长度
c=信息长度
d=类型
00 pop | 01 korea pop | 02 japan pop | 03 rock | 04 metal | 05 jazz
06 classic | 07 new age | 08 TV&OST | 09 game & anime| 10 other
"Pop" , "New Age" , "Techno" , "Rock" , "SoundTrack" , "Game & Anime" , "Jazz" , "CenturyEnd" , "Classical" , "Other"
e=长度
f=难度
频道信息部分结构
共17频道,包括16个发音频道和1个弹奏频道,连续存放。
每个频道结构:
[该频道使用乐器]=4字节
[该频道音符总数]=4字节
[空白]=14字节
[音符信息]=13×该频道音符总数 字节
发音音符/弹奏音符信息结构
aa aa aa aa bb bb bb bb cc dd ee ff gg
a=音序
b=音长
c=音轨(9x,x取0-F)
d=音高
e=音量
f=键位(若弹则取8-E,否则取0-5);频道(0-F)
g=长条标识(若是长条取80,否则为00)
midi信息结构
只记录了基本事件,这部分所有VOS格式均相同。
VOS1文件格式(即rank曲)03
仅头部与原VOS格式略有不同,一些00字节以CD代替,增加了VOS1的标识,这里不与详述。
**** VOS022文件格式 ****
总格式
[文件头部]
[效果部分]=1024字节
[频道信息]
[空白]=4字节(VOS006格式中没有此部分)
[弹奏信息]
[MIDI信息]
[文件头部]
02 00 00 00 0C 00 00 00 56 6F 73 63 74 65 6D 70
2E 74 72 6B aa aa aa aa 56 4F 53 30 32 32
bb bb [曲名]=b字节
bb bb [曲作者名]=b字节
bb bb [专辑名]=b字节
bb bb [VOS作者名]=b字节
bb bb [扩展类型]=b字节
cc dd 00
ee ee ee ee
ff ff ff ff
gg gg gg gg
hh hh hh hh
a=midi信息存放地址
b=信息长度
c=歌曲类型(can上的分类,共1种) 对应CanCreate
d=背景音100% max = 0x64
e=???
f=速度
g=???
h=时间
频道信息结构
aa aa aa aa
01 00 00 00
04 bb bb bb bb
……
04 bb bb bb bb
00 cc 0A 00
4D 69 78 65 64 20 4D 6F 64 65 00 00 00 00
{
dd dd dd dd 00
[音符信息]=d个,音符信息之间以一字节00为间隔
}=a个
弹奏信息结构及MIDI信息结构
ee ee ee ee
[弹奏音符信息]=e个
00 00 00 00 00 00 00 00 0C 00 00 00
56 4F 53 43 54 45 4D 50 2E 6D 69 64 ff ff ff ff
[MIDI信息]
(所有格式均相同。)
a=频道数
b=乐器
c=难度 LV
d=音符数
e=弹奏音符数
f=midi信息长度
音符信息结构
aa aa aa aa bb cc dd ee 01 ff gg gg gg gg hh 00
a=音序
b=音高
c=音轨
d=音量
e=不弹时是否发音
f=是否长条(是取01,否取00)
g=音长
h=是否需弹奏(FF为弹,00为不弹)
0=间隔
弹奏音符信息结构
aa bb bb bb bb cc
a=音轨
b=音次(在该音轨内)
c=键位(取0-6)
**** VOS006文件格式 ****
除VOS022中提到的区别以及头部的标识由VOS022变为VOS006外,没有任何区别。
以上内容请不要广泛传播,仅供程序员们参考。