summaryrefslogtreecommitdiff
path: root/scripts/midi_rewite.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/midi_rewite.lua')
-rw-r--r--scripts/midi_rewite.lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/scripts/midi_rewite.lua b/scripts/midi_rewite.lua
new file mode 100644
index 0000000000..35d2e1ddfc
--- /dev/null
+++ b/scripts/midi_rewite.lua
@@ -0,0 +1,36 @@
+ardour {
+ ["type"] = "session",
+ name = "Rewrite Midi",
+ license = "MIT",
+ author = "Robin Gareus",
+ email = "robin@gareus.org",
+ site = "http://gareus.org",
+ description = [[An example session script preprocesses midi buffers.]]
+}
+
+function factory ()
+ -- this function is called in every process cycle, before processing
+ return function (n_samples)
+ _, t = Session:engine ():get_ports (ARDOUR.DataType.midi (), ARDOUR.PortList ())
+ for p in t[2]:iter () do
+ if not p:receives_input () then goto next end
+
+ if not p:name () == "MIDI/midi_in 1" then goto next end
+
+ midiport = p:to_midiport ()
+ assert (not midiport:isnil ())
+ mb = midiport:get_midi_buffer (n_samples);
+
+ events = mb:table() -- copy event list into lua table
+ mb:silence (n_samples, 0); -- clear existing buffer
+
+ for _,e in pairs (events) do
+ -- e is an http://ardourman/lua-scripting/class_reference/#Evoral:MidiEvent
+ e:set_channel (2)
+ mb:push_event (e)
+ end
+
+ ::next::
+ end
+ end
+end