iVocaloid论坛
标题:
〖求助〗关于VSQ文件(自认VB 、VC++、VC#高手的请进)
[打印本页]
作者:
RainのNight
时间:
2011/5/8 16:06
标题:
〖求助〗关于VSQ文件(自认VB 、VC++、VC#高手的请进)
本帖最后由 RainのNight 于 2011/5/29 13:36 编辑
因为尝试了一下用VocalTune处理VSQ,结果很不理想。而且几百K的文件竟然会变成几十M,大一点VSQ也无法正常处理。
我所知道的VocalTune有两个版本,第一个版本虽然可以处理大文件,但速度慢,而且对音量处理很不明显。
第二个版本在处理文件的速度大提升了相当的多,效果也更真实,但在处理大一点VSQ时会出错。这点很蛋疼
所以打算自己作一个类似的东西。只是不知道VSQ文件的内部格式
目前我只能分析VSQ的文件头部分的数据。
想请求高手提供此类文件的内部格式。
如果可以,希望提供相关的VB、VC代码
谢谢!
另外:关于Wav文件部分正在测试中,估计我会加入对于伴奏、歌声等提取的功能。
作者:
Doream
时间:
2011/5/8 20:28
我只知道修改DYN和PIT参数的vocasim给的是源代码,不过是perl代码。
作者:
regnad
时间:
2011/5/9 16:15
vsq格式没有涉足过。
不过我还是在网上发现了VSQ格式的介绍。
http://www5d.biglobe.ne.jp/~nooc ... FileFormat/VSQ.html
作者:
maplestyle
时间:
2011/5/9 18:49
雖然我不是VB 、VC++、VC#高手,但是我可以幫忙找資料,於是沒有被牆的壓力所以更加好找!★
作者:
RainのNight
时间:
2011/5/18 09:09
本帖最后由 RainのNight 于 2011/5/18 09:25 编辑
首先,要感谢大家的支持!
回复
4#
regnad
特别感谢4L提供这么好的情报!
发表一下这一个多星期的努力成果,可能没什么用来着。。。
因为找不到反编译VocalTure的工具(那东西貌似用C++编的,我不是很清楚)
下面的东西是通过WinHex以及对那个口型生成工具(叫什么来的着,名字忘了)的vsq模块反编译后总结出来的
'文件Chunk(共14字节)
4d 54 68 64 '4字节 File Chank ///MThd
00 00 00 06 '4字节 Chank length ///6
00 01 '2字节 Format number ///1
00 XX '2字节 Track number(XX默认02) ///2
01 e0 '2字节 时间单位 ///480 注:这是指MID中将每一拍被分为480份
'音轨Chunk(多轨文件则重新从此处开始)
主音轨部分:
4d 54 72 6b '4字节 Track Chank ///MTrk
00 00 00 XX '4字节 Track Data length ///一般为33
00 ff '2字节 格式标识 ///255
03 '1字节 シーケンス名标识 ///3
0c '1字节 シーケンス名偏移 ///12
4d 61 73 74 65 72 20 54 72 61 63 6b シーケンス名 '12字节 シーケンス名 ///Master Track
00 ff '2字节 格式标识 ///255
51 '1字节 テンポ标识 ///81
03 '1字节 テンポ偏移 ///3
0a 0d da '3字节 テンポ值 ///658906 注:这是转换后的值
00 ff '2字节 格式标识 ///255
58 '1字节 拍子标识 ///88
04 '1字节 拍子偏移 ///4
04 02 18 08 '4字节 拍子 ///
00 ff '2字节 格式标识 ///255
2f 00 '2字节 此段结束
内存值如下:
00 ff 03 0c 4d 61 73 74 65 72
20 54 72 61 63 6b 00 ff 51 03 0a 0d da 00 ff 58
04 04 02 18 08 00 ff 2f 00
第一音轨部分:
4d 54 72 6b '4字节 Track Chank ///MTrk
00 04 e7 7d '4字节 Track Data length ///321405 此例的值
00 ff '2字节 格式标识 ///255
03 '1字节 シーケンス名标识 ///3
06 '1字节 シーケンス名偏移 ///6 此例的值
a5 dc a5 a4 a5 b9 '字节为上述的值 シーケンス名 ///ボイス 注:Shift-JIS 此例的值
00 ff '2字节 格式标识 ///255
7f '1字节 テキスト长度 ///127
44 4d 3a 30 30 30 30 3a ... '127字节 文本数据 注:删去DM:0000:之类的数据后应为119字节
'循环上述3条N次后,每次得到119字节的有效数据
直到如下情况:
00 b0 '2字节 文本主体可识别部分结束 ///
或者
2f '1字节 文本主体读取完毕 ///此处正确的内存值应该为2f 00,所以处理要偏移2个字节
除上述两种情况外,其它情况则说明这是个错误文件
'音轨信息
[Common]
Version=DSB301 '版本
Name=Voice1 '音轨名称
Color=181,162,123 '音轨选项卡的颜色
DynamicsMode=1
PlayMode=1
[Master]
PreMeasure=4
[Mixer]
MasterFeder=0
MasterPanpot=0
MasterMute=0
OutputMode=0
Tracks=1
Feder0=0
Panpot0=0
Mute0=0
Solo0=0
'音轨数据
[EventList]
0=ID#0000 '格式为MID时间点或段=ID#索引号
7680=ID#0001 '第一个音(例)
230400=EOS '音轨结束(例)不指定索引
[ID#0000] '无音索引号的数据
Type=Singer
IconHandle=h#0000
[ID#0001] '有音索引号的数据
Type=Anote
Length=240
Note#=64
Dynamics=64
PMBendDepth=8
PMBendLength=0
PMbPortamentoUse=0
DEMdecGainRate=50
DEMaccent=50
LyricHandle=h#0001 '歌词索引号
[h#0001] '第一个歌词
L0="i","i",0.000000,0,0
[h#0002] '下一个歌词(例)
L0="tsu","ts M",0.000000,64,0,0
[h#0066] '无歌词,音的结束点(例)
IconID=$04040001
IDS=normal
Original=1
Caption=[Normal] Type 1
Length=680
StartDepth=64
DepthBPNum=0
StartRate=50
RateBPNum=0
'参数
[PitchBendBPList] 'PIT参数(-8192到8191,默认0)
7680=0 '格式为MID时间点或段=参数值
[PitchBendSensBPList] 'PBS参数(0到24,默认2)
7680=2 '格式为MID时间点或段=参数值
[DynamicsBPList] 'DYN参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[EpRResidualBPList] 'BRE参数(0到127,默认0)
7680=0 '格式为MID时间点或段=参数值
[EpRESlopeBPList] 'BRI参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[EpRESlopeDepthBPList] 'CLE参数(0到127,默认0)
7680=0 '格式为MID时间点或段=参数值
[GenderFactorBPList] 'GEN参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[PortamentoTimingBPList] 'POR参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[OpeningBPList] 'OPE参数(0到127,默认127)
7680=127 '格式为MID时间点或段=参数值
有一些东西貌似可有可无
作者:
Axiom.Latis
时间:
2011/5/18 10:00
回复
1#
RainのNight
不妨尝试下waves 的tune=。=
还有 你只要了解下声学的基础 自己就可以轻松弄出来
具体的请参考midifan(具体第几期我忘了=。=)
作者:
'kex
时间:
2011/5/18 21:47
那个..想请问一下楼主将带参数的midi转换为vsq的可行性..
作者:
とあるAzige
时间:
2011/5/20 12:15
回复
8#
'kex
midi的部分参数是可以导入V里的……vsq本来就是midi的一种……
作者:
'kex
时间:
2011/5/20 12:54
'参数
[PitchBendBPList] 'PIT参数(-8192到8191,默认0)
7680=0 '格式为MID时间点或段=参数值
[PitchBendSensBPList] 'PBS参数(0到24,默认2)
7680=2 '格式为MID时间点或段=参数值
[DynamicsBPList] 'DYN参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[EpRResidualBPList] 'BRE参数(0到127,默认0)
7680=0 '格式为MID时间点或段=参数值
[EpRESlopeBPList] 'BRI参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[EpRESlopeDepthBPList] 'CLE参数(0到127,默认0)
7680=0 '格式为MID时间点或段=参数值
[GenderFactorBPList] 'GEN参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[PortamentoTimingBPList] 'POR参数(0到127,默认64)
7680=64 '格式为MID时间点或段=参数值
[OpeningBPList] 'OPE参数(0到127,默认127)
7680=127 '格式为MID时间点或段=参数值
-------------------------------------------------------------------------
看到上面这段希望楼主能开发出可以把全部参数都转换为VSQ的程序...T T
作者:
Axiom.Latis
时间:
2011/5/20 17:39
回复
10#
'kex
恩 说实话吧 PIT和PBS有了 不过不可靠 毕竟0+4=4但是1+4≠4
bir的话 用扫谱仪就行
好像ope有点···
作者:
'kex
时间:
2011/5/20 21:42
回复
11#
Axiom.Latis
嚎吧...某完全听不懂了...回去抱vsti去...
欢迎光临 iVocaloid论坛 (http://bbs.ivocaloid.com/)
Powered by Discuz! X2