summaryrefslogtreecommitdiff
path: root/scripts/_midi_rewrite.lua
diff options
context:
space:
mode:
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>2016-08-17 02:04:27 +0200
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>2016-08-17 02:04:27 +0200
commit7fa99abc3a014ee96a2f97de7b1570e407cb22ef (patch)
tree8a96199297a3b0ac9a68b375f5f42abb9859ae53 /scripts/_midi_rewrite.lua
parentb48e803cf65b8437e7268e59199d65a3247b73ac (diff)
These are not the scripts you're looking for
Diffstat (limited to 'scripts/_midi_rewrite.lua')
-rw-r--r--scripts/_midi_rewrite.lua34
1 files changed, 34 insertions, 0 deletions
diff --git a/scripts/_midi_rewrite.lua b/scripts/_midi_rewrite.lua
new file mode 100644
index 0000000000..4dfc28a6c3
--- /dev/null
+++ b/scripts/_midi_rewrite.lua
@@ -0,0 +1,34 @@
+ardour {
+ ["type"] = "session",
+ name = "Rewrite Midi",
+ license = "MIT",
+ author = "Ardour Lua Task Force",
+ 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-a http://manual.ardour.org/lua-scripting/class_reference/#Evoral:MidiEvent
+ e:set_channel (2)
+ mb:push_event (e)
+ end
+
+ ::next::
+ end
+ end
+end