图源:紺屋鴉江 - 《銀河》,Pid:94649749
写在前面 本文并非“零基础入门”型的文章。阅读此文章前,建议你已经:
使用过 Synthesizer V Studio(即 SVR2,以下用此简称代替),了解过 VOCALOID,知道“插件”的作用是什么;
已购买 Synthesizer V Studio Pro 版本,以便于插件的开发与调试;
有一定的编程经验,使用过 Lua 语言;
Synthesizer V Studio Pro的正版授权可从 平行四界官方淘宝店 或 Dreamtonics官方淘宝店 获取。关于 Lua 编程的资料数不胜数,可从 菜鸟教程 等网站获取。
另外,阅读时,可以配合下面两个文档:
正文部分存在问答部分,可能与后文的知识关联。你可以按顺序阅读,也可以在阅读完其他内容后再阅读问答部分。
以下是文章正文。
脚本存放位置 SVR2 的软件数据默认保存在“我的文档”下,而脚本放置在其中的“scripts”子目录中。
以 Windows 系统为例,如果你没有移动过“我的文档”位置,那么路径应该是:
1 C:\Users\<你的用户名>\Documents\Dreamtonics\Synthesizer V Studio\scripts
你可以在其中创建子目录分类存放不同种类的脚本。SVR2 安装时附带的插件默认放置在“Utilities”子目录下。
插件的基本结构 SVR2 Pro 支持两种插件格式:JavaScript 插件,使用嵌入式的 Duktape 解释器;以及 Lua 插件,使用嵌入式的 Lua 5.4解释器。这里选择 Lua 作为编程示例语言,以便有 VOCALIOID 插件开发经验的人快速转向 SVR2 的插件开发。
SVR2 插件在结构上主要有以下几个部分:
插件信息函数:getClientInfo()
本地化函数:getTranslations()
入口点函数:main()
下面分别进行说明。同时注意,SVR2 软件在启动时会将所有的插件代码载入内存(但不会执行除 getClientInfo()
和 getTranslations()
外的其他部分),因而对插件代码做出的改动需关闭 SVR2 再启动 SVR2 才可生效。
插件信息 插件信息由函数 getClientInfo()
控制。作用与 VOCALOID 的 JobPlugins 中 mainfest()
函数的作用类似,保存插件的名称、维护者、兼容性等信息。
其结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 function getClientInfo () return { name = '插件名字' , author = '作者信息' , versionNumber = 1 , minEditorVersion = 65540 } end
其中: