870920 Menu

AudioProcessor类群详解 5-4

AudioPluginInstance

AudioPluginInstance是AudioProcessor的直接派生类之一,该类也是一个抽象基类,代表某个音频插件。该插件是逻辑意义上的,可以是外部需动态加载的插件,也可以是程序内部的处理模块或总输入/输出节点。

AudioPluginInstance没有实现基类的任何一个函数,其新增的成员函数为:

  • fillInPluginDescription (PluginDescription &desc) 给出此插件的描述
  • getPlatformSpecificData () 返回此插件特定于平台的数据指针,本函数直接返回nullptr

纯虚函数fillInPluginDescription()的含义是:将本插件的详细描述复制到给出的参数对象(插件描述)中。参数对象的类型为PluginDescription,该类代表一个插件实例的描述。

PluginDescription
PluginDescription的作用顾名思义,其构造函数无参,成员函数有:
 isDuplicateOf () 如果两个描述同指一个插件,则返回true
 createIdentifierString () 将描述信息保存到字符串中
 createXml () 将描述信息保存到XML对象中
 loadFromXml () 从XML记录中重新加载描述信息,该XML由createXML()所创建

PluginDescription类的public数据成员:(网站发布,略)

AudioProcessorGraph::AudioGraphIOProcessor

AudioPluginInstance的子类,AudioProcessor的“孙类”,同时也是AudioProcessorGraph的嵌套类。本类是一个特殊的AudioProcessor节点,代表AudioProcessorGraph中的总输入节点或总输出节点。具体是总输入节点,还是总输出节点;是音频总进出节点,还是MIDI总进出节点,视构造本类对象时给出的构造参数而定。

AudioProcessorGraph::AudioGraphIOProcessor类的构造函数为:
 AudioGraphIOProcessor (const IODeviceType type)

构造参数即为本类的枚举类型,该枚举中的常量即代表本类的节点类型:
 AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode 音频总输入节点
 AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode音频总输出节点
 AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode MIDI总输入节点
 AudioProcessorGraph::AudioGraphIOProcessor::midiOutputNode MIDI总输出节点

AudioProcessorGraph::AudioGraphIOProcessor类实现了两个基类的所有纯虚函数,其新增的成员函数有:(网站发布,略)

注意:本类在实现两个基类的纯虚函数时,有相当一批函数的返回值或文本描述是字符串类型,这些字符串都是英文的,没有使用TRANS()宏包裹。在开发中文音频软件时,这一点有点不便。特别是fillInPluginDescription()函数中,总节点插件的“厂商”信息为“Raw Material Software”(JUCE被ROLI收购前的公司)。如需换成中文,需自定义本类的派生类,而后重写有关函数。

以上几个功能类均以AudioProcessorGraph为核心,是JUCE类库实现音频插件宿主的关键与基础,具体的使用流程、内部链接与示例代码,可参阅5.6 Plugin Host一节。