MIDI.REMOTE: Please confirm if possible - comprehensive knowledge req

I basically wasted the whole of yesterday trying to do what I thought was a simple thing (relatively) and was kind of working previously using a clumsy generic remote but I would like to have the ability to use the remote interface for feedback.

I dont want to start another language without at least confirming by someone with comprehensive knowledge if the following

I wish to use a controller (iconpad) to simply and effectively be a tactile surface for the paradigm of a channel strip with some variance and using gestures ie quick press, long hold, double click


  1. Selecting on of the 'channel buttons on strip 1 will (eg button 2 with a normal quick press)
  2. Select that channel on the bank
  3. Open the gui of the numbered insert (IFX 2)
  4. Focus the gui of the insert number that was selected (eg insert 2)
  5. Do the normal map of rotary encoders to par1-8
  6. pressing that same button will toggle close the gui window

Scolling the bank left or right should cause the mixer and project to scroll with the bank selection


  1. Close all current plugin windows
  2. Open all the plugin windows on that channel (eg alt+shift+e on channel strip of cubase)
  3. Long hold will toggle close of all plugin windows


  1. If gui of a plug is visible or not, bypass ifx, toggle A/B and write A/B needs to be functional
  2. A shift function to momentary switch a preset and return on release

These are the buttons to select each insert and shift allows the selection of 5-8

I spent the whole of yesterday trying to use the editor and despite getting close a couple of times, there were dead ends

I dont want it done for me (although if you have similar code to share as a foundationk that would be amazing)
This would take me max 1 hour in ableton with solid operation and minimal bugs

Does the controller itself differentiate between a short and a long press? I don’t think Cubase will. At least not without writing a script.
Same thing with accessing specific Insert slots, can be done with some custom scripting, but not through the Mapping Assistant alone. The way accessing Insert plugins in Cubase MIDI Remote is that you index up and down between the slots you wish to control the plug-in at.
So Steinberg designed it so that you need some form of Previous/Next buttons to select a slot.

No it does not, in ableton I just used a python library although the smartpad was diff and the manufacturers built it all into the firmware for me
Yeah Im mainly asking specifically about coding it as editor was quickly a dead end and scrolling through is just lame when the generic could do it. I was already doing the srcoll but its just fatiguing and whole point of tactile is using the buttons for direct nav.

Im asking about code because I had asked about stuff (not on steinberg) and was told…ah YEP EASY…no prob but when I drilled into doing the project it was full of dead ends
SURELY someone has already done this…many time?
Gesturng was happening 20 years ago and so many of the UI elegance could so help the UX

Short answer : it is possible using the javascript API.

Long answer : differientiate long press and short press can be difficult. The API doesn’t provide any time based function (at least i’m not aware of one) so you might need to be creative and make your own. (Or get inspiration from someone who did it). And your controller has to send different messages for press and release.

As for selecting a specific insert slot, the API is based on indexing (ie use of previous/next) but it can also reset the index (go to index 0). So if you want index 2 for example, it’s possible to write a function that reset the index, then increment it to get the second insert.



Thanks @thomas_martin . I had glanced through the api quite a while ago and the windowing etc did not seem well iimplemented and I remember things missing
ONe basic thing if there is no library for gesturing is a millisecond timer with callback else its a waste of time.
I have wrtitten some stuff in BMT but its great for proto but kludgy if soemthing goes wrong.
The press and release was just based on 127/0 (actually >0)

But SURELY someone has done this already?

“Lack of millis is a waste of time.” This should be the quote of the day honestly. :wink:
You’re right, i’d like to have acces to such a basic function. I know some people mimicked a timer function based on the recently added “onIdle” callback. But it might not work in your case.

The key here is to write the timestamp (the Date function is part of the ES5 as well) when the value of our controls is to 1 (127), and then compare it with the current timestamp when our value goes to 0 (key released). The diff compared to a predefined duration will define the short/long press. Then we need two custom vars to proceed accordingly.

Here’s an example of a pseudo-timer, since ES5 doesn’t support something like this: MIDI-Remote: 500 ms delay between two commands - #2 by m.c


Thanks a lot for this one, it will come very handy at some point.

This is pretty much what i had in mind. Short of the Date() function.



This is a nice clean concept…great work
In ableton framework, a lot of this is done for you as functions but double press is not. In python its best practice to thread it out.

As I actually use 4 gestures and there is also hold repeat that are keyed with different bitsets of the controller value, its quite a lot more complex.
That is why a callback and scan is require and timer also fires the repeat event based on pressure

Unfortunately I have run out of time…I dont know whether I have to time resource to do it and lean js etc so I might go back to the old generic remote as it works fairly well…just miss the UI feedback and making use of the remote features

Im still concerned about getting the connected behaviour of inserts as well