5 author = "Ardour Lua Task Force",
6 description = [[An example session script preprocesses midi buffers.]]
10 -- this function is called in every process cycle, before processing
11 return function (n_samples)
12 _, t = Session:engine ():get_ports (ARDOUR.DataType.midi (), ARDOUR.PortList ())
13 for p in t[2]:iter () do
14 if not p:receives_input () then goto next end
16 if not p:name () == "MIDI/midi_in 1" then goto next end
18 midiport = p:to_midiport ()
19 assert (not midiport:isnil ())
20 mb = midiport:get_midi_buffer (n_samples);
22 events = mb:table() -- copy event list into lua table
23 mb:silence (n_samples, 0); -- clear existing buffer
25 for _,e in pairs (events) do
26 -- e is-a http://manual.ardour.org/lua-scripting/class_reference/#Evoral:MidiEvent