LUA脚本 - 插入弯音(半音值)

注意:这个脚本设定的弯音范围是12个半音,并非通用的2个半音。如果使用VSTi插件,需要设置弯音范围为12。

当然,也可以通过发送MIDI控制器信息来设置弯音范围:

MIDI cc101 = 0
MIDI cc100 = 0
MIDI cc6 = 12

弯音的完整数值范围为 -8192 到 8191 之间,将8191除于12得到每一个半音为683。利用表存储这12个半音的数值,再通过用户输入获得弯音参数。比如,用户输入1得到683的数值。脚本最终再将参数拆分为低7位 LSB 和高7位 MSB ,插入CC。以下为代码内容:

--[[
    Description: 插入弯音(半音值)
    Version: 1.0.2
    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('Insert Wheel', 1, 'Wheel Value =', '0')
if not retval then return reaper.SN_FocusMIDIEditor() end
userinput = tonumber(userinput)
if userinput > 12 or userinput < -12 then return reaper.MB( "数值超出!\n取值范围 -12 到 12 之间.", "错误", 0 ), reaper.SN_FocusMIDIEditor() end

tbl={}
tbl["12"]="8191"
tbl["11"]="7513"
tbl["10"]="6830"
tbl["9"]="6147"
tbl["8"]="5464"
tbl["7"]="4781"
tbl["6"]="4098"
tbl["5"]="3415"
tbl["4"]="2732"
tbl["3"]="2049"
tbl["2"]="1366"
tbl["1"]="683"
tbl["0"]="0"
tbl["-1"]="-683"
tbl["-2"]="-1366"
tbl["-3"]="-2049"
tbl["-4"]="-2732"
tbl["-5"]="-3415"
tbl["-6"]="-4098"
tbl["-7"]="-4781"
tbl["-8"]="-5464"
tbl["-9"]="-6147"
tbl["-10"]="-6830"
tbl["-11"]="-7513"
tbl["-12"]="-8192"

local value = tonumber(tbl[tostring(userinput)])
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()

下载脚本:
1570455201405-insert-wheel.lua (1.3 KB)

这个真是方便啊。