使用CRIWARE全家桶制作带有Phil Collins 缔造的80年代经典音效的3D全景场景
使用CRIWARE全家桶制作带有Phil Collins 缔造的80年代经典音效的3D全景场景
说到80年代流行歌曲的领军人物,我们一定不会忘记Phil Collins老爷子。
如果你问身边的鼓手朋友们一个简单的4套3的线性加花的例子,可能又逃不过提名这位传奇大爷的经典作品——
The hurt doesn't show But the pain stil l grows It's no stranger to you and me
蹦蹦咚蹦蹦咚蹦蹦咚蹦蹦咚蹦咚蹦~~~
这首单曲在发行近40年后(2020年8月)重新登上了billboard榜首。
在我心中,他和Peter Gabriel,Hugh Pagman等人一起开创了一种奠定80年代的声音——一种让人熟悉而又陌生的声音。
前些天(1月30号),老爷子刚刚度过了他的70岁生日!
基于此,我也在UE4中简单制作了一套80年代的全景空间来向偶像致敬。
在本文中,我们将讨论几个不同抽象级别的问题:
- 门限混响是如何被发现的
- 如何模拟早期算法混响
- 如何在DAW中实现基于算法混响的门限混响
- 如何在ADX2中设计带有门限混响音效的交互音乐
- 如何简单实现80年代视效表现
- 如何在ue4中设计全景视觉场景并载入各类资产
本文使用了以下工具:
Reaper-Python-ADX2-Sofdec2-Premiere(可选)-UE4
最有代表性的80年代的声音的由来
神奇的发现
关于鼓组的录制,我猜如果问一百个录音师,可以得到一百种(甚至可能更多)答案。
有人喜欢头顶话筒 +多近点麦的可控性,有人喜欢Glen Johns的整体感,有人会使用不同压缩强度的mid-side方式来营造气势,甚至还有人拿水管和腌黄瓜录制鼓组(见Sylvia Massy撰写的Recording Unhinged)。
如同世界上一系列伟大的发现,门限混响(gated reverb)出于巧合。在1979年,费老和他的前队友兼制作人 Peter Gabrieal在伦敦的一个叫做Townhouse Studio的工作室中录制新专辑。这个录音工作室Townhouse Studio是大名鼎鼎的维京集团创始人英国巨富 Richard Branson在唱片业赚到他的第一桶金后建造的。
你知道吗,金主爸爸Richard Branson从小家境贫寒,没有受到过太多教育,更不要说会音乐了。正因为此,他才将他的唱片连锁叫做 Virgin Records。其意义在于表明他没有多少音乐行业的经验。
但Virgin Records 却是一个特别炫酷的存在。在上世纪70年代初期,英国的一个项叫做Resale Prices Act, 1964的法律刚刚通行。这项法律内容是零售商可以更加有弹性的定价,而不需要遵循由生产商所制定的合约中的最低价。
当然这个政策受到了很多已经通过了各种形式的反倾销法案的西方国家的抵制,但Richard Branson 却看到了赚钱的机会。他创办了一家以邮寄形式为主的非实体“唱片店”,大大降低了营销运营成本,而一切的收入又被重新投资到唱片行业。与此同时,Richard Branson又在英国很多小镇办起了录音工作室,从此给很多音乐人提供了更好的平台。
在此,我仅代表从业者向所有支持艺术的企业家致敬!
君子爱财 取之有道 视之有度 用之有节。
由于财力雄厚,这个录音工作室每一个主控室都配有一台在当时最尖端的SSL4000混音台。在这个工作台上有一个独立的talkback 通道。由于当时的多轨开盘机(multitrack tape machine)多数为16,24, 32轨,而配置独立的talkback 通道的意义是可以在录音工程师在使用同一个台子的情况下确保多轨开盘机的每一轨都被利用上,从而减少bounce的需求。
这个 SSL 4000 talkback通道最大的特点是配有快速闭合的门限器和超大压缩效果的压缩器。而正是这样的设计,才注定了非线性门限混响的这一发现。
你知道吗,bounce这个词的起源来自于磁带录音时代的工作流, 因为在那时很多小型独立录音室中的开盘机多数只有8轨或16轨。
为了可以录入更多单独可被调控的信号,大家会把开盘机最中间的一轨留出来以备其他轨的信号被bounce入。
例如,在一个8轨的开盘机上录入一首歌,首先会考虑录入声源比较多的鼓组。 在将声源入进1-4轨 和6-8轨后,第5轨会被留作用来导入其余1-8轨缩轨后的信号。而导入后便可开始录下一个声源。此时,第5轨便成为了bounce in place 轨(简称bip),而下一组声源可以再度被bounce到除第5轨之外的任意一轨。 由于每次bounce会增加底噪和颤动(flutter),所以选择正确的分轨策略在磁带录音时代是十分重要的。
在1979年,费老和他的Genisis 乐队队友 Peter Gabrieal在录制Peter的新唱片。
由于费老是左撇子,而多数的鼓手是右手为主手,所以在他在录制鼓组时需要花很多时间来将为其他鼓手摆放好的鼓组重新按照自己的习惯进行排位。
70年代的鼓组的声音多数很干(没有很多混响),大多的录音师会选择将麦克风放置在各个鼓的近点。这就意味着费老每次在重置鼓组时都会将所有近点麦克风拿开,而只使用调音台上的talkback通道。
talkback通道连接的麦克风相对鼓组比较远,所以会产生较多房间的混响。当费老排放好了鼓组之后,他敲下的第一声就使控制室里的Peter Gabriel和录音师Hugh Pagman大吃一惊。而他们二人并没有直接告诉费老这个神奇的声音,而是告诉他保持一个节奏一直打下去。
费老虽然觉得奇怪但也没有异议,便一直演奏一个节奏。由于talkback 通道不能发送到调音台的总线,控制室里的Hugh Pagman便又拿出了一个新闻采访式的录音机收录了这一个声音。
而在第二天Hugh Pagman又专门找人从调音台的电路中引出了talkback的输出,这才将这个有趣的声音记录下来。
第一个使用门限混响的效果的单曲是Peter Gabriel的Intruder。此次以后,门限混响的大门便永远的敞开了。从Whitney Houston 到 Prince,再从谭咏麟到李娜,很多的流行歌曲中都会找到这个记录着80年代的声音。
那么如何以故事中的信息来在3d引擎中实现这个音效呢? 我们接着往下看。
80年代效果的实现
我们在文章的开头已经为大家简单演示了达成的效果,我们可以依以下几个步骤来进行实现:
-1- DAW制作门限混响
-2- 制作音乐素材并在ADX2中制作交互逻辑
-3- 制作80年代视频效果
-4- Sofdec压缩全景视频
-5- Ue4工程制作
-1- 在DAW中制作非线性门限混响
从上文中,我们可以得知要实现这样的音效需要有三个元素:
混响,门限,动态压缩。
但为在这里我加入了调节音高的效果,因为这样可以使我们最后产出的音效很有趣。与此同时,我们可以加入任何我们觉得有意思的效果,也欢迎大家在文末扫描二维码加入我们的交流群并分享你的想法。
在本篇文章中,我选择使用了Reaper,主要原因是其开放性。关于更多Reaper内容,在今后的一期分享中我们会单独介绍如何简单的设置Reaper。
首先我们来打开软件(如果你没有Reaper,建议下载评估版)并将声源素材拖入。再建立一个命名print_effect为音轨。
将所有包含声源素材的轨道按照类型命名(军鼓,底鼓,音效。。。)
- 将所有的音源轨都发送到print_effect音轨。
- 在print_effect音轨上加入效果器
- 加入ReaVerbate效果器
- 加入ReaGate效果器
- 加入ReaPitch效果器
- 加入ReaComp效果器
- 录入声音
1 素材导入
在这里我使用的是 toontrack的 superior drummer音源。如果你有条件实录鼓组,或是有渲染好了的wav文件,最后的效果应该是一样的。
我建议大家可以将文件按照你认为合理的逻辑分类,然后选中同一类型的文件并使用批量重命名(Auto rename multiple tracks)并将重名名后的音轨设置成同一种颜色,以便我们快速辨别音轨的类型。
如果你要将已经导入进Reaper的数据库中的文件导出,那么你还可以使用Reaper的play-through功能来快速预览加入效果后的声音。
2 发送
在第一个轨道上选择 Route键,在发送一栏中选择print_effect音轨。打开调音台并在标记处将“发送”对话框拖入其他同样轨道。如果你对Reaper的action有一定的了解,你还可以通过 copy select track sends 和paste sends to selected track这个S&M action来实现更高的自动化。
3 效果器
这里是我们在Reaper中的主要工作。考虑到多数情况下我们需要使用音色库的鼓组,我们在这里选择使用算法混响来模拟房混。
在对这些效果器进行设置之前,我们简单了解一下算法混响的实现方式。
算法混响由4种模组组成:
信号延迟(d):将一个信号拖延一定时间后输出;
梳状滤波器(cf):将一个信号拖延一定时间后衰减并反馈给输入再进行输出;
信号路由(r):指可以进行相位翻转和串联或并联的调音台;
全通滤波器(af):指能量无损的情况下把一个信号沿着摸个频域值将相位翻转180度,这里可以把它理解成一个扩散器。
早在上世纪60年代,Manfred Schroeder 就对算法混响进行了一些列的研究并发明了Schroeder Reverberator。其逻辑可以简单的理解为并联不同延迟时限的(cf)来增加混响的echo density ,再使用串联的不同频段的(ap)来降低(cf)带来的相位问题和某些频段的共振问题(金属感的听觉效果)。
在当时,schroeder只能使用电子硬件来实现这个效果。而在芯片技术发达的今天,我可以可以使用宿主软件来简单还原一下这个过程来帮助我们对算法混响的理解。
德国物理学家Manfred R. Schroeder
虽然我们成功将这个效果实现出来,但是其意义在于帮助我们理解reverb的根本实现方法从而在我们的决策过程中起到作用。
相比当今的混响模拟算法,shroeder reverb会显得十分不自然,原因有三:
- 它的每个(cf)的echo density都是一样的,但是现实世界中声音经过反弹达到我们的耳朵的时间会是不一致的;
- 它没有考虑到我们的听觉系统在处理早期反弹(early_reflection)和晚期反弹(late_reflection)上有着很大的差异;
- 它没有考虑到声音反弹时候的能量衰减在不同频域是不一致的,通常情况下低频和高频的衰减会大于中频(因反弹材料而异)。
3.1 ReaVerbate效果器
以笔者的看法,很多算法混响中的所谓的“room size”或是“decay”再者“ reflection” 都或泛指基于shroeder reverb 的设计理念中的(cf)的数量和延迟。
这些参数的数值越大,那么所生成的并行(cf)的数量和他们的延迟就越大。
在ReaVerbate中,我们需要尽量使用延迟时长(room size)高的设置。在这里我们将频率衰减曲线(dampening)调至0,关闭所有滤波效果,将干声调到负无穷,将湿声调到+0db。
3.2 ReaGate 效果器
在门限的设置中我们需要将pre-open 设置成0,关闭所有滤波效果。通过调试hold 和release来设计出这个声音的包络。
值得注意的是,如果这attack个参数十分低会出现卡顿的效果,反之则会使最后产出的音效失去所谓的力度。 然后我们通过调节门限值来得到音效。将初始值设置为0,然后慢慢的调低,直到听到你认为合适的音效。
如果你对这时的音效的包络不满意,你可以对hold 和release做进一步的微调从而得到最后的产出音效。
3.3 ReaPitch效果器
根据上文我们分析算法混响的过程,我们知道将许多梳状滤波器同时并联使用会造成大量的谐振波。
虽然使用全通滤波器可以将其效果降低,但如果我们使用音高调节效果器的话会将部分过滤掉的谐波重新引入。
也就是说,如果我们追求的是一个自然的混响效果,那么调节音高的效果器应当慎重使用。但是好在门限混响追求的听感并不是对自然声音的还原,所以我们可以随意调试参数。这里我们可以将音高调低从而带来所谓更“庞大”的声音。还可以添加不同音高的叠加层并设置他们的panning,这样可以让音效显得更“厚实”。
3.4 ReaComp效果器
对于压缩效果的使用,我们可以使用较高的压缩比。这样会将混响的动态范围调低从而使我们感觉音效离我们更近。
4 录音设置
在print_effect右键点击红色recording arm图标,选择“录制:输出”>“录制:输出(立体声)”。
在print_effect左键点击红色recording arm图标。点击录音后我们就可以渲染出文件。如果我们需要对大量素材做统一类型操作,那么我们还可以将这四个效果器组成一个效果链,方便今后的使用。
5 信息检索
当在调试效果器时,我们应当如何将这些效果器排列顺序呢? 或者换句话说,我们的顺序会对结果又很多影响么? 带着这个疑问我做了一些实验,首先我们可以通过简单的表达式来概括整个过程为一个函数。
函数:加入混响= r()加入门限即包络= g()加入音高调节=p()加入动态压缩=c()
通过下面的表格,我们来罗列出这个效果链中所有的排列
由于混响会混响必须在门限包络之前,我们可以将一半的排列去掉从而得出:
然后我们需要在pitch上分成+12半音,不变,-12半音来将这6种排列x3
然后我们要找到几个声音,每个都用这些排序的效果试一遍。
由于这个行为的劳动密集性,我就直接向大家汇报结果。
我将一个白噪的文件用这36中排序进行逐一渲染。(有兴趣的朋友可以在资源包里找到Reaper工程)使用自然语言叙述一下就是:
- 我对声音的总体效果在包络和音高上能感知出不同,但是如果这个音效配合干声使用的话,那么音高的感知会大于包络。
- pitch效果器装在第一个对声音影响最大,但是我觉得并不是我想象中的增加或减少12semitones就会让混响后的声音增高或降低8度。增加和降低的趋势可以感知出来,但并不是所谓的线性变化。
- compressor效果器不会对整体效果产生太多影响,但是会在pitch效果器降低音高时增加更多的所谓的假象声音。
- 渲染出来的声音可以大概分为两类:音高明显起伏类( prgc prcg pcrg cprg )以及音高保持类的其余的8种。
在进行描述的同时,我意识到了用我们的自然语言描述十分相似声音并不是很有效,而在今后的几个文章中我可能会写到很多关于底层音频特征的内容。所以在这里我使用了一个广受欢迎的python 库并生成若干个图像来形容音质。
Librosa 的网站 https://librosa.org/doc/latest/index.html
有兴趣的同学可以先玩起来!
下图是三种乐器渲染出来的门限混响的mfcc(梅尔频率刻度的反频谱系数)。
我们可以暂且把mfcc理解为一种即考虑到人体的心理声学又方便计算机理解的数学变换。第一行表示在拟定的若干个反频率频段(quefrency)中,每个频段的能量分布。
第二行是第一行的一阶导数,表示能量的变化。第三行是第一行的二阶导数,可以大致理解为变化的梯度变化。
下面我们来通过调试军鼓声音的效果器来渲染不同的门限混响
我们可以通过调试军鼓声音的效果器来渲染不同的门限混响
在这里,读者们可以尝试对这5个声音通过图像进行简单的描述。而我就不阐述我的理解。
总之,图像的意义是让我们更够直观的对信息进行检索,并从高抽象级别来对音质进行描述。但是绘成图像的数据才是真正的可以被用于信息检索的“原材料”。 而在未来的一篇文章中,我们会对这类数据进行整理,并产出一种基于统计学和多层感知器(multi-leveled perceptron)的分类逻辑。
-2- 制作音乐素材并在ADX2中制作交互逻辑
我使用Reaper制作了两套简单的音乐素材。
第一套是基于beat sync和 “根据选择器进行音轨过渡”功能之上的。第二套是“块”的功能之上的。
第一套适用于对节拍和风格实时变化需求高的系统,第二套适合对循环结构和乐句实时变化需求高的系统。
由于这两种系统的限制,他们实现的效果会有所不同.我制作的一套简单的beat sync系统,大家可以在这个基础上加减内容,本文主要介绍基于“块”的系统。
首先,我们对in the air tonight 这首歌曲简单的分析。
调式: 自然小调
Bpm:94.8
和声进行:1 i, VII,VI,VII, 2 i,VII,VI,i
在这个基于“块”的环境下,我的分轨分别是:
1鼓组+合成器
2军鼓的门限混响
3 原唱的干声
4 原唱的混响。
这样做的目的是游戏中的参数可以通过AISAC 来单独控制混响的音量,达到交互效果。
关于区域的设定,我将整首歌分成了intro,first_run(第一段主歌和副歌),chorus_tight(没有人声空白的8小节的副歌),chorus_tail(有人声空白的12小节的副歌),verse(16小节的主歌),outro。
在这个工程中,驱动门限混响的控制是AISAC控制器。
当制作好了素材后,我们将这些素材导入至ADX2中。我们需要:
1 左键点击TimeBase键并将小节节拍设置成4/4和 94.8
2 创建一个复音cue,将相对应的波形文件拖入其中
3 右键点击复音cue并创建块,按照小节数将块延展至合适长度
4 设计块的交替逻辑
选中块并打开属性编辑器
在属性编辑器“块”一栏,根据需求“组织块转换目标”设置。其中:
- “下一个块”是指当当前块播放完毕后前块右边的第一个块
- “无”是指每次块播放完毕程序都要对下一个块进行一次判定
- “块过渡目标”指以指定类型的方法过渡到指定类型的块
5 在所需音轨上增加AISAC控制器
在这里我在军鼓的混响上添加了AISAC,并将控制类型勾选成off从而使程序可以从ue4中调取。
6 生成二进制文件
-3- 制作80年代视频效果
由于图像处理方面并非笔者专业,因此这一部分仅供参考,欢迎大家指出问题。
个人认为,老旧照片其实是一个比较宽泛的概念,但总体来说,它的色彩特制是以暖色为主,同时辅以一些绿色调来打造一种温暖复古的效果。
比如我们随便找一张老旧照片打开看一下它的色彩构成:
老旧的街头相片
该相片的RGB直方图
众所周知,我们之所以能够看到这个世界,是因为有光的存在。光的三原色是红绿蓝,但这三种光叠加到一起后得到白色,其中任意两种原色相加得到另一种原色的补色,例如红色+绿色=黄色,互补于蓝色。
在该相片中,高光区域是以红、绿为主,蓝色较少,因此画面会更强烈的呈现出红色和绿色的混合色,也就是黄色。
如果我们想让这张照片显得更“黄”一些,那我们可以直接调整RGB曲线中的蓝色曲线,将其进一步压低。
因此,通常来讲,进行“做旧”处理时可以将暗部调整偏橙黄,高光区偏青蓝,阴影带一点点的绿色调,饱和度通常没有太多限制,根据喜好进行调整即可。
此外,调色时还可以适当调整对比度(多数情况下降低对比度)模拟出胶片的宽容度的感觉。
最后,还可以额外添加一些颗粒噪点,也可以更进一步的模拟胶片的质感
按照以上思路,我们可以对影片进行以下调色:
为了方便大家实验调色效果,我也将本视频的调色进行了Lut预设导出,您可在本文末进行分享资源的下载。该Lut可以在Premiere或其它类似视频编辑软件中直接导入该预设进行使用,具体使用方法本文不再赘述。
-4-sofdec压缩全景视频
我使用insta 360 oneX 和zoom h3 vr录入了一套音频和视频素材。
如果将视频直接丢到UE4中进行播放,那么可能会遇到如下两个比较让人头疼的问题:
- ambisonics音频导入的b format编码操作较为繁琐
- 切换视频材质时内存消耗巨大且容易卡顿
因此,我决定通过sofdec2 encoder wizzard进行视频压缩,可以非常简单快速的解决以上两个问题。
选中目标视频,并选择sofdec prime。在若干步后点击导出。
下一步,我们需要导入ambisonics音频。我使用的录音设备是可以将a format 编码成 b format的zoom h3 vr。但是如果你的设备没有这种功能,你可以使用Reaper的 ATK来进行编码。
建议大家可以在录制的时候拍一个照片来记录麦克风的和视频的朝向,并查询设备厂商的产品手册来确认麦克风的front朝向。当我们把视频导入ue4引擎中后,声音actor的红色箭头就是麦克风的front。我们可以通过翻转视频来对准朝向
-5- UE4工程制作
在UE4中,我们需要:
1 制作投影布
1.1将一个球体拖入场景,并设置其碰撞。要使这个球体是中空的效果
1.2创建两个视频材质,一个是带80年代滤镜效果,一个是原视频。并在视频材质属性中选中two sided。
1.3将ambisonic文件拖入,新建并打开一个sound attenuation 蓝图,在编辑器中选中spatial sound,并选择下混方式。(建议大家选择binural)
1.4转动ambisonic actor的红色箭头来对齐真实录制中录音设备的front的方向。
2 设置玩家视角
2.1 移除物理模拟,固定位置
2.2 在属性编辑器中设置使用pawn 的 pitch, yaw,roll。
3 设置关卡
4 设置触发逻辑
在Add atom component 属性编辑器中加入cue。在 set aisac by name中设置aisac的控制名,这个名称是ADX中第5步选项栏里选中的控制名,而不是我们自命名的名称。将control value根据判定逻辑设置成0至1。
尾声
本次的分享就到此结束了。依照惯例,我也将本项目的ADX2工程、鼓素材、全景素材以及调色预制分享出来,希望可以为大家带来一些启发。
您可以在此进行以上样例工程以及各类素材的下载:
链接:https://pan.baidu.com/s/1J6rNUAJMbzux3BBfHw413A
提取码:ADX2
您也可以加入我们的官方QQ交流群,与我进一步的交流:
*版权声明:
部分图片及音频来源于网络,若有侵权请联系删除
本文来自CRIWARE,未经授权不得转载
如有需要请联系info@criware.cn