使用Juce开发Audio Plugins (二) E&P结构
此为老版教程,请移步新版教程:《音频开发技术/实战/进阶》
我想你已经注意到了上一节中提到过自动生成的代码
Juce新建的每一个音频插件都会包含两个类 PluginProcessor 和 PluginEditor,
(注:上图中可以看见一个类同时有.h和.cpp文件,这里.h文件存放的是该类内元素的声明,cpp文件存放为该类内元素的具体实现,实际上.h内的内容可以直接写在.cpp文件里,把.h分离出来的用意是使得开发者拿到该代码通过查看.h文件可就可以对接口和可以调用的元素有一个快速的了解.)
PluginProcessor负责处理音频信号与MIDI信号的处理,
PluginEditor负责处理插件UI、可视化的元素的显示。
一个插件可以有很多个Editor,但是只能有一个Processor,
每个Editor都有存有一个Processor的句柄,Editor是需要根据Processor才能得到音频或Midi信号的进而把这些信息转化为可视化元素的参数,并且Editor也是借助Processor才能把自身的参数应用在音频或Midi信号上。
(PS: PluginEditor.cpp
这里我们可以看到Processor的句柄是Juce框架自动注入到Editor中的,因为Editor的构造方法通常不由开发者调用)
在Processor中,需要编辑的方法是processBlock(),
它负责处理音频和MIDI的信号处理
Processor.cpp
在PluginEditor中要编辑的方法是构造方法,paint() 和resize()方法
构造方法绘制并初始化窗口的UI元素与窗口本身,
paint()执行在构造方法后,在它里面可以绘制额外的的控制器或自定义的UI组件,
resize()发生在窗口大小变动时,常用来重新定位元素的位置
(PS:这里根据个人经验,resize()是必须要写的,否则元素可能因为位置不对在初始化的时候显示不出来)
好,这一节就到这里。