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

While the Mackie Control is supported by Cubase, the Mackie C4 is sadly not. Your program is the only tool, that can help me to solve my problem. Your video here: https://www.youtube.com/watch?v=yjgmIUIS0SI
explains my problem. If i turn on the C4, the encoders behave like in your video (2´s complement example).
This behaviour is useless in Cubase, as it does not offer any options for the encoders of a C4, even if they are the same, like the Vpots of a Mackie Control (shame on Steinberg). Cubase does not know, how to treat "2´s complement" encoders.
The C4 also comes with a software called C4 Commander, which is normally used primaly for controlling hardware synths. I abused this program with a Bome virtual cable. I can use this cable in Cubase and have working encoders. My problem is, that the C4 Commander program only allows me to setup a Midi-out for the encoders, but no Midi-In and therefore i do not have feedback/bi-directional encoders. Anything i do with a mouse in Cubase, is not reflected on the LED rings of the C4 encoders.
I try my best to explain it well enough. The C4 Commander program has of course global midi-settings (in and out), so that the program knows, how the C4 is connected. But the definitions for the encoders (you create in the program) allows only midi-out. If i use the midi-out of the virtual cable to go back into the C4, the Commander program complains that the incoming midi is not from a C4 and stop the midi-stream.
I really hope you understand my problem and if not, feel free to ask :) .
I do not know how other DAW controllers work, but i think that all DAW controllers, have passive encoders. You (or DAW) need to mask/define the encoders initially, to get them work properly (like you do in the video). This is one of my main reasons, why i need to use the C4 commander program. As soon as i defined the encoders, i can start to use them in Cubase. I would like to remove this necessary step, but the program also defines the LCD labels for the encoders. In fact, i am very close to be satisfied, except i do not have feedback from the DAW.
My biggest hope, is that you might have a solution for me. I guess that i need to do something with the virtual midi-out, so that the C4 commander program does not complain about the midi-in (from the virtual out).
Thanks in advance

So your encoders send out 2's complement but Cubase is looking for absolute? Did you get that working (even if no MIDI feedback)? Is that what you need help with?

Or is the issue that you have the encoders now recognized in Cubase but no feedback to the LED rings of your encoders? Is Cubase sending any MIDI out when you turn a knob. Do you see it when looking at your log window?

I'm just trying to understand  whether the problem you are trying to solve is from your controller to Cubase, or from Cubase back to your controller.

What controller do you have?  If you want to control LED rings and you have a relative type encoder, I'm not sure how you do that unless I understand the MIDI in it needs to control the rings?

 

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

 

 

First, many thanks into looking this.
My controller is this one here: https://www.zzounds.com/item--MACC4PRO

\"So your encoders send out 2\'s complement but Cubase is looking for absolute? Did you get that working (even if no MIDI feedback)? Is that what you need help with?\"

I got this working. Help only needed, if i did something wrong here.

\"Or is the issue that you have the encoders now recognized in Cubase but no feedback to the LED rings of your encoders? Is Cubase sending any MIDI out when you turn a knob. Do you see it when looking at your log window?\"

Yes, that is my problem, no feedback to the LED rings. Cubase can send out, but the \"middle-ware\" program Commander C4, refuses to accept the Cubase midi-out and says, this is no Mackie C4 input :( and stops the midi-stream. My guess is, it expects input that is relative again, not absolute. But this is just my opinion. I am a novice with midi, i do not know what is really needed for feedback on the rings, but i think \"from Cubase back to my controller\" is essential for the rings :) .

Like i wrote before, this is some kind of a hack, i did here. Cubase is not able to recognize the encoders properly, without the C4 Commander software and your MTP program.

Here is the Commander software described: https://www.soundonsound.com/reviews/mackie-c4
I attached you the code-definitions for the common midi-controllers, that the software uses, to program the encoders.

If you do not program the encoders, then the encoders will behave like in your video (2´s complement example) but i do not have in/decrements of 1. I have steps of +-65, instead of +-1, because Cubase has no other way to handle this.

Here is my tutorial, i did so far (sorry it is in german): https://www.sequencer.de/synthesizer/threads/mackie-c4-und-cubase-hier-lang.152922/

You can look at step 3 and step 10, to see how the Commander program handles midi. Important is, that you can not define midi-in for step 10, only midi-out. Hope this helps :)


Attachments:
1589982062016_midi_controllers.xml

OK, could you hook up you C4 to MIDI Translator Pro and Turn each of the 32 knobs and capture the MIDI it is sending when connected to C4 Commander. Please annotate in the log what knob you are turning and which way.

Then do the same by turning knobs on your C4 Commander so that we know what it is sending to update LED rings.

 

With this we could probably figure out the methodoligy needed for 2 way translation with Cubase.

As far as scribble strip text. We can look at it but not likely be able to do much unless Cubase sends scribble strip information back. Are you connecting it to Cubase as a Generic Controller?

 

 

I gave up on the scribble strip text and Cubase, also gave up on Generic Remote. It does not function properly. Unable to send or receive NRPN/RPN for example. You have only two options for encoders in Generic Remote: relative and absolute. If set to relative, the encoders behave correctly with incremental values, but not with decremental. Decremental behaves like before: +-65 steps. So this is only partially working and still useless.

I will do the things, you suggest, but i would say, lets start with just the first 8 encoders. If you just turn on the device and use nothing else, then the encoders goes from cc 0 to cc 31 (i have 32, not 24 encoders :) ) and have in/decremental steps of +-65. If i turn on the Commander software and use the midi-controller.xml i attached you, then the encoders will send absolute values in +-1 in/decremental steps. The cc that is send, depends on what cc is used in the Commander software for the individual encoder. With MTP and a virtual cable, i can send those values correctly to Cubase and everything works, like it should. I just can not send anything back, out of Cubase to my controller (or to the Commander Software in this case).

I am afraid, that this will be a hard nut to crack :/ , because i think the Commander software does not send anything that would be needed for the LED-rings. This software was not meant to do that. If you hardware-control your hardware-synths, you would not normally need that, hence why i think, it does not expect any feedback or send out data that is relevant for the LED-rings.

OK, but instead of using the first 8 V-POTs, pick maybe the second 8. I'm trying to figure out if what they send is similar to Mackie MCU protocol.

 

First encoder (top, left) if not using Commander software, sends this if turned CW:

1: MIDI IN [Port 1 on MTPAV]: B0 00 01
2: MIDI OUT [Port 1 on MTPAV]: B0 00 01
3: MIDI IN [Port 1 on MTPAV]: B0 00 01
4: MIDI OUT [Port 1 on MTPAV]: B0 00 01
5: MIDI IN [Port 1 on MTPAV]: B0 00 01
6: MIDI OUT [Port 1 on MTPAV]: B0 00 01

If turned CCW it sends:

7: MIDI IN [Port 1 on MTPAV]: B0 00 41
8: MIDI OUT [Port 1 on MTPAV]: B0 00 41
9: MIDI IN [Port 1 on MTPAV]: B0 00 41
10: MIDI OUT [Port 1 on MTPAV]: B0 00 41

First encoder (top, left) if using Commander software (in this case CC70), sends this if turned CW:

1: MIDI IN [Port 1 on MTPAV]: B0 00 01
2: MIDI OUT [Port 1 on MTPAV]: B0 00 01
3: MIDI IN [Bome MIDI Translator 1 Virtual In]: B0 46 0D
4: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 46 0D
5: MIDI IN [Port 1 on MTPAV]: B0 00 01
6: MIDI OUT [Port 1 on MTPAV]: B0 00 01
7: MIDI IN [Bome MIDI Translator 1 Virtual In]: B0 46 0E
8: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 46 0E
9: MIDI IN [Port 1 on MTPAV]: B0 00 01
10: MIDI OUT [Port 1 on MTPAV]: B0 00 01
11: MIDI IN [Bome MIDI Translator 1 Virtual In]: B0 46 0F
12: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 46 0F

If turned CCW it sends:

13: MIDI IN [Port 1 on MTPAV]: B0 00 41
14: MIDI OUT [Port 1 on MTPAV]: B0 00 41
15: MIDI IN [Bome MIDI Translator 1 Virtual In]: B0 46 0E
16: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 46 0E
17: MIDI IN [Port 1 on MTPAV]: B0 00 41
18: MIDI OUT [Port 1 on MTPAV]: B0 00 41
19: MIDI IN [Bome MIDI Translator 1 Virtual In]: B0 46 0D
20: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 46 0D
21: MIDI IN [Port 1 on MTPAV]: B0 00 41
22: MIDI OUT [Port 1 on MTPAV]: B0 00 41
23: MIDI IN [Bome MIDI Translator 1 Virtual In]: B0 46 0C
24: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 46 0C

It is not only similar to MCU protocol, it can even use it. But the displays are not adressed, so you are basically blind in the woods and you do not know what you are doing. I tried for weeks, to get anything on the displays if abusing the MCU protocol in Cubase. In this mode everything works with feedback. I know that for sure, because i can reproduce pan settings for tracks 1-8 (but thats all).

Also my third encoder row (16-24) are the same Vpots 1-8 from the MCU protocol. Same CC, same settings.

AFAIK the whole Mackie DAW controller line, has no "memory" for settings/encoders. This must be provided by software. The MCU protocol, does this on the fly, i would not need the Commander software anymore. If no software is present/running in background, the encoders are "brainless" again and behave like i described above.

Turn VPOTs in second row without commanders and lets see what you get?

First encoder, 2nd row, turned CW send this:

1: MIDI IN [Port 1 on MTPAV]: B0 08 01
2: MIDI OUT [Port 1 on MTPAV]: B0 08 01
3: MIDI IN [Port 1 on MTPAV]: B0 08 01
4: MIDI OUT [Port 1 on MTPAV]: B0 08 01
5: MIDI IN [Port 1 on MTPAV]: B0 08 01
6: MIDI OUT [Port 1 on MTPAV]: B0 08 01

and this if turned CCW:

1: MIDI IN [Port 1 on MTPAV]: B0 08 41
2: MIDI OUT [Port 1 on MTPAV]: B0 08 41
3: MIDI IN [Port 1 on MTPAV]: B0 08 41
4: MIDI OUT [Port 1 on MTPAV]: B0 08 41
5: MIDI IN [Port 1 on MTPAV]: B0 08 41
6: MIDI OUT [Port 1 on MTPAV]: B0 08 41

 

Second encoder, 2nd row, turned CW send this:

1: MIDI IN [Port 1 on MTPAV]: B0 09 01
2: MIDI OUT [Port 1 on MTPAV]: B0 09 01
3: MIDI IN [Port 1 on MTPAV]: B0 09 01
4: MIDI OUT [Port 1 on MTPAV]: B0 09 01
5: MIDI IN [Port 1 on MTPAV]: B0 09 01
6: MIDI OUT [Port 1 on MTPAV]: B0 09 01

and this if turned CCW:

1: MIDI IN [Port 1 on MTPAV]: B0 09 41
2: MIDI OUT [Port 1 on MTPAV]: B0 09 41
3: MIDI IN [Port 1 on MTPAV]: B0 09 41
4: MIDI OUT [Port 1 on MTPAV]: B0 09 41
5: MIDI IN [Port 1 on MTPAV]: B0 09 41
6: MIDI OUT [Port 1 on MTPAV]: B0 09 41

and so on....

Hi,

Try this.

On Cubase, set up for 4 Mackie MCU controllers. I think when you do this the first will be Mackie4 and the last will be Mackie 1

If I figured it out right, the top row will control Mackie 1 (which I set to BMT1), the next row, Mackie 2 etc.

VPOT\'s only no faders.

I\'m assuming that the encoders may indeed use similar feedback as Mackie VPOTS

I\'ve set it up that the same V-POT messages go out for each row of encoders but on a different MIDI Port (virtual Mackie Controller).

On return messages I look at the incoming port to convert the CC back to the original that was sent.

Let me know if this helps!

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

 

P.S. And I added a MIDI Thru path from and to your C4 to Mackie1 only so other messages should still work.

I\'m still not sure what messages would go back to the scribble strips though.

 


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

I did like you say, but i do not know how to setup your project in MTP. What should i put in:
Mackie1 INPUT/OUTPUT
Mackie2 INPUT/OUTPUT
Mackie3 INPUT/OUTPUT
Mackie4 INPUT/OUTPUT
MackieC4 INPUT/OUTPUT
What is the right assignment here? Should i create 5 virtual midi-cables, with these names?
What do i assign as midi input/output for the four Mackie Control units that i have in Cubase?

Aliases

Mackie1 - BMT 1 - First Cubase Mackie Controller (last on the list in Cubase)

Mackie2 - BMT 2 - Second

Mackie 3 - BMT 3 - Third

Mackie 4 - BMT 4 - First (top of the list in Cubase

Mackie C4 - To and from your Mackie C4 controller.

 

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

Believe me, you will not be able to display anything on the C4, because the MCU protocol do not support the C4 displays. They need to be adressed differently, which the MCU protocol (in Cubase) do not do.
I know this, because i asked Sonar DAW developers, how they did this and they said that. To do the scribble strips outside of the MCU protocol, you would need sysex-messages. Sadly the C4 lacks of documentation, but that is how you would do it with a Mackie Control unit outside of the MCU protocol and believe me, that is not something we want here.
Since the MCU protocol of Cubase is not open source in any form, we simply have no way to adress the scribble strips for the C4.
This is the last documented form for MCU protocol: https://usermanual.wiki/Apple/Logic.1909626546
Starting at page 239
Like i said, the adressing for the displays of the C4 is different (sounds even logical to me somehow).

It looks like someone has started reverse engineering this. It looks like he is trying to translate Mackie MCU scribble strip to Mackie C4.

Ok, i hope i did setup everything like you told. To describe what is happening now, is pretty hard, but i will try :)

The first row acts for pan setting in tracks 1-8, but is reflected on the rings of the third row. And the pan setting is working in reversed way. So if turning right, the pan is going left and vice versa.

What the other rows are doing, i am not able to tell, but the send the usual data according to the midi-monitor.

The best document for the displays of a C4 i found, is this: https://github.com/Cakewalk/Cakewalk-Control-Surface-SDK/blob/master/Surfaces/MackieControl/MackieControlC4TxDisplay.cpp

This is not much code and works very well.... in Sonar :/
Tracktion and Logic DAW are obviously the best, in supporting the C4.

But i do not mind to use the MCU protocol, because you see it would be tremendous work, to get this working in Cubase. The best way, is still the Commander software route. It just misses the feedback and you are not bound to a protocol that is not intended to work on a C4. With the Commander software, everything is working already, except the feedback from the DAW. It is way better to focus on that.
I spend already weeks now and i can say that i have learned a lot, but also a lot frustration and the MCU protocol was by far the most frustrating thing. I read the whole www... so to say :) .

If on the wrong channels then you probably do not have the ports assigned correctly.

If the v-pots are turning the wrong way, comment out these lines in the translators.

 

if qq>64 then tt=qq&15

if qq<64 then tt=qq|64

 

And then add this line

tt=qq

 

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

pan settings are working correct now. everything else, is like before (obviously :) ).

i attached pictures of the setup. so you maybe have a clue, what else could be wrong.


Attachments:
![](upload://1fGbEN7RG7YWkfJAugcZB9LIu7m.png)
![](upload://va1ac6sYvwT5NY0UG4qOevnWXv6.png)
![](upload://8BglDJ7JP6J4p0xdvZ8dHwORXtR.png)
![](upload://rOSI63zAq2g6pgqSDoCmYgvWB4Y.png)