mOnTitleChange and mOnColorChange do not fire as expected/bank selection

True. I think this should be covered in the future. Till then, my workaround was to introduce a virtual MCU device, using loopMIDI. This way, Cubase exposes things like for e.g. punchIn. I grab them inside my script and send them to the controller.

Below you’ll see a list of message I send out from Midi Remote. I misused the sysex, since the script only talks to devices with the right midi port names.
Message with F0 00 are track names. The 3. position is the track number, after that the name and then F7. F0 00 7E F7 for example has not text. The track with the number 0x7E does not exist and it contains no string. Thus I would say, you could consider an empty string as track is not existing.
The other message F0 F1 are track color. The third position is the track number. Remember I have 1 bank with channel 00 to 7F. The next 3 bytes are RGB bytes. As you can see, for ex. F0 01 2B 00 00 00 F7 that track number 0x2B does not exist. RGB == Black. That is the way I would go. And if you know that the track name of the last track is eg. Output, it could also be an indicator. It’s not perfect, but at least for my purposes I think, it will work. The only problem is, that it does not send all tracks/color at a time. Only a few. I need to find out if I will get somehow all tracks.

F0 01 7D 00 00 00 F7 
?}?
F0 00 7E F7 
?~?
F0 01 7E 00 00 00 F7 
?~?
F0 00 10 4D 49 44 49 20 30 34 F7 
?MIDI 04?
F0 01 10 48 48 49 F7 
?HHI?
F0 00 11 47 72 6F 75 70 F7 
?Group?
F0 01 11 48 48 49 F7 
?HHI?
F0 01 7A 00 00 00 F7 
?z?
F0 00 2A F7 
?*?
F0 01 2A 00 00 00 F7 
?*?
F0 00 2B F7 
?+?
F0 01 2B 00 00 00 F7 
?+?
F0 00 2C F7 
?,?
F0 01 2C 00 00 00 F7 

As I’ve suggested earlier to @Martin.Jirsak, you can try with the isActive of the mOnColorChange event of the channel item (mixerBankZoneChannels[index]).
I use this exactly to know which buttons are not available inside a zone in order to avoid updating my leds.

Currently I combine Midi Remote and Generic Remote. Seems to work. Maybe I should remove the CCs I use with Midi Remote from the Generic Remote. I will find out. As long as the old Generic Remote exists, I am fine. I hope that the will not remove it before the new Midi Remote can replace it 100%.

Hi,

So you iterate over the mixerBankZoneChannels and test if mOnColorChange isActive? If it is, you ask for the name, color, whatever
 If not, you break the loop. Or an I missing something?

No, I’m not iterating, at least not in the normal way. I’m just expecting things to come, since everything is event driven.
Say you have a bankZone of N tracks but (obviously) you have no idea if all of them are occupied by an instrument or they’re just empty. Cubase, when you activate your page or whenever you make a bank change, sends out the states of the N tracks of this bank by triggering the valueChange events which you have to listen to. It’s in there that you have to make decisions. When for example, you get an isActive=0 you can set your controller to not take into account this index. This, however, doesn’t mean that the next one is inactive as well, because things are asynchronous. Even if they seem to show up in a serial way, you shouldn’t bet that this will always be the case.
Anyway, things are happening pretty fast, you just have to map the responses to your own software integration outside.
As a side note, I’m getting back to the optimum number of elements in a bankZone. Even if it seems great to have all the info available at once, we should always have in mind that the UI we’re building does not have an infinite space and even if it has a quite large one (be it a scrollView or whatever) things can get nasty at both sides, I mean app hangs for a sec, and cpu lock ups in both Android and IOS which can lead to a forced quit or irrational behaviour. Think of the bankZone concept as a lazy loading process we use every day for populating tables and so on. My 2 cents :slight_smile:

1 Like

I tried the banking thing, but get confused. Somehow the first 8 channels without the input channels are always selected (white line CH1-8 + Output >> only 8 channels should have a white line, right?).

When I look at the remote control view when I am in the very first bank, the first channel is the output channel, which is on the very right side. The others seem to fit (looking at the colors).

1

When I am stepping through the banks (8 CHs) it somehow does not fit to the channels in the mixer.
When I step to the 3rd bank it looks like this:


Channels 16-22 + the first input (very left side) get a white line. The white line from 1-8+output are still there, even they are not active.

Do I misunderstand something. I thought, first bank should be 1-8, 2nd bank 9-16, 3rd bank, 17-24,
 but it does not fit at all.

Hi,

Are you sure you didn’t make multiple Bank Zones?

Yes, I only created one single instance of a bankZone like in the “Real World Example”.

  var hostMixerBankZone = page.mHostAccess.mMixConsole.makeMixerBankZone()
        .excludeInputChannels()
        .excludeOutputChannels()

Here is my script for 8 channels.
BeMi_RemoteTouchControl.zip (1.7 KB)

The output channel is always the first channel in the first bank.

1


Update: In the project window the output was the first track. Now I move it to the bottom, so the first real track is now the first track in the bank. But that means that Bank Zones do not orientate how the tracks a displayed in the mixer, but how they are in the project? Does that make sense?

Created a few more screenshots from the bank selections (white bar above the track number).

At the beginning it seem to work, even if there are some track with with a white line at the end.
But starting from the 3. bank, input channels get a white line, instead of the last 2 yellow tracks.
And as mentioned above, if I move the output track to the top, it still appears on the right side i the mixer, but will become the first track in the first bank.

Bank 1

Bank 2

Bank 3

Bank 4

Bank 5

I think somehow things get confusing because you didn’t make separate bankZones for inputs and outputs. For example, I see in my script that I have a

 var hostMixerBankZone = page.mHostAccess.mMixConsole.makeMixerBankZone()
        .excludeInputChannels()
        .excludeOutputChannels()

and another one:

 var hostMixerBankZoneOutputs = page.mHostAccess.mMixConsole.makeMixerBankZone('Main')
        .includeOutputChannels()

(I’m not using inputs so I didn’t setup another zone for them)

Perhaps you can give it a try and see if it yields the correct values.

Thank you, excluding inputs and outputs helped to get rid of that odd track grouping in the banks.

And with this, we come to the next problem. Now, that I have only banks of 8 channels, the mOnTitleChange and mOnColorChange events are not complete.

I would expect, that stepping to a bank, or using “ResetMixerBank” to get to the first bank shound trigger the title and color events for all channels in the bank. But it doesn’t. I get most title/color events for most tracks, but not complete. There are always some messages missing.

Message Format:
Trackname: F0 00 channelNumberInBank Name F7
Trackcolor: F0 01 channelNumberInBank R G B F7

After hitting

The next time I click ResetMixerBank, the order seem to be the same, but different message are missing.

F0 00 07 41 75 64 69 6F 20 30 38 F7
?Audio 08?
F0 01 07 71 3A 1A F7
?q:?
F0 00 06 41 75 64 69 6F 20 30 37 F7
?Audio 07?
F0 01 06 71 3A 1A F7
?q:?
F0 00 00 54 69 6E 65 73 31 F7
?Tines1?
F0 00 02 49 6E 73 74 33 F7
?Inst3?
F0 01 03 71 1A 1A F7
?q?
F0 00 04 41 75 64 69 6F 20 30 35 F7
?Audio 05?
F0 00 01 42 61 73 73 32 F7
?Bass2?
F0 01 01 71 1A 1A F7
?q?
F0 00 05 41 75 64 69 6F 20 30 36 F7
?Audio 06?
F0 01 05 71 3A 1A F7
?q:?

I’m not noticing this behaviour in my script. All channels’ events get triggered.
See for e.g. these two screenshots (it’s always the same when I press a bank Next/Prev:


Oh,
You’ll saved my day :joy:,

I found the bug. It’s true, in the console everything is there, only I didn’t received it.
But I found the reason. All those sysex message were sent very fast and my Midi Server did not have enough MidiIn buffers for all those messages.
Now I increased the amount of MidiIn buffers and everything is fine again. I can even have banks of 128 channels and every message is recieved. Great. Now it can go on :smiley::notes:.

The only thing stopping me from dropping Generic Midi is still the missing Record Mode support, but hopefully it will follow.

1 Like

Record Mode support? Interesting to know, can you please provide some info on this?
(I suspected it had to do with your buffers :slight_smile: )

What kind of information would you like. In general everything you can setup here:
RecordMod.

These things + Set/Monitor Punsh In/Out:

Yes, I never seen such things expose by the API, true, probably they’ll be added in the future, who knows

However, how does the generic midi remote handle these?

I attached the configuration for the generic remote implementation. You can import it into Cubase. Or open it in a text editor and search for things like record or mode. You can bind a controller to each of these.

CubaseRemote_Generated_1.XML (337.5 KB)

1 Like

I now understand a lot better. In fact I’ve noticed in my own script a remark about not receiving these modes.
It’s obvious that these objects are missing from the “Transport” host and I find no reason to not be there.
@Jochen_Trappe are we to be expecting this upon the next release maybe? :slight_smile:

1 Like