VST仪器中的"程序(programs)"是指什么?

4

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

1个回答

3
一个VST程序类似于硬件ROM预设,或MIDI程序更改消息。如果您熟悉旧合成器,这个硬件类比会更有意义,因为它们经常提供出厂预设,可以“拨号”然后相应地进行调整。一些主机将以下拉菜单的形式呈现程序列表,以便用户可以快速浏览工厂预设。
关于插件可能拥有的程序数量,VST SDK使用VstInt32(32位整数)作为程序索引。因此,插件理论上最多可以拥有2147483647个可能的程序。实际上,大多数主机将此限制为127(与MIDI程序更改消息兼容),因此不明智的是暴露超过127个程序,否则主机可能会出现问题。
在我看来,VST程序的概念有点过时和过时了。更有意义的是,您的插件支持VST SDK的FXP / FXB功能,以便用户可以从/到硬盘导入/导出补丁。正如您所期望的那样,Juce当然具有用于加载和保存VST预设文件的钩子
许多现代插件不支持VST程序,如果您的插件在getNumPrograms()调用中返回0,则完全可以接受。

很棒的回答,谢谢。我猜想它是一组预设,但我认为“程序”这个词的选择很奇怪!希望有些像我这样困惑的人可以从中受益。 - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接