Mackie C4 and Cubase. How to make the encoders work?

Hi,

If you want me to write the project for you I can do so for a fee as it is really beyond the scope of free support here. Just drop me an email. You will still need to define as 4 Mackie MCU devices in Cubase, each with it's own defined MIDI Virtual ports. In MT Pro we look at which virtual port the message is coming from to do the math and tell which encoder to send the message to. I will be able to show you how it is done using my device type however since I don't have a Mackie C4.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 

How much of a fee would that be, you asking for? I have no problems with it, depends how high that fee is.
But, i am not the one who makes that project that big and i do not "see" how you will manage the displays, because i do not know a way. What is a MCU protocol worth in Cubase, if everything is blank on the displays?
You do not understand, that there is no message to "catch" regarding the displays. All this display stuff is handled, somewhere deep in binary/code you simply can not access. The MCU component you choose in Cubase in the Studio Settings Menu, is not editable. It is impossible to tap that sysex and to change it. At least by "sniffing" the MCU behaviour, i do not see any sign of display access or sysex. This approach looks like a dead horse to me.
You do not see, that not the C4 here is the problem, it is the MCU protocol of Cubase. It is not open in any way.

The current status of the project, is the same, as if you would just use a single MCU unit. The results are the same. I did not won anything new, by using 4 MCU units, even if i understand your intentions behind that. You need something to convince me, regarding how you want to get the displays working, because they will not working magically, just by translating third row to first row etc., if you really think that.

You are probably right. I think I should only take on the project if I actually had a C4 (which I don't). If I did, I could probably make it work. Without a C4, I would rely on a user with a C4 to do testing for me and this would increase the number of hours quite a bit.

 

Reach out to me via email if you want to know my pricing.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Since you can not explain how you would make the displays working, i can safely say you can not. Even if i can pay you weeks, you will not be able to do this and even if you would have the C4 right on your fingertips.
Let us finish here, because i told you twice, that the MCU protocol in Cubase is a dead end. The C4 is not a supported product for this protocol and the protocol is not open. The displays are controlled sending binary information encapsulated within the MIDI messages, and it's different between the MCU and the C4, which is why we do not see anything on the displays of a C4 and there is no way to change that, as it happens internally of Cubase.
You are somehow possessed by the idea, that you can still do this and you sadly do not believe me or listen to me.

I wanted rather simple things and my approach is fully working, except feedback. Simple things, like we start with just one single encoder. Feedback and the right rules/translator for inc/dec values +-1 on the encoders. Nothing more. Not a gigantum of 4 MCU units and what not.

All the invested time, was for nothing good, because of this useless MCU protocol approach.
Right now, i am rather frustrated and start to regret the purchase.

I could do it for encoder feedback if I had a C4. The attached should work correctly if you set up your C4 correcty and the feedback that was required is as you described.

Without adequate documentation or a controller, it would be difficult to set this up with any controller let alone a C4.

If you set up Cubase for 4 Mackie controllers with the port numbers as I previously described and set you C4 knobs to 0-31 then it should work. If it doesn't then the specification or requirements you described are incorrect and without proper documentation or a C4, there is nothing much more I can do.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 


Attachments:
1590352163071_C4-2020-05-20.bmtp

And it will require the MCU protocol unless you want to define your own control surface. We provide the tools (MT Pro) and guidance here for free. I could probably get it working but it would be cost prohibitive for you which is why I’m declining any paid services. I provided a project file with instructions on how to make it work with Cubase, but I cannot change the way Cubase behaves. I have to program withing the boundries of what it supports.

Hi u-man,
I am sorry you got frustrated during the course of this discussion. This is the last thing we want!

Steve\'s only mission here is to assist and guide MIDI Translator Pro users. My experience is that he always tries his best. Without looking into the details, I can see that he did care a lot about your issues with the best intentions. After all, he is getting payed by Bome!

Now if a provided solution doesn\'t work, there are many possible causes: lacking the exact hardware, Steve cannot test the solution himself. And he is not present in your studio, to make sure that the MIDI setup is 100% as expected by him. And it often takes multiple iterations of trial and error to find out what works and what doesn\'t. You\'re doing ground breaking stuff here!

And even if an approach will not work after a lot of trial and error, I can still only see good intentions. In this particular case: Steve knows MCU very well, has a working project for Cubase, so he can leverage work he has previously done.

I hope this clarifies a bit.
Best regards,
Florian

Ok, this will be a rather long post and i apologize right from start.
First, i got not frustrated during the course of this discussion, it is just one of these days where everything wents downhill. A day where you only hear negative things, especially on that C4 topic.
I already spend a huge amount of time, just for all the stuff i found out regarding the C4. Registered in many forums etc. just for a little piece of cake-info, till a point where my friends are asking me, if i am ok.
I got frustrated, because even with all the infos and the new exciting find outs, i feel only exhausted. I am not able to transform all that into something usefull or something i consider real progress.
It is a passion that drives me, because i really like this thing. Maybe there are other hardware controllers, that do the same, but i did not see one that is like a C4.
Sadly Steinberg did not had the same passion. I really doubt that any of their staff-members wrote the MCU protocol, it is more likely they hired someone who did that, because there are things, that really makes no sense otherwise.

But back to topic: A forum member told me, to take a look into MTP and try my luck there. Indeed, i was amazed by the product and i already can do things, that would otherwise be impossible. For example, the Commander software can layout a encoder, but you can only use one function. So either you have a rotary encoder or a push button, but you can not have both. With MTP i can do both easily and i can connect the Commander software with Cubase which is 5 of 5 stars worth for MTP.

Of course i tried many things with the C4 and the MCU protocol, as someone might think the protocol should be similar and indeed it is to a huge degree. But as i said, the protocol is closed to public view. There is no way to change the adressing of displays. Cubase supports MCU+XT and that the XT is working, is just coincedence being the same like a MCU just without transport and assignment buttons. A evidence for that is, how Cubase is unable to distinguish between the two devices. They will have the same name, just with a number at end. No other DAW will treat the devices like this. In other DAWs there is a unique name for MCU and for XT, because they did their homework and they know by sysex handshake, with which device they are dealing with and if a XT is left or right from a MCU etc. etc.
Something that Steinberg did not care about, hence there is just MCU1, MCU2 etc. A unacceptable pain for a user, if you ask me.
There is a reason why Mackie (or other DAWs) did this, because all units (MCU+XT+C4) should also work as standalone. This is not so relevant if there would be only MCU and XT, but in case of a C4 it is relevant. If a C4 is used standalone, you could split encoder rows i.e. use two encoder rows for software and use the remaining two encoder rows for hardware. Many possibilities, many options. Too many for the poor staff-crew at Steinberg. They simply did not include it into their protocol and because they surely paid a lot for this protocol, they kept it close and only hardware vendors are allowed to ask for a remote SDK, paying licence fees and their first born son.
This all happened at a time, where the biggest rival for Cubase was Logic. Both companies from Hamburg. Since Logic already had a perfect working Logic Control (basically a MCU), it is obvious why Steinberg really needed a MCU protocol, if they like it or not. Especially when Apple announced to buy Logic.

Coming to the point (and end): I really hope, that it is now somehow clear, why i do not believe that you can get the displays working with a MCU protocol. If we would talk about devices that support the MCU protocol (Cubase) like Behringer X Touch etc. , i would believe that, because all these devices copy/emulate a MCU unit.
But till today, i have not seen a device like a C4 that works with a MCU protocol or a device that can adress more than one single display with the protocol (in Cubase).

I am no expert and maybe i am doing something wrong with midi-monitoring, but i do not see any messages coming or going into that protocol, that looks like names, labels etc. with display adressing including offsets and what not. That is the only reason, why i wrote to Steve that he needs to convince me, show me something, why he is so sure that he can make the displays working.

I would even ship this thing to him and i guess shipping alone would be like 80-100€.
Maybe are able to pay him 2-3 days (depends how much), but i have a strong feeling, that he will fail with the displays. I am not questioning his skills, i am questioning Cubase and this damn protocol.

This was told to me by a member that has a lot experience with MCU product line and Cubase:
"Another issue you would have with using the C4 is, even if running smoothly, when multiple Mackie controls are in use the controls spread across them and there is no way to mirror. i.e. if you had an MCU for faders and a C4 for plugin control, the first 8 vpot parameters would be on the MCU, and vpots 9 and onwards would be on the C4. There's no option to put 1-8 on the second surface (i.e. mirror).

This is a real pain if you have an MCU and a second controller (Such as keyboard controller) that utilises Mackie protocol. It really can not be that hard to setup a mirror option, surely?! "

This brings us to adequate documentation. Well, there is no more than this Logic Manual and all the other findouts by trial and error, that i already posted to you and the more i think about, it does not need much more.
It is the responsibilty from the host (Cubase), to create necessary connections and what the vendor want to provide to the users. What this means for Cubase or our case, is written above. There will be no documentation, unless you go the remote SDK route, paying fees and giving away your first born son. The only thing we can do, is reverse engineering the protocol, which we already partly did in this thread.

My initial plan was, collect as much as possible info. Find out as much as possible on your own. Depending on this, going to Steinberg, pay a developer to include the findouts of the C4. I will not describe what kind of experience that was, just talking about it in the Steinberg forum (awful).

I hope it is more clear now, from where my frustration comes. If you know, that you are so close, but still can not manage to make it work + all the other bad experience i had on this long journey.

Again, i am not questioning the skills of Steve. I am happy to talk to a person like him. Someone who understand encoder settings (2´s complement example etc.), because Steinberg developers can not. Again a evidence how ironic this alone is. If they really have written the protocol, why there is no working option (in Generic Remote) for these kind of encoders??? And this has not change since a decade, even if the forum is full of people begging for it.

How a proper encoder support should look like, is shown here:
https://www.cantabilesoftware.com/guides/controllerEncoding
This DAW cost 69$ and has excellent encoder support, a thing Cubase will likely never ever have, cause only dumb people work there.

I am pretty sure that Steve knows this stuff very well.

Hi,

I'm hoping this will help.  You can use this as an example if you want to use your C4 with Cubase as a generic controller instead of Mackie MCU.

For sending to Cubase, I'm converting relative CCs from the controller to absolute to send to Cubase.  I use MIDI Learn in Cubase and as far as Cubase is concerned they come in as absolute values.  I only programmed CC0-3. I store the calculated absolute value of the CC in global variables g0-g3 on messages going out to Cubase (Alias Application). (Translator 0.0)

 

----

For LED ring feedback, I again capture the feedback absolute value in g0-g3 so that the CC values stay in sync.

 

For conversion,  I take the absolute value and convert it to what the M4 should expect.

(Translator 1.0)

I leave the center detent off and the LED ring type to wrap. I left a line that can be uncommented if you want to change the center detent to on which is bit 6)

I also set the LED ring type here (bits 4-5)

I then scale the incoming value of 0-127 to a value of 0-B which is what I believe the C4 needs. ( I have no way to verify this as I do not own a C4).

I then OR the incoming value from Cubase with the LED Ring type and send it to the C4.

---------

It also seems that Cubase does not send feedback when turning the knob on the controller.

For this I use the same logic for local LED feedback (Translator 0.1) as I did for Cubase feedback (Translator 1.0). Note if you need to change the detent and ring type you will need to change them to match in translator 0.1 and 1.0

--

I made no attempt of updated text display since in generic Mode you will not see text coming from Cubase.  I guess if you know the proper SysEx format, you could convert standard CC messages to various SysEx messages to have some control of your text displays.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 

 


Attachments:
1590419052654_C4-Generic-with-Feedback.bmtp

Thank you so much Steve.

Here is what is happening:

Absolute values work, but in reversed. So turning left is inc. and turning right is dec. other than that, steps are +-1, so this works. Thumbs up.

The Feedback works, but only the one i do with my mouse. So turning i.e. Cutoff with the mouse, reflects correctly on LED rings. But turning the encoder, has no effect on the rings. Could be something i did wrong, either in MTP or Cubase or both (nah!).

Pictures of setup are attached. Nice work :)


Attachments:
![](upload://idodiVVzga1JqxKxsJ8BUVHql50.png)
![](upload://w779fIbzZ2AmQiBdZSfsJACY0fB.png)
![](upload://xv9xROzpMLCxrYtiHN31YPqB3ds.png)
![](upload://yPK3V5bhbMVkccrturIhzQkRBO7.png)
![](upload://q9rTHdHfIgpZiTswAIDu32MJtTO.jpeg)

No, I think you are doing things OK and both issues are related

I added the following rule to reverse (in bold) the direction sent to Cubase.

tt=qq&15
// Reverse direction since last iteration
tt=tt*-1
if qq<64 then tt=tt*-1

Give it a shot and let me know what happens.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz


Attachments:
1590446089609_C4-Generic-with-Feedback-a.bmtp

Ok Steve, i already owe you one. My e-mail: u-man@arcor.de, send me your paypal name, so you do not have just virtual cupboards of beer ;)

I am in contact with a Cubase forum member, who claims that he got working displays with a C4, similar to your initial approach (also used MTP for this :D ) and used a sysex rule that change the adressing of a MCU to a C4.

To test this, i would need a global rule that changes any outgoing sysex from Cubase from:

F0 00 00 66 17 12

to

F0 00 00 66 17 30

but leaves anything that comes right after this untouched. I hope i described that good enough.
Yes, i am aware, that this would be just one display, but for a start it would be good enough.
I feel so sorry now, but you need to understand, that i never monitored any incoming sysex, with the exception on turning on the C4 device.
Anyway, it seems that if you enter the \"instrument\" mode of the MCU protocol, Cubase will indeed send sysex out. It must be bad karma, that i never saw a sysex, so i thought that the whole display stuff, is happening somewhere else, somewhere unreachable for us. You were right, with everything, right from the start.
I attached you the project, that was the most promising from you.

I will test your last post, right away. You are the best.


Attachments:
1590450302493_V02_C4-2020-05-20.bmtp

Oh yea of little faith. Yes, I pretty much know what I'm doing as I've been at this stuff for a long while. ;-)

 

Well what you ask now is not as easy as you might think. MT Pro determines the start of a message by the status byte (high bit set) and cannot break up SysEx into different pieces. I've added translators in case Cubase always sends the full 56 text bytes (plus the header and end of SysEx bytes) for each message but my guess is the length of the messages from Cubase might actually be shorter. It requires LOTS of global variables. So what you will need to do is see how long the messages are, that are coming from Cubase and take off the extra bytes from the end (but not the F7) . My guess is the messages will likely be much shorter than 56 bytes.

Also, I assume we are always starting at the first byte of each line which may not be the case. The variable rr is the start byte of the line and should translate correctly if left untouched.

The variable qq is the C4 display number 0x30 to 0x34 for displays 1-4.

Bottom line is for every virtual Mackie device, you need to put in translators like this for every possible length of bytes that Cubase might send as the pattern and number of bytes will need to match exactly.

See translaters 4.4 through 4.7 for 56 data byte data messages. We use all global variables from ya-yz y0-y1 and za-zz z0-z1. DO NOT USE THESE GLOBAL VARIABLES ANYWHERE ELSE IN YOUR PROJECT.

I would suggest monitoring Cubase and see if it is sending a consistent length of bytes and you might not need 56 combinations of byte lengths for every virtual Mackie devices. You might be able to get away with just shortening the existing patterns to something much smaller.

Remember the pattern length must match and the variables within them must also match.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz (This is my paypal account)

 

 


Attachments:
1590465168011_V02_C4-2020-05-25-text.bmtp

Hello Steve,

I think i understand what you are saying. That is indeed a little sad, so what is easy to see for us humans, is not easy for MTP. Damn.
The next problem and that is kinda big is, i can not catch any sysex coming out from Cubase/MCU protocol. This problem is what lead me to believe, your approach will not work in first case. So first i need to know, what i am doing so fundamental wrong here. I see sysex when i turn on the C4 or the Commander software for example.
I see sysex if i choose \"MCU\" from the Studio Setup preferences in Cubase and click ok.
But i do not see any other sysex coming out from Cubase/protocol, once the setup is made :/ and i seriously do not know why. From what other Cubase forum members told me, this is not right. They receive outgoing sysex, each time they enter a different mode. The only difference i see is, they have a real MCU unit.
Could it be that we need the stuff that is described on page 240 of the Logic manual:
https://usermanual.wiki/Apple/Logic.1909626546
Since this is not really happening on my side here. This is only happening with the Commander software, but not with Cubase/MCU protocol.

Since we both work pretty much handicapped: You, for not having a C4 unit and i for having only a C4 unit and by far not your experience.
I have some suggestions: I have a friend, who can borrow me a MCU. I think that will help us a lot, because i can better understand the protocol and i do not work completely blind with this protocol.
I mean if we are seriously need to catch any case where a sysex is send by the protocol and have a rule/translator for that case, we simply can not do this completely blind. If that makes a sense for you.

So for now, i think it is better to wait until i have such a MCU unit and then continue with this project.
I only have the fear, that once i have that MCU unit, you will have no time to help me further.

The last thing would be, please contact me privately via e-mail, unless you have no problems with discussing fees here. I have no clue, what you would normally get for such help.

Please consider that i am just a normal person with high ambitions. Covid-19 has ruined my financial situation. I have plenty of time, but nearly no income as a freelancer. Still i pretty much know, that your work should be valued, but i need to have some clue, lead, indication what would be ok for you.
I hope we can find a solution that is good for both of us. If my missus would know this, she would turn the living room into a war-room... i do not care :D
If this project lead to a success, i can convince other people that wants to use their C4 with Cubase to either buy MTP or collect some money from anybody who wants to use the final MTP project (like a small kickstarter project) that in the end belongs all to you.
I stand to my word, just make me some offerings, that are ok for you. I also stand to my word, that i want to help you anywhere i can in this project. I feel really dumb or like some child, to ask for all these things that i already did, but all the formulas and code, is not really something i could learn easily or in no time.
I still hope that all the findouts collected here, are showing you that i am not a total noob or fail. I really, really tried my best. The whole project is only possible for me, because i have a lot of time and need to keep my brain busy and far away from Covid-19 thoughts, if you know what i mean.

Greets, u-man :)

PS: The variable qq is the C4 display number 0x30 to 0x34 for displays 1-4.
Should not be that 0x33 (instead of 0x34) ? Would not that be 5 displays?

Hi, I do not have your email but you have mine so reach out to me there for further discussion.
Yes 0x30-0x33 not 0x34.

Hi, I did a little testing this morning.

It seems that Cubase likes to put out text of length 55, 3, 2 and 1 (not including Header and trailing F7)

So I created 4 additional translators (for Mackie 1 only) with these lenghts and am posting it here.

I also added a generic Mackie handshake answer which I use and works. I actually have a APC40 MKII Mackie emulation.

 

 

I modified the incoming text Sysex from Cubase for the new device ID of 14H instead of 10H.

Again, No way to completely test without an actual C4.

I hope it works!

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 

I'm also attaching a text log file of the example capture I used. I was merely turning V-Pots to get updated display.

This whole project  should work only in Mackie Mode only (Not generic mode).

 

 

 


Attachments:
1590518631869_cubase-output-mackie-text-2020-04-26.txt
1590518652548_V03_C4-2020-05-26-text.bmtp

I\'m so glad you guys are looking at this problem. I\'m having the same problem with my Mackie C4 and Presonus Studio One 5. I had been working with Bome MTP trying to develop presets that would help me integrate these via C4Commander software -- and then I discovered this thread! I will follow your progress with interest..

 

Richard.

Yes Richard, I think you mean thread and not threat but you might be right on both counts :wink:

Steve

But of course! Lol. (I just corrected the typo)..

Hi! I’m an ableton and mackie MCU user, and got a C4 as part of the bargain when I bought the MCU, but later realized that Ableton does not support C4. Was about to give up when I stumbled upon this thread. My thinking is that, if you can get this to work in Cubase, its probably not unlikely that this can work in Ableton as well. Lots of frustrated Ableton users with a C4 out there who would love this to happen.
Have you made any progress?

All the best
Jørgen