Ableton Live使用自定义脚本编写Midi控制器映射
› VFX大学 › Logic,Ableton Live电影音乐制作社区 › Ableton Live使用自定义脚本编写Midi控制器映射
标签: Ableton live, Midi
- 作者帖子
- 2023-11-21 - 14:26 #126915
追光参与者手里有一些旧的Midi控制器(Korg Nano Kontrol或其他型号的),上面有推子、旋钮,连接Ableton后却无法控制上面的参数,或者只能通过Midi学习功能来分配按键功能,Midi学习功能非常好用,但每次控制都需要重新分配一次,使用起来也并不算方便。尤其是控制效果器上的参数,或者控制midi宏按钮,这种非常频繁的操作,最佳的方式是:选定哪个效果器,控制器就能自动分配控制当前效果器。
我们能不能使用任意能发出Midi信号的推子、旋钮、按钮来自定义对应的Ableton操作呢?
答案是肯定的。Ableton Live允许用户通过编写自定义MIDI脚本来扩展控制器的功能,这在定制控制器的行为或添加新功能方面非常有用。MIDI脚本可以使用Python语言编写,Ableton提供了一个API供用户创建自定义功能,只需要三个步骤即可快速创建控制器与Ableton的控制。
1、Ableton提供了MIDI Remote Scripting API文档,可以通过输入Midi CC号即可编写并指定控制器的行为。
2、将编写的脚本放置在Ableton的MIDI Remote Scripts目录下,通常这个目录是在安装路径下的文件夹中。
Mac:
HD:/Users/[Username]/Library/Preferences/Ableton/Live x.x.x/User Remote Scripts
Windows:
C:\Users\[Username]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts
3、在Ableton的首选项中,找到“Link/MIDI”选项卡,在“Control Surface”部分选择你的自定义脚本作为控制器。
下面我们将重心放到第二步:MIDI Remote Scripting的更改上来,如何进行Midi信号分配,以及脚本对应的功能进行分享。
- 2023-11-21 - 14:41 #126917
追光参与者User Remote Scripts(用户自定义Midi脚本文件夹)的文件结构与UserConfiguration.txt
使用本目录中提供的文件’UserConfiguration.txt’,你可以创建自己的即时映射,只需要将你midi控制器的 CC信息填写到对应的栏目即可。
1、在用户远程脚本文件夹中,将看到两个文件,InstantMappings-HowTo.txt文件和UserConfiguration.txt文件。
Mac:
HD:/Users/[Username]/Library/Preferences/Ableton/Live x.x.x/User Remote Scripts
Windows:
C:\Users\[Username]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts
InstantMappings-HowTo.txt文件描述了如何以及在哪里保存文件。
UserConfiguration.txt文件包含有关如何编辑文件本身的说明,以便它与您的MIDI控制器配合使用。2、创建自定义User Remote Scripts控制表面的方法
2.1、在’User Remote Scripts’中创建一个目录。该目录的名称将显示在Live的控制表面列表中。
命名:目录的名称应以字母开头(不能是数字或特殊字符,如’_’)。2.2、将文件’UserConfiguration.txt’复制到你的目录中。文件的名称必须保持不变。
2.3、使用文本编辑器(TXT或者Atom、Dw)打开新创建文件夹内的UserConfiguration.txt。
Ableton自定义Midi控制表面的UserConfiguration.txt文件内容中文详解
此文件中没有加#注释的地方都是用于控制信息填写的位置,-1的号码用于填写你控制器的cc信息,可以将以下内容粘贴替换到你的UserConfiguration.txt中。
# ====================================================== # 用户定义即时映射的配置文件 # ====================================================== [Globals] # 控制器的Midi通道:在0-15范围。 GlobalChannel: 0 # ====================================================== # 控制设置信息 # ====================================================== # 下面的设置允许你通过你的控制器发送的MIDI消息来控制Live中的各种功能。 # 除了指定音符号的PadxNote功能外,所有其他功能都期望CCs。CCs和音符号编号范围为0-127。 # 大多数情况下,期望CCs和音符号在GlobalChannel上发送。然而,对于一些功能,比如EncoderChannelx,可以指定不同的通道。在这些情况下,如果通道设置为-1,则将使用GlobalChannel。通道编号范围为0-15。 # 除了用于MixerControl的按钮外,预期你控制器上的按钮不是开关(即,每次按下时发送值0)。 # 最后,对于某些功能,你可以指定分配给该功能的MIDI消息的映射模式。以下映射模式可用: # - 绝对模式(Absolute) # - 绝对14位模式(Absolute14Bit) # - 线性有符号位模式(LinearSignedBit) # - 线性有符号位2模式(LinearSignedBit2) # - 线性二补码模式(LinearTwoCompliment) # - 线性二进制偏移模式(LinearBinaryOffset) # - 加速度有符号位模式(AccelSignedBit) # - 加速度有符号位2模式(AccelSignedBit2) # - 加速度二补码模式(AccelTwoCompliment) # - 加速度二进制偏移模式(AccelBinaryOffset) # 对于具有固定范围的推子和旋钮,你将使用Absolute或Absolute14Bit。对于无限旋钮,你将使用其他模式之一。要找出应使用哪种模式,可以: # - 参考控制器的文档。 # - 查看Live手册的27.2.4节: # https://www.ableton.com/en/manual/midi-and-key-remote-control/ # - 尝试各种模式,看哪种对你最有效。 # ====================================================== # 下面的Pad设置允许你分配将用于播放Drum Racks中可见Pad的音符号编号。Pad的排列方式如下: # 1 2 3 4 # 5 6 7 8 # 9 10 11 12 # 13 14 15 16 Pad1Note: -1 Pad2Note: -1 Pad3Note: -1 Pad4Note: -1 Pad5Note: -1 Pad6Note: -1 Pad7Note: -1 Pad8Note: -1 Pad9Note: -1 Pad10Note: -1 Pad11Note: -1 Pad12Note: -1 Pad13Note: -1 Pad14Note: -1 Pad15Note: -1 Pad16Note: -1 Pad1Channel: -1 Pad2Channel: -1 Pad3Channel: -1 Pad4Channel: -1 Pad5Channel: -1 Pad6Channel: -1 Pad7Channel: -1 Pad8Channel: -1 Pad9Channel: -1 Pad10Channel: -1 Pad11Channel: -1 Pad12Channel: -1 Pad13Channel: -1 Pad14Channel: -1 Pad15Channel: -1 Pad16Channel: -1 # ====================================================== [DeviceControls] # 下面的设置适用于Live中选定的设备,比如效果器参数,每次会自动映射到选中的效果器。 # Encoder1-Encoder16同时控制最多16个设备参数。这里使用的编码器数量确定了下面描述的银行按钮的工作方式。如果使用8个或更少的编码器,则银行按钮将选择8个参数的一个银行供编码器控制。如果使用9个或更多编码器,则银行按钮将选择两个包含8个参数的银行供编码器控制。 Encoder1: 16 Encoder2: 17 Encoder3: 18 Encoder4: 19 Encoder5: 20 Encoder6: 21 Encoder7: 22 Encoder8: 23 Encoder9: -1 Encoder10: -1 Encoder11: -1 Encoder12: -1 Encoder13: -1 Encoder14: -1 Encoder15: -1 Encoder16: -1 EncoderChannel1: -1 EncoderChannel2: -1 EncoderChannel3: -1 EncoderChannel4: -1 EncoderChannel5: -1 EncoderChannel6: -1 EncoderChannel7: -1 EncoderChannel8: -1 EncoderChannel9: -1 EncoderChannel10: -1 EncoderChannel11: -1 EncoderChannel12: -1 EncoderChannel13: -1 EncoderChannel14: -1 EncoderChannel15: -1 EncoderChannel16: -1 EncoderMapMode: Absolute # Bank1Button-Bank8Button直接选择编码器要控制的设备参数的银行(们)。 Bank1Button: -1 Bank2Button: -1 Bank3Button: -1 Bank4Button: -1 Bank5Button: -1 Bank6Button: -1 Bank7Button: -1 Bank8Button: -1 # NextBankButton和PrevBankButton选择下一个或上一个编码器要控制的设备参数的银行(们)。 NextBankButton: 56 PrevBankButton: 40 # OnOffButton切换设备激活开关。 OnOffButton: 54 # LockButton将其他DeviceControls锁定到当前选定的设备。 LockButton: 38 # ====================================================== [MixerControls] # 下面的设置允许你同时控制8个轨道的各种混音功能。 # VolumeSlider1-VolumeSlider8控制轨道音量。 VolumeSlider1: 0 VolumeSlider2: 1 VolumeSlider3: 2 VolumeSlider4: 3 VolumeSlider5: 4 VolumeSlider6: 5 VolumeSlider7: 6 VolumeSlider8: 7 Slider1Channel: -1 Slider2Channel: -1 Slider3Channel: -1 Slider4Channel: -1 Slider5Channel: -1 Slider6Channel: -1 Slider7Channel: -1 Slider8Channel: -1 # Send1Knob1-Send1Knob8控制轨道发送A。 Send1Knob1: 41 Send1Knob2: 42 Send1Knob3: 43 Send1Knob4: 44 Send1Knob5: 45 Send1Knob6: 46 Send1Knob7: 47 Send1Knob8: 57 # Send2Knob1-Send2Knob8控制轨道发送B。 Send2Knob1: 9 Send2Knob2: 25 Send2Knob3: 26 Send2Knob4: 27 Send2Knob5: 28 Send2Knob6: 29 Send2Knob7: 30 Send2Knob8: 31 # TrackMuteButton1-TrackMuteButton8控制轨道静音。 TrackMuteButton1: 32 TrackMuteButton2: 33 TrackMuteButton3: 34 TrackMuteButton4: 35 TrackMuteButton5: 36 TrackMuteButton6: 37 TrackMuteButton7: -1 TrackMuteButton8: -1 # InvertMuteButtonFeedback指定发送到TrackMuteButtons的反馈是否被反转(True)或不反转(False)。 # 当反转时,未静音的轨道会发送一个开启值,而静音的轨道会发送一个关闭值。 InvertMuteButtonFeedback: True # TrackSoloButton1-TrackSoloButton8控制轨道独奏开启或者关闭。 TrackSoloButton1: 48 TrackSoloButton2: 49 TrackSoloButton3: 50 TrackSoloButton4: 51 TrackSoloButton5: 52 TrackSoloButton6: 53 TrackSoloButton7: -1 TrackSoloButton8: -1 # TrackSelectButton1-TrackSelectButton8用于选择轨道。 TrackSelectButton1: 74 TrackSelectButton2: 75 TrackSelectButton3: 76 TrackSelectButton4: 121 TrackSelectButton5: 122 TrackSelectButton6: 82 TrackSelectButton7: 124 TrackSelectButton8: 125 # TrackArmButton1-TrackArmButton8控制轨道录音启用或关闭。 TrackArmButton1: 59 TrackArmButton2: 60 TrackArmButton3: 61 TrackArmButton4: 62 TrackArmButton5: 63 TrackArmButton6: 70 TrackArmButton7: 71 TrackArmButton8: 72 # NextBankButton和PrevBankButton平移上面控制的8个轨道的上一组或下一组推子或旋钮。 NextBankButton: 12 PrevBankButton: 10 # MasterVolumeSlider控制总轨道音量。 MasterVolumeSlider: 8 MasterSliderChannel: -1 # CueVolumeSlider控制Cue/预览音量。 CueVolumeSlider: 24 CueSliderChannel: -1 # CrossfaderSlider控制十字淡入淡出。 CrossfaderSlider: -1 CrossfaderSliderChannel: -1 CrossfaderMapMode: Absolute # VolumeMapMode指定所有音量控件使用的映射模式。 VolumeMapMode: Absolute # SendsMapMode指定所有发送控件使用的映射模式。 SendsMapMode: Absolute # MixerButtonsToggle指定本部分的按钮是切换(True)还是瞬时(False)。 MixerButtonsToggle: True # ====================================================== [TransportControls] # 下面的设置允许你控制各种与传输相关的功能。 # StopButton停止播放。 StopButton: 68 # PlayButton开始播放。 PlayButton: 65 # RecButton切换Arrangement录制。 RecButton: 69 # SessionRecButton切换Session录制。 SessionRecButton: -1 # OverButton切换Arrangement Overdub。 OverButton: -1 # MetroButton节拍器开关。 MetroButton: 39 # LoopButton切换Arrangement循环。 LoopButton: 67 # RwdButton倒带播放。 RwdButton: 64 # FwdButton快进播放。 FfwdButton: 66 # PunchInButton控制Punch-In。 PunchInButton: -1 # PunchOutButton控制Punch-Out。 PunchOutButton: -1 # NudgeUpButton触发Phase Nudge Up。 NudgeUpButton: -1 # NudgeDownButton触发Phase Nudge Down。 NudgeDownButton: -1 # TapTempoButton 通过点按来手动探测节拍。 TapTempoButton: 55
3、获取控制器在哪个MIDI通道上发送数据,按钮以及编码器和滑块的MIDI CC信号值。并填写到UserConfiguration.txt
找到手中Midi控制器Midi cc信号值的快速方法是在Live中进行MIDI遥控器分配,并记下相应的CC值。或者可以使用Mac版Snoize MIDI Monitor或PC版OBDS MIDI Monitor。
- 2023-11-21 - 15:19 #126922
追光参与者小拓展:使用上面的方法可以使任何能够发出Midi信息的设备按照我们期望的方式映射到Ableton中实现硬件控制,当然还有更高阶的Midi 控制脚本编写方式:Ableton Live Custom MIDI Remote Scripts,这主要用于开发控制硬件的厂家进行硬件设计使用。
以上的方式适用于我们个人快速编写控制命令,个人最偏爱的是[DeviceControls],这可以快速的用旋钮控制任何插件(包括第三方插件)中选定的设备,比如效果器参数,每次会自动映射到选中的效果器,使得制作效率大大提升。
如果在编配控制脚本的过程中遇到问题,可以随时留言,会在看到的第一时间回复,如果有新的更好的方式也可以跟帖回复噢。
本帖未经允许不得转载,禁止二次转载,转载请注明出处并保留在本站的完整链接,谢谢^_^
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。