2016-03-23 70 views
4

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

回答

3

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

+0

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

相关问题