java - VST 乐器中的 "programs"是什么?

标签 java c++ audio vst juce

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

最佳答案

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 是完全可以接受的。

关于java - VST 乐器中的 "programs"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183974/

相关文章:

java - 解析 XML XPath - for 循环访问所有元素,而不是仅访问特定标签的元素

c++ - 如何定义等于 16 字节的类型

c++ - 在 C++ 中重写 = 运算符

javascript - 网络音频API : discover a node's connections

Java 小程序 : Basic Drum Set

javascript - <a> 文本链接上的内嵌音频播放/暂停

java - OpenJPA 生成奇怪的 SQL 语句

java - 如何在Mono<Map<Entity, Integer>>上调用entrySet方法

c++ - 如何用C++加密数据文件?

java - Java中字节移位的奇怪行为