LUA脚本 - 插入弯音(任何值)



  • 在MIDI编辑器的动作列表内导入该脚本,并设置一个快捷键;
    使用方法很简单,快捷键调出脚本,然后输入你想要的任何值,比如0、1024 等。

    这个脚本涉及到一个关键的计算,Pitch Bend 的值实际是 lsb 以及 msb 两个7位值组合而来,高7位是msb,低7位是lsb。当用户输入一个Pitch Bend值,实际上脚本的工作就是将这个值拆分为lsb 以及 msb,并写到reaper.MIDI_InsertCC的对应位置。

    从 pitchbend 取得 LSB和MSB值:
    LSB = pitchbend & 0x7F
    MSB = pitchbend >> 7

    MSB is: pitchbend bit shift right 7
    LSB is: pitchbend bitwise AND with a mask of 127

    进行相反的操作(如果已收到这两个值,则将两个值组合起来以计算弯音)很简单:
    pitchbend = (MSB*128)+LSB

    在REAPER中,MSB要减去64,数值才能匹配:
    pitchbend = (MSB-64)*128+LSB

    --[[
        Description: 插入弯音(任何值)
        Version: 1.0.1
        Author: 再補一刀
    ]]--
    
    local take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive())
    local pos = reaper.GetCursorPositionEx(0)
    local ppq = reaper.MIDI_GetPPQPosFromProjTime(take, pos)
    
    local retval, userinput = reaper.GetUserInputs('插入弯音', 1, '弯音值', '0')
    if not retval then return reaper.SN_FocusMIDIEditor() end
    
    local value = math.floor(userinput)
    if value < -8192 or value > 8191 then return reaper.MB( "数值超出!\n取值范围 -8192 到 8191 之间.", "错误", 0 ), reaper.SN_FocusMIDIEditor() end
    
    value = value + 8192
    local lsb = value & 0x7f
    local msb = value >> 7 & 0x7f
    reaper.MIDI_InsertCC(take, false, false, ppq, 224, 0, lsb, msb)
    
    reaper.UpdateArrange()
    reaper.SN_FocusMIDIEditor()
    

    下载脚本:
    Insert Wheel (any value).lua


Log in to reply
 

建议的主题

  • 1
  • 35
  • 2