Midi-usb controller for resolume arena

Goodmorning everyone.
I open this topic for anyone who is interested and has ideas about it.
I work in a service and I take care of all the video part (ledwalls, screens, projectors, small mappings).
This work often leads me to having to send video contributions or to make classic VJ evenings (the one that sends the clips on the ledwall ).
The software I use is resolume arena, which allows you to divide the video clup into tracks and apply effects in rel time (all externally controlled by MIDI), I already have an AKAI APC40 and a mini but my aim is to build a custom external cntroller.

I have seen many projects online (many of which still use the DIN midi interface), I will instead use the USB-MIDI interface.
I have an aruino UNO SMD v2 and the chip with which it is supplied allows me to use HIDUINO (transforms the Arduino into a MIDI device recognized by the PC through software rewriting).
I am running the first tests on this device even though I have a 3.5 teensy in order that has the native usb-midi and many more DI and AI.

The hardware is still in the planning phase, for now I’m doing tests with separate pieces:

1 button
2 slide potentiometers
1 led
1 analog stick (recovered from an old Ps2 controller)

I found on the net the Control-Surface libraries that help a lot in the creation of a midi-usb controller:

Many of you will surely know them, but for those who do not know what they are and want to try this venture, I recommend using it.

I started using some code for testing (little code for now) but everything works correctly.

#include <Control_Surface.h> // Include the Control Surface library
// Instantiate a MIDI over USB interface.
USBMIDI_Interface midi;
const pin_t ledPin = 3; // uscita led per midi out
using namespace MIDI_Notes;
NoteButton button = {8,{note(C, 4), CHANNEL_1},}; // Digital input, nota inviata, canale
CCPotentiometer potentiometers[] = { // chiamata potenzometri
  {A0, 0x10}, // slider 1
  {A1, 0x11}, //slider 2
  {A2, 0x12}, //analog stick x
  {A3, 0x13}, //analog stick y
// instanzia il led che si accendera' alla ricezione 
NoteValueLED led = {
  3,             // Pin del led
  {note(C, 4), CHANNEL_1}, // nota c4 di ritorno da resolume sul canale 1
void setup() {
  Control_Surface.begin(); // Initializza Control Surface
void loop() {
  Control_Surface.loop(); // aggiorna control surface

I focused this topic on resolume arena because I use that and ask other users of the same software to post opinions, doubts and ideas.
The beauty of resolume is that for every note on that arrives (each note on command is followed by a note off command) it sends the same note back to arduino with programmable velocity (from the software).
So it is possible, for example, to illuminate the button that was used to play a clip only when the clip is actually playing. The same feedback occurs when I send the clip to play directly from the software: resolume sends the same note back and turns on the LED (I have to implement the velocity because I would like to use RGB LED).

The two slider potentiometers are generic, so they can control anything, same goes for the button.

I tested the analog stick using it as if they were 2 separate potentiometers and programming them on 2 parameters of an effect.
I do not know if it is possible to make an average of the values ​​read by the two and use it in other ways, I ask someone more experienced.

In conclusion (for now), if someone was interested but more than anything else he had ideas or advice, welcome.
Many online midi controllers are made for synths or for ableton or DAW, this will be directed to the management of the video (obviously it will not be a video mixer, it takes much more hardware).