| 
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里去
 
 | 
 |