The main problem is the Android APP… the Duplex tool of Danoise has a specific visual configuration, which moves away from this idea.In addition, it includes a lot of features for other programs, which end up complicating the handling, keeping in mind that the idea is to solve it as simple as possible.
Indeed, Duplex does a lot of things, understands a larger range of messages than Renoise itself. That much is true. But you also get a lot of stuff “for free” that would otherwise complicate your project: two-way communication, optimized output stages (check if messages needs to be transmitted before sending), etc.
Also, although Duplex is perhaps complicated on the inside, the whole_configuration_aspect is designed to be simple, using configuration files, which - although using the lua syntax - doesn’t require any programming. They are simply configurations that can be loaded, interpreted by lua - could be text files, json, xml, any format really.
But, no matter what, you have to consider what you’re aiming for. As I understand your definition of “as simple as possible”, this pretty much means coding everything from the ground up. Which is of course not a problem if you’re willing to invest the time to do that. Sounds like you’re even willing doing an Android app from scratch? That’s a pretty complex task, especially once you get to the network, I/O parts. In many ways, the GUI is the easiest part to realize.
The alternative to making everything from scratch is, well, to rely on existing things (like Control/TouchOSC/Duplex :)).Basically, it means focusing on the interface instead of the transport layer (whether that’s MIDI or OSC, wired or wireless…)
I know about the Control app, used to have it installed on my phone and know that it can also be made to work with Duplex. TouchOSC, however, is what I have been focusing on myself. It comes with a pretty good editor (which you run on desktop Windows/OSX) that you can use for building your own interfaces. Next step is to make a rough recreation of your interface in Duplex (a “virtual control surface”), which instructs Duplex about the type of buttons, how they work, how they are laid out, etc. And really, then you should be good to go. But I would probably ask first: “I want to do XYZ, is that possible?”.
There is a lot of documentation about Duplex, but some of it is pretty hardcore - automatically generated from the source code itself. For example, here is the documentation for the control-map (XML file syntax):
https://renoise.github.io/luadocs/duplex/modules/Duplex.ControlMap.html
Could definitely have done a better job with this, but I’m happy to assist / answer any questions you might have.