Tzec has released a beta of VST Lua, a VST plug-in for scripted MIDI manipulation.
From the FAQ:
What does VstLua do?
It allows simple scripting of MIDI events in a VST. It does not have any audio manipulation facilities. It is purely for MIDI control.
And why is that useful?
It replaces many custom VST MIDI manipulators with a quick and easy way of scripting MIDI events. It provides support for limited GUI creation, so that scripts can set up their own control panels. New scripts can be quickly rapid prototyped without restarting the host.
Say, for example, I want add a new note, a fifth above the original, if the note is below middle C. All that is needed is a script like:
function midiEventCb(midiEvent) if midiEvent.type==midi.noteOn or midiEvent.type==midi.noteOff then local note = midiEvent.byte2 -- decide whether to transpose it up or down if note>=noteToNumber('C-5') then note = midiEvent.byte2 + interval.fifth else note = note - interval.fifth end midiEvent.byte2=note end sendMidi(midiEvent) end
See the API API for details.
The download includes a .dll for Windows PC, but the source code is also available for download, so you could try to port/compile it for another system.
Visit the VST Lua page for more information and a link to download the latest beta.