脚本示例
以下是一些实用的 AM脚本示例,展示了如何使用脚本功能实现常见的自动化任务和控制逻辑。
基础脚本示例
这是一个简单的脚本示例,演示了如何在 AM中创建一个基本的事件监听器:
-- 基础事件监听脚本
function onParameterChanged(parameterId, newValue)
if parameterId == "volume" then
print("音量已更改为: " .. newValue)
end
end
-- 注册事件监听器
registerEventHandler("parameterChanged", onParameterChanged)
自动化示例
以下示例演示了如何在播放开始时自动执行一系列操作:
-- 播放开始时的自动化脚本
function onPlaybackStarted()
-- 设置特定插件的参数
setPluginParameter("reverb", "roomSize", 0.8)
setPluginParameter("delay", "feedback", 0.3)
print("已应用混响和延迟设置")
end
-- 注册播放事件监听器
registerEventHandler("playbackStarted", onPlaybackStarted)
MIDI 处理示例
以下示例演示了如何处理传入的 MIDI 数据:
-- MIDI 处理脚本
local lastNote = nil
function onMidiReceived(status, data1, data2)
local msgType = status & 0xF0 -- 提取消息类型
if msgType == 0x90 and data2 > 0 then -- 音符开消息
if lastNote and math.abs(data1 - lastNote) < 5 then
-- 如果音符接近,调整音高
local adjustedNote = data1 + 2
if adjustedNote <= 127 then
sendMidi(status, adjustedNote, data2)
end
end
lastNote = data1
end
end
-- 注册 MIDI 事件监听器
registerEventHandler("midiReceived", onMidiReceived)
定时任务示例
以下示例演示了如何创建一个定期执行的任务:
-- 定期保存项目快照
function scheduledSnapshot()
-- 检查是否启用了自动快照功能
if getSetting("enableAutoSnapshot") then
-- 创建项目快照
createSnapshot("autosnap_" .. getCurrentTime())
print("已创建自动快照")
end
end
-- 注册定时任务,每5分钟执行一次
registerScheduledTask(scheduledSnapshot, 5 * 60)
自定义 UI 示例
以下示例演示了如何创建一个简单的自定义控制界面:
-- 创建自定义控制面板
local panel = createControlPanel("我的控制面板", 200, 100)
local slider = panel:addSlider("音调控制", 0, 100, 50)
local button = panel:addButton("重置")
function onUpdate()
-- 更新插件参数
setPluginParameter("pitchShifter", "pitch", slider:value())
end
function onButtonClicked(control)
if control == button then
slider:setValue(50)
setPluginParameter("pitchShifter", "pitch", 50)
end
end