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 >> 7MSB 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()