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)
}
}
}
}
}
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)
}
}
}
}
}
}
}
}