在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 = 128 * MSB + 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()
下载脚本:
1570359439690-insert-wheel-any-value.lua (826 Bytes)