搜索

iVocaloid论坛

查看: 1421|回复: 1
打印 上一主题 下一主题

【Rocaloid经验总述】【四】关于RSC和RSCCommon [复制链接]

Sleepwalking

我不是技术宅!

Lv.5-章鱼须

Rank: 5Rank: 5Rank: 5

0
9
0


UID: 111156
权限: 40
属性: 宇宙人
发帖: 201 (1精)
积分: 540
章鱼: 3
大葱: 14
茄子: 2688
注册:2012/8/18
存在感:476
跳转到指定楼层
[1L]楼主
Zleepwalking 发表于 2013/5/29 06:48:04 |只看该作者 |倒序浏览
本帖最后由 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里去


知识共享许可协议 除非另有声明,本帖内容采用 署名-非商业-相同方式共享 3.0 许可协议 授权,且需注明出处,所有权利归发帖人。

使用道具 举报

Rank: 3

0
3
0


UID: 93325
权限: 20
属性: 難燃性
发帖: 74 (0精)
积分: 100
章鱼: 1
大葱: 2
茄子: 433
注册:2011/10/22
存在感:84
[2L]沙发
rgwan 发表于 2013/5/30 18:33:37 |只看该作者
RSC文件有股浓浓的M$ VB味道……不过我喜欢……

使用道具 举报

您需要登录后才可以回帖 登录 | 注册/sign up

申请友链|Archiver|iVocaloid - 自由,开放,合作,共享    | 版权持有者点击这里进行举报

GMT+8, 2025/6/12 03:51

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部