Help with midi remote

Hello,
I created my own script to handle midi CC sent from my Morningstar MC8, just 8 pads each assigned to a midi CC (12 with value 0, 13 with 0, etc.) on channel 9.
There is a midi input device, no midi output.
Each sent midi CC correctly reaches Cubase because the ‘Last touched control’ in midi remote for my script correctly reports the command mapped to it but none of basic commands as Start(Transport), Stop (Transport), Record (Transport) are triggered ? I tryed Jump or Toggle as policy but no chance.
My script seems in test mode ? Not totally active ?

One macro, Go to left locator is ok, and Activate Cycle just de-activate Cycle when it is on :frowning:
In my script midi control window, just on the right of ’ Last touched control’ there is a value column which is always off and I can’t see where this come from.
Any help welcome.

Hi,

To test it, close the Mapping Assistant (shunning you are using it for the assignment). If this doesn’t help, could you attach a screenshot of any Pad and its MIDI assignment in Cubase, please? What kind of mode have you chosen?

Yes Mapping assistant closed when testing, a small video and 3 pictures.
???
I am certainly missing something :frowning:




Hi,

I believe the problem is, the Pad is sending MIDI CC with a given value. Maybe, if you press on it, it sends the values. Please, double-check, how does it look like in the MIDI Monitor.

I think Cubase expects a value higher than 63 to switch the button On (0-63 is Off; 64-127 is On). So the question is, how do you want to work. Do you want to use the pad as the toggle, or do you want to be able to send On/Off values by pressing hard/soft?

Ok, thank you, I will check.
I could use a toggle to send various values but it creates the pb of positioning the initial state of the controller. I would prefer that Cubase manages the toggle state by itself and my controller always be sending the same value. I would have used a midi pc for this if midi remote had understood them. :frowning:

Hi, not sure why you chose 0 as the value sent (I would choose 127 just be on the safe side), however, it can work if you set the max value to 0 and min value to 127. And then set your assignments to toggle or jump, based on what behavior you prefer.

image

1 Like

??? thanks m.c but what is safe side ???
The problem with Mapping assistant is that I (we ?) don’t know what is expecting each mapped function. Without this information it is hard to decide to use one range of CC values rather than another.
As I explained previously, managing a toggle status should not be required for a controller. That was my original thinking as I can’t find any info from Steinberg.
You certainly have a great experience of all these scripts due to your work on Arturia and NI keyboards, where have you extracted the info from ? Testing each time ?

I am sending info from a Morningstar foot midi controller, quite powerful, which can asume any midi ‘sentence’, even managing a toggle status which correspond to what you suggest with one state being triggered by 0-63 range and the other by 64-127 range. But in this case the problem is to sync the controller with the cubase state at instant t. Again why Steinberg constrains us to manage this state, why have they not adopted an easier way, managing themselves the state and toggling it each time they receive the same CC/Value ?

IMO the midi remote is a non finished and not well conceived tool with poor help and guidelines to use it in GUI.
Sometime Steinberg pushes us to use only GUI, just as for PLE, refusing any scripting options for macros, and on another time they ask us to write js scripts to obtain good results as for the midi remote and its poor assemblage of windows ??? No consistency !

Sending a 0 is not normally considered a choice for activating things. The way binary works is that you choose 1. In the language of 7-bit MIDI CCs this translated to 127.

There are three areas here:
The first is our real control. The range of this one should be set normally to whichever range the MIDI message can transmit.
In 7-bit ccs, this range is 0-127, while for 14-bit it’s 0-16383.

The second one is what values our real control really transmits.
If it is a knob, we can have absolute or three types of relative modes. We have to know which mode our controller is in, or we can program it, since it is usually possible.
If it is a button, it can be set from the controller again, to be in gate or toggle mode.
The above mean that the when we create the controls, we need to know both the range, and the type. This cannot be easily recognized by the MIDI remote, thus it’s left to the user to know the MIDI implementation of the controller.

Finally, once we’re confident that we setup properly the controller’s section, moving to the assignments, it’s up to us to decide whether we’ll use the toggle mode or not. For example, in normal commands, there’s no point to do so. On the other hand, on the metronome click, we can decide if we want our button to toggle it, or straight away bring it to on or off state.

Just using the default MIDI specifications. It did took me time to inspect what my controllers were really sending.

1 Like

Forgive me for pointing out the obvious, but double-check that your keyboard is on MIDI channel 9, since you have it set to channel 9 in the MIDI Remote.

Thank you for informations.
It appears that midi remote, and your help comments, are made for keyboard controllers, which is in many areas different from general midi cpontrollers.
I am using a general purpose midi controller, Morningstar fx MC8, with different types of controls (buttons, pads, fx pedals, etc.).
So my problem is not detecting what my controller is sending because I have a really precise control on it.
My problem is more in understanding what is doing/requiring Midi Remote API, because the doc on github is very limited. The API reference has no text, it is a pure extract we obtain parsing a lib with a doc generator. Very poor.
Nothing, for example, on what toggle means for this API, nothing on BindingValue or functions as MakeValuebinding.
In this ‘NoDoc’ document and the 3rd code sample I can see that Steinberg apply to Start, Stop and Record buttons the SetToogle() func, so I certainly should follow this rule, blindly :frowning:
But Forward and Rewind are not modified by applying SetToggle(…), so should I use jump for them ???
Disappointing and error prone.

On many synths when you use 2 areas for one midi CC, first is 0-63 and second 64-127. Zero is a perfectly valid value, even for activating (what is activating ?) .

Of course! I was talking about activating something in the DAW (rewind, forward, etc). The way MIDI Remote handles our control values is by mapping them to the range [0,1]. So when we have states such as rewind and forward I mentioned, its activation (trigger if you prefer) is done by setting the value to 1, and this is why I suggested the 127 (7-bit) cc value.

OK, let me explain this a bit.

Say we have a button that sends upon press a 127 and then upon release a 0.

Let’s bind (assign) this to a hostValue (a DAW function) let’s say the Record action.

Now, suppose that we don’t use the setTypeToggle() method. Here’s what will happen: Upon the button press, recording will start. Cool. However, upon release, recording will stop! This is because the value of “record” is now 0, which means that we simply deactivate it.

Then, if we use the setTypeToggle(), the API will completely ignore the release of the button (i.e. value 0). Instead it WILL set the value to 0 upon the very next button press.

Now, perhaps the case of rewind/forward not using the setTypeToggle is more clear: When we want to Rewind/Forward, we usually want them to end upon the release of the connected button. Thus, we don’t set the toggle.

What do you mean ???
On next press of this button, sending 127, it will replace by 0 ???

I can choose to send on press and/or release what I want. So sending only on release seems ok.
What I just noticed is that Cubase keeps the state of the toggle switch. This is certainly what means SetTypeToggle

Exactly. NOT the control value, but the host value.
We have on the very first button press a 1. On the second a 0, on the third a 1 again and so on.

May be true or false :wink:
My buttons only send on release, no pb with one value on press and another on release.

Yes, you can call it exactly like that, when we have binary operations.

All this should be detailed by Steinberg…or someday they will decide to change this process…

And thank you @m.c for your help.

1 Like