VST 仪器中的“程序”是啥?

Posted

技术标签:

【中文标题】VST 仪器中的“程序”是啥?【英文标题】:What are "programs" in a VST instrument?VST 仪器中的“程序”是什么? 【发布时间】:2016-03-23 16:42:54 【问题描述】:

我最近开始使用 jvstwrapper 和 juce 框架。 VST SDK 似乎对您的仪器有一些不同“程序”的概念。例如 jvstwrapper 和 juce 都有你继承的类来创建你的乐器。这些类需要实现许多方法。在这两种情况下,(在 VST SDK 中有详细说明),您必须实现方法“setProgram”、“getProgramName”、“setProgramName”、“getNumPrograms”等。我知道每个程序似乎都包含一堆仪器设置。但是在什么情况下它们实际上被使用了?再加上应该有多少?

【问题讨论】:

【参考方案1】:

VST 程序类似于硬件 ROM 预设或 MIDI 程序更改消息。如果您熟悉较旧的合成器,硬件类比会更有意义,这些合成器通常会提供出厂预设,可以“拨号”然后进行相应调整。部分主机会将节目列表呈现为下拉菜单,方便用户快速浏览出厂预设。

关于插件可以拥有的程序数量,VST SDK 使用VstInt32(一个 32 位整数)作为程序索引。所以一个插件理论上最多可以有 2147483647 个可能的程序。实际上,大多数主机将其限制为 127(为了与 MIDI 程序更改消息兼容),因此公开超过 127 个程序是不明智的,否则主机可能会遇到您的插件问题。

恕我直言,VST 程序的概念有点过时和过时。让您的插件支持 VST SDK 的 FXP/FXB 功能更有意义,以便用户可以从/向硬盘导入/导出补丁。如您所料,Juce 当然有hooks for loading and saving VST preset files。

许多现代插件不支持 VST 程序,您的插件在 getNumPrograms() 调用中返回 0 是完全可以接受的。

【讨论】:

真棒回答谢谢。我怀疑它是一组预设,但我认为“程序”是一个奇怪的词选择!希望像我这样困惑的人能从中受益。

以上是关于VST 仪器中的“程序”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

VST 仪器多进多出

在 C#/C++ 中托管 VST/DX 仪器? [关闭]

VST 插件中的 Ableton Link 可能吗?

为 OS X 和 Windows 创建既是音频单元又是 VST 的音频插件 UI 的“最佳”方法是啥?

VST 音频输入值与 Matlab 中的完全不同

VST 主机 - 泄漏的对象 - Juce/C++