870920 Menu

JUCE类库附带示例的源码分析·12

Plugin Demo

该插件集VST、AU、MIDI软音源(正弦波)和音频效果器(延迟器)为一身,可作为软音源或音频效果器的“模板工程”来研究和使用。开发插件仅需两个核心类和一个全局函数即可完成,分别是:

 继承自AudioProcessor 类的插件类(内部实现)。
 继承自AudioProcessorEditor类的可视化组件类。
 createPluginFilter() 全局函数,创建AudioProcessor插件类的堆对象。
如开发MIDI软音源,另需其它类。见本项目类图。

图 5 90 Plugin Demo项目类图

重要知识点:

 继承自AudioProcessor类效果处理和MIDI消息处理类是一款音频插件的核心类,其processBlock()是效果处理和MIDI消息处理的核心函数。

 接收外部传来的MIDI消息,语句为:
// midiMessage和buffer均为processBlock()的参数
const int numSamples = buffer.getNumSamples();
keyboardState.processNextMidiBuffer (midiMessages, 0, numSamples, true);
synth.renderNextBlock (buffer, midiMessages, 0, numSamples);

 延迟效果的算法与实现,参见源代码或7.5.8。JUCE音频插件项目的创建与调试参见3.5。