Skip to content

Latest commit

 

History

History
852 lines (474 loc) · 20.7 KB

UTAU-plugin-dev.md

File metadata and controls

852 lines (474 loc) · 20.7 KB

UTAU插件开发方法

原文链接(日语) 作者:UTAU ユーザー互助会@ ウィキ


序言

此篇文章将会详细记述UTAU的插件功能的开发方法。

安装的方法和已制成插件的一览等,请参考UTAU用插件页面。

并且,还含有对目前在其他地方都没有提及的条目的说明。

因此,也混杂有不确定的信息。请知悉。

详细的调查可使用UTAU Ver 0.2.76进行。

  • 序言
  • 基本信息
  • 数据格式
      • [#SETTING]
      • [#数字]
      • [#PREV],[#NEXT]
      • [#INSERT]
      • [#DELETE]
      • [#VERSION]
    • 条目
      • 一定存在的条目
        • Length 音符的长度
        • Lyric 歌词
        • NoteNum 音阶编号
        • PreUtterance 先行发声
      • 有可能被省略的条目
        • VoiceOverlap 重叠部分
        • Intensity 音符强度
        • Modulation 移调
        • StartPoint STP
        • Envelope 包络
        • Tempo 曲速
        • Velocity 辅音速度
        • Label 标签
        • $direct 直接输出
        • $patch wav文件直接输出
        • $region 选择范围的开始
        • $region_end 选择范围的结束
      • 只读条目
        • @preuttr 自动调整完成的先行发声
        • @overlap 自动调整完成的重叠部分
        • @stpoint 自动调整完成的STP
        • @filename 渲染使用的文件名
        • @alias 别名
        • @cache 缓存文件名
      • 音调(模式1)
        • PBType 滑音类型
        • Piches 音高数列
        • PBStart 音高数列开始位置
      • 音调(模式2)
        • PBS 音高曲线最初点
        • PBW 音高点间隔
        • PBY 除最初点外的音高点移动值
        • PBM 音高曲线的形状
        • VBR 颤音
      • Flags
        • b 不通过共振峰修正的BRE
        • B BRE
        • c 低通滤波器(共振峰修正前)
        • C 低通滤波器1
        • D 低通滤波器2
        • E 低通滤波器3
        • F 共振峰修正适用频率范围(音高基准)
        • g 简易性别参数
        • G 频率表再生成
        • h 低通滤波器4(BRE以外)
        • H 低通滤波器4
        • L 共振峰修正适用频率范围(频率基准)
        • N 无共振峰滤波器
        • P 波峰压缩器强度
        • R TIPS引擎用参数文件再生成
        • t 以10音分为单位移动音程
        • T 以文本输出频率表
        • W 机器人声生成
        • Y 伸缩范围的BRE比例
        • / 切换为高速化批处理用引擎
      • 自定义条目
  • 参考链接

基本信息

插件的形式

对于插件,最少需要以下两个文件。

plugin.txt 设定文件

[可执行文件] 插件本体

可执行文件必须能够获取命令行调用参数。

并且,如果准备名为install.txt的文件,将使插件的安装变得容易。

除此之外,含有其他文件也没有关系。

例如:readme.txt

plugin.txt的格式

plugin.txt按照以下形式记述。

name=plugintest
execute=test.exe
shell=use
ustversion=scriptversion
notes=all

name后记录有在UTAU菜单中显示的插件的名称。

execute后记录有可执行文件的名称。

通常会用CreateProcess来启动插件,但在指定有shell=use的情况下会用ShellExecuteEx来启动插件。因此,也能够执行exe以外的文件(jar、html、hta等)。

ustversion是UTAU0.4.15以后追加的条目。指定了插件脚本的版本。截至目前可指定ustversion=1.00(相当于UTAU0.2.76)、ustversion=1.10(Mode1用音高序列移至Pitches条目)、ustversion=1.20(移调改为Modulation,Mode1用音高序列移至PitchBend`条目)中任意一个。省略时UTAU本体的设定会被使用。

notes是UTAU0.4.15以后追加的条目。在指定此项时,将无视选择范围传递全部音符。省略时仅传递选择范围。

install.txt的格式

install.txt是仅在插件安装时被使用的特别的文件。 如果事先做好恰当的准备,就只需将以zip格式压缩的插件文件拖放至UTAU中,即可自动安装。 即使没有此文件,对插件自身的功能也没有影响。

在插件中,install.txt记述如下内容。

type=editplugin
folder=bar
contentsdir=foo
description=说明

type:若为插件应写作editpluginfolder:在plugin下创建的文件夹名。不可省略。 contentsdir:解压的文件夹名。若省略则变为与folder相同。 description:可以省略。用一行来写插件的说明。

文件夹构成

在使用install.txt的情况下,需要按如下形式来配布。

爱啥啥.uar

 ├install.txt

 └foo(文件夹)

  ├plugin.txt

  ├【可执行文件】

  └其他文件(若有)

uar是UTAU安装档案专用的扩展名,实际上是变更了扩展名的zip压缩文件。

即使把扩展名保留为zip也能够安装。

请将记作foo的部分替换为在install.txtcontentsdir(若没有则为folder)中填写的文件名。

在不使用install.txt的时候,必须用手动复制到plugins文件夹下等方式安装。

install.txt如上记述时,安装后将变为如下所示。

UTAU安装目录

utau.exe

plugins

│ └bar

│  ├plugin.txt

│  ├【可执行文件】

│  └其他文件(若有)

└其他UTAU相关文件

数据输入输出方法

输入

UTAU本体会将选择范围的信息用临时文件输出后,将该文件路径通过插件的命令行调用参数传递。

插件通过读取该文件来获取音符信息。

输出

插件在编辑选择范围的信息后,将结果覆盖输入的临时文件。

数据格式

从UTAU传递的临时文件是由多个名为节的单位构成的文本格式。

文字编码为ShiftJIS,换行为CR+LF.

节内有存储音符的详细信息的被称作条目的东西。

指从[#●]开始直到下一个[#●]之前为止中间的部分。

基本上,一个节对应一个音符。

节有几个种类,各自的作用不同。

[#SETTING]

是存在于临时文件的最前面的节,记载有基本设定。

作为只读,即使变更对于本体侧的信息也不会有任何改变。

输出时,省略也没关系。

Tempo 曲速 VoiceDir 音源文件夹 CacheDir 缓存文件夹 UstVersion 插件用临时文件的版本(针对UTAU Ver.0.4以后,仅在开启设定的“以旧形式条目输出UST文件和插件脚本”时存在)

[#数字]

是记载选择范围的信息的节。

此节不能省略。

作为例外,插件操作被其本身取消时,可以省略任何节。

而且,节的数字没有意义,会根据输出顺序应用于本体的选择范围。

[#PREV], [#NEXT]

[#PREV]存储选择范围前一音符的数据。

[#NEXT]中存有选择范围后一音符的数据。

若无前后音符,则没有此节。

输出时,省略也没关系,但如果不省略,就会反映出信息。

并且输出时,未必一定要写在紧邻数字节的前后。

[#INSERT]

是在输出时才能够使用的特别的节。

在它被写的位置追加音符。

因为被当作数字节的一种,所以即使写在[#PREV]前或[#NEXT]后,也不会在选择范围以外的位置追加音符。

并且,在选择范围后没有音符且选择范围末尾追加此节的情况下,若未恰当的指定Length,将产生长度0的音符,请注意。

[#DELETE]

是在输出时才能够使用的特别的节。

若以此替换数字节,会删除该音符。

不能删除其他的节。

[#VERSION]

是从UTAU0.4追加的节。

仅在UTAU设定中“以旧形式条目输出UST文件和插件脚本”开启的情况下存在。

截至目前只写作“UST Version 1.20”。

条目

条目在输出时可以省略,此时被UTAU侧解释为该条目内无变更。

因此,无变更音符可只返回节头。

在省略用[#INSERT]插入的节的条目的情况下,UTAU本体会填入某些值。此值和作为音符默认设定的值不同。

所谓条目的各说明中的“默认值”是使用[#INSERT]节追加音符的情况下,不指定任何条目时填入的值。

一定存在的条目

Length 音符的长度

格式:Length=整数

定义域:1~7680

单位:Ticks(四分音符=480)

默认值:后一音符的Length(若无则为0)

即使指定超过上限的值,Ver0.2.76也能正常读取,但旧版本会存在音符不能够移动的情况。

并且,用鼠标拖动的输入上限也是7680(下限是15)。

Lyric 词

格式:Lyric=字符串

定义域:除例外的全部字符串

默认值:后一音符的Lyric(若无则为空白)

作为例外,不能指定含有换行、节名、条目名+“=”的词。

例如“あ[#INSERT]”、“あPreUtterance=”、“あ$foo=bar”这样的东西。

不过,通过GUI侧的操作等已经变为那样的词时,只要插件侧不进行变更就保持原状。

NoteNum 音阶编号

格式:NoteNum=整数

定义域:24~107

单位:音符编号(与MIDI相同)

默认值:后一音符的NoteNum(若无则为24)

从C1=24开始,每半音值上升一。

若指定108(C8)以上,音符会变得无法表示在画面上。

若指定120(C9)以上,音符属性会变得无法打开。

若指定23以下,合成时出现错误。

PreUtterance 先行发声

格式:PreUtterance=实数

定义域:不足60000

单位:毫秒

默认值:空白(原音值)

条目本身一定存在,但值可以为空白。

有可能被省略的条目

与音调相关的条目和参数也可以省略,但因为有很多所以后述。

VoiceOverlap 重叠部分

格式:VoiceOverlap=实数

定义域:不足60000

单位:毫秒

默认值:空白(原音值)

Intensity 音的强度

格式:Intensity=实数

定义域:0~200

默认值:空白(100)

音量的峰值,200时为-0db,100时变成-6db附近。

要贴合得严密到什么程度可通过P参数指定。

Moduration 移调

格式1:Moduration=实数

格式2:Modulation=实数

定义域:-200~200

单位:百分比

默认值:空白(100)

通过UTAU的版本和选项设定,Moduration、Modulation两种格式都能够得到。

使用fresamp系引擎若指定为-101以下,生成的声音会变得很奇怪,请注意。

StartPoint STP

格式:StartPoint=实数

定义域:只要在原音范围内就没有限制?

单位:毫秒

默认值:空白(0)

Envelope 包络

格式1:Envelope=p1,p2,p3,v1,v2,v3,v4

格式2:Envelope=p1,p2,p3,v1,v2,v3,v4,%,p4

格式2:Envelope=p1,p2,p3,v1,v2,v3,v4,,p4(无“%”的状态为通过“母音结合”“交给☆我吧”母音结合的情况)

格式3:Envelope=p1,p2,p3,v1,v2,v3,v4,%,p4,p5

格式4:Envelope=p1,p2,p3,v1,v2,v3,v4,%,p4,p5,v5

(无论哪种格式、p,v都是正整数)

定义域:p在音符的范围内和其他的值不矛盾就没有限制? v是0~200

单位:p是毫秒,v是百分比

默认值:0,5,35,0,100,100,0,%,0,10,100

直到Ver0.2.35的版本中,只有格式1有效。

并且,即使在Ver0.2.36以后的版本中指定格式1,也不再是和以前完全相同的行为。

若使值变为空白则填入0。

Tempo 曲速

格式:Tempo=实数

定义域:10~512

单位:BPM(Beats Per Minute)

默认值:[#SETTING]的Tempo

设定此节以后的音符的曲速。

Velocity 子音速度

格式:Velocity=小数

定义域:0~200

默认值:空白(100)

Label 标签

格式:Label=字符串

默认值:空白

$direct 直接输出

格式:$direct=布尔值

定义域:True

默认值:空白

不经resampler(工具2)的加工输出。

因为经过wavtool(工具1)的加工,包络、先行发声等会被反映。

(实际的行为是记述不限于“True”的任何值都会直接输出。

例如即使是$direct=False$direct=0也会直接输出。在Ver.0.2.77上证实)

$patch wav文件直接输出

格式:$patch=文件名

定义域:指定对于与ust文件相同的文件夹的相对路径中的wav文件名

默认值:空白

不经resampler(工具2)的加工输出。

因为经过wavtool(工具1)的加工,包络、先行发声等会被反映。

wav文件不存在的情况下会变为与休止符同样对待。

若文件名有半角的等号(=)或半角的逗号(,)则无法正常渲染,请注意。

$region 选择范围的开始

格式:$region=范围名|范围名|范围名…

默认值:空白

选择范围的开始重复的情况下,用|分隔。

一个ust内存在同一范围名的情况下,在前面存在的选择范围优先被选择。加工$region时请勿重复范围名。

$region_end 选择范围的终止

格式:$region_end=范围名|范围名|范围名…

默认值:空白

选择范围的开始重复的情况下,用|分隔。

一个ust内存在同一范围名的情况下,在前面存在的选择范围优先被选择。加工$region时请勿重复范围名。

只读条目

即使替换也没有效果的只读条目。

由于在Ver.0.4.15才被实装,在此前版本中不能使用。

@preuttr 自动调整完成的先行发声

格式:@preuttr=实数

渲染时的自动调整完成的先行发声值。

@overlap 自动调整完成的重叠部分

格式:@overlap=实数

渲染时的自动调整完成的重叠部分值。

@stpoint 自动调整完成的STP

格式:@stpoint=实数

渲染时的自动调整完成的STP值。

@filename 渲染使用文件名

格式:@filename=文件名

渲染中被使用的音源文件名。

如果音频缺失,则不会显示。

@alias 别名

格式:@alias=别名

Prefix.map适用完成的别名。若无则为向音符输入的歌词。

如果音频缺失,则不会显示。

@cache 缓存文件名

格式:@cache=文件路径

缓存文件名。不存在缓存的情况下不被表示。

※在Ver.0.4.18中转移为绝对路径,似乎预定去除缓存路径。

音调(模式1)

PBType 滑音类型

格式:PBType=值

定义域:5OldData

默认值:5

通常请指定5

OldData是相当初期的UTAU中被使用过的滑音类型。

Piches 音调数列

格式1:Piches=整数,整数,整数…

格式2:Pitches=整数,整数,整数…

格式3:PitchBend=整数,整数,整数…

定义域:-20482047

单位:音分

默认值:0

以5ticks的步进表示音高。

通过UTAU的版本和选项设定Piches、Pitches、PitchBend每种格式都能够得到。

从插件侧输出哪种格式都没有变化。

被省略的部分全部作为0被处理。

音调数列的开始位置根据UTAU版本有所差异。Ver.0.2.76的情况下为从先行发声的位置被开始。Ver.0.4之后为从在PBStart中被指定的位置被开始。

PBStart 音调数列开始位置

格式:PBStart=实数

单位:毫秒

默认值:0

是Ver.0.4以降之后被追加的条目,指示Mode1用音调数列的开始位置。比音符开头更先行的情况保存负的值。

值不存在的情况下意义为0ms,但请注意旧版本中不存在PBStart,永远从先行发声的位置被开始(在Ver.0.2.76证实)。

※若[#VERSION]节不存在且[#SETTING]节中UstVersion条目不存在则可判断为旧版本。

音调(模式2)

滑音点的上限为50。

与此对应,也决定了PBWPBYPBM值个数的上限。

此部分条目的详情,由于从官方未能找到信息,为作者的完全推测。

即使从Mode2回归到Mode1的情况下,这些条目的值也会被全部保存。

只要渲染按钮没有被按下,Mode1的音调信息也不会改变。

并且,这里的条目没有默认值。因为用[#INSERT]插入的音符既没有滑音设定也没有颤音设定。

PBS 音高曲线最初点

格式1:PBS=整数

格式2:PBS=整数;实数

定义域:-200200; -204.8204.7

单位:毫秒; 10音分

最初的点为从音符开始点的相对坐标。

第一个值为时间位置,第二个值代表音高点移动值。

未指定音高点移动值的情况,会输入0

请注意分隔符为;

PBW 音高点间隔

格式:PBW=实数,实数,实数,…

定义域:只要没有超过音符的终点就没有限制?

单位:毫秒

从最左端点的间隔值开始。

PBY 除最初点外的音高点移动值

格式:PBY=实数,实数,实数,…

定义域:-204.8204.7

单位:10音分

除最初点外的音高点移动值。

被省略部分全部作为0被处理。

从左边第二个点的值按顺序开始。

除最初和最后两个以外没有点,或全部点的移动值为0的情况,有条目被省略的情况。

PBM 音高曲线的形状

格式:PBM=文字,文字,文字,…

定义域:未指定srj中的任意一个

从左按顺序指定各点间音高曲线的形状。

曲线:未指定 直线:s R型:r J型:j

被省略的部分全部作为曲线被处理。

全部为曲线的情况,有条目被省略的情况。

VBR 颤音

格式:VBR=实数,实数,实数,实数,实数,实数,实数,任意

定义域:0100, 64512, 5200, 0100, 0100, 0100, 0100, 任意

单位:百分比、毫秒、音分、百分比、百分比、百分比、百分比、无

相对于Length的长度、周期、深度、入、出、相位、高度、未使用

以上述顺序被容纳。

通过直接变更音符的属性,有输入超出上述定义域的值的情况。

Flags

属性的flags+BRE+无共振峰滤波器

格式:Flags=文字列

默认值:空白

在以下所记录的Flag中,含有官方未宣布的内容。

Flag各种各样的效果的说明,请参照音符的属性。

指定数字的一并记录有定义域。

全部为字母表顺序。

b 不通过共振峰修正的BRE

定义域:0100

默认值:0

B BRE

定义域:0100

默认值:50

c 低通滤波器(共振峰修正前)

定义域:0100

默认值:50

C 低通滤波器1

定义域:0100

默认值:0

D 低通滤波器2

定义域:0100

默认值:0

E 低通滤波器3

定义域:0100

默认值:0

F 共振峰修正适用频率范围(音高基准)

定义域:0~不明

默认值:3

g 简易性别参数

定义域:-100100

默认值:0

G 频率表再生成

默认值:未指定

不指定数字。

h 低通滤波器4(BRE以外)

定义域:099

默认值:0

即使变为100以上,如果BRE为1以上仍会出声。

H 低通滤波器4

定义域:099

默认值:0

L 共振峰修正适用频率范围(频率基准)

定义域:0~不明(好像是130以下)

默认值:无

N 无共振峰滤波器

默认值:未指定

不指定数字。

P 波峰压缩器强度

定义域:0100

默认值:86

R TIPS引擎用参数文件再生成

默认值:未指定

不指定数字。

t 以10音分为单位移动音程

定义域:不明

默认值:0

T 以文本输出频率表

默认值:未指定

不指定数字。

W 机器人声生成

默认值:未指定

不指定数字。

好像是官方还没有宣布的Flag。

Y 伸缩范围的BRE比例

定义域:0100

默认值:100

/ 切换为高速化批处理用引擎

高速化批处理时被使用记号的默认。

大概可以变更。

自定义条目

格式:$条目名=值

用户可以定义自定义条目。

如果在节内按格式记述,则在Others中反映。

格式开头的一字符的$必须为半角。

条目名只要不含换行、半角空格、半角的/即自由。

值如果含有半角的“=”(等号)或半角的“\n”(反斜杠+小写英文字母的n),在此以后的字符串会缺失。并且,半角空格被替换为半角逗号。除此以外没有限制。

例:$你=其实,是个傻逼啊