There is a Lua API and a built-in script editor that is hidden by default. Search the docs about how to activate it. It includes the documentation and examples.
The most common way that you would integrate new controllers is adding them into the Duplex tool which is a common code-base for communicating with midi-controllers.
I made a sketchy “dedicated” renoise controller out of a Korg padKONTROL. It has a special “sysex-only” mode where it transmits and receives commands to control the lights, the 7-digit text display and it transmits all buttons, the rotary encoder and X/Y pad etc.
It can select tracks, do transport control, play notes, control voume/pan, schedule a pattern etc.
I also bought a Novation SL Zero MK2 recently which has similar capabilities, there is a sysex manual which describes how to control the display (can send text or pixels). I was thinking of tinkering with that. It could show you the parameters of the selected plugin-devices for example. Or it could be turned into a step sequencer.
I assume it is probably common for Maschine/Push etc. to also send CCs, NRPNs or sysex on a separate or hidden virtual midi device. But maybe they use some other protocol over usb, who knows.
The most important thing I am missing is to control the disk browser via a controller. There is no API for it unfortunately, so one would need to send virtual keyboard events through an external app.
I made a proof of concept test with the midi2input tool for linux X11, I found that it only works when there is a small pause between the press/release events.
Then again, if you have a laptop in front of you, using the arrow keys is not that much of a burden after all.
More avenues to explore would be connecting buttons/potis/displays to an Axoloti, Arduino or Raspberry Pi (Been scratching the surface with each ) Here you often need additional “splitters/multiplexers” to allow connecting sufficient amounts of buttons or analog inputs. The Pi does not have analog inputs natively.
When I saw the new polyend tracker and it’s price I thought I’d rather buy an old laptop and build some controller for it. I plan to install linux and set it up to load Renoise right away per default. Then sync it with other hardware and jam away.
Renoise is amazing for that. Nothing against polyend, I am sure it is great, I just cannot afford it.
One more thing, the Arduino Mega has four serial ports which can be used for Midi. I bought one but did not find the time to do anything with it. It has great potential for making your own midi merger/processor device.