My thoughts for improvement Midi remote API

Remote API is great, but many features are missing. It would be great if you will add the following…

Pan control for Combined Panner mode

.mMixerChannel.mValue.mPan; - default for Stereo Balance mode, in combined pan it move together L and R panners with constant width.

.mMixerChannel.mValue.mPanWidth; - to move L and R pan towards or away from each other

or alternative control:

.mMixerChannel.mValue.mPanL; - to control left channel pan
.mMixerChannel.mValue.mPanR; - to control right channel pan

And a method for determining the type of panning to use:
page.makeValueBinding(knob1.mSurfaceValue, page.mHostAccess.mTrackSelection.mMixerChannel.mValue.mPan).setPanTypeStereoBalance();
page.makeValueBinding(knob1.mSurfaceValue, page.mHostAccess.mTrackSelection.mMixerChannel.mValue.mPan).setPanTypeCombined();
page.makeValueBinding(knob2.mSurfaceValue, page.mHostAccess.mTrackSelection.mMixerChannel.mValue.mPanWidth).setPanTypeCombined();

Key commands feedback for toggle actions, or set snap\grid type

button.mSurfaceValue.mOnProcessValueChange = function(device, value, comandName) {

}

NoAction Action

This is necessary to cancel assigned mappings when activating an another page, etc.
page.makeActionBinding(knob2.mSurfaceValue, page.mHostAccess.NoAction).setPanTypeStereoBalance();

Pan control for sends

hostSelectedTrackChannel.mSends.getByIndex(idx-1).mPan

And key command request

Attach to MixerZone

Please add key commands to attach selected tracks to Left\Right\Center zones of mixer

P.S ES5, really? In 2024?! Upgrade to at least ES6 please. This would add flexibility and convenience for developers…

4 Likes

Hi! And thanks for your ideas!

I asked for this, but panner is more than standard / stereo combined panner. There’s also surround panner and anymix pro panner. I’d like to have something like the channel strip viewer to handle pan.

This would be great, but i don’t think Key Commands could provide feedback. Another way would be to add these as values. Like they did for transport. I would also like to have feedback on automation modes and q-link among others.

This is already possible. For this i make a “dummy host” per page using customHostVariable. And bind unused surfaceElements to this dummy. When switching page / subPage, my displays are updated with a blank title and displayValue.

This i miss too. It would be nice to get a full feature with support for all types of panners here. And also being able to switch the “follow main pan function”.

Would be awesome too.

Bests,

Thomas

Can You show an example please?

Also apparently last time I looked, there is no equivalent of alt+shift+edit settings to open all plug in windows?
Do you know if there is a handle to select , open gui etc of insert fx by index ie 1,2,3 etc

1 Like

Hi, I didn’t test it but this snippet should work:

var page1 = deviceDriver.mMapping.makePage("page1");
var page2 = deviceDriver.mMapping.makePage("page2");

var page1Dummy = page1.mCustom.makeHostValueVariable("dummyHost");
var page2Dummy = page2.mCustom.makeHostValueVariable("dummyhost");

var button1 = deviceDriver.mSurface.makeFader(0,0,1,5)
button1.mSurfaceValue.mMidiBinding.setInputPort(inPort).setOutputPort(outPort).bindToControlChange(15,0);
page1.makeValueBinding(button1.mSurfaceValue, page1.mHostAccess.mTrackSelection.mMixerChannel.mValue.mVolume);
page2.makeValueBinding(button1.mSurfaceValue, page2Dummy);
button1.mSurfaceValue.mOnTitleChange = function (activeDevice, objectTitle, valueTitle) {
        console.log("button1 Title" + objectTitle + valueTitle);
    }
button1.mSurfaceValue.mOnDisplayValueChange =  function(activeDevice, value, units) {
        console.log("button1 Title" + value + units)
    }

var button2 = deviceDriver.mSurface.makeFader(1,0,1,5)
    button2.mSurfaceValue.mMidiBinding.setInputPort(inPort).setOutputPort(outPort).bindToControlChange(15,1);
page1.makeValueBinding(button2.mSurfaceValue, page1Dummy);
page2.makeValueBinding(button2.mSurfaceValue, page2.mHostAccess.mTrackSelection.mMixerChannel.mValue.mPan);
button2.mSurfaceValue.mOnTitleChange = function (activeDevice, objectTitle, valueTitle) {
        console.log("button2 Title" + objectTitle + valueTitle);
    }
button2.mSurfaceValue.mOnDisplayValueChange =  function(activeDevice, value, units) {
        console.log("button2 Title" + value + units)
    }

You can bind more than one surface element to the same “dummy host”, so no need to make more than one per page.

Bests,

Thomas

1 Like

Not directly. You would have to go via the HostInsertEffectViewer object and index through the slot numbers.

1 Like