【技术文章】DDMF Plugin Doctor 插件医生使用教程全解读

各位好。很久没更新博文了。
今天来聊聊分析插件的超级核武——来自DDMF的Plugin Doctor。

相信各位同学都很希望弄明白你的插件和硬件到底为声音带来了什么
如果有机会可以看明白插件的共性和个性,就可以帮助你排解迷思,用省钱的方式买到真正需要的插件

但是由于DDMF的说明书是全英文的,而且文风比较偏技术,所以不一定每个人都会去看,也不一定每个人都能看懂!
所以我准备写下这篇文章,对Plugin Doctor最核心的功能进行详细解读。

如果真的希望彻底理解PD的功能,并且理性地用它来测试插件,
也需要具备比较丰富的音频技术知识,信号处理等基础,
如果感觉阅读困难,也许你需要补补课了!
因为PD也不是万能的,而且也不是没有Bug的,
其实DDMF团队一直在添加新功能并修复Bug,但是依然有一些问题残留至今,有机会可以继续分享。

-------------------------------------分割线--------------------------------------

正文开始。

一、界面解读

这是主界面:

1646724232453.png


上方Load部分用于加载特定位置的VST或者VST3文件,支持ddl和vst3格式。
“M”就是mute,用于隐藏对应插件的曲线;“X”就是关闭插件,腾出一个空间。
“Use Hardware”就是用于测试硬件的。
可以在设置中调整你的声卡IO,让整个回路可以经过你的目标硬件。
PD目前仅限于同时测试2个插件+1个硬件。

1646724484944.png


右边几个图标用于选择各类功能:

1646724581877.png


1.第一个笔记本可以保存当前测试页面中的图象信息,而且是以数据形式保存的,所以比较硬核,一般也用不到:

1646724594987.png


2.第二个书本,其实就是Libraries,可以直接打开你的插件列表。

1646724628336.png


下方Option可以选择一些对Libraries的管理选项;
Scan可以扫描插件,你自己选定路径;
Load plugin就是加载当前选中的插件,其实你不用它,直接双击插件就好;
Close就是关闭;Search就是直接搜索名称,但是目前很卡,希望后续可以解决。

1646724727244.png

搜索结果:

1646724751426.png


当你已经加载了两个插件的时候,还选择再加载一个,那么它会问你要替换掉哪个插件:

1646724796271.png


3.第三个眼睛图标,可以激活你关掉的插件界面。

4.第四个照相图标,可以截图。但是你用其他的截图方法不香吗?

5. 1|2或者1-2,可以选择图象是两个插件并列展示还是只展示两个插件的差值。
如果你要做一些曲线匹配的话,可以用相减模式。

6.设置:可以选择音频接口的各类设置。
Quality可以选择计算精度,也就是单个buffer里用到多少个点,点数越多图形越精确但是崩溃风险更大,更卡顿。
Speed可以选择计算的速度,从实时计算到特别快的计算都可以实现,同样,设置的越快越有崩溃风险。

我一般推荐设置为普通质量,超高速度。因为精度并不是我们使用PD的主要关注点。
另外可以设置颜色,还有选择是否在下次打开PD的时候加载上次的最后一个加载的插件。

1646725135912.png


二、分析窗口1——“线性分析”

其实就是测试频响曲线、相位响应曲线、冲激响应的工具。
这些曲线的适用性都指向于线性时不变系统(LTI System),这就是这个选项中“Linear”的意义。
所以该功能一般适用于EQ、混响、延迟等,而不太适用于压缩器(压缩器的行为随时间在变化,不能用一个瞬间来定义,因此不适用)。

下图展示了各种分析方法。推子可以控制输入的音量,一般不需要动。
Freq指的是看频率响应(frequency response),Phase指的是看相位响应(phase response),IR指的是看冲激响应(impulse response)。
Delta指的是适用冲激函数I(t)来测试,而Random指的是使用白噪音来测试。
冲激函数在数字音频中就是一个孤零零的峰值,其他部分都为0的信号
这种信号可以用于测试冲激响应,冲激响应的傅里叶变换获得的幅度谱就是频率响应Freq,相位谱就是相位响应Phase,波形的样子就是冲激响应IR。
此方法适用于测试EQ,但是你需要确定你的eq或者通道条里Gate是关掉的,否则冲激函数可能会被消除。
白噪声法是一个持续的信号,适用于一些冲激函数不适用的情形。但是由于PD的坐标轴设定,导致这个选项不常用。

1646725893785.png


以FabFilter的Pro-Q 3为例,看看各类选项:
频率响应:

1646726193418.png


相位响应:

1646726215526.png


冲激响应:

1646726241750.png


关于为什么白噪声不适合,你看看这个图吧,你能看出曲线形状吗……

1646726288631.png



三、分析窗口2——“谐波分析”

所有非线性系统都会产生谐波失真和互调失真,只是程度不同。先看选项功能:

1646726380780.png


两个推子调发送的正弦波的频率和幅度,
THD用于测试总谐波失真,IMD用于测试互调失真,THD的测试波形是正弦波,
IMD的测试波形是两个固定频率的正弦波。
Single是使用单频率看频谱,Sweep是通过扫频来看总谐波失真随频率变化的变化

以Oxford Inflator为例

1.谐波失真图象:

1646726569835.png


可以看到高频折叠下来的谐波是由混叠产生的。此时计算出来的THD为-35.9dB,讲的就是原始正弦波和其他谐波的比例(对数形式)。

2.IMD图象:

1646726686686.png


不仅有谐波失真,混叠失真,还有互调失真……可见非线性插件确实有一些不好的地方,就是混叠让人心烦……

3. THD的扫描:

1646726754539.png

可见Inflator对于不同频率的谐波失真还挺公平的……

四、分析窗口3——“哈默斯坦”模型

这个功能估计会让很多人望而却步了。
实际上有很多用户都是直接跳过这个窗口,因为图也看不懂,哈默斯坦是啥玩意儿也看不懂……
简单来说,哈默斯坦模型通过输入一个扫频信号
测量输出信号中,每一级谐波(是的,二次、三次、四次、……每一次都是分立的)的量随着频率变换而做出什么变化
我们以Overloud Gem Comp LA为例,看看为什么2A类的压缩会带来温暖的感觉

1646727009217.png


在合理的GR下,可以看出2A压缩对中低频的谐波失真贡献的大,对高频的谐波失真贡献的少。
每一条曲线代表某一次谐波,如图所示,粉红色是基频,正红色是而次谐波,黄色是三次谐波,绿色是四次谐波……

1646727076976.png


G(n)(n)是一哈默斯坦模型的核函数(kernel function),其实指的就是不同次的谐波。
哈默斯坦的模型简单来说就是做一个滤波的自动化,滤除单独某一级别的谐波来测量大小。
DDMF给出的参考文章也给了这个链接:https://ant-novak.com/pages/sss/

1646727169468.png


看,每一级谐波的量对应到图像里的曲线,可以看到插件对不同频率贡献谐波的不同。
那我再问一个问题,为啥76会相对2A比较亮?

如果你感觉电脑顶不住了,你可以只选择低次谐波来看:

1646727386489.png


五、分析窗口4——示波器

示波器的功能比较局限,它只能发送一个正弦波用于处理。模式一是以时间为轴的正弦波。
可以看到插件对正弦波的扭曲。模式二是李萨如图(lissajous)。
很显然李萨如图是不直观的,因为它其实是根据参数方程来确定的图象,虽然它也存在于Ozone Imager中,但是很少人会去关注。
它用于描述一个波形的相位稳固性。
当输入和输出相位是稳定的话,则利萨如图为一个直线,如果出现相位变化,则李萨如图呈现为一个椭圆(单频率下)。
椭圆越圆且越偏离45°,则说明相位改变越大
。我想说到这里就够了。

对于更直观的正弦波示波器,我们可以用一个削波器来测试,比如Oxford Inflator:
在软削波情况下(Soft clip),正弦波呈现出一种高电平被扭曲的状态:

1646728794486.png


当产生了硬削波,则曲线处直接砍平:

1646728838002.png


以此,我们可以查看效果器对正弦波处理的程度,判断效果器行为。
同时建议对比查看谐波分析、哈默斯坦模型,以及下面的——动态分析

六、分析窗口5——动态(Dynamic)

分析压缩器的常用工具。
我们很习惯于数字压缩器的压缩曲线,但是硬件建模的压缩器则不明显。
所以利用PD可以方便地看到建模压缩器的Knee、压缩比等实际曲线,比如Gem Comp 76:

1646729120927.png


可见76那种刚硬的感觉一部分就来源于它的标志性Hard knee。
在Dynamic模式下,你可以选择Ramp模式来查看放大曲线,你也可以调整窗口大小。
比如你觉得默认从-100到0dB扫描过于浪费时间,那么你可以从-50dB开始扫描。
如果你要看超过0dB部分,你可以设置上限,比如设置到10。
如果你觉得扫描的确实慢,你可以修改step,比如每隔5dB扫描一个点,这样可以大大加快速度。

1646729306449.png


三个数字分别对应下限、上限、间隔数。
也有推子可以调节一个频率。总之测试波形是一个正弦波。

如果你要看Attack和Release的行为,则你需要切换到att/rel模式:


1646729371700.png


此时你会看到一个经典的A/R测试曲线:一个由低-高-低电平的正弦波组合的波形,
确保低电平处不要触碰到阈值,高电平处则确保要超过阈值。
你会看到:

1646729455340.png


峰值处的音头就是由Attack控制的,后面的恢复曲线则由release控制。
调整att和rel,看看你的插件到底有什么特别的吧!

有一个BUG,是我和子青老师讨论出来的结果。
就是,PD的测试波形看起来是无限重复这样一段波形:

1646729556039.png


但是事实上,插件内部处理的波形是上面则个形状的无限拼接,而且中间的压缩行为没有重置
换句话说,插件内处理的波形是一个长波形,而不是多个小波形每轮重置一次状态
当你Release过大的时候,甚至会影响到前面部分的波形形状……希望DDMF早日解决这个问题。

如果你担心这个bug影响你判断,那么你可以调节这个波形的长度,比如你尾巴可以农长一点,比如到20秒……

1646729706734.png


这样总没问题了吧:

1646729721243.png



七、分析窗口6——Performance
这个窗口识别的是插件延迟。
它展示了这个插件在不同buffer下到来的延迟,buffer从81到16384分别扫描一下,看看你的插件是否让CPU太累了吧:

1646729799088.png


可见,压缩插件的实时性还是可以充分保证的,比如你在256的buffer下工作,这个插件带来的延迟几乎可以忽略……

还有,我特别觉得Sonarworks的滤波器算法非常好,真的很省资源,你看我校准后的滤波器Performance:
相比于FabFilter的Q3,SW的滤波器带来了更多的密集点数,而且两个声道是分别处理的,
然而效率和仅有24点的Q3相比几乎一致(请注意SW是LR分别处理,带来了两倍的工作量,而且点数更多):

1646730000191.png


SW是一点也不占用资源啊!

八、硬件测试
以我Focusrite Clarett OctoPre话放为例,测试一下著名的“Air”模式到底为声音带来了什么吧。
首先做好IO设置:

1646730362861.png


打开Clarett上的Air按钮,并放大到合适的高度。

1646730430797.jpeg


看看相比于常规的放大,它做了什么变化吧:

1646730485810.png


是的,Air就是一个硬件的固定EQ而已。
既然这样,那我就用FabFilter来拟合一下……

1646730609736.png


完事!以后可以用FabFilter来模仿Air了,四舍五入我又赚了。

当然你也可以看看谐波失真,事实证明Clarett的谐波失真确实是小:

1646730734272.png


你永远可以相信Focusrite……

-----------------------分割线-------------------------

小结
PD无论从易用性还是科学性上都是非常不错的工具,我使用PD完成了若干个曾经的玄学问题的验证,下面一一列出,欢迎讨论。

1. BBE插件不是“激励器”,最常用的那两个所谓谐波激励,其实就是个EQ。
相关结论在知乎写过:https://zhuanlan.zhihu.com/p/435484939

2. Overloud的2A为啥最温暖?因为它真的给了最多的低频谐波。

3. 光电压缩器真的速度很慢吗?其实启动速度是很快的,不信自己去测试一下。

4. FabFilter Pro-Q3真的很牛逼,实际上很多建模EQ就是占着曲线好听而已,而Q3真的能很好地Capture下来

5. Oxford官方含糊其辞,但是Inflator就tmd是一个Clipper而已,没什么神秘的,算法很简单,而且竟然没有上采样来防止混叠……


6. 还有很多具体到混音上的提示,恕我无法一一解读。

欢迎各位同学来深入讨论。其实我内心也有一些疑问……
 
最后编辑:

MusicRui

沉默的青椒
社区版主
KONTAKT VIP
航母广播员
制作人星公民
初级 VIP
🧱星陨矿
57,942
🧊星能体
32
🍀星灵素
32
🏵️星元核
0
好评!帮了大忙了!?
 

李卓远Michael

乱写哥
社区版主
KONTAKT VIP
制作人星公民
初级 VIP
🧱星陨矿
54,378
🧊星能体
2
🍀星灵素
35
🏵️星元核
0
写的好清楚!感谢文章!
 

AYMusic

战斗机
KONTAKT VIP
混录师星公民
初级 VIP
正式用户
🧱星陨矿
24,847
🧊星能体
61
🍀星灵素
30
🏵️星元核
90
里面有一个G(n)英文括号一直打不出来,就是G(n),n指的是阶数order,G(n)就是哈默斯坦模型的核函数。
 
最后编辑:

子青

战列舰
社区版主
KONTAKT VIP
制作人星公民
初级 VIP
🧱星陨矿
43,328
🧊星能体
67
🍀星灵素
1
🏵️星元核
0
其实LA2A是把声音信号转化成光以后,再用光学元件侦测然后控制压缩行为的。理论上它的Attack值会随着信号的大小自动调整,也就是说input值会影响Attack的真实值。插件中的LA2A也是尽量模仿这个特性,它的Attack值并不是固定值,而是随着Input量而发生变化。所以当你被压缩的量很小时,它的attack会很大,而需要压缩的量很大时,attack则会变小。

其他插件我不清楚,至少Overloud的LA是符合我的描述的。
不信试试。
LA2A的Attack.gif



另外,关于Cliper是否应该oversampling还存在争议,因为有一些人认为Clipper过采样后效果还不如不开过采样。

比如这个哥们专门出了一个多小时的视频来阐述Problem With Oversampled Clippers:




Inflator不应该被称作纯粹的Clipper,至少不是我们传统意义上理解的Clipper模型。因为Input信号没有变红前,它并不是Clipper的效果,而是某种谐波失真。

我们可以这样理解:极端的谐波失真就变成了Clipper。
 
最后编辑:

AYMusic

战斗机
KONTAKT VIP
混录师星公民
初级 VIP
正式用户
🧱星陨矿
24,847
🧊星能体
61
🍀星灵素
30
🏵️星元核
90
其实LA2A是把声音信号转化成光以后,再用光学元件侦测然后控制压缩行为的。理论上它的Attack值会随着信号的大小自动调整,也就是说input值会影响Attack的真实值。插件中的LA2A也是尽量模仿这个特性,它的Attack值并不是固定值,而是随着Input量而发生变化。所以当你被压缩的量很小时,它的attack会很大,而需要压缩的量很大时,attack则会变小。

其他插件我不清楚,至少Overloud的LA是符合我的描述的。
不信试试。
浏览附件4090


另外,关于Cliper是否应该oversampling还存在争议,因为有一些人认为Clipper过采样后效果还不如不开过采样。

比如这个哥们专门出了一个多小时的视频来阐述Problem With Oversampled Clippers:




Inflator不应该被称作纯粹的Clipper,至少不是我们传统意义上理解的Clipper模型。因为Input信号没有变红前,它并不是Clipper的效果,而是某种谐波失真。

我们可以这样理解:极端的谐波失真就变成了Clipper。
子青可能只是对Clipper的定义有区别而已。我觉得Soft Clip也是一种Clip:ROFLMAO:

当然,叫做饱和也可以,比较符合大类的划分。

总之,Inflator可以称为饱和器或者削波器,但是别被牛津官方那一套玄之又玄的说辞忽悠了就好……
 

子青

战列舰
社区版主
KONTAKT VIP
制作人星公民
初级 VIP
🧱星陨矿
43,328
🧊星能体
67
🍀星灵素
1
🏵️星元核
0
可能只是对Clipper的定义有区别而已。我觉得Soft Clip也是一种Clip:ROFLMAO:

当然,叫做饱和也可以,比较符合大类的划分。

总之,Inflator可以称为饱和器或者削波器,但是别被牛津官方那一套玄之又玄的说辞忽悠了就好……
AYMusic我上次评论的时候还是把它当普通的Saturate,但最近我发现打开BandSplit功能后,Clip效果会有变化。没错我现在认为它的Clip功能更重要一点,确实应该就称为Clipper。