我们一直在致力开发出业界最顶尖水准音频处理功能,而经过很长一段时间的努力,在Unity5.0中,音频处理功能将成为非常重点的一个功能。

要达成这个目标,我们首先重写了很多Unity中音频相关得处理流程以及资源管理部分。我们需要确保对编码器进行稳妥的选择,以及确保我们提供一个能够让开发者在游戏中使用高品质音频的框架。在后续的文章中我们会提供更多的详细信息,但是现在我们只想告诉大家我们在Unity5.0中的第一个重要的音频特性,那就是:混音器(AudioMixer)

第一步

除了为未来Unity中的音频开发创造坚实基础之外,我们还想为大家提供一个全新的功能,作为我们实现“让你做出绝赞音频”的第一份大礼,展示我们的决心,愿意竭尽所能为您带来音频方面的享受。

在接下来的发行周期中,音频系统中还有很多地方需要不断改进。其中一些非常不起眼,但却解决Unity中至今悬而未决的问题,可以将这些看作是修复现有功能集;另外一些则会相对庞大,比如让用户做出绝赞交互音效的功能、浸入式音乐系统和高细节精确控制音频音景混合。

为什么选择AudioMixer?

为什么我们选择AudioMixer作为Audio 5.0首先推出的重大功能?答案非常简单:在以前的Unity版本中,不可能实现音频局部混合。声音可以在AudioSource中进行播放,并且可以将音效效果作为组件来添加,游戏中的所有声音都会混合在AudioListener中,AudioListener还可以在整个音景中添加效果。

我们决定用AudioMixer来解决这个问题,与此同时,我们觉得可以将其更进一步,集成了许多你可以在已有数字音频工作站应用程序中找到的功能。

声音的分类

<ignore_js_op> 

许多音响师都知道,能够将声音集合合并成不同分类,并在某一处对一个类别中的所有声音进行音量控制是超级实用的功能。将音量和效果参数与游戏的逻辑连接起来,就相当于对游戏中的整个音景区域有了有效的控制。

对整个混合音景的控制真的超级重要,是控制音频混缩的情绪和身临其境之感的绝佳方式。好的混音和音乐能带领玩家在游戏中经历各种情绪的变化,营造出仅凭图形效果根本无法产生的气氛。

用Unity进行混音

这正是AudioMixer的目的所在,它是一种资源,可以被用户整合到场景之中,控制游戏里的所有音频混缩。场景中播放的所有声音都会被放入一个或多个AudioMixer中,之后再进行分类,并将各种修改和效果应用到混缩音频中。

<ignore_js_op>

每个AudioMixer都有类定义的层次结构,这在AudioMixer中被称为AudioGroup。您也可以在音乐或电影界人士较为熟悉的传统调音台布局中查看这些AudioGroup。

 
 
 
   

130

主题

366

帖子

3600

贡献

管理员

积分
3600
沙发

 
  楼主| 发表于 2014-10-28 05:01:28 | 只看该作者
DSP

<ignore_js_op>

当然,AudioMixer并不仅仅只是设置混缩层次而已。正如大家预期的那样,每一个AudioGroup都可以包含各种不同的DSP音频效果,这些效果以信号形式按顺序叠加到音频上。

现在我们有一些进展了!你不仅可以创建自定义传送方案和混合层次结构,还可以将各种DSP的好效果放在信号链上的任何地方,为你的音景提供各种效果选项。你甚至还可以添加蒙版路径,只允许其对一部分信号进行处理。

但如果你想在Unity的内置效果里就获得更多的DSP控制,怎么办?这在以前完全由OnAudioFilterRead脚本回调来处理,它可以让你直接在脚本中处理音频采样。

这对于处理轻量级效果或将一时的奇思妙想做成原型来说是非常棒的,但有时,你希望能够写出原生编译的效果,以达到最佳性能,让你能够写出更重量级的想法,比如自定义采样混响或多波段均衡器。

<ignore_js_op>

Unity现在还支持自定义DSP插件效果,使用户能够为游戏写出自己的原生DSP,或许还可以将他们的绝佳音效创意放到资源商店中供他人使用。这样便开辟了无限可能,可以编写自己的合成器引擎,甚至还能与Pure Data等其他音频应用对接。自定义DSP插件还可以请求旁链支持,可以从混合音频中的任何地方得到旁链数据!简直棒极了!

AudioGroup中效果堆栈可以实现的一个很酷的事情便是,你可以在堆栈中的任何地方应用组衰减。现在甚还至可以增强信号,因为我们允许高达+20分贝的音量水平。检测器中甚至还集成有声量计来告诉你信号在衰减点处经历了怎样的变化。

<ignore_js_op>

当与非线性DSP、发送/接收和新的闪避插入相结合时(将在后文中做出解释),这将成为一种通过混音控制音频信号的超强方法。

 
 
 
 
   

130

主题

366

帖子

3600

贡献

管理员

积分
3600
板凳

 
  楼主| 发表于 2014-10-28 05:04:56 | 只看该作者
情绪转变

刚才谈及了凭借音景的混音来控制游戏的情绪。这可以通过引入或引出新的音乐主干或环境声效来实现。实现这点的另一种常见方法是转变混音本身的状态。更改混音部分的音量和过渡至不同的效果参数状态是按照自己的意图来引导玩家情绪的一种有效方法。

所有AudioMixers都有定义快照的能力。快照会捕获AudioMixer内所有参数的状态。效果湿度水平和AudioGroup音高水平等内容均可被捕获并在它们之间进行转换。

<ignore_js_op>

想象一下,从地图上的一片开放领域走入一个险恶的洞穴,利用混音过渡来强调更微妙的氛围,加入乐团的不同乐器,改变配乐的混响特性。想象一下无需编写任何一行脚本代码便可设置此功能的感觉。

分支信号

而当结合发送、接收和闪避时,快照的能力将尤为加强。

发送

<ignore_js_op>

除了可在Unity中插入传统的DSP效果之外,您也可以在混音的任何位置插入“发送”。“发送”可在其插入的任何位置有效地分支音频信号,并且在发送内,您可以选择希望分支的信号量。

事情现在变得更加有趣了!鉴于您分支的信号水平是快照系统的一部分,您可以把信号流的变化与快照过渡相结合。由此,潜在的设置可能性便开始如滚雪球般增长。

但是被分支的信号去了哪里呢?目前,Unity内有两个可供发送选择的目标,即接收和音量闪避。

接收
   接收是相当简单的处理单元。它们是如同任何其他效果一样,可以插入其中,简单地把所有从发送瞄准它们的分支声音混合在一起,将其传递给AudioGroup中的下一种效果。

接收可被置于一组效果和AudioGroup衰减点的任意位置,这将使得分支信号应被引入混音时获得巨大的灵活性。

音量闪避
发送也可针对音量闪避插入单元。就如同接收一样,这些单元可与其他DSP效果一同被置于混音之内。

<ignore_js_op>

当发送瞄准音量闪避插入时,它的作用就像侧链压缩器设置,这意味着您可以从混音的任何位置做侧链,并从其任何其他位置应用音量闪避!
这对于外行而言意味着什么呢?想象一下,您在为FPS游戏混音,您希望玩家突然听到一阵枪声和爆炸声。好吧,但是如果当你走向战场上的NPC时,你需要听到他们所说的话又该怎么办呢?音量闪避允许您动态地调整混音整个部分的音量(在此情况下是所有的军械声),使其低于其他部分的音量(NPC说话声)。您只需从包含所有NPC对话的AudioGroup发送到军械AudioGroup上的音量闪避单位即可。

您甚至可以将侧链压缩动态地应用于音乐设置,让其余的乐器压缩掉低音轨道。
最棒的一点是您无需任何一行代码便可以在编辑器中设置这一切内容!

结束语

尽管在本文中我仅仅介绍了AudioMixer所提供可能性的皮毛,但是我希望它足以激发人们对Unity 5.0中音频可能性的兴趣。
我们真心希望通过Unity 5.0及后续产品来推动游戏音效的未来,为您提供制作震撼音效所需的工具套件! 
让我们知道您的想法!

音频团队

unity5x --------Music Mixer参数详解的更多相关文章

  1. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  2. iptables参数详解

    iptables参数详解 搬运工:尹正杰 注:此片文章来源于linux社区. Iptalbes 是用来设置.维护和检查Linux内核的IP包过滤规则的. 可以定义不同的表,每个表都包含几个内部的链,也 ...

  3. chattr的常用参数详解

    chattr的常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,有的运维工程师不得不和开发和测试打交道,在我们公司最常见的就是部署接口.每天每个人部署的 ...

  4. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  5. $.ajax()方法所有参数详解;$.get(),$.post(),$.getJSON(),$.ajax()详解

    [一]$.ajax()所有参数详解 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注 ...

  6. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  7. 【转】jqGrid 各种参数 详解

      [原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...

  8. HTML滚动字幕代码参数详解及Js间隔滚动代码

    html文字滚动代码 <marquee style="WIDTH: 388px; HEIGHT: 200px" scrollamount="2" dire ...

  9. mysql5.6主从参数详解

    mysql5.6的主从相当的不错,增加了不少参数,提升了主从同步的安全和效率,以下是mysql5.6主从参数详解. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

随机推荐

  1. [Windows Azure] Getting Started with Windows Azure SQL Data Sync

    Getting Started with Windows Azure SQL Data Sync In this tutorial, you learn the fundamentals of Win ...

  2. Python Redis pipeline操作和Redis乐观锁保持数据一致性

    Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互. redis 乐观锁:也可理解为版本号比较机制,主要是说在读取数据逇时候同时读取其版本 ...

  3. 【Cmd】那些年,我们迷恋的cmd命令(二)

    那些年,我们迷恋的命令(一) 那些年,我们迷恋的命令(二) Linux系统下基本命令 Linux系统下基本命令: 要区分大小写 uname 显示版本信息(同win2K的 ver) dir 显示当前目录 ...

  4. 使用instantclient_11_2和pl/sql Developer连接oracle远程数据库

    https://blog.csdn.net/itmyhome1990/article/details/8796781 ***************************************** ...

  5. LeetCode: Jump Game II 解题报告

    Jump Game II Given an array of non-negative integers, you are initially positioned at the first inde ...

  6. 应对新型“蠕虫”式比特币勒索软件“wannacry”的紧急措施

     1.防火墙屏蔽445端口 命令行操作: 以管理员打开命令行执行以下命令 netsh firewall set opmode enable netsh advfirewall firewall add ...

  7. Redhat6.5安装DB2 Express-C版本

    Linux Redhat6.5安装DB2 Express-C版本: 创建相关用户和组 创建用户组: groupdel db2iadm1 groupadd -g 999 db2iadm1 groupad ...

  8. Apache重写RewriteCond

    RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始.基础的功能,为了方 ...

  9. 6. 支持向量机(SVM)核函数

    1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...

  10. [转]mysql写注释的几种方法

    原文地址:https://www.cnblogs.com/JiangLe/p/6897403.html MySQL的注释风格总的来说有三种.它们分别是 1.单行注释可以用"#" s ...