2022 年 5 月号《Midifan 月刊》上线,在线阅读

九条 FabFilter(肥波)Pro-Q 3 使用小贴士

Steinberg 发布 Nuendo 12:欢迎来到「对白之家」

Antelope Audio 羚羊音频发布 Discrete 8 Pro Synergy Core:内置超级效果引擎的音频接口

Tascam Portacapture X8 便携录音机——新手也友好的专业体验

体验 Kontakt 4 带来的改革

Jemuillot 添加于 2009-10-25 ·

分享到微信

共有 39 条评论

一直有王道采样器之称的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有更深入的了解。

文章出处 http://www.midifan.com/

转载文章请注明出自 Midifan.com

共有 39 条评论

  • 2009-10-28 anonymous

    回18楼。midifan个顶个都是大师。都觉得自己最牛逼哈哈。

  • 2009-10-28 anonymous

    “写的不好就得骂”,这是什么做人态度呢?同意15楼的。觉得自己有本事,觉得文章不好,那就提意见,做补充,做些技术上的讨论。一看文章写的不好,觉得作者水平还远不如自己,就气得光知道骂人,算什么本事呢?我看到枪文和小儿科根本不回复,但要是看到技术上有明显错误的一般都直接回复指出。为什么非得骂人呢?看着这些骂人帖和大觉的留言,突然觉得,究竟是谁在这里“神气十足”的觉得自己是大师看不起别人呢?

  • 2009-10-28 anonymous
    我也曾抨击过张火,写得不好就得骂!怎么啦?16搂的你可真够逗的!说不定过两天人家张火又会神气十足的在论坛里装大师呢.9搂的你也想学朝廷限制言论自由?
  • 2009-10-27 anonymous
    我是2搂13搂的,我很惭愧,我现在觉得自己真是一条疯狗!
  • 2009-10-27 万兔

    没有人生下来就会电脑音乐,所有人都是从不会学起的,MIDIFAN是电脑音乐的百科全书,不同的读者从中吸取各自的营养,这里是大家学习与交流的乐园,不是一比高下的江湖擂台!

  • 2009-10-27 大觉者

    哈哈刚看到 谢谢还有人给我说好话啊。没关系俺早习惯了。

    我说过多次了,我就是一个地方上的业余爱好者,电脑音乐方面我连小学生都不算,专业水平很差,仅仅是因为对电脑音乐的喜爱,才总是主动写一些东西,而且都是写给菜鸟级别的读者的。所谓评测也都是站在一个业余爱好者试用的身份角度去写的,水平很烂,总是被高手老师们笑话和讽刺,很是惭愧。但只要我做的一切能给初学的朋友们哪怕一点帮助,我就问心无愧了。大觉者只是一个小菜鸟,永远只是给菜鸟朋友们做义务的辅导员。呵呵。请高手老师们多多批评指点!同时我也希望多看到像这篇文章一样的高深技术文章,也希望老师们多给midifan投稿,让我们midifan有更多更加专业的文章供大家学习。

  • 2009-10-27 anonymous
    今天刚用上Kontakt 4.01,按楼主说的反复实验终于弄明白Kontakt的新功能,楼主的文章我看了三遍才全看明白,真深奥啊!不过我还是喜欢这种看了能受益的技术贴,MIDIFAN应该多来点含金量高有深度的文章。 我是2楼的,我不是要和大觉者过不去,咱就是这暴脾气,看到水平不行却爱装B的人就想抽丫。大觉者要是也能写出让我受教的测评,我也会夸他的,可惜他没这个能耐。 水平低就甭装B,爱装B就一定会有人抽你丫挺!大觉者该反省一下了。
  • 2009-10-27 Tureleon
    5楼,音乐专业的人跟电脑音乐专业的人还是有区别的
  • 2009-10-27 anonymous
    10楼意思是软件开发者多此一举,用过cakewalk的应该都知道cal脚本给制作带来多少方便.演奏的时候是通过脚本判断方便还是去按一下八度键方便呢?又没人要你现场写代码玩live coding.不过这些工具确实会拉开音乐制作人的差距,细分制作人的分工,没什么好愤慨的.
  • 2009-10-27 anonymous

    “如果我每次都换到Solo Flute这件乐器的时候,还需要按一下MIDI键盘的八度调节按钮,降低一个八度,然后才能控制奏法切换,一点都不方便,而且如果真的在演奏中从彼得管弦的Violins切换到黄金的Solo Flute,真的是忙到团团转。但由于Kontakt 4提供了全局脚本,这个就变成很容易的事情了。只要写一个脚本,就可以完成这种任务。”

    不知道究竟是按一下MIDI键盘的降八度按钮方便,还是去写那么一堆代码方便?

  • 2009-10-27 anonymous

    同意4楼的说法。midifan有着不同水平的网友,需要有大学教授,也需要育红班,这没什么不对的。希望midifan站长能够直接将那些和技术毫无关系的恶意发泄留言直接看见了就删贴,不要助长这种不良风气,故意给那些没素质的人创造一个留言发泄的场所。我们希望看到一个以谈论技术的midifan。很纳闷了,康泰克的文章没一个人讨论康泰克,都是些无聊的留言。

  • 2009-10-27 anonymous
    2楼的如果你觉得大觉者的水平实在太差没有技术含量,可以学我一看见作者是大觉者就不看走人,不要留言攻击他,因为咱搞音乐的不能像疯狗一样乱咬人!
  • 2009-10-26 anonymous
    杂种!他妈的文章在哪里!我操,尽他妈搞些猥琐事,这就是MIDIFAN!
  • 2009-10-26 anonymous
    4楼的是大觉者本人,王婆卖瓜自卖自夸
  • 2009-10-26 anonymous
    和看天书一样……这和音乐还有什么关系吗?我很想知道除了搞编程的,音乐专业的有几个人能看懂这些?
  • 2009-10-26 anonymous
    无论是高级的文章,还是初级的文章,都是作者无私劳动的结果,都是值得尊敬的。大学的老师值得尊敬,小学的老师同样值得尊敬。我是看大觉者的文章学上的MIDI,至今已经好几年了。虽然我也发现大觉者从来都是喜欢写初级的东西,但他付出的劳动永远都值得我尊敬,因为他的教程给过我帮助。2楼的你算什么狗东西?你水平很高那你也来写些东西啊?你这种小人也配玩音乐?快滚出MIDIFAn去 ,这里只有玩音乐的朋友们,没有你这种杂碎
  • 2009-10-26 anonymous

    2楼你自己是什么档次?实话根你说这篇文章我根本看不大懂,我知道它专业,但的确是看不懂。我很喜欢看大觉者写的教程,通俗易懂。midifan应该有这样的技术性文章,也同样应该有普及性质的东西,适合不同层次的读者。

  • 2009-10-26 anonymous
    你真厉害!高手啊!这回midifan的测评文章终于能让我学到知识了,以后midifan应该多找象Jemuillot这样的高人来写测评,千万别再找像大觉者那种半桶水的人写测评,以免降低midifan的档次。
  • 2009-10-26 ken_20
    评论内容:太好了!!!绝对支持!!!写得很详细,不过真的需要懂得编程的人才好学啊!看上去感觉有点像C语言,不过又有不少数据库常用语言,有没有详细介绍他编程语句使用的文章?最好就有啦,想学习很旧了!非常期待,期待Jemuillot出更多好文章!