Ableton Live使用自定义脚本编写Midi控制器映射

VFX大学 Logic,Ableton Live电影音乐制作社区 Ableton Live使用自定义脚本编写Midi控制器映射

标签: ,

正在查看 2 条回复
  • 作者
    帖子
    • #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信号分配,以及脚本对应的功能进行分享。

    • #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。

      MIDIMonitor/Midi View Midi硬件信号监测 /Mac&Win

    • #126922

      追光
      参与者

      小拓展:使用上面的方法可以使任何能够发出Midi信息的设备按照我们期望的方式映射到Ableton中实现硬件控制,当然还有更高阶的Midi 控制脚本编写方式:Ableton Live Custom MIDI Remote Scripts,这主要用于开发控制硬件的厂家进行硬件设计使用。

      以上的方式适用于我们个人快速编写控制命令,个人最偏爱的是[DeviceControls],这可以快速的用旋钮控制任何插件(包括第三方插件)中选定的设备,比如效果器参数,每次会自动映射到选中的效果器,使得制作效率大大提升。

      如果在编配控制脚本的过程中遇到问题,可以随时留言,会在看到的第一时间回复,如果有新的更好的方式也可以跟帖回复噢。

      本帖未经允许不得转载,禁止二次转载,转载请注明出处并保留在本站的完整链接,谢谢^_^

正在查看 2 条回复
  • 在下方一键注册,登录后就可以回复啦。