diff options
author | Julien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr> | 2016-08-17 02:04:27 +0200 |
---|---|---|
committer | Julien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr> | 2016-08-17 02:04:27 +0200 |
commit | 7fa99abc3a014ee96a2f97de7b1570e407cb22ef (patch) | |
tree | 8a96199297a3b0ac9a68b375f5f42abb9859ae53 /scripts/_midifilter.lua | |
parent | b48e803cf65b8437e7268e59199d65a3247b73ac (diff) |
These are not the scripts you're looking for
Diffstat (limited to 'scripts/_midifilter.lua')
-rw-r--r-- | scripts/_midifilter.lua | 38 |
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 |