Mackie C4 Remote Script (v 1.03)

MIDI Remote for the Mackie C4 (Version 1.03)

This script has been tested on an eLogic Mackie C4 that has version 1.02 firmware installed, and using Cubase Professional 12.0.20 and the E-mu 1x1 midi interface.

It has not been tested on a Mackie C4-Pro but since the protocol is the same, then other than potential detection issues, it should work.


  • Create folder structure "mackie/c4" inside "…/MIDI Remote/Driver

    Scripts/Local" folder.

  • Copy the mackie_c4.js, mackie_c4_elements.js, mackie_c4_surface.js and

    mackie_c4_page_eqmix.js files inside c4 folder.

  • Connect your device.

  • Start Cubase/Nuendo.

Since the midi name will likely be different for other users, the

.expectInputNameEquals and .expectOutputNameEquals were commented out of

the mackie_c4.js script and the user may want to uncomment them and

change for their own interface as seen below:


.expectInputNameEquals(\'E-MU XMidi1X1\')

.expectOutputNameEquals(\'E-MU XMidi1X1\')

As of Cubase version 12.0.10, the script can be added via the "+"

button, and MIDI ports can be assigned manually.

When your unit its detected, the serial number and version of the

firmware should print out in the MIDI Remote Script Console.

Mackie C4 Pages

As of version 1.03, the following pages have been implemented:

  • Equalizer Mixer Mode Page

Equalizer Mixer Mode Page

This page implements the ability to control the parameters of the four

equalizer bands on each of the mixer channels as pictured in Figure 1.


  • Row 1 Knobs – Change the gain in decibels of the selected equalizer

    on the selected channel.

  • Row 2 Knobs – Change the frequency in Hz of the selected equalizer

    on the selected channel.

  • Row 3 Knobs – Change the Q factor of the selected equalizer on the

    selected channel.

  • Row 3 Knobs – Change the Q filter type of the selected equalizer on

    the selected channel.

  • Row 3 Buttons – Toggles the on/off state of the selected equalizer

    on the selected channel.

  • Next Bank – Select the next bank of 8 channels.

  • Previous Bank - Select the previous bank of 8 channels.

  • Next Channel (Single Right) – Shift by one to the next channel.

  • Previous Channel (Single Left) - Shift by one to the previous channel.

  • Next Equalizer Band (Slot Up) – Select the next equalizer band.

  • Previous Equalizer Band (Slot Down) – Select the previous equalizer band.

Figure 1 - Mackie C4 Equalizer Mixer Page

Known Issues:

  • When a value is changed withing Cubase, the LED updates to the

    correct position but the display value on the Mackie C4 does not. It

    the corresponding knob is nudged (one click to the right then left)

    the values will sync up. A fix is being investigated.

  • As of 12.0.20, after the script is refreshed, the first bank change will

    result in empty display values. Subsequent bank changes will operate normally.

Changelog (see github for detailed changes):

  • V 1.00 4/22/2022 – Initial Release

  • V 1.01 4/26/2022 – Fixed issue making updates more responsive.

  • V 1.02 5/05/2022 – Fixed startup issue introduced with Cubase 12.0.20

  • V 1.03 5/08/2022 – Swapped frequency and gain rows to align with the Cubase GUI

Script written by Ron Garrison


mackie_c4.midiremote (911.2 KB)


Hi @Ron.Garrison,

Could you please replace these lines:


.expectInputNameEquals('Port 8 on MTPAV')
.expectOutputNameEquals('Port 8 on MTPAV')

Then your script should be compatible with Mackie C4 USB version out of the box (as far as I know).

Could you please confirm the MIDI Port names, @u-man?

Please ignore this post. C4 is no USB device so the mentioned MIDI Ports are not direct C4 MIDI Ports.

I will test it later today for sure :slight_smile:
I just want to clarify that there is no USB version of a C4 device. Only the MCU Pro version has a USB connection.
It is like Ron.Garrison said, in theory there should be no difference between the two versions of the C4 (black and silver). My version uses the same firmware and I will report my experience with the script later :slight_smile: .


I see. Then my comment doesn’t make sense at all, because your C4 device is also connected via MIDI to some other device and the computer communicates with the other device.

1 Like

I wonder where the screenshot comes from? Did you use the Commander software? Does this work together with the midi remote of Cubase?
Anyway, really cool to see more people investigating the very underestimated C4 Mackie Controller. I am no developer, but I know this device very well and if there is anything where I can help, feel free to PM :slight_smile:

Exactly :slight_smile:
But we could use the handshake code from the script, to put it into yours too :wink: (the code to show firmware and serial of the C4 device).

I honestly don’t recall where I got the image from. I believe it might have been the Commander Software. But I have it in Visio, so I can edit it for documents, etc.

EDIT: I’m remembering now. I actually created it in Visio from scratch using the Commander Software as a template. I did this many years ago.

No, it does not work together with MIDI remote. Though I did use the Commander software along with the Logic Control MCU documentation to reverse engineer the MIDI and sysex commands.

1 Like

I tested the script and found out that i have firmware 3.0 installed on my C4, according to your script :slight_smile: . It works very nice and i am really amazed about the route you took. In comparison to the MCU protocol, you managed to handle 8-channels in a convenient, user friendly way. This is exactly where I see the big advantages of this device and why i really want that the C4 will shine with new Midi Remote features. We have the opportunity to build something really great from scratch for the C4, instead reverse engineering the MCU protocol. The MCU protocol is excellent for 1 display and 8 V-pots, but having the quadruple is better :smiley: and open way more possibilities… LIKE YOURS is clearly showing.
The only downside i had experienced is, that it gets a little slow if you switch the EQ Bands, but HEY we deal witch 8 channels here at once and not with a single one. Thats a lot data that needs to be received in a blink of a eye.
So very great script, i must say. Greets, u-man

Thanks. I appreciate it. Any other suggestions on other pages you would like to see? I was thinking of using the split to create a mode where the top 8 are quick controls and the bottom 3 dedicated to the equalizer. Haven’t figured out the logistics of getting the 4 EQ parameters on 3 rows yet though.

I also am hoping to figure out the issue where if you update the parameter in the cubase GUI, the LED display doesn’t update (but the vpot rings do). This is because the the vPot LED Rings respond to mOnProcessChanged, which gets called when someone changes something in the GUI, but the LED Displays respond to mOnDisplayTextChanged, which only gets called when the display text is changed via a remote device and not when the user changes it in the GUI.

I think this is a bug, as I find it hard to believe that is the intended behavior. There is another callback called OnValueChanged, which in turn seems to trigger the onDisplayText changed and seems to fix it except when I implement it the subPages stop working (i.e. switching between Equalizers).

I could calculate the values from the vPot value (0 - 1), but there are edge conditions which would make the calculated value different for the GUI value, That’s probably not a big deal for the values (i.e. the frequency differed by 1 Hz), but for discrete select its a big deal (i.e. filter type).

BTW, you will see that Martin’s script has the same “bug”, unless he’s figured out a way around it.


Script updated to version 1.01.


I send you a new PM regarding version 1.01 and above that PM are new suggestions too.

Script updated to version 1.02.

1 Like

Script updated to version 1.03.


Hi Ron, just tested the script. Wonderfull work ! My C4 was obsolete since i migrated from logic to cubase, but now it shines again :slight_smile:

Maybe remove the installation part copy js script in the original post, because this is not relevant anymore. It was really easy with the + import functionality. Great work !

Hi … I’m really happy with this script but please are there any updates available?