常见问题解答
创建此索引的目的是帮助指导用户了解哪些功能、做什么以及如何使用它们。
IMPORTANT
如果你发现了一个错误,请在GitHub页面上创建一条议题。
在提出议题之前,请务必先查看常见问题解答。
此脚本仅用于辅助创建音MAD和YTPMV。
它不是为了完全自动化你的工作流程而设计的,请不要依赖它为你做所有的编辑工作。
基础问题
这些“特定”的功能是做什么用的? / 那些“功能”在哪里。
文档详细阐述并指出了每个功能的作用及其各自的功能。如果你对什么功能是做什么用的以及它们是如何工作感到困惑,你应该阅读它。
我的MIDI文件不能工作。
确保您已使用兼容的程序(例如FL Studio)导出MIDI文件,并且该文件具有MIDI通道/音轨。没有通道或音轨的MIDI文件将无法加载或无法正确使用脚本。如果MIDI就是MIDI文件本身,请尝试将MIDI重新导入导出的程序中,然后再次导出。
如果MIDI文件来自于FL Studio。请确保你先进行了 工具宏准备进行MIDI导出,然后再 导出 成一个 .mid 文件。
如果MIDI文件来自于Reaper,完成项目后,请转到 导出项目MIDI,选择 输入 轨道为 整个工程 和 全部轨道。将 输出 设置为 多轨道MIDI文件(MIDI1格式),然后单击 确定。
如果它还是不能工作,这很有可能是 力度错误! 或 无法加载文件或程序集“NAudio”。
我看到的是白色的形状而不是素材。 / 不能创建鼓组。
这是由声呐功能生成的。如果您的MIDI检测到或有鼓点音轨/通道并被选中,声呐效果将自动打开。如果你不希望拥有这些类型的视觉效果,请立即在配置中禁用该功能。
无法启动Otomad Helper。
请确保您拥有最新版本的 Vegas Pro 13、14 ~ 15 和 16+ 每个都有各自不同版本的脚本。下载与您的Vegas Pro版本相匹配的版本的脚本。
你还需要在它旁边安装NAudio,这是脚本附带的,这是必需的。确保NAudio在脚本菜单文件夹中有其相应的文件夹。
务必从发行版页面获取脚本,别把源代码下载了!
我同时下载了 .cs 和 .dll 版本,可以吗?
.cs 和 .dll 版本,可以吗?脚本现在有2个包。.cs 包和 .dll 包。.dll 版本的运行速度比 .cs 更快。
你不能同时拥有两者。如果您使用脚本的 .dll 版本,则必须删除 .cs 和 .cs.config 版本,反之亦然!
无法加载文件或程序集“NAudio” / 操作不支持。
请确保已解锁 NAudio 的DLL。转到 dll 文件夹,右键单击 dll,选择属性。如果你看到它说它被锁定了,就请解除锁定它。
力度错误!
System.DivideByZeroException: Attempted to divide by zero.这是由于映射力度功能的输入值被设置为相同所致。确保输入的值不相同。
System.FormatException: Got an off without an on 0 NoteOn你的MIDI文件中有一个力度为0的音符。检查以确保没有任何力度值为0的音符(也就是没有音量的音符)。
示例:

指定的参数超出了有效值范围。
IMPORTANT
此问题已在版本4.64.17.0中修复,因此不应在最新版本中重现。
at ScriptPortal.Vegas.Fade.set_Gain(Single value)这是由于“映射力度”已打开且设置的值高于或低于MIDI文件中使用的值所致。将映射力度更改回0 ~ 127,将音量更改为0 ~ 100或禁用映射力度。(最有可能的情况。)
安装相关
new 表达式要求在类型后有 () 或 []
错误类型:Vegas版本过旧,例如Vegas 12出现的问题。
报错时机:在菜单运行脚本时。
错误信息:
C:\Program Files\Sony\Vegas Pro 12.0\Script Menu\otomad_helper.cs(17): new 表达式要求在类型后有 () 或 []解决方法:使用新版本的Vegas。
补充说明:
Chaosinism的原注解:我之前错误宣称脚本可以在12至15的任意版本使用,实际上12很可能是无法使用的,如果造成不便我非常抱歉。由于我自己没有Vegas 12,所以不清楚确切的原因,推断是因为旧版Vegas使用了不同的.NET框架,所以不支持某些语法。
后人(编者)的注解:该错误最早发生于v0.1版本的脚本中,在脚本的第17行及之后为以下代码:
public Dictionary<string, int> pitchMap = new Dictionary<string, int> {
{ "C0", 0 },
{ "C#0", 1 },
// ...
{ "A#8", 106 },
{ "B8", 107 },
};注意到代码 new Dictionary<string, int> 处没有加括号,标准的写法应该是 new Dictionary<string, int>()。而在带有集合初始化器的对象创建表达式中,允许省略无参构造函数的括号 () 这一语法特性,是从 C# 3.0 和 .NET Framework 3.5 开始支持的。
微软在引入LINQ的同时推出了“对象和集合初始化器”(Object and Collection Initializers)语法。在 C# 3.0 的语言规范中明确规定:当使用初始化器(大括号 {})时,如果调用的是无参数构造函数,则类型名后面的圆括号 () 是可以省略的。
这足以说明Vegas Pro 12应该采用了C# 1.0/2.0和.NET Framework 1.0/2.0作为脚本框架。
未能找到类型或命名空间名称“Sony”
错误类型:Vegas版本不符,版本不符的报错。
报错时机:在菜单运行脚本时。
错误信息:
C:\Program Files\VEGAS\VEGAS Pro 15.0\Script Menu\otomad_helper.cs(11):未能找到类型或命名空间名称“Sony”(是否缺少 using 指令或程序集引用?)
C:\Program Files\VEGAS\VEGAS Pro 15.0\Script Menu\otomad_helper.cs(657):未能找到类型或命名空间名称"Vegas”(是否缺少 using 指令或程序集引用?)解决方法:使用与Vegas版本对应的脚本。
补充说明:Vegas 13与Vegas 14/15所对应的脚本是有一些不同的,我在Github的release里分别放出了不同下载链接,请使用正确的版本。具体来说,Vegas系列软件自14起被索尼出售给了MAGIX,所以一些库的命名也变化了,不再含有“Sony”字样。
未能找到元数据文件“NAudio.dll”
错误类型:找不到 NAudio.dll,找不到DLL的报错。
报错时机:在菜单运行脚本时。
错误信息:
C:\Program Files\VEGAS\VEGAS Pro 15.0\Script Menu\otomad_helper.cs: 未能找到元数据文件“C:\Program Files\VEGAS\VEGAS Pro 15.0\Script Menu\DLL\NAudio.dll”解决方法:确保将 NAudio.dll 放置到正确的位置;确保此文件已被解除保护。
补充说明:请参阅安装方法的说明。NAudio是一个用于处理音频文件的库,我调用它来读取MIDI文件,因此 NAudio.dll 这个文件是必不可少的。
无法读取MIDI文件
错误类型:无法读取MIDI文件,读取MIDI失败的报错。
报错时机:读取MIDI文件后 或 生成音频/视频途中。
错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.FormatException: Not a MIDI file - header chunk missing
at NAudio.Midi.MidiFile ..ctor(Stream inputStream, Boolean strictChecking, Boolean ownInputStream)
at EntryPoint.FromVegas(Vegas vegas)
--- 内部异常堆栈跟踪的结尾 ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at ScriptPortal.Vegas.ScriptHost.ScriptManager.Run(Assembly asm, String className, String methodName)
at ScriptPortal.Vegas.ScriptHost.RunScript(Boolean fCompileOnly)System.Reflection. TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at EntryPoint.FromVegas(Vegas vegas)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Sony.Vegas.ScriptHost.ScriptManager.Run(Assembly asm, String className, String methodName)
at Sony.Vegas.ScriptHost.RunScript(Boolean fCompileOnly)解决方法:用宿主软件导入该MIDI,然后重新输出一个新的MIDI文件。
补充说明:MIDI文件有多种格式,脚本不保证都能够正确读取。所幸主流宿主软件在默认设置下导出的MIDI文件一般是可以读取的。(目前测试过FL Studio、LMMS与Music Studio for iPad。)
无法调用移调插件
IMPORTANT
该错误已过时,仅在Otomad Helper v0.1中出现,最新版不应发生该错误。
错误类型:无法调用移调插件,找不到调音插件的报错。
报错时机:生成音频/视频途中。
错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 --->
System.ArgumentNullException: 值不能为 null。
at ScriptPortal.Vegas.Effect..ctor(PlugInNode plugIn)
at EntryPoint.FromVegas(Vegas vegas)
--- 内部异常堆栈跟踪的结尾 ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at ScriptPortal.Vegas.ScriptHost.ScriptManager.Run(Assembly asm, String className, String methodName)
at ScriptPortal.Vegas.ScriptHost.RunScript(Boolean fCompileOnly)解决方法:确保你的Vegas含有“移调”插件,并且名称已改为“Pitch Shift”。
补充说明:
具体可见之前专栏中对于安装方法的说明。如果仍然不能解决,另一种方式是找到脚本中的所有的
vegas.AudioFX.FindChildByName("Pitch Shift");字样(一共4处),并将它替换为
vegas.AudioFX.FindChildByUniqueID("{ED1B4100-93BE-11D0-AEBC-00A0C9053912}");但这个办法也不保证能成功。这类错误留有一些疑点,我还没有完全解决。
无法调用移调插件的预设效果
IMPORTANT
该错误已过时,仅在Otomad Helper v0.1中出现,最新版不应发生该错误。
错误类型:无法调用移调插件的预设效果,找不到预设效果的报错。
报错时机:生成音频/视频途中。
错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 --->
System.Runtime.InteropServices.COMException: 对COM组件的调用返回了错误HRESULT E_FAIL。
at ScriptPortal.Vegas.IEffectCOM.SetPreset(UInt32 sessionID, Int64 position, String presetName)
at EntryPoint.FromVegas(Vegas vegas)
--- 内部异常堆栈跟踪的结尾 ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at ScriptPortal.Vegas.ScriptHost.ScriptManager.Run(Assembly asm, String className, String methodName)
at ScriptPortal.Vegas.ScriptHost.RunScript(Boolean fCompileOnly)解决方法:确保在移调插件中添加了所有的25个预设,且命名正确。
补充说明:
Chaosinism的原注解:具体可见我之前专栏中对于安装方法的说明。这25个预设是上下一个八度以内的所有变调种类,缺少任何一个都有可能出错。手动添加预设的确非常麻烦,但Vegas无法使用脚本来指定变调的具体参数,因此只好绕这个弯子。
无法读取媒体流
错误类型:无法读取媒体流,无法读取媒体流的报错。
报错时机:生成音频/视频途中。
错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 --->
System.ArgumentException: Media stream not specified.
at Sony.Vegas.Take.AddSelf(UInt32 trackID, Int64 eventID, MediaType mediaType)
at Sony.Vegas.TrackEvent.AddTake(MediaStream mediaStream)
at EntryPoint.FromVegas(Vegas vegas)
--- 内部异常堆栈跟踪的结尾 ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Sony.Vegas.ScriptHost.ScriptManager.Run(Assembly asm, String className, String methodName)
at Sony.Vegas.ScriptHost.RunScript(Boolean fCompileOnly)解决方法:在设置界面,纯音频素材不要勾选“包含视频”;纯视频素材不要勾选“包含音频”。
补充说明:若仍不能解决,说明该素材文件可能是Vegas不支持的格式,可以手动把该文件拖入Vegas中看一下是否视频音频都正常。
深度探索
替换轨道剪辑 - 分别指定 解释
- 选择要用作替换的剪辑,并将其设置为替换项⋯⋯
- 点击顶部“返回Vegas”⋯⋯
- 选择要被替换的剪辑⋯⋯
- 再次运行脚本⋯⋯
- 设置被替换项为所选内容⋯⋯
- 单击“替换”⋯⋯
这将用你选择的替换片段进行替换。
得到一个“音符关”而没有“音符开”(如何找到有问题的音符?)
- (PPQ) 的值。
- 答案是
节:拍:刻中的 ,这是音符关所在的位置。 - 或者它的拍是音符开[例如:(
节:拍:刻)]。
映射力度解释
- 映射力度将在时间轴中生成事件,其中不透明度(对于视频)或音量(对于音频)根据你在脚本中设置的范围直接对应于每个MIDI音符的力度值。
- 标准MIDI力度范围为0 ~ 127。
你可以设置自定义力度范围并将其映射到你所需的不透明度或音量范围。
示例
如果将力度范围设置为64 ~ 127,并将不透明度/音量范围设置为50% ~ 100%:
- 力度为64(FL Studio或 Reaper中的表示一半力度)的音符将以50%的不透明度/音量生成。力度为127的音符将以100%不透明度/音量生成。
IMPORTANT
映射力度不会忽略设定范围之外的音符。
- 如果音符的力度低于最小值设置,生成的事件将被静音(0%音量/完全透明)。
- 如果音符的力度高于最大值设置,生成的事件将设置为100%不透明度/音量。
Vegas Pro引起的音频总线轨道错误
问题详细描述:
当项目内添有除音频主控以外的音频总线轨道时,无法将工程渲染为WAV (Microsoft Wave) 文件和W64 (Sony Wave64) 文件(渲染进度立即跑满,但是未渲染出WAV文件或W64文件)?
并且渲染其它任意格式时,音频总线轨道的各种效果参数均不起作用?
这个是多流渲染导致的。进入 内部首选项,搜索并找到 Enable Multi Stream Render,将其从 TRUE 修改为默认的 FALSE。
如何进入 内部首选项?
- Vegas Pro 18 及以上:按住 Shift,进入上方菜单栏的 选项内部。
- Vegas Pro 17 及以下:按住 Shift,进入上方菜单栏的 选项首选项,然后切换到
内部选项卡。
为什么会出现此问题?首先官方是不期望你特意修改内部首选项的,他们认为默认设置是最适合普通用户使用的。除非你主动去修改该设置以外。如果你在其它地方下载并安装了所谓的“Vegas优化方案”注册表文件,则他们可能会将 多流渲染 设置打开,即便你并不知道这些文件对你的设置动了哪些手脚。