SAC 2.2 controller support

Hi,

I’m counting with these rather simple features to implement till the script.

That would be awesome, thank you!

1 Like

Hi,

For every plug-in you could define, which 8 parameters (buttons, knobs or any other type) do you want to control by the 8 VPots.

Btw, are the VPots also push buttons, please?

Tomorrow I will try to write the “Hello World!” script, to print it to the display.

Btw, For my Mackie script I have implemented some unique features like Nudge Left/Right, Start, End, Up/Down. Very concubine l convenient for the Key Editor. I can navigate thru all menus by using 1 VPot. I can switch the Remote Pages from the hardware… All of these are portable to the SAC.

Hi,

The value is printed to the display.

I agree. I have implemented complete menu. My next step is, I want to implement the way, you can define your own “menu”.

But in general, this is a big advantage of the MIDI Remote API, you can easily assign the parameters to the controllers. You can make new pages and do so without affecting your existing assignment. And you don’t need any 3rd party.

Hi,

Please find the very first “Hello World!” script attached. In this script:

  • Once you load the script, you should see:
    • Hello on the 1st display, 1st line
    • World! on the 2nd display, 2nd line
    • by MJ on the 3rd display, 1st line
  • There are 8 faders available. You should be able to control the Volume of 1st 8 Audio tracks in Cubase.
  • There are 8 PushEncoders.
    • You should be able to use the rotary to control the Pan of the 1st 8 Audio tracks in Cubase.
    • You should be able to use the push to control the Mute of the 1st 8 Audio tracks in Cubase.

???Questions???.

  • Do you use Mode 5 (Cubase/Reason) for Cubase, please? This is what I do for the script.

Known issue
The faders don’t move so far. I was assuming, they send Pitch Bend, same as Mackie Control. But they don’t. I have to change the script accordingly, but I have to leave, now.

Please, test if possible.

radikal_sac.midiremote.zip (8.6 KB)

Hi all,

I’m confused with the MIDI Messages a bit.

Could someone send me an example of some buttons? What MIDI Message does SAC send out, if you press for example the Pan button?

The best would be if I could make a short online meeting to do some MIDI Monitoring with one of the SAC owner.

Thank you

Hi all,

Does it look familiar to you?

Now I would need someones help with the MIDI binding, please. I’m not 100% sure with the binding by just reading the MIDI Implementation. Thank you.

If I would know the MIDI binding, these function would work already:

  • Print the track names (bank of 8 channels) to the displays
  • Encoder Rotary: Pan
  • Encoder Push: Mute (Please, what does the original do?)
  • Track Mute/Solo buttons
  • Mute/Solo switcher
  • Track Selection button
  • Volume fader
  • Navigate > Left (Is this working as Navigate or as Nudge on the original hardware, please?)
  • Navigate > Up (Is this working as Navigate or as Nudge on the original hardware, please?)
  • Navigate > Right (Is this working as Navigate or as Nudge on the original hardware, please?)
  • Edit > Undo
  • Edit > Copy
  • Navigate > Down (Is this working as Navigate or as Nudge on the original hardware, please?)
  • Edit > Paste
  • File > Save
  • Transport > Rewind
  • Transport > Forward
  • Transport > Stop
  • Transport > Play
  • Transport > Record
  • AI Knob (the Scrub Wheel)
  • Scrub Button (switches the Scrub Wheel from the AI Knob to the Jog Wheel)
  • Jog Wheel

Questions

  • How do the 1-8, 9-16, 17-24 and 25-32 buttons work?
  • Could I do this implement it this way?
    • 1-8: < 1 Channel
    • 9-16: 1 Channel >
    • 17-24: < Bank Channel
    • 25-32: Bank Channel >
  • Or what is the advantage of the 1-8, 9-16, 17-24, 25-32 buttons and how do you do switching to the channel 33+ (so common Bank Channel switching), please?

What do the 4 encoders bellow the 3rd display do?

1 Like

Hi Martin,

Well, that screenshot comes pretty close to the original.

Since you are so into it I decided to get some information together for you.

I took pictures of my SAC controller in every control mode it is capable of when it’s working in conjunction with Cubase, so you can see what the different LEDs and displays do during operation.

I also took screenshots from MIDIOX for a few operations so that you can get a grasp on the data transferred from the SAC.

Lastly I added the updated remote control device description from Steinberg which should answer any of your above mentioned questions regarding the functions of the several buttons.

You can find all of this in a .zip archive which I uploaded to WeSendit. The link is WeSendit - Swiss File Transfer Service and is valid for 7 days.

I hope this helps.

2 Likes

+1 :+1: :+1:

1 Like

Hi,

That’s lots of documents to read. Thank you very much!

Hi,

@tannoy71, thank you very much again for all the screenshots.

Unfortunately the way, how does SAC sending the MIDI Messages, is a showstopper for the MIDI Remote. They are using different messages for On and Off. The common way is to send one MIDI Message for the given object (button, encoder, fader) with different value. They do the oposit, send the same value and different MIDI Message.

For example:

  • VPot push On = MIDI CC 01, Value 43, Channel 16
  • VPot push Off = MIDI CC 00, Value 43, Channel 16

The common way would be:

  • VPot push On = MIDI CC 43, Value 01, Channel 16
  • VPot push Off = MIDI CC 43, Value 00, Channel 16

With the MIDI Remote API, I can bind only one MIDI Message with the variable value.

So I can see 2 options here:

  • Option 1: Switching SAC to the Mackie Mode and use the Mackie MIDI Messages.
    • As I’m writing all the MIDI binding and all the MIDI transition from scratch, I would use just the MIDI Messages from the Mackie. Everything else is up to the MIDI Remote API. So I believe, we will get 10 characters for the display (I have already successfully implemented other Mackie device with 8 characters; so I believe, this would work). And all other functions are dependent on my implementation again. So I believe, we can do it similar way to the SAC.
    • For example, even though Mackie hardware doesn’t have this Solo/Mute/Read-Write switcher, I can write the script the buttons would work exactly the same way as it works on the SAC.
      • Even though myself, I would implement it different way:
        • Press 1: Solo and Mute buttons [LED Off]
        • Press 2: Record Enable and Monitor buttons [LED On]
        • Press 3: Read and Write buttons [blinking LED]
        • Press 4: Select and Edit Channel Settings buttons [fast blinking LED]
  • Option 2: I would write stand-alone application, which would translate the SAC MIDI Messages to other MIDI Messages, which are readable by MIDI Remote API.

I strongly prefer the 1st option here.

What do you think, SAC group, please?

@tannoy71 , @mewy , @chris030 , @Sterni1 , @David_W , @mariopa

Hi Frank,

Thank you for your message.

OK, no problem. Maybe I just haven’t get how does it work completely. :wink:

I understand this. I hope Steinberg will implement this. So once this is implemented in Cubase, I can add it to the script and we are ready to go. :wink:

In the Mackie Mode, the resolution would be 16.384 steps (as Pitch Bend is also 14bit, same as the way SAC does it).

I know it will take some time to implement the SAC on my side. And I believe Steinberg will implement the Time Display. Therefore I want to implement the current stuff and then add the rest once it will be released. So you don’t have wait after.

Hi all,

Let me share a MIDI file with you. The goal is to find out, if I can print to the display. You don’t need Cubase 12 for this test, you can use any Cubase version.

There are 2 SysEx messages in the file:

  • Bar 2: SAC
  • Bar 4: Mackie

The tests are following:

  • SAC Mode:

    1. Keep the SAC in the Cubase Mode.
    2. Load the MIDI File.
    3. Set the MIDI Track Output to SAC.
    4. Playback the project
      => On the 1st display, there should be printed:
      Hello-SACa123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789i123456789j
      on bar 2.
  • Mackie Mode:

    1. Switch the SAC to the Mackie Mode.
    2. Load the MIDI File.
    3. Set the MIDI Track Output to SAC.
    4. Playback the project
      => On the 1st display, there should be printed:
      Hello-MCUa123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789i123456789j
      on bar 4.
  • Results

    • Can you confirm this, please?
    • Can you make a picture of the display, so I can see how many characters have been printed?

If none of them is working, could you try to modify the SysEx messages so it will work, please?

  • In the SAC SysEx, I’m not sure with the bit 5: 05. This is the SAC Mode, maybe other mode has to be selected here.
  • In the MCU SysEx, I’m not sure with the bit 4: 14 Mackie and bit 5: 12 MCU Mode.

The ZIP file contains:

  • CPR file of the project
  • MIDI file of the project (you can import it, if the CPR doesn’t for work you)
  • SAC.syx: You can import this directly to the SysEx Editor in Cubase.
  • MCU.syx: You can import this directly to the SysEx Editor in Cubase.

Thank you for the test!

SAC_SysEx_Test.zip (35.9 KB)

Hi all,

This is the current state. All the buttons with the icon are working already. Just the MIDI binding is missing.

1 Like

Hi again,

In slave mode they do nothing. The display is used for information about selected channels, edited FX or instruments and whatnot. I’ve assigned some custom functions to them via BOMEs MIDI editor, i.e. turning pages. In Mackie Control mode they are pre-assigned to zoom functions and other things by the SACs internal system.

There’s a common misconception here. The user does not switch the device to the modes. It can be done that way, but that’s not how it’s supposed to work and is prone to fails.

The remote device control panel of Cubase/Nuendo and somewhen maybe the MIDI remote API sends an initialisation SysEx to the SAC when it’s started. In case of the SAC slave mode, this is an absolute necessity. Only after receiving that initialisation SysEx the SAC will be able to work with the following incoming SysEx or MIDI data. If one switches to the slave mode manually and sends data to the SAC, nothing will happen.

The SAC has an internal memory in which the different controller capabilities and data formats are stored. For example - if it receives a typical Mackie Control SysEx with the header F0 00 00 66 14 it immediately recognizes it as a Mackie Control SysEx and switches to the Mackie Control Mode automatically from whatever mode it currently it is in.

That being said - that works but still there’s an extra initialisation SysEx for Mackie Control mode available.

Martin, if you’ve read the paragraph above the quote you probably noticed that your SAC SysEx can’t work. The unit has to get an initialization message before it knows what to do with that SysEx. Unfortunately, this initialisation message (among other things) is not exactly broadly explained in the MIDI implementation file that’s available - especially because there are two versions of that message available and one of them is not supported anymore.

Another problem was the 5th byte in your SysEx for displaying the text, as you’ve expected. The value ‘dv’ in the midi implementation document doesn’t refer to the mode the SAC is in but to the system channel. This is MIDI channel 16 by default so that byte has to be changed to 0Fh.

When your SAC SysEx example is changed that way and the SAC gets properly initialized into the slave mode everything works as expected.

Now to the Mackie Control mode…

The SysEx you wrote works, but not as expected. The initalization can be neglected since the SAC recognizes the SysEx header and automatically switches to Mackie Control mode.

The problem is that the SACs Mackie Control mode apparently doesn’t allow characters to be positioned in an arbitrary way on the 2nd row of the displays. It expects spaces before and after the channel names. So your text is distributed in groups of 7 characters across the channels. The blank characters are probably reserved for metering.

That brings us to a possible biggie: I fear that the internal system of the SAC only allows Mackie Control Messages which are compatible with the specifications that are programmed in it. That means, if the system is still on Mackie Control V 1.07 (the last firmware update for the unit is dated 2005) and the current Mackie Control is for example V 7.08, all implementations that were introduced between those two versions might not get recognized.

And last but not least, somewhere in this thread the fader resolution came up, I think it was Frank who asked about it. You were assuming it works like the Mackie Control and sends 14 bit pitch bend messages.

I’m not so sure about this. The MIDI implementation document states that the fader resolution can be switched by the LSB between 7 or 8 bit. I don’t think the internal fader a/d offers higher resolution. 8 bit is preferable and more than enough for me personally, fader scales are logarithmically and a automation curve is interpolated within Cubase/Nuendo anyways.

So, testing and documenting this took loads of hours. Martin, I suppose writing the script will take you a serious amount of time as well, there will be more stuff that will not run as planned and I expect lots of further testing and documenting has to be done then.

If the goal is to make it work like the SAC implementation (and from my pov that has to be the goal) this is a behemoth of a task.

I don’t have the time to always do such intensive testing and documenting. And I suppose you have other things to do as well.

So again, Steinberg…I hope somewhen somebody of you will finally reply. The solution is already there, implement it again. It can’t be that we, especially Martin, have to reinvent that thing from scratch.

Thank you.

PS: Martin, WeSendit - Swiss File Transfer Service is the link to a .zip file with screenshots from the SACs displays and the SysEx messages mentioned in my post. The file is available for 7 days. There are two example SysEx screenshots which show how Cubase handles the displays in Mackie Control mode - it always sends two different SysEx files to the unit, one for the upper rows and one for the lower rows. I hope this helps.

Hi,

Did you set the MIDI Out Port to SAC, please?

Hi,

Thank you very much @tannoy71 for the testing, screenshots, SysEx messages, documentation…

It seems, SAC is really affected by the characters limit of the MCU protocol. That’s sad. And actually this with combination to the fact I cannot read the native SAC messages within the MIDI Remote API properly, These together seem to be a showstopper from my point of view. In the SAC mode, we can’t use the MIDI Remote API. In the MCU mode, we are limited by the MCU protocol. :frowning:

I didn’t play the MIDI file, I imported the SysEx into MIDIOX and sent then from there. I tried to play the MIDI file after I read your post and got the same result as you did.

I suppose if it don’t works playing the MIDI file that means, that some kind of initialisation message is needed in any mode. In my tests, the SAC received the initialisation message for SAC mode and after that was able to switch to Mackie mode just by recognizing the header of the Mackie SysEx.

Actually what you describe would make sense, since Cubase sends always a specific Mackie initialisation mode message to the SAC before it sends Mackie Control data to it.

The MIDI file doesn’t contain an SAC initialisation message nor a Mackie Control initialisation message, so the controller doesn’t know what to do with the received data.

You are welcome. I was afraid of that outcome and it sucks. I feel sorry for you, Martin, since you were so enthusiastic about the project and already put some work into it. :frowning_face:

Maybe the API will be able to deal with the SACs data convention somewhen.

Hello all,

when you guys start talking about that programming stuff I’m completely lost. I didn’t even know that Cubase has some dedicated sysex editor.

Anyways, it’s a shame that it doesn’t work. :slightly_frowning_face:

Thanks for your efforts, Martin.

Steinberg, please help!

+1 please.

Hi,

Is there any Mac user with Cubase 12 and SAC, please?