How Do I toggle show/hide a Plugin using Midi Remote?

Hi.

Let’s say I got a VU Meter plugin on the 5th insert of the Control Room.
How do I toggle show/hide the plugin with a midi button?

I believe there was a corresponding command in “Generic control” section before, but now I can’t find it in the new Midi Remote.

Hi,

In the Generic Remote device the path was: VST Control Room > Control Room > Ins. 5 VU Meter > Bypass. I don’t see this option in the MIDI Remote. The only one I can see is: Control Room > Main (or Monitor Channel X) > Bypass Inserts, which bypasses all Inserts of the given bus.

Thank you for the answer.

Unfortunately, bypassing absolutely doesn’t help.
Before “Midi Remote” was implemented, I was able to bring up my VU Meter (or any other plugin) with one button.

In “Generic Remote” it has the following path:
“VST Control Room” / “Control Room” / “Ins.5 (name of the plugin) Edit”.
Moreover, I could bring up any plugin not only from Control Room, but also from any insert of the mixer for a selected track.
Now those features seem to be missing in “Midi Remote”, that is a huge drawback in my opinion =/

Hi,

Oh, sorry, you are right. I was thinking of it and during the process of thinking, I switched in my head, you asked for the Bypass. Yes, you are right, the “Edit” command is missing in the MIDI Remote.

So, in order to bring up a plugin with a midi button, I should use “Generic Remote” instead of “Midi Remote” unless Steinberg adds this feature one day?

1 Like

Hi,

To me it looks like you have no other option at this moment. Sorry.

+1 on that feature request.

Like

page.mHostAccess.mTrackSelection.mMixerChannel.mInsert.getByIndex(i)
page.mHostAccess.mTrackSelection.mMixerChannel.mInsert.getByIndex(i).mEdit
page.mHostAccess.mTrackSelection.mMixerChannel.mInsert.getByIndex(i).mBypass
page.mHostAccess.mTrackSelection.mMixerChannel.mInsert.getByIndex(i).mABToggle
page.mHostAccess.mTrackSelection.mMixerChannel.mInsert.getByIndex(i).mRead
page.mHostAccess.mTrackSelection.mMixerChannel.mInsert.getByIndex(i).mWrite

And while they are at it:

page.mHostAccess.mTrackSelection.mMixerChannel.mSends.getByIndex(i).mPan

page.mHostAccess.mTrackSelection.mMixerChannel.mGate
page.mHostAccess.mTrackSelection.mMixerChannel.mGate.mThreashold
page.mHostAccess.mTrackSelection.mMixerChannel.mGate.mRange

etc.

page.mHostAccess.mTrackSelection.mMixerChannel.mComp
page.mHostAccess.mTrackSelection.mMixerChannel.mTools
page.mHostAccess.mTrackSelection.mMixerChannel.mSat
page.mHostAccess.mTrackSelection.mMixerChannel.mLimit

page.mHostAccess.mTrackSelection.mMixerChannel.mLimit.mSelection (NotLoaded.. StandardLimiter)

etc.

Edit: Thanks to Steve for making this more readable.

1 Like

Please implement mInserts.GetByName(‘xxxx’) too!

And if there are multiple instances of the same plugin used, like three times the same distortion in a row? :hear_no_evil:

1 Like

There are also more troublesome but less likely edge conditions with that one as well. There always is when trying to address something optional by name. But getting them by their position should be possible.

There is likely some way to work pre/post into the mix though.

I’m fully aware of this. Yes it is ambiguous, but I don’t want to query the current channel to find the correct insert slot by myself each time due to performance reasons. Just return the first one that is found. I very seldom add the same plugin multiple times at the same channel. I guess this works 99%. I strive for a fast workflow. My implementation would support 1 instance anyhow, because I don’t want to have an additional selector to choose between the multiple instances of the same plugin. Which for me is a corner case. Then I use the mouse for that one.

Just like all other JavaScript and DOM works, it would return an array.

mInserts.GetByName("xxxx")(i).Property
mInserts.GetByName("xxxx").Length
1 Like

Good suggestion! As the API is more abstract, it wouldn’t return an array. Instead something similar to the MixerBankZone should work.

Currently I’m thinking in that direction:


/** @type {MR_SelectedTrackChannel} */
var mixerChannel = page.mHostAccess.mTrackSelection.mMixerChannel

/** @type {MR_InsertSlotByIndex} */
var firstInsertSlot = mixerChannel.mInserts.getByIndex(0)

/** @type {MR_InsertSlotFolderFiltered} */
var insertsWithSteinbergCompressors = mixerChannel.mInserts
	.expectPluginCategoryEquals('FX|Dynamics')
	.expectPluginVendorStartsWith('Steinberg')
	.expectPluginNameContains('Comp')

/** @type {MR_InsertSlotFilteredByIndex} */
var firstSteinbergCompressor = insertsWithSteinbergCompressors.getByIndex(0)

/** @type {MR_InsertSlotFolderFiltered} */
var emptyInsertSlots = mixerChannel.mInserts.expectEmpty()

/** @type {MR_InsertSlotFilteredByIndex} */
var firstEmptyInsertSlot = emptyInsertSlots.getByIndex(0)

2 Likes