summaryrefslogtreecommitdiff
path: root/scripts/_midifilter.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/_midifilter.lua
parentb48e803cf65b8437e7268e59199d65a3247b73ac (diff)
These are not the scripts you're looking for
Diffstat (limited to 'scripts/_midifilter.lua')
-rw-r--r--scripts/_midifilter.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/_midifilter.lua b/scripts/_midifilter.lua
new file mode 100644
index 0000000000..3ff61d3888
--- /dev/null
+++ b/scripts/_midifilter.lua
@@ -0,0 +1,38 @@
+ardour {
+ ["type"] = "dsp",
+ name = "Midi Filter",
+ category = "Example", -- "Utility"
+ license = "MIT",
+ author = "Ardour Lua Task Force",
+ description = [[An Example Midi Filter for prototyping.]]
+}
+
+function dsp_ioconfig ()
+ return { { midi_in = 1, midi_out = 1, audio_in = 0, audio_out = 0}, }
+end
+
+function dsp_run (_, _, n_samples)
+ assert (type(midiin) == "table")
+ assert (type(midiout) == "table")
+ local cnt = 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 (#d == 3 and bit32.band (d[1], 240) == 144) then -- note on
+ tx_midi (t, d)
+ end
+ if (#d == 3 and bit32.band (d[1], 240) == 128) then -- note off
+ tx_midi (t, d)
+ end
+ end
+end