Hi everyone,
I am using Nuendo 15 with a hybrid setup: an MCUPro (via Mackie Control protocol) and a Stream Deck (via the new MIDI Remote API).
I’ve noticed a significant inconsistency in how Nuendo handles transport feedback between these two protocols. While the MCUPro stays perfectly in sync for all functions, the MIDI Remote API falls short on several critical transport commands, specifically Punch In and Punch Out.
The issue:
In the MIDI Remote Mapping Assistant, Punch In/Out is currently only available as a Key Command. Because it is a command and not a “Value/Function,” Nuendo does not send a MIDI status update (handshake) back to the controller. This means the icons on my Stream Deck do not reflect the actual state of the transport, whereas the MCUPro (using the older Mackie protocol) works flawlessly.
I was able to fix similar issues for Monitoring by switching from a Key Command to a native API Function, but for Punch In/Out, these native functions simply seem to be missing from the browser in Nuendo 15.
Request to Steinberg:
Could the development team please expose Punch In and Punch Out as native API Functions/Values with bi-directional feedback, just as they are in the legacy Mackie Control implementation? For professional workflows using custom controllers, having reliable visual feedback for the transport state is essential.
Is anyone else experiencing this or found a workaround that doesn’t involve complex scripting?
Hi
You can access to the Punch In/Out value by using direct access on the transport :
var homePage = deviceDriver.mMapping.makePage('Home Page')
var hostObject = homePage.mHostAccess.mTransport
var da = homePage.mHostAccess.makeDirectAccess(hostObject)
homePage.mOnActivate = function(activeDevice, activeMapping) {
da.activate(activeMapping)
var transportID = da.getBaseObjectID(activeMapping)
var punchInProcessValue = da.getParameterProcessValue(activeMapping, transportID, 4020)
var punchInDisplayValue = da.getParameterDisplayValue(activeMapping, transportID, 4020)
console.log(punchInProcessValue.toString() + ' - ' + punchInDisplayValue)
}
You can also use the method setParameterProcessValue to change the value of the Punch In
Here are some other settings you might find interesting (I’m currently working on a way to display all the settings available with DirectAccess) :
| Tag | Title | Display Value | Display Units | Default Display Value | Process Value | Process Value Type | Default Process Value | Process Plain Value | Lock State | Automatable | Parameter Index | Comment |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4020 | punchIn | Off | 0 | discrete | -1 | 0 | FAUX | FAUX | 16 | Activate the Punch in | ||
| 4021 | punchOut | Off | 0 | discrete | -1 | 0 | FAUX | FAUX | 17 | |||
| 4028 | punchInTime | 1. 1. 1. 0 | 0 | discrete | -1 | 0 | FAUX | FAUX | 22 | Get/set the punch in time (use display value) | ||
| 4029 | punchOutTime | 1. 1. 1. 0 | 0 | discrete | -1 | 0 | FAUX | FAUX | 23 | |||
| 4132 | syncPunchToCycle | On | 1 | discrete | -1 | 1 | FAUX | FAUX | 74 | Lock Punch points to cycle locator or not |
I have no idea of what this is all about…