使用Ctrlr软件的Lua脚本控制10个旋钮
以下是一个使用Ctrlr软件的Lua脚本,根据接收到的MIDI系统码的第五位数据选择旋钮,并根据接收到的MIDI系统码的第六位数据给旋钮赋值的示例代码:
-- 定义面板
panel = Panel('MIDI Knobs')
-- 创建10个旋钮
for i = 1, 10 do
local knobName = 'xuanniu ' .. i
panel:addModulator(MidiModulator(knobName)) -- 添加MIDI调制器
end
-- 处理MIDI消息
function onMidiMessage(event)
if event:isNoteOn() then
local knobIndex = event:getDataByte(5) -- 第五位数据
local knobValue = event:getDataByte(6) -- 第六位数据
if knobIndex >= 1 and knobIndex <= 10 then
local knobName = 'xuanniu ' .. knobIndex
local knob = panel:getModulatorByName(knobName)
if knob ~= nil then
knob:setValue(knobValue) -- 给旋钮赋值
end
end
end
end
-- 注册MIDI消息处理函数
panel:addMidiMessageCallback(onMidiMessage)
这段代码首先创建了一个名为'MIDI Knobs'的面板,并在面板中添加了10个旋钮,分别命名为'xuanniu 1'到'xuanniu 10'。然后定义了一个名为'onMidiMessage'的函数,用于处理接收到的MIDI消息。
当接收到Note On消息时,首先提取出第五位和第六位的数据,分别表示选取的旋钮索引和旋钮赋值的数值。然后判断选取的旋钮索引是否在1到10之间,如果是,则根据索引找到对应的旋钮,并给旋钮赋值。
最后,通过调用panel的addMidiMessageCallback函数,将onMidiMessage函数注册为处理MIDI消息的回调函数。这样,当接收到MIDI消息时,就会调用onMidiMessage函数来处理消息。
原文地址: https://www.cveoy.top/t/topic/fQmF 著作权归作者所有。请勿转载和采集!