Midi Note/CC to Keystroke: possible via LUA?

Fairly new to Renoise – not to music Tracker though – and I can’t help myself but playing notes via computer keyboad is still a bit of pain for me :smiley:

I have an Ableton Push 2 and want to utilize it for a proper (or semi-proper) usage in Renoise. Since the documentation for the Renoise tool Duplex seems lost (at least I can’t find it) :smiley: I thought about how to circumvent some shortcomings of native midi-mapping behavior.

So my idea is fairly simply (I think): a little tool that translate some (user can configure which) MIDI data to keystrokes/keybindings. In cases of Push 2 one could use four rows of the matrix for note input and the rest of the matrix for sample editing keybindings and the rest for of the buttons for naviagtion/focus/tab-switch

I know there are tools like MIDI2KEY but would not hurt to let it do Renoise via a LUA script. But is this even possible via LUA? Any idea on where to start? It would be really just about converting MIDI data in fact.

Unfortunately you can’t do that afaik, at least not in a convenient manner.

You can respond to MIDI input (and send output) from lua but you cannot emulate keyboard presses nor can you run commands that are tied to keybindings in Renoise.

In general, you have access to much of the data inside Renoise but not the built-in functions.

A simple example would be that you can read and set the cursor position inside the pattern but if you want to move the cursor in a direction you have to (re)write the logic of how to do that even though Renoise can do this already.

If you want to start coding tools you should check out the xrnx repo. But using some third party midi-2-key will be much faster in my opinion.

I think you cannot emulate keypresses from lua directly, but you could try to use os.execute() and a command line tool that will send the keypresses to the renoise window. Then you can write a tool that will hook into the midi stream, and execute your tool to feed renoise the keypresses. Probably it will not be as stable/fast as a native solution, and you need to find a proper tool for each platform you want your tool to run on.