用户登录 | 注册新会员 | 您忘记密码了吗?
联系电话:
010-59396848
北京 乐家轩 录音棚 方大同 御用录音棚 Michael Wagener 录音棚 北京 飞凡耳II 录音棚 北京 CCTV 录音棚
体验 Kontakt 4 带来的改革
YCS / 2011-03-14
[] [] []

一直有王道采样器之称的Kontakt升级到了4.01,根据软件版本的要求,主版本号的升级意味着重大的升级。那么,这个本身已处于王道地位的Kontakt究竟有了那些改进,对我们制作音乐和音色有了怎样的好处呢?

在启动Kontakt 4后,首先发现在宽宽的界面上多了一个没见过的按钮,如图1。


 图1:全局脚本按钮,点击放大

这是全局脚本按钮,点击它后,Kontakt 4的主窗口多了一个如图2样子的窗口。
 


 图2:全局脚本窗口

这个跟我们以前在乐器里看到的脚本窗口是一样的,但他的控制范围提升到了全局。也就是说,处于这里的脚本,能控制所有加载的乐器。

那么,这个具体有什么实用的地方呢?

在以前我用Kontakt 3的时候,喜欢加载很多带奏法切换的乐器,用MIDI键盘弹着玩。由于乐器来自各个厂家,他们的想法不同,因此,奏法切换的思路也有点不同。

比如彼得管弦的Violins用C1~C2来切换奏法,对于61键的MIDI键盘来说,正好处于最左边的八度上,很方便。但黄金管弦的Solo Flute的奏法切换就搞到了C0~B0。
如果我每次都换到Solo Flute这件乐器的时候,还需要按一下MIDI键盘的八度调节按钮,降低一个八度,然后才能控制奏法切换,一点都不方便,而且如果真的在演奏中从彼得管弦的Violins切换到黄金的Solo Flute,真的是忙到团团转。

但由于Kontakt 4提供了全局脚本,这个就变成很容易的事情了。只要写一个脚本,就可以完成这种任务。

首先看看脚本的思路:

  • 首先在Kontakt中先后加载Violins和Solo Flute,根据默认,这两个乐器分别使用通道1和通道2来控制。本例中,通道1是Violins,通道2是Solo Flute。
  • 因此,首先第一个条件就是判断通道。由于Violins的奏法切换在预期范围内,因此,可以简化成??当通道为2的时候才做些特殊的处理。
  • 由于Solo Flute的奏法切换在C1以下的八度,同时考虑到Flute的音符都在B2以上,因此,可以考虑把C2以下的音符,都向下移动一个八度,即弹C2转换为C1,D2转换为D1。这样,MIDI键盘方面就不用专门去按那个八度键了。

有了思路以后,就来看实现,根据以往的一贯做法。我先给出代码,然后简单讲解一下。

在全局脚本的5个空当中随便选一个,根据以前介绍的方法,把如下代码复制到脚本里,点击APPY后,所有通向2号通道的C2以下的音符都会降低八度。

代码

on init

declare $new_note

end on

on midi_in

if (1 = $MIDI_CHANNEL mod 16)

{NOTE ON}
if ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 > 0 and $MIDI_BYTE_1 < 48)
ignore_midi
$new_note := $MIDI_BYTE_1 - 12
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_ON,$new_note,$MIDI_BYTE_2)
end if

{NOTE OFF}
if (($MIDI_COMMAND = $MIDI_COMMAND_NOTE_OFF or ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 = 0) ) and $MIDI_BYTE_1 < 48)
ignore_midi
$new_note := $MIDI_BYTE_1 - 12
set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_OFF,$new_note,$MIDI_BYTE_2)
end if

end if

end on

现在,在MIDI键盘上演奏Solo Flute的时候,可以直接用C1~B1来做奏法切换了。

如果对脚本没兴趣的,可以跳过如下部分不看。笔者建议大家看看,因为确实是很方便的东西。就算你不懂如何写整个代码,但用现成的代码修改还是可以的。

脚本中,首先看到Kontakt 4新增了一个Callback(回调)函数on midi_in (当有MIDI输入)。

以前的版本中,把MIDI IN分割成了on note, on controller等条件,脚本无法访问MIDI IN的所有信息,特别是通道信息。因此以前所有音色都没有办法根据通道做脚本处理。本次Kontakt 4把MIDI IN的所有信息让KSP脚本调用,无疑是一大改革。这也促成了我们本例想要完成的任务。

在接下来的一句:if (1 = $MIDI_CHANNEL mod 16)

是检测输入是否为通道2。

笔者没有眼花,就是通道2。虽然在上述语句中看不到2,但它就是这个意思。
$MIDI_CHANNEL 是Kontakt 4新增的预定义变量,它表示了MIDI IN所属的通道。它由两部分组成?? PORT(端口号) 和 CHANNEL通道号。

如果你对Port完全没有印象,可以按照图3的方法看到Kontakt的MIDI IN配置对话框。


 图3:Kontakt的MIDI IN配置,点击放大

也就是说,Kontakt的$MIDI_CHANNEL其实可以表示信息来自Port A/B/C/D的 1~16个通道。如果你有4个MIDI键盘,那么A~D的端口都可以使用了。

那么一个MIDI_CHANNEL如何记录两个数值呢?如果你是NI公司的人,要怎么办呢?其实很容易就想到了:

  • 1-16表示端口A的16个通道。
  • 17-32表示端口B的16个通道。
  • 依此类推。

恩,但如果考虑到计算机有个运算符,叫“取余数(mod)”。那么,一个数对16取余数后的结果正好是0~15,共计16个数值,正好可以标示16个通道。即:0 = 通道1, 1 = 通道2,…… 15 = 通道16。

所以我说没有眼花。

知道了这些背景知识后,再回头看那个语句,是不是完全明白了呢!

if (1 = $MIDI_CHANNEL mod 16)

直译就是“如果 (1 = $MIDI_CHANNEL 对 16 取余数)”,那么他的作用就是仅当MIDI信息属于通道2时才做特殊事情。

好了,那么下面看看所谓的特殊事情是什么:

if ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 > 0 and $MIDI_BYTE_1 < 48)

像$MIDI_CHANNEL一样,$MIDI_COMMAND表示了MIDI信息的指令种类,包括$MIDI_COMMAND_NOTE_ON(MIDI音符弹下)等。

而根据$MIDI_COMMAND的不同,$MIDI_BYTE_1和$MIDI_BYTE_2又有不同的含义。其实跟以前GM的规范是一样的。大家可以自行复习一下。

当$MIDI_COMMAND为MIDI音符弹下时,$MIDI_BYTE_1表示弹下的音符,而$MIDI_BYTE_2表示力度。

因此,从这个条件上可以看出,仅当弹下的音符在C2以下时才做具体的事情。跟我们的思路一致。

接下来的ignore_midi是不是跟我们以前见过的ignore_event很想捏?这个就是对应on midi_in的忽略指令。表示不让满足条件的音符生效,即不让演奏C2以下的音符。

接下来的根据之前的知识已经可以完全读懂:

$new_note := $MIDI_BYTE_1 ? 12

让变量$new_note为音符减去12,即降八度。

接下来的一句其实也跟以前的play_note和set_controller如出一辙:

set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_ON,$new_note,$MIDI_BYTE_2)

这个相当于创建了一个全新的MIDI信息,分别指定通道、MIDI指令类型,音符和力度。

可以看到,音符已经换成了降八度的那个变量了。因此,这就是整个根据特定条件降八度的方案。剩下的部分可以自己琢磨一下了。

如果再增加别的音色,遇到不同音域,也可以在这个代码的基础上修改出来。比如可能希望低音大提琴用高八度的位置演奏等等。

有人说,可以通过修改音色的Group Start来完成,但如果你真的那样做的话,会发现,还是用脚本速度快一些,因为这个是一劳永逸的。对于别的音色,只要复制,修改一下,就完成了,不需要手动修改一个个音色的Group Start。电脑最在行的就是可以帮助你完成重复性工作。

其实全局KSP还有更多其他好处,比如控制器重映射。特别像Chris Hein Guitar这样的音色,他很多控制器不在常用的范围内,就算你的MIDI键盘可以重定义所有推子和旋钮的控制器号,但也无法以不变应万变的。所以,全局脚本就可以帮你完成这个任务。

要特别注意的是,像Chris Hein Guitar这样的音色的控制器定义是在脚本里指定的,无法用Learn的形式重定义,而且多数情况下重定义会导致音色不正常。因为他的脚本多数都是利用这个控制器来做奏法自动衔接的。

这是我目前从现场演奏这个范畴考虑到的全局脚本的作用,相信在其他领域也能发挥重要作用。

而Kontakt 4另一个重大的改进是新增了AET Filter(Authentic Expression Technology,真实表情技术)。

在传统的音色制作中,常常用力度分层来采样。但在分层过度的时候,总会有一点无法衔接的感觉。然后给人一种不自然的感觉。而AET Filter则根据音色的采样,分析采样的频谱来得到采样的频率响应等其他声学特性,然后在这些特性上平滑过渡,因此。从小力度到大力度的过渡就比简单的直接读取采样要真实得多。

我们可以马上来做一个实验,看看如何使用AET Filter。

加载一个乐器,比如弦乐,最好是有力度分层的,比如mp、f、mf之类的,如果找不到就找钢琴吧,一般钢琴都有力度分层的。

全选采样,然后在右键菜单中点击Auto add AET velocity morph(自动添加AET力度融合),如图4。


 图4:自动添加AET力度融合

经过一轮采样分析后,现在再演奏看看,注意力度之间的变化,是不是感觉比原来的过渡性好了很多,没有骤然突变的感觉了。

这个跟采样的Cross fade(渐变)是不一样的,那个仅仅是在调节两个采样间音量的混合比例,而AET是在频谱的层次进行混合。当然比小学生都会计算的音量混合好多了。

如果你展开GROUP Insert FX,就会看到刚才的操作实际上做了什么事情,如图5。


 图5:自动添加的AET滤波器

很美丽吧,事实上AET就是一个音频效果器,根据选定的采样做成融合信息,最后用力度来调节“融合度Morph”,就达到了最终的效果。

事实上,不仅是力度的融合,就连各种奏法甚至不同的乐器之间的融合,也可以完成。

我们马上来做一个合唱“啊啊啊”和合唱“哦哦哦”的频谱级融合看看。

首先加载这两种音色到Kontakt 4,比如我用彼得管弦里头的,如图6,大家如果没有可以找个GM SF2或者9DVD的那个更高级的来玩玩。


 图6:加载两种音色准备做平滑过渡

根据图7的步骤复制第二件乐器“啊”的分组。


  图7:复制“啊”的采样组

然后根据图8的步骤把内容复制到“哦”中。


  图8:把“啊”复制到“哦”中

首先关闭“Edit All Groups”。然后展开Mapping Editor,并激活“Selected Groups Only”,如图9。


  图9:仅编辑选定的采样

选定oooooh的所有采样,然后右键选择Create AET morph layer,如图10。


  图10:创建AET融合层

在弹出的对话框中输入名字,比如“ooh”,然后确定,那些参数的具体含义大家可以参考Kontakt 4的手册,一般来说,不用怎么改动。

然后用同样方法创建Aah的,命名为aah。现在把Aah的音量调到最小,如图11,因为Aah的特性已经被采集,我们接下来要做的是在Ooh的分组中增加AET Filter。


 图11:把Aah分组的音量调到最小

切换到ooh,然后在Group InsertFX中手动添加AET Filter,如图12。


  图12:手动添加AET Filter

点击Edit Morph Map,如图13。


  图13:点击“编辑过渡映射”

在弹出对话框的编辑框内输入ooh --> aah,表示希望是ooh过渡到aah,如图14。


  图14:输入过渡映射的名字

点击做上角的Add按钮,然后按照图15的步骤,把右边的ooh和aah依次通过“?”按钮移动到左边,并确认第5步选择的是articulation morph / multiple layers(技法过渡/复合层)。


  图15:创建过渡

在<no morph map>处点击,并从下拉菜单中选择刚才建立的映射,如图16。


  图16:选择映射

然后在Morph旋钮上右键,选择用MIDI控制器来实时调节过渡,如图17。


 图17:选择用MIDI控制器来调制过渡

他默认用1号控制器,如果想换成别的可以自行修改。
现在,弹下一个音符,然后调节1号控制器,是不是发现效果比单纯过渡的好多了!

总体来说,Kontakt 4在采样器的道路上发展得越来越成熟了,可以说,采样器也能玩出花来。希望通过本文,大家能对Kontakt 4有更深入的了解。

文章出自:www.midifan.com

用户评论

  • 暂时还没有任何用户评论
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha

相关商品

浏览历史

Copyright © 2005-2024 北京乐城仕国际科技有限公司 版权所有,并保留所有权利。
Tel: 010-59396848 熊经理:13911389491     E-mail: info@ycsound.com
QQ 3367164833 QQ 1702700670 QQ 3490029085
北京市朝阳区朝阳北路11号楼6层1单元603