Remove inserts from selected channels macro

I would like to be able to remove all inserts on selected channel using the Macros.

Tried to create one but the only key command assignable is the Bypass fx, and is for ALL channels, not the selected ones.

For now the only method is using the quick link ( button or Shift + ALT) and removing slot by slot.

The right click - reset only does it for a single track regardless all being link´d.

Hi, @Pedro_G

Have you tried with the Project Logical Editor instead ? Seems that this is working :

1 Like

Thanks @cubic13 , i will try that :wink:

Two additional ways:

  1. Save an empty setting with no inserts as an FX Chain Preset (e.g. 00 Blank) and load it
  2. In the mixer viewv, drag an inserts header of a channel with no inserts over to the channel you want to clear of all inserts

AFAIK there is no way to remove inserts using macros or key commands. You will have to use your mouse one way or another.

Well, using the MIDI Remote it’s actually doable too, and we can then use utils as your own for the AutoHotKey or other (as Bome MIDI Translator Pro) for binding the MIDI message to a shortcut if needed. This can work for CB 13.0.51 and above.

Code:

var midiremote_api = require('midiremote_api_v1')
var deviceDriver = midiremote_api.makeDeviceDriver("Test","Remove All Inserts","m.c")

var midiInput = deviceDriver.mPorts.makeMidiInput("anInput")

var detectionUnit=deviceDriver.makeDetectionUnit()
detectionUnit.detectSingleInput(midiInput)
    .expectInputNameEquals("Bome MIDI Translator 1")
    
var surface=deviceDriver.mSurface

var mapping=deviceDriver.mMapping

var lampRemove=surface.makeLamp(0,0,1,1)
lampRemove.mSurfaceValue.mMidiBinding
    .setInputPort(midiInput)
    .bindToControlChange(0,0)

var labelRemove=surface.makeLabelField(1,0,6,1)

var page=mapping.makePage("Default")
var daSelectedTrack=page.mHostAccess.makeDirectAccess(page.mHostAccess.mTrackSelection.mMixerChannel)

page.setLabelFieldText(labelRemove,"Remove inserts")
var customRemove=page.mCustom.makeHostValueVariable("customRemove")
page.makeValueBinding(lampRemove.mSurfaceValue,customRemove).mOnValueChange=function(activeDevice,activeMapping,value,diff){

    if(value==1){

        lampRemove.mSurfaceValue.setProcessValue(activeDevice,0)

        var insertsIndex=3
        var effectTypeTag=4125
        var trackID=daSelectedTrack.getBaseObjectID(activeMapping)
        var numOfChildren=daSelectedTrack.getNumberOfChildObjects(activeMapping,trackID)

        if(numOfChildren>2){

            var insertsID=daSelectedTrack.getChildObjectID(activeMapping,trackID,3)
            var insertsSlotsNumber=daSelectedTrack.getNumberOfChildObjects(activeMapping,insertsID)

            if(insertsSlotsNumber>0){

                for(var i=0;i<insertsSlotsNumber;i++){

                    var insertSlotID=daSelectedTrack.getChildObjectID(activeMapping,insertsID,i)
                    daSelectedTrack.setParameterProcessValue(activeMapping,insertSlotID,effectTypeTag,0)

                }

            }

        }

    }

}

Installation file for anyone feeling adventurous:
Test_Remove All Inserts.midiremote (1.4 KB)

Demo (I used BMT to send CC0 to the script by shortcut):

And a version for when we have multiple tracks selected in the mix console (previous code will work for only one selected track):

var midiremote_api = require('midiremote_api_v1')
var deviceDriver = midiremote_api.makeDeviceDriver("Test","Remove All Inserts","m.c")

var midiInput = deviceDriver.mPorts.makeMidiInput("anInput")

var detectionUnit=deviceDriver.makeDetectionUnit()
detectionUnit.detectSingleInput(midiInput)
    .expectInputNameEquals("Bome MIDI Translator 1")
    
var surface=deviceDriver.mSurface

var mapping=deviceDriver.mMapping

var lampRemove=surface.makeLamp(0,0,1,1)
lampRemove.mSurfaceValue.mMidiBinding
    .setInputPort(midiInput)
    .bindToControlChange(0,0)

var labelRemove=surface.makeLabelField(1,0,6,1)

var page=mapping.makePage("Default")
var daMixer=page.mHostAccess.makeDirectAccess(page.mHostAccess.mMixConsole)

page.setLabelFieldText(labelRemove,"Remove inserts")
var customRemove=page.mCustom.makeHostValueVariable("customRemove")
page.makeValueBinding(lampRemove.mSurfaceValue,customRemove).mOnValueChange=function(activeDevice,activeMapping,value,diff){

    if(value==1){

        lampRemove.mSurfaceValue.setProcessValue(activeDevice,0)

        var insertsIndex=3
        var effectTypeTag=4125
        var selectedTag=4000

        var mixerID=daMixer.getBaseObjectID(activeMapping)
        var tracksNumber=daMixer.getNumberOfChildObjects(activeMapping,mixerID)

        if(tracksNumber>0){
        
            for(var trackIndex=0;trackIndex<tracksNumber;trackIndex++){
        
                var trackID=daMixer.getChildObjectID(activeMapping,mixerID,trackIndex)
                var selectedValue=daMixer.getParameterProcessValue(activeMapping,trackID,selectedTag)
     
                if(selectedValue==1){
                    
                    var numOfChildren=daMixer.getNumberOfChildObjects(activeMapping,trackID)

                    if(numOfChildren>2){

                        var insertsID=daMixer.getChildObjectID(activeMapping,trackID,3)
                        var insertsSlotsNumber=daMixer.getNumberOfChildObjects(activeMapping,insertsID)

                        if(insertsSlotsNumber>0){

                            for(var i=0;i<insertsSlotsNumber;i++){

                                var insertSlotID=daMixer.getChildObjectID(activeMapping,insertsID,i)
                                daMixer.setParameterProcessValue(activeMapping,insertSlotID,effectTypeTag,0)

                            }

                        }

                    }

                }
    
            }
    
        }
    
    }
        
}

Nice work @m.c!
(It’s a shame none of this is documented in the API reference.)

1 Like