Hello guys!
I’m trying to revive my old CMC-CH controller using Midi Remote API in Cubase Pro 12 (on Mac). My js file is nearly complete and so far, I managed to make the most of features to work.
Unfortunately, I’m still missing some features:
- I can’t make Pan knob LED to respond on value change - no matter, what I do, the LED remains off… Does anyone know, what controls it? Is it some SysEx, or is it some “hard-coded” thing?
var panKnob = surface.makeKnob(6, 2, 2, 2);
panKnob.mSurfaceValue.mMidiBinding
.setInputPort(midiInput)
.setOutputPort(midiOutput)
.bindToControlChange(0, 16) // channel 1, cc 16
.setTypeRelativeSignedBit();
page.makeValueBinding(
panKnob.mSurfaceValue,
hostSelectedMixerChannel.mValue.mPan
);
-
Freeze, Folder, Inserts, EQ and Sends Bypass buttons can’t be toggled - as it uses “makeCommandBinding” function. Right now, toggling can be enabled only for “makeValueBinding” function. For “makeActionBinding” and “makeCommandBinding” functions, it does nothing… Does exist some other way, how to do it? If not, would it be possible to implement it is some future Cubase release? (just a visual detail, otherwise it works fine)
-
“SHIFT” feature - I couldn’t figure out yet, how to do it. The only way that worked was to bind “SHIFT” button od Main/Default page to Shift page and on Shift page to bind it to Main/Default page, which was really confusing, because the button also can’t be toggled as it uses “makeActionBinding” function (as mentioned previously in 2.). Is it possible to somehow activate the other page directly inside function?
Right now I’ve created this function, which is probably the closest what I want:
var shiftBtn = surface.makeTriggerPad(3, 10, 2, 2); // doesn't make a difference if it's Button or TriggerPad
shiftBtn.mSurfaceValue.mMidiBinding
.setInputPort(midiInput)
.setOutputPort(midiOutput)
.bindToNote(0, 70); // channel 1, A#3
// Change a page when SHIFT button is pressed and revert it back to Main page after it's released
shiftBtn.mSurfaceValue.mOnProcessValueChange = function (
activeDevice,
value,
diffValue
) {
if (value == 1) {
shiftPage.mAction.mActivate; // doesn't do anything
console.log("SHIFT page");
} else {
mainPage.mAction.mActivate; // doesn't do anything
console.log("Default page");
}
};
I’ve also tried to add .trigger(activeMapping)
after “mActivate”, but I have absolutely no clue, what “activeMapping” should be, as there is nothing about it in Documentation…
If anyone could help me to solve these features, I would be very glad!
Thank you.