Atom SQ and MIDI Remote API

Hello!
I am working on a script for my Atom SQ controller for Cubase. I love this device and consider it the best midi controller I’ve ever used.
I started to tweak it for my purposes but met several problems that are stopping me from finishing script.
The main problem is that this controller is very limited with its functions in MIDI and MCU modes so I reverse-engineered it and found out that in the most suitable for me - “Native” - mode this device is fully controlled by host application and even basic functions must be assigned in a script. For example, pads are sending midi note messages only from C0 to G2 and host needs to transpose these messages to required note. So my idea is to intercept note sending in script, transpose it and send updated note message to Cubase.
Unfortunately, I was unable to find any information on this in API documentation. Maybe anybody can help me with that or suggest another ways to make a work around for this situation.
Thank for your further assistance.

Could you please explain what is the intended behaviour? What are your plans for the pads? Should they be bound to Cubase commands for example? Do you simply aim to use them for note triggering but you need them to a higher range?

Exactly. I am unable to play notes higher than G2 because in other supported DAWs octave up/down functions is done inside of the host DAW. My initial plan was to create a variable that holds current octave and adds this number * 12 to the note I play. But to do it I need to intercept initial key note midi message, update note value and send it to Cubase.
For example: I want to play C3 note. I press pad that sends C0 message (36), script intercepts this message, adds 36 to this value and sends C3 (72) to Cubase.
I hope that my idea is quite clear now.

So, you will bind two of your buttons of this controller, to transpose up/down, right?

I will disappoint you a little. This is not directly doable. There is however a workaround. Inside the script you can have another midi port, a loopback one. Then, when receiving the note messages from your controller, you can check the transpose flag, consume the initial event and then send to the loopBack port the new note value.
Honestly, I’m not sure if this elegant enough. I would look at using external utilities if this sounds complicated. For example, in Bome MIDI Translator Pro, this is doable in a way more friendly to users not into scripting. To not mention that I worry in the case of using the MIDI Remote for this, for possible latencies introduced.

I have dedicated buttons for this so it will be no problem

I will try this workaround first. If latency will really become an issue - then I will take a look at Bome Midi.

Thank you for your advice!

Cool! Let me know if you find difficulties. For now, just be careful with properly handling the velocities sent.