背景

饴屋大大在开发UTAU的时候规定了音符的福音速的的范围是0~200,但在UTAU中音符属性设置的时候却可以设超过200的数值,并且能够让引擎使用,这算UTAU的一个Bug。

矛盾

当你在UTAU中将音符设为超过200的数值了,并保存了文件,但是第二次在UTAU中打开这个文件时,超过200的辅音速度会被忽略。【说得简单点,如果你想用200以上的辅音速度,那么必须一次调音完一次导出】

需求

可能在某些音源中,辅音速度超过200是需要的(可能辅音太长)。因此我认为开发者规定的辅音速度范围存在不合理性。

原理

由于UTAU打开文件或者是插件规范中都把辅音速度的范围限死了,所以本插件只能使用一种投机取巧的办法,利用模拟按键在UTAU中批量重新输入辅音速度。

方法

①建立插件

  • 在.../UTAU/plugins目录下新建一个文件夹,命名为“辅音速度重载”
  • 在“辅音速度重载”文件夹内新建两个文本文档,第一个命名为“plugin.txt”,第二个命名为"plugin.vbs"(需要显示扩展名)
  • plugin.txt中输入以下内容并保存
    name=辅音速度重载
    execute=plugin.vbs
    shell=use
  • plugin.vbs(不要直接打开,右键-编辑)中输入后文“脚本”中的内容并保存

(也可以直接下载本插件解压到.../UTAU/plugins目录下)

链接:https://pan.baidu.com/s/1sXBquLKX55KbJsoAXnC3lA 提取码:utau

③打开UST后,选择第一个音符(其实不选也没关系,只是选了可以提高效率)

(打开没有辅音速度大于200的UST时无需使用本插件。反之,如果自己懒得重输的话,可以使用本插件。)

④使用插件,等待模拟按键结束即可(不要切换到别的窗口)。

脚本

plugin.vbs

REM 2020.04.28Dim filePath
Dim proName
Dim pluginCodes
Dim utauCodes
Dim utauVelo()
Dim utauArr
Dim pluginArr
Dim firstIndexREM 主程序部分Set objArgs = WScript.Arguments
title = "辅音速度重载"Form_Load
RunKeysREM 模块部分Sub Form_Load()Dim curDim iREM 判断是否获取到命令行参数if objArgs.Count = 0 thenMsgBox "请在UTAU中运行!", vbExclamation, titleWScript.Quitelsex = msgbox("请在打开UST后没有进行任何操作的情况下运行本插件,否则请点击取消。", VbOkCancel, title)if x = vbCancel thenWScript.Quitend iffilePath = objArgs(0)end ifREM 从临时文件推测UST路径Set fs = CreateObject("scripting.filesystemobject")Set ts = fs.OpenTextFile(filePath, 1)pluginCodes = ts.ReadAllts.ClosepluginArr = Split(pluginCodes, vbCrLf)proName = getProjectName()if proName = "" thenMsgBox "请先保存UST文件!", vbExclamation, titleWScript.Quitend ifREM 从临时文件中推测当前音符的序号cur = -1For i = LBound(pluginArr) To UBound(pluginArr)If (Mid(pluginArr(i), 1, 1) = "[") Thencur = getNumber(pluginArr(i))If (cur > -1) ThenExit ForEnd IfEnd IfnextfirstIndex = curREM 读取目标UST文件Set fs = CreateObject("scripting.filesystemobject")Set ts = fs.OpenTextFile(proName, 1)utauCodes = ts.ReadAllts.CloseutauArr = Split(utauCodes, vbCrLf)REM 从UST文件中获取辅音速度cur = 0For i = LBound(utauArr) To UBound(utauArr)If (Mid(utauArr(i), 1, 1) = "[") Thencur = getNumber(utauArr(i))If (cur > -1) ThenReDim Preserve utauVelo(cur + 1)utauVelo(cur) = 100End IfEnd IfIf (Mid(utauArr(i), 1, 8) = "Velocity") ThenutauVelo(cur) = getNumber(utauArr(i))End IfREM 标记休止符If (Mid(utauArr(i), 1, 5) = "Lyric") Thenif (isRest(Mid(utauArr(i), 7))) ThenutauVelo(cur) = -1end ifend ifNextoutput = ""total = 0For i = LBound(utauVelo) To UBound(utauVelo) - 1if utauVelo(i) > 200 thenoutput = output & i & "." & utauVelo(i) & "  "total = total + 1end ifNextMsgbox output, vbOKOnly, "需要重载" & total & "个辅音速度"End SubSub RunKeys()Dim iDim jDim curSet WshShell = WScript.CreateObject("WScript.Shell")if firstIndex = -1 ThenfirstIndex = UBound(utauVelo) - LBound(utauVelo)End ifREM 退出插件WshShell.SendKeys "%{F4}"WshShell.SendKeys "^N"REM 移动到第一个音符WshShell.SendKeys "^n"for i = firstIndex + 1 to 0 Step -1WshShell.SendKeys "^b"Nextcur = LBound(utauArr)for i = LBound(utauVelo) to UBound(utauVelo)if utauVelo(i) <> -1 ThenREM 找到需要操作的音符(辅音速度>200)if utauVelo(i) > 200 ThenREM 打开属性WshShell.SendKeys "^e"REM 移动焦点到辅音速度文本框for j = 1 to 11WshShell.SendKeys "{TAB}"nextREM 删除原有值for j = 1 to 5WshShell.SendKeys "{DELETE}"nextREM 写入UST中的数值WshShell.SendKeys utauVelo(i)REM 确定WshShell.SendKeys "{ENTER}"end ifREM 移动到下一个音符WshShell.SendKeys "^n"end ifnextEnd SubREM 获取工程信息Function getProjectName()Dim sDim is = ""For i = LBound(pluginArr) To UBound(pluginArr)If Mid(pluginArr(i), 1, 7) = "Project" Thens = Mid(pluginArr(i), 9)Exit ForEnd IfNextgetProjectName = sEnd FunctionREM 获取字符串中的数字Function getNumber(s)Dim iDim curDim strDim numstr = ""num = -1For i = 1 To Len(s)cur = Mid(s, i, 1)If (cur >= "0" And cur <= "9") Or cur = "." Thenstr = str + curEnd IfNextIf str <> "" Thennum = CInt(str)End IfgetNumber = numEnd FunctionREM 判断是否为休止符Function isRest(s)Dim iDim curDim flagDim flag2flag = Trueflag2 = FalseFor i = 1 To Len(s)cur = Mid(s, i, 1)If (cur = "R" Or cur = "r") ThenIf Not flag2 ThenREM 判断是否为第一次出现flag2 = TrueElseflag = FalseExit ForEnd IfElseIf cur <> " " Thenflag = FalseExit ForEnd IfNextisRest = flagEnd Function

写在后面:如果开发者日后开发了新版本的UTAU并消除了这个Bug,那么本帖作废ε=(´ο`*)))。

【UTAU插件】辅音速度重载相关推荐

  1. 解决ecilpse插件安装速度变得很慢

    ' 去掉contact all的勾,这个选项会在安装过程中搜索全网进行更新修补,直接导致插件安装速度变得很慢.

  2. eclipse更换国内镜像,提高下载安装插件的速度

    如题,在4G5G时代的当下,eclipse里面下载安装插件的速度却仿佛还停留在2G时代,非常慢,还容易出现请求超时等问题,这里分享一个解决方法:切换镜像. 推荐中国科学技术大学的镜像,速度比较快,链接 ...

  3. 【UTAU插件】一键转音

    有了utauPlugin,本插件才得以完成. 国内下载地址: 链接:https://pan.baidu.com/s/1BVxjDh5DrPRDlekQdD9hGg 提取码:txhu 蓝奏备用网盘:ht ...

  4. 动态代码生成 静态代码生成_将速度提升到自己的个人代码生成器中

    动态代码生成 静态代码生成 Speedment是一个开源工具包 ,可用于生成Java实体和管理器以与数据库进行通信. 如果您需要域模型的对象关系映射,那么这很好,但是在某些情况下,您可能希望使用数据库 ...

  5. 将速度加快到自己的个人代码生成器中

    Speedment是一个开放源代码工具箱 ,可用于生成Java实体和管理器以与数据库进行通信. 如果您需要域模型的对象关系映射,那么这很好,但是在某些情况下,您可能希望使用数据库作为模板来生成完全不同 ...

  6. 发一个自己写的抓包软件,支持插件化脚本分析

    市场上的抓包工具已经足够多,轻量级的,重量级的都有,典型的wireshark,smartsniff等, 各有优缺点,PowerSniff是为程序员准备的一款抓包工具,目标是使协议解析插件编写更简单.文 ...

  7. RePlugin 插件化方案学习

    RePlugin 插件化方案 RePlugin是一套完整的.稳定的.适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出"全面插件化" ...

  8. 涉及上千款,2021 Chrome插件性能影响分析报告新鲜出炉

    译者 | 弯月     责编 | 晋兆雨 出品 | CSDN(ID:CSDNnews) 以下为译文: 这篇报告调查了 1000 个最流行的 Chrome 插件对浏览器性能和最终用户体验的影响. 202 ...

  9. 解决vim-plug无法下载插件或者插件下载过慢的问题

    vim-plug这个插件其中有一个操作其实就是把你写在配置文件中的内容转化为一个url,而后用这个url去下载插件. 如果下载不下来,我能想到的解决方法有两个: hosts修改github IP地址 ...

最新文章

  1. android Style(样式)的解析
  2. 最新版GMP规范全文
  3. 异构智能吴韧:物联网是“伪命题”?智联网才是未来
  4. 解决git clone慢问题
  5. 爷青回!16年前“打球AI”意外走红,程序员留下了自己的ICQ和MSN
  6. Python练习-基于socket的FTPServer
  7. mysql高级之子查询,多表查询,外连接,集合操作,内部函数与数据控制_月隐学python第24课
  8. C++: 21---引用和指针
  9. Android 开源框架选择
  10. python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解
  11. 【重难点】【分布式 01】RESTful、RPC 对比、Dubbo、Spring Cloud 对比、Eureka、Zookeeper、Consul、Nacos 对比、分布式锁
  12. Linux系统安装MySQL5.7,授权远程登陆
  13. Java学习系列(十)Java面向对象之I/O流(上)
  14. Delphi 金额转大写
  15. 正版饥荒搜不到服务器,饥荒正版无法刷出服务器问题的解决方法
  16. vue项目中实现汉字转拼音缩写
  17. Linux内核移植常见错误及解决方法
  18. SQL审核 | SQLE-SQL审核平台体验报告
  19. marquee详细属性
  20. dw网页设计期末设计一个网页_DW网页设计期末大作业

热门文章

  1. css绝对定位有什么用,css中的绝对定位是什么意思
  2. (强烈推荐)移动端音视频从零到上手(上)
  3. 吉尼斯计算机打字记录,吉尼斯世界纪录打字
  4. 试玩儿趣链的区块连平台
  5. The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from
  6. 《经济学300年》精髓:经济学是如何从“重商主义”过渡到劳动价值论,又发展到“边际主义”的?
  7. NFT:使用 EIP-2981 开启 NFT 版税之旅
  8. 蹭热度 闲着没事 买个 P106-90 矿卡 ubuntu 18.04 下看看如何
  9. P1618 三连击(升级版)C语言
  10. Linux第八课samba服务器搭载