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
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).
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.
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 ,
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 .
The only thing stopping me from dropping Generic Midi is still the missing Record Mode support, but hopefully it will follow.
Record Mode support? Interesting to know, can you please provide some info on this?
(I suspected it had to do with your buffers )
What kind of information would you like. In general everything you can setup here:
.
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)
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?