[电吉他效果器] 效果器IR箱模到底是什么?Impulse Response详解与实现

[复制链接]

[电吉他效果器] 效果器IR箱模到底是什么?Impulse Response详解与实现[复制链接]

电脑音乐 发表于 2021-8-23 07:02:41 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  2 浏览:  1395
现在很火的IR箱体模拟技术相信大家都听说过,比如大名鼎鼎的two notes torpedo,再比如比较新的AMT Pangaea CP-100.这些硬件为跑场乐手,家庭录音提供了极大方便,让大家在没有真实箱体的情况下也能有丰满逼真的吉他声音.这里写一篇小文章通俗易懂的解释一下IR到底是什么,怎么运作的. 其实,IR这个东西并不是想象中那么复杂,真正理解之后我们甚至可以自己编程来实现自己IR.(下面会具体用简短matlab给大家实现一下,实用党可以把有关代码部分跳过.)
   IR全名叫做Impulse Response,中文意思为脉冲响应.首先要了解的是,我们实际上在做的是一个信号处理的工作.输入是没有箱体的吉他音频信号,输出信号是通过吉他箱体后被话筒拾取之后的音频信号.左边的图是真实的箱体拾音,右边是通过IR模拟这一个过程.
021324f4vhia3zgibirl4r.jpg
Fig.1 Real Cab vs. IR
    实际上,通过箱体和拾音,我们是把一个音频编成了另一个音频,就像下面这幅图.
021328lxeiewiz0zss2mii.jpg
Fig.2 Real Cab Input-Output
    我们现在希望做的是,通过一种方法,不经过箱体拾音,而是通过数学上的操作,来把上面的波形变成下面的.而且这个操作不仅要对这个波形有用,而且对其他波形也有用,也就是说要抓住这个箱体+拾音的特点.于是,聪明的科研民工们(在很早以前)发明了IR.
    我们仔细看一个(电子)音频文件,会发现,实际上它是由一个个小的脉冲构成的,就像下面这样.(红框子里的就是一个脉冲)
021755hze4o94vo9vu5y8e.jpg
Fig.3 spikes in a wav file
    简而言之,我们可以把一段音频看做是很多个很短的脉冲(按时序)叠加而成的.也就是说,脉冲是构成音频的基本元素。现在,我们把一个单独的脉冲(上面红框子里的线)送到箱体里再用话筒拾取,我就得到了一个新的波形,就像下面的这样
021323kak1y1eyk87dyk4b.jpg
Fig.4 IR
    注意这里我们得到了什么,这是问题的关键。这里我们得到的是最组成音频的最单位(脉冲)经过箱体+话筒处理后的结果。那么,既然每一段音频都是由很多脉冲构成的,那么我们对每一个脉冲都做这样的处理,那我们得到的音频是不是应该和真实的箱体+话筒一样呢?答案是,yes!(或者说很接近)这就是所谓的IR,上面的Fig.4就是IR文件。
    简而言之,我们先要得到箱体+话筒对单独一个脉冲的处理结果,然后做的就是对一个原始音频里的每一个组成单位,也就是每一个脉冲都这么做啦!就像下面的Fig.5
021323lgozjjznnj9k5y8j.jpg
Fig.5 IR convolution
    其实说到这里,基本的原理应该说清楚了。下面讲一讲一些细节和matlab实现的方法,有兴趣的读一读,实际党可以忽略,直接听一下音频对比,体验一下结果。
    上面Fig.5里我们做了一件事情,就是对一段音频的每一个脉冲按照我们的IR进行处理(实际上就是把原来的脉冲换成脉冲响应IR,但是注意,原始音频里的脉冲是有高度的,我们的IR要做对应的拉伸或者收缩),然后我们把每一个处理完的脉冲叠加(也就是把响应叠加),这个过程就叫卷积convolution.鄙人不才,本科时候这个概念一直没懂,现在终于了解了。。。
021322ti0rijsaznfjjgir.jpg
Fig.6 convolution
    convolution实际上就是把信号的每一个小部分进行变换,然后再叠加起来,就像我们上面做的,对每一个脉冲进行处理,然后叠加。Fig.6中上面的式子是连续的积分形式,下面的就是实际操作的离散形式.红色框子里的是原始信号,绿色框子里的是脉冲响应.
    下面贴上matlab代码和分析. 非常简单,不要吐嘈我的matlab功底.
    第一部分,读取IR和原始音频,四行分别对应读取IR和三段失真节奏,失真主音和清音
[IR, fs] = audioread('GuitarHack Original Centre.wav');
[ryth_o, fs] = audioread('dist_ryth.wma');
[lead_o, fs] = audioread('dist_lead.wma');
[clean_o, fs] = audioread('clean.wma');
    第二部分,进行卷积,就是对构成原始音频的每一个脉冲进行处理,让它变成脉冲响应,然后再叠加起来,这里matlab里面用conv命令就出来了,作两次是因为有两个声道,后面还有一个归一化是防止叠加以后信号太大。你可以把ryth_o换成clean_o或者lead_o来处理另外两个,这里只弄一下失真节奏做个示范。
y1= conv(ryth_o(:,1), IR(:,1)); %convolution
y2= conv(ryth_o(:,2), IR(:,2)); %convolution
y= [y1,y2];
y= y/max(max(abs(y)));
    第三部分,播放,后面主食掉的两行是播放原始声音和把处理完的音频存储下来。
sound(y,fs);
%sound(ryth_o,fs1);
%wavwrite(y,fs,'save')
    这里对比的是吉他箱头的line out和IR处理以后的结果.一共四大段,第一段啪嗒啪嗒的就是各种IR,第二段是失真节奏,第三段是清音,第四段是solo.分别对比line out,IR和混合对比.
设备用的是
吉他Suhr Pro S1
箱头Marshall MG100晶体管
IR用的是免费的Red Wire Marshall+SM57
弄得很匆忙,也请不要吐嘈我的吉他技术...
题外话
    这里我们讨论了怎么样在有一个脉冲响应的时候来处理我们的声音。那么如果得到IR呢?上面我们看到,既然IR是箱体+话筒对一个脉冲的处理结果,那比较直观的办法是,我就直接对着箱体输出一个脉冲(啪的一声),然后用话筒拾取呗。想法很不错,看似也是对的,(我们不是
听了很多IR,感觉就是一些啪嗒声么?)实际上的IR并不是这么制作的,因为第一,脉冲在数学上是无穷短时间内发生的这不可能物力实现;第二,直接输出一个脉冲然后采样输出信号可能受到现在器材精度的限制,不能得到满意的结果(信号发生很快,振荡很大)。实际上,制作IR的时候是采用正弦波来做,然后进行一些数学变换,就能得道啪嗒啪嗒的脉冲响应,这样得到的结果更可靠。实际上很多大的插件厂商就在干这个事情,比如做IR的red wires,就成天拿各种话筒在各种摆放下对各种箱体进行采样。再比如做混响插件的,就成天世界各地到处跑,在大礼堂,大峡谷等地方进行采样。
回复

使用道具 举报

电脑音乐
 楼主|
发表于 2021-8-23 07:05:52 显示全部楼层
IR 全称 Impulse Response
在吉他效果器里称为:箱体模拟
脉冲响应 冲激响应
脉冲反应是声学中用以反映事物混响特征的一种描述手段。
声源在发出声音以后,声波会在障碍物之间反射,于是声波彼此叠加便产生了混响。
脉冲反应是声学中用以反映事物混响特征的一种描述手段。
声源在发出声音以后,声波会在障碍物之间反射,于是声波彼此叠加便产生了混响。
例如一个声源仅发出了一个声音脉冲,那么我们便可以得到如右的声音叠加图:
混响效果器的工作原理,就是拿源声音,与 impulse response 做卷积计算。
在现实生活中,如上的单一脉冲是没有的,现实中的 IR 往往具有几百、几千、几万个脉冲。如下:
图中第一个脉冲是声源发出的,叫做“直达声“,是人耳接收到的来自声源而未经其他障碍物反射的声音。
其次规定 IR 的后面几条明显的脉冲叫做“早反射”early reflections“,这几个声音都是声音源经过一次或者两三次反射后到达人耳的,由于反射次数少,声音线路不长,所以具有较强的能量和较短的延迟。
最后规定 IR 的后面无数条脉冲叫做“迟反射”late reflactions(见上图1),这些声音都是声音源经过无数次反射后才到达人耳,反射次数多,声音线路长,所以具有较弱的能量和较长的延迟。但是它们数量极多,有如滔滔江水连绵不绝。
通过早反射和迟反射便可以反映出事物的混响特征。

回复

使用道具 举报

电脑音乐
 楼主|
发表于 2021-8-23 07:08:12 显示全部楼层
估计1000个玩吉他的有100个知道这两个字母是箱体模拟的意思,估计只有一个知道IR的全称:脉冲反应impulseresponse
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

173

主题

205

回帖

1126

积分

积分
1126

曲谱排行

热门曲谱

1
QQ