Source: https://discourse.ardour.org/t/output-m ... ls/89371/4Here ist another solution to this, it spares you from having to set 16 channel dropdowns to the same channel. Save this in a file called _midi_fix_channel.lua in your ~/.config/ardour5/scripts folder. Restart Ardour, you will then have a Plugin MIDI fix channel. Add it to your strip, double-click to edit the MIDI channel you want to nail everyting to.
Code: Select all
ardour {
["type"] = "dsp",
name = "MIDI fix channel",
category = "MIDI", -- "Utility"
license = "MIT",
author = "Robert Schneider",
description = [[A MIDI filter that nails all data to one channel.]]
}
function dsp_ioconfig ()
return { { midi_in = 1, midi_out = 1, audio_in = 0, audio_out = 0}, }
end
function dsp_params ()
return
{
{ ["type"] = "input",
name = "Channel",
doc = "Channel to be used for all data",
min = 1, max = 16, default = 1, integer = true }
}
end
function dsp_run (_, _, n_samples)
assert (type(midiin) == "table")
assert (type(midiout) == "table")
local cnt = 1
local ctrl = CtrlPorts:array ()
local channel = ctrl[1];
function tx_midi (time, data)
midiout[cnt] = {}
midiout[cnt]["time"] = time;
midiout[cnt]["data"] = data;
cnt = cnt + 1;
end
-- for each incoming midi event
for _,b in pairs (midiin) do
local t = b["time"] -- t = [ 1 .. n_samples ]
local d = b["data"] -- get midi-event
if (bit32.band (d[1], 240) ~= 240) then -- not a SYSEX
d[1] = bit32.band (d[1], 240) + channel - 1
end
tx_midi (t, d)
end
end
####
##
# http://x42-plugins.com/x42/x42-midifilter
##