channelize.lua
local MidiBuffer = require ('el.MidiBuffer')
local script = require ('el.script')
local round = require ('el.round')
local output = MidiBuffer.new()
local function layout()
return {
audio = { 0, 0 },
midi = { 1, 1 },
control = {{
{
name = "Channel",
symbol = "channel",
min = 0,
max = 16,
default = 0
}
}}
}
end
local function prepare()
output:reserve (128)
output:clear()
end
local function process (_, m, p)
local input = m:get (1)
local channel = round.integer (p[1])
output:clear()
for msg, frame in input:messages() do
if channel > 0 and msg:channel() > 0 then
msg:setChannel (channel)
end
output:insert (msg, frame)
end
input:swap (output)
end
return {
type = 'DSP',
layout = layout,
parameters = parameters,
prepare = prepare,
process = process,
release = release
}