运用 M4L 使 midi control 信息直接录制为 Automation
作者:Andre Chen
在MidiFan月刊135期中,我们曾实现用单独的Max for live device 模拟一个midi控制器发出所需control的midi信息,以便在轨道中画出所需的midi信息,而不是在midi clip的子页面Envelops中查看(繁琐且不直观)。(如图1(Envelops面板))(如图2(Automation))
1
2
但是完成这样的绘制只能由我们手动完成,真正输入的各种midi信息则无法实时录制。限于当时的篇幅,说明地不够完善,所以本期当作2.0版本继续拓宽——使原生输入的midi信息直接记录在Automation中,并阻止其记录在envelopes面板的midi信息生效。
基本思路
搬运midi信息是我们任务的核心,所以了解Ableton中的midi信息流顺序是至关重要的,这决定了我们从哪一部份入手去处理midi信息流。首先Ableotn Live录制midi信息时,会接收所有的midi信息,我们无法直接切入。所以录制好的midi clip肯定是带有原生的midi信息。其次在播放时,midi信息从midi clip中读取并发送到轨道中,在发送到乐器之前我们能够对midi信息进行加工,也就是midi Effects工作的地方。所以在这个地方就可以拦截下储存在clip里的midi control信息。控制方面,读取midi信息转换为普通字符,通过LOM远程控制选中轨道的Macro旋钮。最后把所需要控制的参数map到Macro上即可
拦截 midi control 信息
我们需要截取的只是midi control信息,所以其他的音符信息,midi程序等等信息都应该原封不动地继续传送出去。所以第一步非常简单,利用Max中的midiparse object解构midi信息,midiformat object 重组midi信息。在两者之间取消midi control的连线(左数第三个端口),这样就相当于过滤了该信息。(如图3)
保存后会发现所有的音符,力度,触后等等数据都完整地输入到乐器,但midi控制器却无法生效。
接收midi control信息并发送
我们需要一个单独midi轨来专门接收midi control信息。为了易于管理,选择新建空白midi轨,并移动到第一轨。同时将轨道i/o设置为In模式,这样无论现在arm的是哪一轨,第一轨始终能接收到midi信息(如图4)
同样还是利用midiparse解构输入的midi信息,但这回抛弃其他信息,只把第三端口,也就是midi control信息提取出来(如图5)。
接下来对信息的加工分为以下步骤:
- 过滤Ableton live停止播放时发送的全局停止信息(如图6)
- 分解信息。将control channel发送到gate左端,选择gate的发送端口。将control 具体数值发送到gatet右端,使其从指定端口发出。*右侧pipe使信息延迟1ms发送,保证gate能先指定发送端口,再发送信息。(如图7)
- 接下来的任务交给LOM——Live Object Model。大致流程如图(如图8)
- 橘红色信息块发送了【选中轨道的第一个device的第8号控制器】信息,其上方的两个元件用来实时刷新你选择的轨道。由live.path编译之后发送给live.object。这时候就能把接受到的midi信息发送到live.object左端,设定第8号控制器的数值。
- 以此类推,复制图8中除gate以外的元件,选择需要的gate出口(gate端口=control channel),连接到set value $1中,同时更改橘红色信息块的最后一个数值(1-8)即可。
- 现在指定好的midi control信息可以自由控制选中轨道第一个device的前8个参数了。
接收控制信息重新转换为midi control信息
仍旧打开一开始建立的midi过滤器,新建8个max for live object,并连接到ctlout中,把数值变成midi control信息发送(如图9)
总结&注意事项
通过以上步骤,我们实际上把midi信息变成live内部的控制信息,去控制所需轨道的具体参数,录制的时候录制的是具体参数的变化,和其他的参数一样。因此我们能够直接在automation界面看到我们的midi control信息(如图10)
同时midi clip当中的原生midi control信息依然存在,所以midi文件可以导入到其他宿主而不丢失任何信息。
实际上,本文自定义了一个接收器是为了方便Kontakt的使用。在使用其他device的时候,是能直接控制Marco的(如图11)
虽然市面上很多的midi控制器能与ableton live连通,但都依靠midi remote scripts,我们无法自定义。比如midi键盘上的推子只能控制mixer而不能自定义为其他。通过max for live,我们就能自定义midi 控制器所控制的参数,提供了很多的自由。
Midi发送器下载: https://pan.baidu.com/s/1qYPvmfM 密码: ir48
Midi接收器下载: https://pan.baidu.com/s/1eSxpnXK 密码: 6vv2
可下载 Midifan for iOS 应用在手机或平板上阅读(直接在App Store里搜索Midifan即可找到,或扫描下面的二维码直接下载),在 iPad 或 iPhone 上下载并阅读。