- 3D工具
- MikuMikuDance
- 绘画工具
- Flash
- 音乐工具
- Audacity
- 所属类型
- 調教
  

0
9
0
UID: 111156
权限: 40
属性: 宇宙人 发帖: 201
(1精)
积分: 540
章鱼: 3
大葱: 14
茄子: 2688
注册:2012/8/18
存在感:476
|
本帖最后由 Zleepwalking 于 2015/3/22 18:27 编辑
2015.3
本贴所包含信息时间过于久远,已废弃。出于保留项目历史原因在此搁置。 本篇主要讲RSC文件格式和RSCCommon(RSC读写、RSC转CVS、发音参数生成)
RSC是什么?
RSC作用类似于Vocaloid的VSQ或VSQX。
存贮内容:曲谱、歌词、编辑器设定、参数变化。
RSC基于RDL标准。
解剖一只活生生的RSC
这是了解RSC的最快方法,只用看三分之一你就懂了。
#RSC 2.0 ←文件头,版本号2.0
RSC ←RSC结构开始
Author Sleepwalking ←作者是Sleepwalking
Information RSC test file. \0 ←备注信息:RSC test file. 以\0结束。
SegmentListQ 4 ←有四个唱词
SegmentList ←唱词表开始
Segment ←第一个唱词开始
Position 0 ←开始位置是0(位置是编辑器内部单位,即音符距编辑器最左边距离,不是时间)
Duration 0.4 ←长度是0.4,单位同Position
Lyric chu ←歌词是chu
Effects ←唱词效果,下面和CVS中的Effects相似,不过没有CVS的EnvelopeList\OpennessList\ElistEnabled
PElopeEnabled True
PresetedEnvelope ADSR
ADSR Amplitude 1 Attack 0 Decline 0.2 Release 0.1 End
End ←唱词效果定义结束
StartFreq 270 ←这个词开始时频率为270HZ
EndFreq 270 ←这个词结束时频率为270HZ
End ←第一个唱词定义结束
Segment ←第二个唱词定义开始
Position 0.4
Duration 0.4
Lyric yin
Effects
PElopeEnabled True
PresetedEnvelope ADSR
ADSR Amplitude 1 Attack 0 Decline 0.2 Release 0.1 End
End
StartFreq 270
EndFreq 270
End
Segment
Position 0.8
Duration 0.4
Lyric wei
Effects
PElopeEnabled True
PresetedEnvelope ADSR
ADSR Amplitude 1 Attack 0 Decline 0.2 Release 0.1 End
End
StartFreq 270
EndFreq 270
End
Segment
Position 1.2
Duration 0.4
Lyric lai
Effects
PElopeEnabled True
PresetedEnvelope ADSR
ADSR Amplitude 1 Attack 0 Decline 0.2 Release 0.1 End
End
StartFreq 270
EndFreq 270
End
End ←唱词列表定义结束
FreqListQ 2 ←共有两个频率控制点
FreqList ←频率控制点列表
FreqSet Position 0 Freq 270 End ←第一个频率点,位置0,频率270HZ
FreqSet Position 5 Freq 270 End ←第二个频率点,位置5,频率270HZ
End ←频率控制点列表结束
Effects ←全局效果结构
EnvelopeListQ 3 ←包络列表有三个元素
EnvelopeList ←包络列表(其实这就相当于DYN)
EnvelopeSet Position 0 Magnitude 1 End ←第一个包络点,位置0,音量1
EnvelopeSet Position 1 Magnitude 1 End ←第二个包络点,位置1,音量1
EnvelopeSet Position 2 Magnitude 1 End ←第三个包络点,位置2,音量1
End ←包络列表结束
End ←全局效果结构结束
TempoListQ 2 ←BPM表有2个元素
TempoList ←BPM表定义开始
TempoSet Position 0 Tempo 120 End ←第一个BPM点,位置0,BPM120
TempoSet Position 999999 Tempo 120 End ←第二个BPM点,位置5,BPM120 (BPM表结构最后一项的位置必须大于最后一个唱词的位置,干脆设定成一个天文数字)
End ←BPM表定义结束
BeatListQ 2 ←节拍表有2个元素
BeatList ←节拍表开始
BeatSet BarPosition 1 Factor 4 Denominator 4 End ←第一个节拍控制点,位置在第一小节,分子4,分母4。
BeatSet BarPosition 2 Factor 6 Denominator 16 End ←第二个节拍控制点,位置在第二小节,分子6,分母16。
End ←节拍表定义结束
InteractionSave ←用户操作表
LastUserPosition 0 ←关闭编辑器前用户查看的位置(左边)
LastUserScale 1 ←关闭编辑器前的缩放比例
ViewType NotesEditor ←关闭编辑器前的编辑器模式(音符编辑器)
End ←用户操作表结束
End ←RSC结构结束
Position是什么?
RSC和编辑器中一种用于表示位置的单位。
因为编辑器(还没写出来)中BPM和小节号是可变的,时间不固定,无法表示音符和参数控制点的位置。所以用Position和Duration表示它们的位置。这个单位是点到编辑器中可以拖动的最左边的距离(正常缩放下),单位不是像素,而是一个相对的比例。
RSCCommon负责什么?
- 读写RSC
- 根据Position、Duration和bpm计算出音符对应的时间
- 读取发音词典(CDT)
- 根据发音词典转换RSC到CVS
- 调用CVSCommon输出转换后的CVS
- 此外还可以把VSQX转换成RSC
RSC转换CVS的几个步骤
- 计算出RSC中每个音符的开始、持续时间
- 根据语音学微调每个音节的开始、持续时间
- 逐个遍历RSC中的音符(即CVS中的音节),在CVS中创建Segment结构,然后:
- 查找CDT中的对应项
- 找到CDT中的音节定义,刷进CVS的Segment的SyllableList里去
- 根据语音学生成SyllableList的过渡时间
- 根据CDT生成CVS的Segment的各种Effect
- 把RSC的FreqList中的FreqSet根据位置放进Segment里去
- 把RSC的EnvelopeList中的EnvelopeSet根据位置放进Segment里去
|
|